diff --git a/.ghci b/.ghci
deleted file mode 100644
--- a/.ghci
+++ /dev/null
@@ -1,1 +0,0 @@
-:load Common
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
--- a/.gitattributes
+++ /dev/null
@@ -1,1 +0,0 @@
-debian/changelog merge=dpkg-mergechangelogs
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
--- a/.gitignore
+++ /dev/null
@@ -1,34 +0,0 @@
-tags
-Setup
-*.hi
-*.o
-tmp
-test
-Build/SysConfig.hs
-Build/InstallDesktopFile
-Build/EvilSplicer
-Build/Standalone
-Build/OSXMkLibs
-Build/LinuxMkLibs
-Build/BuildVersion
-git-annex
-man
-git-union-merge
-git-union-merge.1
-doc/.ikiwiki
-html
-*.tix
-.hpc
-dist
-# Sandboxed builds
-cabal-dev
-.cabal-sandbox
-cabal.sandbox.config
-cabal.config
-.stack-work
-# Project-local emacs configuration
-.dir-locals.el
-# OSX related
-.DS_Store
-.virthualenv
-.tasty-rerun-log
diff --git a/.mailmap b/.mailmap
deleted file mode 100644
--- a/.mailmap
+++ /dev/null
@@ -1,29 +0,0 @@
-Antoine Beaupré <anarcat@koumbit.org> anarcat <anarcat@web>
-Antoine Beaupré <anarcat@koumbit.org> https://id.koumbit.net/anarcat <https://id.koumbit.net/anarcat@web>
-Greg Grossmeier <greg@grossmeier.net> http://grossmeier.net/ <greg@web>
-Jimmy Tang <jtang@tchpc.tcd.ie> jtang <jtang@web>
-Joachim Breitner <mail@joachim-breitner.de> http://www.joachim-breitner.de/ <nomeata@web>
-Joey Hess <id@joeyh.name> Joey Hess <joey@gnu.kitenet.net>
-Joey Hess <id@joeyh.name> Joey Hess <joey@kitenet.net>
-Joey Hess <id@joeyh.name> Joey Hess <joeyh@debian.org>
-Joey Hess <id@joeyh.name> Joey Hess <joeyh@fischer.debian.org>
-Joey Hess <id@joeyh.name> Joey Hess <joeyh@joeyh.name>
-Joey Hess <id@joeyh.name> Joey Hess <joeyh@oberon.tam-lin.net>
-Joey Hess <id@joeyh.name> Joey Hess <joeyh@oberon.underhill.private>
-Joey Hess <id@joeyh.name> http://joey.kitenet.net/ <joey@web>
-Joey Hess <id@joeyh.name> http://joeyh.name/ <http://joeyh.name/@web>
-Joey Hess <id@joeyh.name> http://joeyh.name/ <joey@web>
-Joey Hess <id@joeyh.name> https://www.google.com/accounts/o8/id?id=AItOawmJfIszzreLNvCqzqzvTayA9_9L6gb9RtY <Joey@web>
-Johan Kiviniemi <devel@johan.kiviniemi.name> http://johan.kiviniemi.name/ <Johan@web>
-Johan Kiviniemi <devel@johan.kiviniemi.name> http://johan.kiviniemi.name/ <http://johan.kiviniemi.name/@web>
-Nicolas Pouillard <nicolas.pouillard@gmail.com> http://ertai.myopenid.com/ <npouillard@web>
-Peter Simons <simons@cryp.to> Peter Simons <simons@ubuntu-12.04>
-Peter Simons <simons@cryp.to> http://peter-simons.myopenid.com/ <http://peter-simons.myopenid.com/@web>
-Philipp Kern <pkern@debian.org> http://phil.0x539.de/ <Philipp_Kern@web>
-Richard Hartmann <richih@debian.org> https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U <Richard@web>
-Yaroslav Halchenko <debian@onerussian.com>
-Yaroslav Halchenko <debian@onerussian.com> http://yarikoptic.myopenid.com/ <site-myopenid@web>
-Yaroslav Halchenko <debian@onerussian.com> https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY <Yaroslav@web>
-Yaroslav Halchenko <debian@onerussian.com> https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4 <https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4@web>
-Øyvind A. Holm <sunny@sunbase.org> http://sunny256.sunbase.org/ <sunny256@web>
-Øyvind A. Holm <sunny@sunbase.org> https://sunny256.wordpress.com/ <sunny256@web>
diff --git a/.stack-work/install/x86_64-linux/lts-5.5/7.10.3/pkgdb/package.cache b/.stack-work/install/x86_64-linux/lts-5.5/7.10.3/pkgdb/package.cache
deleted file mode 100644
Binary files a/.stack-work/install/x86_64-linux/lts-5.5/7.10.3/pkgdb/package.cache and /dev/null differ
diff --git a/.stack-work/logs/HUnit-1.3.1.1.log b/.stack-work/logs/HUnit-1.3.1.1.log
deleted file mode 100644
--- a/.stack-work/logs/HUnit-1.3.1.1.log
+++ /dev/null
@@ -1,12 +0,0 @@
-Configuring HUnit-1.3.1.1...
-Building HUnit-1.3.1.1...
-Preprocessing library HUnit-1.3.1.1...
-[1 of 5] Compiling Test.HUnit.Terminal ( Test/HUnit/Terminal.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Test/HUnit/Terminal.o )
-[2 of 5] Compiling Test.HUnit.Lang  ( Test/HUnit/Lang.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Test/HUnit/Lang.o )
-[3 of 5] Compiling Test.HUnit.Base  ( Test/HUnit/Base.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Test/HUnit/Base.o )
-[4 of 5] Compiling Test.HUnit.Text  ( Test/HUnit/Text.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Test/HUnit/Text.o )
-[5 of 5] Compiling Test.HUnit       ( Test/HUnit.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Test/HUnit.o )
-In-place registering HUnit-1.3.1.1...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/HUnit-1.3.1.1-7IPmJa5HmrxHl6ny5upchm
-Registering HUnit-1.3.1.1...
diff --git a/.stack-work/logs/IfElse-0.85.log b/.stack-work/logs/IfElse-0.85.log
deleted file mode 100644
--- a/.stack-work/logs/IfElse-0.85.log
+++ /dev/null
@@ -1,13 +0,0 @@
-Configuring IfElse-0.85...
-Building IfElse-0.85...
-Preprocessing library IfElse-0.85...
-[1 of 1] Compiling Control.Monad.IfElse ( Control/Monad/IfElse.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Monad/IfElse.o )
-
-Control/Monad/IfElse.hs:159:11: Warning:
-    Rule "maybeMP/id" may never fire
-      because ‘maybeMP’ might inline first
-    Probable fix: add an INLINE[n] or NOINLINE[n] pragma on ‘maybeMP’
-In-place registering IfElse-0.85...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/IfElse-0.85-EkfAH5IXGLU4RHYa9FeF8K
-Registering IfElse-0.85...
diff --git a/.stack-work/logs/StateVar-1.1.0.3.log b/.stack-work/logs/StateVar-1.1.0.3.log
deleted file mode 100644
--- a/.stack-work/logs/StateVar-1.1.0.3.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring StateVar-1.1.0.3...
-Building StateVar-1.1.0.3...
-Preprocessing library StateVar-1.1.0.3...
-[1 of 1] Compiling Data.StateVar    ( src/Data/StateVar.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/StateVar.o )
-In-place registering StateVar-1.1.0.3...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/StateVar-1.1.0.3-8WYLUQJECQz8PFb9p2aPSq
-Registering StateVar-1.1.0.3...
diff --git a/.stack-work/logs/asn1-encoding-0.9.3.log b/.stack-work/logs/asn1-encoding-0.9.3.log
deleted file mode 100644
--- a/.stack-work/logs/asn1-encoding-0.9.3.log
+++ /dev/null
@@ -1,33 +0,0 @@
-Configuring asn1-encoding-0.9.3...
-Building asn1-encoding-0.9.3...
-Preprocessing library asn1-encoding-0.9.3...
-[ 1 of 12] Compiling Data.ASN1.Get    ( Data/ASN1/Get.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Get.o )
-
-Data/ASN1/Get.hs:30:1: Warning:
-    The import of ‘Applicative’
-    from module ‘Control.Applicative’ is redundant
-[ 2 of 12] Compiling Data.ASN1.Internal ( Data/ASN1/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Internal.o )
-[ 3 of 12] Compiling Data.ASN1.Serialize ( Data/ASN1/Serialize.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Serialize.o )
-
-Data/ASN1/Serialize.hs:17:1: Warning:
-    The import of ‘Control.Applicative’ is redundant
-      except perhaps to import instances from ‘Control.Applicative’
-    To import instances alone, use: import Control.Applicative()
-[ 4 of 12] Compiling Data.ASN1.Object ( Data/ASN1/Object.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Object.o )
-[ 5 of 12] Compiling Data.ASN1.BinaryEncoding.Writer ( Data/ASN1/BinaryEncoding/Writer.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/BinaryEncoding/Writer.o )
-[ 6 of 12] Compiling Data.ASN1.Stream ( Data/ASN1/Stream.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Stream.o )
-[ 7 of 12] Compiling Data.ASN1.Error  ( Data/ASN1/Error.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Error.o )
-[ 8 of 12] Compiling Data.ASN1.Encoding ( Data/ASN1/Encoding.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Encoding.o )
-[ 9 of 12] Compiling Data.ASN1.BinaryEncoding.Parse ( Data/ASN1/BinaryEncoding/Parse.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/BinaryEncoding/Parse.o )
-[10 of 12] Compiling Data.ASN1.BinaryEncoding.Raw ( Data/ASN1/BinaryEncoding/Raw.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/BinaryEncoding/Raw.o )
-[11 of 12] Compiling Data.ASN1.Prim   ( Data/ASN1/Prim.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Prim.o )
-
-Data/ASN1/Prim.hs:59:1: Warning:
-    The import of ‘Control.Applicative’ is redundant
-      except perhaps to import instances from ‘Control.Applicative’
-    To import instances alone, use: import Control.Applicative()
-[12 of 12] Compiling Data.ASN1.BinaryEncoding ( Data/ASN1/BinaryEncoding.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/BinaryEncoding.o )
-In-place registering asn1-encoding-0.9.3...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/asn1-encoding-0.9.3-A0jeMIoYyiZ4PSPkybrUpF
-Registering asn1-encoding-0.9.3...
diff --git a/.stack-work/logs/asn1-parse-0.9.4.log b/.stack-work/logs/asn1-parse-0.9.4.log
deleted file mode 100644
--- a/.stack-work/logs/asn1-parse-0.9.4.log
+++ /dev/null
@@ -1,13 +0,0 @@
-Configuring asn1-parse-0.9.4...
-Building asn1-parse-0.9.4...
-Preprocessing library asn1-parse-0.9.4...
-[1 of 1] Compiling Data.ASN1.Parse  ( Data/ASN1/Parse.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Parse.o )
-
-Data/ASN1/Parse.hs:30:1: Warning:
-    The import of ‘Control.Applicative’ is redundant
-      except perhaps to import instances from ‘Control.Applicative’
-    To import instances alone, use: import Control.Applicative()
-In-place registering asn1-parse-0.9.4...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/asn1-parse-0.9.4-LrLFPvrxagO8jGmFd1SmqK
-Registering asn1-parse-0.9.4...
diff --git a/.stack-work/logs/asn1-types-0.3.2.log b/.stack-work/logs/asn1-types-0.3.2.log
deleted file mode 100644
--- a/.stack-work/logs/asn1-types-0.3.2.log
+++ /dev/null
@@ -1,17 +0,0 @@
-Configuring asn1-types-0.3.2...
-Building asn1-types-0.3.2...
-Preprocessing library asn1-types-0.3.2...
-[1 of 6] Compiling Data.ASN1.Types.String ( Data/ASN1/Types/String.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Types/String.o )
-
-Data/ASN1/Types/String.hs:154:22: Warning:
-    This binding for ‘b’ shadows the existing binding
-      bound at Data/ASN1/Types/String.hs:151:13
-[2 of 6] Compiling Data.ASN1.Types.Lowlevel ( Data/ASN1/Types/Lowlevel.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Types/Lowlevel.o )
-[3 of 6] Compiling Data.ASN1.OID    ( Data/ASN1/OID.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/OID.o )
-[4 of 6] Compiling Data.ASN1.BitArray ( Data/ASN1/BitArray.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/BitArray.o )
-[5 of 6] Compiling Data.ASN1.Types  ( Data/ASN1/Types.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Types.o )
-[6 of 6] Compiling Data.ASN1.Pretty ( Data/ASN1/Pretty.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ASN1/Pretty.o )
-In-place registering asn1-types-0.3.2...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/asn1-types-0.3.2-BR43uodYA6j1oMVNuWbt5p
-Registering asn1-types-0.3.2...
diff --git a/.stack-work/logs/async-2.1.0.log b/.stack-work/logs/async-2.1.0.log
deleted file mode 100644
--- a/.stack-work/logs/async-2.1.0.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring async-2.1.0...
-Building async-2.1.0...
-Preprocessing library async-2.1.0...
-[1 of 1] Compiling Control.Concurrent.Async ( Control/Concurrent/Async.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Concurrent/Async.o )
-In-place registering async-2.1.0...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/async-2.1.0-KuqnF1GrhHK5nNp6Zzm3jy
-Registering async-2.1.0...
diff --git a/.stack-work/logs/base-orphans-0.5.2.log b/.stack-work/logs/base-orphans-0.5.2.log
deleted file mode 100644
--- a/.stack-work/logs/base-orphans-0.5.2.log
+++ /dev/null
@@ -1,9 +0,0 @@
-Configuring base-orphans-0.5.2...
-Building base-orphans-0.5.2...
-Preprocessing library base-orphans-0.5.2...
-[1 of 2] Compiling Data.Orphans.Prelude ( src/Data/Orphans/Prelude.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Orphans/Prelude.o )
-[2 of 2] Compiling Data.Orphans     ( src/Data/Orphans.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Orphans.o )
-In-place registering base-orphans-0.5.2...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/base-orphans-0.5.2-HxKyLMrSk4gBsNUM7D4Xui
-Registering base-orphans-0.5.2...
diff --git a/.stack-work/logs/bytestring-builder-0.10.6.0.0.log b/.stack-work/logs/bytestring-builder-0.10.6.0.0.log
deleted file mode 100644
--- a/.stack-work/logs/bytestring-builder-0.10.6.0.0.log
+++ /dev/null
@@ -1,7 +0,0 @@
-Configuring bytestring-builder-0.10.6.0.0...
-Building bytestring-builder-0.10.6.0.0...
-Preprocessing library bytestring-builder-0.10.6.0.0...
-In-place registering bytestring-builder-0.10.6.0.0...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/bytestring-builder-0.10.6.0.0-DW2JeazcMjm0XCS5oqEEA4
-Registering bytestring-builder-0.10.6.0.0...
diff --git a/.stack-work/logs/case-insensitive-1.2.0.5.log b/.stack-work/logs/case-insensitive-1.2.0.5.log
deleted file mode 100644
--- a/.stack-work/logs/case-insensitive-1.2.0.5.log
+++ /dev/null
@@ -1,10 +0,0 @@
-Configuring case-insensitive-1.2.0.5...
-Building case-insensitive-1.2.0.5...
-Preprocessing library case-insensitive-1.2.0.5...
-[1 of 3] Compiling Data.CaseInsensitive.Internal ( Data/CaseInsensitive/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/CaseInsensitive/Internal.o )
-[2 of 3] Compiling Data.CaseInsensitive.Unsafe ( Data/CaseInsensitive/Unsafe.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/CaseInsensitive/Unsafe.o )
-[3 of 3] Compiling Data.CaseInsensitive ( Data/CaseInsensitive.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/CaseInsensitive.o )
-In-place registering case-insensitive-1.2.0.5...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/case-insensitive-1.2.0.5-DNSVdyEjyyl9Og6G8xHN9C
-Registering case-insensitive-1.2.0.5...
diff --git a/.stack-work/logs/cereal-0.5.1.0.log b/.stack-work/logs/cereal-0.5.1.0.log
deleted file mode 100644
--- a/.stack-work/logs/cereal-0.5.1.0.log
+++ /dev/null
@@ -1,11 +0,0 @@
-Configuring cereal-0.5.1.0...
-Building cereal-0.5.1.0...
-Preprocessing library cereal-0.5.1.0...
-[1 of 4] Compiling Data.Serialize.Put ( src/Data/Serialize/Put.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Serialize/Put.o )
-[2 of 4] Compiling Data.Serialize.Get ( src/Data/Serialize/Get.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Serialize/Get.o )
-[3 of 4] Compiling Data.Serialize.IEEE754 ( src/Data/Serialize/IEEE754.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Serialize/IEEE754.o )
-[4 of 4] Compiling Data.Serialize   ( src/Data/Serialize.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Serialize.o )
-In-place registering cereal-0.5.1.0...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/cereal-0.5.1.0-843xOxvPj94HAJ9SD4EJuq
-Registering cereal-0.5.1.0...
diff --git a/.stack-work/logs/cryptonite-0.10.log b/.stack-work/logs/cryptonite-0.10.log
deleted file mode 100644
--- a/.stack-work/logs/cryptonite-0.10.log
+++ /dev/null
diff --git a/.stack-work/logs/disk-free-space-0.1.0.1.log b/.stack-work/logs/disk-free-space-0.1.0.1.log
deleted file mode 100644
--- a/.stack-work/logs/disk-free-space-0.1.0.1.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring disk-free-space-0.1.0.1...
-Building disk-free-space-0.1.0.1...
-Preprocessing library disk-free-space-0.1.0.1...
-[1 of 1] Compiling System.DiskSpace ( .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/System/DiskSpace.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/System/DiskSpace.o )
-In-place registering disk-free-space-0.1.0.1...
-Installing library in
-/home/joey/src/git-annex/.stack-work/install/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/disk-free-space-0.1.0.1-CjEBDT0Sn2mACUKc5Cnz8d
-Registering disk-free-space-0.1.0.1...
diff --git a/.stack-work/logs/enclosed-exceptions-1.0.1.1.log b/.stack-work/logs/enclosed-exceptions-1.0.1.1.log
deleted file mode 100644
--- a/.stack-work/logs/enclosed-exceptions-1.0.1.1.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring enclosed-exceptions-1.0.1.1...
-Building enclosed-exceptions-1.0.1.1...
-Preprocessing library enclosed-exceptions-1.0.1.1...
-[1 of 1] Compiling Control.Exception.Enclosed ( src/Control/Exception/Enclosed.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Exception/Enclosed.o )
-In-place registering enclosed-exceptions-1.0.1.1...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/enclosed-exceptions-1.0.1.1-JGFT1bQLY7rHZgsD1TY8wq
-Registering enclosed-exceptions-1.0.1.1...
diff --git a/.stack-work/logs/exceptions-0.8.2.1.log b/.stack-work/logs/exceptions-0.8.2.1.log
deleted file mode 100644
--- a/.stack-work/logs/exceptions-0.8.2.1.log
+++ /dev/null
@@ -1,9 +0,0 @@
-Configuring exceptions-0.8.2.1...
-Building exceptions-0.8.2.1...
-Preprocessing library exceptions-0.8.2.1...
-[1 of 2] Compiling Control.Monad.Catch ( src/Control/Monad/Catch.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Monad/Catch.o )
-[2 of 2] Compiling Control.Monad.Catch.Pure ( src/Control/Monad/Catch/Pure.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Monad/Catch/Pure.o )
-In-place registering exceptions-0.8.2.1...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/exceptions-0.8.2.1-6lgwjdgwblY7rzh5s6SLd8
-Registering exceptions-0.8.2.1...
diff --git a/.stack-work/logs/feed-0.3.11.1.log b/.stack-work/logs/feed-0.3.11.1.log
deleted file mode 100644
--- a/.stack-work/logs/feed-0.3.11.1.log
+++ /dev/null
@@ -1,34 +0,0 @@
-Configuring feed-0.3.11.1...
-Building feed-0.3.11.1...
-Preprocessing library feed-0.3.11.1...
-[ 1 of 23] Compiling Text.RSS.Syntax  ( src/Text/RSS/Syntax.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/RSS/Syntax.o )
-[ 2 of 23] Compiling Text.RSS.Export  ( src/Text/RSS/Export.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/RSS/Export.o )
-[ 3 of 23] Compiling Text.DublinCore.Types ( src/Text/DublinCore/Types.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/DublinCore/Types.o )
-[ 4 of 23] Compiling Text.RSS1.Syntax ( src/Text/RSS1/Syntax.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/RSS1/Syntax.o )
-[ 5 of 23] Compiling Text.RSS1.Utils  ( src/Text/RSS1/Utils.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/RSS1/Utils.o )
-[ 6 of 23] Compiling Text.RSS1.Export ( src/Text/RSS1/Export.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/RSS1/Export.o )
-[ 7 of 23] Compiling Text.RSS.Import  ( src/Text/RSS/Import.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/RSS/Import.o )
-[ 8 of 23] Compiling Text.RSS1.Import ( src/Text/RSS1/Import.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/RSS1/Import.o )
-[ 9 of 23] Compiling Text.Atom.Feed.Link ( src/Text/Atom/Feed/Link.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Atom/Feed/Link.o )
-[10 of 23] Compiling Text.Atom.Feed   ( src/Text/Atom/Feed.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Atom/Feed.o )
-[11 of 23] Compiling Text.Atom.Feed.Export ( src/Text/Atom/Feed/Export.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Atom/Feed/Export.o )
-[12 of 23] Compiling Text.Atom.Feed.Import ( src/Text/Atom/Feed/Import.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Atom/Feed/Import.o )
-[13 of 23] Compiling Text.Atom.Feed.Validate ( src/Text/Atom/Feed/Validate.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Atom/Feed/Validate.o )
-[14 of 23] Compiling Text.Atom.Pub    ( src/Text/Atom/Pub.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Atom/Pub.o )
-[15 of 23] Compiling Text.Atom.Pub.Export ( src/Text/Atom/Pub/Export.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Atom/Pub/Export.o )
-[16 of 23] Compiling Text.Feed.Types  ( src/Text/Feed/Types.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Feed/Types.o )
-[17 of 23] Compiling Text.Feed.Constructor ( src/Text/Feed/Constructor.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Feed/Constructor.o )
-
-src/Text/Feed/Constructor.hs:131:5: Warning:
-    Pattern match(es) are non-exhaustive
-    In a case alternative: Patterns not matched: XMLFeed _
-[18 of 23] Compiling Text.Feed.Export ( src/Text/Feed/Export.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Feed/Export.o )
-[19 of 23] Compiling Text.Feed.Import ( src/Text/Feed/Import.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Feed/Import.o )
-[20 of 23] Compiling Text.Feed.Util   ( src/Text/Feed/Util.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Feed/Util.o )
-[21 of 23] Compiling Text.Feed.Query  ( src/Text/Feed/Query.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Feed/Query.o )
-[22 of 23] Compiling Text.Feed.Translate ( src/Text/Feed/Translate.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Text/Feed/Translate.o )
-[23 of 23] Compiling Paths_feed       ( .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/autogen/Paths_feed.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Paths_feed.o )
-In-place registering feed-0.3.11.1...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/feed-0.3.11.1-Bx5SR4O8Rb3DZHunpzkbxZ
-Registering feed-0.3.11.1...
diff --git a/.stack-work/logs/file-embed-0.0.9.1.log b/.stack-work/logs/file-embed-0.0.9.1.log
deleted file mode 100644
--- a/.stack-work/logs/file-embed-0.0.9.1.log
+++ /dev/null
@@ -1,13 +0,0 @@
-Configuring file-embed-0.0.9.1...
-Building file-embed-0.0.9.1...
-Preprocessing library file-embed-0.0.9.1...
-[1 of 1] Compiling Data.FileEmbed   ( Data/FileEmbed.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/FileEmbed.o )
-
-Data/FileEmbed.hs:64:1: Warning:
-    The import of ‘Control.Applicative’ is redundant
-      except perhaps to import instances from ‘Control.Applicative’
-    To import instances alone, use: import Control.Applicative()
-In-place registering file-embed-0.0.9.1...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/file-embed-0.0.9.1-ID0BQq7SkFm2s7BTdE1urr
-Registering file-embed-0.0.9.1...
diff --git a/.stack-work/logs/hashable-1.2.4.0.log b/.stack-work/logs/hashable-1.2.4.0.log
deleted file mode 100644
--- a/.stack-work/logs/hashable-1.2.4.0.log
+++ /dev/null
@@ -1,15 +0,0 @@
-Configuring hashable-1.2.4.0...
-Building hashable-1.2.4.0...
-Preprocessing library hashable-1.2.4.0...
-[1 of 3] Compiling Data.Hashable.Class ( Data/Hashable/Class.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hashable/Class.o )
-
-Data/Hashable/Class.hs:460:28: Warning:
-    In the use of ‘B.inlinePerformIO’
-    (imported from Data.ByteString.Internal):
-    Deprecated: "If you think you know what you are doing, use 'unsafePerformIO'. If you are sure you know what you are doing, use 'unsafeDupablePerformIO'. If you enjoy sharing an address space with a malevolent agent of chaos, try 'accursedUnutterablePerformIO'."
-[2 of 3] Compiling Data.Hashable.Generic ( Data/Hashable/Generic.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hashable/Generic.o )
-[3 of 3] Compiling Data.Hashable    ( Data/Hashable.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hashable.o )
-In-place registering hashable-1.2.4.0...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/hashable-1.2.4.0-8GjadD03dR57AKCJdr90LD
-Registering hashable-1.2.4.0...
diff --git a/.stack-work/logs/hex-0.1.2.log b/.stack-work/logs/hex-0.1.2.log
deleted file mode 100644
--- a/.stack-work/logs/hex-0.1.2.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring hex-0.1.2...
-Building hex-0.1.2...
-Preprocessing library hex-0.1.2...
-[1 of 1] Compiling Data.Hex         ( Data/Hex.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hex.o )
-In-place registering hex-0.1.2...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/hex-0.1.2-7uuCvFVHDBfKR1vfBI01P9
-Registering hex-0.1.2...
diff --git a/.stack-work/logs/hourglass-0.2.10.log b/.stack-work/logs/hourglass-0.2.10.log
deleted file mode 100644
--- a/.stack-work/logs/hourglass-0.2.10.log
+++ /dev/null
@@ -1,43 +0,0 @@
-Configuring hourglass-0.2.10...
-Building hourglass-0.2.10...
-Preprocessing library hourglass-0.2.10...
-[ 1 of 17] Compiling Data.Hourglass.Zone ( Data/Hourglass/Zone.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Zone.o )
-[ 2 of 17] Compiling Data.Hourglass.Utils ( Data/Hourglass/Utils.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Utils.o )
-[ 3 of 17] Compiling Time.Types       ( Time/Types.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Time/Types.o )
-[ 4 of 17] Compiling Data.Hourglass.Types ( Data/Hourglass/Types.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Types.o )
-[ 5 of 17] Compiling Data.Hourglass.Internal.Unix ( Data/Hourglass/Internal/Unix.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Internal/Unix.o )
-
-Data/Hourglass/Internal/Unix.hs:24:1: Warning:
-    The import of ‘Control.Applicative’ is redundant
-      except perhaps to import instances from ‘Control.Applicative’
-    To import instances alone, use: import Control.Applicative()
-[ 6 of 17] Compiling Data.Hourglass.Internal ( Data/Hourglass/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Internal.o )
-[ 7 of 17] Compiling Data.Hourglass.Calendar ( Data/Hourglass/Calendar.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Calendar.o )
-[ 8 of 17] Compiling Data.Hourglass.Diff ( Data/Hourglass/Diff.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Diff.o )
-
-Data/Hourglass/Diff.hs:22:1: Warning:
-    The import of ‘Data.Monoid’ is redundant
-      except perhaps to import instances from ‘Data.Monoid’
-    To import instances alone, use: import Data.Monoid()
-[ 9 of 17] Compiling Data.Hourglass.Time ( Data/Hourglass/Time.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Time.o )
-[10 of 17] Compiling Data.Hourglass.Epoch ( Data/Hourglass/Epoch.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Epoch.o )
-[11 of 17] Compiling Data.Hourglass.Local ( Data/Hourglass/Local.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Local.o )
-[12 of 17] Compiling Time.System      ( Time/System.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Time/System.o )
-
-Time/System.hs:23:1: Warning:
-    The import of ‘Control.Applicative’ is redundant
-      except perhaps to import instances from ‘Control.Applicative’
-    To import instances alone, use: import Control.Applicative()
-[13 of 17] Compiling System.Hourglass ( System/Hourglass.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/System/Hourglass.o )
-[14 of 17] Compiling Data.Hourglass.Format ( Data/Hourglass/Format.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Format.o )
-[15 of 17] Compiling Data.Hourglass   ( Data/Hourglass.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass.o )
-
-Data/Hourglass.hs:40:1: Warning:
-    The import of ‘daysInMonth’
-    from module ‘Data.Hourglass.Calendar’ is redundant
-[16 of 17] Compiling Time.Compat      ( Time/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Time/Compat.o )
-[17 of 17] Compiling Data.Hourglass.Compat ( Data/Hourglass/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Hourglass/Compat.o )
-In-place registering hourglass-0.2.10...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/hourglass-0.2.10-LCfvpegcEVDEeuH0foNCGl
-Registering hourglass-0.2.10...
diff --git a/.stack-work/logs/http-api-data-0.2.2.log b/.stack-work/logs/http-api-data-0.2.2.log
deleted file mode 100644
--- a/.stack-work/logs/http-api-data-0.2.2.log
+++ /dev/null
@@ -1,14 +0,0 @@
-Configuring http-api-data-0.2.2...
-Building http-api-data-0.2.2...
-Preprocessing library http-api-data-0.2.2...
-[1 of 2] Compiling Web.HttpApiData.Internal ( Web/HttpApiData/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Web/HttpApiData/Internal.o )
-
-Web/HttpApiData/Internal.hs:472:30: Warning:
-    In the use of ‘parseTime’
-    (imported from Data.Time, but defined in time-1.5.0.1:Data.Time.Format.Parse):
-    Deprecated: "use "parseTimeM True" instead"
-[2 of 2] Compiling Web.HttpApiData  ( Web/HttpApiData.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Web/HttpApiData.o )
-In-place registering http-api-data-0.2.2...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/http-api-data-0.2.2-4PIMg2QbRyT0SZyC9tOKTV
-Registering http-api-data-0.2.2...
diff --git a/.stack-work/logs/http-types-0.9.log b/.stack-work/logs/http-types-0.9.log
deleted file mode 100644
--- a/.stack-work/logs/http-types-0.9.log
+++ /dev/null
@@ -1,30 +0,0 @@
-Configuring http-types-0.9...
-Building http-types-0.9...
-Preprocessing library http-types-0.9...
-[1 of 7] Compiling Network.HTTP.Types.Version ( Network/HTTP/Types/Version.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Network/HTTP/Types/Version.o )
-[2 of 7] Compiling Network.HTTP.Types.URI ( Network/HTTP/Types/URI.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Network/HTTP/Types/URI.o )
-
-Network/HTTP/Types/URI.hs:148:26: Warning:
-    In the use of ‘B.breakByte’ (imported from Data.ByteString):
-    Deprecated: "It is an internal function and should never have been exported. Use 'break (== x)' instead. (There are rewrite rules that handle this special case of 'break'.)"
-
-Network/HTTP/Types/URI.hs:283:22: Warning:
-    In the use of ‘B.breakByte’ (imported from Data.ByteString):
-    Deprecated: "It is an internal function and should never have been exported. Use 'break (== x)' instead. (There are rewrite rules that handle this special case of 'break'.)"
-
-Network/HTTP/Types/URI.hs:313:20: Warning:
-    In the use of ‘B.breakByte’ (imported from Data.ByteString):
-    Deprecated: "It is an internal function and should never have been exported. Use 'break (== x)' instead. (There are rewrite rules that handle this special case of 'break'.)"
-
-Network/HTTP/Types/URI.hs:325:18: Warning:
-    In the use of ‘B.breakByte’ (imported from Data.ByteString):
-    Deprecated: "It is an internal function and should never have been exported. Use 'break (== x)' instead. (There are rewrite rules that handle this special case of 'break'.)"
-[3 of 7] Compiling Network.HTTP.Types.Status ( Network/HTTP/Types/Status.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Network/HTTP/Types/Status.o )
-[4 of 7] Compiling Network.HTTP.Types.QueryLike ( Network/HTTP/Types/QueryLike.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Network/HTTP/Types/QueryLike.o )
-[5 of 7] Compiling Network.HTTP.Types.Method ( Network/HTTP/Types/Method.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Network/HTTP/Types/Method.o )
-[6 of 7] Compiling Network.HTTP.Types.Header ( Network/HTTP/Types/Header.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Network/HTTP/Types/Header.o )
-[7 of 7] Compiling Network.HTTP.Types ( Network/HTTP/Types.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Network/HTTP/Types.o )
-In-place registering http-types-0.9...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/http-types-0.9-3Bf1bEHnPYIAJ2rfQRlloD
-Registering http-types-0.9...
diff --git a/.stack-work/logs/lifted-base-0.2.3.6.log b/.stack-work/logs/lifted-base-0.2.3.6.log
deleted file mode 100644
--- a/.stack-work/logs/lifted-base-0.2.3.6.log
+++ /dev/null
@@ -1,43 +0,0 @@
-Configuring lifted-base-0.2.3.6...
-Building lifted-base-0.2.3.6...
-Preprocessing library lifted-base-0.2.3.6...
-[1 of 9] Compiling System.Timeout.Lifted ( System/Timeout/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/System/Timeout/Lifted.o )
-
-System/Timeout/Lifted.hs:4:14: Warning:
-    ‘System.Timeout.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[2 of 9] Compiling Foreign.Marshal.Utils.Lifted ( Foreign/Marshal/Utils/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Foreign/Marshal/Utils/Lifted.o )
-
-Foreign/Marshal/Utils/Lifted.hs:6:14: Warning:
-    ‘Foreign.Marshal.Utils.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[3 of 9] Compiling Data.IORef.Lifted ( Data/IORef/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/IORef/Lifted.o )
-
-Data/IORef/Lifted.hs:6:14: Warning:
-    ‘Data.IORef.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[4 of 9] Compiling Control.Concurrent.QSemN.Lifted ( Control/Concurrent/QSemN/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Concurrent/QSemN/Lifted.o )
-
-Control/Concurrent/QSemN/Lifted.hs:7:14: Warning:
-    ‘Control.Concurrent.QSemN.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[5 of 9] Compiling Control.Concurrent.QSem.Lifted ( Control/Concurrent/QSem/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Concurrent/QSem/Lifted.o )
-
-Control/Concurrent/QSem/Lifted.hs:7:14: Warning:
-    ‘Control.Concurrent.QSem.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[6 of 9] Compiling Control.Concurrent.Chan.Lifted ( Control/Concurrent/Chan/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Concurrent/Chan/Lifted.o )
-
-Control/Concurrent/Chan/Lifted.hs:6:14: Warning:
-    ‘Control.Concurrent.Chan.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[7 of 9] Compiling Control.Concurrent.MVar.Lifted ( Control/Concurrent/MVar/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Concurrent/MVar/Lifted.o )
-
-Control/Concurrent/MVar/Lifted.hs:7:14: Warning:
-    ‘Control.Concurrent.MVar.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[8 of 9] Compiling Control.Exception.Lifted ( Control/Exception/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Exception/Lifted.o )
-
-Control/Exception/Lifted.hs:11:14: Warning:
-    ‘Control.Exception.Lifted’ is marked as Trustworthy but has been inferred as safe!
-[9 of 9] Compiling Control.Concurrent.Lifted ( Control/Concurrent/Lifted.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Concurrent/Lifted.o )
-
-Control/Concurrent/Lifted.hs:4:14: Warning:
-    ‘Control.Concurrent.Lifted’ is marked as Trustworthy but has been inferred as safe!
-In-place registering lifted-base-0.2.3.6...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/lifted-base-0.2.3.6-30rpZxN2vBHCGvcAJlKDqd
-Registering lifted-base-0.2.3.6...
diff --git a/.stack-work/logs/memory-0.11.log b/.stack-work/logs/memory-0.11.log
deleted file mode 100644
--- a/.stack-work/logs/memory-0.11.log
+++ /dev/null
@@ -1,55 +0,0 @@
-Configuring memory-0.11...
-Building memory-0.11...
-Preprocessing library memory-0.11...
-[ 1 of 28] Compiling Data.Memory.MemMap.Posix ( .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/MemMap/Posix.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/MemMap/Posix.o )
-[ 2 of 28] Compiling Data.Memory.Internal.DeepSeq ( Data/Memory/Internal/DeepSeq.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Internal/DeepSeq.o )
-[ 3 of 28] Compiling Data.Memory.Internal.CompatPrim64 ( Data/Memory/Internal/CompatPrim64.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Internal/CompatPrim64.o )
-[ 4 of 28] Compiling Data.Memory.Internal.CompatPrim ( Data/Memory/Internal/CompatPrim.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Internal/CompatPrim.o )
-[ 5 of 28] Compiling Data.Memory.Internal.Scrubber ( Data/Memory/Internal/Scrubber.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Internal/Scrubber.o )
-[ 6 of 28] Compiling Data.Memory.ExtendedWords ( Data/Memory/ExtendedWords.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/ExtendedWords.o )
-[ 7 of 28] Compiling Data.Memory.Internal.Imports ( Data/Memory/Internal/Imports.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Internal/Imports.o )
-[ 8 of 28] Compiling Data.Memory.PtrMethods ( Data/Memory/PtrMethods.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/PtrMethods.o )
-[ 9 of 28] Compiling Data.Memory.Internal.Compat ( Data/Memory/Internal/Compat.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Internal/Compat.o )
-[10 of 28] Compiling Data.Memory.Encoding.Base16 ( Data/Memory/Encoding/Base16.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Encoding/Base16.o )
-[11 of 28] Compiling Data.Memory.Encoding.Base32 ( Data/Memory/Encoding/Base32.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Encoding/Base32.o )
-[12 of 28] Compiling Data.Memory.Encoding.Base64 ( Data/Memory/Encoding/Base64.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Encoding/Base64.o )
-[13 of 28] Compiling Data.Memory.Endian ( Data/Memory/Endian.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Endian.o )
-[14 of 28] Compiling Data.Memory.Hash.SipHash ( Data/Memory/Hash/SipHash.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Hash/SipHash.o )
-[15 of 28] Compiling Data.Memory.Hash.FNV ( Data/Memory/Hash/FNV.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/Memory/Hash/FNV.o )
-[16 of 28] Compiling Data.ByteArray.Types ( Data/ByteArray/Types.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Types.o )
-
-Data/ByteArray/Types.hs:15:1: Warning:
-    The import of ‘Data.Monoid’ is redundant
-      except perhaps to import instances from ‘Data.Monoid’
-    To import instances alone, use: import Data.Monoid()
-[17 of 28] Compiling Data.ByteArray.Bytes ( Data/ByteArray/Bytes.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Bytes.o )
-
-Data/ByteArray/Bytes.hs:20:1: Warning:
-    The import of ‘Data.Monoid’ is redundant
-      except perhaps to import instances from ‘Data.Monoid’
-    To import instances alone, use: import Data.Monoid()
-[18 of 28] Compiling Data.ByteArray.ScrubbedBytes ( Data/ByteArray/ScrubbedBytes.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/ScrubbedBytes.o )
-
-Data/ByteArray/ScrubbedBytes.hs:19:1: Warning:
-    The import of ‘Data.Monoid’ is redundant
-      except perhaps to import instances from ‘Data.Monoid’
-    To import instances alone, use: import Data.Monoid()
-[19 of 28] Compiling Data.ByteArray.MemView ( Data/ByteArray/MemView.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/MemView.o )
-[20 of 28] Compiling Data.ByteArray.Pack.Internal ( Data/ByteArray/Pack/Internal.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Pack/Internal.o )
-
-Data/ByteArray/Pack/Internal.hs:20:1: Warning:
-    The import of ‘Data.Memory.Internal.Imports’ is redundant
-      except perhaps to import instances from ‘Data.Memory.Internal.Imports’
-    To import instances alone, use: import Data.Memory.Internal.Imports()
-[21 of 28] Compiling Data.ByteArray.Methods ( Data/ByteArray/Methods.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Methods.o )
-[22 of 28] Compiling Data.ByteArray.View ( Data/ByteArray/View.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/View.o )
-[23 of 28] Compiling Data.ByteArray.Encoding ( Data/ByteArray/Encoding.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Encoding.o )
-[24 of 28] Compiling Data.ByteArray.Mapping ( Data/ByteArray/Mapping.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Mapping.o )
-[25 of 28] Compiling Data.ByteArray.Parse ( Data/ByteArray/Parse.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Parse.o )
-[26 of 28] Compiling Data.ByteArray.Hash ( Data/ByteArray/Hash.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Hash.o )
-[27 of 28] Compiling Data.ByteArray   ( Data/ByteArray.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray.o )
-[28 of 28] Compiling Data.ByteArray.Pack ( Data/ByteArray/Pack.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Data/ByteArray/Pack.o )
-In-place registering memory-0.11...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/memory-0.11-0EiEBIg44i8KGjAeoKnPDs
-Registering memory-0.11...
diff --git a/.stack-work/logs/mmorph-1.0.6.log b/.stack-work/logs/mmorph-1.0.6.log
deleted file mode 100644
--- a/.stack-work/logs/mmorph-1.0.6.log
+++ /dev/null
@@ -1,53 +0,0 @@
-Configuring mmorph-1.0.6...
-Building mmorph-1.0.6...
-Preprocessing library mmorph-1.0.6...
-[1 of 2] Compiling Control.Monad.Morph ( src/Control/Monad/Morph.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Monad/Morph.o )
-
-src/Control/Monad/Morph.hs:76:1: Warning:
-    Module ‘Control.Monad.Trans.Error’ is deprecated:
-      Use Control.Monad.Trans.Except instead
-
-src/Control/Monad/Morph.hs:112:20: Warning:
-    In the use of type constructor or class ‘E.ErrorT’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-
-src/Control/Monad/Morph.hs:113:19: Warning:
-    In the use of data constructor ‘E.ErrorT’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-
-src/Control/Monad/Morph.hs:113:34: Warning:
-    In the use of ‘E.runErrorT’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-
-src/Control/Monad/Morph.hs:233:11: Warning:
-    In the use of type constructor or class ‘E.Error’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-
-src/Control/Monad/Morph.hs:233:33: Warning:
-    In the use of type constructor or class ‘E.ErrorT’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-
-src/Control/Monad/Morph.hs:234:17: Warning:
-    In the use of data constructor ‘E.ErrorT’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-
-src/Control/Monad/Morph.hs:235:14: Warning:
-    In the use of ‘E.runErrorT’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-
-src/Control/Monad/Morph.hs:235:30: Warning:
-    In the use of ‘E.runErrorT’
-    (imported from Control.Monad.Trans.Error):
-    Deprecated: "Use Control.Monad.Trans.Except instead"
-[2 of 2] Compiling Control.Monad.Trans.Compose ( src/Control/Monad/Trans/Compose.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Monad/Trans/Compose.o )
-In-place registering mmorph-1.0.6...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/mmorph-1.0.6-42KUkOfzC6q3qCtAMiSHam
-Registering mmorph-1.0.6...
diff --git a/.stack-work/logs/monad-control-1.0.0.5.log b/.stack-work/logs/monad-control-1.0.0.5.log
deleted file mode 100644
--- a/.stack-work/logs/monad-control-1.0.0.5.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring monad-control-1.0.0.5...
-Building monad-control-1.0.0.5...
-Preprocessing library monad-control-1.0.0.5...
-[1 of 1] Compiling Control.Monad.Trans.Control ( Control/Monad/Trans/Control.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Control/Monad/Trans/Control.o )
-In-place registering monad-control-1.0.0.5...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/monad-control-1.0.0.5-0V0Z5ArSaI68lPP0A0bpaP
-Registering monad-control-1.0.0.5...
diff --git a/.stack-work/logs/mountpoints-1.0.1.log b/.stack-work/logs/mountpoints-1.0.1.log
deleted file mode 100644
--- a/.stack-work/logs/mountpoints-1.0.1.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring mountpoints-1.0.1...
-Building mountpoints-1.0.1...
-Preprocessing library mountpoints-1.0.1...
-[1 of 1] Compiling System.MountPoints ( .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/System/MountPoints.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/System/MountPoints.o )
-In-place registering mountpoints-1.0.1...
-Installing library in
-/home/joey/src/git-annex/.stack-work/install/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/mountpoints-1.0.1-BgeHc197DxiDAiNIQ8ipJs
-Registering mountpoints-1.0.1...
diff --git a/.stack-work/logs/mtl-compat-0.2.1.3.log b/.stack-work/logs/mtl-compat-0.2.1.3.log
deleted file mode 100644
--- a/.stack-work/logs/mtl-compat-0.2.1.3.log
+++ /dev/null
@@ -1,7 +0,0 @@
-Configuring mtl-compat-0.2.1.3...
-Building mtl-compat-0.2.1.3...
-Preprocessing library mtl-compat-0.2.1.3...
-In-place registering mtl-compat-0.2.1.3...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/mtl-compat-0.2.1.3-HNwvu6hpyqBLqGyy8DsC5w
-Registering mtl-compat-0.2.1.3...
diff --git a/.stack-work/logs/mwc-random-0.13.4.0.log b/.stack-work/logs/mwc-random-0.13.4.0.log
deleted file mode 100644
--- a/.stack-work/logs/mwc-random-0.13.4.0.log
+++ /dev/null
@@ -1,1 +0,0 @@
-Configuring mwc-random-0.13.4.0...
diff --git a/.stack-work/logs/nats-1.1.log b/.stack-work/logs/nats-1.1.log
deleted file mode 100644
--- a/.stack-work/logs/nats-1.1.log
+++ /dev/null
@@ -1,7 +0,0 @@
-Configuring nats-1.1...
-Building nats-1.1...
-Preprocessing library nats-1.1...
-In-place registering nats-1.1...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/nats-1.1-4rT3BkPz6Fa0j9LJSDe5FB
-Registering nats-1.1...
diff --git a/.stack-work/logs/prelude-extras-0.4.0.3.log b/.stack-work/logs/prelude-extras-0.4.0.3.log
deleted file mode 100644
--- a/.stack-work/logs/prelude-extras-0.4.0.3.log
+++ /dev/null
@@ -1,8 +0,0 @@
-Configuring prelude-extras-0.4.0.3...
-Building prelude-extras-0.4.0.3...
-Preprocessing library prelude-extras-0.4.0.3...
-[1 of 1] Compiling Prelude.Extras   ( src/Prelude/Extras.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Prelude/Extras.o )
-In-place registering prelude-extras-0.4.0.3...
-Installing library in
-/home/joey/.stack/snapshots/x86_64-linux/lts-5.5/7.10.3/lib/x86_64-linux-ghc-7.10.3/prelude-extras-0.4.0.3-1gQpKVfMHul71LsAFgGRhv
-Registering prelude-extras-0.4.0.3...
diff --git a/.stack-work/logs/process-1.3.0.0.log b/.stack-work/logs/process-1.3.0.0.log
deleted file mode 100644
--- a/.stack-work/logs/process-1.3.0.0.log
+++ /dev/null
@@ -1,53 +0,0 @@
-[1 of 1] Compiling Main             ( /home/joey/tmp/stack17642/process-1.3.0.0/Setup.hs, /home/joey/tmp/stack17642/process-1.3.0.0/.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/setup/Main.o )
-Linking /home/joey/tmp/stack17642/process-1.3.0.0/.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/setup/setup ...
-Configuring process-1.3.0.0...
-configure: WARNING: unrecognized options: --with-compiler, --with-gcc
-checking for gcc... gcc
-checking whether the C compiler works... yes
-checking for C compiler default output file name... a.out
-checking for suffix of executables... 
-checking whether we are cross compiling... no
-checking for suffix of object files... o
-checking whether we are using the GNU C compiler... yes
-checking whether gcc accepts -g... yes
-checking for gcc option to accept ISO C89... none needed
-checking how to run the C preprocessor... gcc -E
-checking for grep that handles long lines and -e... /bin/grep
-checking for egrep... /bin/grep -E
-checking for ANSI C header files... yes
-checking for sys/types.h... yes
-checking for sys/stat.h... yes
-checking for stdlib.h... yes
-checking for string.h... yes
-checking for memory.h... yes
-checking for strings.h... yes
-checking for inttypes.h... yes
-checking for stdint.h... yes
-checking for unistd.h... yes
-checking for pid_t... yes
-checking vfork.h usability... no
-checking vfork.h presence... no
-checking for vfork.h... no
-checking for fork... yes
-checking for vfork... yes
-checking for working fork... yes
-checking for working vfork... (cached) yes
-checking signal.h usability... yes
-checking signal.h presence... yes
-checking for signal.h... yes
-checking sys/wait.h usability... yes
-checking sys/wait.h presence... yes
-checking for sys/wait.h... yes
-checking fcntl.h usability... yes
-checking fcntl.h presence... yes
-checking for fcntl.h... yes
-checking for setitimer... yes
-checking for sysconf... yes
-checking value of SIG_DFL... -1
-checking value of SIG_IGN... -1
-configure: creating ./config.status
-config.status: creating include/HsProcessConfig.h
-configure: WARNING: unrecognized options: --with-compiler, --with-gcc
-Building process-1.3.0.0...
-Preprocessing library process-1.3.0.0...
-[1 of 3] Compiling System.Process.Internals ( System/Process/Internals.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/System/Process/Internals.o )
diff --git a/.stack-work/logs/psqueues-0.2.2.0.log b/.stack-work/logs/psqueues-0.2.2.0.log
deleted file mode 100644
--- a/.stack-work/logs/psqueues-0.2.2.0.log
+++ /dev/null
diff --git a/Annex/AdjustedBranch.hs b/Annex/AdjustedBranch.hs
--- a/Annex/AdjustedBranch.hs
+++ b/Annex/AdjustedBranch.hs
@@ -57,6 +57,8 @@
 data Adjustment
 	= UnlockAdjustment
 	| LockAdjustment
+	| FixAdjustment
+	| UnFixAdjustment
 	| HideMissingAdjustment
 	| ShowMissingAdjustment
 	deriving (Show, Eq)
@@ -66,32 +68,16 @@
 reverseAdjustment LockAdjustment = UnlockAdjustment
 reverseAdjustment HideMissingAdjustment = ShowMissingAdjustment
 reverseAdjustment ShowMissingAdjustment = HideMissingAdjustment
+reverseAdjustment FixAdjustment = UnFixAdjustment
+reverseAdjustment UnFixAdjustment = FixAdjustment
 
 {- How to perform various adjustments to a TreeItem. -}
 adjustTreeItem :: Adjustment -> TreeItem -> Annex (Maybe TreeItem)
-adjustTreeItem UnlockAdjustment ti@(TreeItem f m s)
-	| toBlobType m == Just SymlinkBlob = do
-		mk <- catKey s
-		case mk of
-			Just k -> do
-				Database.Keys.addAssociatedFile k f
-				Just . TreeItem f (fromBlobType FileBlob)
-					<$> hashPointerFile k
-			Nothing -> return (Just ti)
-	| otherwise = return (Just ti)
-adjustTreeItem LockAdjustment ti@(TreeItem f m s)
-	| toBlobType m /= Just SymlinkBlob = do
-		mk <- catKey s
-		case mk of
-			Just k -> do
-				absf <- inRepo $ \r -> absPath $
-					fromTopFilePath f r
-				linktarget <- calcRepo $ gitAnnexLink absf k
-				Just . TreeItem f (fromBlobType SymlinkBlob)
-					<$> hashSymlink linktarget
-			Nothing -> return (Just ti)
-	| otherwise = return (Just ti)
-adjustTreeItem HideMissingAdjustment ti@(TreeItem _ _ s) = do
+adjustTreeItem UnlockAdjustment = ifSymlink adjustToPointer noAdjust
+adjustTreeItem LockAdjustment = ifSymlink noAdjust adjustToSymlink
+adjustTreeItem FixAdjustment = ifSymlink adjustToSymlink noAdjust
+adjustTreeItem UnFixAdjustment = ifSymlink (adjustToSymlink' gitAnnexLinkCanonical) noAdjust
+adjustTreeItem HideMissingAdjustment = \ti@(TreeItem _ _ s) -> do
 	mk <- catKey s
 	case mk of
 		Just k -> ifM (inAnnex k)
@@ -99,8 +85,41 @@
 			, return Nothing
 			)
 		Nothing -> return (Just ti)
-adjustTreeItem ShowMissingAdjustment ti = return (Just ti)
+adjustTreeItem ShowMissingAdjustment = noAdjust
 
+ifSymlink :: (TreeItem -> Annex a) -> (TreeItem -> Annex a) -> TreeItem -> Annex a
+ifSymlink issymlink notsymlink ti@(TreeItem _f m _s)
+	| toBlobType m == Just SymlinkBlob = issymlink ti
+	| otherwise = notsymlink ti
+
+noAdjust :: TreeItem -> Annex (Maybe TreeItem)
+noAdjust = return . Just
+
+adjustToPointer :: TreeItem -> Annex (Maybe TreeItem)
+adjustToPointer ti@(TreeItem f _m s) = do
+	mk <- catKey s
+	case mk of
+		Just k -> do
+			Database.Keys.addAssociatedFile k f
+			Just . TreeItem f (fromBlobType FileBlob)
+				<$> hashPointerFile k
+		Nothing -> return (Just ti)
+
+adjustToSymlink :: TreeItem -> Annex (Maybe TreeItem)
+adjustToSymlink = adjustToSymlink' gitAnnexLink
+
+adjustToSymlink' :: (FilePath -> Key -> Git.Repo -> GitConfig -> IO FilePath) -> TreeItem -> Annex (Maybe TreeItem)
+adjustToSymlink' gitannexlink ti@(TreeItem f _m s) = do
+	mk <- catKey s
+	case mk of
+		Just k -> do
+			absf <- inRepo $ \r -> absPath $
+				fromTopFilePath f r
+			linktarget <- calcRepo $ gitannexlink absf k
+			Just . TreeItem f (fromBlobType SymlinkBlob)
+				<$> hashSymlink linktarget
+		Nothing -> return (Just ti)
+
 type OrigBranch = Branch
 newtype AdjBranch = AdjBranch { adjBranch :: Branch }
 
@@ -123,11 +142,15 @@
 serialize LockAdjustment = "locked"
 serialize HideMissingAdjustment = "present"
 serialize ShowMissingAdjustment = "showmissing"
+serialize FixAdjustment = "fixed"
+serialize UnFixAdjustment = "unfixed"
 
 deserialize :: String -> Maybe Adjustment
 deserialize "unlocked" = Just UnlockAdjustment
 deserialize "locked" = Just UnlockAdjustment
 deserialize "present" = Just HideMissingAdjustment
+deserialize "fixed" = Just FixAdjustment
+deserialize "unfixed" = Just UnFixAdjustment
 deserialize _ = Nothing
 
 originalToAdjusted :: OrigBranch -> Adjustment -> AdjBranch
@@ -160,21 +183,41 @@
  - adjusted version of a branch, changes the adjustment of the original
  - branch).
  -
- - Can fail, if no branch is checked out, or perhaps if staged changes
- - conflict with the adjusted branch.
+ - Can fail, if no branch is checked out, or if the adjusted branch already
+ - exists, or perhaps if staged changes conflict with the adjusted branch.
  -}
-enterAdjustedBranch :: Adjustment -> Annex ()
+enterAdjustedBranch :: Adjustment -> Annex Bool
 enterAdjustedBranch adj = go =<< originalBranch
   where
 	go (Just origbranch) = do
-		AdjBranch b <- preventCommits $ const $ 
-			adjustBranch adj origbranch
-		showOutput -- checkout can have output in large repos
-		inRepo $ Git.Command.run
-			[ Param "checkout"
-			, Param $ fromRef $ Git.Ref.base b
-			]
-	go Nothing = error "not on any branch!"
+		let adjbranch = adjBranch $ originalToAdjusted origbranch adj
+		ifM (inRepo (Git.Ref.exists adjbranch) <&&> (not <$> Annex.getState Annex.force))
+			( do
+				mapM_ (warning . unwords)
+					[ [ "adjusted branch"
+					  , Git.Ref.describe adjbranch
+					  , "already exists."
+					  ]
+					, [ "Aborting because that branch may have changes that have not yet reached"
+					  , Git.Ref.describe origbranch
+					  ]
+					, [ "You can check out the adjusted branch manually to enter it,"
+					  , "or delete the adjusted branch and re-run this command."
+					  ]
+					]
+				return False
+			, do
+				AdjBranch b <- preventCommits $ const $ 
+					adjustBranch adj origbranch
+				showOutput -- checkout can have output in large repos
+				inRepo $ Git.Command.runBool
+					[ Param "checkout"
+					, Param $ fromRef $ Git.Ref.base b
+					]
+			)
+	go Nothing = do
+		warning "not on any branch!"
+		return False
 
 adjustToCrippledFileSystem :: Annex ()
 adjustToCrippledFileSystem = do
@@ -186,7 +229,8 @@
 			, Param "-m"
 			, Param "commit before entering adjusted unlocked branch"
 			]
-	enterAdjustedBranch UnlockAdjustment
+	unlessM (enterAdjustedBranch UnlockAdjustment) $
+		warning "Failed to enter adjusted branch!"
 
 setBasisBranch :: BasisBranch -> Ref -> Annex ()
 setBasisBranch (BasisBranch basis) new = 
diff --git a/Annex/AutoMerge.hs b/Annex/AutoMerge.hs
--- a/Annex/AutoMerge.hs
+++ b/Annex/AutoMerge.hs
@@ -52,8 +52,15 @@
   where
 	go old = ifM isDirect
 		( mergeDirect currbranch old branch (resolveMerge old branch False) mergeconfig commitmode
-		, inRepo (Git.Merge.merge branch mergeconfig commitmode)
-			<||> (resolveMerge old branch False <&&> commitResolvedMerge commitmode)
+		, do
+			r <- inRepo (Git.Merge.merge branch mergeconfig commitmode)
+				<||> (resolveMerge old branch False <&&> commitResolvedMerge commitmode)
+			-- Merging can cause new associated files to appear
+			-- and the smudge filter will add them to the database.
+			-- To ensure that this process sees those changes,
+			-- close the database if it was open.
+			Database.Keys.closeDb
+			return r
 		)
 
 {- Resolves a conflicted merge. It's important that any conflicts be
diff --git a/Annex/Branch.hs b/Annex/Branch.hs
--- a/Annex/Branch.hs
+++ b/Annex/Branch.hs
@@ -367,7 +367,7 @@
 withIndex = withIndex' False
 withIndex' :: Bool -> Annex a -> Annex a
 withIndex' bootstrapping a = do
-	f <- liftIO . absPath =<< fromRepo gitAnnexIndex
+	f <- fromRepo gitAnnexIndex
 	withIndexFile f $ do
 		checkIndexOnce $ unlessM (liftIO $ doesFileExist f) $ do
 			unless bootstrapping create
@@ -522,7 +522,7 @@
 	Annex.Queue.flush
 	withIndex $ do
 		prepareModifyIndex jl
-		run $ mapMaybe getTransitionCalculator $ transitionList ts
+		run $ mapMaybe getTransitionCalculator tlist
 		Annex.Queue.flush
 		if neednewlocalbranch
 			then do
@@ -535,7 +535,8 @@
 	message
 		| neednewlocalbranch && null transitionedrefs = "new branch for transition " ++ tdesc
 		| otherwise = "continuing transition " ++ tdesc
-	tdesc = show $ map describeTransition $ transitionList ts
+	tdesc = show $ map describeTransition tlist
+	tlist = transitionList ts
 
 	{- The changes to make to the branch are calculated and applied to
 	 - the branch directly, rather than going through the journal,
diff --git a/Annex/CatFile.hs b/Annex/CatFile.hs
--- a/Annex/CatFile.hs
+++ b/Annex/CatFile.hs
@@ -30,6 +30,7 @@
 import qualified Annex
 import Git.Types
 import Git.FilePath
+import Git.Index
 import qualified Git.Ref
 import Annex.Link
 
@@ -68,7 +69,7 @@
 catFileHandle :: Annex Git.CatFile.CatFileHandle
 catFileHandle = do
 	m <- Annex.getState Annex.catfilehandles
-	indexfile <- fromMaybe "" . maybe Nothing (lookup "GIT_INDEX_FILE")
+	indexfile <- fromMaybe "" . maybe Nothing (lookup indexEnv)
 		<$> fromRepo gitEnv
 	case M.lookup indexfile m of
 		Just h -> return h
diff --git a/Annex/GitOverlay.hs b/Annex/GitOverlay.hs
--- a/Annex/GitOverlay.hs
+++ b/Annex/GitOverlay.hs
@@ -12,14 +12,18 @@
 import Annex.Common
 import Git
 import Git.Types
+import Git.Index
 import Git.Env
 import qualified Annex
 
 {- Runs an action using a different git index file. -}
 withIndexFile :: FilePath -> Annex a -> Annex a
-withIndexFile f = withAltRepo
-	(\g -> addGitEnv g "GIT_INDEX_FILE" f)
-	(\g g' -> g' { gitEnv = gitEnv g })
+withIndexFile f a = do
+	f' <- liftIO $ indexEnvVal f
+	withAltRepo
+		(\g -> addGitEnv g indexEnv f')
+		(\g g' -> g' { gitEnv = gitEnv g })
+		a
 
 {- Runs an action using a different git work tree.
  -
diff --git a/Annex/Locations.hs b/Annex/Locations.hs
--- a/Annex/Locations.hs
+++ b/Annex/Locations.hs
@@ -15,6 +15,7 @@
 	gitAnnexLocation,
 	gitAnnexLocationDepth,
 	gitAnnexLink,
+	gitAnnexLinkCanonical,
 	gitAnnexContentLock,
 	gitAnnexMapping,
 	gitAnnexInodeCache,
@@ -80,6 +81,7 @@
 import Types.GitConfig
 import Types.Difference
 import qualified Git
+import qualified Git.Types as Git
 import Git.FilePath
 import Annex.DirHashes
 import Annex.Fixup
@@ -149,8 +151,9 @@
 	 - for new content, unless symlinks are supported too.
 	 - Then hashDirMixed is used. But, the content could be
 	 - in either location so check both. -}
-	| symlinkssupported = check $ map inrepo $ reverse $ annexLocations config key
-	| crippled = checkall
+	| crippled = if symlinkssupported
+		then check $ map inrepo $ reverse $ annexLocations config key
+		else checkall
 	{- Regular repositories only use hashDirMixed, so
 	 - don't need to do any work to check if the file is
 	 - present. -}
@@ -181,6 +184,20 @@
 				Git.repoPath r </> ".git"
 		| otherwise = Git.localGitDir r
 	whoops = error $ "unable to normalize " ++ file
+
+{- Calculates a symlink target as would be used in a typical git
+ - repository, with .git in the top of the work tree. -}
+gitAnnexLinkCanonical :: FilePath -> Key -> Git.Repo -> GitConfig -> IO FilePath
+gitAnnexLinkCanonical file key r config = gitAnnexLink file key r' config'
+  where
+	r' = case r of
+		Git.Repo { Git.location = l@Git.Local { Git.worktree = Just wt } } ->
+			r { Git.location = l { Git.gitdir = wt </> ".git" } }
+		_ -> r
+	config' = config
+		{ annexCrippledFileSystem = False
+		, coreSymlinks = True
+		}
 
 {- File used to lock a key's content. -}
 gitAnnexContentLock :: Key -> Git.Repo -> GitConfig -> IO FilePath
diff --git a/Annex/SpecialRemote.hs b/Annex/SpecialRemote.hs
--- a/Annex/SpecialRemote.hs
+++ b/Annex/SpecialRemote.hs
@@ -80,7 +80,7 @@
 		case (M.lookup nameKey c, findType c) of
 			(Just name, Right t) -> whenM (canenable u) $ do
 				showSideAction $ "Auto enabling special remote " ++ name
-				res <- tryNonAsync $ setup t (Just u) Nothing c
+				res <- tryNonAsync $ setup t (Just u) Nothing c def
 				case res of
 					Left e -> warning (show e)
 					Right _ -> return ()
diff --git a/Annex/Version.hs b/Annex/Version.hs
--- a/Annex/Version.hs
+++ b/Annex/Version.hs
@@ -26,7 +26,7 @@
 
 upgradableVersions :: [Version]
 #ifndef mingw32_HOST_OS
-upgradableVersions = ["0", "1", "2", "4", "5"]
+upgradableVersions = ["0", "1", "2", "3", "4", "5"]
 #else
 upgradableVersions = ["2", "3", "4", "5"]
 #endif
diff --git a/Annex/View.hs b/Annex/View.hs
--- a/Annex/View.hs
+++ b/Annex/View.hs
@@ -341,22 +341,24 @@
 	liftIO . nukeFile =<< fromRepo gitAnnexViewIndex
 	uh <- withViewIndex $ inRepo Git.UpdateIndex.startUpdateIndex
 	forM_ l $ \f -> do
-		relf <- getTopFilePath <$> inRepo (toTopFilePath f)
-		go uh relf =<< lookupFile f
+		topf <- inRepo (toTopFilePath f)
+		go uh topf =<< lookupFile f
 	liftIO $ do
 		void $ stopUpdateIndex uh
 		void clean
 	genViewBranch view
   where
 	genviewedfiles = viewedFiles view mkviewedfile -- enables memoization
-	go uh f (Just k) = do
+	go uh topf (Just k) = do
 		metadata <- getCurrentMetaData k
+		let f = getTopFilePath topf
 		let metadata' = getfilemetadata f `unionMetaData` metadata
 		forM_ (genviewedfiles f metadata') $ \fv -> do
 			f' <- fromRepo $ fromTopFilePath $ asTopFilePath fv
 			stagesymlink uh f' =<< calcRepo (gitAnnexLink f' k)
-	go uh f Nothing
-		| "." `isPrefixOf` f = do
+	go uh topf Nothing
+		| "." `isPrefixOf` getTopFilePath topf = do
+			f <- fromRepo $ fromTopFilePath topf
 			s <- liftIO $ getSymbolicLinkStatus f
 			if isSymbolicLink s
 				then stagesymlink uh f =<< liftIO (readSymbolicLink f)
diff --git a/Assistant/MakeRemote.hs b/Assistant/MakeRemote.hs
--- a/Assistant/MakeRemote.hs
+++ b/Assistant/MakeRemote.hs
@@ -101,8 +101,8 @@
 	 - assistant, because otherwise GnuPG may block once the entropy
 	 - pool is drained, and as of now there's no way to tell the user
 	 - to perform IO actions to refill the pool. -}
-	(c', u) <- R.setup remotetype mu mcreds $
-		M.insert "highRandomQuality" "false" $ M.union config c
+	let weakc = M.insert "highRandomQuality" "false" $ M.union config c
+	(c', u) <- R.setup remotetype mu mcreds weakc def
 	configSet u c'
 	when setdesc $
 		whenM (isNothing . M.lookup u <$> uuidMap) $
@@ -168,4 +168,4 @@
 	sametype r = R.typename (R.remotetype r) == R.typename remotetype
 	fromstorage r = do
 		let storage = getstorage (R.uuid r)
-		getRemoteCredPair (R.config r) storage
+		getRemoteCredPair (R.config r) (R.gitconfig r) storage
diff --git a/Assistant/Threads/MountWatcher.hs b/Assistant/Threads/MountWatcher.hs
--- a/Assistant/Threads/MountWatcher.hs
+++ b/Assistant/Threads/MountWatcher.hs
@@ -32,7 +32,9 @@
 import Control.Concurrent
 import qualified Control.Exception as E
 #else
+#ifdef linux_HOST_OS
 #warning Building without dbus support; will use mtab polling
+#endif
 #endif
 
 mountWatcherThread :: UrlRenderer -> NamedThread
diff --git a/Assistant/Threads/Watcher.hs b/Assistant/Threads/Watcher.hs
--- a/Assistant/Threads/Watcher.hs
+++ b/Assistant/Threads/Watcher.hs
@@ -221,7 +221,11 @@
 shouldRestage ds = scanComplete ds || forceRestage ds
 
 onAddUnlocked :: Bool -> GetFileMatcher -> Handler
-onAddUnlocked = onAddUnlocked' False contentchanged addassociatedfile samefilestatus
+onAddUnlocked symlinkssupported matcher f fs = do
+	mk <- liftIO $ isPointerFile f
+	case mk of
+		Nothing -> onAddUnlocked' False contentchanged addassociatedfile addlink samefilestatus symlinkssupported matcher f fs
+		Just k -> addlink f k
   where
 	addassociatedfile key file = 
 		Database.Keys.addAssociatedFile key
@@ -238,15 +242,32 @@
 			=<< inRepo (toTopFilePath file)
 		unlessM (inAnnex oldkey) $
 			logStatus oldkey InfoMissing
+	addlink file key = do
+		mode <- liftIO $ catchMaybeIO $ fileMode <$> getFileStatus file
+		liftAnnex $ stagePointerFile file mode =<< hashPointerFile key
+		madeChange file $ LinkChange (Just key)
 
 {- In direct mode, add events are received for both new files, and
  - modified existing files.
  -}
 onAddDirect :: Bool -> GetFileMatcher -> Handler
-onAddDirect = onAddUnlocked' True changedDirect (\k f -> void $ addAssociatedFile k f) sameFileStatus
+onAddDirect = onAddUnlocked' True changedDirect addassociatedfile addlink sameFileStatus
+  where
+	addassociatedfile key file = void $ addAssociatedFile key file
+	addlink file key = do
+		link <- liftAnnex $ calcRepo $ gitAnnexLink file key
+		addLink file link (Just key)
 
-onAddUnlocked' :: Bool -> (Key -> FilePath -> Annex ()) -> (Key -> FilePath -> Annex ()) -> (Key -> FilePath -> FileStatus -> Annex Bool) -> Bool -> GetFileMatcher -> Handler
-onAddUnlocked' isdirect contentchanged addassociatedfile samefilestatus symlinkssupported matcher file fs = do
+onAddUnlocked'
+	:: Bool
+	-> (Key -> FilePath -> Annex ())
+	-> (Key -> FilePath -> Annex ())
+	-> (FilePath -> Key -> Assistant (Maybe Change))
+	-> (Key -> FilePath -> FileStatus -> Annex Bool)
+	-> Bool
+	-> GetFileMatcher
+	-> Handler
+onAddUnlocked' isdirect contentchanged addassociatedfile addlink samefilestatus symlinkssupported matcher file fs = do
 	v <- liftAnnex $ catKeyFile file
 	case (v, fs) of
 		(Just key, Just filestatus) ->
@@ -255,11 +276,9 @@
 				 - an existing file that is not
 				 - really modified, but it might have
 				 - just been deleted and been put back,
-				 - so it symlink is restaged to make sure. -}
+				 - so its annex link is restaged to make sure. -}
 				( ifM (shouldRestage <$> getDaemonStatus)
-					( do
-						link <- liftAnnex $ calcRepo $ gitAnnexLink file key
-						addLink file link (Just key)
+					( addlink file key
 					, noChange
 					)
 				, guardSymlinkStandin (Just key) $ do
diff --git a/Assistant/WebApp/Configurators/WebDAV.hs b/Assistant/WebApp/Configurators/WebDAV.hs
--- a/Assistant/WebApp/Configurators/WebDAV.hs
+++ b/Assistant/WebApp/Configurators/WebDAV.hs
@@ -95,7 +95,7 @@
 	let name = fromJust $ M.lookup "name" c
 	let url = fromJust $ M.lookup "url" c
 	mcreds <- liftAnnex $
-		getRemoteCredPairFor "webdav" c (WebDAV.davCreds uuid)
+		getRemoteCredPairFor "webdav" c def (WebDAV.davCreds uuid)
 	case mcreds of
 		Just creds -> webDAVConfigurator $ liftH $
 			makeWebDavRemote enableSpecialRemote name creds M.empty
diff --git a/Assistant/WebApp/RepoList.hs b/Assistant/WebApp/RepoList.hs
--- a/Assistant/WebApp/RepoList.hs
+++ b/Assistant/WebApp/RepoList.hs
@@ -138,7 +138,10 @@
 		liftAnnex $ do
 			unwanted <- S.fromList
 				<$> filterM inUnwantedGroup (map Remote.uuid syncremotes)
-			rs <- filter selectedrepo . concat . Remote.byCost
+			trustmap <- trustMap
+			rs <- filter (\r -> M.lookup (Remote.uuid r) trustmap /= Just DeadTrusted)
+				. filter selectedrepo 
+				. concat . Remote.byCost
 				<$> Remote.remoteList
 			let l = flip map (map mkRepoId rs) $ \r -> case r of
 				(RepoUUID u)
diff --git a/Build/Version.hs b/Build/Version.hs
--- a/Build/Version.hs
+++ b/Build/Version.hs
@@ -46,7 +46,7 @@
 	
 getChangelogVersion :: IO Version
 getChangelogVersion = do
-	changelog <- readFile "debian/changelog"
+	changelog <- readFile "CHANGELOG"
 	let verline = takeWhile (/= '\n') changelog
 	return $ middle (words verline !! 1)
   where
diff --git a/Build/collect-ghc-options.sh b/Build/collect-ghc-options.sh
deleted file mode 100644
--- a/Build/collect-ghc-options.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-# Generate --ghc-options to pass LDFLAGS, CFLAGS, and CPPFLAGS through ghc
-# and on to ld, cc, and cpp.
-for w in $LDFLAGS; do
-	printf -- "-optl%s\n" "$w"
-done
-for w in $CFLAGS; do
-	printf -- "-optc%s\n" "$w"
-done
-for w in $CPPFLAGS; do
-	printf -- "-optc-Wp,%s\n" "$w"
-done
diff --git a/Build/make-sdist.sh b/Build/make-sdist.sh
deleted file mode 100644
--- a/Build/make-sdist.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-#
-# Workaround for `cabal sdist` requiring all included files to be listed
-# in .cabal.
-
-# Create target directory
-sdist_dir=git-annex-$(grep '^Version:' git-annex.cabal | sed -re 's/Version: *//')
-mkdir --parents dist/$sdist_dir
-
-find . \( -name .git -or -name dist -or -name cabal-dev \) -prune \
-	-or -not -name \\*.orig -not -type d -print \
-	| perl -ne "print unless length >= 100 - length q{$sdist_dir}" \
-	| grep -v ':' \
-	| xargs cp --parents --target-directory dist/$sdist_dir
-
-cd dist
-tar --format=ustar -caf $sdist_dir.tar.gz $sdist_dir
-
-# Check that tarball can be unpacked by cabal.
-# It's picky about tar longlinks etc.
-rm -rf $sdist_dir
-cabal unpack $sdist_dir.tar.gz
diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,43 @@
+git-annex (6.20160527) unstable; urgency=medium
+
+  * Split lines in the git-annex branch on \r as well as \n, to deal
+    with \r\n terminated lines written by some versions of git-annex on
+    Windows. This fixes strange displays in some cases.
+  * assistant: Fix bug that caused v6 pointer files to be annexed by the
+    assistant.
+  * assistant: Fix race in v6 mode that caused downloaded file content to
+    sometimes not replace pointer files.
+  * add: Adding a v6 pointer file used to annex it; now the pointer file is
+    added to git as-is. (git add of a pointer file already did the right
+    thing)
+  * enableremote: Can now be used to explicitly enable git-annex to use
+    git remotes. Using the command this way prevents other git-annex
+    commands from probing new git remotes to auto-enable them.
+  * enableremote: Remove annex-ignore configuration from a remote.
+  * Change git annex info remote encryption description to use wording
+    closer to what's used in initremote.
+  * Pass the various gnupg-options configs to gpg in several cases where
+    they were not before. Most notably, gnupg-decrypt-options is now
+    passed when decrypting an encrypted cipher.
+  * adjust: Add --fix adjustment, which is useful when the git directory
+    is in a nonstandard place.
+  * adjust: If the adjusted branch already exists, avoid overwriting it,
+    since it might contain changes that have not yet been propigated to the
+    original branch.
+  * Work around git weirdness in handling of relative path to GIT_INDEX_FILE
+    when in a subdirectory of the repository. This affected git annex view.
+  * Fix crash when entering/changing view in a subdirectory of a repo that
+    has a dotfile in its root.
+  * webapp: Avoid confusing display of dead remotes.
+  * Support building with ghc 8.0.1.
+  * Updated cabal file explicitly lists source files. The tarball
+    on hackage will include only the files needed for cabal install;
+    it is NOT the full git-annex source tree.
+  * debian/changelog, debian/NEWS, debian/copyright: Converted to symlinks
+    to CHANGELOG, NEWS, and COPYRIGHT, which used to symlink to these instead.
+
+ -- Joey Hess <id@joeyh.name>  Fri, 27 May 2016 11:48:36 -0400
+
 git-annex (6.20160511) unstable; urgency=medium
 
   * Fix bug that sometimes prevented git-annex smudge --clean from consuming
diff --git a/COPYRIGHT b/COPYRIGHT
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -95,6 +95,38 @@
   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   THE SOFTWARE.
 
+Files: Logs/Line.hs
+Copyright: 2001, The University Court of the University of Glasgow.
+License: other
+  All rights reserved.
+  .
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+  .
+  - Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+  .
+  - Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+  .
+  - Neither name of the University nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+  .
+  THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+  GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+  UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
 License: GPL-3+
  The full text of version 3 of the GPL is distributed as doc/license/GPL in
  this package's source, or in /usr/share/common-licenses/GPL-3 on
diff --git a/Command/Add.hs b/Command/Add.hs
--- a/Command/Add.hs
+++ b/Command/Add.hs
@@ -17,7 +17,9 @@
 import qualified Database.Keys
 import Config
 import Annex.FileMatcher
+import Annex.Link
 import Annex.Version
+import Git.FilePath
 
 cmd :: Command
 cmd = notBareRepo $ withGlobalOptions (jobsOption : jsonOption : fileMatchingOptions) $
@@ -80,8 +82,15 @@
 	return True
 
 start :: FilePath -> CommandStart
-start file = ifAnnexed file addpresent add
+start file = do
+	ifM versionSupportsUnlockedPointers
+		( do
+			mk <- liftIO $ isPointerFile file
+			maybe go fixuppointer mk
+		, go
+		)
   where
+	go = ifAnnexed file addpresent add
 	add = do
 		ms <- liftIO $ catchMaybeIO $ getSymbolicLinkStatus file
 		case ms of
@@ -114,9 +123,14 @@
 		-- the annexed symlink is present but not yet added to git
 		showStart "add" file
 		liftIO $ removeFile file
-		next $ next $ do
-			addLink file key Nothing
+		addLink file key Nothing
+		next $ next $
 			cleanup key =<< inAnnex key
+	fixuppointer key = do
+		-- the pointer file is present, but not yet added to git
+		showStart "add" file
+		Database.Keys.addAssociatedFile key =<< inRepo (toTopFilePath file)
+		next $ next $ addFile file
 
 perform :: FilePath -> CommandPerform
 perform file = do
diff --git a/Command/Adjust.hs b/Command/Adjust.hs
--- a/Command/Adjust.hs
+++ b/Command/Adjust.hs
@@ -21,6 +21,10 @@
 		( long "unlock"
 		<> help "unlock annexed files"
 		)
+	<|> flag' FixAdjustment
+		( long "fix"
+		<> help "fix symlinks to annnexed files"
+		)
 	{- Not ready yet
 	<|> flag' HideMissingAdjustment
 		( long "hide-missing"
@@ -35,5 +39,4 @@
 start adj = do
 	checkVersionSupported
 	showStart "adjust" ""
-	enterAdjustedBranch adj
-	next $ next $ return True
+	next $ next $ enterAdjustedBranch adj
diff --git a/Command/EnableRemote.hs b/Command/EnableRemote.hs
--- a/Command/EnableRemote.hs
+++ b/Command/EnableRemote.hs
@@ -1,6 +1,6 @@
 {- git-annex command
  -
- - Copyright 2013 Joey Hess <id@joeyh.name>
+ - Copyright 2013-2016 Joey Hess <id@joeyh.name>
  -
  - Licensed under the GNU GPL version 3 or higher.
  -}
@@ -8,17 +8,23 @@
 module Command.EnableRemote where
 
 import Command
+import qualified Annex
 import qualified Logs.Remote
 import qualified Types.Remote as R
+import qualified Git
 import qualified Annex.SpecialRemote
 import qualified Remote
+import qualified Types.Remote as Remote
+import qualified Remote.Git
 import Logs.UUID
+import Annex.UUID
+import Config
 
 import qualified Data.Map as M
 
 cmd :: Command
 cmd = command "enableremote" SectionSetup
-	"enables use of an existing special remote"
+	"enables git-annex to use a remote"
 	(paramPair paramName $ paramOptional $ paramRepeating paramKeyValue)
 	(withParams seek)
 
@@ -26,42 +32,71 @@
 seek = withWords start
 
 start :: [String] -> CommandStart
-start [] = unknownNameError "Specify the special remote to enable."
-start (name:ws) = go =<< Annex.SpecialRemote.findExisting name
+start [] = unknownNameError "Specify the remote to enable."
+start (name:rest) = go =<< filter matchingname <$> Annex.fromRepo Git.remotes
   where
-	config = Logs.Remote.keyValToConfig ws
-	
-	go Nothing = do
-		m <- Annex.SpecialRemote.specialRemoteMap
-		confm <- Logs.Remote.readRemoteLog
-		v <- Remote.nameToUUID' name
-		case v of
-			Right u | u `M.member` m ->
-				go (Just (u, fromMaybe M.empty (M.lookup u confm)))
-			_ -> unknownNameError "Unknown special remote."
-	go (Just (u, c)) = do
-		let fullconfig = config `M.union` c	
-		t <- either error return (Annex.SpecialRemote.findType fullconfig)
-		showStart "enableremote" name
-		next $ perform t u fullconfig
+	matchingname r = Git.remoteName r == Just name
+	go [] = startSpecialRemote name (Logs.Remote.keyValToConfig rest)
+		=<< Annex.SpecialRemote.findExisting name
+	go (r:_) = startNormalRemote name r
 
+type RemoteName = String
+
+startNormalRemote :: RemoteName -> Git.Repo -> CommandStart
+startNormalRemote name r = do
+	showStart "enableremote" name
+	next $ next $ do
+		setRemoteIgnore r False
+		r' <- Remote.Git.configRead False r
+		u <- getRepoUUID r'
+		return $ u /= NoUUID
+
+startSpecialRemote :: RemoteName -> Remote.RemoteConfig -> Maybe (UUID, Remote.RemoteConfig) -> CommandStart
+startSpecialRemote name config Nothing = do
+	m <- Annex.SpecialRemote.specialRemoteMap
+	confm <- Logs.Remote.readRemoteLog
+	v <- Remote.nameToUUID' name
+	case v of
+		Right u | u `M.member` m ->
+			startSpecialRemote name config $
+				Just (u, fromMaybe M.empty (M.lookup u confm))
+		_ -> unknownNameError "Unknown remote name."
+startSpecialRemote name config (Just (u, c)) = do
+	let fullconfig = config `M.union` c	
+	t <- either error return (Annex.SpecialRemote.findType fullconfig)
+	showStart "enableremote" name
+	gc <- maybe def Remote.gitconfig <$> Remote.byUUID u
+	next $ performSpecialRemote t u fullconfig gc
+
+performSpecialRemote :: RemoteType -> UUID -> R.RemoteConfig -> RemoteGitConfig -> CommandPerform
+performSpecialRemote t u c gc = do
+	(c', u') <- R.setup t (Just u) Nothing c gc
+	next $ cleanupSpecialRemote u' c'
+
+cleanupSpecialRemote :: UUID -> R.RemoteConfig -> CommandCleanup
+cleanupSpecialRemote u c = do
+	Logs.Remote.configSet u c
+	mr <- Remote.byUUID u
+	case mr of
+		Nothing -> noop
+		Just r -> setRemoteIgnore (R.repo r) False
+	return True
+
 unknownNameError :: String -> Annex a
 unknownNameError prefix = do
 	m <- Annex.SpecialRemote.specialRemoteMap
 	descm <- M.unionWith Remote.addName <$> uuidMap <*> pure m
-	msg <- if M.null m
+	specialmsg <- if M.null m
 			then pure "(No special remotes are currently known; perhaps use initremote instead?)"
 			else Remote.prettyPrintUUIDsDescs
 				"known special remotes"
 				descm (M.keys m)
-	error $ prefix ++ "\n" ++ msg
-
-perform :: RemoteType -> UUID -> R.RemoteConfig -> CommandPerform
-perform t u c = do
-	(c', u') <- R.setup t (Just u) Nothing c
-	next $ cleanup u' c'
-
-cleanup :: UUID -> R.RemoteConfig -> CommandCleanup
-cleanup u c = do
-	Logs.Remote.configSet u c
-	return True
+	disabledremotes <- filterM isdisabled =<< Annex.fromRepo Git.remotes
+	let remotesmsg = unlines $ map ("\t" ++) $
+		mapMaybe Git.remoteName disabledremotes
+	error $ concat $ filter (not . null) [prefix ++ "\n", remotesmsg, specialmsg]
+  where
+	isdisabled r = anyM id
+		[ (==) NoUUID <$> getRepoUUID r
+		, remoteAnnexIgnore <$> Annex.getRemoteGitConfig r
+		]
diff --git a/Command/InitRemote.hs b/Command/InitRemote.hs
--- a/Command/InitRemote.hs
+++ b/Command/InitRemote.hs
@@ -46,7 +46,7 @@
 
 perform :: RemoteType -> String -> R.RemoteConfig -> CommandPerform
 perform t name c = do
-	(c', u) <- R.setup t Nothing Nothing c
+	(c', u) <- R.setup t Nothing Nothing c def
 	next $ cleanup u name c'
 
 cleanup :: UUID -> String -> R.RemoteConfig -> CommandCleanup
diff --git a/Command/Map.hs b/Command/Map.hs
--- a/Command/Map.hs
+++ b/Command/Map.hs
@@ -75,7 +75,6 @@
 		filter (`notElem` ruuids) (M.keys umap)
 	uuidnode u = trustDecorate trustmap u $
 		Dot.graphNode (fromUUID u) $ M.findWithDefault "" u umap
-	ts = M.keys (M.filter (== Trusted) trustmap)
 
 hostname :: Git.Repo -> String
 hostname r
diff --git a/Command/Smudge.hs b/Command/Smudge.hs
--- a/Command/Smudge.hs
+++ b/Command/Smudge.hs
@@ -47,6 +47,7 @@
 	case parseLinkOrPointer b of
 		Nothing -> liftIO $ B.putStr b
 		Just k -> do
+			Database.Keys.addAssociatedFile k =<< inRepo (toTopFilePath file)
 			-- A previous unlocked checkout of the file may have
 			-- led to the annex object getting modified;
 			-- don't provide such modified content as it
@@ -61,7 +62,6 @@
 						=<< catchMaybeIO (B.readFile content)
 				, liftIO $ B.putStr b
 				)
-			Database.Keys.addAssociatedFile k =<< inRepo (toTopFilePath file)
 	stop
 
 -- Clean filter is fed file content on stdin, decides if a file
diff --git a/Command/TransferKeys.hs b/Command/TransferKeys.hs
--- a/Command/TransferKeys.hs
+++ b/Command/TransferKeys.hs
@@ -16,6 +16,7 @@
 import qualified Remote
 import Utility.SimpleProtocol (dupIoHandles)
 import Git.Types (RemoteName)
+import qualified Database.Keys
 
 data TransferRequest = TransferRequest Direction Remote Key AssociatedFile
 
@@ -41,8 +42,13 @@
 				return ok
 		| otherwise = notifyTransfer direction file $
 			download (Remote.uuid remote) key file forwardRetry observer $ \p ->
-				getViaTmp (RemoteVerify remote) key $ \t -> 
-					Remote.retrieveKeyFile remote key file t p
+				getViaTmp (RemoteVerify remote) key $ \t -> do
+					r <- Remote.retrieveKeyFile remote key file t p
+					-- Make sure we get the current
+					-- associated files data for the key,
+					-- not old cached data.
+					Database.Keys.closeDb			
+					return r
 	
 	observer False t tinfo = recordFailedTransfer t tinfo
 	observer True _ _ = noop
diff --git a/Config.hs b/Config.hs
--- a/Config.hs
+++ b/Config.hs
@@ -80,6 +80,12 @@
 setRemoteAvailability :: Git.Repo -> Availability -> Annex ()
 setRemoteAvailability r c = setConfig (remoteConfig r "availability") (show c)
 
+setRemoteIgnore :: Git.Repo -> Bool -> Annex ()
+setRemoteIgnore r b = setConfig (remoteConfig r "ignore") (Git.Config.boolConfig b)
+
+setRemoteBare :: Git.Repo -> Bool -> Annex ()
+setRemoteBare r b = setConfig (remoteConfig r "bare") (Git.Config.boolConfig b)
+
 isDirect :: Annex Bool
 isDirect = annexDirect <$> Annex.getGitConfig
 
diff --git a/Creds.hs b/Creds.hs
--- a/Creds.hs
+++ b/Creds.hs
@@ -51,40 +51,40 @@
  - if that's going to be done, so that the creds can be encrypted using the
  - cipher. The EncryptionIsSetup phantom type ensures that is the case.
  -}
-setRemoteCredPair :: EncryptionIsSetup -> RemoteConfig -> CredPairStorage -> Maybe CredPair -> Annex RemoteConfig
-setRemoteCredPair encsetup c storage Nothing = 
-	maybe (return c) (setRemoteCredPair encsetup c storage . Just)
-		=<< getRemoteCredPair c storage
-setRemoteCredPair _ c storage (Just creds)
-	| embedCreds c = case credPairRemoteKey storage of
-		Nothing -> localcache
-		Just key -> storeconfig key =<< remoteCipher =<< localcache
-	| otherwise = localcache
+setRemoteCredPair :: EncryptionIsSetup -> RemoteConfig -> RemoteGitConfig -> CredPairStorage -> Maybe CredPair -> Annex RemoteConfig
+setRemoteCredPair encsetup c gc storage mcreds = case mcreds of
+	Nothing -> maybe (return c) (setRemoteCredPair encsetup c gc storage . Just)
+		=<< getRemoteCredPair c gc storage
+	Just creds
+		| embedCreds c -> case credPairRemoteKey storage of
+			Nothing -> localcache creds
+			Just key -> storeconfig creds key =<< flip remoteCipher gc =<< localcache creds
+		| otherwise -> localcache creds
   where
-	localcache = do
+	localcache creds = do
 		writeCacheCredPair creds storage
 		return c
 
-	storeconfig key (Just cipher) = do
+	storeconfig creds key (Just cipher) = do
 		cmd <- gpgCmd <$> Annex.getGitConfig
-		s <- liftIO $ encrypt cmd (getGpgEncParams c) cipher
+		s <- liftIO $ encrypt cmd (c, gc) cipher
 			(feedBytes $ L.pack $ encodeCredPair creds)
 			(readBytes $ return . L.unpack)
 		return $ M.insert key (toB64 s) c
-	storeconfig key Nothing =
+	storeconfig creds key Nothing =
 		return $ M.insert key (toB64 $ encodeCredPair creds) c
 
 {- Gets a remote's credpair, from the environment if set, otherwise
  - from the cache in gitAnnexCredsDir, or failing that, from the
  - value in RemoteConfig. -}
-getRemoteCredPair :: RemoteConfig -> CredPairStorage -> Annex (Maybe CredPair)
-getRemoteCredPair c storage = maybe fromcache (return . Just) =<< fromenv
+getRemoteCredPair :: RemoteConfig -> RemoteGitConfig -> CredPairStorage -> Annex (Maybe CredPair)
+getRemoteCredPair c gc storage = maybe fromcache (return . Just) =<< fromenv
   where
 	fromenv = liftIO $ getEnvCredPair storage
 	fromcache = maybe fromconfig (return . Just) =<< readCacheCredPair storage
 	fromconfig = case credPairRemoteKey storage of
 		Just key -> do
-			mcipher <- remoteCipher' c
+			mcipher <- remoteCipher' c gc
 			case (M.lookup key c, mcipher) of
 				(Nothing, _) -> return Nothing
 				(Just enccreds, Just (cipher, storablecipher)) ->
@@ -94,7 +94,7 @@
 		Nothing -> return Nothing
 	fromenccreds enccreds cipher storablecipher = do
 		cmd <- gpgCmd <$> Annex.getGitConfig
-		mcreds <- liftIO $ catchMaybeIO $ decrypt cmd (getGpgDecParams c) cipher
+		mcreds <- liftIO $ catchMaybeIO $ decrypt cmd (c, gc) cipher
 			(feedBytes $ L.pack $ fromB64 enccreds)
 			(readBytes $ return . L.unpack)
 		case mcreds of
@@ -114,8 +114,8 @@
 			return $ Just credpair
 		_ -> error "bad creds"
 
-getRemoteCredPairFor :: String -> RemoteConfig -> CredPairStorage -> Annex (Maybe CredPair)
-getRemoteCredPairFor this c storage = go =<< getRemoteCredPair c storage
+getRemoteCredPairFor :: String -> RemoteConfig -> RemoteGitConfig -> CredPairStorage -> Annex (Maybe CredPair)
+getRemoteCredPairFor this c gc storage = go =<< getRemoteCredPair c gc storage
   where
 	go Nothing = do
 		warnMissingCredPairFor this storage
diff --git a/Crypto.hs b/Crypto.hs
--- a/Crypto.hs
+++ b/Crypto.hs
@@ -3,7 +3,7 @@
  - Currently using gpg; could later be modified to support different
  - crypto backends if neccessary.
  -
- - Copyright 2011-2014 Joey Hess <id@joeyh.name>
+ - Copyright 2011-2016 Joey Hess <id@joeyh.name>
  -
  - Licensed under the GNU GPL version 3 or higher.
  -}
@@ -28,8 +28,7 @@
 	readBytes,
 	encrypt,
 	decrypt,
-	getGpgEncParams,
-	getGpgDecParams,
+	LensGpgEncParams(..),
 
 	prop_HmacSha1WithCipher_sane
 ) where
@@ -74,11 +73,11 @@
 cipherMac (MacOnlyCipher c) = c
 
 {- Creates a new Cipher, encrypted to the specified key id. -}
-genEncryptedCipher :: Gpg.GpgCmd -> Gpg.KeyId -> EncryptedCipherVariant -> Bool -> IO StorableCipher
-genEncryptedCipher cmd keyid variant highQuality = do
+genEncryptedCipher :: LensGpgEncParams c => Gpg.GpgCmd -> c -> Gpg.KeyId -> EncryptedCipherVariant -> Bool -> IO StorableCipher
+genEncryptedCipher cmd c keyid variant highQuality = do
 	ks <- Gpg.findPubKeys cmd keyid
 	random <- Gpg.genRandom cmd highQuality size
-	encryptCipher cmd (mkCipher random) variant ks
+	encryptCipher cmd c (mkCipher random) variant ks
   where
 	(mkCipher, size) = case variant of
 		Hybrid -> (Cipher, cipherSize) -- used for MAC + symmetric
@@ -100,14 +99,14 @@
 {- Updates an existing Cipher, making changes to its keyids.
  -
  - When the Cipher is encrypted, re-encrypts it. -}
-updateCipherKeyIds :: Gpg.GpgCmd -> [(Bool, Gpg.KeyId)] -> StorableCipher -> IO StorableCipher
-updateCipherKeyIds _ _ SharedCipher{} = error "Cannot update shared cipher"
-updateCipherKeyIds _ [] c = return c
-updateCipherKeyIds cmd changes encipher@(EncryptedCipher _ variant ks) = do
+updateCipherKeyIds :: LensGpgEncParams encparams => Gpg.GpgCmd -> encparams -> [(Bool, Gpg.KeyId)] -> StorableCipher -> IO StorableCipher
+updateCipherKeyIds _ _ _ SharedCipher{} = error "Cannot update shared cipher"
+updateCipherKeyIds _ _ [] c = return c
+updateCipherKeyIds cmd encparams changes encipher@(EncryptedCipher _ variant ks) = do
 	ks' <- updateCipherKeyIds' cmd changes ks
-	cipher <- decryptCipher cmd encipher
-	encryptCipher cmd cipher variant ks'
-updateCipherKeyIds cmd changes (SharedPubKeyCipher cipher ks) =
+	cipher <- decryptCipher cmd encparams encipher
+	encryptCipher cmd encparams cipher variant ks'
+updateCipherKeyIds cmd _ changes (SharedPubKeyCipher cipher ks) =
 	SharedPubKeyCipher cipher <$> updateCipherKeyIds' cmd changes ks
 
 updateCipherKeyIds' :: Gpg.GpgCmd -> [(Bool, Gpg.KeyId)] -> KeyIds -> IO KeyIds
@@ -124,28 +123,33 @@
 	listKeyIds = concat <$$> mapM (keyIds <$$> Gpg.findPubKeys cmd)
 
 {- Encrypts a Cipher to the specified KeyIds. -}
-encryptCipher :: Gpg.GpgCmd -> Cipher -> EncryptedCipherVariant -> KeyIds -> IO StorableCipher
-encryptCipher cmd c variant (KeyIds ks) = do
+encryptCipher :: LensGpgEncParams c => Gpg.GpgCmd -> c -> Cipher -> EncryptedCipherVariant -> KeyIds -> IO StorableCipher
+encryptCipher cmd c cip variant (KeyIds ks) = do
 	-- gpg complains about duplicate recipient keyids
 	let ks' = nub $ sort ks
-	let params = Gpg.pkEncTo ks' ++ Gpg.stdEncryptionParams False
+	let params = concat
+		[ getGpgEncParamsBase c
+		, Gpg.pkEncTo ks'
+		, Gpg.stdEncryptionParams False
+		]
 	encipher <- Gpg.pipeStrict cmd params cipher
 	return $ EncryptedCipher encipher variant (KeyIds ks')
   where
-	cipher = case c of
+	cipher = case cip of
 		Cipher x -> x
 		MacOnlyCipher x -> x
 
 {- Decrypting an EncryptedCipher is expensive; the Cipher should be cached. -}
-decryptCipher :: Gpg.GpgCmd -> StorableCipher -> IO Cipher
-decryptCipher _ (SharedCipher t) = return $ Cipher t
-decryptCipher _ (SharedPubKeyCipher t _) = return $ MacOnlyCipher t
-decryptCipher cmd (EncryptedCipher t variant _) =
-	mkCipher <$> Gpg.pipeStrict cmd [ Param "--decrypt" ] t
+decryptCipher :: LensGpgEncParams c => Gpg.GpgCmd -> c -> StorableCipher -> IO Cipher
+decryptCipher _ _ (SharedCipher t) = return $ Cipher t
+decryptCipher _ _ (SharedPubKeyCipher t _) = return $ MacOnlyCipher t
+decryptCipher cmd c (EncryptedCipher t variant _) =
+	mkCipher <$> Gpg.pipeStrict cmd params t
   where
 	mkCipher = case variant of
 		Hybrid -> Cipher
 		PubKey -> MacOnlyCipher
+	params = Param "--decrypt" : getGpgDecParams c
 
 type EncKey = Key -> Key
 
@@ -179,24 +183,24 @@
 {- Runs a Feeder action, that generates content that is symmetrically
  - encrypted with the Cipher (unless it is empty, in which case
  - public-key encryption is used) using the given gpg options, and then
- - read by the Reader action.  Note: For public-key encryption,
- - recipients MUST be included in 'params' (for instance using
- - 'getGpgEncParams'). -}
-encrypt :: (MonadIO m, MonadMask m) => Gpg.GpgCmd -> [CommandParam] -> Cipher -> Feeder -> Reader m a -> m a
-encrypt cmd params cipher = case cipher of
+ - read by the Reader action. -}
+encrypt :: (MonadIO m, MonadMask m, LensGpgEncParams c) => Gpg.GpgCmd -> c -> Cipher -> Feeder -> Reader m a -> m a
+encrypt cmd c cipher = case cipher of
 	Cipher{} -> Gpg.feedRead cmd (params ++ Gpg.stdEncryptionParams True) $
 			cipherPassphrase cipher
 	MacOnlyCipher{} -> Gpg.pipeLazy cmd $ params ++ Gpg.stdEncryptionParams False
+  where
+	params = getGpgEncParams c
 
 {- Runs a Feeder action, that generates content that is decrypted with the
  - Cipher (or using a private key if the Cipher is empty), and read by the
  - Reader action. -}
-decrypt :: (MonadIO m, MonadMask m) => Gpg.GpgCmd -> [CommandParam] -> Cipher -> Feeder -> Reader m a -> m a
-decrypt cmd params cipher = case cipher of
-	Cipher{} -> Gpg.feedRead cmd params' $ cipherPassphrase cipher
-	MacOnlyCipher{} -> Gpg.pipeLazy cmd params'
+decrypt :: (MonadIO m, MonadMask m, LensGpgEncParams c) => Gpg.GpgCmd -> c -> Cipher -> Feeder -> Reader m a -> m a
+decrypt cmd c cipher = case cipher of
+	Cipher{} -> Gpg.feedRead cmd params $ cipherPassphrase cipher
+	MacOnlyCipher{} -> Gpg.pipeLazy cmd params
   where
-	params' = Param "--decrypt" : params
+	params = Param "--decrypt" : getGpgDecParams c
 
 macWithCipher :: Mac -> Cipher -> String -> String
 macWithCipher mac c = macWithCipher' mac (cipherMac c)
@@ -210,7 +214,11 @@
 	known_good = "46b4ec586117154dacd49d664e5d63fdc88efb51"
 
 class LensGpgEncParams a where
-	{- Parameters for encrypting. -}
+	{- Base parameters for encrypting. Does not include specification
+	 - of recipient keys. -}
+	getGpgEncParamsBase :: a -> [CommandParam]
+	{- Parameters for encrypting. When the remote is configured to use
+	 - public-key encryption, includes specification of recipient keys. -}
 	getGpgEncParams :: a -> [CommandParam]
 	{- Parameters for decrypting. -}
 	getGpgDecParams :: a -> [CommandParam]
@@ -218,22 +226,18 @@
 {- Extract the GnuPG options from a pair of a Remote Config and a Remote
  - Git Config. -}
 instance LensGpgEncParams (RemoteConfig, RemoteGitConfig) where
-	getGpgEncParams (c,gc) = map Param (remoteAnnexGnupgOptions gc) ++ getGpgEncParams c
-	getGpgDecParams (c,gc) = map Param (remoteAnnexGnupgDecryptOptions gc) ++ getGpgDecParams c
-
-{- Extract the GnuPG options from a Remote Config, ignoring any
- - git config settings. (Which is ok if the remote is just being set up 
- - and so doesn't have any.) -}
-instance LensGpgEncParams RemoteConfig where
- 	{- If the remote is configured to use public-key encryption,
-	 - look up the recipient keys and add them to the option list. -}
-	getGpgEncParams c = case M.lookup "encryption" c of
-		Just "pubkey" -> Gpg.pkEncTo $ maybe [] (split ",") $ M.lookup "cipherkeys" c
-		Just "sharedpubkey" -> Gpg.pkEncTo $ maybe [] (split ",") $ M.lookup "pubkeys" c
-		_ -> []
-	getGpgDecParams _ = []
+	getGpgEncParamsBase (_c,gc) = map Param (remoteAnnexGnupgOptions gc)
+	getGpgEncParams (c,gc) = getGpgEncParamsBase (c,gc) ++
+ 		{- When the remote is configured to use public-key encryption,
+		 - look up the recipient keys and add them to the option list. -}
+		case M.lookup "encryption" c of
+			Just "pubkey" -> Gpg.pkEncTo $ maybe [] (split ",") $ M.lookup "cipherkeys" c
+			Just "sharedpubkey" -> Gpg.pkEncTo $ maybe [] (split ",") $ M.lookup "pubkeys" c
+			_ -> []
+	getGpgDecParams (_c,gc) = map Param (remoteAnnexGnupgDecryptOptions gc)
 
 {- Extract the GnuPG options from a Remote. -}
 instance LensGpgEncParams (RemoteA a) where
+	getGpgEncParamsBase r = getGpgEncParamsBase (config r, gitconfig r)
 	getGpgEncParams r = getGpgEncParams (config r, gitconfig r)
 	getGpgDecParams r = getGpgDecParams (config r, gitconfig r)
diff --git a/Database/Keys.hs b/Database/Keys.hs
--- a/Database/Keys.hs
+++ b/Database/Keys.hs
@@ -9,6 +9,7 @@
 
 module Database.Keys (
 	DbHandle,
+	closeDb,
 	addAssociatedFile,
 	getAssociatedFiles,
 	getAssociatedKey,
@@ -136,6 +137,16 @@
 	permerr e = case createdb of
 		False -> return DbUnavailable
 		True -> throwM e
+
+{- Closes the database if it was open. Any writes will be flushed to it.
+ -
+ - This does not normally need to be called; the database will auto-close
+ - when the handle is garbage collected. However, this can be used to
+ - force a re-read of the database, in case another process has written
+ - data to it.
+ -}
+closeDb :: Annex ()
+closeDb = liftIO . closeDbHandle =<< getDbHandle
 
 addAssociatedFile :: Key -> TopFilePath -> Annex ()
 addAssociatedFile k f = runWriterIO $ SQL.addAssociatedFile (toIKey k) f
diff --git a/Database/Keys/Handle.hs b/Database/Keys/Handle.hs
--- a/Database/Keys/Handle.hs
+++ b/Database/Keys/Handle.hs
@@ -11,6 +11,7 @@
 	DbState(..),
 	withDbState,
 	flushDbQueue,
+	closeDbHandle,
 ) where
 
 import qualified Database.Queue as H
@@ -38,8 +39,7 @@
 withDbState
 	:: (MonadIO m, MonadCatch m)
 	=> DbHandle
-	-> (DbState
-	-> m (v, DbState))
+	-> (DbState -> m (v, DbState))
 	-> m v
 withDbState (DbHandle mvar) a = do
 	st <- liftIO $ takeMVar mvar
@@ -55,3 +55,11 @@
   where
 	go (DbOpen qh) = H.flushDbQueue qh
 	go _ = return ()
+
+closeDbHandle :: DbHandle -> IO ()
+closeDbHandle h = withDbState h go
+  where
+	go (DbOpen qh) = do
+		H.closeDbQueue qh
+		return ((), DbClosed)
+	go st = return ((), st)
diff --git a/Git/Index.hs b/Git/Index.hs
--- a/Git/Index.hs
+++ b/Git/Index.hs
@@ -14,6 +14,20 @@
 indexEnv :: String
 indexEnv = "GIT_INDEX_FILE"
 
+{- Gets value to set GIT_INDEX_FILE to. Input should be absolute path,
+ - or relative to the CWD.
+ -
+ - When relative, GIT_INDEX_FILE is interpreted by git as being 
+ - relative to the top of the work tree of the git repository,
+ - not to the CWD. Worse, other environment variables (GIT_WORK_TREE)
+ - or git options (--work-tree) or configuration (core.worktree)
+ - can change what the relative path is interpreted relative to.
+ -
+ - So, an absolute path is the only safe option for this to return.
+ -}
+indexEnvVal :: FilePath -> IO String
+indexEnvVal = absPath
+
 {- Forces git to use the specified index file.
  -
  - Returns an action that will reset back to the default
@@ -21,10 +35,11 @@
  -
  - Warning: Not thread safe.
  -}
-override :: FilePath -> IO (IO ())
-override index = do
+override :: FilePath -> Repo -> IO (IO ())
+override index _r = do
 	res <- getEnv var
-	setEnv var index True
+	val <- indexEnvVal index
+	setEnv var val True
 	return $ reset res
   where
 	var = "GIT_INDEX_FILE"
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
--- a/INSTALL
+++ /dev/null
@@ -1,35 +0,0 @@
-## Pick your OS
-
-[[!table format=dsv header=yes data="""
-detailed instructions             | quick install
-[[OSX]]                           | [download git-annex.app](https://downloads.kitenet.net/git-annex/OSX/current/)
-&nbsp;&nbsp;[[OSX/Homebrew]]      | `brew install git-annex`
-[[Android]]                       | [download git-annex.apk](https://downloads.kitenet.net/git-annex/android/current/) **beta**
-[[Linux|linux_standalone]]        | [download prebuilt linux tarball](https://downloads.kitenet.net/git-annex/linux/current/)
-&nbsp;&nbsp;[[Debian]]            | `apt-get install git-annex`
-&nbsp;&nbsp;[[Ubuntu]]            | `apt-get install git-annex`
-&nbsp;&nbsp;[[Fedora]]            | `yum install git-annex`
-&nbsp;&nbsp;[[FreeBSD]]           | `pkg install hs-git-annex`
-&nbsp;&nbsp;[[ArchLinux]]         | `pacman -S git-annex`
-&nbsp;&nbsp;[[NixOS]]             | `nix-env -i git-annex`
-&nbsp;&nbsp;[[Gentoo]]            | `emerge git-annex`
-&nbsp;&nbsp;[[Void]]            | `xbps-install git-annex`
-&nbsp;&nbsp;[[ScientificLinux5]]  |
-&nbsp;&nbsp;[[openSUSE]]          | 
-&nbsp;&nbsp;[[Docker]]            | 
-[[Windows]]                       | [download installer](https://downloads.kitenet.net/git-annex/windows/current/) **beta**
-"""]]
-
-All the download links above use https for security. For added security, see
-[[verifying_downloads]].
-
-## Building it yourself
-
-git-annex is [[Free Software|license]], written in [Haskell](http://www.haskell.org/).
-Experienced users should not find it too hard to build and install
-it [[from source|fromsource]].
-
-## See also
-
- * [[autobuild overview|builds]]
- * [[upgrades]]
diff --git a/Logs/Line.hs b/Logs/Line.hs
new file mode 100644
--- /dev/null
+++ b/Logs/Line.hs
@@ -0,0 +1,51 @@
+{- 
+
+The Glasgow Haskell Compiler License
+
+Copyright 2001, The University Court of the University of Glasgow.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+- Neither name of the University nor the names of its contributors may be
+used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
+GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+-}
+
+module Logs.Line where
+
+-- This is the same as Data.List.lines, with \r added.
+-- This works around some versions of git-annex which wrote \r
+-- into git-annex branch files on Windows. Those \r's sometimes
+-- accumulated over time, so a single line could end with multiple \r's
+-- before the \n.
+splitLines :: String -> [String]
+splitLines "" =  []
+splitLines s =  cons (case break (\c -> c == '\n' || c == '\r') s of
+	(l, s') -> (l, case s' of
+		[]      -> []
+		_:s''   -> splitLines s''))
+  where
+	cons ~(h, t) = h : t
diff --git a/Logs/MapLog.hs b/Logs/MapLog.hs
--- a/Logs/MapLog.hs
+++ b/Logs/MapLog.hs
@@ -18,6 +18,7 @@
 
 import Common
 import Logs.TimeStamp
+import Logs.Line
 
 data TimeStamp = Unknown | Date POSIXTime
 	deriving (Eq, Ord, Show)
@@ -38,7 +39,7 @@
 		unwords ["0", fieldshower f, valueshower v]
 
 parseMapLog :: Ord f => (String -> Maybe f) -> (String -> Maybe v) -> String -> MapLog f v
-parseMapLog fieldparser valueparser = M.fromListWith best . mapMaybe parse . lines
+parseMapLog fieldparser valueparser = M.fromListWith best . mapMaybe parse . splitLines
   where
 	parse line = do
 		let (ts, rest) = splitword line
diff --git a/Logs/Presence/Pure.hs b/Logs/Presence/Pure.hs
--- a/Logs/Presence/Pure.hs
+++ b/Logs/Presence/Pure.hs
@@ -12,6 +12,7 @@
 
 import Annex.Common
 import Logs.TimeStamp
+import Logs.Line
 import Utility.QuickCheck
 
 data LogLine = LogLine {
@@ -25,7 +26,7 @@
 
 {- Parses a log file. Unparseable lines are ignored. -}
 parseLog :: String -> [LogLine]
-parseLog = mapMaybe parseline . lines
+parseLog = mapMaybe parseline . splitLines
   where
 	parseline l = LogLine
 		<$> parsePOSIXTime d
@@ -98,7 +99,8 @@
 	arbitrary = LogLine
 		<$> arbitrary
 		<*> elements [minBound..maxBound]
-		<*> arbitrary `suchThat` ('\n' `notElem`)
+		<*> arbitrary `suchThat`
+			(\c -> '\n' `notElem` c && '\r' `notElem` c)
 
 prop_parse_show_log :: [LogLine] -> Bool
 prop_parse_show_log l = parseLog (showLog l) == l
diff --git a/Logs/SingleValue.hs b/Logs/SingleValue.hs
--- a/Logs/SingleValue.hs
+++ b/Logs/SingleValue.hs
@@ -16,6 +16,7 @@
 import Annex.Common
 import qualified Annex.Branch
 import Logs.TimeStamp
+import Logs.Line
 
 import qualified Data.Set as S
 import Data.Time.Clock.POSIX
@@ -37,7 +38,7 @@
 	showline (LogEntry t v) = unwords [show t, serialize v]
 
 parseLog :: (Ord v, SingleValueSerializable v) => String -> Log v
-parseLog = S.fromList . mapMaybe parse . lines
+parseLog = S.fromList . mapMaybe parse . splitLines
   where
 	parse line = do
 		let (ts, s) = splitword line
diff --git a/Logs/Transitions.hs b/Logs/Transitions.hs
--- a/Logs/Transitions.hs
+++ b/Logs/Transitions.hs
@@ -19,6 +19,7 @@
 
 import Annex.Common
 import Logs.TimeStamp
+import Logs.Line
 
 transitionsLog :: FilePath
 transitionsLog = "transitions.log"
@@ -50,7 +51,7 @@
 
 {- If the log contains new transitions we don't support, returns Nothing. -}
 parseTransitions :: String -> Maybe Transitions
-parseTransitions = check . map parseTransitionLine . lines
+parseTransitions = check . map parseTransitionLine . splitLines
   where
 	check l
 		| all isJust l = Just $ S.fromList $ catMaybes l
@@ -77,7 +78,7 @@
 combineTransitions = S.unions
 
 transitionList :: Transitions -> [Transition]
-transitionList = map transition . S.elems
+transitionList = nub . map transition . S.elems
 
 {- Typically ran with Annex.Branch.change, but we can't import Annex.Branch
  - here since it depends on this module. -}
diff --git a/Logs/UUIDBased.hs b/Logs/UUIDBased.hs
--- a/Logs/UUIDBased.hs
+++ b/Logs/UUIDBased.hs
@@ -35,6 +35,7 @@
 import Types.UUID
 import Logs.MapLog
 import Logs.TimeStamp
+import Logs.Line
 
 type Log v = MapLog UUID v
 
@@ -50,7 +51,7 @@
 parseLog = parseLogWithUUID . const
 
 parseLogWithUUID :: (UUID -> String -> Maybe a) -> String -> Log a
-parseLogWithUUID parser = M.fromListWith best . mapMaybe parse . lines
+parseLogWithUUID parser = M.fromListWith best . mapMaybe parse . splitLines
   where
 	parse line
 		-- This is a workaround for a bug that caused
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@
 
 build: $(all)
 
-Build/SysConfig.hs: configure.hs Build/TestConfig.hs Build/Configure.hs
+Build/SysConfig.hs: Build/TestConfig.hs Build/Configure.hs
 	if [ "$(BUILDER)" = ./Setup ]; then ghc --make Setup; fi
 	if [ "$(BUILDER)" = stack ]; then \
 		$(BUILDER) build $(BUILDEROPTIONS); \
@@ -86,15 +86,19 @@
 	mkdir -p man
 
 docs: mans
-	LC_ALL=C TZ=UTC $(IKIWIKI) doc html -v --wikiname git-annex \
-		--plugin=goodstuff \
-		--no-usedirs --disable-plugin=openid --plugin=sidebar \
-		--underlaydir=/dev/null --set deterministic=1 \
-		--disable-plugin=shortcut --disable-plugin=smiley \
-		--plugin=comments --set comments_pagespec="*" \
-		--exclude='news/.*' --exclude='design/assistant/blog/*' \
-		--exclude='bugs/*' --exclude='todo/*' --exclude='forum/*' \
-		--exclude='users/*' --exclude='devblog/*' --exclude='thanks'
+	@if [ ! -e doc/index.mdwn ]; then \
+		echo "** doc/index.mdwn does not exist, skipping building docs (clone git-annex source to enable full docs build)" >&2; \
+	else \
+		LC_ALL=C TZ=UTC $(IKIWIKI) doc html -v --wikiname git-annex \
+			--plugin=goodstuff \
+			--no-usedirs --disable-plugin=openid --plugin=sidebar \
+			--underlaydir=/dev/null --set deterministic=1 \
+			--disable-plugin=shortcut --disable-plugin=smiley \
+			--plugin=comments --set comments_pagespec="*" \
+			--exclude='news/.*' --exclude='design/assistant/blog/*' \
+			--exclude='bugs/*' --exclude='todo/*' --exclude='forum/*' \
+			--exclude='users/*' --exclude='devblog/*' --exclude='thanks'; \
+	fi
 
 clean:
 	if [ "$(BUILDER)" != ./Setup ] && [ "$(BUILDER)" != cabal ]; then $(BUILDER) clean; fi
@@ -118,11 +122,9 @@
 Build/LinuxMkLibs: Build/LinuxMkLibs.hs
 	$(GHC) --make $@ -Wall -fno-warn-tabs
 
-sdist: clean mans
-	./Build/make-sdist.sh
-
 # Upload to hackage.
-hackage: sdist
+hackage:
+	@cabal sdist
 	@cabal upload dist/*.tar.gz
 
 LINUXSTANDALONE_DEST=tmp/git-annex.linux
@@ -170,7 +172,7 @@
 
 undo-standalone:
 	test -e .git
-	git checkout debian/changelog
+	git checkout debian/changelog CHANGELOG
 	quilt pop -a || true
 
 commit-standalone:
diff --git a/Remote.hs b/Remote.hs
--- a/Remote.hs
+++ b/Remote.hs
@@ -31,6 +31,7 @@
 	byNameOrGroup,
 	byNameOnly,
 	byNameWithUUID,
+	byUUID,
 	byCost,
 	prettyPrintUUIDs,
 	prettyPrintUUIDsDescs,
@@ -97,6 +98,11 @@
 addName desc n
 	| desc == n || null desc = "[" ++ n ++ "]"
 	| otherwise = desc ++ " [" ++ n ++ "]"
+
+byUUID :: UUID -> Annex (Maybe Remote)
+byUUID u = headMaybe . filter matching <$> remoteList
+  where
+	matching r = uuid r == u
 
 {- When a name is specified, looks up the remote matching that name.
  - (Or it can be a UUID.)
diff --git a/Remote/Bup.hs b/Remote/Bup.hs
--- a/Remote/Bup.hs
+++ b/Remote/Bup.hs
@@ -90,14 +90,14 @@
 		{ chunkConfig = NoChunks
 		}
 
-bupSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-bupSetup mu _ c = do
+bupSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+bupSetup mu _ c gc = do
 	u <- maybe (liftIO genUUID) return mu
 
 	-- verify configuration is sane
 	let buprepo = fromMaybe (error "Specify buprepo=") $
 		M.lookup "buprepo" c
-	(c', _encsetup) <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c gc
 
 	-- bup init will create the repository.
 	-- (If the repository already exists, bup init again appears safe.)
@@ -133,12 +133,12 @@
 	showOutput -- make way for bup output
 	let cmd = proc "bup" (toCommand params)
 	quiet <- commandProgressDisabled
-	let runner = if quiet
-			then feedWithQuietOutput
-			else withHandle StdinHandle
-	liftIO $ runner createProcessSuccess cmd $ \h -> do
+	let feeder = \h -> do
 		meteredWrite p h b
 		return True
+	liftIO $ if quiet
+		then feedWithQuietOutput createProcessSuccess cmd feeder
+		else withHandle StdinHandle createProcessSuccess cmd feeder
 
 retrieve :: BupRepo -> Retriever
 retrieve buprepo = byteRetriever $ \k sink -> do
diff --git a/Remote/Ddar.hs b/Remote/Ddar.hs
--- a/Remote/Ddar.hs
+++ b/Remote/Ddar.hs
@@ -82,14 +82,14 @@
 		{ chunkConfig = NoChunks
 		}
 
-ddarSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-ddarSetup mu _ c = do
+ddarSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+ddarSetup mu _ c gc = do
 	u <- maybe (liftIO genUUID) return mu
 
 	-- verify configuration is sane
 	let ddarrepo = fromMaybe (error "Specify ddarrepo=") $
 		M.lookup "ddarrepo" c
-	(c', _encsetup) <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c gc
 
 	-- The ddarrepo is stored in git config, as well as this repo's
 	-- persistant state, so it can vary between hosts.
diff --git a/Remote/Directory.hs b/Remote/Directory.hs
--- a/Remote/Directory.hs
+++ b/Remote/Directory.hs
@@ -77,8 +77,8 @@
   where
 	dir = fromMaybe (error "missing directory") $ remoteAnnexDirectory gc
 
-directorySetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-directorySetup mu _ c = do
+directorySetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+directorySetup mu _ c gc = do
 	u <- maybe (liftIO genUUID) return mu
 	-- verify configuration is sane
 	let dir = fromMaybe (error "Specify directory=") $
@@ -86,7 +86,7 @@
 	absdir <- liftIO $ absPath dir
 	liftIO $ unlessM (doesDirectoryExist absdir) $
 		error $ "Directory does not exist: " ++ absdir
-	(c', _encsetup) <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c gc
 
 	-- The directory is stored in git config, not in this remote's
 	-- persistant state, so it can vary between hosts.
diff --git a/Remote/External.hs b/Remote/External.hs
--- a/Remote/External.hs
+++ b/Remote/External.hs
@@ -59,7 +59,7 @@
 			Nothing
 			Nothing
 	| otherwise = do
-		external <- newExternal externaltype u c
+		external <- newExternal externaltype u c gc
 		Annex.addCleanup (RemoteCleanup u) $ stopExternal external
 		cst <- getCost external r gc
 		avail <- getAvailability external r gc
@@ -108,19 +108,19 @@
 			rmt
 	externaltype = fromMaybe (error "missing externaltype") (remoteAnnexExternalType gc)
 
-externalSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-externalSetup mu _ c = do
+externalSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+externalSetup mu _ c gc = do
 	u <- maybe (liftIO genUUID) return mu
 	let externaltype = fromMaybe (error "Specify externaltype=") $
 		M.lookup "externaltype" c
-	(c', _encsetup) <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c gc
 
 	c'' <- case M.lookup "readonly" c of
 		Just v | isTrue v == Just True -> do
 			setConfig (remoteConfig (fromJust (M.lookup "name" c)) "readonly") (boolConfig True)
 			return c'
 		_ -> do
-			external <- newExternal externaltype u c'
+			external <- newExternal externaltype u c' gc
 			handleRequest external INITREMOTE Nothing $ \resp -> case resp of
 				INITREMOTE_SUCCESS -> Just noop
 				INITREMOTE_FAILURE errmsg -> Just $ error errmsg
@@ -241,13 +241,15 @@
 		send $ VALUE value
 	handleRemoteRequest (SETCREDS setting login password) = do
 		c <- liftIO $ atomically $ readTMVar $ externalConfig external
-		c' <- setRemoteCredPair encryptionAlreadySetup c (credstorage setting) $
+		gc <- liftIO $ atomically $ readTMVar $ externalGitConfig external
+		c' <- setRemoteCredPair encryptionAlreadySetup c gc (credstorage setting) $
 			Just (login, password)
 		void $ liftIO $ atomically $ swapTMVar (externalConfig external) c'
 	handleRemoteRequest (GETCREDS setting) = do
 		c <- liftIO $ atomically $ readTMVar $ externalConfig external
+		gc <- liftIO $ atomically $ readTMVar $ externalGitConfig external
 		creds <- fromMaybe ("", "") <$> 
-			getRemoteCredPair c (credstorage setting)
+			getRemoteCredPair c gc (credstorage setting)
 		send $ CREDS (fst creds) (snd creds)
 	handleRemoteRequest GETUUID = send $
 		VALUE $ fromUUID $ externalUUID external
diff --git a/Remote/External/Types.hs b/Remote/External/Types.hs
--- a/Remote/External/Types.hs
+++ b/Remote/External/Types.hs
@@ -54,15 +54,18 @@
 	, externalLock :: TMVar ExternalLock
 	-- Never left empty.
 	, externalConfig :: TMVar RemoteConfig
+	-- Never left empty.
+	, externalGitConfig :: TMVar RemoteGitConfig
 	}
 
-newExternal :: ExternalType -> UUID -> RemoteConfig -> Annex External
-newExternal externaltype u c = liftIO $ External
+newExternal :: ExternalType -> UUID -> RemoteConfig -> RemoteGitConfig -> Annex External
+newExternal externaltype u c gc = liftIO $ External
 	<$> pure externaltype
 	<*> pure u
 	<*> atomically newEmptyTMVar
 	<*> atomically (newTMVar ExternalLock)
 	<*> atomically (newTMVar c)
+	<*> atomically (newTMVar gc)
 
 type ExternalType = String
 
diff --git a/Remote/GCrypt.hs b/Remote/GCrypt.hs
--- a/Remote/GCrypt.hs
+++ b/Remote/GCrypt.hs
@@ -169,13 +169,13 @@
 unsupportedUrl :: a
 unsupportedUrl = error "using non-ssh remote repo url with gcrypt is not supported"
 
-gCryptSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-gCryptSetup mu _ c = go $ M.lookup "gitrepo" c
+gCryptSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+gCryptSetup mu _ c gc = go $ M.lookup "gitrepo" c
   where
 	remotename = fromJust (M.lookup "name" c)
 	go Nothing = error "Specify gitrepo="
 	go (Just gitrepo) = do
-		(c', _encsetup) <- encryptionSetup c
+		(c', _encsetup) <- encryptionSetup c gc
 		inRepo $ Git.Command.run 
 			[ Param "remote", Param "add"
 			, Param remotename
diff --git a/Remote/Git.hs b/Remote/Git.hs
--- a/Remote/Git.hs
+++ b/Remote/Git.hs
@@ -93,8 +93,8 @@
  - No attempt is made to make the remote be accessible via ssh key setup,
  - etc.
  -}
-gitSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-gitSetup Nothing _ c = do
+gitSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+gitSetup Nothing _ c _ = do
 	let location = fromMaybe (error "Specify location=url") $
 		Url.parseURIRelaxed =<< M.lookup "location" c
 	g <- Annex.gitRepo
@@ -103,7 +103,7 @@
 		[] -> error "could not find existing git remote with specified location"
 		_ -> error "found multiple git remotes with specified location"
 	return (c, u)
-gitSetup (Just u) _ c = do
+gitSetup (Just u) _ c _ = do
 	inRepo $ Git.Command.run
 		[ Param "remote"
 		, Param "add"
@@ -247,7 +247,7 @@
 				-- Cache when http remote is not bare for
 				-- optimisation.
 				unless (Git.Config.isBare r') $
-					setremote "annex-bare" (Git.Config.boolConfig False)
+					setremote setRemoteBare False
 				return r'
 
 	store = observe $ \r' -> do
@@ -274,21 +274,18 @@
 			return r
 	
 	set_ignore msg longmessage = do
-		let k = "annex-ignore"
 		case Git.remoteName r of
 			Nothing -> noop
 			Just n -> do
-				warning $ "Remote " ++ n ++ " " ++ msg ++ "; setting " ++ k
+				warning $ "Remote " ++ n ++ " " ++ msg ++ "; setting annex-ignore"
 				when longmessage $
-					warning $ "This could be a problem with the git-annex installation on the remote. Please make sure that git-annex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex installation, run: git config remote." ++ n ++ "." ++ k ++ " false"
-		setremote k (Git.Config.boolConfig True)
+					warning $ "This could be a problem with the git-annex installation on the remote. Please make sure that git-annex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex installation, run: git annex enableremote " ++ n
+		setremote setRemoteIgnore True
 	
-	setremote k v = case Git.remoteName r of
+	setremote setter v = case Git.remoteName r of
 		Nothing -> noop
-		Just n -> do
-			let k' = "remote." ++ n ++ "." ++ k
-			inRepo $ Git.Command.run [Param "config", Param k', Param v]
-		
+		Just _ -> setter r v
+	
 	handlegcrypt Nothing = return r
 	handlegcrypt (Just _cacheduuid) = do
 		-- Generate UUID from the gcrypt-id
diff --git a/Remote/Glacier.hs b/Remote/Glacier.hs
--- a/Remote/Glacier.hs
+++ b/Remote/Glacier.hs
@@ -78,17 +78,17 @@
 		{ chunkConfig = NoChunks
 		}
 
-glacierSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-glacierSetup mu mcreds c = do
+glacierSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+glacierSetup mu mcreds c gc = do
 	u <- maybe (liftIO genUUID) return mu
-	glacierSetup' (isJust mu) u mcreds c
-glacierSetup' :: Bool -> UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-glacierSetup' enabling u mcreds c = do
-	(c', encsetup) <- encryptionSetup c
-	c'' <- setRemoteCredPair encsetup c' (AWS.creds u) mcreds
+	glacierSetup' (isJust mu) u mcreds c gc
+glacierSetup' :: Bool -> UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+glacierSetup' enabling u mcreds c gc = do
+	(c', encsetup) <- encryptionSetup c gc
+	c'' <- setRemoteCredPair encsetup c' gc (AWS.creds u) mcreds
 	let fullconfig = c'' `M.union` defaults
 	unless enabling $
-		genVault fullconfig u
+		genVault fullconfig gc u
 	gitConfigSpecialRemote u fullconfig "glacier" "true"
 	return (fullconfig, u)
   where
@@ -110,9 +110,10 @@
 	| otherwise = return True
 
 store :: Remote -> Key -> L.ByteString -> MeterUpdate -> Annex Bool
-store r k b p = go =<< glacierEnv c u
+store r k b p = go =<< glacierEnv c gc u
   where
 	c = config r
+	gc = gitconfig r
 	u = uuid r
 	params = glacierParams c
 		[ Param "archive"
@@ -133,9 +134,10 @@
 prepareRetrieve = simplyPrepare . byteRetriever . retrieve
 
 retrieve :: Remote -> Key -> (L.ByteString -> Annex Bool) -> Annex Bool
-retrieve r k sink = go =<< glacierEnv c u
+retrieve r k sink = go =<< glacierEnv c gc u
   where
 	c = config r
+	gc = gitconfig r
 	u = uuid r
 	params = glacierParams c
 		[ Param "archive"
@@ -178,7 +180,7 @@
 checkKey :: Remote -> CheckPresent
 checkKey r k = do
 	showChecking r
-	go =<< glacierEnv (config r) (uuid r)
+	go =<< glacierEnv (config r) (gitconfig r) (uuid r)
   where
 	go Nothing = error "cannot check glacier"
 	go (Just e) = do
@@ -207,10 +209,10 @@
 			]
 
 glacierAction :: Remote -> [CommandParam] -> Annex Bool
-glacierAction r = runGlacier (config r) (uuid r)
+glacierAction r = runGlacier (config r) (gitconfig r) (uuid r)
 
-runGlacier :: RemoteConfig -> UUID -> [CommandParam] -> Annex Bool
-runGlacier c u params = go =<< glacierEnv c u
+runGlacier :: RemoteConfig -> RemoteGitConfig -> UUID -> [CommandParam] -> Annex Bool
+runGlacier c gc u params = go =<< glacierEnv c gc u
   where
 	go Nothing = return False
 	go (Just e) = liftIO $
@@ -223,10 +225,10 @@
 		fromMaybe (error "Missing datacenter configuration")
 			(M.lookup "datacenter" c)
 
-glacierEnv :: RemoteConfig -> UUID -> Annex (Maybe [(String, String)])
-glacierEnv c u = do
+glacierEnv :: RemoteConfig -> RemoteGitConfig -> UUID -> Annex (Maybe [(String, String)])
+glacierEnv c gc u = do
 	liftIO checkSaneGlacierCommand
-	go =<< getRemoteCredPairFor "glacier" c creds
+	go =<< getRemoteCredPairFor "glacier" c gc creds
   where
 	go Nothing = return Nothing
 	go (Just (user, pass)) = do
@@ -245,8 +247,8 @@
   where
 	fileprefix = M.findWithDefault "" "fileprefix" $ config r
 
-genVault :: RemoteConfig -> UUID -> Annex ()
-genVault c u = unlessM (runGlacier c u params) $
+genVault :: RemoteConfig -> RemoteGitConfig -> UUID -> Annex ()
+genVault c gc u = unlessM (runGlacier c gc u params) $
 	error "Failed creating glacier vault."
   where
 	params = 
@@ -266,7 +268,7 @@
  - not supported.
  -}
 jobList :: Remote -> [Key] -> Annex ([Key], [Key])
-jobList r keys = go =<< glacierEnv (config r) (uuid r)
+jobList r keys = go =<< glacierEnv (config r) (gitconfig r) (uuid r)
   where
 	params = [ Param "job", Param "list" ]
 	nada = ([], [])
@@ -286,7 +288,7 @@
 			else do
 				enckeys <- forM keys $ \k ->
 					maybe k (\(_, enck) -> enck k)
-						<$> cipherKey (config r)
+						<$> cipherKey (config r) (gitconfig r)
 				let keymap = M.fromList $ zip enckeys keys
 				let convert = mapMaybe (`M.lookup` keymap)
 				return (convert succeeded, convert failed)
diff --git a/Remote/Helper/Encryptable.hs b/Remote/Helper/Encryptable.hs
--- a/Remote/Helper/Encryptable.hs
+++ b/Remote/Helper/Encryptable.hs
@@ -48,8 +48,8 @@
  - an encryption key, or not encrypt. An encrypted cipher is created, or is
  - updated to be accessible to an additional encryption key. Or the user
  - could opt to use a shared cipher, which is stored unencrypted. -}
-encryptionSetup :: RemoteConfig -> Annex (RemoteConfig, EncryptionIsSetup)
-encryptionSetup c = do
+encryptionSetup :: RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, EncryptionIsSetup)
+encryptionSetup c gc = do
 	cmd <- gpgCmd <$> Annex.getGitConfig
 	maybe (genCipher cmd) (updateCipher cmd) (extractCipher c)
   where
@@ -63,8 +63,8 @@
 		-- hybrid encryption is the default when a keyid is
 		-- specified but no encryption
 		_ | maybe (M.member "keyid" c) (== "hybrid") encryption ->
-			encsetup $ genEncryptedCipher cmd key Hybrid
-		Just "pubkey" -> encsetup $ genEncryptedCipher cmd key PubKey
+			encsetup $ genEncryptedCipher cmd (c, gc) key Hybrid
+		Just "pubkey" -> encsetup $ genEncryptedCipher cmd (c, gc) key PubKey
 		Just "sharedpubkey" -> encsetup $ genSharedPubKeyCipher cmd key
 		_ -> error $ "Specify " ++ intercalate " or "
 			(map ("encryption=" ++)
@@ -78,16 +78,16 @@
 	updateCipher cmd v = case v of
 		SharedCipher _ | maybe True (== "shared") encryption -> return (c', EncryptionIsSetup)
 		EncryptedCipher _ variant _
-			| maybe True (== if variant == Hybrid then "hybrid" else "pubkey") encryption ->
-				use "encryption update" $ updateCipherKeyIds cmd newkeys v
+			| maybe True (== if variant == Hybrid then "hybrid" else "pubkey") encryption -> do
+				use "encryption update" $ updateCipherKeyIds cmd (c, gc) newkeys v
 		SharedPubKeyCipher _ _ ->
-			use "encryption update" $ updateCipherKeyIds cmd newkeys v
+			use "encryption update" $ updateCipherKeyIds cmd (c, gc) newkeys v
 		_ -> cannotchange
 	encsetup a = use "encryption setup" . a =<< highRandomQuality
 	use m a = do
 		showNote m
 		cipher <- liftIO a
-		mapM_ showNote (describeCipher cipher)
+		showNote (describeCipher cipher)
 		return (storeCipher cipher c', EncryptionIsSetup)
 	highRandomQuality = 
 		(&&) (maybe True ( /= "false") $ M.lookup "highRandomQuality" c)
@@ -99,13 +99,13 @@
 		-- remotes (while being backward-compatible).
 		[ "keyid", "keyid+", "keyid-", "highRandomQuality" ]
 
-remoteCipher :: RemoteConfig -> Annex (Maybe Cipher)
-remoteCipher = fmap fst <$$> remoteCipher'
+remoteCipher :: RemoteConfig -> RemoteGitConfig -> Annex (Maybe Cipher)
+remoteCipher c gc = fmap fst <$> remoteCipher' c gc
 
 {- Gets encryption Cipher. The decrypted Ciphers are cached in the Annex
  - state. -}
-remoteCipher' :: RemoteConfig -> Annex (Maybe (Cipher, StorableCipher))
-remoteCipher' c = go $ extractCipher c
+remoteCipher' :: RemoteConfig -> RemoteGitConfig -> Annex (Maybe (Cipher, StorableCipher))
+remoteCipher' c gc = go $ extractCipher c
   where
 	go Nothing = return Nothing
 	go (Just encipher) = do
@@ -114,7 +114,7 @@
 			Just cipher -> return $ Just (cipher, encipher)
 			Nothing -> do
 				cmd <- gpgCmd <$> Annex.getGitConfig
-				cipher <- liftIO $ decryptCipher cmd encipher
+				cipher <- liftIO $ decryptCipher cmd (c, gc) encipher
 				Annex.changeState (\s -> s { Annex.ciphers = M.insert encipher cipher cache })
 				return $ Just (cipher, encipher)
 
@@ -134,8 +134,8 @@
 	| otherwise = False
 
 {- Gets encryption Cipher, and key encryptor. -}
-cipherKey :: RemoteConfig -> Annex (Maybe (Cipher, EncKey))
-cipherKey c = fmap make <$> remoteCipher c
+cipherKey :: RemoteConfig -> RemoteGitConfig -> Annex (Maybe (Cipher, EncKey))
+cipherKey c gc = fmap make <$> remoteCipher c gc
   where
 	make ciphertext = (ciphertext, encryptKey mac ciphertext)
 	mac = fromMaybe defaultMac $ M.lookup "mac" c >>= readMac
@@ -169,24 +169,20 @@
 
 describeEncryption :: RemoteConfig -> String
 describeEncryption c = case extractCipher c of
-	Nothing -> "not encrypted"
-	Just cip -> "encrypted " ++ unwords (map paren (describeCipher cip))
-  where
-	paren s = "(" ++ s ++ ")"
+	Nothing -> "none"
+	Just cip -> nameCipher cip ++ " (" ++ describeCipher cip ++ ")"
 
-describeCipher :: StorableCipher -> [String]
+nameCipher :: StorableCipher -> String
+nameCipher (SharedCipher _) = "shared"
+nameCipher (EncryptedCipher _ PubKey _) = "pubkey"
+nameCipher (EncryptedCipher _ Hybrid _) = "hybrid"
+nameCipher (SharedPubKeyCipher _ _) = "sharedpubkey"
+
+describeCipher :: StorableCipher -> String
 describeCipher c = case c of
-	(SharedCipher _) -> ["encryption key stored in git repository"]
-	(EncryptedCipher _ v ks) -> catMaybes
-		[ Just $ showkeys ks
-		, case v of
-			PubKey -> Nothing
-			Hybrid -> Just "hybrid mode"
-		]
-	(SharedPubKeyCipher _ ks) ->
-		[ showkeys ks
-		, "shared cipher"
-		]
+	(SharedCipher _) -> "encryption key stored in git repository"
+	(EncryptedCipher _ _ ks) -> showkeys ks
+	(SharedPubKeyCipher _ ks) -> showkeys ks
   where
 	showkeys (KeyIds { keyIds = ks }) = "to gpg keys: " ++ unwords ks
 
diff --git a/Remote/Helper/Special.hs b/Remote/Helper/Special.hs
--- a/Remote/Helper/Special.hs
+++ b/Remote/Helper/Special.hs
@@ -176,10 +176,8 @@
 			then whereisKey baser
 			else Nothing
 		}
-	cip = cipherKey c
+	cip = cipherKey c (gitconfig baser)
 	isencrypted = isJust (extractCipher c)
-	gpgencopts = getGpgEncParams encr
-	gpgdecopts = getGpgDecParams encr
 
 	safely a = catchNonAsync a (\e -> warning (show e) >> return False)
 
@@ -201,7 +199,7 @@
 	storechunk (Just (cipher, enck)) storer k content p = do
 		cmd <- gpgCmd <$> Annex.getGitConfig
 		withBytes content $ \b ->
-			encrypt cmd gpgencopts cipher (feedBytes b) $
+			encrypt cmd encr cipher (feedBytes b) $
 				readBytes $ \encb ->
 					storer (enck k) (ByteContent encb) p
 
@@ -211,7 +209,7 @@
 	  where
 		go (Just retriever) = displayprogress p k $ \p' ->
 			retrieveChunks retriever (uuid baser) chunkconfig
-				enck k dest p' (sink dest enc gpgdecopts)
+				enck k dest p' (sink dest enc encr)
 		go Nothing = return False
 		enck = maybe id snd enc
 
@@ -244,26 +242,27 @@
  - into place. (And it may even already be in the right place..)
  -}
 sink
-	:: FilePath
+	:: LensGpgEncParams c
+	=> FilePath
 	-> Maybe (Cipher, EncKey)
-	-> [CommandParam]
+	-> c
 	-> Maybe Handle
 	-> Maybe MeterUpdate
 	-> ContentSource
 	-> Annex Bool
-sink dest enc gpgdecopts mh mp content = do
+sink dest enc c mh mp content = do
 	case (enc, mh, content) of
 		(Nothing, Nothing, FileContent f)
 			| f == dest -> noop
 			| otherwise -> liftIO $ moveFile f dest
 		(Just (cipher, _), _, ByteContent b) -> do
 			cmd <- gpgCmd <$> Annex.getGitConfig
-			decrypt cmd gpgdecopts cipher (feedBytes b) $
+			decrypt cmd c cipher (feedBytes b) $
 				readBytes write
 		(Just (cipher, _), _, FileContent f) -> do
 			cmd <- gpgCmd <$> Annex.getGitConfig
 			withBytes content $ \b ->
-				decrypt cmd gpgdecopts cipher (feedBytes b) $
+				decrypt cmd c cipher (feedBytes b) $
 					readBytes write
 			liftIO $ nukeFile f
 		(Nothing, _, FileContent f) -> do
diff --git a/Remote/Hook.hs b/Remote/Hook.hs
--- a/Remote/Hook.hs
+++ b/Remote/Hook.hs
@@ -70,12 +70,12 @@
   where
 	hooktype = fromMaybe (error "missing hooktype") $ remoteAnnexHookType gc
 
-hookSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-hookSetup mu _ c = do
+hookSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+hookSetup mu _ c gc = do
 	u <- maybe (liftIO genUUID) return mu
 	let hooktype = fromMaybe (error "Specify hooktype=") $
 		M.lookup "hooktype" c
-	(c', _encsetup) <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c gc
 	gitConfigSpecialRemote u c' "hooktype" hooktype
 	return (c', u)
 
diff --git a/Remote/Rsync.hs b/Remote/Rsync.hs
--- a/Remote/Rsync.hs
+++ b/Remote/Rsync.hs
@@ -137,13 +137,13 @@
 	loginopt = maybe [] (\l -> ["-l",l]) login
 	fromNull as xs = if null xs then as else xs
 
-rsyncSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-rsyncSetup mu _ c = do
+rsyncSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+rsyncSetup mu _ c gc = do
 	u <- maybe (liftIO genUUID) return mu
 	-- verify configuration is sane
 	let url = fromMaybe (error "Specify rsyncurl=") $
 		M.lookup "rsyncurl" c
-	(c', _encsetup) <- encryptionSetup c
+	(c', _encsetup) <- encryptionSetup c gc
 
 	-- The rsyncurl is stored in git config, not only in this remote's
 	-- persistant state, so it can vary between hosts.
diff --git a/Remote/S3.hs b/Remote/S3.hs
--- a/Remote/S3.hs
+++ b/Remote/S3.hs
@@ -99,12 +99,14 @@
 			, checkUrl = Nothing
 			}
 
-s3Setup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-s3Setup mu mcreds c = do
+s3Setup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+s3Setup mu mcreds c gc = do
 	u <- maybe (liftIO genUUID) return mu
-	s3Setup' (isNothing mu) u mcreds c
-s3Setup' :: Bool -> UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-s3Setup' new u mcreds c = if configIA c then archiveorg else defaulthost
+	s3Setup' (isNothing mu) u mcreds c gc
+s3Setup' :: Bool -> UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+s3Setup' new u mcreds c gc
+	| configIA c = archiveorg
+	| otherwise = defaulthost
   where
 	remotename = fromJust (M.lookup "name" c)
 	defbucket = remotename ++ "-" ++ fromUUID u
@@ -121,16 +123,16 @@
 		return (fullconfig, u)
 
 	defaulthost = do
-		(c', encsetup) <- encryptionSetup c
-		c'' <- setRemoteCredPair encsetup c' (AWS.creds u) mcreds
+		(c', encsetup) <- encryptionSetup c gc
+		c'' <- setRemoteCredPair encsetup c' gc (AWS.creds u) mcreds
 		let fullconfig = c'' `M.union` defaults
 		when new $
-			genBucket fullconfig u
+			genBucket fullconfig gc u
 		use fullconfig
 
 	archiveorg = do
 		showNote "Internet Archive mode"
-		c' <- setRemoteCredPair noEncryptionUsed c (AWS.creds u) mcreds
+		c' <- setRemoteCredPair noEncryptionUsed c gc (AWS.creds u) mcreds
 		-- Ensure user enters a valid bucket name, since
 		-- this determines the name of the archive.org item.
 		let validbucket = replace " " "-" $
@@ -146,7 +148,7 @@
 			-- special constraints on key names
 			M.insert "mungekeys" "ia" defaults
 		info <- extractS3Info archiveconfig
-		withS3Handle archiveconfig u $
+		withS3Handle archiveconfig gc u $
 			writeUUIDFile archiveconfig u info
 		use archiveconfig
 
@@ -154,12 +156,12 @@
 -- http connections to be reused across calls to the helper.
 prepareS3Handle :: Remote -> (S3Handle -> helper) -> Preparer helper
 prepareS3Handle r = resourcePrepare $ const $
-	withS3Handle (config r) (uuid r)
+	withS3Handle (config r) (gitconfig r) (uuid r)
 
 -- Allows for read-only actions, which can be run without a S3Handle.
 prepareS3HandleMaybe :: Remote -> (Maybe S3Handle -> helper) -> Preparer helper
 prepareS3HandleMaybe r = resourcePrepare $ const $
-	withS3HandleMaybe (config r) (uuid r)
+	withS3HandleMaybe (config r) (gitconfig r) (uuid r)
 
 store :: Remote -> S3Info -> S3Handle -> Storer
 store _r info h = fileStorer $ \k f p -> do
@@ -311,11 +313,11 @@
  - so first check if the UUID file already exists and we can skip doing
  - anything.
  -}
-genBucket :: RemoteConfig -> UUID -> Annex ()
-genBucket c u = do
+genBucket :: RemoteConfig -> RemoteGitConfig -> UUID -> Annex ()
+genBucket c gc u = do
 	showAction "checking bucket"
 	info <- extractS3Info c
-	withS3Handle c u $ \h ->
+	withS3Handle c gc u $ \h ->
 		go info h =<< checkUUIDFile c u info h
   where
 	go _ _ (Right True) = noop
@@ -408,16 +410,16 @@
 	-> ResourceT IO a
 sendS3Handle' h r = AWS.pureAws (hawscfg h) (hs3cfg h) (hmanager h) r
 
-withS3Handle :: RemoteConfig -> UUID -> (S3Handle -> Annex a) -> Annex a
-withS3Handle c u a = withS3HandleMaybe c u $ \mh -> case mh of
+withS3Handle :: RemoteConfig -> RemoteGitConfig -> UUID -> (S3Handle -> Annex a) -> Annex a
+withS3Handle c gc u a = withS3HandleMaybe c gc u $ \mh -> case mh of
 	Just h -> a h
 	Nothing -> do
 		warnMissingCredPairFor "S3" (AWS.creds u)
 		error "No S3 credentials configured"
 
-withS3HandleMaybe :: RemoteConfig -> UUID -> (Maybe S3Handle -> Annex a) -> Annex a
-withS3HandleMaybe c u a = do
-	mcreds <- getRemoteCredPair c (AWS.creds u)
+withS3HandleMaybe :: RemoteConfig -> RemoteGitConfig -> UUID -> (Maybe S3Handle -> Annex a) -> Annex a
+withS3HandleMaybe c gc u a = do
+	mcreds <- getRemoteCredPair c gc (AWS.creds u)
 	case mcreds of
 		Just creds -> do
 			awscreds <- liftIO $ genCredentials creds
diff --git a/Remote/Tahoe.hs b/Remote/Tahoe.hs
--- a/Remote/Tahoe.hs
+++ b/Remote/Tahoe.hs
@@ -91,8 +91,8 @@
 		, checkUrl = Nothing
 		}
 
-tahoeSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-tahoeSetup mu _ c = do
+tahoeSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+tahoeSetup mu _ c _ = do
 	furl <- fromMaybe (fromMaybe missingfurl $ M.lookup furlk c)
 		<$> liftIO (getEnv "TAHOE_FURL")
 	u <- maybe (liftIO genUUID) return mu
diff --git a/Remote/WebDAV.hs b/Remote/WebDAV.hs
--- a/Remote/WebDAV.hs
+++ b/Remote/WebDAV.hs
@@ -81,17 +81,17 @@
 			}
 		chunkconfig = getChunkConfig c
 
-webdavSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> Annex (RemoteConfig, UUID)
-webdavSetup mu mcreds c = do
+webdavSetup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> Annex (RemoteConfig, UUID)
+webdavSetup mu mcreds c gc = do
 	u <- maybe (liftIO genUUID) return mu
 	url <- case M.lookup "url" c of
 		Nothing -> error "Specify url="
 		Just url -> return url
-	(c', encsetup) <- encryptionSetup c
-	creds <- maybe (getCreds c' u) (return . Just) mcreds
+	(c', encsetup) <- encryptionSetup c gc
+	creds <- maybe (getCreds c' gc u) (return . Just) mcreds
 	testDav url creds
 	gitConfigSpecialRemote u c' "webdav" "true"
-	c'' <- setRemoteCredPair encsetup c' (davCreds u) creds
+	c'' <- setRemoteCredPair encsetup c' gc (davCreds u) creds
 	return (c'', u)
 
 -- Opens a http connection to the DAV server, which will be reused
@@ -234,8 +234,8 @@
 			inLocation d mkCol
 		)
 
-getCreds :: RemoteConfig -> UUID -> Annex (Maybe CredPair)
-getCreds c u = getRemoteCredPairFor "webdav" c (davCreds u)
+getCreds :: RemoteConfig -> RemoteGitConfig -> UUID -> Annex (Maybe CredPair)
+getCreds c gc u = getRemoteCredPairFor "webdav" c gc (davCreds u)
 
 davCreds :: UUID -> CredPairStorage
 davCreds u = CredPairStorage
@@ -291,7 +291,7 @@
 
 withDAVHandle :: Remote -> (Maybe DavHandle -> Annex a) -> Annex a
 withDAVHandle r a = do
-	mcreds <- getCreds (config r) (uuid r)
+	mcreds <- getCreds (config r) (gitconfig r) (uuid r)
 	case (mcreds, configUrl r) of
 		(Just (user, pass), Just baseurl) ->
 			withDAVContext baseurl $ \ctx ->
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -19,6 +19,7 @@
 
 import qualified Build.DesktopFile as DesktopFile
 import qualified Build.Configure as Configure
+import Utility.SafeCommand
 
 main :: IO ()
 main = defaultMainWithHooks simpleUserHooks
@@ -44,24 +45,19 @@
   where
 	dstBinDir = bindir $ absoluteInstallDirs pkg lbi copyDest
 
-{- See http://www.haskell.org/haskellwiki/Cabal/Developer-FAQ#Installing_manpages
- -
- - Man pages are provided prebuilt in the tarball in cabal,
- - but may not be available otherwise, in which case, skip installing them.
- -}
+{- See http://www.haskell.org/haskellwiki/Cabal/Developer-FAQ#Installing_manpages -}
 installManpages :: CopyDest -> Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()
 installManpages copyDest verbosity pkg lbi =
 	installOrdinaryFiles verbosity dstManDir =<< srcManpages
   where
 	dstManDir   = mandir (absoluteInstallDirs pkg lbi copyDest) </> "man1"
 	srcManpages = do
-		havemans <- doesDirectoryExist srcManDir
+		havemans <- boolSystem "make" [Param "mans"]
 		if havemans
-			then zip (repeat srcManDir)
+			then zip (repeat "man")
 				. filter (".1" `isSuffixOf`)
-				<$> getDirectoryContents srcManDir
+				<$> getDirectoryContents "man"
 			else return []
-	srcManDir   = "man"
 
 installDesktopFile :: CopyDest -> Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()
 installDesktopFile copyDest _verbosity pkg lbi
diff --git a/Test.hs b/Test.hs
--- a/Test.hs
+++ b/Test.hs
@@ -50,6 +50,7 @@
 import qualified Git.FilePath
 import qualified Annex.Locations
 import qualified Types.KeySource
+import qualified Types.Remote
 import qualified Types.Backend
 import qualified Types.TrustLevel
 import qualified Types
@@ -1064,7 +1065,10 @@
 				git_annex "sync" [] @? "sync failed in r2"
 				-- need v6 to use adjust
 				git_annex "upgrade" [] @? "upgrade failed"
-				git_annex "adjust" ["--unlock"] @? "adjust failed"
+				-- We might be in an adjusted branch
+				-- already, when eg on a crippled
+				-- filesystem. So, --force it.
+				git_annex "adjust" ["--unlock", "--force"] @? "adjust failed"
 			pair r1 r2
 			forM_ [r1,r2,r1] $ \r -> indir r $
 				git_annex "sync" [] @? "sync failed"
@@ -1522,6 +1526,7 @@
 	testscheme "pubkey"
   where
 	gpgcmd = Utility.Gpg.mkGpgCmd Nothing
+	encparams = (mempty :: Types.Remote.RemoteConfig, def :: Types.RemoteGitConfig)
 	testscheme scheme = intmpclonerepo $ whenM (Utility.Path.inPath (Utility.Gpg.unGpgCmd gpgcmd)) $ do
 		Utility.Gpg.testTestHarness gpgcmd 
 			@? "test harness self-test failed"
@@ -1577,7 +1582,7 @@
 		checkScheme Types.Crypto.Hybrid = scheme == "hybrid"
 		checkScheme Types.Crypto.PubKey = scheme == "pubkey"
 		checkKeys cip mvariant = do
-			cipher <- Crypto.decryptCipher gpgcmd cip
+			cipher <- Crypto.decryptCipher gpgcmd encparams cip
 			files <- filterM doesFileExist $
 				map ("dir" </>) $ concatMap (key2files cipher) keys
 			return (not $ null files) <&&> allM (checkFile mvariant) files
diff --git a/Types/Remote.hs b/Types/Remote.hs
--- a/Types/Remote.hs
+++ b/Types/Remote.hs
@@ -50,7 +50,7 @@
 	-- generates a remote of this type
 	generate :: Git.Repo -> UUID -> RemoteConfig -> RemoteGitConfig -> a (Maybe (RemoteA a)),
 	-- initializes or changes a remote
-	setup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> a (RemoteConfig, UUID)
+	setup :: Maybe UUID -> Maybe CredPair -> RemoteConfig -> RemoteGitConfig -> a (RemoteConfig, UUID)
 }
 
 instance Eq (RemoteTypeA a) where
diff --git a/Utility/Directory.hs b/Utility/Directory.hs
--- a/Utility/Directory.hs
+++ b/Utility/Directory.hs
@@ -6,15 +6,14 @@
  -}
 
 {-# LANGUAGE CPP #-}
-{-# OPTIONS_GHC -fno-warn-tabs -w #-}
+{-# OPTIONS_GHC -fno-warn-tabs #-}
 
 module Utility.Directory (
 	module Utility.Directory,
-	module System.Directory
+	module Utility.SystemDirectory
 ) where
 
 import System.IO.Error
-import System.Directory hiding (isSymbolicLink)
 import Control.Monad
 import System.FilePath
 import Control.Applicative
@@ -31,6 +30,7 @@
 import Control.Monad.IfElse
 #endif
 
+import Utility.SystemDirectory
 import Utility.PosixFiles
 import Utility.Tmp
 import Utility.Exception
diff --git a/Utility/SystemDirectory.hs b/Utility/SystemDirectory.hs
new file mode 100644
--- /dev/null
+++ b/Utility/SystemDirectory.hs
@@ -0,0 +1,16 @@
+{- System.Directory without its conflicting isSymbolicLink
+ -
+ - Copyright 2016 Joey Hess <id@joeyh.name>
+ -
+ - License: BSD-2-clause
+ -}
+
+-- Disable warnings because only some versions of System.Directory export
+-- isSymbolicLink.
+{-# OPTIONS_GHC -fno-warn-tabs -w #-}
+
+module Utility.SystemDirectory (
+	module System.Directory
+) where
+
+import System.Directory hiding (isSymbolicLink)
diff --git a/Utility/libkqueue.h b/Utility/libkqueue.h
deleted file mode 100644
--- a/Utility/libkqueue.h
+++ /dev/null
@@ -1,3 +0,0 @@
-int init_kqueue();
-void addfds_kqueue(const int kq, const int fdcnt, const int *fdlist);
-signed int waitchange_kqueue(const int kq);
diff --git a/bash-completion.bash b/bash-completion.bash
deleted file mode 100644
--- a/bash-completion.bash
+++ /dev/null
@@ -1,37 +0,0 @@
-# Use git-annex's built-in bash completion
-# This bash completion is generated by the option parser, so it covers all
-# commands, all options, and will never go out of date!
-_git-annex()
-{
-    local cmdline
-    CMDLINE=(--bash-completion-index $COMP_CWORD)
-
-    for arg in ${COMP_WORDS[@]}; do
-        CMDLINE=(${CMDLINE[@]} --bash-completion-word $arg)
-    done
-
-    COMPREPLY=( $(git-annex "${CMDLINE[@]}") )
-}
-
-complete -o bashdefault -o default -o filenames -F _git-annex git-annex
-
-# Called by git's bash completion script when completing "git annex"
-_git_annex() {
-    local cmdline
-    CMDLINE=(--bash-completion-index $(($COMP_CWORD - 1)))
-
-    local seen_git
-    local seen_annex
-    for arg in ${COMP_WORDS[@]}; do
-        if [ "$arg" = git ] && [ -z "$seen_git" ]; then
-		seen_git=1
-		CMDLINE=(${CMDLINE[@]} --bash-completion-word git-annex)
-	elif [ "$arg" = annex ] && [ -z "$seen_annex" ]; then
-		seen_annex=1
-	else
-		CMDLINE=(${CMDLINE[@]} --bash-completion-word $arg)
-	fi
-    done
-
-    COMPREPLY=( $(git-annex "${CMDLINE[@]}") )
-}
diff --git a/build.bat b/build.bat
deleted file mode 100644
--- a/build.bat
+++ /dev/null
@@ -1,1 +0,0 @@
-sh standalone/windows/build-simple.sh
diff --git a/cabal.config b/cabal.config
new file mode 100644
--- /dev/null
+++ b/cabal.config
@@ -0,0 +1,3 @@
+-- Temporary to support building with ghc 8.0.1, until all the library
+-- dependencies get worked out upstream.
+allow-newer: base,time,transformers
diff --git a/configure.hs b/configure.hs
deleted file mode 100644
--- a/configure.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-{- configure program -}
-
-import Build.Configure
-
-main :: IO ()
-main = run tests
diff --git a/debian/NEWS b/debian/NEWS
deleted file mode 100644
--- a/debian/NEWS
+++ /dev/null
@@ -1,44 +0,0 @@
-git-annex (4.20131002) unstable; urgency=low
-
-   The layout of gcrypt repositories has changed, and
-   if you created one you must manually upgrade it.
-   See /usr/share/doc/git-annex/html/upgrades/gcrypt.html
-
- -- Joey Hess <joeyh@debian.org>  Tue, 24 Sep 2013 13:55:23 -0400
-
-git-annex (3.20120123) unstable; urgency=low
-
-  There was a bug in the handling of directory special remotes that
-  could cause partial file contents to be stored in them. If you use
-  a directory special remote, you should fsck it, to avoid potential
-  data loss.
-
-  Example: git annex fsck --from mydirectory
-
- -- Joey Hess <joeyh@debian.org>  Thu, 19 Jan 2012 15:24:23 -0400
-
-git-annex (3.20110624) experimental; urgency=low
-
-  There has been another change to the git-annex data store.
-  Use `git annex upgrade` to migrate your repositories to the new
-  layout. See <http://git-annex.branchable.com/upgrades/> or
-  /usr/share/doc/git-annex/html/upgrades.html
-
-  The significant change this time is that the .git-annex/ directory
-  is gone; instead there is a git-annex branch that is automatically
-  maintained by git-annex, and encapsulates all its state nicely out
-  of your way.
-
-  You should make sure you include the git-annex branch when
-  git pushing and pulling.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 21 Jun 2011 20:18:00 -0400
-
-git-annex (0.20110316) experimental; urgency=low
-
-  This version reorganises the layout of git-annex's files in your repository.
-  There is an upgrade process to convert a repository from the old git-annex
-  to this version. See <http://git-annex.branchable.com/upgrades/> or
-  /usr/share/doc/git-annex/html/upgrades.html
-
- -- Joey Hess <joeyh@debian.org>  Wed, 16 Mar 2011 15:49:15 -0400
diff --git a/debian/cabal-wrapper b/debian/cabal-wrapper
deleted file mode 100644
--- a/debian/cabal-wrapper
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-# It would be more usual to use:
-#   export BUILDER=./Setup
-# But Setup currently has a very bad dependency resolver, and very bad
-# debugging output, and tends to eat all memory and die on small buildds.
-# See https://github.com/haskell/cabal/issues/2777
-set -e
-
-# Avoid cabal writing to HOME, and avoid local cabal settings
-# influencing the build.
-HOME=$(mktemp -d)
-export HOME
-
-cabal "$@"
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
--- a/debian/changelog
+++ /dev/null
@@ -1,4587 +0,0 @@
-git-annex (6.20160511) unstable; urgency=medium
-
-  * Fix bug that sometimes prevented git-annex smudge --clean from consuming
-    all its input, which resulted in git add bypassing git-annex.
-  * Fix build with directory-1.2.6.2.
-  * Improve behavior when a just added http remote is not available
-    during uuid probe. Do not mark it as annex-ignore, so it will be tried
-    again later.
-  * Android: Icon refresh.
-    Thanks, freewheelinfranks.
-  * Added DIRHASH-LOWER to external special remote protocol.
-  * git-annex.cabal: Add Setup-Depends.
-  * stack.yaml: Enable explicit-setup-deps.
-  * Windows: Fix several bugs in propigation of changes from the adjusted
-    branch back to the master branch.
-  * Windows: Fix an over-long temp directory name.
-  * map: Hide dead repositories that are not connected to the graph.
-  * map: Changed colors; red is used for untrusted repositories and grey
-    for dead.
-  * version: Display OS version and architecture too.
-  * Propigate GIT_DIR and GIT_WORK_TREE environment to external special
-    remotes.
-  * Added annex.gnupg-decrypt-options and
-    remote.<name>.annex-gnupg-decrypt-options, which are passed to gpg
-    when it's decrypting data.
-  * fsck: When a key is not previously known in the location log,
-    record something so that reinject --known will work.
-  * In the unusual configuration where annex.crippledfilesystem=true but
-    core.symlinks=true, store object contents in mixed case hash
-    directories so that symlinks will point to them.
-  * Added new encryption=sharedpubkey mode for special remotes.
-    This is useful for makking a special remote that anyone with a clone
-    of the repo and your public keys can upload files to, but only you can
-    decrypt the files stored in it.
-
- -- Joey Hess <id@joeyh.name>  Wed, 11 May 2016 12:41:42 -0400
-
-git-annex (6.20160419) unstable; urgency=medium
-
-  * Fix bug that prevented resuming of uploads to encrypted special remotes
-    that used chunking.
-  * That bug could also expose the names of keys to such remotes, so it is a
-    minor security issue.
-  * Fix duplicate progress meter display when downloading from a git remote
-    over http with -J.
-  * reinject: When src file's content cannot be verified, leave it alone,
-    instead of deleting it.
-  * reinject: Added new mode which can reinject known files into the annex.
-    For example: git-annex reinject --known /mnt/backup/*
-  * calckey: New plumbing command, calculates the key that would be used
-    to refer to a file.
-  * Fix bug that prevented annex.sshcaching=false configuration from taking
-    effect when on a crippled filesystem. Thanks, divergentdave.
-  * git 2.9.0 is going to prevent git merge from merging in unrelated
-    branches. Since the webapp's pairing etc features often combine
-    together repositories with unrelated histories, work around
-    this behavior change when the assistant merges, by passing
-    --allow-unrelated-histories. Note though that this is not done
-    for git annex sync's merges, so it will follow git's default or
-    configured behavior.
-  * When git-annex is used with a git version older than 2.2.0, disable
-    support for adjusted branches, since GIT_COMMON_DIR is needed to update
-    them and was first added in that version of git.
-  * Avoid setting LOCPATH in linux standalone builds that are built with
-    a ghc that has been fixed to not hang when it cannot find locale files.
-  * Isolate test suite from global git config settings.
-
- -- Joey Hess <id@joeyh.name>  Thu, 28 Apr 2016 09:31:14 -0400
-
-git-annex (6.20160418) unstable; urgency=medium
-
-  * smudge: Print a warning when annex.thin is set, as git's smudge
-    interface does not allow honoring that configuration.
-  * webapp: When $HOME is a git repository, and has been initialized for
-    use by git-annex, opening the webapp went ahead and ran the assistant
-    there, annexing all files. Since this is almost certianly not
-    desirable, especially when the user is just opening the webapp from
-    a dekstop menu which happens to run it in $HOME, the webapp will now not
-    treat such a $HOME git repository as a git-annex repository.
-  * webapp: Update url to add gitlab.com ssh key.
-  * Fix bug in v6 mode that prevented treating unlocked executable files
-    as annexed. If you have such files, run git annex init --version=6
-    to update the cache after upgrading to this version of git-annex.
-  * Preserve execute bits of unlocked files in v6 mode.
-  * fsck: Warn when core.sharedRepository is set and an annex object file's
-    write bit is not set and cannot be set due to the file being owned
-    by a different user.
-  * Fix hang when dropping content needs to lock the content on a
-    ssh remote, which occurred when the remote has git-annex version
-    5.20151019 or newer. (The bug was in the client side; the remote
-    git-annex-shell does not need to be upgraded.)
-
- -- Joey Hess <id@joeyh.name>  Mon, 18 Apr 2016 18:33:52 -0400
-
-git-annex (6.20160412) unstable; urgency=medium
-
-  * adjust --unlock: Enters an adjusted branch in which all annexed files
-    are unlocked. The v6 equivilant of direct mode, but much cleaner!
-  * Upgrading a direct mode repository to v6 has changed to enter
-    an adjusted unlocked branch. This makes the direct mode to v6 upgrade
-    able to be performed in one clone of a repository without affecting
-    other clones, which can continue using v5 and direct mode.
-  * init --version=6: Automatically enter the adjusted unlocked branch
-    when filesystem doesn't support symlinks.
-  * ddar remote: fix ssh calls
-    Thanks, Robie Basak
-  * log: Display time with time zone.
-  * log --raw-date: Use to display seconds from unix epoch.
-  * v6: Close pointer file handles more quickly, to avoid problems on Windows.
-  * sync: Show output of git commit.
-  * annex.thin and annex.hardlink are now supported on Windows.
-  * unannex --fast now makes hard links on Windows.
-  * Fix bug in annex.largefiles mimetype= matching when git-annex
-    is run in a subdirectory of the repository.
-  * Fix build with ghc v7.11. Thanks, Gabor Greif.
-
- -- Joey Hess <id@joeyh.name>  Tue, 12 Apr 2016 14:53:22 -0400
-
-git-annex (6.20160318) unstable; urgency=medium
-
-  * metadata: Added -r to remove all current values of a field.
-  * Fix data loss that can occur when annex.pidlock is set in a repository.
-  * Fix bug preventing moving files to/from a repository with annex.pidlock set.
-  * Fix shared lock file FD leak.
-  * Fix metadata hook behavior when multiple files are added at once.
-    Thanks, Klaus Ethgen.
-  * Added dependencies on haskell mountpoints and disk-free-space
-    libraries, removing FFI code from git-annex.
-  * dropkey: Add --batch and --json.
-  * Fix OSX dmg to include libraries needed by bundled gpg,
-    lost in last release.
-  * Always try to thaw content, even when annex.crippledfilesystem is set.
-  * Correct git-annex info to include unlocked files in v6 repository.
-  * Sped up git-annex add in direct mode and v6 by using
-    git hash-object --stdin-paths.
-  * Sped up git-annex merge by using git hash-object --stdin-paths.
-
- -- Joey Hess <id@joeyh.name>  Fri, 18 Mar 2016 11:30:36 -0400
-
-git-annex (6.20160229) unstable; urgency=medium
-
-  * Update perlmagick build dependency. Closes: #789225
-  * Fix memory leak in last release, which affected commands like
-    git-annex status when a large non-annexed file is present in the work
-    tree.
-  * fsck: When the only copy of a file is in a dead repository, mention
-    the repository.
-  * info: Mention when run in a dead repository.
-  * Linux and OSX standalone builds put the bundled gpg last in PATH,
-    so any system gpg will be preferred over it.
-  * Avoid crashing when built with MagicMime support, but when the magic
-    database cannot be loaded.
-  * Include magic database in the linux and OSX standalone builds.
-  * Fix memory leak when hashing files, which triggered during fsck
-    when an external hash program was not used.
-    (This leak was introduced in version 6.20160114.)
-  * Support --metadata field<number, --metadata field>number etc
-    to match ranges of numeric values.
-  * Similarly, support preferred content expressions like
-    metadata=field<number and metadata=field>number
-  * The pre-commit-annex hook script that automatically extracts
-    metadata has been updated to also use exiftool.
-    Thanks, Klaus Ethgen.
-
- -- Joey Hess <id@joeyh.name>  Mon, 29 Feb 2016 12:41:49 -0400
-
-git-annex (6.20160217) unstable; urgency=medium
-
-  * Support getting files from read-only repositories.
-  * checkpresentkey: Allow to be run without an explicit remote.
-  * checkpresentkey: Added --batch.
-  * Work around problem with concurrent-output when in a non-unicode locale
-    by avoiding use of it in such a locale. Instead -J will behave as if
-    it was built without concurrent-output support in this situation.
-  * Fix storing of filenames of v6 unlocked files when the filename is not
-    representable in the current locale.
-  * fsck: Detect and fix missing associated file mappings in v6 repositories.
-  * fsck: Populate unlocked files in v6 repositories whose content is
-    present in annex/objects but didn't reach the work tree.
-  * When initializing a v6 repo on a crippled filesystem, don't force it
-    into direct mode.
-  * Windows: Fix v6 unlocked files to actually work.
-  * add, addurl, import, importfeed: When in a v6 repository on a crippled
-    filesystem, add files unlocked.
-  * annex.addunlocked: New configuration setting, makes files always be
-    added unlocked. (v6 only)
-  * Improve format of v6 unlocked pointer files to support keys containing
-    slashes.
-
- -- Joey Hess <id@joeyh.name>  Wed, 17 Feb 2016 14:48:51 -0400
-
-git-annex (6.20160211) unstable; urgency=medium
-
-  * annex.addsmallfiles: New option controlling what is done when
-    adding files not matching annex.largefiles.
-  * Fix reversion in lookupkey, contentlocation, and examinekey which
-    caused them to sometimes output side messages.
-  * webapp: Fix deletion of current repository directory.
-  * Added "nothing" to preferred content expression syntax.
-  * annex.largefiles can be configured in .gitattributes too;
-    this is particulary useful for v6 repositories, since the
-    .gitattributes configuration will apply in all clones of the
-    repository.
-  * Limit annex.largefiles parsing to the subset of preferred content
-    expressions that make sense in its context. So, not "standard"
-    or "lackingcopies", etc.
-  * annex.largefiles: Add support for mimetype=text/* etc, when git-annex
-    is linked with libmagic.
-  * matchexpression: Added --largefiles option to parse an annex.largefiles
-    expression.
-  * Brought back the dbus and xmpp build flags, so build from source can be
-    done without C libraries that may be hard to install.
-  * init: Fix bugs in submodule .git symlink fixup, that occurred when
-    initializing in a subdirectory of a submodule and a submodule of a
-    submodule.
-  * WebDAV: Set depth 1 in PROPFIND request, for better compatibility with
-    some servers. Thanks, wzhd.
-  * WebDAV: Remove a bogus trailing slash from the end of the url to the
-    temporary store location for a key. Thanks, wzhd.
-  * S3: Allow configuring with requeststyle=path to use path-style bucket
-    access instead of the default DNS-style access.
-
- -- Joey Hess <id@joeyh.name>  Thu, 11 Feb 2016 11:42:19 -0400
-
-git-annex (6.20160126) unstable; urgency=medium
-
-  * Fix nasty reversion in the last release that broke sync --content's
-    handling of many preferred content expressions.
-  * whereis --json: Urls are now listed inside the remote that claims them,
-    rather than all together at the end.
-  * info, add, whereis, find: Support --batch mode.
-  * Force output to be line-buffered, even when it's not connected to the
-    terminal. This is particuarly important for commands with --batch
-    output, which was not always being flushed at an appropriate time.
-  * add, import: Support --json output.
-  * addurl --json: Include field for added key (unless the file was
-    added directly to git due to annex.largefiles configuration.)
-    (Also done by add --json and import --json)
-  * registerurl: Check if a remote claims the url, same as addurl does.
-  * Bug fix: Git config settings passed to git-annex -c did not always take
-    effect.
-  * assistant: Use udisks2 dbus events to detect when disks are mounted,
-    instead of relying on gnome/kde stuff that is not stable.
-  * Fix build with QuickCheck 2.8.2
-  * matchexpression: New plumbing command to check if a preferred content
-    expression matches some data.
-  * Removed the webapp-secure build flag, rolling it into the webapp build
-    flag.
-  * Removed the quvi, tahoe, feed, and tfds build flags, adding
-    aeson feed and regex-tdfa to the core dependencies.
-  * Roll the dns build flag into the assistant build flag.
-  * Debian: Avoid building debug package, since gdb is not often useful
-    to debug haskell programs.
-
- -- Joey Hess <id@joeyh.name>  Tue, 26 Jan 2016 14:57:42 -0400
-
-git-annex (6.20160114) unstable; urgency=medium
-
-  "hexapodia as the key insight"
-
-  * Added v6 repository mode, but v5 is still the default for now.
-  * unlock, lock: In v6 mode, unlocking a file changes it from a symlink to a
-    pointer file, and this change can be committed to the git repository.
-    For details, see http://git-annex.branchable.com/tips/unlocked_files/
-  * The upgrade to version 6 is not done fully automatically yet, because
-    upgrading a direct mode repository to version 6 will prevent old
-    versions of git-annex from working in other clones of that repository.
-    For details, see http://git-annex.branchable.com/upgrades/
-  * init: --version parameter added to control which supported repository
-    version to use.
-  * init, upgrade: Configure .git/info/attributes to use git-annex
-    as a smudge filter. In v6 repository mode, this makes git add
-    add files to the annex in unlocked mode, unless overridden by
-    annex.largefiles configuration.
-  * assistant: In v6 mode, adds files in unlocked mode, so they can
-    continue to be modified.
-  * Added annex.thin setting, which makes unlocked files in v6 repositories
-    be hard linked to their content, instead of a copy. This saves disk
-    space but means any modification of an unlocked file will lose the local
-    (and possibly only) copy of the old version.
-  * Enable annex.thin by default on upgrade from direct mode to v6, since
-    direct mode made the same tradeoff.
-  * fix: Adjusts unlocked files as configured by annex.thin.
-  * persistent-sqlite is now a hard build dependency, since v6 repository
-    mode needs it.
-
-
-  * status: On crippled filesystems, was displaying M for all annexed files
-    that were present. Probably caused by a change to what git status
-    displays in this situation. Fixed by treating files git thinks are
-    modified the same as typechanged files.
-  * addurl: Added --batch and --with-files options.
-  * addurl: Support --json, particularly useful in --batch mode.
-  * addurl: Refuse to overwrite any existing, non-annexed file.
-  * Debian: Adjust build dependencies for webapp, DAV. Now available on
-    mips, mipsel, but temporarily removed armel since build is failing
-    there.
-  * info: Fix "backend usage" numbers, which were counting present keys
-    twice.
-  * info --json: Improve json for "backend usage", using a nested object
-    with fields for each backend instead of the previous weird nested lists.
-    This may break existing parsers of this json output, if there were any.
-  * whereis --json: Make url list be included in machine-parseable form.
-  * test: Added --keep-failures option.
-  * unused: Bug fix when a new file was added to the annex, and then
-    removed (but not git rmed). git still has the add staged in this case,
-    so the content should not be unused and was wrongly treated as such.
-  * migrate: Copy over metadata to new key.
-  * rekey: No longer copies over urls from the old to the new key.
-    It makes sense for migrate to do that, but not for this low-level
-    (and little used) plumbing command to.
-  * view: Fix crash in non-unicode capable locale when entering a view
-    of metadata containing a slash or backslash.
-  * When annex.http-headers is used to set the User-Agent header, avoid
-    sending User-Agent: git-annex
-  * Windows: Fix rsync cross-drive hack to work with msys2 rsync.
-    Thanks, Pieter Kitslaar.
-
- -- Joey Hess <id@joeyh.name>  Thu, 14 Jan 2016 10:14:19 -0400
-
-git-annex (5.20151218) unstable; urgency=medium
-
-  * Add S3 features to git-annex version output.
-  * webdav: When testing the WebDAV server, send a file with content.
-    The empty file it was sending tickled bugs in some php WebDAV server.
-  * fsck: Failed to honor annex.diskreserve when checking a remote.
-  * Debian: Build depend on concurrent-output.
-  * Fix insecure temporary permissions when git-annex repair is used in
-    in a corrupted git repository.
-  * Fix potential denial of service attack when creating temp dirs.
-
- -- Joey Hess <id@joeyh.name>  Fri, 18 Dec 2015 12:09:33 -0400
-
-git-annex (5.20151208) unstable; urgency=medium
-
-  * Build with -j1 again to get reproducible build.
-  * Display progress meter in -J mode when copying from a local git repo,
-    to a local git repo, and from a remote git repo.
-  * Display progress meter in -J mode when downloading from the web.
-  * map: Improve display of git remotes with non-ssh urls, including http
-    and gcrypt. 
-  * When core.sharedRepository is set, annex object files are not made mode
-    444, since that prevents a user other than the file owner from locking
-    them. Instead, a mode such as 664 is used in this case.
-  * tahoe: Include tahoe capabilities in whereis display.
-  * import: Changed to honor annex.largefiles settings.
-  * addurl, importfeed: Changed to honor annex.largefiles settings,
-    when the content of the url is downloaded. (Not when using --fast or
-    --relaxed.)
-  * webapp: Fix bugs that could result in a relative path such as "."
-    being written to ~/.config/git-annex/autostart, and ignore any such 
-    relative paths in the file.
-    This was a reversion caused by the relative path changes in 5.20150113.
-  * dropunused: Make more robust when trying to drop an object that has
-    already been dropped.
-  * Fix reversion in handling of long filenames, particularly when using
-    addurl/importfeed, which was introduced in the previous release.
-
- -- Joey Hess <id@joeyh.name>  Tue, 08 Dec 2015 11:14:03 -0400
-
-git-annex (5.20151116) unstable; urgency=medium
-
-  * Use concurrent-output library when configured with -fConcurrentOutput.
-    This allows nicely displayed messages when using the -J flag.
-  * Additional commands now support the -J flag: 
-    fsck, drop, add, addurl, import
-  * import: Avoid very ugly error messages when the directory files
-    are imported to is not a directort, but perhaps an annexed file.
-  * Concurrent progress bars are now displayed when using -J with a command
-    that moves file contents around.
-  * Fix race that could result in an annexed file's symlink not being
-    created, when eg, running concurrent git-annex adds.
-  * add: Fix error recovery rollback to not move the injested file content
-    out of the annex back to the file, because other files may point to
-    that same content. Instead, copy the injected file content out to
-    recover.
-  * quvi may output utf-8 encoded data when the conifigured locale doesn't
-    support that; avoid crashing on such invalid encoding.
-  * runshell: Avoid failing when $HOME/.ssh does not exist and cannot be
-    created.
-  * Make the git-annex-standalone.deb prevent runshell from installing
-    wrappers into $HOME/.ssh
-  * Make git-annex-standalone.deb include the git-annex html documentation,
-    desktop file, and base completion file, same as the regular git-annex.deb.
-  * fsck: When fscking a dead repo, avoid incorrect "fixing location log"
-    message, and display a warning about it being dead, since it's unusual
-    to have access to a dead repo.
-  * assistant: Pass ssh-options through 3 more git pull/push calls
-    that were missed before.
-  * Added annex.pidlock and annex.pidlocktimeout configuration to support
-    filesystems where POSIX fcntl locks cannot be used.
-  * init: Automatically enable annex.pidlock when necessary.
-
- -- Joey Hess <id@joeyh.name>  Mon, 16 Nov 2015 14:17:40 -0400
-
-git-annex (5.20151102.1) unstable; urgency=medium
-
-  * Avoid installing desktop file and program file if cabal install
-    git-annex is run as root, since that is not a systemwide install,
-    but to /root, and so generating a systemwide desktop file is not right.
-  * When cabal install is run with the desktop file location not writable,
-    display a warning, but continue successfully.
-
- -- Joey Hess <id@joeyh.name>  Tue, 03 Nov 2015 12:08:38 -0400
-
-git-annex (5.20151102) unstable; urgency=medium
-
-  * Use statvfs on OSX.
-  * Symlink timestamp preservation code uses functions
-    from unix-2.7.0 when available, which should be more portable.
-  * enableremote: List uuids and descriptions of remotes that can be
-    enabled, and accept either the uuid or the description in leu if the
-    name.
-  * Catch up with current git behavior when both repo and repo.git exist;
-    it seems it now prefers repo in this case, although historically it may
-    have preferred repo.git.
-  * Fix failure to build with aws-0.13.0.
-  * When built with aws-0.13.0, the S3 special remote can be used to create
-    google nearline buckets, by setting storageclass=NEARLINE.
-
- -- Joey Hess <id@joeyh.name>  Mon, 02 Nov 2015 12:41:20 -0400
-
-git-annex (5.20151019) unstable; urgency=medium
-
-  * Fix a longstanding, but unlikely to occur bug, where dropping
-    a file from a remote could race with other drops of the same file,
-    and result in all copies of its content being lost.
-  * git-annex-shell: Added lockcontent command, to prevent dropping of
-    a key's content. This is necessary due to the above bugfix.
-  * In some cases, the above bugfix changes what git-annex allows you to
-    drop:
-    - When a file is present in several special remotes,
-      but not in any accessible git repositories, dropping it from one of
-      the special remotes will now fail. Instead, the file has to be
-      moved from one of the special remotes to the git repository, and can
-      then safely be dropped from the git repository.
-    - If a git remote has too old a version of git-annex-shell installed,
-      git-annex won't trust it to hold onto a copy of a file when dropping
-      that file from the local git repository.
-  * Changed drop ordering when using git annex sync --content or the
-    assistant, to drop from remotes first and from the local repo last.
-    This works better with the behavior changes to drop in many cases.
-  * Do verification of checksums of annex objects downloaded from remotes.
-  * When annex objects are received into git repositories from other git
-    repos, their checksums are verified then too.
-  * To get the old, faster, behavior of not verifying checksums, set
-    annex.verify=false, or remote.<name>.annex-verify=false.
-  * setkey, rekey: These commands also now verify that the provided file
-    matches the expected checksum of the key, unless annex.verify=false.
-  * reinject: Already verified content; this can now be disabled by
-    setting annex.verify=false.
-  * sync, merge, assistant: When git merge failed for a reason other
-    than a conflicted merge, such as a crippled filesystem not allowing
-    particular characters in filenames, git-annex would make a merge commit
-    that could omit such files or otherwise be bad. Fixed by aborting the
-    whole merge process when git merge fails for any reason other than a
-    merge conflict.
-  * Allow building with S3 disabled again.
-  * Ported disk free space checking code to work on Solaris.
-  * Windows webapp: Fix support for entering password when setting
-    up a ssh remote.
-  * copy --auto was checking the wrong repo's preferred content.
-    (--from was checking what --to should, and vice-versa.)
-    Fixed this bug, which was introduced in version 5.20150727.
-  * Avoid unncessary write to the location log when a file is unlocked
-    and then added back with unchanged content.
-  * S3: Fix support for using https.
-  * Avoid displaying network transport warning when a ssh remote
-    does not yet have an annex.uuid set.
-  * Debian: Add torrent library to build-depends as it's packaged now,
-    and stop recommending bittornado | bittorrent.
-  * Debian: Remove build dependency on transformers library, as it is now
-    included in ghc.
-  * Debian: Remove menu file, since a desktop file is provided and
-    lintian says there can be only one.
-
- -- Joey Hess <id@joeyh.name>  Mon, 19 Oct 2015 13:59:01 -0400
-
-git-annex (5.20150930) unstable; urgency=medium
-
-  * Added new linux standalone "ancient" build to support kernels
-    like 2.6.32.
-  * info: Don't allow use in a non-git-annex repository, since it
-    uses the git-annex branch and would create it if it were missing.
-  * assistant: When updating ~/.ssh/config, preserve any symlinks.
-  * webapp: Remove the "disable remote" feature from the UI.
-  * S3: When built with aws-0.13.0, supports using more storage classes.
-    In particular, storageclass=STANDARD_IA to use Amazon's
-    new Infrequently Accessed storage, and storageclass=NEARLINE
-    to use Google's NearLine storage.
-  * Improve ~/.ssh/config modification code to not add trailing spaces
-    to lines it cannot parse.
-  * Fix a crash at direct mode merge time when .git/index doesn't exist
-    yet. Triggered by eg, git-annex sync --no-commit in a fresh clone of
-    a repository.
-  * status: Show added but not yet committed files.
-  * Added stack.yaml to support easy builds from source with stack.
-
- -- Joey Hess <id@joeyh.name>  Wed, 30 Sep 2015 14:31:52 -0400
-
-git-annex (5.20150916) unstable; urgency=medium
-
-  * Fix Windows build to work with ghc 7.10.
-  * init: Fix reversion in detection of repo made with git clone --shared
-  * info: Support querying info of individual files in direct mode.
-  * unused: Fix reversion in 5.20150727 that broke parsing of the
-    --unused-refspec option. Thanks, Øyvind A. Holm.
-  * Make full option parsing be done when not in a git repo, so --help
-    can be displayed for commands that require a git repo, etc.
-  * fsck: Work around bug in persistent that broke display of
-    problematically encoded filenames on stderr when using --incremental.
-  * When gpg.program is configured, it's used to get the command to run
-    for gpg. Useful on systems that have only a gpg2 command or want to
-    use it instead of the gpg command.
-  * Windows: Switched to using git for Windows, rather than msysgit.
-    Using msysgit with git-annex is no longer supported.
-  * Windows: Even when the user neglects to tell the git installer to
-    add git to PATH, git-annex will still work from within the git bash
-    shell, and the webapp can be used too.
-  * sync: Add --no-commit, --no-pull, --no-push options to turn off parts of
-    the sync process, as well as supporting --commit, --pull, --push, and
-    --no-content options to specify the (current) default behavior.
-  * annex.hardlink extended to also try to use hard links when copying from
-    the repository to a remote.
-  * Improve bash completion, so it completes names of remotes and backends
-    in appropriate places.
-  * Special remotes configured with autoenable=true will be automatically
-    enabled when git-annex init is run.
-  * Fix bug in combination of preferred and required content settings.
-    When one was set to the empty string and the other set to some expression,
-    this bug caused all files to be wanted, instead of only files matching
-    the expression.
-
- -- Joey Hess <id@joeyh.name>  Wed, 16 Sep 2015 10:31:24 -0400
-
-git-annex (5.20150824) unstable; urgency=medium
-
-  * Sped up downloads of files from ssh remotes, reducing the
-    non-data-transfer overhead 6x.
-  * sync: Support --jobs
-  * sync --content: Avoid unnecessary second pull from remotes when 
-    no file transfers are made.
-  * External special remotes can now be built that can be used in readonly
-    mode, where git-annex downloads content from the remote using regular
-    http.
-  * Added WHEREIS to external special remote protocol.
-  * importfeed --relaxed: Avoid hitting the urls of items in the feed.
-  * Fix reversion in init when ran as root, introduced in version 5.20150731.
-  * Reorder declaration to fix build with yesod-core > 1.4.13.
-    Thanks, Michael Alan Dorman.
-  * Fix building without quvi and without database.
-    Thanks, Ben Boeckel.
-  * Avoid building the assistant on the hurd, since an inotify equivalent
-    is not yet implemented in git-annex for the hurd.
-  * --debug log messages are now timestamped with fractional seconds.
-  * --debug is passed along to git-annex-shell when git-annex is in debug mode.
-  * Makefile: Pass LDFLAGS, CFLAGS, and CPPFLAGS through ghc and on to
-    ld, cc, and cpp.
-  * As a result of the Makefile changes, the Debian package is built
-    with various hardening options. Although their benefit to a largely
-    haskell program is unknown.
-
- -- Joey Hess <id@joeyh.name>  Mon, 24 Aug 2015 14:11:05 -0700
-
-git-annex (5.20150812) unstable; urgency=medium
-
-  * Added support for SHA3 hashed keys (in 8 varieties), when git-annex is
-    built using the cryptonite library.
-  * metadata: Fix reversion introduced in 5.20150727 that caused recursive
-    display of metadata to not work.
-  * Windows: Fix bug that caused git-annex sync to fail due to missing
-    environment variable.
-  * Fix setting/setting/viewing metadata that contains unicode or other
-    special characters, when in a non-unicode locale.
-  * Simplify setup process for a ssh remote. Now it suffices to run git
-    remote add, followed by git-annex sync. Now the remote is automatically
-    initialized for use by git-annex, where before the git-annex branch had
-    to manually be pushed before using git-annex sync. Note that this
-    involved changes to git-annex-shell, so if the remote is using an old
-    version, the manual push is still needed.
-  * git-annex-shell: Don't let configlist auto-init repository when in
-    readonly mode.
-  * Perform a clean shutdown when --time-limit is reached.
-    This includes running queued git commands, and cleanup actions normally
-    run when a command is finished.
-  * fsck: Commit incremental fsck database when --time-limit is reached.
-    Previously, some of the last files fscked did not make it into the
-    database when using --time-limit.
-  * fsck: Commit incremental fsck database after every 1000 files
-    fscked, or every 5 minutes, whichever comes first. Previously,
-    commits were made every 1000 files fscked.
-  * Linux standalone: Work around problem that prevented it from working
-    properly if unpacked into a directory that contains ":" or ";" in its
-    name.
-  * proxy: Fix proxy git commit of non-annexed files in direct mode. 
-  * proxy: If a non-proxied git command, such as git revert
-    would normally fail because of unstaged files in the work tree,
-    make the proxied command fail the same way.
-  * proxy: Fix removal of files deleted by the proxied command.
-  * proxy: Fix behavior when run in subdirectory of git repo.
-  * Improve Setup.hs file so that cabal copy --destdir works.
-    Thanks, Magnus Therning.
-  * Tighten dependency on optparse-applicative to 0.11.0.
-  * Added back debian/cabal-wrapper, since it still seems needed after all.
-
- -- Joey Hess <id@joeyh.name>  Wed, 12 Aug 2015 11:14:58 -0400
-
-git-annex (5.20150731) unstable; urgency=medium
-
-  * webapp: Support enabling known gitlab.com remotes.
-  * Fix rsync special remote to work when -Jn is used for concurrent
-    uploads.
-  * The last release accidentially removed a number of options from the
-    copy command. (-J, file matching options, etc). These have been added
-    back.
-  * init: Detect when the filesystem is crippled such that it ignores
-    attempts to remove the write bit from a file, and enable direct mode.
-    Seen with eg, NTFS fuse on linux.
-  * Fix man page installation by cabal install; all the new man pages are
-    now installed.
-
- -- Joey Hess <id@joeyh.name>  Fri, 31 Jul 2015 11:34:36 -0400
-
-git-annex (5.20150727) unstable; urgency=medium
-
-  * Fix bug that prevented uploads to remotes using new-style chunking
-    from resuming after the last successfully uploaded chunk.
-  * Switched option parsing to use optparse-applicative. This was a very large
-    and invasive change, and may have caused some minor behavior changes to
-    edge cases of option parsing. (For example, the metadata command no
-    longer accepts the combination of --get and --set, which never actually
-    worked.)
-  * Bash completion file is now included in the git-annex source tree, 
-    and installed into Debian package (and any other packages built using make
-    install). This bash completion is generated by the option parser, so it
-    covers all commands, all options, and will never go out of date!
-  * As well as tab completing "git-annex" commands, "git annex" will also tab
-    complete. However, git's bash completion script needs a patch,
-    which I've submitted, for this to work prefectly.
-  * version --raw now works when run outside a git repository.
-  * assistant --startdelay now works when run outside a git repository.
-  * dead now accepts multiple --key options.
-  * addurl now accepts --prefix and --suffix options to adjust the
-    filenames used.
-  * sync --content: Fix bug that caused files to be uploaded to eg,
-    more archive remotes than wanted copies, only to later be dropped
-    to satisfy the preferred content settings.
-  * importfeed: Improve detection of known items whose url has changed,
-    and avoid adding redundant files. Where before this only looked at
-    permalinks in rss feeds, it now also looks at guids.
-  * importfeed: Look at not only permalinks, but now also guids
-    to identify previously downloaded files.
-  * Webapp: Now features easy setup of git-annex repositories on gitlab.com.
-  * Adjust debian build deps: The webapp can now build on arm64, s390x
-    and hurd-i386. WebDAV support is also available on those architectures.
-  * Debian package now maintained by Richard Hartmann.
-  * Support building without persistent database on for systems that
-    lack TH. This removes support for incremental fsck.
-
- -- Joey Hess <id@joeyh.name>  Mon, 27 Jul 2015 12:24:49 -0400
-
-git-annex (5.20150710) unstable; urgency=medium
-
-  * add: Stage symlinks the same as git add would, even if they are not a
-    link to annexed content.
-  * sync: When annex.autocommit=false, avoid making any commit of local
-    changes, while still merging with remote to the extent possible.
-  * unused: --used-refspec can now be configured to look at refs in the
-    reflog. This provides a way to not consider old versions of files to be
-    unused after they have reached a specified age, when the old refs in
-    the reflog expire.
-  * log: Fix reversion introduced in version 5.20150528 that broke this command.
-  * assistant --autostart: First stop any daemons that are already running,
-    which might be left over from a previous login session and so unable to
-    use the ssh agent of a new login session.
-  * assistant: Fix local pairing to not include newline in ssh pubkey,
-    which is rejected on the other end for security reasons.
-  * assistant: Fix ANNEX_SHELL_DIR written to ~/.ssh/authorized_keys 
-    in local pairing to be the absolute path to the repository, not "."
-    This was a reversion caused by the relative path changes in 5.20150113.
-  * Brought back the setkey plumbing command that was removed in 2011, since
-    we found a use case for it. Note that the command's syntax was changed
-    for consistency.
-  * bugfix: Pass --full-tree when using git ls-files to get a list of files
-    on the git-annex branch, so it works when run in a subdirectory.
-    This bug affected git-annex unused, and potentially also transitions
-    running code and other things.
-  * Support git's undocumented core.sharedRepository=2 value, which
-    is equivalent to "world", and is set when a repo was created using
-    git init --shared=world.
-  * When building on linux, pass --as-needed to linker to avoid linking
-    with unused shared libraries including libyaml.
-  * import: Fix failure of cross-device import on Windows.
-  * merge: Avoid creating the synced/master branch.
-  * Removed support for optparse-applicative versions older than 0.10.
-
- -- Joey Hess <id@joeyh.name>  Fri, 10 Jul 2015 16:36:42 -0400
-
-git-annex (5.20150617) unstable; urgency=medium
-
-  * Now supports git annex sync --all --content to sync all versions of all
-    files with all repos that want them.
-  * Added new "anything" preferred content expression, which matches all
-    versions of all files.
-  * Standard preferred content for client, backup, incremental backup,
-    and unwanted groups have been adjusted to work better when used
-    with git annex sync --all --content.
-  * fromkey, registerurl: Improve handling of urls that happen to also
-    be parsable as strange keys.
-  * sync, remotedaemon: Pass configured ssh-options even when
-    annex.sshcaching is disabled.
-  * assistant: Consume systemd-networkd dbus events to learn about
-    changes to network connections, as was already done with
-    network-manager and wicd.
-    Thanks to Sebastian Reuße for the patches.
-  * get --incomplete: New option to resume any interrupted downloads.
-  * dead --key: Can be used to mark a key as dead.
-  * fsck: Ignore keys that are known to be dead when running in
-    --all/--unused/--key mode or a in a bare repo. Closes: #753888
-    Otherwise, still reports files with lost contents, even if the content
-    is dead.
-  * S3: Special remotes can be configured with public=yes to allow
-    the public to access the bucket's content.
-  * S3: Publically accessible buckets can be used without creds.
-  * import --clean-duplicates: Fix bug that didn't count local or trusted
-    repo's copy of a file as one of the necessary copies to allow removing
-    it from the import location.
-  * tahoe: Use ~/.tahoe-git-annex/ rather than ~/.tahoe/git-annex/
-    when setting up a tahoe special remote to avoid old versions of
-    tahoe create-client choking.
-  * Fix bug that prevented enumerating locally present objects in repos
-    tuned with annex.tune.objecthash1=true.
-    Fixes: unused, object count in info, unannex.
-  * Improve url parsing to handle some urls containing illegal []
-    characters in their paths.
-  * info: Added json output for "backend usage", "numcopies stats",
-    "repositories containing these files", and "transfers in progress".
-  * Fix incremental backup standard preferred content expression to match
-    its documentation, which says it does not want files that have reached
-    a backup repository.
-  * Increased the default annex.bloomaccuracy from 1000 to 10000000.
-    This makes git annex unused use up to 16 mb more memory than it did
-    before, but the massive increase in accuracy makes this worthwhile
-    for all but the smallest systems.
-  * Build documentation with deterministic=1 for reproducible builds.
-    (A new ikiwiki feature.) Closes: #785736
-  * Re-remove dependency on obsolete hamlet package. Closes: #786659
-  * debian/cabal-wrapper: Removed this hack which should not be needed anymore.
-
- -- Joey Hess <id@joeyh.name>  Wed, 17 Jun 2015 13:50:35 -0400
-
-git-annex (5.20150528) unstable; urgency=medium
-
-  * fromkey, registerurl: Allow urls to be specified instead of keys,
-    and generate URL keys.
-  * Linux standalone, OSX app: Improve runshell script to always quote
-    shell vars, so that it will work when eg, untarred into a directory
-    path with spaces in its name.
-  * Revert removal dependency on obsolete hamlet package, since the
-    autobuilders are not ready for this change yet and it prevented them
-    from building the webapp. Reopens: #786659
-  * fsck: When checksumming a file fails due to a hardware fault,
-    the file is now moved to the bad directory, and the fsck proceeds.
-    Before, the fsck immediately failed.
-  * Linux standalone: The webapp was not built in the previous release,
-    this release fixes that oversight.
-
- -- Joey Hess <id@joeyh.name>  Thu, 28 May 2015 10:48:03 -0400
-
-git-annex (5.20150522) unstable; urgency=medium
-
-  * import: Refuse to import files that are within the work tree, as that
-    does not make sense and could cause data loss.
-  * drop: Now supports --all, --unused, and --key.
-  * drop: Now defaults to --all when run in a bare repository.
-    (Previously, did nothing when run in a bare repository.)
-  * get, move, copy, mirror: Concurrent transfers are now supported!
-    For example: git-annex get -J10
-    However, progress bars are not yet displayed for concurrent transfers,
-    pending an updated version of the ascii-progress library.
-  * --quiet now makes progress output by rsync, wget, etc be quiet too.
-  * Take space that will be used by other running downloads into account when
-    checking annex.diskreserve.
-  * Avoid accumulating transfer failure log files unless the assistant is
-    being used.
-  * Fix an unlikely race that could result in two transfers of the same key
-    running at once.
-  * Stale transfer lock and info files will be cleaned up automatically
-    when get/unused/info commands are run.
-  * unused: Add --used-refspec option and annex.used-refspec, which can
-    specify a set of refs to consider used, rather than the default of
-    considering all refs used.
-  * webapp: Fix zombie xdg-open process left when opening file browser.
-    Closes: #785498
-  * Safer posix fctnl locking implementation, using lock pools and STM.
-  * Build documentation with TZ=UTC for reproducible builds. See #785736.
-  * OSX: Corrected the location of trustedkeys.gpg, so the built-in
-    upgrade code will find it. Fixes OSX upgrade going forward, but
-    older versions won't upgrade themselves due to this problem.
-  * Remove dependency on obsolete hamlet package. Closes: #786659
-
- -- Joey Hess <id@joeyh.name>  Fri, 22 May 2015 14:20:18 -0400
-
-git-annex (5.20150508.1) unstable; urgency=medium
-
-  * Now builds cleanly using ghc 7.10 (as well as ghc back to 7.6).
-  * Imrovements to the git-annex-standalone.deb build process.
-    (Thanks, Yaroslav Halchenko)
-
- -- Joey Hess <id@joeyh.name>  Mon, 11 May 2015 12:08:58 -0400
-
-git-annex (5.20150508) unstable; urgency=medium
-
-  * Improve behavior when a git-annex command is told to operate
-    on a file that doesn't exist. It will now continue to other
-    files specified after that on the command line, and only error out at
-    the end.
-  * S3: Enable debug logging when annex.debug or --debug is set.
-  * S3: git annex info will show additional information about a S3 remote
-    (endpoint, port, storage class)
-  * S3: Let git annex enableremote be used, without trying to recreate
-    a bucket that should already exist.
-  * S3: Fix incompatability with bucket names used by hS3; the aws library
-    cannot handle upper-case bucket names. git-annex now converts them to
-    lower case automatically.
-  * import: Check for gitignored files before moving them into the tree.
-    (Needs git 1.8.4 or newer.)
-  * import: Don't stop entire import when one file fails due to being
-    gitignored or conflicting with something in the work tree.
-  * import: Before removing a duplicate file in --deduplicate or
-    --clean-duplicates mode, verify that enough copies of its content still
-    exist.
-  * Improve integration with KDE's file manager to work with dolphin
-    version 14.12.3 while still being compatable with 4.14.2.
-    Thanks, silvio.
-  * assistant: Added --autostop to complement --autostart.
-  * Work around wget bug #784348 which could cause it to clobber git-annex
-    symlinks when downloading from ftp.
-  * Support checking ftp urls for file presence.
-  * Fix bogus failure of fsck --fast.
-  * fsck: Ignore error recording the fsck in the activity log,
-    which can happen when running fsck in a read-only repository.
-    Closes: #698559
-    (fsck can still need to write to the repository if it find problems,
-    but a successful fsck can be done read-only)
-  * Improve quvi 0.4 output parsing to handle cases wher there is no known
-    filename extension. This is currently the case when using quvi with
-    youtube. In this case, the extension ".m" will be used.
-  * Dropped support for older versions of yesod, warp, and dbus than the ones
-    in Debian Jessie.
-  * Switch from the obsolete dataenc library for base64 encoding to sandi.
-    (Thanks, Magnus Therning)
-  * Debian's ghc now supports TH on arm! Adjust build dependencies
-    to build the webapp on arm, and enable DAV support on arm. \o/
-  * Adjust some other arch specific build dependencies that are now
-    available on more architectures in Devian unstable.
-  * Windows: Remove cygwin ssh, the newer version of which has stopped
-    honoring the setting of HOME. Instead, copy msysgit's ssh into PATH.
-    Note that setting up a remote ssh server using password authentication
-    is known to be broken in this release on Windows.
-  * Windows: Roll back to an older version of rsync from cygwin.
-    The newer version has some dependency on a newer ssh from cygwin.
-
- -- Joey Hess <id@joeyh.name>  Fri, 08 May 2015 13:42:30 -0400
-
-git-annex (5.20150420) unstable; urgency=medium
-
-  * Fix activity log parsing, which caused the log to not retain
-    activity from other uuids.
-  * Union merge could fall over if there was a file in the repository
-    with the same name as a git ref. Now fixed.
-  * info dir: Added information about repositories that
-    contain files in the specified directory.
-  * info: Added --bytes option.
-  * bittorrent: Fix handling of magnet links.
-  * When a key's size is unknown, still check the annex.diskreserve,
-    and avoid getting content if the disk is too full.
-  * Fix fsck --from a git remote in a local directory, and from
-    a directory special remote.
-    This was a reversion caused by the relative path changes in 5.20150113.
-  * fsck --from remote: When bad content is found in the remote,
-    and the local repo does not have a copy of the content, preserve
-    the bad content in .git/annex/bad/ to avoid further data loss.
-  * fsck --from remote: Avoid downloading a key if it would go over
-    the annex.diskreserve limit.
-  * required: New command, like wanted, but for required content.
-  * Removed dependency on haskell SHA library,
-    instead using cryptohash >= 0.11.0.
-  * Make repo init more robust.
-  * New debian/rules build-standalone target, which generates a
-    git-annex-standalone.deb that should work on many old Debian etc
-    systems. Thanks, Yaroslav Halchenko.
-  * Windows: Renamed start menu file to avoid loop in some versions
-    of Windows where the menu file is treated as a git-annex program.
-  * Windows: Fixed support of remotes on other drives.
-    (A reversion introduced in version 5.20150113.)
-  * Windows: Bundled versions of rsync, wget, ssh, and gpg from
-    cygwin all updated. Thanks, Yury V. Zaytsev.
-
- -- Joey Hess <id@joeyh.name>  Mon, 20 Apr 2015 14:44:04 -0400
-
-git-annex (5.20150409) unstable; urgency=medium
-
-  * This fixes a bug in the assistant introduced by the literal pathspec
-    changes in version 5.20150406.
-  * --quiet now suppresses progress displays from eg, rsync.
-    (Second time's the charm..)
-  * fromkey, registerurl: When reading from stdin, allow the
-    filename and url, respectively, to contain whitespace.
-  * add: If annex.largefiles is set and does not match a file that's being
-    added, the file will be checked into git rather than being added to the
-    annex. Previously, git annex add skipped over such files; this new
-    behavior is more useful in direct mode.
-  * proxy: Made it work when run in a new repository before initial
-    commit.
-  * info: Display repository mode: bare when in a bare (non-direct mode)
-    repo.
-  * importfeed: Fix feed download when curl is used.
-  * importfeed: Error out when passed a non-url.
-  * webapp: When adding another local repository, and combining it
-    with the current repository, the new repository's remote path
-    was set to "." rather than the path to the current repository.
-    This was a reversion caused by the relative path changes in 5.20150113.
-  * contentlocationn: New plumbing command.
-
- -- Joey Hess <id@joeyh.name>  Thu, 09 Apr 2015 15:06:38 -0400
-
-git-annex (5.20150406.1) unstable; urgency=medium
-
-  * Fixes a bug in the last release that caused rsync and possibly
-    other commands to hang at the end of a file transfer.
-    (--quiet is back to not blocking progress displays until
-    that code can be fixed properly.)
-
- -- Joey Hess <id@joeyh.name>  Mon, 06 Apr 2015 17:13:13 -0400
-
-git-annex (5.20150406) unstable; urgency=medium
-
-  * Prevent git-ls-files from double-expanding wildcards when an
-    unexpanded wildcard is passed to a git-annex command like add or find.
-  * Fix make build target. Thanks, Justin Geibel.
-  * Fix GETURLS in external special remote protocol to strip
-    downloader prefix from logged url info before checking for the
-    specified prefix.
-  * importfeed: Avoid downloading a redundant item from a feed whose
-    permalink has been seen before, even when the url has changed.
-  * importfeed: Always store itemid in metadata; before this was only
-    done when annex.genmetadata was set.
-  * Relax debian package dependencies to git >= 1:1.8.1 rather
-    than needing >= 1:2.0.
-  * test: Fix --list-tests
-  * addurl --file: When used with a special remote that claims
-    urls and checks their contents, don't override the user's provided
-    filename with filenames that the special remote suggests. Also,
-    don't allow adding the url if the special remote says it contains
-    multiple files.
-  * import: --deduplicate and --cleanduplicates now output the keys
-    corresponding to duplicated files they process.
-  * expire: New command, for expiring inactive repositories.
-  * fsck: Record fsck activity for use by expire command.
-  * Fix truncation of parameters that could occur when using xargs git-annex.
-  * Significantly sped up processing of large numbers of directories
-    passed to a single git-annex command.
-  * version: Add --raw
-  * init: Improve fifo test to detect NFS systems that support fifos
-    but not well enough for sshcaching.
-  * --quiet now suppresses progress displays from eg, rsync.
-    (The option already suppressed git-annex's own built-in progress
-    displays.)
-
- -- Joey Hess <id@joeyh.name>  Mon, 06 Apr 2015 12:48:48 -0400
-
-git-annex (5.20150327) unstable; urgency=medium
-
-  * readpresentkey: New plumbing command for checking location log.
-  * checkpresentkey: New plumbing command to check if a key can be verified
-    to be present on a remote.
-  * Added a post-update-annex hook, which is run after the git-annex branch
-    is updated. Needed for git update-server-info.
-  * migrate: --force will force migration of keys already using the
-    destination backend. Useful in rare cases.
-  * Man pages for individual commands now available, and can be
-    opened using "git annex help <command>"
-  * --auto is no longer a global option; only get, drop, and copy
-    accept it. (Not a behavior change unless you were passing it to a
-    command that ignored it.)
-  * Improve error message when --in @date is used and there is no
-    reflog for the git-annex branch.
-  * assistant: Committing a whole lot of files at once could overflow
-    command-line length limits and cause the commit to fail. This
-    only happened when using the assistant in an indirect mode repository.
-  * Work around curl bug when asked to download an empty url to a file.
-  * Fix bug introduced in the last release that broke git-annex sync
-    when git-annex was installed from the standalone tarball.
-
- -- Joey Hess <id@joeyh.name>  Fri, 27 Mar 2015 13:10:59 -0400
-
-git-annex (5.20150317) unstable; urgency=medium
-
-  * fsck: Incremental fsck uses sqlite to store its records, instead
-    of abusing the sticky bit. Existing sticky bits are ignored;
-    incremental fscks started by old versions won't be resumed by
-    this version.
-  * fsck: Multiple incremental fscks of different repos (including remotes)
-    can now be running at the same time in the same repo without it
-    getting confused about which files have been checked for which remotes.
-  * unannex: Refuse to unannex when repo is too new to have a HEAD,
-    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.
-  * 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.)
-  * 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.
-  * sync: Fix committing when in a direct mode repo that has no HEAD ref.
-    (For example, a newly checked out git submodule.)
-  * Added SETURIPRESENT and SETURIMISSING to external special remote protocol,
-    useful for things like ipfs that don't use regular urls.
-  * addurl: Added --raw option, which bypasses special handling of quvi,
-    bittorrent etc urls.
-  * git-annex-shell: Improve error message when the specified repository
-    doesn't exist or git config fails for some reason.
-  * fromkey --force: Skip test that the key has its content in the annex.
-  * fromkey: Add stdin mode.
-  * registerurl: New plumbing command for mass-adding urls to keys.
-  * remotedaemon: Fixed support for notifications of changes to gcrypt
-    remotes, which was never tested and didn't quite work before.
-
- -- Joey Hess <id@joeyh.name>  Tue, 17 Mar 2015 13:02:36 -0400
-
-git-annex (5.20150219) unstable; urgency=medium
-
-  * glacier: Detect when the glacier command in PATH is the wrong one,
-    from boto, rather than from glacier-cli, and refuse to use it,
-    since the boto program fails to fail when passed
-    parameters it does not understand.
-  * groupwanted: New command to set the groupwanted preferred content
-    expression.
-  * import: Support file matching options such as --exclude, --include, 
-    --smallerthan, --largerthan
-  * The file matching options are now only accepted by commands that
-    can actually use them, instead of by all commands.
-  * import: Avoid checksumming file twice when run in the default
-    or --duplicate mode.
-  * Windows: Fix bug in dropping an annexed file, which
-    caused a symlink to be staged that contained backslashes.
-  * webapp: Fix reversion in opening webapp when starting it manually
-    inside a repository.
-  * assistant: Improve sanity check for control characters when pairing.
-  * Improve race recovery code when committing to git-annex branch.
-  * addurl: Avoid crash if quvi is not installed, when git-annex was
-    built with process-1.2
-  * bittorrent: Fix mojibake introduced in parsing arai2c progress output.
-  * fsck --from: If a download from a remote fails, propagate the failure.
-  * metadata: When setting metadata, do not recurse into directories by
-    default, since that can be surprising behavior and difficult to recover
-    from. The old behavior is available by using --force.
-  * sync, assistant: Include repository name in head branch commit message.
-  * The ssh-options git config is now used by gcrypt, rsync, and ddar
-    special remotes that use ssh as a transport.
-  * sync, assistant: Use the ssh-options git config when doing git pull
-    and push.
-  * remotedaemon: Use the ssh-options git config.
-  * Linux standalone: Improved process names of linker shimmed programs.
-
- -- Joey Hess <id@joeyh.name>  Thu, 19 Feb 2015 14:16:03 -0400
-
-git-annex (5.20150205) unstable; urgency=medium
-
-  * info: Can now display info about a given uuid.
-  * Added to remote/uuid info: Count of the number of keys present
-    on the remote, and their size. This is rather expensive to calculate,
-    so comes last and --fast will disable it.
-  * info remote: Include the date of the last sync with the remote.
-  * sync: Added --message/-m option like git commit.
-  * remotedaemon: Fix problem that could prevent ssh connections being
-    made after two LOSTNET messages were received in a row (perhaps due to
-    two different network interfaces being brought down).
-  * Fix build failure when wget is not installed.
-  * Fix wording of message displayed when unable to get a file that
-    is available in untrusted repositories.
-  * addurl: When a Content-Disposition header suggests a filename to use,
-    addurl will consider using it, if it's reasonable and doesn't conflict
-    with an existing file. (--file overrides this)
-  * Fix default repository description created by git annex init,
-    which got broken by the relative path changes in the last release.
-  * init: Repository tuning parameters can now be passed when initializing a
-    repository for the first time. For details, see
-    http://git-annex.branchable.com/tuning/
-  * merge: Refuse to merge changes from a git-annex branch of a repo
-    that has been tuned in incompatible ways.
-  * Support annex.tune.objecthash1, annex.tune.objecthashlower, and
-    annex.tune.branchhash1.
-  * Remove support for building without cryptohash.
-  * Added MD5 and MD5E backends.
-  * assistant: Fix local pairing when ssh pubkey comment contains spaces.
-  * Avoid using fileSize which maxes out at just 2 gb on Windows.
-    Instead, use hFileSize, which doesn't have a bounded size.
-    Fixes support for files > 2 gb on Windows.
-  * Windows: Fix running of the pre-commit-annex hook.
-  * Windows: Fix S3 special remote; need to call withSocketsDo. Thanks, Trent.
-
- -- Joey Hess <id@joeyh.name>  Thu, 05 Feb 2015 14:08:33 -0400
-
-git-annex (5.20150113) unstable; urgency=medium
-
-  * unlock: Don't allow unlocking files that have never been committed to git
-    before, to avoid an intractable problem that prevents the pre-commit
-    hook from telling if such a file is intended to be an annexed file or not.
-  * Avoid re-checksumming when migrating from hash to hashE backend.
-    Closes: #774494
-  * Fix build with process 1.2.1.0.
-  * Android: Provide a version built with -fPIE -pie to support Android 5.0.
-  * sync: Fix an edge case where syncing in a bare repository would try to
-    merge and so fail.
-  * Check git version at runtime, rather than assuming it will be the same
-    as the git version used at build time when running git-checkattr and
-    git-branch remove.
-  * Switch to using relative paths to the git repository.
-    - This allows the git repository to be moved while git-annex is running in
-      it, with fewer problems.
-    - On Windows, this avoids some of the problems with the absurdly small
-      MAX_PATH of 260 bytes. In particular, git-annex repositories should
-      work in deeper/longer directory structures than before.
-  * Generate shorter keys for WORM and URL, avoiding keys that are longer
-    than used for SHA256, so as to not break on systems like Windows that
-    have very small maximum path length limits.
-  * Bugfix: A file named HEAD in the work tree could confuse some git commands
-    run by git-annex.
-
- -- Joey Hess <id@joeyh.name>  Tue, 13 Jan 2015 12:10:08 -0400
-
-git-annex (5.20141231) unstable; urgency=medium
-
-  * vicfg: Avoid crashing on badly encoded config data.
-  * Work around statfs() overflow on some XFS systems.
-  * sync: Now supports remote groups, the same way git remote update does.
-  * setpresentkey: A new plumbing-level command.
-  * Run shutdown cleanup actions even if there were failures processing
-    the command. Among other fixes, this means that addurl will stage
-    added files even if adding one of the urls fails.
-  * bittorrent: Fix locking problem when using addurl file://
-  * Windows: Fix local rsync filepath munging (fixes 26 test suite failures).
-  * Windows: Got the rsync special remote working.
-  * Windows: Fix handling of views of filenames containing '%'
-  * OSX: Switched away from deprecated statfs64 interface.
-
- -- Joey Hess <id@joeyh.name>  Wed, 31 Dec 2014 15:15:46 -0400
-
-git-annex (5.20141219) unstable; urgency=medium
-
-  * Webapp: When adding a new box.com remote, use the new style chunking.
-    Thanks, Jon Ander Peñalba.
-  * External special remote protocol now includes commands for setting
-    and getting the urls associated with a key.
-  * Urls can now be claimed by remotes. This will allow creating,
-    for example, a external special remote that handles magnet: and
-    *.torrent urls.
-  * Use wget -q --show-progress for less verbose wget output,
-    when built with wget 1.16.
-  * Added bittorrent special remote.
-  * addurl behavior change: When downloading an url ending in .torrent,
-    it will download files from bittorrent, instead of the old behavior
-    of adding the torrent file to the repository.
-  * Added Recommends on aria2.
-  * When possible, build with the haskell torrent library for parsing
-    torrent files. As a fallback, can instead use btshowmetainfo from
-    bittornado | bittorrent.
-  * Fix build with -f-S3.
-
- -- Joey Hess <id@joeyh.name>  Fri, 19 Dec 2014 16:53:26 -0400
-
-git-annex (5.20141203) unstable; urgency=medium
-
-  * proxy: New command for direct mode repositories, allows bypassing
-    the direct mode guard in a safe way to do all sorts of things
-    including git revert, git mv, git checkout ...
-  * undo: New command to undo the most recent change to a file
-    or to the contents of a directory.
-  * Add undo action to nautilus and konqueror integration.
-  * diffdriver: New git-annex command, to make git external diff drivers
-    work with annexed files.
-  * pre-commit: Block partial commit of unlocked annexed file, since
-    that left a typechange staged in index due to some infelicity of git's
-    handling of partial commits.
-  * Work around behavior change in lsof 4.88's -F output format.
-  * S3: Switched to using the haskell aws library.
-  * S3: No longer buffers entire files in memory when uploading without
-    chunking.
-  * S3: When built with a new enough version of the haskell aws library,
-    supports doing multipart uploads, in order to store extremely large
-    files in S3 when not using chunking.
-  * Don't show "(gpg)" when decrypting the remote encryption cipher,
-    since this could be taken to read that's the only time git-annex
-    runs gpg, which is not the case.
-  * Debian package is now maintained by Gergely Nagy.
-  * Windows: Remove Alt+A keyboard shortcut, which turns out to have scope
-    outside the menus.
-  * Windows: Install ssh and other bundled programs to Git/cmd,
-    instead of Git/bin, since the latter is not in the default msysgit PATH.
-
- -- Joey Hess <id@joeyh.name>  Wed, 03 Dec 2014 15:16:52 -0400
-
-git-annex (5.20141125) unstable; urgency=medium
-
-  * Remove fixup code for bad bare repositories created by
-    versions 5.20131118 through 5.20131127. That fixup code would
-    accidentially fire when --git-dir was incorrectly
-    pointed at the working tree of a git-annex repository,
-    possibly resulting in data loss. Closes: #768093
-  * Windows: Fix crash when user.name is not set in git config.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 05 Nov 2014 11:41:51 -0400
-
-git-annex (5.20141024) unstable; urgency=medium
-
-  * vicfg: Deleting configurations now resets to the default, where
-    before it has no effect.
-  * Remove hurd stuff from cabal file, since hackage currently rejects
-    it, and the test suite fails on hurd.
-  * initremote: Don't allow creating a special remote that has the same
-    name as an existing git remote.
-  * Windows: Use haskell setenv library to clean up several ugly workarounds
-    for inability to manipulate the environment on windows. This includes
-    making git-annex not re-exec itself on start on windows, and making the
-    test suite on Windows run tests without forking.
-  * glacier: Fix pipe setup when calling glacier-cli to retrieve an object.
-  * info: When run on a single annexed file, displays some info about the 
-    file, including its key and size.
-  * info: When passed the name or uuid of a remote, displays info about that
-    remote. Remotes that support encryption, chunking, or embedded
-    creds will include that in their info.
-  * enableremote: When the remote has creds, update the local creds cache
-    file. Before, the old version of the creds could be left there, and
-    would continue to be used.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 24 Oct 2014 13:03:29 -0400
-
-git-annex (5.20141013) unstable; urgency=medium
-
-  * Adjust cabal file to support building w/o assistant on the hurd.
-  * Support building with yesod 1.4.
-  * S3: Fix embedcreds=yes handling for the Internet Archive.
-  * map: Handle .git prefixed remote repos. Closes: #614759
-  * repair: Prevent auto gc from happening when fetching from a remote.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 13 Oct 2014 10:13:06 -0400
-
-git-annex (5.20140927) unstable; urgency=medium
-
-  * Really depend (not just build-depend) on new enough git for --no-gpg-sign
-    to work. Closes: #763057
-  * Add temporary workaround for bug #763078 which broke building on armel
-    and armhf.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 27 Sep 2014 14:25:09 -0400
-
-git-annex (5.20140926) unstable; urgency=high
-
-  * Depend on new enough git for --no-gpg-sign to work. Closes: #762446
-  * Work around failure to build on mips by using cabal, not Setup,
-    to build in debian/rules.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 26 Sep 2014 15:09:02 -0400
-
-git-annex (5.20140919) unstable; urgency=high
-
-  * Security fix for S3 and glacier when using embedcreds=yes with
-    encryption=pubkey or encryption=hybrid. CVE-2014-6274
-    The creds embedded in the git repo were *not* encrypted.
-    git-annex enableremote will warn when used on a remote that has
-    this problem. For details, see:
-    https://git-annex.branchable.com/upgrades/insecure_embedded_creds/
-  * assistant: Detect when repository has been deleted or moved, and
-    automatically shut down the assistant. Closes: #761261
-  * Windows: Avoid crashing trying to list gpg secret keys, for gcrypt
-    which is not yet supported on Windows.
-  * WebDav: Fix enableremote crash when the remote already exists.
-    (Bug introduced in version 5.20140817.)
-  * add: In direct mode, adding an annex symlink will check it into git,
-    as was already done in indirect mode.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 19 Sep 2014 12:53:42 -0400
-
-git-annex (5.20140915) unstable; urgency=medium
-
-  * New annex.hardlink setting. Closes: #758593
-  * init: Automatically detect when a repository was cloned with --shared,
-    and set annex.hardlink=true, as well as marking the repository as
-    untrusted.
-  * Fix parsing of ipv6 address in git remote address when it was not
-    formatted as an url.
-  * The annex-rsync-transport configuration is now also used when checking
-    if a key is present on a rsync remote, and when dropping a key from
-    the remote.
-  * Promote file not found warning message to an error.
-  * Fix transfer lock file FD leak that could occur when two separate
-    git-annex processes were both working to perform the same set of
-    transfers.
-  * sync: Ensure that pending changes to git-annex branch are committed
-    before push when in direct mode. (Fixing a very minor reversion.)
-  * WORM backend: Switched to include the relative path to the file inside
-    the repository, rather than just the file's base name. Note that if you're
-    relying on such things to keep files separate with WORM, you should really
-    be using a better backend.
-  * Rather than crashing when there's a problem with the requested bloomfilter
-    capacity/accuracy, fall back to a reasonable default bloom filter size.
-  * Fix build with optparse-applicative 0.10. Closes: #761484
-  * webapp: Fixed visual glitch in xmpp pairing that was reported live by a
-    user who tracked me down in front of a coffee cart in Portland. 
-    (New bug reporting method of choice?)
-
- -- Joey Hess <joeyh@debian.org>  Mon, 15 Sep 2014 10:45:00 -0400
-
-git-annex (5.20140831) unstable; urgency=medium
-
-  * Make --help work when not in a git repository. Closes: #758592
-  * Ensure that all lock fds are close-on-exec, fixing various problems with
-    them being inherited by child processes such as git commands.
-  * When accessing a local remote, shut down git-cat-file processes
-    afterwards, to ensure that remotes on removable media can be unmounted.
-    Closes: #758630
-  * Fix handing of autocorrection when running outside a git repository.
-  * Fix stub git-annex test support when built without tasty.
-  * Do not preserve permissions and acls when copying files from
-    one local git repository to another. Timestamps are still preserved
-    as long as cp --preserve=timestamps is supported. Closes: #729757
-
- -- Joey Hess <joeyh@debian.org>  Sun, 31 Aug 2014 12:30:08 -0700
-
-git-annex (5.20140817) unstable; urgency=medium
-
-  * New chunk= option to chunk files stored in special remotes.
-    Supported by: directory, S3, webdav, gcrypt, rsync, and all external
-    and hook special remotes.
-  * Partially transferred files are automatically resumed when using
-    chunked remotes!
-  * The old chunksize= option is deprecated. Do not use for new remotes.
-  * Legacy code for directory remotes using the old chunksize= option
-    will keep them working, but more slowly than before.
-  * webapp: Automatically install Konqueror integration scripts
-    to get and drop files.
-  * repair: Removing bad objects could leave fsck finding no more
-    unreachable objects, but some branches no longer accessible.
-    Fix this, including support for fixing up repositories that
-    were incompletely repaired before.
-  * Fix cost calculation for non-encrypted remotes.
-  * Display exception message when a transfer fails due to an exception.
-  * WebDAV: Sped up by avoiding making multiple http connections
-    when storing a file.
-  * WebDAV: Avoid buffering whole file in memory when uploading and
-    downloading.
-  * WebDAV: Dropped support for DAV before 1.0.
-  * testremote: New command to test uploads/downloads to a remote.
-  * Dropping an object from a bup special remote now deletes the git branch
-    for the object, although of course the object's content cannot be deleted
-    due to the nature of bup.
-  * unlock: Better error handling; continue past files that are not available
-    or cannot be unlocked due to disk space, and try all specified files.
-  * Windows: Now uses actual inode equivilants in new direct mode
-    repositories, for safer detection of eg, renaming of files with the same
-    size and mtime.
-  * direct: Fix ugly warning messages.
-  * WORM backend: When adding a file in a subdirectory, avoid including the
-    subdirectory in the key name.
-  * S3, Glacier, WebDAV: Fix bug that prevented accessing the creds
-    when the repository was configured with encryption=shared embedcreds=yes.
-  * direct: Avoid leaving file content in misctemp if interrupted.
-  * git-annex-shell sendkey: Don't fail if a remote asks for a key to be sent
-    that already has a transfer lock file indicating it's being sent to that
-    remote. The remote may have moved between networks, or reconnected.
-  * Switched from the old haskell HTTP library to http-conduit.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 17 Aug 2014 10:30:58 -0400
-
-git-annex (5.20140717) unstable; urgency=high
-
-  * Fix minor FD leak in journal code. Closes: #754608
-  * direct: Fix handling of case where a work tree subdirectory cannot
-    be written to due to permissions.
-  * migrate: Avoid re-checksumming when migrating from hashE to hash backend.
-  * uninit: Avoid failing final removal in some direct mode repositories
-    due to file modes.
-  * S3: Deal with AWS ACL configurations that do not allow creating or
-    checking the location of a bucket, but only reading and writing content to
-    it.
-  * resolvemerge: New plumbing command that runs the automatic merge conflict
-    resolver.
-  * Deal with change in git 2.0 that made indirect mode merge conflict
-    resolution leave behind old files.
-  * sync: Fix git sync with local git remotes even when they don't have an
-    annex.uuid set. (The assistant already did so.)
-  * Set gcrypt-publish-participants when setting up a gcrypt repository,
-    to avoid unncessary passphrase prompts.
-    This is a security/usability tradeoff. To avoid exposing the gpg key
-    ids who can decrypt the repository, users can unset
-    gcrypt-publish-participants.
-  * Install nautilus hooks even when ~/.local/share/nautilus/ does not yet
-    exist, since it is not automatically created for Gnome 3 users.
-  * Windows: Move .vbs files out of git\bin, to avoid that being in the
-    PATH, which caused some weird breakage. (Thanks, divB)
-  * Windows: Fix locking issue that prevented the webapp starting
-    (since 5.20140707).
-
- -- Joey Hess <joeyh@debian.org>  Thu, 17 Jul 2014 11:27:25 -0400
-
-git-annex (5.20140709) unstable; urgency=medium
-
-  * Fix race in direct mode merge code that could cause all files in the
-    repository to be removed. It should be able to recover repositories
-    experiencing this bug without data loss. See:
-    http://git-annex.branchable.com/bugs/bad_merge_commit_deleting_all_files/
-  * Fix git version that supported --no-gpg-sign.
-  * Fix bug in automatic merge conflict resolution, when one side is an
-    annexed symlink, and the other side is a non-annexed symlink.
-  * Really fix bug that caused the assistant to make many unncessary
-    empty merge commits.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 09 Jul 2014 15:28:03 -0400
-
-git-annex (5.20140707) unstable; urgency=medium
-
-  * assistant: Fix bug, introduced in last release, that caused the assistant
-    to make many unncessary empty merge commits.
-  * assistant: Fix one-way assistant->assistant sync in direct mode.
-  * Fix bug in annex.queuesize calculation that caused much more
-    queue flushing than necessary.
-  * importfeed: When annex.genmetadata is set, metadata from the feed
-    is added to files that are imported from it.
-  * Support users who have set commit.gpgsign, by disabling gpg signatures
-    for git-annex branch commits and commits made by the assistant.
-  * Fix memory leak when committing millions of changes to the git-annex
-    branch, eg after git-annex add has run on 2 million files in one go.
-  * Support building with bloomfilter 2.0.0.
-  * Run standalone install process when the assistant is started
-    (was only being run when the webapp was opened).
-  * Android: patch git to avoid fchmod, which fails on /sdcard.
-  * Windows: Got rid of that pesky DOS box when starting the webapp.
-  * Windows: Added Startup menu item so assistant starts automatically
-    on login.
-  * Windows: Fix opening file browser from webapp when repo is in a
-    directory with spaces.
-  * Windows: Assistant now logs to daemon.log.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 07 Jul 2014 12:24:13 -0400
-
-git-annex (5.20140613) unstable; urgency=medium
-
-  * Ignore setsid failures.
-  * Avoid leaving behind .tmp files when failing in some cases, including
-    importing files to a disk that is full.
-  * Avoid bad commits after interrupted direct mode sync (or merge).
-  * Fix build with wai 0.3.0.
-  * Deal with FAT's low resolution timestamps, which in combination with
-    Linux's caching of higher res timestamps while a FAT is mounted, caused
-    direct mode repositories on FAT to seem to have modified files after
-    they were unmounted and remounted.
-  * Windows: Fix opening webapp when repository is in a directory with
-    spaces in the path.
-  * Detect when Windows has lost its mind in a timezone change, and
-    automatically apply a delta to the timestamps it returns, to get back to
-    sane values.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 13 Jun 2014 09:58:07 -0400
-
-git-annex (5.20140606) unstable; urgency=medium
-
-  * webapp: When adding a new local repository, fix bug that caused its
-    group and preferred content to be set in the current repository,
-    even when not combining.
-  * webapp: Avoid stomping on existing description, group and
-    preferred content settings when enabling or combining with
-    an already existing remote.
-  * assistant: Make sanity checker tmp dir cleanup code more robust.
-  * unused: Avoid checking view branches for unused files.
-  * webapp: Include ssh port in mangled hostname.
-  * Windows: Fix bug introduced in last release that caused files
-    in the git-annex branch to have lines teminated with \r.
-  * Windows: Fix retrieving of files from local bare git repositories.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 06 Jun 2014 12:54:06 -0400
-
-git-annex (5.20140529) unstable; urgency=medium
-
-  * Fix encoding of data written to git-annex branch. Avoid truncating
-    unicode characters to 8 bits. Allow any encoding to be used, as with
-    filenames (but utf8 is the sane choice). Affects metadata and repository
-    descriptions, and preferred content expressions.
-  * assistant: When there are multiple remotes giving different ways
-    to access the same repository, honor remote cost settings and use
-    the cheapest available.
-  * webapp: More robust startup when annex directory is not a git repo.
-  * initremote/enableremote: Basic support for using with regular git remotes;
-    initremote stores the location of an already existing git remote,
-    and enableremote setups up a remote using its stored location.
-  * webapp: Support for enabling known git repositories on ssh servers.
-    The repository must have been added using initremote.
-  * webapp: When setting up a ssh remote, record it using initremote,
-    so that it can be easily enabled elsewhere.
-  * webapp: When setting up a ssh remote, if the user inputs ~/foo,
-    normalize that to foo, since it's in the home directory by default.
-  * Use exceptions in place of deprecated MonadCatchIO-transformers
-    Thanks, Ben Gamari.
-  * android: Run busybox install with -s, since some versions of Android
-    prohibit making hard links.
-  * Android webapp: Fix EvilSplicer bugs that mangled the css files,
-    preventing icons from displaying, and also slightly broke the js files.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 29 May 2014 14:41:56 -0400
-
-git-annex (5.20140517) unstable; urgency=medium
-
-  * webapp: Switched to bootstrap 3.
-    Thanks, Sören Brunk.
-  * Standalone builds now check gpg signatures before upgrading.
-  * Simplified repository description line format. The remote name,
-    if any, is always in square brackets after the description.
-  * assistant: Clean up stale tmp files on startup.
-  * webapp: Better ssh password prompting.
-  * Depend on git-remote-gcrypt 0.20130908-6. Older versions
-    fail when the assistant is run with no controlling tty.
-  * Added ddar special remote.
-    Thanks, Robie Basak.
-  * webapp: Fixed drag and drop to reorder the list of remotes.
-  * group: When no groups are specified to set, lists the current groups
-    of a repository.
-  * Add remote.$name.annex-shell configuration.
-    Thanks, Fraser Tweedale 
-  * Support symlinking git-annex and git-annex-shell
-    from the Linux standalone bundle into PATH.
-    Thanks, jlebar.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 17 May 2014 13:30:39 -0400
-
-git-annex (5.20140421) unstable; urgency=medium
-
-  * assistant: Now detects immediately when other repositories push
-    changes to a ssh remote, and pulls.
-    ** XMPP is no longer needed in this configuration! **
-    This requires the remote server have git-annex-shell with
-    notifychanges support (>= 5.20140405)
-  * webapp: Show a network signal icon next to ssh and xmpp remotes that
-    it's currently connected with.
-  * webapp: Rework xmpp nudge to prompt for either xmpp or a ssh remote 
-    to be set up.
-  * sync, assistant, remotedaemon: Use ssh connection caching for git pushes
-    and pulls.
-  * remotedaemon: When network connection is lost, close all cached ssh
-    connections.
-  * Improve handling of monthly/yearly scheduling.
-  * Avoid depending on shakespeare except for when building the webapp.
-  * uninit: Avoid making unncessary copies of files.
-  * info: Allow use in a repository where annex.uuid is not set.
-  * reinit: New command that can initialize a new repository using
-    the configuration of a previously known repository.
-    Useful if a repository got deleted and you want
-    to clone it back the way it was.
-  * drop --from: When local repository is untrusted, its copy of a file does
-    not count.
-  * Bring back rsync -p, but only when git-annex is running on a non-crippled
-    file system. This is a better approach to fix #700282 while not
-    unncessarily losing file permissions on non-crippled systems.
-  * webapp: Start even if the current directory is listed in
-    ~/.config/git-annex/autostart but no longer has a git repository in it.
-  * findref: New command, like find but shows files in a specified git ref.
-  * webapp: Fix UI for removing XMPP connection.
-  * When init detects that git is not configured to commit, and sets
-    user.email to work around the problem, also make it set user.name.
-  * webapp: Support using git-annex on a remote server, which was installed
-    from the standalone tarball or OSX app, and so does not have
-    git-annex in PATH (and may also not have git or rsync in PATH).
-  * standalone tarball, OSX app: Install a ~/.ssh/git-annex-wrapper, which
-    can be used to run git-annex, git, rsync, etc.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 20 Apr 2014 19:43:14 -0400
-
-git-annex (5.20140412) unstable; urgency=high
-
-  * Last release didn't quite fix the high cpu issue in all cases, this should.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 11 Apr 2014 17:14:38 -0400
-
-git-annex (5.20140411) unstable; urgency=high
-
-  * importfeed: Filename template can now contain an itempubdate variable.
-    Needs feed 0.3.9.2.
-  * Fix rsync progress parsing in locales that use comma in number display.
-    Closes: #744148
-  * assistant: Fix high CPU usage triggered when a monthly fsck is scheduled,
-    and the last time the job ran was a day of the month > 12. This caused a
-    runaway loop. Thanks to Anarcat for his assistance, and to Maximiliano
-    Curia for identifying the cause of this bug.
-  * Remove wget from OSX dmg, due to issues with cert paths that broke
-    git-annex automatic upgrading. Instead, curl is used, unless the
-    OSX system has wget installed, which will then be used.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 11 Apr 2014 14:59:49 -0400
-
-git-annex (5.20140405) unstable; urgency=medium
-
-  * git-annex-shell: Added notifychanges command.
-  * Improve display of dbus notifications. Thanks, Johan Kiviniemi.
-  * Fix nautilus script installation to not crash when the nautilus script dir
-    does not exist. Instead, only install scripts when the directory already
-    exists.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 05 Apr 2014 16:54:33 -0400
-
-git-annex (5.20140402) unstable; urgency=medium
-
-  * unannex, uninit: Avoid committing after every file is unannexed,
-    for massive speedup.
-  * --notify-finish switch will cause desktop notifications after each 
-    file upload/download/drop completes
-    (using the dbus Desktop Notifications Specification)
-  * --notify-start switch will show desktop notifications when each
-    file upload/download starts.
-  * webapp: Automatically install Nautilus integration scripts
-    to get and drop files.
-  * tahoe: Pass -d parameter before subcommand; putting it after
-    the subcommand no longer works with tahoe-lafs version 1.10.
-    (Thanks, Alberto Berti)
-  * forget --drop-dead: Avoid removing the dead remote from the trust.log,
-    so that if git remotes for it still exist anywhere, git annex info
-    will still know it's dead and not show it.
-  * git-annex-shell: Make configlist automatically initialize
-    a remote git repository, as long as a git-annex branch has
-    been pushed to it, to simplify setup of remote git repositories,
-    including via gitolite.
-  * add --include-dotfiles: New option, perhaps useful for backups.
-  * Version 5.20140227 broke creation of glacier repositories,
-    not including the datacenter and vault in their configuration.
-    This bug is fixed, but glacier repositories set up with the broken
-    version of git-annex need to have the datacenter and vault set
-    in order to be usable. This can be done using git annex enableremote
-    to add the missing settings. For details, see
-    http://git-annex.branchable.com/bugs/problems_with_glacier/
-  * Added required content configuration.
-  * assistant: Improve ssh authorized keys line generated in local pairing
-    or for a remote ssh server to set environment variables in an 
-    alternative way that works with the non-POSIX fish shell, as well
-    as POSIX shells.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 02 Apr 2014 16:42:53 -0400
-
-git-annex (5.20140320) unstable; urgency=medium
-
-  * Fix zombie leak and general inneficiency when copying files to a
-    local git repo.
-  * Fix ssh connection caching stop method to work with openssh 6.5p1,
-    which broke the old method.
-  * webapp: Added a "Sync now" item to each repository's menu.
-  * webapp: Use securemem for constant time auth token comparisons.
-  * copy --fast --to remote: Avoid printing anything for files that
-    are already believed to be present on the remote.
-  * Commands that allow specifying which repository to act on using
-    the repository's description will now fail when multiple repositories
-    match, rather than picking a repository at random.
-    (So will --in=)
-  * Better workaround for problem umasks when eg, setting up ssh keys.
-  * "standard" can now be used as a first-class keyword in preferred content
-    expressions. For example "standard or (include=otherdir/*)"
-  * groupwanted can be used in preferred content expressions.
-  * vicfg: Allows editing preferred content expressions for groups.
-  * Improve behavior when unable to parse a preferred content expression
-    (thanks, ion).
-  * metadata: Add --get
-  * metadata: Support --key option (and some other ones like --all)
-  * For each metadata field, there's now an automatically maintained
-    "$field-lastchanged" that gives the date of the last change to that
-    field. Also the "lastchanged" field for the date of the last change
-    to any of a file's metadata.
-  * unused: In direct mode, files that are deleted from the work tree
-    and so have no content present are no longer incorrectly detected as
-    unused.
-  * Avoid encoding errors when using the unused log file.
-  * map: Fix crash when one of the remotes of a repo is a local directory
-    that does not exist, or is not a git repo.
-  * repair: Improve memory usage when git fsck finds a great many broken
-    objects.
-  * Windows: Fix some filename encoding bugs.
-  * rsync special remote: Fix slashes when used on Windows.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 20 Mar 2014 13:21:12 -0400
-
-git-annex (5.20140306) unstable; urgency=high
-
-  * sync: Fix bug in direct mode that caused a file that was not
-    checked into git to be deleted when there was a conflicting
-    merge with a remote.
-  * webapp: Now supports HTTPS.
-  * webapp: No longer supports a port specified after --listen, since
-    it was buggy, and that use case is better supported by setting up HTTPS.
-  * annex.listen can be configured, instead of using --listen
-  * annex.startupscan can be set to false to disable the assistant's startup
-    scan.
-  * Probe for quvi version at run time.
-  * webapp: Filter out from Switch Repository list any
-    repositories listed in autostart file that don't have a
-    git directory anymore. (Or are bare)
-  * webapp: Refuse to start in a bare git repository.
-  * assistant --autostart: Refuse to start in a bare git repository.
-  * webapp: Don't list the public repository group when editing a
-    git repository; it only makes sense for special remotes.
-  * view, vfilter: Add support for filtering tags and values out of a view,
-    using !tag and field!=value.
-  * vadd: Allow listing multiple desired values for a field.
-  * view: Refuse to enter a view when no branch is currently checked out.
-  * metadata: To only set a field when it's not already got a value, use
-    -s field?=value
-  * Run .git/hooks/pre-commit-annex whenever a commit is made.
-  * sync: Automatically resolve merge conflict between and annexed file
-    and a regular git file.
-  * glacier: Pass --region to glacier checkpresent.
-  * webdav: When built with a new enough haskell DAV (0.6), disable
-    the http response timeout, which was only 5 seconds.
-  * webapp: Include no-pty in ssh authorized_keys lines.
-  * assistant: Smarter log file rotation, which takes free disk space
-    into account.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 06 Mar 2014 12:28:04 -0400
-
-git-annex (5.20140227) unstable; urgency=medium
-
-  * metadata: Field names limited to alphanumerics and a few whitelisted
-    punctuation characters to avoid issues with views, etc.
-  * metadata: Field names are now case insensative.
-  * When constructing views, metadata is available about the location of the
-    file in the view's reference branch. Allows incorporating parts of the
-    directory hierarchy in a view.
-    For example `git annex view tag=* podcasts/=*` makes a view in the form
-    tag/showname.
-  * --metadata field=value can now use globs to match, and matches
-    case insensatively, the same as git annex view field=value does.
-  * annex.genmetadata can be set to make git-annex automatically set
-    metadata (year and month) when adding files.
-  * Make annex.web-options be used in several places that call curl.
-  * Fix handling of rsync remote urls containing a username,
-    including rsync.net.
-  * Preserve metadata when staging a new version of an annexed file.
-  * metadata: Support --json
-  * webapp: Fix creation of box.com and Amazon S3 and Glacier
-    repositories, broken in 5.20140221.
-  * webdav: When built with DAV 0.6.0, use the new DAV monad to avoid
-    locking files, which is not needed by git-annex's use of webdav, and
-    does not work on Box.com.
-  * webdav: Fix path separator bug when used on Windows.
-  * repair: Optimise unpacking of pack files, and avoid repeated error
-    messages about corrupt pack files.
-  * Add build dep on regex-compat to fix build on mipsel, which lacks
-    regex-tdfa.
-  * Disable test suite on sparc, which is missing optparse-applicative.
-  * Put non-object tmp files in .git/annex/misctmp, leaving .git/annex/tmp
-    for only partially transferred objects.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 27 Feb 2014 11:34:19 -0400
-
-git-annex (5.20140221) unstable; urgency=medium
-
-  * metadata: New command that can attach metadata to files.
-  * --metadata can be used to limit commands to acting on files
-    that have particular metadata.
-  * Preferred content expressions can use metadata=field=value
-    to limit them to acting on files that have particular metadata.
-  * view: New command that creates and checks out a branch that provides
-    a structured view of selected metadata.
-  * vfilter, vadd, vpop, vcycle: New commands for operating within views.
-  * pre-commit: Update metadata when committing changes to locations
-    of annexed files within a view.
-  * Add progress display for transfers to/from external special remotes.
-  * unused: Fix to actually detect unused keys when in direct mode.
-  * fsck: When run with --all or --unused, while .gitattributes
-    annex.numcopies cannot be honored since it's operating on keys
-    instead of files, make it honor the global numcopies setting,
-    and the annex.numcopies git config setting.
-  * trust, untrust, semitrust, dead: Warn when the trust level is
-    overridden in .git/config.
-  * glacier: Do not try to run glacier value create when an existing glacier
-    remote is enabled.
-  * fsck: Refuse to do anything if more than one of --incremental, --more,
-    and --incremental-schedule are given, since it's not clear which option
-    should win.
-  * Windows webapp: Can set up box.com, Amazon S3, and rsync.net remotes
-  * Windows webapp: Can create repos on removable drives.
-  * Windows: Ensure HOME is set, as needed by bundled cygwin utilities.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 21 Feb 2014 11:23:59 -0400
-
-git-annex (5.20140210) unstable; urgency=medium
-
-  * --in can now refer to files that were located in a repository at
-    some past date. For example, --in="here@{yesterday}"
-  * Fixed direct mode annexed content locking code, which is used to
-    guard against recursive file drops.
-  * This is the first beta-level release of the Windows port with important
-    fixes (see below).
-    (The webapp and assistant are still alpha-level on Windows.)
-  * sync --content: Honor annex-ignore configuration.
-  * sync: Don't try to sync with xmpp remotes, which are only currently
-    supported when using the assistant.
-  * sync --content: Re-pull from remotes after downloading content,
-    since that can take a while and other changes may be pushed in the
-    meantime.
-  * sync --content: Reuse smart copy code from copy command, including
-    handling and repairing out of date location tracking info.
-    Closes: #737480
-  * sync --content: Drop files from remotes that don't want them after
-    getting them.
-  * sync: Fix bug in automatic merge conflict resolution code when used
-    on a filesystem not supporting symlinks, which resulted in it losing
-    track of the symlink bit of annexed files.
-  * Added ways to configure rsync options to be used only when uploading
-    or downloading from a remote. Useful to eg limit upload bandwidth.
-  * Fix initremote with encryption=pubkey to work with S3, glacier, webdav,
-    and external special remotes.
-  * Avoid building with DAV 0.6 which is badly broken (see #737902).
-  * Fix dropping of unused keys with spaces in their name.
-  * Fix build on platforms not supporting the webapp.
-  * Document in man page that sshcaching uses ssh ControlMaster.
-    Closes: #737476
-  * Windows: It's now safe to run multiple git-annex processes concurrently
-    on Windows; the lock files have been sorted out.
-  * Windows: Avoid using unix-compat's rename, which refuses to rename
-    directories.
-  * Windows: Fix deletion of repositories by test suite and webapp.
-  * Windows: Test suite 100% passes again.
-  * Windows: Fix bug in symlink calculation code.
-  * Windows: Fix handling of absolute unix-style git repository paths.
-  * Android: Avoid crashing when unable to set file mode for ssh config file
-    due to Android filesystem horribleness.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 10 Feb 2014 12:54:57 -0400
-
-git-annex (5.20140127) unstable; urgency=medium
-
-  * sync --content: New option that makes the content of annexed files be
-    transferred. Similar to the assistant, this honors any configured
-    preferred content expressions.
-  * Remove --json option from commands not supporting it.
-  * status: Support --json.
-  * list: Fix specifying of files to list.
-  * Allow --all to be mixed with matching options like --copies and --in
-    (but not --include and --exclude).
-  * numcopies: New command, sets global numcopies value that is seen by all
-    clones of a repository.
-  * The annex.numcopies git config setting is deprecated. Once the numcopies
-    command is used to set the global number of copies, any annex.numcopies
-    git configs will be ignored.
-  * assistant: Make the prefs page set the global numcopies.
-  * Add lackingcopies, approxlackingcopies, and unused to
-    preferred content expressions.
-  * Client, transfer, incremental backup, and archive repositories
-    now want to get content that does not yet have enough copies.
-  * Client, transfer, and source repositories now do not want to retain
-    unused file contents.
-  * assistant: Checks daily for unused file contents, and when possible
-    moves them to a repository (such as a backup repository) that
-    wants to retain them.
-  * assistant: annex.expireunused can be configured to cause unused
-    file contents to be deleted after some period of time.
-  * webapp: Nudge user to see if they want to expire old unused file
-    contents when a lot of them seem to be piling up in the repository.
-  * repair: Check git version at run time.
-  * assistant: Run the periodic git gc in batch mode.
-  * added annex.secure-erase-command config option.
-  * test suite: Use tasty-rerun, and expose tasty command-line options.
-  * Optimise non-bare http remotes; no longer does a 404 to the wrong
-    url every time before trying the right url. Needs annex-bare to be
-    set to false, which is done when initially probing the uuid of a
-    http remote.
-  * webapp: After upgrading a git repository to git-annex, fix
-    bug that made it temporarily not be synced with.
-  * whereis: Support --all.
-  * All commands that support --all also support a --key option,
-    which limits them to acting on a single key.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 27 Jan 2014 13:43:28 -0400
-
-git-annex (5.20140117) unstable; urgency=medium
-
-  * Really fix FTBFS on mipsel and sparc due to test suite not being available
-    on those architectures.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 17 Jan 2014 14:46:27 -0400
-
-git-annex (5.20140116) unstable; urgency=medium
-
-  * Added tahoe special remote.
-  * external special remote protocol: Added GETGITDIR, and GETAVAILABILITY.
-  * Refuse to build with git older than 1.7.1.1, which is needed for
-    git checkout -B
-  * map: Fix display of v5 direct mode repos.
-  * repair: Support old git versions from before git fsck --no-dangling was
-    implemented.
-  * Fix a long-standing bug that could cause the wrong index file to be used
-    when committing to the git-annex branch, if GIT_INDEX_FILE is set in the
-    environment. This typically resulted in git-annex branch log files being
-    committed to the master branch and later showing up in the work tree.
-    (These log files can be safely removed.)
-  * assistant: Detect if .git/annex/index is corrupt at startup, and
-    recover.
-  * repair: Fix bug in packed refs file exploding code that caused a .gitrefs
-    directory to be created instead of .git/refs
-  * Fix FTBFS on mipsel and sparc due to test suite not being available
-    on those architectures.
-  * Android: Avoid passing --clobber to busybox wget.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 16 Jan 2014 11:34:54 -0400
-
-git-annex (5.20140107) unstable; urgency=medium
-
-  * mirror: Support --all (and --unused).
-  * external special remote protocol: Added GETUUID, GETWANTED, SETWANTED,
-    SETSTATE, GETSTATE, DEBUG.
-  * Windows: Fix bug in direct mode merge code that could cause files
-    in subdirectories to go missing.
-  * Windows: Avoid eating stdin when running ssh to add a authorized key,
-    since this is used for password prompting.
-  * Avoid looping if long-running git cat-file or git hash-object crashes
-    and keeps crashing when restarted.
-  * Assistant: Remove stale MERGE_HEAD files in lockfile cleanup.
-  * Remotes can now be made read-only, by setting remote.<name>.annex-readonly
-  * wanted, schedule: Avoid printing "ok" after requested value.
-  * assistant: Ensure that .ssh/config and .ssh/authorized_keys are not
-    group or world writable when writing to those files, as that can make
-    ssh refuse to use them, if it allows another user to write to them.
-  * addurl, importfeed: Honor annex.diskreserve as long as the size of the
-    url can be checked.
-  * add: Fix rollback when disk is completely full.
-  * assistant: Fixed several minor memory leaks that manifested when
-    adding a large number of files.
-  * assistant: Start a new git-annex transferkeys process
-    after a network connection change, so that remotes that use a persistent
-    network connection are restarted.
-  * Adjust Debian build deps to match current state of sparc, mipsel.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 07 Jan 2014 12:22:18 -0400
-
-git-annex (5.20131230) unstable; urgency=medium
-
-  * Added new external special remote interface.
-  * importfeed: Support youtube playlists.
-  * Add tasty to build-depends, so that test suite builds again.
-    (tasty was stuck in incoming.)
-  * Fix typo in test suite.
-  * Fix bug in Linux standalone build's shimming that broke git-annex-shell.
-  * Include git-receive-pack, git-upload-pack, git, and git-shell wrappers
-    in the Linux standalone build, and OSX app, so they will be available
-    when it's added to PATH.
-  * addurl, importfeed: Sanitize | and some other symbols and special
-    characters.
-  * Auto-upgrade v3 indirect repos to v5 with no changes.
-    This also fixes a problem when a direct mode repo was somehow set to v3
-    rather than v4, and so the automatic direct mode upgrade to v5 was not
-    done.
-  * Android: Avoid trying to use Android's own ionice, which does not
-    allow specifying a command to run. Fixes transferring files to/from
-    android and probably a few other things.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 30 Dec 2013 14:13:40 -0400
-
-git-annex (5.20131221) unstable; urgency=low
-
-  * assistant: Fix OSX-specific bug that caused the startup scan to try to
-    follow symlinks to other directories, and add their contents to the annex.
-  * assistant: Set StrictHostKeyChecking yes when creating ssh remotes,
-    and add it to the configuration for any ssh remotes previously created
-    by the assistant. This avoids repeated prompts by ssh if the host key
-    changes, instead syncing with such a remote will fail. Closes: #732602
-  * Fix test suite to cover lock --force change.
-  * Add plumbing-level lookupkey and examinekey commands.
-  * find --format: Added hashdirlower, hashdirmixed, keyname, and mtime
-    format variables.
-  * assistant: Always batch changes found in startup scan.
-  * An armel Linux standalone build is now available, which includes the
-    webapp.
-  * Programs from Linux and OSX standalone builds can now be symlinked
-    into a directory in PATH as an alternative installation method, and will
-    use readlink to find where the build was unpacked.
-  * Include man pages in Linux and OSX standalone builds.
-  * Linux standalone build now includes its own glibc and forces the linker to
-    use it, to remove dependence on the host glibc.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 21 Dec 2013 12:00:17 -0400
-
-git-annex (5.20131213) unstable; urgency=low
-
-  * Avoid using git commit in direct mode, since in some situations
-    it will read the full contents of files in the tree.
-  * assistant: Batch jobs are now run with ionice and nocache, when
-    those commands are available.
-  * assistant: Run transferkeys as batch jobs.
-  * Automatically fix up bad bare repositories created by
-    versions 5.20131118 through 5.20131127.
-  * rsync special remote: Fix fallback mode for rsync remotes that
-    use hashDirMixed. Closes: #731142
-  * copy --from, get --from: When --force is used, ignore the
-    location log and always try to get the file from the remote.
-  * Deal with box.com changing the url of their webdav endpoint.
-  * Android: Fix SRV record lookups for XMPP to use android getprop
-    command to find DNS server, since there is no resolv.conf.
-  * import: Add --skip-duplicates option.
-  * lock: Require --force. Closes: #731606
-  * import: better handling of overwriting an existing file/directory/broken
-    link when importing
-  * Windows: assistant and webapp work! (very experimental)
-  * Windows: Support annex.diskreserve.
-  * Fix bad behavior in Firefox, which was caused by an earlier fix to
-    bad behavior in Chromium.
-  * repair: Improve repair of git-annex index file.
-  * repair: Remove damaged git-annex sync branches.
-  * status: Ignore new files that are gitignored.
-  * Fix direct mode's handling when modifications to non-annexed files
-    are pulled from a remote. A bug prevented the files from being updated
-    in the work tree, and this caused the modification to be reverted.
-  * OSX: Remove ssh and ssh-keygen from dmg as they're included in OSX by
-    default.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 13 Dec 2013 14:20:32 -0400
-
-git-annex (5.20131130) unstable; urgency=low
-
-  * init: Fix a bug that caused git annex init, when run in a bare
-    repository, to set core.bare=false.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 30 Nov 2013 16:32:35 -0400
-
-git-annex (5.20131127.1) unstable; urgency=low
-
-  * Rebuild that does not try to use quvi 0.9 from experimental.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 28 Nov 2013 07:57:36 -0400
-
-git-annex (5.20131127) unstable; urgency=low
-
-  * webapp: Detect when upgrades are available, and upgrade if the user
-    desires.
-    (Only when git-annex is installed using the prebuilt binaries
-    from git-annex upstream, not from eg Debian.)
-  * assistant: Detect when the git-annex binary is modified or replaced,
-    and either prompt the user to restart the program, or automatically
-    restart it.
-  * annex.autoupgrade configures both the above upgrade behaviors.
-  * Added support for quvi 0.9. Slightly suboptimal due to limitations in its
-    interface compared with the old version.
-  * Bug fix: annex.version did not get set on automatic upgrade to v5 direct
-    mode repo, so the upgrade was performed repeatedly, slowing commands down.
-  * webapp: Fix bug that broke switching between local repositories
-    that use the new guarded direct mode.
-  * Android: Fix stripping of the git-annex binary.
-  * Android: Make terminal app show git-annex version number.
-  * Android: Re-enable XMPP support.
-  * reinject: Allow to be used in direct mode.
-  * Futher improvements to git repo repair. Has now been tested in tens
-    of thousands of intentionally damaged repos, and successfully
-    repaired them all.
-  * Allow use of --unused in bare repository.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 27 Nov 2013 18:41:44 -0400
-
-git-annex (5.20131120) unstable; urgency=low
-
-  * Fix Debian package to not try to run test suite, since haskell-tasty
-    is not out of new or in Build-Depends yet.
-  * dropunused, addunused: Allow "all" instead of a range to
-    act on all unused data.
-  * Ensure execute bit is set on directories when core.sharedrepository is set.
-  * Ensure that core.sharedrepository is honored when creating the .git/annex
-    directory.
-  * Improve repair code in the case where the index file is corrupt,
-    and this hides other problems from git fsck.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 20 Nov 2013 12:54:18 -0400
-
-git-annex (5.20131118) unstable; urgency=low
-
-  * Direct mode repositories now have core.bare=true set, to prevent
-    accidentally running git commands that try to operate on the work tree,
-    and so do the wrong thing in direct mode.
-  * annex.version is now set to 5 for direct mode repositories.
-    This upgrade is handled fully automatically, no need to run
-    git annex upgrade
-  * The "status" command has been renamed to "info", to allow
-    "git annex status" to be used in direct mode repositories, now that
-    "git status" won't work in them.
-  * The -c option now not only modifies the git configuration seen by
-    git-annex, but it is passed along to every git command git-annex runs.
-  * watcher: Avoid loop when adding a file owned by someone else fails
-    in indirect mode because its permissions cannot be modified.
-  * webapp: Avoid encoding problems when displaying the daemon log file.
-  * webapp: Improve UI around remote that have no annex.uuid set,
-    either because setup of them is incomplete, or because the remote
-    git repository is not a git-annex repository.
-  * Include ssh-keygen in standalone bundle.
-  * Allow optionally configuring git-annex with -fEKG to enable awesome
-    remote monitoring interfaceat http://localhost:4242/
-  * Fix bug that caused bad information to be written to the git-annex branch
-    when running describe or other commands with a remote that has no uuid.
-  * Work around Android linker problem that had prevented git-annex from
-    running on Android 4.3 and 4.4.
-  * repair: Handle case where index file is corrupt, but all objects are ok.
-  * assistant: Notice on startup when the index file is corrupt, and
-    auto-repair.
-  * Fix direct mode merge bug when a direct mode file was deleted and replaced
-    with a directory. An ordering problem caused the directory to not get
-    created in this case.
-    Thanks to Tim for the test case.
-  * Direct mode .git/annex/objects directories are no longer left writable,
-    because that allowed writing to symlinks of files that are not present,
-    which followed the link and put bad content in an object location.
-    Thanks to Tim for the test case.
-  * fsck: Fix up .git/annex/object directory permissions.
-  * Switched to the tasty test framework.
-  * Android: Adjust default .gitignore to ignore .thumbnails at any location
-    in the tree, not just at its top.
-  * webapp: Check annex.version.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 18 Nov 2013 10:45:43 -0400
-
-git-annex (4.20131106) unstable; urgency=low
-
-  * Improve local pairing behavior when two computers both try to start
-    the pairing process separately.
-  * sync: Work even when the local git repository is new and empty,
-    with no master branch.
-  * gcrypt, bup: Fix bug that prevented using these special remotes
-    with encryption=pubkey.
-  * Fix enabling of gcrypt repository accessed over ssh;
-    git-annex-shell gcryptsetup had a bug that caused it to fail
-    with permission denied.
-  * Fix zombie process that occurred when switching between repository
-    views in the webapp.
-  * map: Work when there are gcrypt remotes.
-  * Fix build w/o webapp.
-  * Fix exception handling bug that could cause .git/annex/index to be used
-    for git commits outside the git-annex branch. Known to affect git-annex
-    when used with the git shipped with Ubuntu 13.10.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 06 Nov 2013 11:17:47 -0400
-
-git-annex (4.20131101) unstable; urgency=low
-
-  * The "git annex content" command is renamed to "git annex wanted".
-  * New --want-get and --want-drop options which can be used to
-    test preferred content settings.
-    For example, "git annex find --in . --want-drop"
-  * assistant: When autostarted, wait 5 seconds before running the startup
-    scan, to avoid contending with the user's desktop login process.
-  * webapp: When setting up a bare shared repository, enable non-fast-forward
-    pushes.
-  * sync: Show a hint about receive.denyNonFastForwards when a push fails.
-  * directory, webdav: Fix bug introduced in version 4.20131002 that
-    caused the chunkcount file to not be written. Work around repositories
-    without such a file, so files can still be retreived from them.
-  * assistant: Automatically repair damanged git repository, if it can
-    be done without losing data.
-  * assistant: Support repairing git remotes that are locally accessible
-    (eg, on removable drives).
-  * add: Fix reversion in 4.20130827 when adding unlocked files that have
-    not yet been committed.
-  * unannex: New, much slower, but more safe behavior: Copies files out of
-    the annex. This avoids an unannex of one file breaking other files that
-    link to the same content. Also, it means that the content
-    remains in the annex using up space until cleaned up with 
-    "git annex unused".
-    (The behavior of unannex --fast has not changed; it still hard links
-    to content in the annex. --fast was not made the default because it is
-    potentially unsafe; editing such a hard linked file can unexpectedly
-    change content stored in the annex.)
-
- -- Joey Hess <joeyh@debian.org>  Fri, 01 Nov 2013 11:34:27 -0400
-
-git-annex (4.20131024) unstable; urgency=low
-
-  * webapp: Fix bug when adding a remote and git-remote-gcrypt
-    is not installed.
-  * The assitant can now run scheduled incremental fsck jobs on the local
-    repository and remotes. These can be configured using vicfg or with the
-    webapp.
-  * repair: New command, which can repair damaged git repositories
-    (even ones not using git-annex).
-  * webapp: When git repository damange is detected, repairs can be
-    done using the webapp UI.
-  * Automatically and safely detect and recover from dangling
-    .git/annex/index.lock files, which would prevent git from
-    committing to the git-annex branch, eg after a crash.
-  * assistant: Detect stale git lock files at startup time, and remove them.
-  * addurl: Better sanitization of generated filenames.
-  * Better sanitization of problem characters when generating URL and WORM
-    keys.
-  * The control socket path passed to ssh needs to be 17 characters
-    shorter than the maximum unix domain socket length, because ssh
-    appends stuff to it to make a temporary filename. Closes: #725512
-  * status: Fix space leak in local mode, introduced in version 4.20130920.
-  * import: Skip .git directories.
-  * Remove bogus runshell loop check.
-  * addurl: Improve message when adding url with wrong size to existing file.
-  * Fixed handling of URL keys that have no recorded size.
-  * status: Fix a crash if a temp file went away while its size was
-    being checked for status.
-  * Deal with git check-attr -z output format change in git 1.8.5.
-  * Work around sed output difference that led to version containing a newline
-    on OSX.
-  * sync: Fix automatic resolution of merge conflicts where one side is an
-    annexed file, and the other side is a non-annexed file, or a directory.
-  * S3: Try to ensure bucket name is valid for archive.org.
-  * assistant: Bug fix: When run in a subdirectory, files from incoming merges
-    were wrongly added to that subdirectory, and removed from their original
-    locations.
-  * Windows: Deal with strange msysgit 1.8.4 behavior of not understanding
-    DOS formatted paths for --git-dir and --work-tree.
-  * Removed workaround for bug in git 1.8.4r0.
-  * Added git-recover-repository command to git-annex source
-    (not built by default; this needs to move to someplace else).
-  * webapp: Move sidebar to the right hand side of the screen.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 24 Oct 2013 12:59:55 -0400
-
-git-annex (4.20131002) unstable; urgency=low
-
-  * Note that the layout of gcrypt repositories has changed, and
-    if you created one you must manually upgrade it.
-    See http://git-annex.branchable.com/upgrades/gcrypt/
-  * webapp: Support setting up and using encrypted git repositories on
-    any ssh server, as well as on rsync.net.
-  * git-annex-shell: Added support for operating inside gcrypt repositories.
-  * Disable receive.denyNonFastForwards when setting up a gcrypt special
-    remote, since gcrypt needs to be able to fast-forward the master branch.
-  * import: Preserve top-level directory structure.
-  * Use cryptohash rather than SHA for hashing when no external hash program
-    is available. This is a significant speedup for SHA256 on OSX, for
-    example.
-  * Added SKEIN256 and SKEIN512 backends.
-  * Android build redone from scratch, many dependencies updated,
-    and entire build can now be done using provided scripts.
-  * assistant: Clear the list of failed transfers when doing a full transfer
-    scan. This prevents repeated retries to download files that are not
-    available, or are not referenced by the current git tree.
-  * indirect, direct: Better behavior when a file is not owned by
-    the user running the conversion.
-  * add, import, assistant: Better preserve the mtime of symlinks,
-    when when adding content that gets deduplicated.
-  * Send a git-annex user-agent when downloading urls.
-    Overridable with --user-agent option.
-    (Not yet done for S3 or WebDAV due to limitations of libraries used.)
-  * webapp: Fixed a bug where when a new remote is added, one file
-    may fail to sync to or from it due to the transferrer process not
-    yet knowing about the new remote.
-  * OSX: Bundled gpg upgraded, now compatible with config files
-    written by MacGPG.
-  * assistant: More robust inotify handling; avoid crashing if a directory
-    cannot be read.
-  * Moved list of backends and remote types from status to version
-    command.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 02 Oct 2013 16:00:39 -0400
-
-git-annex (4.20130920) unstable; urgency=low
-
-  * webapp: Initial support for setting up encrypted removable drives.
-  * Recommend using my patched gcrypt, which fixes some bugs:
-    https://github.com/joeyh/git-remote-gcrypt
-  * Support hot-swapping of removable drives containing gcrypt repositories.
-  * list: New command, displays a compact table of remotes that
-    contain files.
-    (Thanks, anarcat for display code and mastensg for inspiration.)
-  * fsck: Fix detection and fixing of present direct mode files that are
-    wrongly represented as standin symlinks on crippled filesystems.
-  * sync: Fix bug that caused direct mode mappings to not be updated
-    when merging files into the tree on Windows.
-  * sync: Don't fail if the directory it is run in gets removed by the
-    sync.
-  * addurl: Fix quvi audodetection, broken in last release.
-  * status: In local mode, displays information about variance from configured
-    numcopies levels. (--fast avoids calculating these)
-  * gcrypt: Ensure that signing key is set to one of the participants keys.
-  * webapp: Show encryption information when editing a remote.
-  * Avoid unnecessarily catting non-symlink files from git, which can be
-    so large it runs out of memory.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 20 Sep 2013 10:34:51 -0400
-
-git-annex (4.20130911) unstable; urgency=low
-
-  * Fix problem with test suite in non-unicode locale.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 11 Sep 2013 12:14:16 -0400
-
-git-annex (4.20130909) unstable; urgency=low
-
-  * initremote: Syntax change when setting up an encrypted special remote.
-    Now use keyid=$KEYID rather than the old encryption=$KEYID
-  * forget: New command, causes git-annex branch history to be forgotten
-    in a way that will spread to other clones of the repository.
-    (As long as they're running this version or newer of git-annex.)
-  * forget --drop-dead: Completely removes mentions of repositories that
-    have been marked as dead from the git-annex branch.
-  * sync, assistant: Force push of the git-annex branch. Necessary
-    to ensure it gets pushed to remotes after being rewritten by forget.
-  * Added gcrypt support. This combines a fully encrypted git
-    repository (using git-remote-gcrypt) with an encrypted git-annex special
-    remote.
-  * sync: Support syncing with gcrypt remotes.
-  * importfeed: Also ignore transient problems with downloading content
-    from feeds.
-  * Honor core.sharedrepository when receiving and adding files in direct
-    mode.
-  * enableremote: gpg keys can be removed from those a remote encrypts
-    to by passing "keyid-=$KEYID". keyid+= is also provided.
-    (Thanks, guilhem for the patch.)
-  * Added encryption=pubkey scheme, which encrypts to public keys directly
-    rather than the hybrid approach. See documentation for advantages
-    and disadvantages, but encryption=hybrid is the recommended scheme still.
-    (Thanks, guilhem for the patch.)
-  * Fix Feeds display in build flags.
-  * Remind user when annex-ignore is set for some remotes, if unable to
-    get or drop a file, possibly because it's on an ignored remote.
-  * gpg: Force --no-textmode in case the user has it turned on in config.
-  * webapp: Improve javascript's handling of longpolling connection
-    failures, by reloading the current page in this case.
-    Works around chromium behavior where ajax connections to urls
-    that were already accessed are denied after navigating back to
-    a previous page.
-  * Allow building without quvi support.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 09 Sep 2013 09:47:02 -0400
-
-git-annex (4.20130827) unstable; urgency=low
-
-  * Youtube support! (And 53 other video hosts). When quvi is installed,
-    git-annex addurl automatically uses it to detect when an page is
-    a video, and downloads the video file.
-  * web special remote: Also support using quvi, for getting files,
-    or checking if files exist in the web.
-  * unused: Is now a minimum of 30 times faster, and typically many
-    more times than that (when a repository has several branches).
-    (Thanks, guilhem for the patch.)
-  * unused: Fix bugs in two edge cases involving manually staged changes.
-    (Thanks, guilhem for the patch.)
-  * Android: Fix bug in terminal app that caused it to spin using much 
-    CPU and battery. This problem was introduced in version 4.20130601.
-  * sync, merge: Bug fix: Don't try to merge into master when in a bare repo.
-  * import: Add options to control handling of duplicate files:
-    --duplicate, --deduplicate, and --clean-duplicates
-  * mirror: New command, makes two repositories contain the same set of files.
-  * Set --clobber when running wget to ensure resuming works properly.
-  * Unescape characters in 'file://...' URIs. (Thanks, guilhem for the patch.)
-  * Better error message when trying to use a git remote that has annex.ignore
-    set.
-  * Fix bug that caused typechanged symlinks to be assumed to be unlocked
-    files, so they were added to the annex by the pre-commit hook.
-  * Debian: Run the builtin test suite as an autopkgtest.
-  * Debian: Recommend ssh-askpass, which ssh will use when the assistant
-    is run w/o a tty. Closes: #719832
-
- -- Joey Hess <joeyh@debian.org>  Tue, 27 Aug 2013 11:03:00 -0400
-
-git-annex (4.20130815) unstable; urgency=low
-
-  * assistant, watcher: .gitignore files and other git ignores are now
-    honored, when git 1.8.4 or newer is installed.
-    (Thanks, Adam Spiers, for getting the necessary support into git for this.)
-  * importfeed: Ignores transient problems with feeds. Only exits nonzero
-    when a feed has repeatedly had a problems for at least 1 day.
-  * importfeed: Fix handling of dots in extensions.
-  * Windows: Added support for encrypted special remotes.
-  * Windows: Fixed permissions problem that prevented removing files
-    from directory special remote. Directory special remotes now fully usable.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 15 Aug 2013 10:14:33 +0200
-
-git-annex (4.20130802) unstable; urgency=low
-
-  * dropunused behavior change: Now refuses to drop the last copy of a
-    file, unless you use the --force.
-    This was the last place in git-annex that could remove data referred
-    to by the git history, without being forced.
-    Like drop, dropunused checks remotes, and honors the global
-    annex.numcopies setting. (However, .gitattributes settings cannot
-    apply to unused files.) 
-  * Fix inverted logic in last release's fix for data loss bug,
-    that caused git-annex sync on FAT or other crippled filesystems to add
-    symlink standin files to the annex.
-  * importfeed can be used to import files from podcast feeds.
-  * webapp: When setting up a dedicated ssh key to access the annex
-    on a host, set IdentitiesOnly to prevent the ssh-agent from forcing
-    use of a different ssh key. That could result in unncessary password
-    prompts, or prevent git-annex-shell from being run on the remote host.
-  * webapp: Improve handling of remotes whose setup has stalled.
-  * Add status message to XMPP presence tag, to identify to others that
-    the client is a git-annex client. Closes: #717652
-  * webapp: When creating a repository on a removable drive, set
-    core.fsyncobjectfiles, to help prevent data loss when the drive is yanked.
-  * Always build with -threaded, to avoid a deadlock when communicating with
-    gpg.
-  * unused: No longer shows as unused tmp files that are actively being
-    transferred.
-  * assistant: Fix NetWatcher to not sync with remotes that have
-    remote.<name>.annex-sync set to false.
-  * assistant: Fix deadlock that could occur when adding a lot of files
-    at once in indirect mode.
-  * assistant: Fix bug that caused it to stall when adding a very large
-    number of files at once (around 5 thousand).
-  * OSX: Make git-annex-webapp run in the background, so that the app icon
-    can be clicked on the open a new webapp when the assistant is already
-    running.
-  * Improve test suite on Windows; now tests git annex sync.
-  * Fix a few bugs involving filenames that are at or near the filesystem's
-    maximum filename length limit.
-  * find: Avoid polluting stdout with progress messages. Closes: #718186
-  * Escape ':' in file/directory names to avoid it being treated
-    as a pathspec by some git commands. Closes: #718185
-  * Slow and ugly work around for bug #718517 in git 1.8.4~rc0, which broke
-    git-cat-file --batch for filenames containing spaces.
-    (Will be reverted after next git pre-release fixes the problem.)
-
- -- Joey Hess <joeyh@debian.org>  Fri, 02 Aug 2013 11:35:16 -0400
-
-git-annex (4.20130723) unstable; urgency=low
-
-  * Fix data loss bug when adding an (uncompressed) tarball of a
-    git-annex repository, or other file that begins with something
-    that can be mistaken for a git-annex link. Closes: #717456
-  * New improved version of the git-annex logo, contributed by
-    John Lawrence.
-  * Rsync.net have committed to support git-annex and offer a special
-    discounted rate for git-annex users. Updated the webapp to reflect this.
-    http://www.rsync.net/products/git-annex-pricing.html
-  * Install XDG desktop icon files.
-  * Support unannex and uninit in direct mode.
-  * Support import in direct mode.
-  * webapp: Better display of added files.
-  * fix: Preserve the original mtime of fixed symlinks.
-  * uninit: Preserve .git/annex/objects at the end, if it still
-    has content, so that old versions of files and deleted files
-    are not deleted. Print a message with some suggested actions.
-  * When a transfer is already being run by another process,
-    proceed on to the next file, rather than dying.
-  * Fix checking when content is present in a non-bare repository
-    accessed via http.
-  * Display byte sizes with more precision.
-  * watcher: Fixed a crash that could occur when a directory was renamed
-    or deleted before it could be scanned.
-  * watcher: Partially worked around a bug in hinotify, no longer crashes
-    if hinotify cannot process a directory (but can't detect changes in it)
-  * directory special remote: Fix checking that there is enough disk space
-    to hold an object, was broken when using encryption.
-  * webapp: Differentiate between creating a new S3/Glacier/WebDav remote,
-    and initializing an existing remote. When creating a new remote, avoid
-    conflicts with other existing (or deleted) remotes with the same name.
-  * When an XMPP server has SRV records, try them, but don't then fall
-    back to the regular host if they all fail.
-  * For long hostnames, use a hash of the hostname to generate the socket
-    file for ssh connection caching.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 23 Jul 2013 10:46:05 -0400
-
-git-annex (4.20130709) unstable; urgency=low
-
-  * --all: New switch that makes git-annex operate on all data stored
-    in the git annex, including old versions of files. Supported by
-    fsck, get, move, copy.
-  * --unused: New switch that makes git-annex operate on all data found
-    by the last run of git annex unused. Supported by fsck, move, copy.
-  * get, move, copy: Can now be run in a bare repository,
-    like fsck already could. --all is enabled automatically in this case.
-  * merge: Now also merges synced/master or similar branches, which 
-    makes it useful to put in a post-receive hook to make a repository
-    automatically update its working copy when git annex sync or the assistant
-    sync with it.
-  * webapp: Fix ssh setup with nonstandard port, broken in last release.
-  * init: Detect systems on which git commit fails due to not being able to
-    determine the FQDN, and put in a workaround so committing to the git-annex
-    branch works.
-  * addurl --pathdepth: Fix failure when the pathdepth specified is deeper
-    than the urls's path.
-  * Windows: Look for .exe extension when searching for a command in path.
-  * Pass -f to curl when downloading a file with it, so it propigates failure. 
-  * Windows: Fix url to object when using a http remote.
-  * webapp: Fix authorized_keys line added when setting up a rsync remote
-    on a server that also supports git-annex, to not force running
-    git-annex-shell.
-  * OSX Mountain Lion: Fixed gpg bundled in dmg to not fail due to a missing
-    gpg-agent.
-  * Android: gpg is built without --enable-minimal, so it interoperates
-    better with other gpg builds that may default to using other algorithms
-    for encryption.
-  * dropunused, addunused: Complain when asked to operate on a number that
-    does not correspond to any unused key.
-  * fsck: Don't claim to fix direct mode when run on a symlink whose content
-    is not present.
-  * Make --numcopies override annex.numcopies set in .gitattributes.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 09 Jul 2013 13:55:39 -0400
-
-git-annex (4.20130627) unstable; urgency=low
-
-  * assistant --autostart: Automatically ionices the daemons it starts.
-  * assistant: Daily sanity check thread is run niced.
-  * bup: Handle /~/ in bup remote paths.
-    Thanks, Oliver Matthews
-  * fsck: Ensures that direct mode is used for files when it's enabled.
-  * webapp: Fix bug when setting up a remote ssh repo repeatedly on the same
-    server.
-  * webapp: Ensure that ssh keys generated for different directories
-    on a server are always different.
-  * webapp: Fix bug setting up ssh repo if the user enters "~/" at the start 
-    of the path.
-  * assistant: Fix bug that prevented adding files written by gnucash, 
-    and more generally support adding hard links to files. However,
-    other operations on hard links are still unsupported.
-  * webapp: Fix bug that caused the webapp to hang when built with yesod 1.2.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 27 Jun 2013 14:21:55 -0400
-
-git-annex (4.20130621) unstable; urgency=low
-
-  * Supports indirect mode on encfs in paranoia mode, and other
-    filesystems that do not support hard links, but do support
-    symlinks and other POSIX filesystem features.
-  * Android: Add .thumbnails to .gitignore when setting up a camera
-    repository.
-  * Android: Make the "Open webapp" menu item open the just created
-    repository when a new repo is made.
-  * webapp: When the user switches to display a different repository,
-    that repository becomes the default repository to be displayed next time
-    the webapp gets started.
-  * glacier: Better handling of the glacier inventory, which avoids
-    duplicate uploads to the same glacier repository by `git annex copy`.
-  * Direct mode: No longer temporarily remove write permission bit of files
-    when adding them.
-  * sync: Better support for bare git remotes. Now pushes directly to the
-    master branch on such a remote, instead of to synced/master. This
-    makes it easier to clone from a bare git remote that has been populated
-    with git annex sync or by the assistant.
-  * Android: Fix use of cp command to not try to use features present
-    only on build system.
-  * Windows: Fix hang when adding several files at once.
-  * assistant: In direct mode, objects are now only dropped when all
-    associated files are unwanted. This avoids a repreated drop/get loop
-    of a file that has a copy in an archive directory, and a copy not in an
-    archive directory. (Indirect mode still has some buggy behavior in this
-    area, since it does not keep track of associated files.)
-    Closes: #712060
-  * status: No longer shows dead repositories.
-  * annex.debug can now be set to enable debug logging by default.
-    The webapp's debugging check box does this.
-  * fsck: Avoid getting confused by Windows path separators
-  * Windows: Multiple bug fixes, including fixing the data written to the
-    git-annex branch.
-  * Windows: The test suite now passes on Windows (a few broken parts are
-    disabled).
-  * assistant: On Linux, the expensive transfer scan is run niced.
-  * Enable assistant and WebDAV support on powerpc and sparc architectures,
-    which now have the necessary dependencies built.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 21 Jun 2013 10:18:41 -0400
-
-git-annex (4.20130601) unstable; urgency=medium
-
-  * XMPP: Git push over xmpp made much more robust.
-  * XMPP: Avoid redundant and unncessary pushes. Note that this breaks
-    compatibility with previous versions of git-annex, which will refuse
-    to accept any XMPP pushes from this version.
-  * XMPP: Send pings and use them to detect when contact with the server
-    is lost.
-  * hook special remote: Added combined hook program support.
-  * Android app: Avoid using hard links to app's lib directory, which
-    is sometimes on a different filesystem than the data directory.
-  * Fix bug in parsing of parens in some preferred content expressions.
-    This fixes the behavior of the manual mode group.
-  * assistant: Work around git-cat-file's not reloading the index after files
-    are staged.
-  * Improve error handling when getting uuid of http remotes to auto-ignore,
-    like with ssh remotes.
-  * content: New command line way to view and configure a repository's
-    preferred content settings.
-  * sync: Fix double merge conflict resolution handling.
-  * XMPP: Fix a file descriptor leak.
-  * Android: Added an "Open WebApp" item to the terminal's menu.
-  * Android: Work around Android devices where the `am` command doesn't work.
-  * Can now restart certain long-running git processes if they crash, and
-    continue working.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 01 Jun 2013 19:16:04 -0400
-
-git-annex (4.20130521) unstable; urgency=low
-
-  * Sanitize debian changelog version before putting it into cabal file.
-    Closes: #708619
-  * Switch to MonadCatchIO-transformers for better handling of state while
-    catching exceptions.
-  * Fix a zombie that could result when running a process like gpg to
-    read and write to it.
-  * Allow building with gpg2.
-  * Disable building with the haskell threaded runtime when the webapp
-    is not built. This may fix builds on mips, s390x and sparc, which are
-    failing to link -lHSrts_thr
-  * Temporarily build without webapp on kfreebsd-i386, until yesod is
-    installable there again.
-  * Direct mode bug fix: After a conflicted merge was automatically resolved,
-    the content of a file that was already present could incorrectly
-    be replaced with a symlink.
-  * Fix a bug in the git-annex branch handling code that could
-    cause info from a remote to not be merged and take effect immediately.
-  * Direct mode is now fully tested by the test suite.
-  * Detect bad content in ~/.config/git-annex/program and look in PATH instead.
-  * OSX: Fixed gpg included in dmg.
-  * Linux standalone: Back to being built with glibc 2.13 for maximum
-    portability.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 21 May 2013 13:10:26 -0400
-
-git-annex (4.20130516) unstable; urgency=low
-
-  * Android: The webapp is ported and working.
-  * Windows: There is a very rough Windows port. Do not trust it with
-    important data.
-  * git-annex-shell: Ensure that received files can be read. Files
-    transferred from some Android devices may have very broken permissions
-    as received.
-  * direct mode: Direct mode commands now work on files staged in the index,
-    they do not need to be committed to git.
-  * Temporarily add an upper bound to the version of yesod that can be built
-    with, since yesod 1.2 has a great many changes that will require extensive
-    work on the webapp.
-  * Disable building with the haskell threaded runtime when the assistant
-    is not built. This may fix builds on s390x and sparc, which are failing
-    to link -lHSrts_thr
-  * Avoid depending on regex-tdfa on mips, mipsel, and s390, where it fails
-    to build.
-  * direct: Fix a bug that could cause some files to be left in indirect mode.
-  * When initializing a directory special remote with a relative path,
-    the path is made absolute.
-  * SHA: Add a runtime sanity check that sha commands output something
-    that appears to be a real sha.
-  * configure: Better checking that sha commands output in the desired format.
-  * rsync special remotes: When sending from a crippled filesystem, use
-    the destination's default file permissions, as the local ones can
-    be arbitrarily broken. (Ie, ----rwxr-x for files on Android)
-  * migrate: Detect if a file gets corrupted while it's being migrated.
-  * Debian: Add a menu file.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 16 May 2013 11:03:35 -0400
-
-git-annex (4.20130501) unstable; urgency=low
-
-  * sync, assistant: Behavior changes: Sync with remotes that have
-    annex-ignore set, so that git remotes on servers without git-annex
-    installed can be used to keep clients' git repos in sync.
-  * assistant: Work around misfeature in git 1.8.2 that makes
-    `git commit --alow-empty -m ""` run an editor.
-  * sync: Bug fix, avoid adding to the annex the 
-    dummy symlinks used on crippled filesystems.
-  * Add public repository group.
-    (And inpreferreddir to preferred content expressions.)
-  * webapp: Can now set up Internet Archive repositories.
-  * S3: Dropping content from the Internet Archive doesn't work, but
-    their API indicates it does. Always refuse to drop from there.
-  * Automatically register public urls for files uploaded to the
-    Internet Archive.
-  * To enable an existing special remote, the new enableremote command
-    must be used. The initremote command now is used only to create
-    new special remotes.
-  * initremote: If two existing remotes have the same name,
-    prefer the one with a higher trust level.
-  * assistant: Improved XMPP protocol to better support multiple repositories
-    using the same XMPP account. Fixes bad behavior when sharing with a friend
-    when you or the friend have multiple reposotories on an XMPP account.
-    Note that XMPP pairing with your own devices still pairs with all
-    repositories using your XMPP account.
-  * assistant: Fix bug that could cause incoming pushes to not get
-    merged into the local tree. Particularly affected XMPP pushes.
-  * webapp: Display some additional information about a repository on
-    its edit page.
-  * webapp: Install FDO desktop menu file when started in standalone mode.
-  * webapp: Don't default to making repository in cwd when started
-    from within a directory containing a git-annex file (eg, standalone
-    tarball directory).
-  * Detect systems that have no user name set in GECOS, and also
-    don't have user.name set in git config, and put in a workaround
-    so that commits to the git-annex branch (and the assistant)
-    will still succeed despite git not liking the system configuration.
-  * webapp: When told to add a git repository on a remote server, and
-    the repository already exists as a non-bare repository, use it,
-    rather than initializing a bare repository in the same directory.
-  * direct, indirect: Refuse to do anything when the assistant
-    or git-annex watch daemon is running.
-  * assistant: When built with git before 1.8.0, use `git remote rm`
-    to delete a remote. Newer git uses `git remote remove`.
-  * rmurl: New command, removes one of the recorded urls for a file.
-  * Detect when the remote is broken like bitbucket is, and exits 0 when
-    it fails to run git-annex-shell.
-  * assistant: Several improvements to performance and behavior when
-    performing bulk adds of a large number of files (tens to hundreds
-    of thousands).
-  * assistant: Sanitize XMPP presence information logged for debugging.
-  * webapp: Now automatically fills in any creds used by an existing remote
-    when creating a new remote of the same type. Done for Internet Archive,
-    S3, Glacier, and Box.com remotes.
-  * Store an annex-uuid file in the bucket when setting up a new S3 remote.
-  * Support building with DAV 0.4.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 01 May 2013 01:42:46 -0400
-
-git-annex (4.20130417) unstable; urgency=low
-
-  * initremote: Generates encryption keys with high quality entropy.
-    This can be disabled using --fast to get the old behavior.
-    The assistant still uses low-quality entropy when creating encrypted
-    remotes, to avoid delays. (Thanks, guilhem for the patch.)
-  * Bugfix: Direct mode no longer repeatedly checksums duplicated files.
-  * assistant: Work around horrible, terrible, very bad behavior of
-    gnome-keyring, by not storing special-purpose ssh keys in ~/.ssh/*.pub.
-    Apparently gnome-keyring apparently will load and indiscriminately use
-    such keys in some cases, even if they are not using any of the standard
-    ssh key names. Instead store the keys in ~/.ssh/annex/,
-    which gnome-keyring will not check.
-  * addurl: Bugfix: Did not properly add file in direct mode.
-  * assistant: Bug fix to avoid annexing the files that git uses
-    to stand in for symlinks on FAT and other filesystem not supporting
-    symlinks.
-  * Adjust preferred content expressions so that content in archive
-    directories is preferred until it has reached an archive or smallarchive
-    repository.
-  * webapp: New --listen= option allows running the webapp on one computer
-    and connecting to it from another. (Note: Does not yet use HTTPS.)
-  * Added annex.web-download-command setting.
-  * Added per-remote annex-rsync-transport option. (guilhem again)
-  * Ssh connection caching is now also used by rsync special remotes.
-    (guilhem yet again)
-  * The version number is now derived from git, unless built with
-    VERSION_FROM_CHANGELOG.
-  * assistant: Stop any transfers the assistant initiated on shutdown.
-  * assistant: Added sequence numbers to XMPP git push packets. (Not yet used.)
-  * addurl: Register transfer so the webapp can see it.
-  * addurl: Automatically retry downloads that fail, as long as some
-    additional content was downloaded.
-  * webapp: Much improved progress bar display for downloads from encrypted
-    remotes.
-  * Avoid using runghc, as that needs ghci.
-  * webapp: When a repository's group is changed, rescan for transfers.
-  * webapp: Added animations.
-  * webapp: Include the repository directory in the mangled hostname and
-    ssh key name, so that a locked down ssh key for one repository is not
-    re-used when setting up additional repositories on the same server.
-  * Fall back to internal url downloader when built without curl.
-  * fsck: Check content of direct mode files (only when the inode cache
-    thinks they are unmodified).
-
- -- Joey Hess <joeyh@debian.org>  Wed, 17 Apr 2013 09:07:38 -0400
-
-git-annex (4.20130405) unstable; urgency=low
-
-  * Group subcommands into sections in usage. Closes: #703797
-  * Per-command usage messages.
-  * webapp: Fix a race that sometimes caused alerts or other notifications
-    to be missed if they occurred while a page was loading.
-  * webapp: Progess bar fixes for many types of special remotes.
-  * Build debian package without using cabal, which writes to HOME.
-    Closes: #704205
-  * webapp: Run ssh server probes in a way that will work when the
-    login shell is a monstrosity that should have died 25 years ago,
-    such as csh.
-  * New annex.largefiles setting, which configures which files
-    `git annex add` and the assistant add to the annex.
-  * assistant: Check small files into git directly.
-  * Remotes can be configured to use other MAC algorithms than HMACSHA1
-    to encrypt filenames.
-    Thanks, guilhem for the patch.
-  * git-annex-shell: Passes rsync --bwlimit options on rsync.
-    Thanks, guilhem for the patch.
-  * webapp: Added UI to delete repositories. Closes: #689847
-  * Adjust built-in preferred content expressions to make most types
-    of repositories want content that is only located on untrusted, dead,
-    and unwanted repositories.
-  * drop --auto: Fix bug that prevented dropping files from untrusted
-    repositories.
-  * assistant: Fix bug that could cause direct mode files to be unstaged
-    from git.
-  * Update working tree files fully atomically.
-  * webapp: Improved transfer queue management.
-  * init: Probe whether the filesystem supports fifos, and if not,
-    disable ssh connection caching.
-  * Use lower case hash directories for storing files on crippled filesystems,
-    same as is already done for bare repositories.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 05 Apr 2013 10:42:18 -0400
-
-git-annex (4.20130323) unstable; urgency=low
-
-  * webapp: Repository list is now included in the dashboard, and other
-    UI tweaks.
-  * webapp: Improved UI for pairing your own devices together using XMPP.
-  * webapp: Display an alert when there are XMPP remotes, and a cloud
-    transfer repository needs to be configured.
-  * Add incrementalbackup repository group.
-  * webapp: Encourage user to install git-annex on a server when adding
-    a ssh server, rather than just funneling them through to rsync.
-  * xmpp: --debug now enables a sanitized dump of the XMPP protocol
-  * xmpp: Try harder to detect presence of clients when there's a git push
-    to send.
-  * xmpp: Re-enable XA flag, since disabling it did not turn out to help
-    with the problems Google Talk has with not always sending presence
-    messages to clients.
-  * map: Combine duplicate repositories, for a nicer looking map.
-  * Fix several bugs caused by a bad Ord instance for Remote.
-  * webapp: Switch all forms to POST.
-  * assistant: Avoid syncing with annex-ignored remotes when reconnecting
-    to the network, or connecting a drive.
-  * assistant: Fix OSX bug that prevented committing changed files to a
-    repository when in indirect mode.
-  * webapp: Improved alerts displayed when syncing with remotes, and 
-    when syncing with a remote fails.
-  * webapp: Force wrap long filenames in transfer display.
-  * assistant: The ConfigMonitor left one zombie behind each time
-    it checked for changes, now fixed.
-  * get, copy, move: Display an error message when an identical transfer
-    is already in progress, rather than failing with no indication why.
-  * assistant: Several optimisations to file transfers.
-  * OSX app and standalone Linux tarball now both support being added to
-    PATH; no need to use runshell to start git-annex.
-  * webapp: When adding a removable drive, you can now specify the
-    directory inside it to use.
-  * webapp: Confirm whether user wants to combine repositories when
-    adding a removable drive that already has a repository on it.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 22 Mar 2013 18:54:05 -0400
-
-git-annex (4.20130314) unstable; urgency=low
-
-  * Bugfix: git annex add, when ran without any file or directory specified,
-    should add files in the current directory, but not act on unlocked files
-    elsewhere in the tree.
-  * Bugfix: drop --from an unavailable remote no longer updates the location
-    log, incorrectly, to say the remote does not have the key.
-  * Bugfix: If the UUID of a remote is not known, prevent --from, --to,
-    and other ways of specifying remotes by name from selecting it,
-    since it is not possible to sanely use it.
-  * Bugfix: Fix bug in inode cache sentinal check, which broke
-    copying to local repos if the repo being copied from had moved
-    to a different filesystem or otherwise changed all its inodes
-
-  * Switch from using regex-compat to regex-tdfa, as the C regex library
-    is rather buggy.
-  * status: Can now be run with a directory path to show only the
-    status of that directory, rather than the whole annex.
-  * Added remote.<name>.annex-gnupg-options setting.
-    Thanks, guilhem for the patch.
-  * addurl: Add --relaxed option.
-  * addurl: Escape invalid characters in urls, rather than failing to
-    use an invalid url.
-  * addurl: Properly handle url-escaped characters in file:// urls.
-
-  * assistant: Fix dropping content when a file is moved to an archive
-    directory, and getting contennt when a file is moved back out.
-  * assistant: Fix bug in direct mode that could occur when a symlink is
-    moved out of an archive directory, and resulted in the file not being
-    set to direct mode when it was transferred.
-  * assistant: Generate better commits for renames.
-  * assistant: Logs are rotated to avoid them using too much disk space.
-  * assistant: Avoid noise in logs from git commit about typechanged
-    files in direct mode repositories.
-  * assistant: Set gc.auto=0 when creating repositories to prevent
-    automatic commits from causing git-gc runs.
-  * assistant: If gc.auto=0, run git-gc once a day, packing loose objects
-    very non-aggressively.
-  * assistant: XMPP git pull and push requests are cached and sent when
-    presence of a new client is detected.
-  * assistant: Sync with all git remotes on startup.
-  * assistant: Get back in sync with XMPP remotes after network reconnection,
-    and on startup.
-  * assistant: Fix syncing after XMPP pairing.
-  * assistant: Optimised handling of renamed files in direct mode,
-    avoiding re-checksumming.
-  * assistant: Detects most renames, including directory renames, and
-    combines all their changes into a single commit.
-  * assistant: Fix ~/.ssh/git-annex-shell wrapper to work when the
-    ssh key does not force a command.
-  * assistant: Be smarter about avoiding unncessary transfers.
-
-  * webapp: Work around bug in Warp's slowloris attack prevention code,
-    that caused regular browsers to stall when they reuse a connection
-    after leaving it idle for 30 seconds.
-    (See https://github.com/yesodweb/wai/issues/146)
-  * webapp: New preferences page allows enabling/disabling debug logging
-    at runtime, as well as configuring numcopies and diskreserve.
-  * webapp: Repository costs can be configured by dragging repositories around
-    in the repository list.
-  * webapp: Proceed automatically on from "Configure jabber account"
-    to pairing.
-  * webapp: Only show up to 10 queued transfers.
-  * webapp: DTRT when told to create a git repo that already exists.
-  * webapp: Set locally paired repositories to a lower cost than other
-    network remotes.
-
-  * Run ssh with -T to avoid tty allocation and any login scripts that
-    may do undesired things with it.
-  * Several improvements to Makefile and cabal file. Thanks, Peter Simmons
-  * Stop depending on testpack.
-  * Android: Enable test suite. 
-
- -- Joey Hess <joeyh@debian.org>  Thu, 14 Mar 2013 15:29:20 -0400
-
-git-annex (4.20130227) unstable; urgency=low
-
-  * annex.version is now set to 4 for direct mode repositories.
-  * Should now fully support git repositories with core.symlinks=false;
-    always using git's pseudosymlink files in such repositories.
-  * webapp: Allow creating repositories on filesystems that lack support for
-    symlinks.
-  * webapp: Can now add a new local repository, and make it sync with
-    the main local repository.
-  * Android: Bundle now includes openssh.
-  * Android: Support ssh connection caching.
-  * Android: Assistant is fully working. (But no webapp yet.)
-  * Direct mode: Support filesystems like FAT which can change their inodes
-    each time they are mounted.
-  * Direct mode: Fix support for adding a modified file.
-  * Avoid passing -p to rsync, to interoperate with crippled filesystems.
-    Closes: #700282
-  * Additional GIT_DIR support bugfixes. May actually work now.
-  * webapp: Display any error message from git init if it fails to create
-    a repository.
-  * Fix a reversion in matching globs introduced in the last release,
-    where "*" did not match files inside subdirectories. No longer uses
-    the Glob library.
-  * copy: Update location log when no copy was performed, if the location
-    log was out of date.
-  * Makefile now builds using cabal, taking advantage of cabal's automatic
-    detection of appropriate build flags.
-  * test: The test suite is now built into the git-annex binary, and can
-    be run at any time.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 27 Feb 2013 14:07:24 -0400
-
-git-annex (3.20130216) unstable; urgency=low
-
-  * Now uses the Haskell uuid library, rather than needing a uuid program.
-  * Now uses the Haskell Glob library, rather than pcre-light, avoiding
-    the need to install libpcre. Currently done only for Cabal or when
-    the Makefile is made to use -DWITH_GLOB
-  * Android port now available (command-line only).
-  * New annex.crippledfilesystem setting, allows use of git-annex
-    repositories on FAT and even worse filesystems; avoiding use of
-    hard links and locked down permissions settings. (Support is incomplete.)
-  * init: Detect when the repository is on a filesystem that does not
-    support hard links, or symlinks, or unix permissions, and set
-    annex.crippledfilesystem, as well as annex.direct.
-  * add: Improved detection of files that are modified while being added.
-  * Fix a bug in direct mode, introduced in the previous release, where
-    if a file was dropped and then got back, it would be stored in indirect
-    mode.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 16 Feb 2013 10:03:26 -0400
-
-git-annex (3.20130207) unstable; urgency=low
-
-  * webapp: Now allows restarting any threads that crash.
-  * Adjust debian package to only build-depend on DAV on architectures
-    where it is available.
-  * addurl --fast: Use curl, rather than haskell HTTP library, to support https.
-  * annex.autocommit: New setting, can be used to disable autocommit
-    of changed files by the assistant, while it still does data syncing
-    and other tasks.
-  * assistant: Ignore .DS_Store on OSX.
-  * assistant: Fix location log when adding new file in direct mode.
-  * Deal with stale mappings for deleted file in direct mode.
-  * pre-commit: Update direct mode mappings. 
-  * uninit, unannex --fast: If hard link creation fails, fall back to slow
-    mode.
-  * Clean up direct mode cache and mapping info when dropping keys.
-  * dropunused: Clean up stale direct mode cache and mapping info not
-    removed before.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 07 Feb 2013 12:45:25 -0400
-
-git-annex (3.20130124) unstable; urgency=low
-
-  * Added source repository group, that only retains files until they've
-    been transferred to another repository. Useful for things like
-    repositories on cameras.
-  * Added manual repository group. Use to prevent the assistant from
-    downloading any file contents to keep things in sync. Instead
-    `git annex get`, `git annex drop` etc can be used manually as desired.
-  * webapp: More adjustments to longpoll code to deal with changes in
-    variable quoting in different versions of shakespeare-js.
-  * webapp: Avoid an error if a transfer is stopped just as it finishes.
-    Closes: #698184 
-  * webapp: Now always logs to .git/annex/daemon.log
-  * webapp: Has a page to view the log, accessed from the control menu.
-  * webapp: Fix crash adding removable drive that has an annex directory
-    in it that is not a git repository.
-  * Deal with incompatability in gpg2, which caused prompts for encryption
-    passphrases rather than using the supplied --passphrase-fd.
-  * bugfix: Union merges involving two or more repositories could sometimes
-    result in data from one repository getting lost. This could result
-    in the location log data becoming wrong, and fsck being needed to fix it.
-  * sync: Automatic merge conflict resolution now stages deleted files.
-  * Depend on git 1.7.7.6 for --no-edit. Closes: #698399
-  * Fix direct mode mapping code to always store direct mode filenames
-    relative to the top of the repository, even when operating inside a
-    subdirectory.
-  * fsck: Detect and fix consistency errors in direct mode mapping files.
-  * Avoid filename encoding errors when writing direct mode mappings.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 22 Jan 2013 07:11:59 +1100
-
-git-annex (3.20130114) unstable; urgency=low
-
-  * Now handles the case where a file that's being transferred to a remote
-    is modified in place, which direct mode allows. When this
-    happens, the transfer now fails, rather than allow possibly corrupt
-    data into the remote.
-  * fsck: Better checking of file content in direct mode.
-  * drop: Suggest using git annex move when numcopies prevents dropping a file.
-  * webapp: Repo switcher filters out repos that do not exist any more
-    (or are on a drive that's not mounted).
-  * webapp: Use IP address, rather than localhost, since some systems may
-    have configuration problems or other issues that prevent web browsers
-    from connecting to the right localhost IP for the webapp.
-  * webapp: Adjust longpoll code to work with recent versions of
-    shakespeare-js.
-  * assistant: Support new gvfs dbus names used in Gnome 3.6.
-  * In direct mode, files with the same key are no longer hardlinked, as
-    that would cause a surprising behavior if modifying one, where the other
-    would also change.
-  * webapp: Avoid illegal characters in hostname when creating S3 or
-    Glacier remote.
-  * assistant: Avoid committer crashing if a file is deleted at the wrong
-    instant.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 14 Jan 2013 15:25:18 -0400
-
-git-annex (3.20130107) unstable; urgency=low
-
-  * webapp: Add UI to stop and restart assistant.
-  * committer: Fix a file handle leak.
-  * assistant: Make expensive transfer scan work fully in direct mode.
-  * More commands work in direct mode repositories: find, whereis, move, copy,
-    drop, log, fsck, add, addurl.
-  * sync: No longer automatically adds files in direct mode.
-  * assistant: Detect when system is not configured with a user name,
-    and set environment to prevent git from failing.
-  * direct: Avoid hardlinking symlinks that point to the same content
-    when the content is not present.
-  * Fix transferring files to special remotes in direct mode.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 07 Jan 2013 01:01:41 -0400
-
-git-annex (3.20130102) unstable; urgency=low
-
-  * direct, indirect: New commands, that switch a repository to and from
-    direct mode. In direct mode, files are accessed directly, rather than
-    via symlinks. Note that direct mode is currently experimental. Many
-    git-annex commands do not work in direct mode. Some git commands can
-    cause data loss when used in direct mode repositories.
-  * assistant: Now uses direct mode by default when setting up a new
-    local repository.
-  * OSX assistant: Uses the FSEvents API to detect file changes.
-    This avoids issues with running out of file descriptors on large trees,
-    as well as allowing detection of modification of files in direct mode.
-    Other BSD systems still use kqueue.
-  * kqueue: Fix bug that made broken symlinks not be noticed.
-  * vicfg: Quote filename. Closes: #696193
-  * Bugfix: Fixed bug parsing transfer info files, where the newline after
-    the filename was included in it. This was generally benign, but in
-    the assistant, it caused unexpected dropping of preferred content.
-  * Bugfix: Remove leading \ from checksums output by sha*sum commands,
-    when the filename contains \ or a newline. Closes: #696384
-  * fsck: Still accept checksums with a leading \ as valid, now that
-    above bug is fixed.
-  * SHA*E backends: Exclude non-alphanumeric characters from extensions.
-  * migrate: Remove leading \ in SHA* checksums, and non-alphanumerics
-    from extensions of SHA*E keys.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 02 Jan 2013 13:21:34 -0400
-
-git-annex (3.20121211) unstable; urgency=low
-
-  * webapp: Defaults to sharing box.com account info with friends, allowing
-    one-click enabling of the repository.
-  * Fix broken .config/git-annex/program installed by standalone tarball.
-  * assistant: Retrival from glacier now handled.
-  * Include ssh in standalone tarball and OSX app.
-  * watch: Avoid leaving hard links to files behind in .git/annex/tmp
-    if a file is deleted or moved while it's being quarantined in preparation
-    to being added to the annex.
-  * Allow `git annex drop --from web`; of course this does not remove
-    any file from the web, but it does make git-annex remove all urls
-    associated with a file.
-  * webapp: S3 and Glacier forms now have a select list of all
-    currently-supported AWS regions.
-  * webdav: Avoid trying to set props, avoiding incompatability with
-    livedrive.com. Needs DAV version 0.3.
-  * webapp: Prettify error display.
-  * webapp: Fix bad interaction between required fields and modals.
-  * webapp: Added help buttons and links next to fields that require
-    explanations.
-  * webapp: Encryption can be disabled when setting up remotes.
-  * assistant: Avoid trying to drop content from remotes that don't have it.
-  * assistant: Allow periods in ssh key comments.
-  * get/copy --auto: Transfer data even if it would exceed numcopies,
-    when preferred content settings want it.
-  * drop --auto: Fix dropping content when there are no preferred content
-    settings.
-  * webapp: Allow user to specify the port when setting up a ssh or rsync
-    remote.
-  * assistant: Fix syncing to just created ssh remotes.
-  * Enable WebDAV support in Debian package. Closes: #695532
-
- -- Joey Hess <joeyh@debian.org>  Tue, 11 Dec 2012 11:25:03 -0400
-
-git-annex (3.20121127) unstable; urgency=low
-
-  * Fix dirContentsRecursive, which had missed some files in deeply nested
-    subdirectories. Could affect various parts of git-annex.
-  * rsync: Fix bug introduced in last release that broke encrypted rsync
-    special remotes.
-  * The standalone builds now unset their special path and library path
-    variables before running the system web browser.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 27 Nov 2012 17:07:32 -0400
-
-git-annex (3.20121126) unstable; urgency=low
-
-  * New webdav and Amazon glacier special remotes.
-  * Display a warning when a non-existing file or directory is specified.
-  * webapp: Added configurator for Box.com.
-  * webapp: Show error messages to user when testing XMPP creds.
-  * Fix build of assistant without yesod.
-  * webapp: The list of repositiories refreshes when new repositories are
-    added, including when new repository configurations are pushed in from
-    remotes.
-  * OSX: Fix RunAtLoad value in plist file.
-  * Getting a file from chunked directory special remotes no longer buffers
-    it all in memory.
-  * S3: Added progress display for uploading and downloading.
-  * directory special remote: Made more efficient and robust.
-  * Bugfix: directory special remote could loop forever storing a key 
-    when a too small chunksize was configured.
-  * Allow controlling whether login credentials for S3 and webdav are
-    committed to the repository, by setting embedcreds=yes|no when running
-    initremote.
-  * Added smallarchive repository group, that only archives files that are
-    in archive directories. Used by default for glacier when set up in the
-    webapp.
-  * assistant: Fixed handling of toplevel archive directory and
-    client repository group.
-  * assistant: Apply preferred content settings when a new symlink
-    is created, or a symlink gets renamed. Made archive directories work.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 26 Nov 2012 11:37:49 -0400
-
-git-annex (3.20121112) unstable; urgency=low
-
-  * assistant: Can use XMPP to notify other nodes about pushes made to other
-    repositories, as well as pushing to them directly over XMPP.
-  * wepapp: Added an XMPP configuration interface.
-  * webapp: Supports pairing over XMPP, with both friends, and other repos
-    using the same account.
-  * assistant: Drops non-preferred content when possible.
-  * assistant: Notices, and applies config changes as they are made to
-    the git-annex branch, including config changes pushed in from remotes.
-  * git-annex-shell: GIT_ANNEX_SHELL_DIRECTORY can be set to limit it
-    to operating on a specified directory.
-  * webapp: When setting up authorized_keys, use GIT_ANNEX_SHELL_DIRECTORY.
-  * Preferred content path matching bugfix.
-  * Preferred content expressions cannot use "in=".
-  * Preferred content expressions can use "present".
-  * Fix handling of GIT_DIR when it refers to a git submodule.
-  * Depend on and use the Haskell SafeSemaphore library, which provides
-    exception-safe versions of SampleVar and QSemN.
-    Thanks, Ben Gamari for an excellent patch set.
-  * file:/// URLs can now be used with the web special remote.
-  * webapp: Allow dashes in ssh key comments when pairing.
-  * uninit: Check and abort if there are symlinks to annexed content that
-    are not checked into git.
-  * webapp: Switched to using the same multicast IP address that avahi uses.
-  * bup: Don't pass - to bup-split to make it read stdin; bup 0.25
-    does not accept that.
-  * bugfix: Don't fail transferring content from read-only repos.
-    Closes: #691341
-  * configure: Check that checksum programs produce correct checksums.
-  * Re-enable dbus, using a new version of the library that fixes the memory
-    leak.
-  * NetWatcher: When dbus connection is lost, try to reconnect.
-  * Use USER and HOME environment when set, and only fall back to getpwent,
-    which doesn't work with LDAP or NIS.
-  * rsync special remote: Include annex-rsync-options when running rsync
-    to test a key's presence.
-  * The standalone tarball's runshell now takes care of installing a
-    ~/.ssh/git-annex-shell wrapper the first time it's run.
-  * webapp: Make an initial, empty commit so there is a master branch 
-  * assistant: Fix syncing local drives.
-  * webapp: Fix creation of rsync.net repositories.
-  * webapp: Fix renaming of special remotes.
-  * webapp: Generate better git remote names.
-  * webapp: Ensure that rsync special remotes are enabled using the same
-    name they were originally created using.
-  * Bugfix: Fix hang in webapp when setting up a ssh remote with an absolute
-    path.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 12 Nov 2012 10:39:47 -0400
-
-git-annex (3.20121017) unstable; urgency=low
-
-  * Fix zombie cleanup reversion introduced in 3.20121009.
-  * Additional fix to support git submodules.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 16 Oct 2012 21:10:14 -0400
-
-git-annex (3.20121016) unstable; urgency=low
-
-  * vicfg: New file format, avoids ambiguity with repos that have the same
-    description, or no description.
-  * Bug fix: A recent change caused git-annex-shell to crash.
-  * Better preferred content expression for transfer repos.
-  * webapp: Repository edit form can now edit the name of a repository.
-  * webapp: Make bare repositories on removable drives, as there is nothing
-    to ensure non-bare repos get updated when syncing.
-  * webapp: Better behavior when pausing syncing to a remote when a transfer
-    scan is running and queueing new transfers for that remote.
-  * The standalone binaries are now built to not use ssh connection caching,
-    in order to work with old versions of ssh.
-  * A relative core.worktree is relative to the gitdir. Now that this is
-    handled correctly, git-annex can be used in git submodules.
-  * Temporarily disable use of dbus, as the haskell dbus library blows up
-    when losing connection, which will need to be fixed upstream. 
-
- -- Joey Hess <joeyh@debian.org>  Tue, 16 Oct 2012 15:25:22 -0400
-
-git-annex (3.20121010) unstable; urgency=low
-
-  * Renamed --ingroup to --inallgroup.
-  * Standard groups changed to client, transfer, archive, and backup.
-    Each of these has its own standard preferred content setting.
-  * dead: Remove dead repository from all groups.
-  * Avoid unsetting HOME when running certian git commands. Closes: #690193
-  * test: Fix threaded runtime hang.
-  * Makefile: Avoid building with -threaded if the ghc threaded runtime does
-    not exist.
-  * webapp: Improve wording of intro display. Closes: #689848
-  * webapp: Repositories can now be configured, to change their description,
-    their group, or even to disable syncing to them.
-  * git config remote.name.annex-sync can be used to control whether
-    a remote gets synced.
-  * Fix a crash when merging files in the git-annex branch that contain
-    invalid utf8.
-  * Automatically detect when a ssh remote does not have git-annex-shell
-    installed, and set annex-ignore.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 12 Oct 2012 13:45:21 -0400
-
-git-annex (3.20121009) unstable; urgency=low
-
-  * watch, assistant: It's now safe to git annex unlock files while
-    the watcher is running, as well as modify files checked into git
-    as normal files. Additionally, .gitignore settings are now honored.
-    Closes: #689979
-  * group, ungroup: New commands to indicate groups of repositories.
-  * webapp: Adds newly created repositories to one of these groups:
-    clients, drives, servers
-  * vicfg: New command, allows editing (or simply viewing) most
-    of the repository configuration settings stored in the git-annex branch.
-  * Added preferred content expressions, configurable using vicfg.
-  * get --auto: If the local repository has preferred content
-    configured, only get that content.
-  * drop --auto: If the repository the content is dropped from has
-    preferred content configured, drop only content that is not preferred.
-  * copy --auto: Only transfer content that the destination repository prefers.
-  * assistant: Now honors preferred content settings when deciding what to
-    transfer.
-  * --copies=group:number can now be used to match files that are present
-    in a specified number of repositories in a group.
-  * Added --smallerthan, --largerthan, and --inall limits.
-  * Only build-depend on libghc-clientsession-dev on arches that will have
-    the webapp.
-  * uninit: Unset annex.version. Closes: #689852
-
- -- Joey Hess <joeyh@debian.org>  Tue, 09 Oct 2012 15:13:23 -0400
-
-git-annex (3.20121001) unstable; urgency=low
-
-  * fsck: Now has an incremental mode. Start a new incremental fsck pass
-    with git annex fsck --incremental. Now the fsck can be interrupted
-    as desired, and resumed with git annex fsck --more.
-    Thanks, Justin Azoff
-  * New --time-limit option, makes long git-annex commands stop after
-    a specified amount of time.
-  * fsck: New --incremental-schedule option which is nice for scheduling
-    eg, monthly incremental fsck runs in cron jobs.
-  * Fix fallback to ~/Desktop when xdg-user-dir is not available.
-    Closes: #688833
-  * S3: When using a shared cipher, S3 credentials are not stored encrypted
-    in the git repository, as that would allow anyone with access to
-    the repository access to the S3 account. Instead, they're stored
-    in a 600 mode file in the local git repo.
-  * webapp: Avoid crashing when ssh-keygen -F chokes on an invalid known_hosts
-    file.
-  * Always do a system wide installation when DESTDIR is set. Closes: #689052
-  * The Makefile now builds with the new yesod by default.
-    Systems like Debian that have the old yesod 1.0.1 should set
-    GIT_ANNEX_LOCAL_FEATURES=-DWITH_OLD_YESOD
-  * copy: Avoid updating the location log when no copy is performed.
-  * configure: Test that uuid -m works, falling back to plain uuid if not.
-  * Avoid building the webapp on Debian architectures that do not yet
-    have template haskell and thus yesod. (Should be available for arm soonish
-    I hope).
-
- -- Joey Hess <joeyh@debian.org>  Mon, 01 Oct 2012 13:56:55 -0400
-
-git-annex (3.20120924) unstable; urgency=low
-
-  * assistant: New command, a daemon which does everything watch does,
-    as well as automatically syncing file contents between repositories.
-  * webapp: An interface for managing and configuring the assistant.
-  * The default backend used when adding files to the annex is changed
-    from SHA256 to SHA256E, to simplify interoperability with OSX, media
-    players, and various programs that needlessly look at symlink targets.
-    To get old behavior, add a .gitattributes containing: * annex.backend=SHA256
-  * init: If no description is provided for a new repository, one will
-    automatically be generated, like "joey@gnu:~/foo"
-  * test: Set a lot of git environment variables so testing works in strange
-    environments that normally need git config to set names, etc.
-    Closes: #682351 Thanks, gregor herrmann
-  * Disable ssh connection caching if the path to the control socket would be
-    too long (and use relative path to minimise path to the control socket).
-  * migrate: Check content before generating the new key, to avoid generating
-    a key for corrupt data.
-  * Support repositories created with --separate-git-dir. Closes: #684405
-  * reinject: When the provided file doesn't match, leave it where it is,
-    rather than moving to .git/annex/bad/
-  * Avoid crashing on encoding errors in filenames when writing transfer info
-    files and reading from checksum commands.
-  * sync: Pushes the git-annex branch to remote/synced/git-annex, rather
-    than directly to remote/git-annex.
-  * Now supports matching files that are present on a number of remotes
-    with a specified trust level. Example: --copies=trusted:2
-    Thanks, Nicolas Pouillard
-
- -- Joey Hess <joeyh@debian.org>  Mon, 24 Sep 2012 13:47:48 -0400
-
-git-annex (3.20120825) unstable; urgency=low
-
-  * S3: Add fileprefix setting.
-  * Pass --use-agent to gpg when in no tty mode. Thanks, Eskild Hustvedt.
-  * Bugfix: Fix fsck in SHA*E backends, when the key contains composite
-    extensions, as added in 3.20120721.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 25 Aug 2012 10:00:10 -0400
-
-git-annex (3.20120807) unstable; urgency=low
-
-  * initremote: Avoid recording remote's description before checking
-    that its config is valid.
-  * unused, status: Avoid crashing when ran in bare repo.
-  * Avoid crashing when "git annex get" fails to download from one
-    location, and falls back to downloading from a second location.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 07 Aug 2012 13:35:07 -0400
-
-git-annex (3.20120721) unstable; urgency=low
-
-  * get, move, copy: Now refuse to do anything when the requested file
-    transfer is already in progress by another process.
-  * status: Lists transfers that are currently in progress.
-  * Fix passing --uuid to git-annex-shell.
-  * When shaNsum commands cannot be found, use the Haskell SHA library
-    (already a dependency) to do the checksumming. This may be slower,
-    but avoids portability problems.
-  * Use SHA library for files less than 50 kb in size, at which point it's
-    faster than forking the more optimised external program.
-  * SHAnE backends are now smarter about composite extensions, such as
-    .tar.gz Closes: #680450
-  * map: Write map.dot to .git/annex, which avoids watch trying to annex it.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 21 Jul 2012 16:52:48 -0400
-
-git-annex (3.20120629) unstable; urgency=low
-
-  * cabal: Only try to use inotify on Linux.
-  * Version build dependency on STM, and allow building without it,
-    which disables the watch command.
-  * Avoid ugly failure mode when moving content from a local repository
-    that is not available.
-  * Got rid of the last place that did utf8 decoding.
-  * Accept arbitrarily encoded repository filepaths etc when reading
-    git config output. This fixes support for remotes with unusual characters
-    in their names.
-  * sync: Automatically resolves merge conflicts.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 29 Jun 2012 10:17:49 -0400
-
-git-annex (3.20120624) unstable; urgency=low
-
-  * watch: New subcommand, a daemon which notices changes to
-    files and automatically annexes new files, etc, so you don't
-    need to manually run git commands when manipulating files.
-    Available on Linux, BSDs, and OSX!
-  * Enable diskfree on kfreebsd, using kqueue.
-  * unused: Fix crash when key names contain invalid utf8.
-  * sync: Avoid recent git's interactive merge.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 24 Jun 2012 12:36:50 -0400
-
-git-annex (3.20120614) unstable; urgency=medium
-
-  * addurl: Was broken by a typo introduced 2 released ago, now fixed.
-    Closes: #677576
-  * Install man page when run by cabal, in a location where man will
-    find it, even when installing under $HOME. Thanks, Nathan Collins
-
- -- Joey Hess <joeyh@debian.org>  Thu, 14 Jun 2012 20:21:29 -0400
-
-git-annex (3.20120611) unstable; urgency=medium
-
-  * add: Prevent (most) modifications from being made to a file while it
-    is being added to the annex.
-  * initremote: Automatically describe a remote when creating it.
-  * uninit: Refuse to run in a subdirectory. Closes: #677076
-
- -- Joey Hess <joeyh@debian.org>  Mon, 11 Jun 2012 10:32:01 -0400
-
-git-annex (3.20120605) unstable; urgency=low
-
-  * sync: Show a nicer message if a user tries to sync to a special remote.
-  * lock: Reset unlocked file to index, rather than to branch head.
-  * import: New subcommand, pulls files from a directory outside the annex
-    and adds them.
-  * Fix display of warning message when encountering a file that uses an
-    unsupported backend.
-  * Require that the SHA256 backend can be used when building, since it's the
-    default.
-  * Preserve parent environment when running hooks of the hook special remote.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 05 Jun 2012 14:03:39 -0400
-
-git-annex (3.20120522) unstable; urgency=low
-
-  * Pass -a to cp even when it supports --reflink=auto, to preserve
-    permissions.
-  * Clean up handling of git directory and git worktree.
-  * Add support for core.worktree, and fix support for GIT_WORK_TREE and
-    GIT_DIR.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 22 May 2012 11:16:13 -0400
-
-git-annex (3.20120511) unstable; urgency=low
-
-  * Rsync special remotes can be configured with shellescape=no
-    to avoid shell quoting that is normally done when using rsync over ssh.
-    This is known to be needed for certian rsync hosting providers
-    (specificially hidrive.strato.com) that use rsync over ssh but do not
-    pass it through the shell.
-  * dropunused: Allow specifying ranges to drop.
-  * addunused: New command, the opposite of dropunused, it relinks unused
-    content into the git repository.
-  * Fix use of several config settings: annex.ssh-options,
-    annex.rsync-options, annex.bup-split-options. (And adjust types to avoid
-    the bugs that broke several config settings.)
-
- -- Joey Hess <joeyh@debian.org>  Fri, 11 May 2012 12:29:30 -0400
-
-git-annex (3.20120430) unstable; urgency=low
-
-  * Fix use of annex.diskreserve config setting.
-  * Directory special remotes now check annex.diskreserve.
-  * Support git's core.sharedRepository configuration.
-  * Add annex.http-headers and annex.http-headers-command config
-    settings, to allow custom headers to be sent with all HTTP requests.
-    (Requested by the Internet Archive)
-  * uninit: Clear annex.uuid from .git/config. Closes: #670639
-  * Added shared cipher mode to encryptable special remotes. This option
-    avoids gpg key distribution, at the expense of flexability, and with
-    the requirement that all clones of the git repository be equally trusted.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 30 Apr 2012 13:16:10 -0400
-
-git-annex (3.20120418) unstable; urgency=low
-
-  * bugfix: Adding a dotfile also caused all non-dotfiles to be added.
-  * bup: Properly handle key names with spaces or other things that are
-    not legal git refs.
-  * git-annex (but not git-annex-shell) supports the git help.autocorrect
-    configuration setting, doing fuzzy matching using the restricted
-    Damerau-Levenshtein edit distance, just as git does. This adds a build
-    dependency on the haskell edit-distance library.
-  * Renamed diskfree.c to avoid OSX case insensativity bug.
-  * cabal now installs git-annex-shell as a symlink to git-annex.
-  * cabal file now autodetects whether S3 support is available.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 18 Apr 2012 12:11:32 -0400
-
-git-annex (3.20120406) unstable; urgency=low
-
-  * Disable diskfree on kfreebsd, as I have a build failure on kfreebsd-i386
-    that is quite likely caused by it.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 07 Apr 2012 15:50:36 -0400
-
-git-annex (3.20120405) unstable; urgency=low
-
-  * Rewrote free disk space checking code, moving the portability
-    handling into a small C library.
-  * status: Display amount of free disk space.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 05 Apr 2012 16:19:10 -0400
-
-git-annex (3.20120315) unstable; urgency=low
-
-  * fsck: Fix up any broken links and misplaced content caused by the
-    directory hash calculation bug fixed in the last release.
-  * sync: Sync to lower cost remotes first.
-  * status: Fixed to run in constant space.
-  * status: More accurate display of sizes of tmp and bad keys.
-  * unused: Now uses a bloom filter, and runs in constant space.
-    Use of a bloom filter does mean it will not notice a small
-    number of unused keys. For repos with up to half a million keys,
-    it will miss one key in 1000.
-  * Added annex.bloomcapacity and annex.bloomaccuracy, which can be
-    adjusted as desired to tune the bloom filter.
-  * status: Display amount of memory used by bloom filter, and
-    detect when it's too small for the number of keys in a repository.
-  * git-annex-shell: Runs hooks/annex-content after content is received
-    or dropped.
-  * Work around a bug in rsync (IMHO) introduced by openSUSE's SIP patch.
-  * git-annex now behaves as git-annex-shell if symlinked to and run by that
-    name. The Makefile sets this up, saving some 8 mb of installed size.
-  * git-union-merge is a demo program, so it is no longer built by default.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 15 Mar 2012 11:05:28 -0400
-
-git-annex (3.20120309) unstable; urgency=low
-
-  * Fix key directory hash calculation code to behave as it did before 
-    version 3.20120227 when a key contains non-ascii characters (only
-    WORM backend is likely to have been affected).
-
- -- Joey Hess <joeyh@debian.org>  Fri, 09 Mar 2012 20:05:09 -0400
-
-git-annex (3.20120230) unstable; urgency=low
-
-  * "here" can be used to refer to the current repository,
-    which can read better than the old "." (which still works too).
-  * Directory special remotes now support chunking files written to them,
-    avoiding writing files larger than a specified size.
-  * Add progress bar display to the directory special remote.
-  * Add configurable hooks that are run when git-annex starts and stops
-    using a remote: remote.name.annex-start-command and
-    remote.name.annex-stop-command
-  * Fix a bug in symlink calculation code, that triggered in rare
-    cases where an annexed file is in a subdirectory that nearly
-    matched to the .git/annex/object/xx/yy subdirectories.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 05 Mar 2012 13:38:13 -0400
-
-git-annex (3.20120229) unstable; urgency=low
-
-  * Fix test suite to not require a unicode locale.
-  * Fix cabal build failure. Thanks, Sergei Trofimovich
-
- -- Joey Hess <joeyh@debian.org>  Wed, 29 Feb 2012 02:31:31 -0400
-
-git-annex (3.20120227) unstable; urgency=low
-
-  * Modifications to support ghc 7.4's handling of filenames.
-    This version can only be built with ghc 7.4 or newer. See the ghc7.0
-    branch for older ghcs.
-  * S3: Fix irrefutable pattern failure when accessing encrypted S3
-    credentials.
-  * Use the haskell IfElse library.
-  * Fix teardown of stale cached ssh connections.
-  * Fixed to use the strict state monad, to avoid leaking all kinds of memory
-    due to lazy state update thunks when adding/fixing many files.
-  * Fixed some memory leaks that occurred when committing journal files.
-  * Added a annex.queuesize setting, useful when adding hundreds of thousands
-    of files on a system with plenty of memory.
-  * whereis: Prints the urls of files that the web special remote knows about.
-  * addurl --fast: Verifies that the url can be downloaded (only getting
-    its head), and records the size in the key.
-  * When checking that an url has a key, verify that the Content-Length,
-    if available, matches the size of the key.
-  * addurl: Added a --file option, which can be used to specify what
-    file the url is added to. This can be used to override the default
-    filename that is used when adding an url, which is based on the url.
-    Or, when the file already exists, the url is recorded as another
-    location of the file.
-  * addurl: Normalize badly encoded urls.
-  * addurl: Add --pathdepth option.
-  * rekey: New plumbing level command, can be used to change the keys used
-    for files en masse.
-  * Store web special remote url info in a more efficient location.
-    (Urls stored with this version will not be visible to older versions.)
-  * Deal with NFS problem that caused a failure to remove a directory
-    when removing content from the annex.
-  * Make a single location log commit after a remote has received or
-    dropped files. Uses a new "git-annex-shell commit" command when available.
-  * To avoid commits of data to the git-annex branch after each command
-    is run, set annex.alwayscommit=false. Its data will then be committed
-    less frequently, when a merge or sync is done.
-  * configure: Check if ssh connection caching is supported by the installed
-    version of ssh and default annex.sshcaching accordingly.
-  * move --from, copy --from: Now 10 times faster when scanning to find
-    files in a remote on a local disk; rather than go through the location log
-    to see which files are present on the remote, it simply looks at the 
-    disk contents directly.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 27 Feb 2012 12:58:21 -0400
-
-git-annex (3.20120123) unstable; urgency=low
-
-  * fsck --from: Fscking a remote is now supported. It's done by retrieving
-    the contents of the specified files from the remote, and checking them,
-    so can be an expensive operation. Still, if the remote is a special
-    remote, or a git repository that you cannot run fsck in locally, it's
-    nice to have the ability to fsck it.
-  * If you have any directory special remotes, now would be a good time to
-    fsck them, in case you were hit by the data loss bug fixed in the
-    previous release!
-  * fsck --from remote --fast: Avoids expensive file transfers, at the
-    expense of not checking file size and/or contents.
-  * Ssh connection caching is now enabled automatically by git-annex.
-    Only one ssh connection is made to each host per git-annex run, which
-    can speed some things up a lot, as well as avoiding repeated password
-    prompts. Concurrent git-annex processes also share ssh connections.
-    Cached ssh connections are shut down when git-annex exits.
-  * To disable the ssh caching (if for example you have your own broader
-    ssh caching configuration), set annex.sshcaching=false.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 23 Jan 2012 13:48:48 -0400
-
-git-annex (3.20120116) unstable; urgency=medium
-
-  * Fix data loss bug in directory special remote, when moving a file
-    to the remote failed, and partially transferred content was left
-    behind in the directory, re-running the same move would think it
-    succeeded and delete the local copy.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 16 Jan 2012 16:43:45 -0400
-
-git-annex (3.20120115) unstable; urgency=low
-
-  * Add a sanity check for bad StatFS results. On architectures
-    where StatFS does not currently work (s390, mips, powerpc, sparc),
-    this disables the diskreserve checking code, and attempting to
-    configure an annex.diskreserve will result in an error.
-  * Fix QuickCheck dependency in cabal file.
-  * Minor optimisations.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 15 Jan 2012 13:54:20 -0400
-
-git-annex (3.20120113) unstable; urgency=low
-
-  * log: Add --gource mode, which generates output usable by gource.
-  * map: Fix display of remote repos
-  * Add annex-trustlevel configuration settings, which can be used to 
-    override the trust level of a remote.
-  * git-annex, git-union-merge: Support GIT_DIR and GIT_WORK_TREE.
-  * Add libghc-testpack-dev to build depends on all arches.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 13 Jan 2012 15:35:17 -0400
-
-git-annex (3.20120106) unstable; urgency=low
-
-  * Support unescaped repository urls, like git does.
-  * log: New command that displays the location log for files,
-    showing each repository they were added to and removed from.
-  * Fix overbroad gpg --no-tty fix from last release.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 07 Jan 2012 13:16:23 -0400
-
-git-annex (3.20120105) unstable; urgency=low
-
-  * Added annex-web-options configuration settings, which can be
-    used to provide parameters to whichever of wget or curl git-annex uses
-    (depends on which is available, but most of their important options
-    suitable for use here are the same).
-  * Dotfiles, and files inside dotdirs are not added by "git annex add"
-    unless the dotfile or directory is explicitly listed. So "git annex add ."
-    will add all untracked files in the current directory except for those in
-    dotdirs.
-  * Added quickcheck to build dependencies, and fail if test suite cannot be
-    built.
-  * fsck: Do backend-specific check before checking numcopies is satisfied.
-  * Run gpg with --no-tty. Closes: #654721
-
- -- Joey Hess <joeyh@debian.org>  Thu, 05 Jan 2012 13:44:12 -0400
-
-git-annex (3.20111231) unstable; urgency=low
-
-  * sync: Improved to work well without a central bare repository.
-    Thanks to Joachim Breitner.
-  * Rather than manually committing, pushing, pulling, merging, and git annex
-    merging, we encourage you to give "git annex sync" a try.
-  * sync --fast: Selects some of the remotes with the lowest annex.cost
-    and syncs those, in addition to any specified at the command line.
-  * Union merge now finds the least expensive way to represent the merge.
-  * reinject: Add a sanity check for using an annexed file as the source file.
-  * Properly handle multiline git config values.
-  * Fix the hook special remote, which bitrotted a while ago.
-  * map: --fast disables use of dot to display map
-  * Test suite improvements. Current top-level test coverage: 75%
-  * Improve deletion of files from rsync special remotes. Closes: #652849
-  * Add --include, which is the same as --not --exclude.
-  * Format strings can be specified using the new --format option, to control
-    what is output by git annex find.
-  * Support git annex find --json
-  * Fixed behavior when multiple insteadOf configs are provided for the
-    same url base.
-  * Can now be built with older git versions (before 1.7.7); the resulting
-    binary should only be used with old git.
-  * Updated to build with monad-control 0.3.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 31 Dec 2011 14:55:29 -0400
-
-git-annex (3.20111211) unstable; urgency=medium
-
-  * Fix bug in last version in getting contents from bare repositories.
-  * Ensure that git-annex branch changes are merged into git-annex's index,
-    which fixes a bug that could cause changes that were pushed to the
-    git-annex branch to get reverted. As a side effect, it's now safe
-    for users to check out and commit changes directly to the git-annex
-    branch.
-  * map: Fix a failure to detect a loop when both repositories are local
-    and refer to each other with relative paths.
-  * Prevent key names from containing newlines.
-  * add: If interrupted, add can leave files converted to symlinks but not
-    yet added to git. Running the add again will now clean up this situtation.
-  * Fix caching of decrypted ciphers, which failed when drop had to check
-    multiple different encrypted special remotes.
-  * unannex: Can be run on files that have been added to the annex, but not
-    yet committed.
-  * sync: New command that synchronises the local repository and default
-    remote, by running git commit, pull, and push for you.
-  * Version monad-control dependency in cabal file.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 11 Dec 2011 21:24:39 -0400
-
-git-annex (3.20111203) unstable; urgency=low
-
-  * The VFAT filesystem on recent versions of Linux, when mounted with
-    shortname=mixed, does not get along well with git-annex's mixed case
-    .git/annex/objects hash directories. To avoid this problem, new content
-    is now stored in all-lowercase hash directories. Except for non-bare
-    repositories which would be a pain to transition and cannot be put on FAT.
-    (Old mixed-case hash directories are still tried for backwards
-    compatibility.)
-  * Flush json output, avoiding a buffering problem that could result in
-    doubled output.
-  * Avoid needing haskell98 and other fixes for new ghc. Thanks, Mark Wright.
-  * Bugfix: dropunused did not drop keys with two spaces in their name.
-  * Support for storing .git/annex on a different device than the rest of the
-    git repository.
-  * --inbackend can be used to make git-annex only operate on files
-    whose content is stored using a specified key-value backend.
-  * dead: A command which says that a repository is gone for good
-    and you don't want git-annex to mention it again.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 03 Dec 2011 21:01:45 -0400
-
-git-annex (3.20111122) unstable; urgency=low
-
-  * merge: Improve commit messages to mention what was merged.
-  * Avoid doing auto-merging in commands that don't need fully current
-    information from the git-annex branch. In particular, git annex add
-    no longer needs to auto-merge.
-  * init: When run in an already initalized repository, and without
-    a description specified, don't delete the old description. 
-  * Optimised union merging; now only runs git cat-file once, and runs
-    in constant space.
-  * status: Now displays trusted, untrusted, and semitrusted repositories
-    separately.
-  * status: Include all special remotes in the list of repositories.
-  * status: Fix --json mode.
-  * status: --fast is back
-  * Fix support for insteadOf url remapping. Closes: #644278
-  * When not run in a git repository, git-annex can still display a usage
-    message, and "git annex version" even works.
-  * migrate: Don't fall over a stale temp file.
-  * Avoid excessive escaping for rsync special remotes that are not accessed
-    over ssh.
-  * find: Support --print0
-
- -- Joey Hess <joeyh@debian.org>  Tue, 22 Nov 2011 14:31:45 -0400
-
-git-annex (3.20111111) unstable; urgency=low
-
-  * Handle a case where an annexed file is moved into a gitignored directory,
-    by having fix --force add its change.
-  * Avoid cyclic drop problems.
-  * Optimized copy --from and get --from to avoid checking the location log
-    for files that are already present.
-  * Automatically fix up badly formatted uuid.log entries produced by
-    3.20111105, whenever the uuid.log is changed (ie, by init or describe).
-  * map: Support remotes with /~/ and /~user/
-
- -- Joey Hess <joeyh@debian.org>  Fri, 11 Nov 2011 13:44:18 -0400
-
-git-annex (3.20111107) unstable; urgency=low
-
-  * merge: Use fast-forward merges when possible.
-    Thanks Valentin Haenel for a test case showing how non-fast-forward
-    merges could result in an ongoing pull/merge/push cycle.
-  * Don't try to read config from repos with annex-ignore set.
-  * Bugfix: In the past two releases, git-annex init has written the uuid.log
-    in the wrong format, with the UUID and description flipped.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 07 Nov 2011 12:47:44 -0400
-
-git-annex (3.20111105) unstable; urgency=low
-
-  * The default backend used when adding files to the annex is changed
-    from WORM to SHA256.
-    To get old behavior, add a .gitattributes containing: * annex.backend=WORM
-  * Sped up some operations on remotes that are on the same host.
-  * copy --to: Fixed leak when copying many files to a remote on the same
-    host.
-  * uninit: Add guard against being run with the git-annex branch checked out.
-  * Fail if --from or --to is passed to commands that do not support them.
-  * drop --from is now supported to remove file content from a remote.
-  * status: Now always shows the current repository, even when it does not
-    appear in uuid.log.
-  * fsck: Now works in bare repositories. Checks location log information,
-    and file contents. Does not check that numcopies is satisfied, as
-    .gitattributes information about numcopies is not available in a bare
-    repository.
-  * unused, dropunused: Now work in bare repositories.
-  * Removed the setkey command, and added a reinject command with a more
-    useful interface.
-  * The fromkey command now takes the key as its first parameter. The --key
-    option is no longer used.
-  * Built without any filename containing .git being excluded. Closes: #647215
-  * Record uuid when auto-initializing a remote so it shows in status.
-  * Bugfix: Fixed git-annex init crash in a bare repository when there was
-    already an existing git-annex branch.
-  * Pass -t to rsync to preserve timestamps.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 05 Nov 2011 15:47:52 -0400
-
-git-annex (3.20111025) unstable; urgency=low
-
-  * A remote can have a annexUrl configured, that is used by git-annex
-    instead of its usual url. (Similar to pushUrl.)
-  * migrate: Copy url logs for keys when migrating.
-  * git-annex-shell: GIT_ANNEX_SHELL_READONLY and GIT_ANNEX_SHELL_LIMITED
-    environment variables can be set to limit what commands can be run.
-    This is used by gitolite's new git-annex support!
-
- -- Joey Hess <joeyh@debian.org>  Tue, 25 Oct 2011 13:03:08 -0700
-
-git-annex (3.20111011) unstable; urgency=low
-
-  * This version of git-annex only works with git 1.7.7 and newer.
-    The breakage with old versions is subtle, and affects the
-    annex.numcopies settings in .gitattributes, so be sure to upgrade git
-    to 1.7.7. (Debian package now depends on that version.)
-  * Don't pass absolute paths to git show-attr, as it started following
-    symlinks when that's done in 1.7.7. Instead, use relative paths,
-    which show-attr only handles 100% correctly in 1.7.7. Closes: #645046
-  * Fix referring to remotes by uuid.
-  * New or changed repository descriptions in uuid.log now have a timestamp,
-    which is used to ensure the newest description is used when the uuid.log
-    has been merged.
-  * Note that older versions of git-annex will display the timestamp as part
-    of the repository description, which is ugly but otherwise harmless.
-  * Add timestamps to trust.log and remote.log too.
-  * git-annex-shell: Added the --uuid option.
-  * git-annex now asks git-annex-shell to verify that it's operating in 
-    the expected repository.
-  * Note that this git-annex will not interoperate with remotes using 
-    older versions of git-annex-shell.
-  * Now supports git's insteadOf configuration, to modify the url
-    used to access a remote. Note that pushInsteadOf is not used;
-    that and pushurl are reserved for actual git pushes. Closes: #644278
-  * status: List all known repositories.
-  * When displaying a list of repositories, show git remote names
-    in addition to their descriptions.
-  * Add locking to avoid races when changing the git-annex branch.
-  * Various speed improvements gained by using ByteStrings.
-  * Contain the zombie hordes.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 11 Oct 2011 23:00:02 -0400
-
-git-annex (3.20110928) unstable; urgency=low
-
-  * --in can be used to make git-annex only operate on files
-    believed to be present in a given repository.
-  * Arbitrarily complex expressions can be built to limit the files git-annex
-    operates on, by combining the options --not --and --or -( and -)
-    Example: git annex get --exclude '*.mp3' --and --not -( --in usbdrive --or --in archive -)
-  * --copies=N can be used to make git-annex only operate on files with
-    the specified number of copies. (And --not --copies=N for the inverse.)
-  * find: Rather than only showing files whose contents are present,
-    when used with --exclude --copies or --in, displays all files that
-    match the specified conditions.
-  * Note that this is a behavior change for git-annex find! Old behavior
-    can be gotten by using: git-annex find --in .
-  * status: Massively sped up; remove --fast mode.
-  * unused: File contents used by branches and tags are no longer
-    considered unused, even when not used by the current branch. This is
-    the final piece of the puzzle needed for git-annex to to play nicely
-    with branches.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 28 Sep 2011 18:14:02 -0400
-
-git-annex (3.20110915) unstable; urgency=low
-
-  * whereis: Show untrusted locations separately and do not include in
-    location count.
-  * Fix build without S3.
-  * addurl: Always use whole url as destination filename, rather than
-    only its file component.
-  * get, drop, copy: Added --auto option, which decides whether
-    to get/drop content as needed to work toward the configured numcopies.
-  * bugfix: drop and fsck did not honor --exclude
-
- -- Joey Hess <joeyh@debian.org>  Thu, 15 Sep 2011 22:25:46 -0400
-
-git-annex (3.20110906) unstable; urgency=low
-
-  * Improve display of newlines around error and warning messages.
-  * Fix Makefile to work with cabal again.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 06 Sep 2011 13:45:16 -0400
-
-git-annex (3.20110902) unstable; urgency=low
-
-  * Set EMAIL when running test suite so that git does not need to be
-    configured first. Closes: #638998
-  * The wget command will now be used in preference to curl, if available.
-  * init: Make description an optional parameter.
-  * unused, status: Sped up by avoiding unnecessary stats of annexed files.
-  * unused --remote: Reduced memory use to 1/4th what was used before.
-  * Add --json switch, to produce machine-consumable output.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 02 Sep 2011 21:20:37 -0400
-
-git-annex (3.20110819) unstable; urgency=low
-
-  * Now "git annex init" only has to be run once, when a git repository
-    is first being created. Clones will automatically notice that git-annex
-    is in use and automatically perform a basic initalization. It's
-    still recommended to run "git annex init" in any clones, to describe them.
-  * Added annex-cost-command configuration, which can be used to vary the
-    cost of a remote based on the output of a shell command.
-  * Fix broken upgrade from V1 repository. Closes: #638584
-
- -- Joey Hess <joeyh@debian.org>  Fri, 19 Aug 2011 20:34:09 -0400
-
-git-annex (3.20110817) unstable; urgency=low
-
-  * Fix shell escaping in rsync special remote.
-  * addurl: --fast can be used to avoid immediately downloading the url.
-  * Added support for getting content from git remotes using http (and https).
-  * Added curl to Debian package dependencies.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 17 Aug 2011 01:29:02 -0400
-
-git-annex (3.20110719) unstable; urgency=low
-
-  * add: Be even more robust to avoid ever leaving the file seemingly deleted.
-    Closes: #634233
-  * Bugfix: Make add ../ work.
-  * Support the standard git -c name=value
-  * unannex: Clean up use of git commit -a.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 19 Jul 2011 23:39:53 -0400
-
-git-annex (3.20110707) unstable; urgency=low
-
-  * Fix sign bug in disk free space checking.
-  * Bugfix: Forgot to de-escape keys when upgrading. Could result in
-    bad location log data for keys that contain [&:%] in their names.
-    (A workaround for this problem is to run git annex fsck.)
-  * add: Avoid a failure mode that resulted in the file seemingly being
-    deleted (content put in the annex but no symlink present).
-
- -- Joey Hess <joeyh@debian.org>  Thu, 07 Jul 2011 19:29:39 -0400
-
-git-annex (3.20110705) unstable; urgency=low
-
-  * uninit: Delete the git-annex branch and .git/annex/
-  * unannex: In --fast mode, file content is left in the annex, and a
-    hard link made to it.
-  * uninit: Use unannex in --fast mode, to support unannexing multiple
-    files that link to the same content.
-  * Drop the dependency on the haskell curl bindings, use regular haskell HTTP.
-  * Fix a pipeline stall when upgrading (caused by #624389).
-
- -- Joey Hess <joeyh@debian.org>  Tue, 05 Jul 2011 14:37:39 -0400
-
-git-annex (3.20110702) unstable; urgency=low
-
-  * Now the web can be used as a special remote. 
-    This feature replaces the old URL backend.
-  * addurl: New command to download an url and store it in the annex.
-  * Sped back up fsck, copy --from, and other commands that often
-    have to read a lot of information from the git-annex branch. Such
-    commands are now faster than they were before introduction of the
-    git-annex branch.
-  * Always ensure git-annex branch exists.
-  * Modify location log parser to allow future expansion.
-  * --force will cause add, etc, to operate on ignored files.
-  * Avoid mangling encoding when storing the description of repository
-    and other content.
-  * cabal can now be used to build git-annex. This is substantially
-    slower than using make, does not build or install documentation,
-    does not run the test suite, and is not particularly recommended,
-    but could be useful to some.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 02 Jul 2011 15:00:18 -0400
-
-git-annex (3.20110624) experimental; urgency=low
-
-  * New repository format, annex.version=3. Use `git annex upgrade` to migrate.
-  * git-annex now stores its logs in a git-annex branch.
-  * merge: New subcommand. Auto-merges the new git-annex branch.
-  * Improved handling of bare git repos with annexes. Many more commands will
-    work in them.
-  * git-annex is now more robust; it will never leave state files
-    uncommitted when some other git process comes along and locks the index
-    at an inconvenient time.
-  * rsync is now used when copying files from repos on other filesystems.
-    cp is still used when copying file from repos on the same filesystem,
-    since --reflink=auto can make it significantly faster on filesystems
-    such as btrfs.
-  * Allow --trust etc to specify a repository by name, for temporarily 
-    trusting repositories that are not configured remotes.
-  * unlock: Made atomic.
-  * git-union-merge: New git subcommand, that does a generic union merge
-    operation, and operates efficiently without touching the working tree.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 24 Jun 2011 14:32:18 -0400
-
-git-annex (0.20110610) unstable; urgency=low
-
-  * Add --numcopies option.
-  * Add --trust, --untrust, and --semitrust options.
-  * get --from is the same as copy --from
-  * Bugfix: Fix fsck to not think all SHAnE keys are bad.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 10 Jun 2011 11:48:40 -0400
-
-git-annex (0.20110601) unstable; urgency=low
-
-  * Minor bugfixes and error message improvements.
-  * Massively sped up `git annex lock` by avoiding use of the uber-slow
-    `git reset`, and only running `git checkout` once, even when many files
-    are being locked.
-  * Fix locking of files with staged changes.
-  * Somewhat sped up `git commit` of modifications to unlocked files.
-  * Build fix for older ghc.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 01 Jun 2011 11:50:47 -0400
-
-git-annex (0.20110522) unstable; urgency=low
-
-  * Closer emulation of git's behavior when told to use "foo/.git" as a
-    git repository instead of just "foo". Closes: #627563
-  * Fix bug in --exclude introduced in 0.20110516.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 27 May 2011 20:20:41 -0400
-
-git-annex (0.20110521) unstable; urgency=low
-
-  * status: New subcommand to show info about an annex, including its size.
-  * --backend now overrides any backend configured in .gitattributes files.
-  * Add --debug option. Closes: #627499
-
- -- Joey Hess <joeyh@debian.org>  Sat, 21 May 2011 11:52:53 -0400
-
-git-annex (0.20110516) unstable; urgency=low
-
-  * Add a few tweaks to make it easy to use the Internet Archive's variant
-    of S3. In particular, munge key filenames to comply with the IA's filename
-    limits, disable encryption, support their nonstandard way of creating
-    buckets, and allow x-archive-* headers to be specified in initremote to
-    set item metadata.
-  * Added filename extension preserving variant backends SHA1E, SHA256E, etc.
-  * migrate: Use current filename when generating new key, for backends
-    where the filename affects the key name.
-  * Work around a bug in Network.URI's handling of bracketed ipv6 addresses.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 16 May 2011 14:16:52 -0400
-
-git-annex (0.20110503) unstable; urgency=low
-
-  * Fix hasKeyCheap setting for bup and rsync special remotes.
-  * Add hook special remotes.
-  * Avoid crashing when an existing key is readded to the annex.
-  * unused: Now also lists files fsck places in .git/annex/bad/
-  * S3: When encryption is enabled, the Amazon S3 login credentials
-    are stored, encrypted, in .git-annex/remotes.log, so environment
-    variables need not be set after the remote is initialized.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 03 May 2011 20:56:01 -0400
-
-git-annex (0.20110427) unstable; urgency=low
-
-  * Switch back to haskell SHA library, so git-annex remains buildable on
-    Debian stable.
-  * Added rsync special remotes. This could be used, for example, to 
-    store annexed content on rsync.net (encrypted naturally). Or anywhere else.
-  * Bugfix: Avoid pipeline stall when running git annex drop or fsck on a
-    lot of files. Possibly only occured with ghc 7.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 27 Apr 2011 22:50:26 -0400
-
-git-annex (0.20110425) unstable; urgency=low
-
-  * Use haskell Crypto library instead of haskell SHA library.
-  * Remove testpack from build depends for non x86 architectures where it
-    is not available. The test suite will not be run if it cannot be compiled.
-  * Avoid using absolute paths when staging location log, as that can
-    confuse git when a remote's path contains a symlink. Closes: #621386
-
- -- Joey Hess <joeyh@debian.org>  Mon, 25 Apr 2011 15:47:00 -0400
-
-git-annex (0.20110420) unstable; urgency=low
-
-  * Update Debian build dependencies for ghc 7.
-  * Debian package is now built with S3 support.
-    Thanks Joachim Breitner for making this possible.
-  * Somewhat improved memory usage of S3, still work to do.
-    Thanks Greg Heartsfield for ongoing work to improve the hS3 library
-    for git-annex.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 21 Apr 2011 15:00:48 -0400
-
-git-annex (0.20110419) unstable; urgency=low
-
-  * Don't run gpg in batch mode, so it can prompt for passphrase when
-    there is no agent.
-  * Add missing build dep on dataenc.
-  * S3: Fix stalls when transferring encrypted data.
-  * bup: Avoid memory leak when transferring encrypted data.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 19 Apr 2011 21:26:51 -0400
-
-git-annex (0.20110417) unstable; urgency=low
-
-  * bup is now supported as a special type of remote.
-  * The data sent to special remotes (Amazon S3, bup, etc) can be encrypted
-    using GPG for privacy.
-  * Use lowercase hash directories for locationlog files, to avoid
-    some issues with git on OSX with the mixed-case directories.
-    No migration is needed; the old mixed case hash directories are still
-    read; new information is written to the new directories.
-  * Unused files on remotes, particulary special remotes, can now be
-    identified and dropped, by using "--from remote" with git annex unused
-    and git annex dropunused.
-  * Clear up short option confusion between --from and --force (-f is now
-    --from, and there is no short option for --force).
-  * Add build depend on perlmagick so docs are consistently built.
-    Closes: #621410
-  * Add doc-base file. Closes: #621408
-  * Periodically flush git command queue, to avoid boating memory usage
-    too much.
-  * Support "sha1" and "sha512" commands on FreeBSD, and allow building
-    if any/all SHA commands are not available. Thanks, Fraser Tweedale
-
- -- Joey Hess <joeyh@debian.org>  Sun, 17 Apr 2011 12:00:24 -0400
-
-git-annex (0.20110401) experimental; urgency=low
-
-  * Amazon S3 is now supported as a special type of remote.
-    Warning: Encrypting data before sending it to S3 is not yet supported.
-  * Note that Amazon S3 support is not built in by default on Debian yet,
-    as hS3 is not packaged.
-  * fsck: Ensure that files and directories in .git/annex/objects
-    have proper permissions.
-  * Added a special type of remote called a directory remote, which
-    simply stores files in an arbitrary local directory.
-  * Bugfix: copy --to --fast never really copied, fixed.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 01 Apr 2011 21:27:22 -0400
-
-git-annex (0.20110328) experimental; urgency=low
-
-  * annex.diskreserve can be given in arbitrary units (ie "0.5 gigabytes")
-  * Generalized remotes handling, laying groundwork for remotes that are
-    not regular git remotes. (Think Amazon S3.)
-  * Provide a less expensive version of `git annex copy --to`, enabled
-    via --fast. This assumes that location tracking information is correct,
-    rather than contacting the remote for every file.
-  * Bugfix: Keys could be received into v1 annexes from v2 annexes, via
-    v1 git-annex-shell. This results in some oddly named keys in the v1
-    annex. Recognise and fix those keys when upgrading, instead of crashing.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 28 Mar 2011 10:47:29 -0400
-
-git-annex (0.20110325) experimental; urgency=low
-
-  * Free space checking is now done, for transfers of data for keys
-    that have free space metadata. (Notably, not for SHA* keys generated
-    with git-annex 0.2x or earlier.) The code is believed to work on
-    Linux, FreeBSD, and OSX; check compile-time messages to see if it
-    is not enabled for your OS.
-  * Add annex.diskreserve config setting, to control how much free space
-    to reserve for other purposes and avoid using (defaults to 1 mb).
-  * Add --fast flag, that can enable less expensive, but also less thorough
-    versions of some commands.
-  * fsck: In fast mode, avoid checking checksums.
-  * unused: In fast mode, just show all existing temp files as unused,
-    and avoid expensive scan for other unused content.
-  * migrate: Support migrating v1 SHA keys to v2 SHA keys with
-    size information that can be used for free space checking.
-  * Fix space leak in fsck and drop commands.
-  * migrate: Bugfix for case when migrating a file results in a key that
-    is already present in .git/annex/objects.
-  * dropunused: Significantly sped up; only read unused log file once.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 25 Mar 2011 00:47:37 -0400
-
-git-annex (0.20110320) experimental; urgency=low
-
-  * Fix dropping of files using the URL backend.
-  * Fix support for remotes with '.' in their names.
-  * Add version command to show git-annex version as well as repository
-    version information.
-  * No longer auto-upgrade to repository format 2, to avoid accidental
-    upgrades, etc. Use git-annex upgrade when you're ready to run this
-    version.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 20 Mar 2011 16:36:33 -0400
-
-git-annex (0.20110316) experimental; urgency=low
-
-  * New repository format, annex.version=2.
-  * The first time git-annex is run in an old format repository, it
-    will automatically upgrade it to the new format, staging all
-    necessary changes to git. Also added a "git annex upgrade" command.
-  * Colons are now avoided in filenames, so bare clones of git repos
-    can be put on USB thumb drives formatted with vFAT or similar
-    filesystems.
-  * Added two levels of hashing to object directory and .git-annex logs,
-    to improve scalability with enormous numbers of annexed
-    objects. (With one hundred million annexed objects, each
-    directory would contain fewer than 1024 files.)
-  * The setkey, fromkey, and dropkey subcommands have changed how
-    the key is specified. --backend is no longer used with these.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 16 Mar 2011 16:20:23 -0400
-
-git-annex (0.24) unstable; urgency=low
-
-  Branched the 0.24 series, which will be maintained for a while to
-  support v1 git-annex repos, while main development moves to the 0.2011
-  series, with v2 git-annex repos.
-
-  * Add Suggests on graphviz. Closes: #618039
-  * When adding files to the annex, the symlinks pointing at the annexed
-    content are made to have the same mtime as the original file.
-    While git does not preserve that information, this allows a tool
-    like metastore to be used with annexed files.
-    (Currently this is only done on systems supporting POSIX 200809.)
-
- -- Joey Hess <joeyh@debian.org>  Wed, 16 Mar 2011 18:35:13 -0400
-
-git-annex (0.23) unstable; urgency=low
-
-  * Support ssh remotes with a port specified.
-  * whereis: New subcommand to show where a file's content has gotten to.
-  * Rethink filename encoding handling for display. Since filename encoding
-    may or may not match locale settings, any attempt to decode filenames 
-    will fail for some files. So instead, do all output in binary mode.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 12 Mar 2011 15:02:49 -0400
-
-git-annex (0.22) unstable; urgency=low
-
-  * Git annexes can now be attached to bare git repositories.
-    (Both the local and remote host must have this version of git-annex
-    installed for it to work.)
-  * Support filenames that start with a dash; when such a file is passed
-    to a utility it will be escaped to avoid it being interpreted as an
-    option. (I went a little overboard and got the type checker involved
-    in this, so such files are rather comprehensively supported now.)
-  * New backends: SHA512 SHA384 SHA256 SHA224
-    (Supported on systems where corresponding shaNsum commands are available.)
-  * describe: New subcommand that can set or change the description of
-    a repository.
-  * Fix test suite to reap zombies.
-    (Zombies can be particularly annoying on OSX; thanks to Jimmy Tang
-    for his help eliminating the infestation... for now.)
-  * Make test suite not rely on a working cp -pr.
-    (The Unix wars are still ON!)
-  * Look for dir.git directories the same as git does.
-  * Support remote urls specified as relative paths.
-  * Support non-ssh remote paths that contain tilde expansions.
-  * fsck: Check for and repair location log damage.
-  * Bugfix: When fsck detected and moved away corrupt file content, it did
-    not update the location log.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 04 Mar 2011 15:10:57 -0400
-
-git-annex (0.21) unstable; urgency=low
-
-  * test: Don't rely on chmod -R working.
-  * unannex: Fix recently introduced bug when attempting to unannex more
-    than one file at a time.
-  * test: Set git user name and email in case git can't guess values.
-  * Fix display of unicode filenames.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 11 Feb 2011 23:21:08 -0400
-
-git-annex (0.20) unstable; urgency=low
-
-  * Preserve specified file ordering when instructed to act on multiple
-    files or directories. For example, "git annex get a b" will now always
-    get "a" before "b". Previously it could operate in either order.
-  * unannex: Commit staged changes at end, to avoid some confusing behavior
-    with the pre-commit hook, which would see some types of commits after
-    an unannex as checking in of an unlocked file.
-  * map: New subcommand that uses graphviz to display a nice map of
-    the git repository network.
-  * Deal with the mtl/monads-fd conflict.
-  * configure: Check for sha1sum.
-
- -- Joey Hess <joeyh@debian.org>  Tue, 08 Feb 2011 18:57:24 -0400
-
-git-annex (0.19) unstable; urgency=low
-
-  * configure: Support using the uuidgen command if the uuid command is
-    not available.
-  * Allow --exclude to be specified more than once.
-  * There are now three levels of repository trust.
-  * untrust: Now marks the current repository as untrusted.
-  * semitrust: Now restores the default trust level. (What untrust used to do.)
-  * fsck, drop: Take untrusted repositories into account.
-  * Bugfix: Files were copied from trusted remotes first even if their
-    annex.cost was higher than other remotes.
-  * Improved temp file handling. Transfers of content can now be resumed
-    from temp files later; the resume does not have to be the immediate
-    next git-annex run.
-  * unused: Include partially transferred content in the list.
-  * Bugfix: Running a second git-annex while a first has a transfer in
-    progress no longer deletes the first processes's temp file.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 28 Jan 2011 14:31:37 -0400
-
-git-annex (0.18) unstable; urgency=low
-
-  * Bugfix: `copy --to` and `move --to` forgot to stage location log changes
-    after transferring the file to the remote repository.
-    (Did not affect ssh remotes.)
-  * fsck: Fix bug in moving of corrupted files to .git/annex/bad/
-  * migrate: Fix support for --backend option.
-  * unlock: Fix behavior when file content is not present.
-  * Test suite improvements. Current top-level test coverage: 80%
-
- -- Joey Hess <joeyh@debian.org>  Fri, 14 Jan 2011 14:17:44 -0400
-
-git-annex (0.17) unstable; urgency=low
-
-  * unannex: Now skips files whose content is not present, rather than
-    it being an error.
-  * New migrate subcommand can be used to switch files to using a different
-    backend, safely and with no duplication of content.
-  * bugfix: Fix crash caused by empty key name. (Thanks Henrik for reporting.)
-
- -- Joey Hess <joeyh@debian.org>  Sun, 09 Jan 2011 10:04:11 -0400
-
-git-annex (0.16) unstable; urgency=low
-
-  * git-annex-shell: Avoid exposing any git repo config except for the
-    annex.uuid when doing configlist.
-  * bugfix: Running `move --to` with a remote whose UUID was not yet known
-    could result in git-annex not recording on the local side where the
-    file was moved to. This could not result in data loss, or even a
-    significant problem, since the remote *did* record that it had the file.
-  * Also, add a general guard to detect attempts to record information
-    about repositories with missing UUIDs.
-  * bugfix: Running `move --to` with a non-ssh remote failed.
-  * bugfix: Running `copy --to` with a non-ssh remote actually did a move.
-  * Many test suite improvements. Current top-level test coverage: 65%
-
- -- Joey Hess <joeyh@debian.org>  Fri, 07 Jan 2011 14:33:13 -0400
-
-git-annex (0.15) unstable; urgency=low
-
-  * Support scp-style urls for remotes (host:path).
-  * Support ssh urls containing "~".
-  * Add trust and untrust subcommands, to allow configuring repositories
-    that are trusted to retain files without explicit checking.
-  * Fix bug in numcopies handling when multiple remotes pointed to the
-    same repository.
-  * Introduce the git-annex-shell command. It's now possible to make
-    a user have it as a restricted login shell, similar to git-shell.
-  * Note that git-annex will always use git-annex-shell when accessing
-    a ssh remote, so all of your remotes need to be upgraded to this
-    version of git-annex at the same time.
-  * Now rsync is exclusively used for copying files to and from remotes.
-    scp is not longer supported.
-
- -- Joey Hess <joeyh@debian.org>  Fri, 31 Dec 2010 22:00:52 -0400
-
-git-annex (0.14) unstable; urgency=low
-
-  * Bugfix to git annex unused in a repository with nothing yet annexed.
-  * Support upgrading from a v0 annex with nothing in it.
-  * Avoid multiple calls to git ls-files when passed eg, "*".
-
- -- Joey Hess <joeyh@debian.org>  Fri, 24 Dec 2010 17:38:48 -0400
-
-git-annex (0.13) unstable; urgency=low
-
-  * Makefile: Install man page and html (when built).
-  * Makefile: Add GHCFLAGS variable.
-  * Fix upgrade from 0.03.
-  * Support remotes using git+ssh and ssh+git as protocol.
-    Closes: #607056
-
- -- Joey Hess <joeyh@debian.org>  Tue, 14 Dec 2010 13:05:10 -0400
-
-git-annex (0.12) unstable; urgency=low
-
-  * Add --exclude option to exclude files from processing.
-  * mwdn2man: Fix a bug in newline supression. Closes: #606578
-  * Bugfix to git annex add of an unlocked file in a subdir. Closes: #606579
-  * Makefile: Add PREFIX variable.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 11 Dec 2010 17:32:00 -0400
-
-git-annex (0.11) unstable; urgency=low
-
-  * If available, rsync will be used for file transfers from remote
-    repositories. This allows resuming interrupted transfers.
-  * Added remote.annex-rsync-options.
-  * Avoid deleting temp files when rsync fails.
-  * Improve detection of version 0 repos.
-  * Add uninit subcommand. Closes: #605749
-
- -- Joey Hess <joeyh@debian.org>  Sat, 04 Dec 2010 17:27:42 -0400
-
-git-annex (0.10) unstable; urgency=low
-
-  * In .gitattributes, the annex.numcopies attribute can be used
-    to control the number of copies to retain of different types of files.
-  * Bugfix: Always correctly handle gitattributes when in a subdirectory of
-    the repository. (Had worked ok for ones like "*.mp3", but failed for
-    ones like "dir/*".)
-  * fsck: Fix warning about not enough copies of a file, when locations
-    are known, but are not available in currently configured remotes.
-  * precommit: Optimise to avoid calling git-check-attr more than once.
-  * The git-annex-backend attribute has been renamed to annex.backend.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 28 Nov 2010 19:28:05 -0400
-
-git-annex (0.09) unstable; urgency=low
-
-  * Add copy subcommand.
-  * Fix bug in setkey subcommand triggered by move --to.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 27 Nov 2010 17:14:59 -0400
-
-git-annex (0.08) unstable; urgency=low
-
-  * Fix `git annex add ../foo` (when ran in a subdir of the repo).
-  * Add configure step to build process.
-  * Only use cp -a if it is supported, falling back to cp -p or plain cp
-    as needed for portability.
-  * cp --reflink=auto is used if supported, and will make git annex unlock
-    much faster on filesystems like btrfs that support copy on write.
-
- -- Joey Hess <joeyh@debian.org>  Sun, 21 Nov 2010 13:45:44 -0400
-
-git-annex (0.07) unstable; urgency=low
-
-  * find: New subcommand.
-  * unused: New subcommand, finds unused data. (Split out from fsck.)
-  * dropunused: New subcommand, provides for easy dropping of unused keys
-    by number, as listed by the unused subcommand.
-  * fsck: Print warnings to stderr; --quiet can now be used to only see
-    problems.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 15 Nov 2010 18:41:50 -0400
-
-git-annex (0.06) unstable; urgency=low
-
-  * fsck: Check if annex.numcopies is satisfied.
-  * fsck: Verify the sha1 of files when the SHA1 backend is used.
-  * fsck: Verify the size of files when the WORM backend is used.
-  * fsck: Allow specifying individual files if fscking everything
-    is not desired.
-  * fsck: Fix bug, introduced in 0.04, in detection of unused data.
-
- -- Joey Hess <joeyh@debian.org>  Sat, 13 Nov 2010 16:24:29 -0400
-
-git-annex (0.05) unstable; urgency=low
-
-  * Optimize both pre-commit and lock subcommands to not call git diff
-    on every file being committed/locked.
-    (This actually also works around a bug in ghc, that caused
-    git-annex 0.04 pre-commit to sometimes corrupt filename being read
-    from git ls-files and fail. 
-    See <http://hackage.haskell.org/trac/ghc/ticket/4493>
-    The excessive number of calls made by pre-commit exposed the ghc bug.
-    Thanks Josh Triplett for the debugging.)
-  * Build with -O2.
-
- -- Joey Hess <joeyh@debian.org>  Thu, 11 Nov 2010 18:31:09 -0400
-
-git-annex (0.04) unstable; urgency=low
-
-  * Add unlock subcommand, which replaces the symlink with a copy of
-    the file's content in preparation of changing it. The "edit" subcommand
-    is an alias for unlock.
-  * Add lock subcommand.
-  * Unlocked files will now automatically be added back into the annex when
-    committed (and the updated symlink committed), by some magic in the
-    pre-commit hook.
-  * The SHA1 backend is now fully usable.
-  * Add annex.version, which will be used to automate upgrades
-    between incompatible versions.
-  * Reorganised the layout of .git/annex/
-  * The new layout will be automatically upgraded to the first time
-    git-annex is used in a repository with the old layout.
-  * Note that git-annex 0.04 cannot transfer content from old repositories
-    that have not yet been upgraded.
-  * Annexed file contents are now made unwritable and put in unwriteable
-    directories, to avoid them accidentially being removed or modified.
-    (Thanks Josh Triplett for the idea.)
-  * Add build dep on libghc6-testpack-dev. Closes: #603016
-  * Avoid using runghc to run test suite as it is not available on all
-    architectures. Closes: #603006
-
- -- Joey Hess <joeyh@debian.org>  Wed, 10 Nov 2010 14:23:23 -0400
-
-git-annex (0.03) unstable; urgency=low
-
-  * Fix support for file:// remotes.
-  * Add --verbose
-  * Fix SIGINT handling.
-  * Fix handling of files with unusual characters in their name.
-  * Fixed memory leak; git-annex no longer reads the whole file list
-    from git before starting, and will be much faster with large repos.
-  * Fix crash on unknown symlinks.
-  * Added remote.annex-scp-options and remote.annex-ssh-options.
-  * The backends to use when adding different sets of files can be configured
-    via gitattributes.
-  * In .gitattributes, the git-annex-backend attribute can be set to the
-    names of backends to use when adding different types of files.
-  * Add fsck subcommand. (For now it only finds unused key contents in the
-    annex.)
-
- -- Joey Hess <joeyh@debian.org>  Sun, 07 Nov 2010 18:26:04 -0400
-
-git-annex (0.02) unstable; urgency=low
-
-  * Can scp annexed files from remote hosts, and check remote hosts for
-    file content when dropping files.
-  * New move subcommand, that makes it easy to move file contents from
-    or to a remote.
-  * New fromkey subcommand, for registering urls, etc.
-  * git-annex init will now set up a pre-commit hook that fixes up symlinks
-    before they are committed, to ensure that moving symlinks around does not
-    break them.
-  * More intelligent and fast staging of modified files; git add coalescing.
-  * Add remote.annex-ignore git config setting to allow completly disabling
-    a given remote.
-  * --from/--to can be used to control the remote repository that git-annex
-    uses.
-  * --quiet can be used to avoid verbose output
-  * New plumbing-level dropkey and addkey subcommands.
-  * Lots of bug fixes.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 27 Oct 2010 16:39:29 -0400
-
-git-annex (0.01) unstable; urgency=low
-
-  * First prerelease.
-
- -- Joey Hess <joeyh@debian.org>  Wed, 20 Oct 2010 12:54:24 -0400
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
--- a/debian/compat
+++ /dev/null
@@ -1,1 +0,0 @@
-9
diff --git a/debian/control b/debian/control
deleted file mode 100644
--- a/debian/control
+++ /dev/null
@@ -1,133 +0,0 @@
-Source: git-annex
-Section: utils
-Priority: optional
-Build-Depends: 
-	debhelper (>= 9),
-	ghc (>= 7.4),
-	cabal-install,
-	libghc-mtl-dev (>= 2.1.1),
-	libghc-missingh-dev,
-	libghc-data-default-dev,
-	libghc-hslogger-dev,
-	libghc-pcre-light-dev,
-	libghc-cryptonite-dev | libghc-cryptohash-dev (>= 0.11.0),
-	libghc-sandi-dev,
-	libghc-utf8-string-dev,
-	libghc-aws-dev (>= 0.9.2-2~),
-	libghc-conduit-dev,
-	libghc-resourcet-dev,
-	libghc-quickcheck2-dev,
-	libghc-monad-control-dev (>= 0.3),
-	libghc-transformers-dev,
-	libghc-exceptions-dev (>= 0.6),
-	libghc-unix-compat-dev,
-	libghc-dlist-dev,
-	libghc-uuid-dev,
-	libghc-json-dev,
-	libghc-aeson-dev,
-	libghc-ifelse-dev,
-	libghc-bloomfilter-dev,
-	libghc-edit-distance-dev,
-	libghc-hinotify-dev [linux-any],
-	libghc-stm-dev (>= 2.3),
-	libghc-dbus-dev (>= 0.10.7) [linux-any],
-	libghc-fdo-notify-dev (>= 0.3) [linux-any],
-	libghc-yesod-dev (>= 1.2.6.1)       [i386 amd64 arm64 armhf kfreebsd-amd64 kfreebsd-i386 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-yesod-core-dev (>= 1.2.19)   [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-yesod-form-dev (>= 1.3.15)   [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-yesod-static-dev (>= 1.2.4)  [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-yesod-default-dev (>= 1.2.0) [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-shakespeare-dev (>= 2.0.0)   [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-clientsession-dev            [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-warp-dev (>= 3.0.0.5)        [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-warp-tls-dev                 [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-wai-dev                      [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-wai-extra-dev                [i386 amd64 arm64 armhf kfreebsd-i386 kfreebsd-amd64 mips mips64el mipsel powerpc ppc64el s390x],
-	libghc-dav-dev (>= 1.0),
-	libghc-persistent-dev,
-	libghc-persistent-template-dev,
-	libghc-persistent-sqlite-dev,
-	libghc-esqueleto-dev,
-	libghc-securemem-dev,
-	libghc-byteable-dev,
-	libghc-dns-dev,
-	libghc-case-insensitive-dev,
-	libghc-http-types-dev,
-	libghc-http-conduit-dev,
-	libghc-blaze-builder-dev,
-	libghc-crypto-api-dev,
-	libghc-network-multicast-dev,
-	libghc-network-info-dev [linux-any kfreebsd-any],
-	libghc-safesemaphore-dev,
-	libghc-network-protocol-xmpp-dev (>= 0.4.3-1+b1),
-	libghc-gnutls-dev (>= 0.1.4),
-	libghc-xml-types-dev,
-	libghc-async-dev,
-	libghc-monad-logger-dev,
-	libghc-feed-dev (>= 0.3.9.2),
-	libghc-regex-tdfa-dev,
-	libghc-tasty-dev (>= 0.7),
-	libghc-tasty-hunit-dev,
-	libghc-tasty-quickcheck-dev,
-	libghc-tasty-rerun-dev,
-	libghc-optparse-applicative-dev (>= 0.11.0),
-	libghc-torrent-dev,
-	libghc-concurrent-output-dev,
-	libghc-disk-free-space-dev,
-	libghc-mountpoints-dev,
-	libghc-magic-dev,
-	lsof [linux-any],
-	ikiwiki,
-	libimage-magick-perl,
-	git (>= 1:1.8.1),
-	rsync,
-	wget,
-	curl,
-	openssh-client,
-	git-remote-gcrypt (>= 0.20130908-6),
-Maintainer: Richard Hartmann <richih@debian.org>
-Standards-Version: 3.9.7
-Vcs-Git: git://git.kitenet.net/git-annex
-Homepage: http://git-annex.branchable.com/
-XS-Testsuite: autopkgtest
-
-Package: git-annex
-Architecture: any
-Section: utils
-Depends: ${misc:Depends}, ${shlibs:Depends},
-	git (>= 1:1.8.1),
-	rsync,
-	wget,
-	curl,
-	openssh-client (>= 1:5.6p1)
-Recommends: 
-	lsof,
-	gnupg,
-	bind9-host,
-	quvi,
-	git-remote-gcrypt (>= 0.20130908-6),
-	nocache,
-	aria2,
-Suggests:
-	graphviz,
-	bup,
-	tahoe-lafs,
-	libnss-mdns,
-Description: manage files with git, without checking their contents into git
- git-annex allows managing files with git, without checking the file
- contents into git. While that may seem paradoxical, it is useful when
- dealing with files larger than git can currently easily handle, whether due
- to limitations in memory, time, or disk space.
- .
- It can store large files in many places, from local hard drives, to a
- large number of cloud storage services, including S3, WebDAV,
- and rsync, with a dozen cloud storage providers usable via plugins.
- Files can be stored encrypted with gpg, so that the cloud storage
- provider cannot see your data. git-annex keeps track of where each file
- is stored, so it knows how many copies are available, and has many
- facilities to ensure your data is preserved.
- .
- git-annex can also be used to keep a folder in sync between computers,
- noticing when files are changed, and automatically committing them
- to git and transferring them to other computers. The git-annex webapp
- makes it easy to set up and use git-annex this way.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
--- a/debian/copyright
+++ /dev/null
@@ -1,786 +0,0 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Source: native package
-
-Files: *
-Copyright: © 2010-2016 Joey Hess <id@joeyh.name>
-License: GPL-3+
-
-Files: Assistant/WebApp.hs Assistant/WebApp/* templates/* static/*
-Copyright: © 2012-2016 Joey Hess <id@joeyh.name>
-           © 2014 Sören Brunk
-License: AGPL-3+
-
-Files: Remote/Ddar.hs
-Copyright: © 2011 Joey Hess <id@joeyh.name>
-           © 2014 Robie Basak <robie@justgohome.co.uk>
-License: GPL-3+
-
-Files: Utility/ThreadScheduler.hs
-Copyright: 2011 Bas van Dijk & Roel van Dijk
-           2012, 2013 Joey Hess <id@joeyh.name>
-License: BSD-2-clause
-
-Files: Utility/*
-Copyright: 2012-2016 Joey Hess <id@joeyh.name>
-License: BSD-2-clause
-
-Files: Utility/Gpg.hs Utility/DirWatcher*
-Copyright: © 2010-2014 Joey Hess <id@joeyh.name>
-License: GPL-3+
-
-Files: doc/logo* */favicon.ico standalone/osx/git-annex.app/Contents/Resources/git-annex.icns standalone/android/icons/*
-Copyright: 2007 Henrik Nyh <http://henrik.nyh.se/>
-           2010 Joey Hess <id@joeyh.name>
-	   2013 John Lawrence
-License: other
-  Free to modify and redistribute with due credit, and obviously free to use.
-
-Files: Annex/DirHashes.hs
-Copyright: 2001 Ian Lynagh
-           2010-2015 Joey Hess <id@joeyh.name>
-License: GPL-3+
-
-Files: doc/tips/automatically_adding_metadata/pre-commit-annex 
-Copyright: 2014 Joey Hess <id@joeyh.name>
-           2016 Klaus Ethgen <Klaus@Ethgen.ch>
-License: GPL-3+
-
-Files: static/jquery*
-Copyright: © 2005-2011 by John Resig, Branden Aaron & Jörn Zaefferer
-           © 2011 The Dojo Foundation
-License: MIT or GPL-2
- The full text of version 2 of the GPL is distributed in
- /usr/share/common-licenses/GPL-2 on Debian systems. The text of the MIT
- license follows:
- .
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
- .
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
- .
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Files: static/*/bootstrap* static/*/glyphicons-halflings*
-Copyright: 2012-2014 Twitter, Inc.
-License: MIT-twitter
-  Copyright (c) 2011-2014 Twitter, Inc
-  .
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-  .
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-  .
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-  THE SOFTWARE.
-
-License: GPL-3+
- The full text of version 3 of the GPL is distributed as doc/license/GPL in
- this package's source, or in /usr/share/common-licenses/GPL-3 on
- Debian systems.
-
-License: BSD-2-clause
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
- .
- THIS SOFTWARE IS PROVIDED BY AUTHORS AND CONTRIBUTORS ``AS IS'' AND
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- SUCH DAMAGE.
-
-License: AGPL-3+
-                      GNU AFFERO GENERAL PUBLIC LICENSE
-                         Version 3, 19 November 2007
- .
-   Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
-   Everyone is permitted to copy and distribute verbatim copies
-   of this license document, but changing it is not allowed.
- .
-                              Preamble
- .
-    The GNU Affero General Public License is a free, copyleft license for
-  software and other kinds of works, specifically designed to ensure
-  cooperation with the community in the case of network server software.
- .
-    The licenses for most software and other practical works are designed
-  to take away your freedom to share and change the works.  By contrast,
-  our General Public Licenses are intended to guarantee your freedom to
-  share and change all versions of a program--to make sure it remains free
-  software for all its users.
- .
-    When we speak of free software, we are referring to freedom, not
-  price.  Our General Public Licenses are designed to make sure that you
-  have the freedom to distribute copies of free software (and charge for
-  them if you wish), that you receive source code or can get it if you
-  want it, that you can change the software or use pieces of it in new
-  free programs, and that you know you can do these things.
- .
-    Developers that use our General Public Licenses protect your rights
-  with two steps: (1) assert copyright on the software, and (2) offer
-  you this License which gives you legal permission to copy, distribute
-  and/or modify the software.
- .
-    A secondary benefit of defending all users' freedom is that
-  improvements made in alternate versions of the program, if they
-  receive widespread use, become available for other developers to
-  incorporate.  Many developers of free software are heartened and
-  encouraged by the resulting cooperation.  However, in the case of
-  software used on network servers, this result may fail to come about.
-  The GNU General Public License permits making a modified version and
-  letting the public access it on a server without ever releasing its
-  source code to the public.
- .
-    The GNU Affero General Public License is designed specifically to
-  ensure that, in such cases, the modified source code becomes available
-  to the community.  It requires the operator of a network server to
-  provide the source code of the modified version running there to the
-  users of that server.  Therefore, public use of a modified version, on
-  a publicly accessible server, gives the public access to the source
-  code of the modified version.
- .
-    An older license, called the Affero General Public License and
-  published by Affero, was designed to accomplish similar goals.  This is
-  a different license, not a version of the Affero GPL, but Affero has
-  released a new version of the Affero GPL which permits relicensing under
-  this license.
- .
-    The precise terms and conditions for copying, distribution and
-  modification follow.
- .
-                         TERMS AND CONDITIONS
- .
-    0. Definitions.
- .
-    "This License" refers to version 3 of the GNU Affero General Public License.
- .
-    "Copyright" also means copyright-like laws that apply to other kinds of
-  works, such as semiconductor masks.
- .
-    "The Program" refers to any copyrightable work licensed under this
-  License.  Each licensee is addressed as "you".  "Licensees" and
-  "recipients" may be individuals or organizations.
- .
-    To "modify" a work means to copy from or adapt all or part of the work
-  in a fashion requiring copyright permission, other than the making of an
-  exact copy.  The resulting work is called a "modified version" of the
-  earlier work or a work "based on" the earlier work.
- .
-    A "covered work" means either the unmodified Program or a work based
-  on the Program.
- .
-    To "propagate" a work means to do anything with it that, without
-  permission, would make you directly or secondarily liable for
-  infringement under applicable copyright law, except executing it on a
-  computer or modifying a private copy.  Propagation includes copying,
-  distribution (with or without modification), making available to the
-  public, and in some countries other activities as well.
- .
-    To "convey" a work means any kind of propagation that enables other
-  parties to make or receive copies.  Mere interaction with a user through
-  a computer network, with no transfer of a copy, is not conveying.
- .
-    An interactive user interface displays "Appropriate Legal Notices"
-  to the extent that it includes a convenient and prominently visible
-  feature that (1) displays an appropriate copyright notice, and (2)
-  tells the user that there is no warranty for the work (except to the
-  extent that warranties are provided), that licensees may convey the
-  work under this License, and how to view a copy of this License.  If
-  the interface presents a list of user commands or options, such as a
-  menu, a prominent item in the list meets this criterion.
- .
-    1. Source Code.
- .
-    The "source code" for a work means the preferred form of the work
-  for making modifications to it.  "Object code" means any non-source
-  form of a work.
- .
-    A "Standard Interface" means an interface that either is an official
-  standard defined by a recognized standards body, or, in the case of
-  interfaces specified for a particular programming language, one that
-  is widely used among developers working in that language.
- .
-    The "System Libraries" of an executable work include anything, other
-  than the work as a whole, that (a) is included in the normal form of
-  packaging a Major Component, but which is not part of that Major
-  Component, and (b) serves only to enable use of the work with that
-  Major Component, or to implement a Standard Interface for which an
-  implementation is available to the public in source code form.  A
-  "Major Component", in this context, means a major essential component
-  (kernel, window system, and so on) of the specific operating system
-  (if any) on which the executable work runs, or a compiler used to
-  produce the work, or an object code interpreter used to run it.
- .
-    The "Corresponding Source" for a work in object code form means all
-  the source code needed to generate, install, and (for an executable
-  work) run the object code and to modify the work, including scripts to
-  control those activities.  However, it does not include the work's
-  System Libraries, or general-purpose tools or generally available free
-  programs which are used unmodified in performing those activities but
-  which are not part of the work.  For example, Corresponding Source
-  includes interface definition files associated with source files for
-  the work, and the source code for shared libraries and dynamically
-  linked subprograms that the work is specifically designed to require,
-  such as by intimate data communication or control flow between those
-  subprograms and other parts of the work.
- .
-    The Corresponding Source need not include anything that users
-  can regenerate automatically from other parts of the Corresponding
-  Source.
- .
-    The Corresponding Source for a work in source code form is that
-  same work.
- .
-    2. Basic Permissions.
- .
-    All rights granted under this License are granted for the term of
-  copyright on the Program, and are irrevocable provided the stated
-  conditions are met.  This License explicitly affirms your unlimited
-  permission to run the unmodified Program.  The output from running a
-  covered work is covered by this License only if the output, given its
-  content, constitutes a covered work.  This License acknowledges your
-  rights of fair use or other equivalent, as provided by copyright law.
- .
-    You may make, run and propagate covered works that you do not
-  convey, without conditions so long as your license otherwise remains
-  in force.  You may convey covered works to others for the sole purpose
-  of having them make modifications exclusively for you, or provide you
-  with facilities for running those works, provided that you comply with
-  the terms of this License in conveying all material for which you do
-  not control copyright.  Those thus making or running the covered works
-  for you must do so exclusively on your behalf, under your direction
-  and control, on terms that prohibit them from making any copies of
-  your copyrighted material outside their relationship with you.
- .
-    Conveying under any other circumstances is permitted solely under
-  the conditions stated below.  Sublicensing is not allowed; section 10
-  makes it unnecessary.
- .
-    3. Protecting Users' Legal Rights From Anti-Circumvention Law.
- .
-    No covered work shall be deemed part of an effective technological
-  measure under any applicable law fulfilling obligations under article
-  11 of the WIPO copyright treaty adopted on 20 December 1996, or
-  similar laws prohibiting or restricting circumvention of such
-  measures.
- .
-    When you convey a covered work, you waive any legal power to forbid
-  circumvention of technological measures to the extent such circumvention
-  is effected by exercising rights under this License with respect to
-  the covered work, and you disclaim any intention to limit operation or
-  modification of the work as a means of enforcing, against the work's
-  users, your or third parties' legal rights to forbid circumvention of
-  technological measures.
- .
-    4. Conveying Verbatim Copies.
- .
-    You may convey verbatim copies of the Program's source code as you
-  receive it, in any medium, provided that you conspicuously and
-  appropriately publish on each copy an appropriate copyright notice;
-  keep intact all notices stating that this License and any
-  non-permissive terms added in accord with section 7 apply to the code;
-  keep intact all notices of the absence of any warranty; and give all
-  recipients a copy of this License along with the Program.
- .
-    You may charge any price or no price for each copy that you convey,
-  and you may offer support or warranty protection for a fee.
- .
-    5. Conveying Modified Source Versions.
- .
-    You may convey a work based on the Program, or the modifications to
-  produce it from the Program, in the form of source code under the
-  terms of section 4, provided that you also meet all of these conditions:
- .
-      a) The work must carry prominent notices stating that you modified
-      it, and giving a relevant date.
- .
-      b) The work must carry prominent notices stating that it is
-      released under this License and any conditions added under section
-      7.  This requirement modifies the requirement in section 4 to
-      "keep intact all notices".
- .
-      c) You must license the entire work, as a whole, under this
-      License to anyone who comes into possession of a copy.  This
-      License will therefore apply, along with any applicable section 7
-      additional terms, to the whole of the work, and all its parts,
-      regardless of how they are packaged.  This License gives no
-      permission to license the work in any other way, but it does not
-      invalidate such permission if you have separately received it.
- .
-      d) If the work has interactive user interfaces, each must display
-      Appropriate Legal Notices; however, if the Program has interactive
-      interfaces that do not display Appropriate Legal Notices, your
-      work need not make them do so.
- .
-    A compilation of a covered work with other separate and independent
-  works, which are not by their nature extensions of the covered work,
-  and which are not combined with it such as to form a larger program,
-  in or on a volume of a storage or distribution medium, is called an
-  "aggregate" if the compilation and its resulting copyright are not
-  used to limit the access or legal rights of the compilation's users
-  beyond what the individual works permit.  Inclusion of a covered work
-  in an aggregate does not cause this License to apply to the other
-  parts of the aggregate.
- .
-    6. Conveying Non-Source Forms.
- .
-    You may convey a covered work in object code form under the terms
-  of sections 4 and 5, provided that you also convey the
-  machine-readable Corresponding Source under the terms of this License,
-  in one of these ways:
- .
-      a) Convey the object code in, or embodied in, a physical product
-      (including a physical distribution medium), accompanied by the
-      Corresponding Source fixed on a durable physical medium
-      customarily used for software interchange.
- .
-      b) Convey the object code in, or embodied in, a physical product
-      (including a physical distribution medium), accompanied by a
-      written offer, valid for at least three years and valid for as
-      long as you offer spare parts or customer support for that product
-      model, to give anyone who possesses the object code either (1) a
-      copy of the Corresponding Source for all the software in the
-      product that is covered by this License, on a durable physical
-      medium customarily used for software interchange, for a price no
-      more than your reasonable cost of physically performing this
-      conveying of source, or (2) access to copy the
-      Corresponding Source from a network server at no charge.
- .
-      c) Convey individual copies of the object code with a copy of the
-      written offer to provide the Corresponding Source.  This
-      alternative is allowed only occasionally and noncommercially, and
-      only if you received the object code with such an offer, in accord
-      with subsection 6b.
- .
-      d) Convey the object code by offering access from a designated
-      place (gratis or for a charge), and offer equivalent access to the
-      Corresponding Source in the same way through the same place at no
-      further charge.  You need not require recipients to copy the
-      Corresponding Source along with the object code.  If the place to
-      copy the object code is a network server, the Corresponding Source
-      may be on a different server (operated by you or a third party)
-      that supports equivalent copying facilities, provided you maintain
-      clear directions next to the object code saying where to find the
-      Corresponding Source.  Regardless of what server hosts the
-      Corresponding Source, you remain obligated to ensure that it is
-      available for as long as needed to satisfy these requirements.
- .
-      e) Convey the object code using peer-to-peer transmission, provided
-      you inform other peers where the object code and Corresponding
-      Source of the work are being offered to the general public at no
-      charge under subsection 6d.
- .
-    A separable portion of the object code, whose source code is excluded
-  from the Corresponding Source as a System Library, need not be
-  included in conveying the object code work.
- .
-    A "User Product" is either (1) a "consumer product", which means any
-  tangible personal property which is normally used for personal, family,
-  or household purposes, or (2) anything designed or sold for incorporation
-  into a dwelling.  In determining whether a product is a consumer product,
-  doubtful cases shall be resolved in favor of coverage.  For a particular
-  product received by a particular user, "normally used" refers to a
-  typical or common use of that class of product, regardless of the status
-  of the particular user or of the way in which the particular user
-  actually uses, or expects or is expected to use, the product.  A product
-  is a consumer product regardless of whether the product has substantial
-  commercial, industrial or non-consumer uses, unless such uses represent
-  the only significant mode of use of the product.
- .
-    "Installation Information" for a User Product means any methods,
-  procedures, authorization keys, or other information required to install
-  and execute modified versions of a covered work in that User Product from
-  a modified version of its Corresponding Source.  The information must
-  suffice to ensure that the continued functioning of the modified object
-  code is in no case prevented or interfered with solely because
-  modification has been made.
- .
-    If you convey an object code work under this section in, or with, or
-  specifically for use in, a User Product, and the conveying occurs as
-  part of a transaction in which the right of possession and use of the
-  User Product is transferred to the recipient in perpetuity or for a
-  fixed term (regardless of how the transaction is characterized), the
-  Corresponding Source conveyed under this section must be accompanied
-  by the Installation Information.  But this requirement does not apply
-  if neither you nor any third party retains the ability to install
-  modified object code on the User Product (for example, the work has
-  been installed in ROM).
- .
-    The requirement to provide Installation Information does not include a
-  requirement to continue to provide support service, warranty, or updates
-  for a work that has been modified or installed by the recipient, or for
-  the User Product in which it has been modified or installed.  Access to a
-  network may be denied when the modification itself materially and
-  adversely affects the operation of the network or violates the rules and
-  protocols for communication across the network.
- .
-    Corresponding Source conveyed, and Installation Information provided,
-  in accord with this section must be in a format that is publicly
-  documented (and with an implementation available to the public in
-  source code form), and must require no special password or key for
-  unpacking, reading or copying.
- .
-    7. Additional Terms.
- .
-    "Additional permissions" are terms that supplement the terms of this
-  License by making exceptions from one or more of its conditions.
-  Additional permissions that are applicable to the entire Program shall
-  be treated as though they were included in this License, to the extent
-  that they are valid under applicable law.  If additional permissions
-  apply only to part of the Program, that part may be used separately
-  under those permissions, but the entire Program remains governed by
-  this License without regard to the additional permissions.
- .
-    When you convey a copy of a covered work, you may at your option
-  remove any additional permissions from that copy, or from any part of
-  it.  (Additional permissions may be written to require their own
-  removal in certain cases when you modify the work.)  You may place
-  additional permissions on material, added by you to a covered work,
-  for which you have or can give appropriate copyright permission.
- .
-    Notwithstanding any other provision of this License, for material you
-  add to a covered work, you may (if authorized by the copyright holders of
-  that material) supplement the terms of this License with terms:
- .
-      a) Disclaiming warranty or limiting liability differently from the
-      terms of sections 15 and 16 of this License; or
- .
-      b) Requiring preservation of specified reasonable legal notices or
-      author attributions in that material or in the Appropriate Legal
-      Notices displayed by works containing it; or
- .
-      c) Prohibiting misrepresentation of the origin of that material, or
-      requiring that modified versions of such material be marked in
-      reasonable ways as different from the original version; or
- .
-      d) Limiting the use for publicity purposes of names of licensors or
-      authors of the material; or
- .
-      e) Declining to grant rights under trademark law for use of some
-      trade names, trademarks, or service marks; or
- .
-      f) Requiring indemnification of licensors and authors of that
-      material by anyone who conveys the material (or modified versions of
-      it) with contractual assumptions of liability to the recipient, for
-      any liability that these contractual assumptions directly impose on
-      those licensors and authors.
- .
-    All other non-permissive additional terms are considered "further
-  restrictions" within the meaning of section 10.  If the Program as you
-  received it, or any part of it, contains a notice stating that it is
-  governed by this License along with a term that is a further
-  restriction, you may remove that term.  If a license document contains
-  a further restriction but permits relicensing or conveying under this
-  License, you may add to a covered work material governed by the terms
-  of that license document, provided that the further restriction does
-  not survive such relicensing or conveying.
- .
-    If you add terms to a covered work in accord with this section, you
-  must place, in the relevant source files, a statement of the
-  additional terms that apply to those files, or a notice indicating
-  where to find the applicable terms.
- .
-    Additional terms, permissive or non-permissive, may be stated in the
-  form of a separately written license, or stated as exceptions;
-  the above requirements apply either way.
- .
-    8. Termination.
- .
-    You may not propagate or modify a covered work except as expressly
-  provided under this License.  Any attempt otherwise to propagate or
-  modify it is void, and will automatically terminate your rights under
-  this License (including any patent licenses granted under the third
-  paragraph of section 11).
- .
-    However, if you cease all violation of this License, then your
-  license from a particular copyright holder is reinstated (a)
-  provisionally, unless and until the copyright holder explicitly and
-  finally terminates your license, and (b) permanently, if the copyright
-  holder fails to notify you of the violation by some reasonable means
-  prior to 60 days after the cessation.
- .
-    Moreover, your license from a particular copyright holder is
-  reinstated permanently if the copyright holder notifies you of the
-  violation by some reasonable means, this is the first time you have
-  received notice of violation of this License (for any work) from that
-  copyright holder, and you cure the violation prior to 30 days after
-  your receipt of the notice.
- .
-    Termination of your rights under this section does not terminate the
-  licenses of parties who have received copies or rights from you under
-  this License.  If your rights have been terminated and not permanently
-  reinstated, you do not qualify to receive new licenses for the same
-  material under section 10.
- .
-    9. Acceptance Not Required for Having Copies.
- .
-    You are not required to accept this License in order to receive or
-  run a copy of the Program.  Ancillary propagation of a covered work
-  occurring solely as a consequence of using peer-to-peer transmission
-  to receive a copy likewise does not require acceptance.  However,
-  nothing other than this License grants you permission to propagate or
-  modify any covered work.  These actions infringe copyright if you do
-  not accept this License.  Therefore, by modifying or propagating a
-  covered work, you indicate your acceptance of this License to do so.
- .
-    10. Automatic Licensing of Downstream Recipients.
- .
-    Each time you convey a covered work, the recipient automatically
-  receives a license from the original licensors, to run, modify and
-  propagate that work, subject to this License.  You are not responsible
-  for enforcing compliance by third parties with this License.
- .
-    An "entity transaction" is a transaction transferring control of an
-  organization, or substantially all assets of one, or subdividing an
-  organization, or merging organizations.  If propagation of a covered
-  work results from an entity transaction, each party to that
-  transaction who receives a copy of the work also receives whatever
-  licenses to the work the party's predecessor in interest had or could
-  give under the previous paragraph, plus a right to possession of the
-  Corresponding Source of the work from the predecessor in interest, if
-  the predecessor has it or can get it with reasonable efforts.
- .
-    You may not impose any further restrictions on the exercise of the
-  rights granted or affirmed under this License.  For example, you may
-  not impose a license fee, royalty, or other charge for exercise of
-  rights granted under this License, and you may not initiate litigation
-  (including a cross-claim or counterclaim in a lawsuit) alleging that
-  any patent claim is infringed by making, using, selling, offering for
-  sale, or importing the Program or any portion of it.
- .
-    11. Patents.
- .
-    A "contributor" is a copyright holder who authorizes use under this
-  License of the Program or a work on which the Program is based.  The
-  work thus licensed is called the contributor's "contributor version".
- .
-    A contributor's "essential patent claims" are all patent claims
-  owned or controlled by the contributor, whether already acquired or
-  hereafter acquired, that would be infringed by some manner, permitted
-  by this License, of making, using, or selling its contributor version,
-  but do not include claims that would be infringed only as a
-  consequence of further modification of the contributor version.  For
-  purposes of this definition, "control" includes the right to grant
-  patent sublicenses in a manner consistent with the requirements of
-  this License.
- .
-    Each contributor grants you a non-exclusive, worldwide, royalty-free
-  patent license under the contributor's essential patent claims, to
-  make, use, sell, offer for sale, import and otherwise run, modify and
-  propagate the contents of its contributor version.
- .
-    In the following three paragraphs, a "patent license" is any express
-  agreement or commitment, however denominated, not to enforce a patent
-  (such as an express permission to practice a patent or covenant not to
-  sue for patent infringement).  To "grant" such a patent license to a
-  party means to make such an agreement or commitment not to enforce a
-  patent against the party.
- .
-    If you convey a covered work, knowingly relying on a patent license,
-  and the Corresponding Source of the work is not available for anyone
-  to copy, free of charge and under the terms of this License, through a
-  publicly available network server or other readily accessible means,
-  then you must either (1) cause the Corresponding Source to be so
-  available, or (2) arrange to deprive yourself of the benefit of the
-  patent license for this particular work, or (3) arrange, in a manner
-  consistent with the requirements of this License, to extend the patent
-  license to downstream recipients.  "Knowingly relying" means you have
-  actual knowledge that, but for the patent license, your conveying the
-  covered work in a country, or your recipient's use of the covered work
-  in a country, would infringe one or more identifiable patents in that
-  country that you have reason to believe are valid.
- .
-    If, pursuant to or in connection with a single transaction or
-  arrangement, you convey, or propagate by procuring conveyance of, a
-  covered work, and grant a patent license to some of the parties
-  receiving the covered work authorizing them to use, propagate, modify
-  or convey a specific copy of the covered work, then the patent license
-  you grant is automatically extended to all recipients of the covered
-  work and works based on it.
- .
-    A patent license is "discriminatory" if it does not include within
-  the scope of its coverage, prohibits the exercise of, or is
-  conditioned on the non-exercise of one or more of the rights that are
-  specifically granted under this License.  You may not convey a covered
-  work if you are a party to an arrangement with a third party that is
-  in the business of distributing software, under which you make payment
-  to the third party based on the extent of your activity of conveying
-  the work, and under which the third party grants, to any of the
-  parties who would receive the covered work from you, a discriminatory
-  patent license (a) in connection with copies of the covered work
-  conveyed by you (or copies made from those copies), or (b) primarily
-  for and in connection with specific products or compilations that
-  contain the covered work, unless you entered into that arrangement,
-  or that patent license was granted, prior to 28 March 2007.
- .
-    Nothing in this License shall be construed as excluding or limiting
-  any implied license or other defenses to infringement that may
-  otherwise be available to you under applicable patent law.
- .
-    12. No Surrender of Others' Freedom.
- .
-    If conditions are imposed on you (whether by court order, agreement or
-  otherwise) that contradict the conditions of this License, they do not
-  excuse you from the conditions of this License.  If you cannot convey a
-  covered work so as to satisfy simultaneously your obligations under this
-  License and any other pertinent obligations, then as a consequence you may
-  not convey it at all.  For example, if you agree to terms that obligate you
-  to collect a royalty for further conveying from those to whom you convey
-  the Program, the only way you could satisfy both those terms and this
-  License would be to refrain entirely from conveying the Program.
- .
-    13. Remote Network Interaction; Use with the GNU General Public License.
- .
-    Notwithstanding any other provision of this License, if you modify the
-  Program, your modified version must prominently offer all users
-  interacting with it remotely through a computer network (if your version
-  supports such interaction) an opportunity to receive the Corresponding
-  Source of your version by providing access to the Corresponding Source
-  from a network server at no charge, through some standard or customary
-  means of facilitating copying of software.  This Corresponding Source
-  shall include the Corresponding Source for any work covered by version 3
-  of the GNU General Public License that is incorporated pursuant to the
-  following paragraph.
- .
-    Notwithstanding any other provision of this License, you have
-  permission to link or combine any covered work with a work licensed
-  under version 3 of the GNU General Public License into a single
-  combined work, and to convey the resulting work.  The terms of this
-  License will continue to apply to the part which is the covered work,
-  but the work with which it is combined will remain governed by version
-  3 of the GNU General Public License.
- .
-    14. Revised Versions of this License.
- .
-    The Free Software Foundation may publish revised and/or new versions of
-  the GNU Affero General Public License from time to time.  Such new versions
-  will be similar in spirit to the present version, but may differ in detail to
-  address new problems or concerns.
- .
-    Each version is given a distinguishing version number.  If the
-  Program specifies that a certain numbered version of the GNU Affero General
-  Public License "or any later version" applies to it, you have the
-  option of following the terms and conditions either of that numbered
-  version or of any later version published by the Free Software
-  Foundation.  If the Program does not specify a version number of the
-  GNU Affero General Public License, you may choose any version ever published
-  by the Free Software Foundation.
- .
-    If the Program specifies that a proxy can decide which future
-  versions of the GNU Affero General Public License can be used, that proxy's
-  public statement of acceptance of a version permanently authorizes you
-  to choose that version for the Program.
- .
-    Later license versions may give you additional or different
-  permissions.  However, no additional obligations are imposed on any
-  author or copyright holder as a result of your choosing to follow a
-  later version.
- .
-    15. Disclaimer of Warranty.
- .
-    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-  APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-  HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-  OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-  PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-  IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-  ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
- .
-    16. Limitation of Liability.
- .
-    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-  WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-  THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-  GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-  USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-  DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-  PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-  EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-  SUCH DAMAGES.
- .
-    17. Interpretation of Sections 15 and 16.
- .
-    If the disclaimer of warranty and limitation of liability provided
-  above cannot be given local legal effect according to their terms,
-  reviewing courts shall apply local law that most closely approximates
-  an absolute waiver of all civil liability in connection with the
-  Program, unless a warranty or assumption of liability accompanies a
-  copy of the Program in return for a fee.
- .
-                       END OF TERMS AND CONDITIONS
- .
-              How to Apply These Terms to Your New Programs
- .
-    If you develop a new program, and you want it to be of the greatest
-  possible use to the public, the best way to achieve this is to make it
-  free software which everyone can redistribute and change under these terms.
- .
-    To do so, attach the following notices to the program.  It is safest
-  to attach them to the start of each source file to most effectively
-  state the exclusion of warranty; and each file should have at least
-  the "copyright" line and a pointer to where the full notice is found.
- .
-      <one line to give the program's name and a brief idea of what it does.>
-      Copyright (C) <year>  <name of author>
- .
-      This program is free software: you can redistribute it and/or modify
-      it under the terms of the GNU Affero General Public License as published by
-      the Free Software Foundation, either version 3 of the License, or
-      (at your option) any later version.
- .
-      This program is distributed in the hope that it will be useful,
-      but WITHOUT ANY WARRANTY; without even the implied warranty of
-      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-      GNU Affero General Public License for more details.
- .
-      You should have received a copy of the GNU Affero General Public License
-      along with this program.  If not, see <http://www.gnu.org/licenses/>.
- .
-  Also add information on how to contact you by electronic and paper mail.
- .
-    If your software can interact with users remotely through a computer
-  network, you should also make sure that it provides a way for users to
-  get its source.  For example, if your program is a web application, its
-  interface could display a "Source" link that leads users to an archive
-  of the code.  There are many ways you could offer source, and different
-  solutions will be better for different programs; see section 13 for the
-  specific requirements.
- .
-    You should also get your employer (if you work as a programmer) or school,
-  if any, to sign a "copyright disclaimer" for the program, if necessary.
-  For more information on this, and how to apply and follow the GNU AGPL, see
-  <http://www.gnu.org/licenses/>.
diff --git a/debian/create-standalone-changelog b/debian/create-standalone-changelog
deleted file mode 100644
--- a/debian/create-standalone-changelog
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-#
-# A little helper script to build a package with standalone git-annex
-# It relies on being run within git-annex's git repository
-#
-set -eu
-
-umask 022
-
-# This is the same method that the configure script uses when git-annex is
-# built from git master.
-ANNEX_VERSION=$(runghc Build/BuildVersion.hs)
-
-ANNEX_NDVERSION=$( echo ${ANNEX_VERSION} | sed -e 's,-,+git,' -e 's,$,-1~ndall+1,')
-
-dch --noconf -v ${ANNEX_NDVERSION} \
-    --force-bad-version --force-distribution -D neurodebian "Backported fresh snapshot"
diff --git a/debian/doc-base b/debian/doc-base
deleted file mode 100644
--- a/debian/doc-base
+++ /dev/null
@@ -1,9 +0,0 @@
-Document: git-annex
-Title: git-annex documentation
-Author: Joey Hess
-Abstract: All the documentation from git-annex's website.
-Section: File Management
-
-Format: HTML
-Index: /usr/share/doc/git-annex/html/index.html
-Files: /usr/share/doc/git-annex/html/*.html
diff --git a/debian/git-annex.lintian-overrides b/debian/git-annex.lintian-overrides
deleted file mode 100644
--- a/debian/git-annex.lintian-overrides
+++ /dev/null
@@ -1,1 +0,0 @@
-binary-or-shlib-defines-rpath
diff --git a/debian/patches/series.standalone-build b/debian/patches/series.standalone-build
deleted file mode 100644
--- a/debian/patches/series.standalone-build
+++ /dev/null
@@ -1,1 +0,0 @@
-standalone-build
diff --git a/debian/patches/standalone-build b/debian/patches/standalone-build
deleted file mode 100644
--- a/debian/patches/standalone-build
+++ /dev/null
@@ -1,62 +0,0 @@
-From: Yaroslav Halchenko <debian@onerussian.com>
-Subject: Patch debian/ to provide a standalone build of git-annex
-
-Origin: NeuroDebian
-Last-Update: 2015-04-20
-
-Index: git-annex/debian/control
-===================================================================
---- git-annex.orig/debian/control
-+++ git-annex/debian/control
-@@ -86,15 +86,14 @@ Vcs-Git: git://git.kitenet.net/git-annex
- Homepage: http://git-annex.branchable.com/
- XS-Testsuite: autopkgtest
- 
--Package: git-annex
-+Package: git-annex-standalone
- Architecture: any
- Section: utils
--Depends: ${misc:Depends}, ${shlibs:Depends},
--	git (>= 1:1.8.1),
--	rsync,
--	wget,
--	curl,
--	openssh-client (>= 1:5.6p1)
-+Conflicts: git-annex
-+Provides: git-annex
-+Depends: ${misc:Depends},
-+	git,
-+	openssh-client
- Recommends: 
- 	lsof,
- 	gnupg,
-@@ -109,7 +108,7 @@ Suggests:
- 	bup,
- 	tahoe-lafs,
- 	libnss-mdns,
--Description: manage files with git, without checking their contents into git
-+Description: manage files with git, without checking their contents into git -- standalone build
-  git-annex allows managing files with git, without checking the file
-  contents into git. While that may seem paradoxical, it is useful when
-  dealing with files larger than git can currently easily handle, whether due
-@@ -127,3 +126,7 @@ Description: manage files with git, with
-  noticing when files are changed, and automatically committing them
-  to git and transferring them to other computers. The git-annex webapp
-  makes it easy to set up and use git-annex this way.
-+ .
-+ This package provides a standalone bundle build of git-annex, which
-+ should be installable on any more or less recent Debian or Ubuntu
-+ release.
-Index: git-annex/debian/install
-===================================================================
---- /dev/null
-+++ git-annex/debian/install
-@@ -0,0 +1 @@
-+tmp/git-annex.linux usr/lib
-Index: git-annex/debian/links
-===================================================================
---- /dev/null
-+++ git-annex/debian/links
-@@ -0,0 +1,2 @@
-+/usr/lib/git-annex.linux/git-annex /usr/bin/git-annex
-+/usr/lib/git-annex.linux/git-annex-shell /usr/bin/git-annex-shell
diff --git a/debian/rules b/debian/rules
deleted file mode 100644
--- a/debian/rules
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/make -f
-
-export BUILDER=debian/cabal-wrapper
-
-# -j1 is used for reproducible build
-export BUILDEROPTIONS=-j1
-
-STANDALONE_BUILD=$(shell grep -qe '^Package: git-annex-standalone' debian/control \
-                         && echo 1 || echo 0)
-
-# Do use the changelog's version number, rather than making one up.
-export RELEASE_BUILD=1
-
-%:
-	dh $@
-
-
-# Standalone build logic/helpers
-ifeq ($(STANDALONE_BUILD),1)
-
-override_dh_auto_build:
-	make linuxstandalone GIT_ANNEX_PACKAGE_INSTALL=1
-
-override_dh_auto_install:
-	make install-misc install-docs DESTDIR=debian/git-annex-standalone
-	# bins are linked into place, as instructed in debian/install and debian/links
-
-override_dh_fixperms:
-	dh_fixperms -Xld-linux
-
-# gdb can't do much with a haskell program, so avoid the debug package
-override_dh_strip:
-	dh_strip --no-ddebs
-
-# Do not add "ldconfig" trigger since all libraries in the standalone build
-# are private copies and the trigger activate-noawait trigger may not work
-# on elderly distributions (e.g. squeeze)
-override_dh_makeshlibs:
-	dh_makeshlibs --noscripts
-
-endif
diff --git a/debian/tests/basics b/debian/tests/basics
deleted file mode 100644
--- a/debian/tests/basics
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-testdir="$(mktemp -d)"
-cd "$testdir"
-exec git-annex test
diff --git a/debian/tests/control b/debian/tests/control
deleted file mode 100644
--- a/debian/tests/control
+++ /dev/null
@@ -1,4 +0,0 @@
-Tests: basics
-Depends: @, git, rsync, gnupg
-Restrictions: allow-stderr
-
diff --git a/doc/Android.mdwn b/doc/Android.mdwn
deleted file mode 100644
--- a/doc/Android.mdwn
+++ /dev/null
@@ -1,53 +0,0 @@
-git-annex is now available for Android. This includes the 
-[[git-annex assistant|/assistant]], for easy syncing between your Android
-and other devices. You do not need to root your Android to use git-annex.
-
-[[Android installation instructions|/install/android]]
-
-When you run the git-annex Android app, two windows will open. The first is
-a terminal window, and the second is a web browser showing the git-annex
-webapp.
-
-[[!img apps.png alt="two windows"]]
-
-[[!toc ]]
-
-## closing and reopening the webapp
-
-The webapp does not need to be left open after you've set up your
-repository. As long as the terminal window is left open, git-annex will
-remain running and sync your files. To re-open the webapp after closing it,
-use the [[!img newwindow.png alt="New Window"]] icon in the terminal window.
-
-## starting git-annex
-
-The app is not currently automatically started on boot, so you will need to
-manually open it to keep your files in sync. You do not need to leave the
-app running all the time, though. It will sync back up automatically when
-started.
-
-## stopping git-annex
-
-Simply close the terminal window to stop git-annex from running.
-
-## using the command line
-
-[[!img terminal.png alt="Android terminal"]]
-
-If you prefer to use `git-annex` at the command line, you can do so using the
-terminal. A fairly full set of tools is provided, including `git`, `ssh`,
-`rsync`, and `gpg`.
-
-To prevent the webapp from being automatically started
-when a terminal window opens, go into the terminal preferences, to "Initial
-Command", and clear out the default `git annex webapp` setting.
-
-Or, if you'd like to run the assistant automatically, but not open the
-webapp, change the "Initial Command" to: `git annex assistant --autostart`
-
-## using from adb shell
-
-To set up the git-annex environment from within `adb shell`, run:
-`/data/data/ga.androidterm/runshell`
-
-This will launch a shell that has git-annex, git, etc in PATH.
diff --git a/doc/Android/comment_19_dc7b428f525a082834cb87221fc627ff._comment b/doc/Android/comment_19_dc7b428f525a082834cb87221fc627ff._comment
deleted file mode 100644
--- a/doc/Android/comment_19_dc7b428f525a082834cb87221fc627ff._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://afoolishmanifesto.com/"
- nickname="frioux"
- subject="SSH Keys?"
- date="2013-07-17T16:50:46Z"
- content="""
-Is there a way I can use an SSH Key to connect to a remote server?  What would be really cool, though maybe not feasible, would be to use connectbot as an ssh-agent.
-"""]]
diff --git a/doc/Android/comment_20_81940ea56ace3dcd5fa84dfccd88ad96._comment b/doc/Android/comment_20_81940ea56ace3dcd5fa84dfccd88ad96._comment
deleted file mode 100644
--- a/doc/Android/comment_20_81940ea56ace3dcd5fa84dfccd88ad96._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.4.90"
- subject="comment 20"
- date="2013-07-17T19:06:31Z"
- content="""
-@frioux the webapp has a \"ssh server\" option that will set up a ssh key and use it for passwordless data transfer to a ssh server.
-
-The openssh included in the git-annex app fully supports everything you can usually do with ssh keys, so you can also set this up by hand.
-"""]]
diff --git a/doc/Android/comment_29_37aa87a451d4390ed367402eec740855._comment b/doc/Android/comment_29_37aa87a451d4390ed367402eec740855._comment
deleted file mode 100644
--- a/doc/Android/comment_29_37aa87a451d4390ed367402eec740855._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.21"
- subject="comment 29"
- date="2013-07-30T17:45:27Z"
- content="""
-If you are experiencing a problem using git-annex on Android, please examine the list of [[bugs]] and add a new, detailed bug report if no-one has reported the problem. If you are not sure if you have a bug, or need help in filing a good bug report, ask for help in the [[forum]].
-
-I have moved to [[oldcomments]] a lot of old comments about problems that may be fixed or
-not (hard to tell without a bug report!) " This page cannot
-scale to handle every bug report that someone wants to paste into it.
-"""]]
diff --git a/doc/Android/comment_5_ba11b81c671d9bcd6f496fbd6f562b0f._comment b/doc/Android/comment_5_ba11b81c671d9bcd6f496fbd6f562b0f._comment
deleted file mode 100644
--- a/doc/Android/comment_5_ba11b81c671d9bcd6f496fbd6f562b0f._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://mebus.myopenid.com/"
- ip="2a01:198:3eb:0:4a5b:39ff:fea4:55b3"
- subject="comment 5"
- date="2013-10-19T18:05:52Z"
- content="""
-Hallo,
-
-how can I use the app with public/private keys for SSH. Where can I add them?
-
-Thanks
-
-Mebus
-
-
-"""]]
diff --git a/doc/Android/comment_6_455bcbd36c7b5eeb905cc56da4666b07._comment b/doc/Android/comment_6_455bcbd36c7b5eeb905cc56da4666b07._comment
deleted file mode 100644
--- a/doc/Android/comment_6_455bcbd36c7b5eeb905cc56da4666b07._comment
+++ /dev/null
@@ -1,30 +0,0 @@
-[[!comment format=mdwn
- username="madduck"
- subject="Weirdness when run from adb shell"
- date="2015-05-06T14:28:43Z"
- content="""
-How is this designed to work in the contact of Androids crap permissions?
-
-    shell@kminilte:/ $ /data/data/ga.androidterm/runshell
-    /system/bin/sh: /data/data/ga.androidterm/runshell: can't execute: Permission denied
-
-    126|shell@kminilte:/ $ /system/bin/sh /data/data/ga.androidterm/runshell
-    Falling back to hardcoded app location; cannot find expected files in /data/app-lib
-
-    shell@kminilte:/sdcard/git-annex.home $ git
-    /system/bin/sh: git: not found
-
-    127|shell@kminilte:/sdcard/git-annex.home $ echo $PATH
-    /data/data/ga.androidterm/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
-
-    shell@kminilte:/sdcard/git-annex.home $ /data/data/ga.androidterm/bin/git                                                          <
-    /data/data/ga.androidterm/bin/git: Permission denied
-
-    shell@kminilte:/sdcard/git-annex.home $ ls -l /data/data/ga.androidterm/bin -d
-    drwx------ u0_a255  u0_a255           2015-05-05 07:58 bin
-
-    shell@kminilte:/sdcard/git-annex.home $ id
-    uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats) context=u:r:shell:s0
-
-
-"""]]
diff --git a/doc/Android/comment_6_97704e0d89bb87155e019e09e54fc9bf._comment b/doc/Android/comment_6_97704e0d89bb87155e019e09e54fc9bf._comment
deleted file mode 100644
--- a/doc/Android/comment_6_97704e0d89bb87155e019e09e54fc9bf._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawk2BFMjJW081uX4aJdhStmSFPBUGzL92ZU"
- nickname="Frédéric"
- subject="where do I put the SSH keys on Android"
- date="2014-02-26T20:26:38Z"
- content="""
-@mebus :
-You can put your SSH keys here :
-
-/sdcard/git-annex.home/.ssh/id_rsa
-
-/sdcard/git-annex.home/.ssh/id_rsa.pub
-"""]]
diff --git a/doc/Android/comment_7_725ec376b56f51afa37dfd750c744f73._comment b/doc/Android/comment_7_725ec376b56f51afa37dfd750c744f73._comment
deleted file mode 100644
--- a/doc/Android/comment_7_725ec376b56f51afa37dfd750c744f73._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="joseph.rawson.works@85a210ab8c0e37a0b2d6bb235738b20e23e8878f"
- nickname="joseph.rawson.works"
- subject="ssh keys, github, xmpp"
- date="2015-12-28T22:09:24Z"
- content="""
-I generated an rsa keypair and added them to /sd/ga-h/.ssh, yet they were overwritten.  I couldn't access my annexes located on github.  I couldn't login to google talk, as instructed by the web app.
-
-Thanks for letting me know about gitlab supporting git-annex.
-"""]]
diff --git a/doc/Android/oldcomments.mdwn b/doc/Android/oldcomments.mdwn
deleted file mode 100644
--- a/doc/Android/oldcomments.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-If one of these comments is yours, and you are still experiencing the
-problem, please file a proper [[bug_report|bugs]]. --[[Joey]]
diff --git a/doc/Android/oldcomments/comment_10_20e3d513b8b97496d76aca4619026cd6._comment b/doc/Android/oldcomments/comment_10_20e3d513b8b97496d76aca4619026cd6._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_10_20e3d513b8b97496d76aca4619026cd6._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="comment 10"
- date="2013-05-24T03:11:50Z"
- content="""
->you said before the error was \"Read-only file system\". Now you're saying it's \"Cross-device link\". I'm slightly confused.
-
-;-)  Sorry for confusion, here are the details:
-
-\"Read-only file system\" -- that error appeared when I started \"stock git annex\", i.e. from running /data/data/ga.androidterm/lib/lib.start.so .
-Since you have suggested that it might be coming from hard linking command, I have ran that one manually, and that is when I got \"Cross-device link\" error, which suggests that hard linking is not the one at fault here.
-
-I will try fresh build now
-Cheers,
-"""]]
diff --git a/doc/Android/oldcomments/comment_11_c96b8f1cc1583a74eb2483f48357f023._comment b/doc/Android/oldcomments/comment_11_c96b8f1cc1583a74eb2483f48357f023._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_11_c96b8f1cc1583a74eb2483f48357f023._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="fresh build"
- date="2013-05-24T03:21:29Z"
- content="""
-With fresh build got:
-
-u0_a39@android:/ $ git annex webapp
-/system/bin/sh: git: not found
-
-the PATH is /sbin:/system/bin:/system/xbin
-
-where should git (and ga) reside now ? (/data somehow is not accessible now to u0_a39)
-"""]]
diff --git a/doc/Android/oldcomments/comment_12_6551f5fa081494b079c10a33c9b0d8ad._comment b/doc/Android/oldcomments/comment_12_6551f5fa081494b079c10a33c9b0d8ad._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_12_6551f5fa081494b079c10a33c9b0d8ad._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 12"
- date="2013-05-24T03:26:33Z"
- content="""
-You should be able to run /data/data/ga.androidterm/runshell even if you cannot ls /data. This adds /data/data/ga.androidterm/bin to PATH
-
-However, the shell that the app starts is started by runshell anyway, so I don't understand how this could happen.
-"""]]
diff --git a/doc/Android/oldcomments/comment_13_7c633d245651ec08f63194fe1fc194ae._comment b/doc/Android/oldcomments/comment_13_7c633d245651ec08f63194fe1fc194ae._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_13_7c633d245651ec08f63194fe1fc194ae._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkwjBDXkP9HAQKhjTgThGOxUa1B99y_WRA"
- nickname="Franck"
- subject="Still problems with my old N1/CM7"
- date="2013-05-24T06:01:18Z"
- content="""
-Hi, thank you for addressing this issue! I installed the new release but now it fails in another way: the message is just \"In mgmain NJI_OnLoad\" then the terminal says that the session is closed.
-"""]]
diff --git a/doc/Android/oldcomments/comment_14_60c2403140085f9caf48a33b59a36ab4._comment b/doc/Android/oldcomments/comment_14_60c2403140085f9caf48a33b59a36ab4._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_14_60c2403140085f9caf48a33b59a36ab4._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="It starts after uninstall/install"
- date="2013-05-24T23:29:52Z"
- content="""
-Hi Joey -- there is success here... previous installation was \"updated\" by installing the new package without uninstalling previous one, and that apparently didn't work correctly (I didn't even have bin/ directory you mentioned).  So I have removed previous installation and reinstalled it again -- it starts now!  Thanks ;)
-"""]]
diff --git a/doc/Android/oldcomments/comment_15_77bafc01b47d4cf8f96bde2b6704ed71._comment b/doc/Android/oldcomments/comment_15_77bafc01b47d4cf8f96bde2b6704ed71._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_15_77bafc01b47d4cf8f96bde2b6704ed71._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="asking for ssh password in the terminal (not in web ui)"
- date="2013-05-24T23:49:40Z"
- content="""
-not sure if that is a known issue:  whenever \"remote server\" is added, password needs to be typed back in the original terminal... is a bit challenging to do on android and not straightforward user-wise  
-"""]]
diff --git a/doc/Android/oldcomments/comment_16_9af73451be09f03cfff81fdf9481ffc4._comment b/doc/Android/oldcomments/comment_16_9af73451be09f03cfff81fdf9481ffc4._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_16_9af73451be09f03cfff81fdf9481ffc4._comment
+++ /dev/null
@@ -1,27 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="Few other issues"
- date="2013-05-25T15:35:46Z"
- content="""
-Hi again.
-
-talking about 4.20130523-gcfe07a2 version:
-
-- because working in the terminal to interact with git-annex probably should not be a common case on Android, may be it is worth making default type of new added repository to become a full backup?  I have initiated a new one, attached a remote one, it said \"synced\" but all the files were just containing symlinks and were not usable.  I had to switch to \"full backup\" (or whatever that name) to finally get directory synced
-
-- log file might grow too large simply because of containing numerous entries for attempting connect remote repository while offline, e.g.
-
-Please make sure you have the correct access rights
-and the repository exists.
-ssh: Could not resolve hostname onerussian.com: No address associated with hostname
-fatal: Could not read from remote repository.
-
-IMHO those should not be there at all, e.g. if it is known that ATM there is no network connectivity
-
-- In addition to two existing repositories (1 local /sdcard/annex, which is also avail at/storage/sdcard0/annex + 1 remote) I have added one more local (and said to keep it in sync with original local).  But it didn't work -- it \"Synced with onerussian.com_annex but not with Annex\" and claimed that the /external/extSdCard/Annex doesn't exist, although it is there (and with .git generated etc).  When I restarted the deamon I got into a \"new\" Repository: /storage/extSdCard/Annex which also listed the 1st local but with \"Failed to sync with localhost\" message -- no remote one listed.  Whenever I try to \"Switch repository\" to /sdcard/annex (the original local) -- it starts loading a new page but gets stuck right there.  The only way to revive webui is to go back to Dashboard.  Log there says (retyping from the screen so typos might be there):
-
-error: cannot run git-receive-pack '/storage/sdcard0/annex': No such file or directory
-fatal: unable to fork
-
-"""]]
diff --git a/doc/Android/oldcomments/comment_17_f76561a654b534df3a807b1c045710b2._comment b/doc/Android/oldcomments/comment_17_f76561a654b534df3a807b1c045710b2._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_17_f76561a654b534df3a807b1c045710b2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="comment 17"
- date="2013-05-29T02:43:29Z"
- content="""
-joey -- any additional information could I provide to troubleshoot the issue?  original repository seems to sync ok, but I can't \"administer\" it if I can't even switch to it...
-"""]]
diff --git a/doc/Android/oldcomments/comment_18_1b46cdf154ddadfe17e4b6e4054dc619._comment b/doc/Android/oldcomments/comment_18_1b46cdf154ddadfe17e4b6e4054dc619._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_18_1b46cdf154ddadfe17e4b6e4054dc619._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="http://aap.liquidid.net/"
- nickname="AAP"
- subject="comment 18"
- date="2013-05-30T11:23:58Z"
- content="""
-I too get the 'link busybox: Read-only file system' message. Here is my phone info: 
-
-Phone: Samsung Galaxy Y GT-S5360 (rooted)   
-Android: 2.3.6 Gingerbread   
-BusyBox path: /system/xbin/ 
-
-
-Androids own terminal seems not to understand the d argument (-ld: No such file or directory) but over ssh 'ls -ld /data/data/ga.androidterm' returns
-     
-         drwxr-x--x    1 app_97   app_97           0 May 30 12:57 /data/data/ga.androidterm/
-"""]]
diff --git a/doc/Android/oldcomments/comment_1_cc9caa5dd22dd67e5c1d22d697096dd2._comment b/doc/Android/oldcomments/comment_1_cc9caa5dd22dd67e5c1d22d697096dd2._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_1_cc9caa5dd22dd67e5c1d22d697096dd2._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="Does it require the device to be rooted?"
- date="2013-05-16T20:55:45Z"
- content="""
-Following your news on kickstarter downloaded the .apk, and installed it.  Upn start I just got a terminal window with
-
-  link busybox: Read-only file system
-
-  [Terminal session finished]
-
-That is on Galaxy Note
-
-"""]]
diff --git a/doc/Android/oldcomments/comment_21_5903f6a4a81a6534fa8cfafb3b6c37bb._comment b/doc/Android/oldcomments/comment_21_5903f6a4a81a6534fa8cfafb3b6c37bb._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_21_5903f6a4a81a6534fa8cfafb3b6c37bb._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://afoolishmanifesto.com/"
- nickname="frioux"
- subject="SSH Keys - 2"
- date="2013-07-17T22:56:37Z"
- content="""
-@joey should I be using the nightlies to see that?  Under \"Adding a remote server using ssh\" I only see  Host name, user name, directory, and port.  Will it only be an option after I type in a password?
-"""]]
diff --git a/doc/Android/oldcomments/comment_22_36afd354f9669a154d7b6b2c4d43ded9._comment b/doc/Android/oldcomments/comment_22_36afd354f9669a154d7b6b2c4d43ded9._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_22_36afd354f9669a154d7b6b2c4d43ded9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.6.48"
- subject="comment 22"
- date="2013-07-17T23:25:21Z"
- content="""
-@frioux it will automatically generate a new ssh key and configure the server to use it, once you submit the form and enter the password to let it into the server.
-"""]]
diff --git a/doc/Android/oldcomments/comment_23_de98154792e8611a134429f06d82bcb1._comment b/doc/Android/oldcomments/comment_23_de98154792e8611a134429f06d82bcb1._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_23_de98154792e8611a134429f06d82bcb1._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://afoolishmanifesto.com/"
- nickname="frioux"
- subject="comment 23"
- date="2013-07-18T02:01:28Z"
- content="""
-@joey: ok, I got it to connect and it indeed sent over a key etc.  For some reason now though git-annex (on android) \"crashes\" shortly after starting.  To be clear, the web app says that the program crashed, the console is still there.  I suspect that it may have something to do with my largish remote repo and the time required to sync just the metadata, but I can't tell.  Any ideas what I should do next?  (Note that I *did* change it to manual mode because my phone doesn't have 30G of storage :)
-"""]]
diff --git a/doc/Android/oldcomments/comment_24_7ab509c25243009bfbffd796ec64e77b._comment b/doc/Android/oldcomments/comment_24_7ab509c25243009bfbffd796ec64e77b._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_24_7ab509c25243009bfbffd796ec64e77b._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://afoolishmanifesto.com/"
- nickname="frioux"
- subject="comment 24"
- date="2013-07-18T11:35:06Z"
- content="""
-ok, it eventually got the details from the remote server, but now I'm getting some other oddities.  here is some of my log that shows what I am running into
-
-Watcher crashed: addWatch: does not exist (No such file or directory) [2013-07-18 06:22:46 CDT] Watcher: warning Watcher crashed: addWatch: does not exist (No such file or directory) (scanning...) [2013-07-18 06:23:19 CDT] Watcher: Performing startup scan Watcher crashed: addWatch: does not exist (No such file or directory) [2013-07-18 06:24:28 CDT] Watcher: warning Watcher crashed: addWatch: does not exist (No such file or directory) (scanning...) [2013-07-18 06:24:31 CDT] Watcher: Performing startup scan Watcher crashed: addWatch: does not exist (No such file or directory) [2013-07-18 06:25:44 CDT] Watcher: warning Watcher crashed: addWatch: does not exist (No such file or directory)
-"""]]
diff --git a/doc/Android/oldcomments/comment_25_026d1a01d5753d71ac3dfc002f2a5eec._comment b/doc/Android/oldcomments/comment_25_026d1a01d5753d71ac3dfc002f2a5eec._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_25_026d1a01d5753d71ac3dfc002f2a5eec._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnRfQArYOmDd7r2DC7DkIJFOQgqXCVcAeU"
- nickname="Frew"
- subject="comment 25"
- date="2013-07-18T13:14:46Z"
- content="""
-frioux here (something messed up with myopenid or something)
-
-So I deleted the repo on my phone (via the CLI since the web app seemed hung) and recreated it; this time making sure that I set things to manual mode ASAP.  It didn't have the problem it was having before, but now what seems to have happened is that it fetches from the remote, commits to the local repo, and then immediately fetches and commits again.  It looks like it's about a 4s repeat loop.  Any ideas what I should do next?
-"""]]
diff --git a/doc/Android/oldcomments/comment_26_f0a044fb649d43e32c96b08edbc336c3._comment b/doc/Android/oldcomments/comment_26_f0a044fb649d43e32c96b08edbc336c3._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_26_f0a044fb649d43e32c96b08edbc336c3._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.140"
- subject="comment 26"
- date="2013-07-18T17:07:27Z"
- content="""
-@Frew, you should file bug reports when you have a bug.
-
-One problem you mentioned had already had a bug report filed by someone
-else:
-<http://git-annex.branchable.com/bugs/Watcher_crashed:_addWatch:_does_not_exist/> So you can post your details there.
-"""]]
diff --git a/doc/Android/oldcomments/comment_27_6b9ae35b1ceeba14cd7a74e142870705._comment b/doc/Android/oldcomments/comment_27_6b9ae35b1ceeba14cd7a74e142870705._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_27_6b9ae35b1ceeba14cd7a74e142870705._comment
+++ /dev/null
@@ -1,34 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Watcher crashed in Android on /storage/sdcard1 - bug?"
- date="2013-07-29T11:50:46Z"
- content="""
-In webapp UI, added on first install, the location for repository: /storage/sdcard1
-
-!warning
-
-Watcher crashed: addWatch:
-
-permission denied (Permission denied)
-
-[Restart Thread]
-
-:Performing startup scan
-
-
-In terminal Window 1:
-
-nex webapp                                         <
-
-  Detected a crippled filesystem.
-
-  Enabling direct mode.
-
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-
-
-Android 4.1.1 Huawei Y300 Annex.apk v1.0.52 version 4.20130723
-"""]]
diff --git a/doc/Android/oldcomments/comment_28_c91db1215f529aa68bfb0576c3c5eddc._comment b/doc/Android/oldcomments/comment_28_c91db1215f529aa68bfb0576c3c5eddc._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_28_c91db1215f529aa68bfb0576c3c5eddc._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="Jonathan"
- ip="63.131.117.194"
- subject="link busybox: Read-only file system"
- date="2013-07-29T20:08:12Z"
- content="""
-Phone: HTC EVO 3d 4g
-Model Number: pg86100
-Android Version: 4.0.3
-"""]]
diff --git a/doc/Android/oldcomments/comment_2_c2422b7dd9d526b3616e49f48cf178c2._comment b/doc/Android/oldcomments/comment_2_c2422b7dd9d526b3616e49f48cf178c2._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_2_c2422b7dd9d526b3616e49f48cf178c2._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 2"
- date="2013-05-17T22:28:34Z"
- content="""
-The Android app works on many non-rooted Android systems.
-
-The \"link busybox: Read-only file system\" means that `/data/data/ga.androidterm/lib/lib.busybox.so` cannot be hard linked to `/data/data/ga.androidterm/busybox`. That's not normal. I'd appreciate if you could provide more information on your Android device, like Android version and model number.
-"""]]
diff --git a/doc/Android/oldcomments/comment_3_0e4980c27b13dbc28477c02a82898248._comment b/doc/Android/oldcomments/comment_3_0e4980c27b13dbc28477c02a82898248._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_3_0e4980c27b13dbc28477c02a82898248._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="Follow-up information on my system"
- date="2013-05-18T01:23:28Z"
- content="""
-Sorry for the delay:  my android is stock Samsung-tuned Jelly beans.
-Android 4.1.2
-Baseband version N7000XXLSO
-
-not sure if that would be of any use :-/  nothing in the logs (aLogcat) if I filter by annex -- should there any debug output? what should be a key to search by?
-
-
-"""]]
diff --git a/doc/Android/oldcomments/comment_4_86f7b5444e2eaea7f8f7b9160f671a1d._comment b/doc/Android/oldcomments/comment_4_86f7b5444e2eaea7f8f7b9160f671a1d._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_4_86f7b5444e2eaea7f8f7b9160f671a1d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnu1NYw8UF-NoDbKu8YKVGxi8FoZLH7JPs"
- nickname="Chris"
- subject="Not starting browser on Nexus 7, Android 4.2.2"
- date="2013-05-19T14:04:28Z"
- content="""
-I just tried to run this on my Nexus 7 which has Android 4.2.2, and I received the following: <http://hodapple.com/files/Screenshot_2013-05-19-09-49-53.png> <http://hodapple.com/files/git-annex-error.txt>
-
-In spite of that, though, the URL provided still worked.
-"""]]
diff --git a/doc/Android/oldcomments/comment_5_9d78009435736a178d5a3f5a9bc0ed6a._comment b/doc/Android/oldcomments/comment_5_9d78009435736a178d5a3f5a9bc0ed6a._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_5_9d78009435736a178d5a3f5a9bc0ed6a._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 5"
- date="2013-05-19T19:46:14Z"
- content="""
-@Chris, that is a known bug: [[bugs/Android_app_permission_denial_on_startup]]
-"""]]
diff --git a/doc/Android/oldcomments/comment_6_7b9523ddb20dc4a929e556c3ed0c7406._comment b/doc/Android/oldcomments/comment_6_7b9523ddb20dc4a929e556c3ed0c7406._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_6_7b9523ddb20dc4a929e556c3ed0c7406._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 6"
- date="2013-05-19T20:06:56Z"
- content="""
-@yarikoptic, there is a process you can perform that will help me determine what's going on.
-
-You should be able to get the git-annex app to let you into a shell. You can do this by starting the app, and then going into its configuration menu, to Preferences, selecting \"Command Line\", and changing it to run \"/system/bin/sh\"
-
-Then when you open a new window in the git-annex app, you'll be at a shell prompt. From there, you can run:
-
-ls -ld /data/data/ga.androidterm
-
-I'm interested to know a) whether the directory exists and b) what permissions and owner it has. On my tablet, I get back \"drwxr-x--x app_39 app_39\" .. and if I run `id` in the shell, it tells me it's running as `app_39`.
-
-My guess is the directory probably does exist, but cannot be written to by the app. If you're able to verify that, the next step will be to investigate if there is some other directory that the app can write to. It needs to be able to write to someplace that is not on the `/sdcard` to install itself.
-"""]]
diff --git a/doc/Android/oldcomments/comment_7_a56628a622da752806c42c5b8b54ceef._comment b/doc/Android/oldcomments/comment_7_a56628a622da752806c42c5b8b54ceef._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_7_a56628a622da752806c42c5b8b54ceef._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkwjBDXkP9HAQKhjTgThGOxUa1B99y_WRA"
- nickname="Franck"
- subject="Link issue"
- date="2013-05-22T12:01:38Z"
- content="""
-Hi, I have exactly the same problem with the link that fails on my phone. However, I checked the permissions and they are as you describe on your tablet (except for the app number). At the same time, everything is fine on my tablet... The phone runs an old Cyanogenmod 7.2.0 (Android 2.3.7) while the tablet is a more recent Asus TF700T (Android 4.1.1). Let me know if you want me to run tests.
-"""]]
diff --git a/doc/Android/oldcomments/comment_8_19656ec99b8f6aa64c1d01a3c9ae9bd0._comment b/doc/Android/oldcomments/comment_8_19656ec99b8f6aa64c1d01a3c9ae9bd0._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_8_19656ec99b8f6aa64c1d01a3c9ae9bd0._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="why ln failed"
- date="2013-05-23T13:27:39Z"
- content="""
-Finally got to check it out:  so indeed hardlinking fails but not because of permissions but \"link failed Cross-device link\"  that lib is -> /mnt/asec/ga.androidterm-1/lib  which resides on a different partition (vfat, /dev/block/dm-2, ro) from /data (ext4, /dev/block/mmcblk0p10)
-"""]]
diff --git a/doc/Android/oldcomments/comment_9_55e703ae105d0c0ee9ac50df8cc59dfb._comment b/doc/Android/oldcomments/comment_9_55e703ae105d0c0ee9ac50df8cc59dfb._comment
deleted file mode 100644
--- a/doc/Android/oldcomments/comment_9_55e703ae105d0c0ee9ac50df8cc59dfb._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 9"
- date="2013-05-23T18:44:46Z"
- content="""
-@yarikoptic you said before the error was \"Read-only file system\". Now you're saying it's \"Cross-device link\". I'm slightly confused.
-
-I've reworked the android app to not need any hard links. Try the current autobuild: <http://downloads.kitenet.net/git-annex/autobuild/android/git-annex.apk>
-"""]]
diff --git a/doc/Void.mdwn b/doc/Void.mdwn
deleted file mode 100644
--- a/doc/Void.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-git-annex can be installed in Void Linux by running: `xbps-install git-annex`.
diff --git a/doc/android/DCIM.png b/doc/android/DCIM.png
deleted file mode 100644
Binary files a/doc/android/DCIM.png and /dev/null differ
diff --git a/doc/android/appinstalled.png b/doc/android/appinstalled.png
deleted file mode 100644
Binary files a/doc/android/appinstalled.png and /dev/null differ
diff --git a/doc/android/apps.png b/doc/android/apps.png
deleted file mode 100644
Binary files a/doc/android/apps.png and /dev/null differ
diff --git a/doc/android/install.png b/doc/android/install.png
deleted file mode 100644
Binary files a/doc/android/install.png and /dev/null differ
diff --git a/doc/android/newwindow.png b/doc/android/newwindow.png
deleted file mode 100644
Binary files a/doc/android/newwindow.png and /dev/null differ
diff --git a/doc/android/terminal.png b/doc/android/terminal.png
deleted file mode 100644
Binary files a/doc/android/terminal.png and /dev/null differ
diff --git a/doc/android/webapp.png b/doc/android/webapp.png
deleted file mode 100644
Binary files a/doc/android/webapp.png and /dev/null differ
diff --git a/doc/assistant.mdwn b/doc/assistant.mdwn
deleted file mode 100644
--- a/doc/assistant.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-The git-annex assistant creates a synchronised folder on each of your
-OSX and Linux computers, Android devices, removable drives, NAS appliances,
-and cloud services. The contents of the folder are the same everywhere.
-It's very easy to use, and has all the power of git and git-annex.
-
-## installation
-
-The git-annex assistant comes as part of git-annex. 
-See [[install]] to get it installed.
-
-See the [[release_notes]] for an overview of the status, and upgrade
-instructions.
-
-## intro screencast
-
-[[!inline feeds=no template=bare pages=videos/git-annex_assistant_lan]]
-
-## documentation
-
-* [[Basic usage|quickstart]]
-* [[Android documentation|/Android]]
-* Want to make two nearby computers share the same synchronised folder?  
-  Follow the [[local_pairing_walkthrough]].
-* Or perhaps you want to share files between computers in different
-  locations, like home and work?  
-  Follow the [[remote_sharing_walkthrough]].
-* Want to share a synchronised folder with a friend?  
-  Follow the [[share_with_a_friend_walkthrough]].
-* Want to archive data to a drive or the cloud?  
-  Follow the [[archival_walkthrough]].
-
-## colophon
-
-The git-annex assistant was [crowd funded on
-Kickstarter](http://www.kickstarter.com/projects/joeyh/git-annex-assistant-like-dropbox-but-with-your-own/).
-[[/Thanks]] to all my backers.
-
-I blog about my work on git-annex and the assistant on a daily basis
-in [[this_blog|/devblog]]. Follow along!
-
-See also: The [[design|/design/assistant]] pages.
diff --git a/doc/assistant/addsshserver.png b/doc/assistant/addsshserver.png
deleted file mode 100644
Binary files a/doc/assistant/addsshserver.png and /dev/null differ
diff --git a/doc/assistant/archival_walkthrough.mdwn b/doc/assistant/archival_walkthrough.mdwn
deleted file mode 100644
--- a/doc/assistant/archival_walkthrough.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Normally, the git-annex assistant makes your files be available
-wherever you use it, and so a copy of each file is stored in each repository.
-That's perfect for files you're using right now, but what about files you're
-not using any more?
-
-You could just delete those files, but it's better to archive them, so
-you can access them later. All you need to get started archiving your old
-files is a USB drive, or an [Amazon Glacier](http://aws.amazon.com/glacier/)
-account.
-
-The webapp makes it easy to make a repository on either a USB drive,
-or on Amazon Glacier. Once the repository is created, be sure to
-put it in either the small archive, or full archive repository group.
-
-[[!img repogroups.png]]
-
-Now when you're done with a file, just move it into a directory named
-"archive". The assistant will notice you put it there, and next time it
-has the opportunity (when you plug in the USB drive, or when it can
-talk to Amazon Glacier over the network), will move the file's
-content to your archive repository.
-
-You'll no longer be able to open the file once it's been archived.
-If you later want to access it, you can just copy or move it out
-of the archive directory, and the assistant will retrieve its
-content from the archive.
-
-Note that retrieving data from Amazon Glacier takes 4 to 5 hours.
-
-### screencast
-
-[[!inline feeds=no template=bare pages=videos/git-annex_assistant_archiving]]
diff --git a/doc/assistant/brokenrepositoryalert.png b/doc/assistant/brokenrepositoryalert.png
deleted file mode 100644
Binary files a/doc/assistant/brokenrepositoryalert.png and /dev/null differ
diff --git a/doc/assistant/buddylist.png b/doc/assistant/buddylist.png
deleted file mode 100644
Binary files a/doc/assistant/buddylist.png and /dev/null differ
diff --git a/doc/assistant/cloudnudge.png b/doc/assistant/cloudnudge.png
deleted file mode 100644
Binary files a/doc/assistant/cloudnudge.png and /dev/null differ
diff --git a/doc/assistant/combinerepos.png b/doc/assistant/combinerepos.png
deleted file mode 100644
Binary files a/doc/assistant/combinerepos.png and /dev/null differ
diff --git a/doc/assistant/comment_1_f2c4857b7b000e005f0c19279db14eaf._comment b/doc/assistant/comment_1_f2c4857b7b000e005f0c19279db14eaf._comment
deleted file mode 100644
--- a/doc/assistant/comment_1_f2c4857b7b000e005f0c19279db14eaf._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkYrMBMTCEFUKskhWGD-1pzcw2ITshsi_8"
- nickname="Robert"
- subject="Annex on OS X 10.6"
- date="2013-06-04T23:10:03Z"
- content="""
-I really hope they can get annex working on os x 10.6.  This is a great effort.  Thanks 
-"""]]
diff --git a/doc/assistant/comment_2_befa1f48e5a43a7965060491430a6bc4._comment b/doc/assistant/comment_2_befa1f48e5a43a7965060491430a6bc4._comment
deleted file mode 100644
--- a/doc/assistant/comment_2_befa1f48e5a43a7965060491430a6bc4._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl9smfyJFgp3f2WjqqZWY6b7vo5eZv7GGQ"
- nickname="Bryan"
- subject="Ooh.  Do want on Windows"
- date="2013-07-03T20:44:05Z"
- content="""
-Sadly, I didn't know about this when the Kickstarter was underway - I'd be happy to chip in $100 if it means I can get annex assistant on Windows earlier.
-
-"""]]
diff --git a/doc/assistant/comment_3_9bd3b532a5c026a1d664c898f8e335e6._comment b/doc/assistant/comment_3_9bd3b532a5c026a1d664c898f8e335e6._comment
deleted file mode 100644
--- a/doc/assistant/comment_3_9bd3b532a5c026a1d664c898f8e335e6._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnov5q9_Cl4Ps5NoYE08yE01NLSvBANnY8"
- nickname="Eric"
- subject="Does it not work in Direct Mode?"
- date="2014-04-26T09:41:20Z"
- content="""
-Looks great, but I got the impression that Assistant would mirror the files from my computer to my external hard drive, and I can't seem to get it to do that.
-"""]]
diff --git a/doc/assistant/comment_4_c546a24459ca29025f00e424353c40d2._comment b/doc/assistant/comment_4_c546a24459ca29025f00e424353c40d2._comment
deleted file mode 100644
--- a/doc/assistant/comment_4_c546a24459ca29025f00e424353c40d2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlr2Bj0Mzqwzl28cbrotcQUbOFoaPB3B_Y"
- nickname="Tomasz"
- subject="how to disable assistant"
- date="2014-04-28T10:21:59Z"
- content="""
-assistant daemon now starts at boot and pushes all annexed files to other repos... I'd like to do it on my own. I can stop daemon from webapp, but it starts again on boot -  how Do I disable it from autostarting ?
-"""]]
diff --git a/doc/assistant/comment_5_d17de359cdd46659170d373cd09c0979._comment b/doc/assistant/comment_5_d17de359cdd46659170d373cd09c0979._comment
deleted file mode 100644
--- a/doc/assistant/comment_5_d17de359cdd46659170d373cd09c0979._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 5"
- date="2014-05-16T18:55:22Z"
- content="""
-If you have a question about using the assistant, please ask it in the [[forum]], not here.
-"""]]
diff --git a/doc/assistant/comment_6_70193bbaa5d60b829d7636748c641104._comment b/doc/assistant/comment_6_70193bbaa5d60b829d7636748c641104._comment
deleted file mode 100644
--- a/doc/assistant/comment_6_70193bbaa5d60b829d7636748c641104._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!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?!
-"""]]
diff --git a/doc/assistant/comment_7_831a529c92951f70a27721210204e46b._comment b/doc/assistant/comment_7_831a529c92951f70a27721210204e46b._comment
deleted file mode 100644
--- a/doc/assistant/comment_7_831a529c92951f70a27721210204e46b._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="https://woid.cryptobitch.de/foobar"
- subject="@niklaas"
- date="2015-08-17T13:42:26Z"
- content="""
-Joey Hess is using xmonad.
-"""]]
diff --git a/doc/assistant/connection.png b/doc/assistant/connection.png
deleted file mode 100644
Binary files a/doc/assistant/connection.png and /dev/null differ
diff --git a/doc/assistant/controlmenu.png b/doc/assistant/controlmenu.png
deleted file mode 100644
Binary files a/doc/assistant/controlmenu.png and /dev/null differ
diff --git a/doc/assistant/crashrecovery.png b/doc/assistant/crashrecovery.png
deleted file mode 100644
Binary files a/doc/assistant/crashrecovery.png and /dev/null differ
diff --git a/doc/assistant/dashboard.png b/doc/assistant/dashboard.png
deleted file mode 100644
Binary files a/doc/assistant/dashboard.png and /dev/null differ
diff --git a/doc/assistant/deleterepository.png b/doc/assistant/deleterepository.png
deleted file mode 100644
Binary files a/doc/assistant/deleterepository.png and /dev/null differ
diff --git a/doc/assistant/downloadnotification.png b/doc/assistant/downloadnotification.png
deleted file mode 100644
Binary files a/doc/assistant/downloadnotification.png and /dev/null differ
diff --git a/doc/assistant/downloadupgrade.png b/doc/assistant/downloadupgrade.png
deleted file mode 100644
Binary files a/doc/assistant/downloadupgrade.png and /dev/null differ
diff --git a/doc/assistant/encryptdrive.png b/doc/assistant/encryptdrive.png
deleted file mode 100644
Binary files a/doc/assistant/encryptdrive.png and /dev/null differ
diff --git a/doc/assistant/example.png b/doc/assistant/example.png
deleted file mode 100644
Binary files a/doc/assistant/example.png and /dev/null differ
diff --git a/doc/assistant/fsckconfig.png b/doc/assistant/fsckconfig.png
deleted file mode 100644
Binary files a/doc/assistant/fsckconfig.png and /dev/null differ
diff --git a/doc/assistant/genkey.png b/doc/assistant/genkey.png
deleted file mode 100644
Binary files a/doc/assistant/genkey.png and /dev/null differ
diff --git a/doc/assistant/iaitem.png b/doc/assistant/iaitem.png
deleted file mode 100644
Binary files a/doc/assistant/iaitem.png and /dev/null differ
diff --git a/doc/assistant/inotify_max_limit_alert.png b/doc/assistant/inotify_max_limit_alert.png
deleted file mode 100644
Binary files a/doc/assistant/inotify_max_limit_alert.png and /dev/null differ
diff --git a/doc/assistant/konquerormenu.png b/doc/assistant/konquerormenu.png
deleted file mode 100644
Binary files a/doc/assistant/konquerormenu.png and /dev/null differ
diff --git a/doc/assistant/local_pairing_walkthrough.mdwn b/doc/assistant/local_pairing_walkthrough.mdwn
deleted file mode 100644
--- a/doc/assistant/local_pairing_walkthrough.mdwn
+++ /dev/null
@@ -1,90 +0,0 @@
-So you have two computers in the same building, and you want them to share
-the same synchronised folder, communicating directly with each other.
-
-This is incredibly easy to set up with the git annex assistant.
-
-Let's say the two computers are your computer and your friend's computer.
-We'll start on your computer, where you open up your git annex dashboard.
-
-[[!img addrepository.png alt="Add another repository button"]]
-
-`*click*`
-
-[[!img pairing.png alt="Pair with another computer"]]
-
-`*click*`
-
-Now the hard bit. You have to think up a secret phrase, and type it in,
-(and perhaps get the spelling correct).
-
-[[!img secret.png alt="Enter secret phrase"]]
-
-Now your computer is in pairing mode. When your friend looks at her git
-annex dashboard, she sees something like this.
-
-[[!img pairrequest.png alt="Pair request"]]
-
-`*click*`
-
-[[!img secretempty.png alt="Enter same secret phrase"]]
-
-Now it's up to you to let her know what the secret is. As soon as she
-enters it, both your computers will be paired, and will begin to sync their
-git-annex folders. Just like that you can share files.
-
-----
-
-## Requirements
-
-For local pairing to work, you must have sshd (ssh server daemon) installed and working on all machines involved. That means you must allow at least local connections to sshd. On most Linux distributions, sshd is packaged in either openssh (openSUSE) or openssh-server (Debian). 
-
-It is highly recommended that you disable root login, disable password login to sshd and just enable key based authentication instead. No one will be able to login without your key.
-
-To disable root, after installing sshd, edit the sshd config (usually /etc/ssh/sshd_config file) and disable root login by adding:
-
-    PermitRootLogin no
-
-Restart sshd. See man sshd_config for details.
-
-To disable password login and enable key based authentication, edit the sshd config (just like above) by uncommenting and changing the following options:
-
-    ChallengeResponseAuthentication no
-    PasswordAuthentication no
-    UsePAM no
-    
-    PubkeyAuthentication yes
-
-Restart sshd. See man sshd_config for details.
-
-You can also restrict login to your local network only (not allow internet users from trying to log into your computer). Edit the hosts.deny file (usually /etc/hosts.deny) by adding the following:
-
-    sshd : ALL EXCEPT LOCAL
-
-Do note that restricting login to your local network may or may not block git-annex. Also note that this will not work on Mac OSX because Apple decided to disable this feature and replace it with a crippled version made by Apple.
-
-## Tips
-
-Something to keep in mind, especially if pairing doesn't seem to be
-working, is that the two computers need to be on the same network for this
-pairing process to work. Sometimes a building will have more than one
-network inside it, and you'll need to connect them both to the same one.
-Make sure the wireless network name is the same, or that they're both
-plugged into the same router.
-
-Also, the file sharing set up by this pairing only works when both
-computers are on the same network. If you go on a trip, any files you
-edit will not be visible to your friend until you get back. 
-
-To get around this, you'll often also want to set up
-[[jabber_pairing|share_with_a_friend_walkthrough]], and a server
-in the cloud, which they can use to exchange files while away.
-
-And also, you can pair with as many other computers as you like, not just
-one!
-
-## What does pairing actually do behind the scenes?
-
-It ensures that both repositories have correctly configured 
-[[remotes|walkthrough/adding_a_remote]] pointing to each other.
-If you have already configured this manually, you do not need to
-perform pairing.
diff --git a/doc/assistant/local_pairing_walkthrough/addrepository.png b/doc/assistant/local_pairing_walkthrough/addrepository.png
deleted file mode 100644
Binary files a/doc/assistant/local_pairing_walkthrough/addrepository.png and /dev/null differ
diff --git a/doc/assistant/local_pairing_walkthrough/pairing.png b/doc/assistant/local_pairing_walkthrough/pairing.png
deleted file mode 100644
Binary files a/doc/assistant/local_pairing_walkthrough/pairing.png and /dev/null differ
diff --git a/doc/assistant/local_pairing_walkthrough/pairrequest.png b/doc/assistant/local_pairing_walkthrough/pairrequest.png
deleted file mode 100644
Binary files a/doc/assistant/local_pairing_walkthrough/pairrequest.png and /dev/null differ
diff --git a/doc/assistant/local_pairing_walkthrough/secret.png b/doc/assistant/local_pairing_walkthrough/secret.png
deleted file mode 100644
Binary files a/doc/assistant/local_pairing_walkthrough/secret.png and /dev/null differ
diff --git a/doc/assistant/local_pairing_walkthrough/secretempty.png b/doc/assistant/local_pairing_walkthrough/secretempty.png
deleted file mode 100644
Binary files a/doc/assistant/local_pairing_walkthrough/secretempty.png and /dev/null differ
diff --git a/doc/assistant/logs.png b/doc/assistant/logs.png
deleted file mode 100644
Binary files a/doc/assistant/logs.png and /dev/null differ
diff --git a/doc/assistant/makerepo.png b/doc/assistant/makerepo.png
deleted file mode 100644
Binary files a/doc/assistant/makerepo.png and /dev/null differ
diff --git a/doc/assistant/menu.png b/doc/assistant/menu.png
deleted file mode 100644
Binary files a/doc/assistant/menu.png and /dev/null differ
diff --git a/doc/assistant/nautilusmenu.png b/doc/assistant/nautilusmenu.png
deleted file mode 100644
Binary files a/doc/assistant/nautilusmenu.png and /dev/null differ
diff --git a/doc/assistant/osx-app.png b/doc/assistant/osx-app.png
deleted file mode 100644
Binary files a/doc/assistant/osx-app.png and /dev/null differ
diff --git a/doc/assistant/preferences.png b/doc/assistant/preferences.png
deleted file mode 100644
Binary files a/doc/assistant/preferences.png and /dev/null differ
diff --git a/doc/assistant/quickstart.mdwn b/doc/assistant/quickstart.mdwn
deleted file mode 100644
--- a/doc/assistant/quickstart.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-## first run
-
-To get started with the git-annex assistant, just pick it from
-your system's list of applications.
-
-[[!img assistant/menu.png]]
-[[!img assistant/osx-app.png]]
-
-It'll prompt you to set up a folder:
-
-[[!img assistant/makerepo.png]]
-
-Then any changes you make to its folder will automatically be committed to
-git, and synced to repositories on other computers. You can use the
-interface to add repositories and control the git-annex assistant.
-
-[[!img assistant/running.png]]
-
-## starting on boot
-
-The git-annex assistant will automatically be started when you log in to
-desktop environments like Mac OS X, Gnome, XFCE, and KDE, and the menu item
-shown above can be used to open the webapp. On other systems, you may need
-to start it by hand.
-
-To start the webapp, run `git annex webapp` at the command line.
-
-To start the assistant without opening the webapp, 
-you can run the command "git annex assistant --autostart". This is a
-good thing to configure your system to run automatically when you log in.
diff --git a/doc/assistant/release_notes.mdwn b/doc/assistant/release_notes.mdwn
deleted file mode 100644
--- a/doc/assistant/release_notes.mdwn
+++ /dev/null
@@ -1,414 +0,0 @@
-## version 5.20140421
-
-This release begins to deprecate XMPP support. In particular, if you use
-the assistant with a ssh remote that has this version of git-annex
-installed, you don't need XMPP any longer to get immediate syncing of
-changes.
-
-## version 5.20140411
-
-This release fixes a bug that could cause the assistant to use a *lot* of
-CPU, when monthly fscking was set up.
-
-Automatic upgrading was broken on OSX for previous versions. This has been
-fixed, but you'll need to manually upgrade to this version to get it going
-again. Workaround: Remove the wget bundled inside the git-annex dmg.
-
-## version 5.20140221
-
-The Windows port of the assistant and webapp is now considered to be beta
-quality. There are important missing features (notably Jabber), documented
-on [[todo/windows_support]], but the webapp is broadly usable on Windows
-now.
-
-## version 5.20131221
-
-There is now a arm [[install/linux_standalone]] build of git-annex,
-including the assistant and webapp,
-which can be installed on a variety of systems including Raspberry Pi,
-Synology NAS, and Google Chromebooks. Details in
-[[this forum thread|forum/new_linux_arm_tarball_build]].
-
-## version 5.20131213
-
-The assistant can now be used on Windows! However, it has known problems,
-described in [[todo/windows_support]], and should be considered an
-alpha-level preview.
-
-## version 5.20131127
-
-Starting with this version, when git-annex is installed from a build on
-this website, it will detect when new versions are available, and allow
-easily upgrading. Automatic upgrades can also be configured if desired,
-or automatic upgrade checking can be disabled in the preferences page.
-
-git-annex builds from distributions, like Debian will not automatically
-upgrade; use the distribution's package manager for that. However, the
-git-annex webapp will also detect when a distribution has upgraded
-git-annex and offer to restart the assistant.
-
-## version 4.20131024
-
-This version fixes several different bugs that could cause the webapp to
-refuse to create a repository. Several other bugs are also fixed, including
-a bug that caused it to not add files on Android.
-
-New in this release is the ability to use the webapp to set up scheduled
-consistency checks of your repositories. Many problems with repositories 
-are now automatically corrected, and it can even repair damaged git
-repositories.
-
-This is a recommended upgrade.
-
-## version 4.20131002
-
-Now you can use the webapp to set up an encrypted git repository on a
-remote ssh server, or on rsync.net, and use it as a live cloud backup. Or,
-use the webapp to make an encrypted git repository on a removable drive,
-and store it offsite as a secure backup.
-
-## version 4.20130920
-
-This release is the first to support fully encrypted git repositories
-stored on removable drives. This can be set up easily using the webapp.
-
-## version 4.20130909
-
-This release fixes a crash that could occur when using XMPP with the
-assitant. It has only been seen on OS X so far. The bug is not believed to
-be explitable, but upgrading is still recommended.
-
-## version 4.20130802
-
-This release fixes several bugs, including a reversion introduced in the last
-version that broke direct mode on Windows, Android, and other crippled
-filesystems. It contains a workaround for a bug in recent git pre-releases
-that broke handling of filenames containing spaces.
-It is a highly recommended upgrade.
-
-The webapp can now detect repositories that did not finish getting properly set
-up, and can recover from one common bug that broke local pairing and remote
-ssh server setups on systems using `ssh-agent`.
-
-## version 4.20130723
-
-This release fixes some bugs. Notably it fixes a bug that could result in data
-loss when adding a tarball of a git-annex repository to your git-annex
-repository.
-
-Rsync.net have committed to support git-annex and offer a special
-discounted rate for git-annex users.
-<http://www.rsync.net/products/git-annex-pricing.html>
-
-## version 4.20130709
-
-This release is mostly bug fixes.
-
-One of the bugs involved setting up rsync remotes on servers other than
-rsync.net. The wrong `.ssh/authorized_keys` line was deployed to the
-remote server. If you set up a rsync remote with a past release, and it does
-not work, you will need to manually edit the `.ssh/authorized_keys` file,
-and remove the `command=` forced command.
-
-## version 4.20130621, 4.20130627
-
-These releases mostly consist of bug fixes.
-
-## version 4.20130601
-
-This is a bugfix release, featuring significant XMPP improvements and
-more robustness thanks to automated fuzz testing. Recommended upgrade.
-
-This version changes its XMPP protocol, so it will fail to sync with older
-git-annex versions over XMPP.
-
-## version 4.20130521
-
-This is a bugfix release. Recommended upgrade.
-
-## version 4.20130516
-
-This version contains numerous bug fixes, and improvements.
-
-This is the first release with a fully usable Android app. No command-line
-typing needed to set up syncing to your Android phone or tablet!
-A few of the more advanced features may not work (or not work reliably)
-on Android. The Android app is still beta quality.
-
-This is also the first release with a Windows port! The Windows port
-is in an alpha quality state, and is missing many features.
-It does not yet include the assistant.
-
-## version 4.20130501
-
-This version contains numerous bug fixes, and improvements.
-
-## version 4.20130417
-
-This version contains numerous bug fixes, and improvements.
-
-One bug that was fixed can affect users of gnome-keyring who
-have set up remote repositories on ssh servers using the webapp.
-The gnome-keyring may load the restricted key that is set up
-for that, and make it be used for regular logins to the server;
-with the result that you'll get an error message about "git-annex-shell"
-when sshing to the server. 
-
-If you experience this problem you can fix it by
-moving `.ssh/key.git-annex*` to `.ssh/git-annex/` (creating
-that directory first), and edit `.ssh/config` to reflect the new
-location of the key. You will also need to restart gnome-keyring.
-
-Another change relates to files in `archive/` directories. Client repositories
-now sync these files between themselves like any other files, until
-the files reach an archive repository. Only then are they removed from
-the client repositories. So you need to ensure you have at least one
-archive repository if you want to use the `archive/` directory feature.
-
-## version 4.20130323, 4.20130405
-
-These versions continue fixing bugs and adding features.
-
-## version 4.20130314
-
-This version makes a great many improvements and bugfixes, and is
-a recommended upgrade.
-
-If you have already used the webapp to locally pair two computers,
-a bug caused the paired repository to not be given an appropriate cost.
-To fix this, go into the Repositories page in the webapp, and drag the
-repository for the locally paired computer to come before any repositories
-that it's more expensive to transfer data to.
-
-## version 4.20130227
-
-This release fixes a bug with globbing that broke preferred content expressions.
-So, it is a recommended upgrade from the previous release, which introduced
-that bug.
-
-In this release, the assistant is fully working on Android, although
-it must be set up using the command line.
-
-Repositories can now be placed on filesystems that lack support for symbolic
-links; FAT support is complete.
-
-## version 3.20130216
-
-This adds a port to Android. Only usable at the command line so far;
-beta qualitty.
-
-Also a bugfix release, and improves support for FAT.
-
-The following are known limitations of this release of the git-annex
-assistant:
-
-* No Android app yet.
-* On BSD operating systems (but not on OS X), the assistant uses kqueue to
-  watch files. Kqueue has to open every directory it watches, so too many
-  directories will run it out of the max number of open files (typically
-  1024), and fail. See [[this_bug|bugs/Issue_on_OSX_with_some_system_limits]]
-  for a workaround.
-* Also on systems with kqueue, modifications to existing files in direct
-  mode will not be noticed.
-
-## version 3.20130107, 3.20130114, 3.20130124, 3.20130207
-
-These are bugfix releases.
-
-## version 3.20130102
-
-This release makes several significant improvements to the git-annex
-assistant, which is still in beta.
-
-The main improvement is direct mode. This allows you to directly edit files
-in the repository, and the assistant will automatically commit and sync
-your changes. Direct mode is the default for new repositories created
-by the assistant. To convert your existing repository to use direct mode,
-manually run `git annex direct` inside the repository.
-
-## version 3.20121211
-
-This release of the git-annex assistant (which is still in beta)
-consists of mostly bugfixes, user interface improvements, and improvements
-to existing features.
-
-In general, anything you can configure with the assistant's web app
-will work. Some examples of use cases supported by this release include:
-
-* Using Box.com's 5 gigabytes of free storage space as a cloud transfer
-  point between between repositories that cannot directly contact
-  one-another. (Many other cloud providers are also supported, from Rsync.net
-  to Amazon S3, to your own ssh server.)
-* Archiving or backing up files to Amazon Glacier. See [[archival_walkthrough]].
-* [[Sharing repositories with friends|share_with_a_friend_walkthrough]]
-  contacted through a Jabber server (such as Google Talk).
-* [[Pairing|local_pairing_walkthrough]] two computers that are on the same local
-  network (or VPN) and automatically keeping the files in the annex in
-  sync as changes are made to them.
-* Cloning your repository to removable drives, USB keys, etc. The assistant
-  will notice when the drive is mounted and keep it in sync.
-  Such a drive can be stored as an offline backup, or transported between
-  computers to keep them in sync.
-
-The following are known limitations of this release of the git-annex
-assistant:
-
-* The Max OSX standalone app may not work on all versions of Max OSX.
-  Please test!
-* On Mac OSX and BSD operating systems, the assistant uses kqueue to watch
-  files. Kqueue has to open every directory it watches, so too many
-  directories will run it out of the max number of open files (typically
-  1024), and fail. See [[bugs/Issue_on_OSX_with_some_system_limits]]
-  for a workaround.
-
-## version 3.20121126
-
-This adds several features to the git-annex assistant, which is still in beta.
-
-In general, anything you can configure with the assistant's web app
-will work. Some examples of use cases supported by this release include:
-
-* Using Box.com's 5 gigabytes of free storage space as a cloud transfer
-  point between between repositories that cannot directly contact
-  one-another. (Many other cloud providers are also supported, from Rsync.net
-  to Amazon S3, to your own ssh server.)
-* Archiving or backing up files to Amazon Glacier.
-* [[Sharing repositories with friends|share_with_a_friend_walkthrough]]
-  contacted through a Jabber server (such as Google Talk).
-* [[Pairing|local_pairing_walkthrough]] two computers that are on the same local
-  network (or VPN) and automatically keeping the files in the annex in
-  sync as changes are made to them.
-* Cloning your repository to removable drives, USB keys, etc. The assistant
-  will notice when the drive is mounted and keep it in sync.
-  Such a drive can be stored as an offline backup, or transported between
-  computers to keep them in sync.
-
-The following are known limitations of this release of the git-annex
-assistant:
-
-* The Max OSX standalone app does not work on all versions of Max OSX.
-* On Mac OSX and BSD operating systems, the assistant uses kqueue to watch
-  files. Kqueue has to open every directory it watches, so too many
-  directories will run it out of the max number of open files (typically
-  1024), and fail. See [[bugs/Issue_on_OSX_with_some_system_limits]]
-  for a workaround.
-* Retrieval of files from Amazon Glacier is not fully automated; the
-  assistant does not automatically retry in the 4 to 5 hours period 
-  when Glacier makes the files available.
-
-## version 3.20121112
-
-This is a major upgrade of the git-annex assistant, which is still in beta.
-
-In general, anything you can configure with the assistant's web app
-will work. Some examples of use cases supported by this release include:
-
-* [[Sharing repositories with friends|share_with_a_friend_walkthrough]]
-  contacted through a Jabber server (such as Google Talk).
-* Setting up cloud repositories, that are used as backups, archives,
-  or transfer points between repositories that cannot directly contact
-  one-another.
-* [[Pairing|local_pairing_walkthrough]] two computers that are on the same local
-  network (or VPN) and automatically keeping the files in the annex in
-  sync as changes are made to them.
-* Cloning your repository to removable drives, USB keys, etc. The assistant
-  will notice when the drive is mounted and keep it in sync.
-  Such a drive can be stored as an offline backup, or transported between
-  computers to keep them in sync.
-
-The following upgrade notes apply if you're upgrading from a previous version:
-
-* For best results, edit the configuration of repositories you set
-  up with older versions, and place them in a repository group.
-  This lets the assistant know how you want to use the repository; for backup,
-  archival, as a transfer point for clients, etc. Go to Configuration -&gt;
-  Manage Repositories, and click in the "configure" link to edit a repository's
-  configuration.
-* If you set up a cloud repository with an older version, and have multiple
-  clients using it, you are recommended to configure an Jabber account,
-  so that clients can use it to communicate when sending data to the
-  cloud repository. Configure Jabber by opening the webapp, and going to
-  Configuration -&gt; Configure jabber account
-* When setting up local pairing, the assistant did not limit the paired
-  computer to accessing a single git repository. This new version does,
-  by setting GIT_ANNEX_SHELL_DIRECTORY in `~/.ssh/authorized_keys`.
-
-The following are known limitations of this release of the git-annex
-assistant:
-
-* On Mac OSX and BSD operating systems, the assistant uses kqueue to watch
-  files. Kqueue has to open every directory it watches, so too many
-  directories will run it out of the max number of open files (typically
-  1024), and fail. See [[bugs/Issue_on_OSX_with_some_system_limits]]
-  for a workaround.
-
-## version 3.20121009
-
-This is a maintenance release of the git-annex assistant, which is still in
-beta.
-
-In general, anything you can configure with the assistant's web app
-will work. Some examples of use cases supported by this release include:
-
-* [[Pairing|local_pairing_walkthrough]] two computers that are on the same local
-  network (or VPN) and automatically keeping the files in the annex in
-  sync as changes are made to them.
-* Cloning your repository to removable drives, USB keys, etc. The assistant
-  will notice when the drive is mounted and keep it in sync.
-  Such a drive can be stored as an offline backup, or transported between
-  computers to keep them in sync.
-* Cloning your repository to a remote server, running ssh, and uploading
-  changes made to your files to the server. There is special support
-  for using the rsync.net cloud provider this way, or any shell account
-  on a typical unix server, such as a Linode VPS can be used.
-
-The following are known limitations of this release of the git-annex
-assistant:
-
-* On Mac OSX and BSD operating systems, the assistant uses kqueue to watch
-  files. Kqueue has to open every directory it watches, so too many
-  directories will run it out of the max number of open files (typically
-  1024), and fail. See [[bugs/Issue_on_OSX_with_some_system_limits]]
-  for a workaround.
-* In order to ensure that all multiple repositories are kept in sync,
-  each computer with a repository must be running the git-annex assistant.
-* The assistant does not yet always manage to keep repositories in sync
-  when some are hidden from others behind firewalls.
-
-## version 3.20120924
-
-This is the first beta release of the git-annex assistant.
-
-In general, anything you can configure with the assistant's web app
-will work. Some examples of use cases supported by this release include:
-
-* [[Pairing|local_pairing_walkthrough]] two computers that are on the same local
-  network (or VPN) and automatically keeping the files in the annex in
-  sync as changes are made to them.
-* Cloning your repository to removable drives, USB keys, etc. The assistant
-  will notice when the drive is mounted and keep it in sync.
-  Such a drive can be stored as an offline backup, or transported between
-  computers to keep them in sync.
-* Cloning your repository to a remote server, running ssh, and uploading
-  changes made to your files to the server. There is special support
-  for using the rsync.net cloud provider this way, or any shell account
-  on a typical unix server, such as a Linode VPS can be used.
-
-The following are known limitations of this release of the git-annex
-assistant:
-
-* On Mac OSX and BSD operating systems, the assistant uses kqueue to watch
-  files. Kqueue has to open every directory it watches, so too many
-  directories will run it out of the max number of open files (typically
-  1024), and fail. See [[bugs/Issue_on_OSX_with_some_system_limits]]
-  for a workaround.
-* In order to ensure that all multiple repositories are kept in sync,
-  each computer with a repository must be running the git-annex assistant.
-* The assistant does not yet always manage to keep repositories in sync
-  when some are hidden from others behind firewalls.
-* If a file is checked into git as a normal file and gets modified
-  (or merged, etc), it will be converted into an annexed file. So you
-  should not mix use of the assistant with normal git files in the same
-  repository yet.
-* If you `git annex unlock` a file, it will immediately be re-locked.
-  See [[bugs/watcher_commits_unlocked_files]].
diff --git a/doc/assistant/remote_sharing_walkthrough.mdwn b/doc/assistant/remote_sharing_walkthrough.mdwn
deleted file mode 100644
--- a/doc/assistant/remote_sharing_walkthrough.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-So you have two computers that are not in the same place, and you want them
-to share the same synchronised folder, communicating directly with each other.
-
-[[!inline feeds=no template=bare pages=videos/git-annex_assistant_remote_sharing]]
-
-You can add even more computers using the same method shown here.
-
-----
-
-If you have a laptop that is sometimes near another computer, you can
-speed up file transfers when it is by also connecting it using the
-[[local_pairing_walkthrough]].
diff --git a/doc/assistant/repairrepository.png b/doc/assistant/repairrepository.png
deleted file mode 100644
Binary files a/doc/assistant/repairrepository.png and /dev/null differ
diff --git a/doc/assistant/repogroups.png b/doc/assistant/repogroups.png
deleted file mode 100644
Binary files a/doc/assistant/repogroups.png and /dev/null differ
diff --git a/doc/assistant/repoinfo.png b/doc/assistant/repoinfo.png
deleted file mode 100644
Binary files a/doc/assistant/repoinfo.png and /dev/null differ
diff --git a/doc/assistant/repositories.png b/doc/assistant/repositories.png
deleted file mode 100644
Binary files a/doc/assistant/repositories.png and /dev/null differ
diff --git a/doc/assistant/rsync.net.encryption.png b/doc/assistant/rsync.net.encryption.png
deleted file mode 100644
Binary files a/doc/assistant/rsync.net.encryption.png and /dev/null differ
diff --git a/doc/assistant/rsync.net.png b/doc/assistant/rsync.net.png
deleted file mode 100644
Binary files a/doc/assistant/rsync.net.png and /dev/null differ
diff --git a/doc/assistant/running.png b/doc/assistant/running.png
deleted file mode 100644
Binary files a/doc/assistant/running.png and /dev/null differ
diff --git a/doc/assistant/share_with_a_friend_walkthrough.mdwn b/doc/assistant/share_with_a_friend_walkthrough.mdwn
deleted file mode 100644
--- a/doc/assistant/share_with_a_friend_walkthrough.mdwn
+++ /dev/null
@@ -1,58 +0,0 @@
-Want to share all the files in your repository with a friend?
-
-Let's suppose you use Google Mail, and so does your friend, and you
-sometimes also chat in Google Talk. The git-annex assistant will
-use your Google account to share with your friend. (This actually
-works with any Jabber account you use, not just Google Talk.)
-
-Start by opening up your git annex dashboard.
-
-[[!img local_pairing_walkthrough/addrepository.png alt="Add another repository button"]]
-
-`*click*`
-
-[[!img pairing.png alt="Share with a friend"]]
-
-`*click*`
-
-[[!img xmpp.png alt="Configuring Jabber account"]]
-
-Fill that out, and git-annex will be able to show you a list of your
-friends.
-
-[[!img buddylist.png alt="Buddy list"]]
-
-This list will refresh as friends log on and off, so you can
-leave it open in a tab until a friend is available to start pairing.
-
-(If your friend is not using git-annex yet, now's a great time to spread
-the word!)
-
-Once you click on "Start Pairing", your friend will see this pop up
-on their git annex dashboard.
-
-[[!img xmppalert.png alt="Pair request"]]
-
-Once your friend clicks on that, your repositories will be paired.
-
-### But, wait, there's one more step...
-
-Despite the repositories being paired now, you and your friend can't yet
-quite share files. You'll start to see your friend's files show up in your
-git-annex folder, but you won't be able to open them yet.
-
-What you need to do now is set up a repository out there in the cloud,
-that both you and your friend can access. This will be used to transfer
-files between the two of you.
-
-At the end of the pairing process, a number of cloud providers are
-suggested, and the git-annex assistant makes it easy to configure one of
-them. Once you or your friend sets it up, it'll show up in the other
-one's list of repositories:
-
-[[!img repolist.png alt="Repository list"]]
-
-The final step is to share the login information for the cloud repository
-with your friend, so they can enable it too.
-
-With that complete, you'll be able to open your friend's files!
diff --git a/doc/assistant/share_with_a_friend_walkthrough/buddylist.png b/doc/assistant/share_with_a_friend_walkthrough/buddylist.png
deleted file mode 100644
Binary files a/doc/assistant/share_with_a_friend_walkthrough/buddylist.png and /dev/null differ
diff --git a/doc/assistant/share_with_a_friend_walkthrough/pairing.png b/doc/assistant/share_with_a_friend_walkthrough/pairing.png
deleted file mode 100644
Binary files a/doc/assistant/share_with_a_friend_walkthrough/pairing.png and /dev/null differ
diff --git a/doc/assistant/share_with_a_friend_walkthrough/repolist.png b/doc/assistant/share_with_a_friend_walkthrough/repolist.png
deleted file mode 100644
Binary files a/doc/assistant/share_with_a_friend_walkthrough/repolist.png and /dev/null differ
diff --git a/doc/assistant/share_with_a_friend_walkthrough/xmppalert.png b/doc/assistant/share_with_a_friend_walkthrough/xmppalert.png
deleted file mode 100644
Binary files a/doc/assistant/share_with_a_friend_walkthrough/xmppalert.png and /dev/null differ
diff --git a/doc/assistant/thanks.mdwn b/doc/assistant/thanks.mdwn
deleted file mode 100644
--- a/doc/assistant/thanks.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-[[!meta redir="/thanks#kickstarter"]]
diff --git a/doc/assistant/thumbnail.png b/doc/assistant/thumbnail.png
deleted file mode 100644
Binary files a/doc/assistant/thumbnail.png and /dev/null differ
diff --git a/doc/assistant/unused.png b/doc/assistant/unused.png
deleted file mode 100644
Binary files a/doc/assistant/unused.png and /dev/null differ
diff --git a/doc/assistant/upgradecomplete.png b/doc/assistant/upgradecomplete.png
deleted file mode 100644
Binary files a/doc/assistant/upgradecomplete.png and /dev/null differ
diff --git a/doc/assistant/xmpp.png b/doc/assistant/xmpp.png
deleted file mode 100644
Binary files a/doc/assistant/xmpp.png and /dev/null differ
diff --git a/doc/assistant/xmppnudge.png b/doc/assistant/xmppnudge.png
deleted file mode 100644
Binary files a/doc/assistant/xmppnudge.png and /dev/null differ
diff --git a/doc/assistant/xmpppairingend.png b/doc/assistant/xmpppairingend.png
deleted file mode 100644
Binary files a/doc/assistant/xmpppairingend.png and /dev/null differ
diff --git a/doc/automatic_conflict_resolution.mdwn b/doc/automatic_conflict_resolution.mdwn
deleted file mode 100644
--- a/doc/automatic_conflict_resolution.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Running `git annex sync` or using the [[assistant]] involves merging
-changes from elsewhere into your repository's currently checked out branch.
-This could lead to a merge conflict, perhaps because the same file
-got changed in two different ways. A nice feature is that these
-merge conflicts are automatically resolved, rather than leaving
-git in the middle of a conflicted merge, which would prevent further
-syncing from happening.
-
-When a conflict occurs, there will be several messages printed about the merge
-conflict, and the file that has the merge conflict will be renamed, with
-".variant-XXX" tacked onto it. So if there are two versions of file foo,
-you might end up with "foo.variant-AAA" and "foo.variant-BBB". It's then
-up to you to decide what to do with these two files. Perhaps you can
-manually combine them back into a single file. Or perhaps you choose to
-rename them to better names and keep two versions, or delete one version
-you don't want.
-
-The "AAA" and "BBB" in the above example are essentially arbitrary
-(technically they are the MD5 checksum of the key). The automatic merge
-conflict resolution is designed so that if two or more repositories both get
-a merge conflict, and resolve it, the resolved repositories will not
-themselves conflict. This is why it doesn't use something nicer, like
-perhaps the name of the remote that the file came from.
diff --git a/doc/backends.mdwn b/doc/backends.mdwn
deleted file mode 100644
--- a/doc/backends.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-When a file is annexed, a key is generated from its content and/or metadata.
-The file checked into git symlinks to the key. This key can later be used
-to retrieve the file's content (its value).
-
-Multiple pluggable key-value backends are supported, and a single repository
-can use different ones for different files.
-
-* `SHA256E` -- The default backend for new files, combines a 256 bit SHA-2
-  hash of the file's content with the file's extension. This allows
-  verifying that the file content is right, and can avoid duplicates of
-  files with the same content. Its need to generate checksums
-  can make it slower for large files. 
-* `SHA256` -- SHA-2 hash that does not include the file extension in the
-  key, which can lead to better deduplication but can confuse some programs.
-* `SHA512`, `SHA512E` -- Best SHA-2 hash, for the very paranoid.
-* `SHA384`, `SHA384E`, `SHA224`, `SHA224E` -- SHA-2 hashes for
-  people who like unusual sizes.
-* `SHA3_512`, `SHA3_512E`, `SHA3_384`, `SHA3_384E`, `SHA3_256`, `SHA3_256E`, `SHA3_224`, `SHA3_224E`
-  -- SHA-3 hashes, for bleeding edge fun.
-* `SKEIN512`, `SKEIN512E`, `SKEIN256`, `SKEIN256E`
-  -- [Skein hash](http://en.wikipedia.org/wiki/Skein_hash),
-  a well-regarded SHA3 hash competition finalist.
-* `SHA1`, `SHA1E`, `MD5`, `MD5E` -- Smaller hashes than `SHA256`
-   for those who want a checksum but are not concerned about security.
-* `WORM` ("Write Once, Read Many") -- This assumes that any file with
-  the same filename, size, and modification time has the same content.
-  This is the least expensive backend, recommended for really large
-  files or slow systems.
-* `URL` -- This is a key that is generated from the url to a file.
-  It's generated when using eg, `git annex addurl --fast`, when the file
-  content is not available for hashing.
-
-Note that the various 512 and 384 length hashes result in long paths,
-which are known to not work on Windows. If interoperability on Windows is a
-concern, avoid those.
-
-The `annex.backends` git-config setting can be used to list the backends
-git-annex should use. The first one listed will be used by default when
-new files are added.
-
-For finer control of what backend is used when adding different types of
-files, the `.gitattributes` file can be used. The `annex.backend`
-attribute can be set to the name of the backend to use for matching files.
-
-For example, to use the SHA256E backend for sound files, which tend to be
-smallish and might be modified or copied over time,
-while using the WORM backend for everything else, you could set
-in `.gitattributes`:
-
-	* annex.backend=WORM
-	*.mp3 annex.backend=SHA256E
-	*.ogg annex.backend=SHA256E
diff --git a/doc/backends/comment_10_920cd139dfec8adb1089f5acf26de4d2._comment b/doc/backends/comment_10_920cd139dfec8adb1089f5acf26de4d2._comment
deleted file mode 100644
--- a/doc/backends/comment_10_920cd139dfec8adb1089f5acf26de4d2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 10"""
- date="2015-01-06T17:58:28Z"
- content="""
-@Matthias, that directory structure is not controlled by the backend.
-It is explained in [[internals]]
-"""]]
diff --git a/doc/backends/comment_11_f0f6316bbdc971a9ab157de9bbb9f74c._comment b/doc/backends/comment_11_f0f6316bbdc971a9ab157de9bbb9f74c._comment
deleted file mode 100644
--- a/doc/backends/comment_11_f0f6316bbdc971a9ab157de9bbb9f74c._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="add MD5SUM (with E) backend?"
- date="2015-01-29T22:07:40Z"
- content="""
-probably in many cases MD5SUM might be sufficient to cover the space of the available load and 
-
-- its size would be even smaller than SHA1 (thus smaller git-annex footprint)
-- immediate matching to often distributed MD5SUMs
-- matching to ETags (whenever wasn't a multipart upload) in S3 buckets
-
-or use of MD5SUM hash is really not recommended for non-encryption-critical cases too?
-"""]]
diff --git a/doc/backends/comment_12_da76dff5fe712318d7d4313f1d827883._comment b/doc/backends/comment_12_da76dff5fe712318d7d4313f1d827883._comment
deleted file mode 100644
--- a/doc/backends/comment_12_da76dff5fe712318d7d4313f1d827883._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""MD5"""
- date="2015-02-04T17:25:45Z"
- content="""
-I've added MD5 and MD5E. Of course, if you choose to use these, or the WORM
-backend, you give up the cryptographic verification that the content
-currently in your repository is the same content that was in it before.
-Whether that matters in your application is up to you.
-"""]]
diff --git a/doc/backends/comment_13_578423935bc71cdbdc23c3db06d1e870._comment b/doc/backends/comment_13_578423935bc71cdbdc23c3db06d1e870._comment
deleted file mode 100644
--- a/doc/backends/comment_13_578423935bc71cdbdc23c3db06d1e870._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="THANK YOU JOEY"
- date="2015-02-09T14:04:27Z"
- content="""
-for the MD5/MD5E (and now I have found \"email replies to me\" - I will become a power user of branchable ;) )
-"""]]
diff --git a/doc/backends/comment_14_57154dcd1041a33f220f9105b709be89._comment b/doc/backends/comment_14_57154dcd1041a33f220f9105b709be89._comment
deleted file mode 100644
--- a/doc/backends/comment_14_57154dcd1041a33f220f9105b709be89._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="xelez0@57a58225d4e5b260555ebc4a9d0a8df85d1e971a"
- nickname="xelez0"
- subject="Backend of specified file"
- date="2015-07-05T13:19:43Z"
- content="""
-How can I determine backend of specified file? Looking over man pages and can't find it.
-"""]]
diff --git a/doc/backends/comment_15_b3445fd1f379346c642a27211c6c798b._comment b/doc/backends/comment_15_b3445fd1f379346c642a27211c6c798b._comment
deleted file mode 100644
--- a/doc/backends/comment_15_b3445fd1f379346c642a27211c6c798b._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="CandyAngel"
- subject="comment 15"
- date="2015-07-05T14:54:18Z"
- content="""
-It's not explicit, but 'git annex info $FILE' tells you the key, which has the backend as its first component:
-
-    ## git annex info CG\ Cookie/Compositing\ in\ Blender/01_CompositingInBlender_SourceFiles.zip 
-    file: CG Cookie/Compositing in Blender/01_CompositingInBlender_SourceFiles.zip
-    size: 744.51 megabytes
-    key: SHA256E-s744506832--08d2daced60b5eb6509044d5eefca82e7a6899350f49adc0083014229739515e.zip
-
-I don't think there are any situations where the first component of the key isn't the backend, but don't hold me to that, please :)
-"""]]
diff --git a/doc/backends/comment_16_c68dfaeee2ef18f420f7e11ff5f604b9._comment b/doc/backends/comment_16_c68dfaeee2ef18f420f7e11ff5f604b9._comment
deleted file mode 100644
--- a/doc/backends/comment_16_c68dfaeee2ef18f420f7e11ff5f604b9._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="CandyAngel"
- subject="comment 16"
- date="2015-07-05T15:00:46Z"
- content="""
-Or I could not be an idiot and tell you the command specifically looking up a key for a file: lookupkey
-
-    ## git annex lookupkey CG\ Cookie/Compositing\ in\ Blender/01_CompositingInBlender_SourceFiles.zip 
-    SHA256E-s744506832--08d2daced60b5eb6509044d5eefca82e7a6899350f49adc0083014229739515e.zip
-
-So to get the backend (if the first component is always the backend):
-
-    ## git annex lookupkey CG\ Cookie/Compositing\ in\ Blender/01_CompositingInBlender_SourceFiles.zip | cut -d- -f1
-    SHA256E
-"""]]
diff --git a/doc/backends/comment_17_557a622b3304eb86fed52896e0b6cbda._comment b/doc/backends/comment_17_557a622b3304eb86fed52896e0b6cbda._comment
deleted file mode 100644
--- a/doc/backends/comment_17_557a622b3304eb86fed52896e0b6cbda._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 17"""
- date="2015-07-06T16:03:53Z"
- content="""
-See [[internals/key_format]].
-"""]]
diff --git a/doc/backends/comment_1_375bb1fb5973e8fa67b763f2dd6e404b._comment b/doc/backends/comment_1_375bb1fb5973e8fa67b763f2dd6e404b._comment
deleted file mode 100644
--- a/doc/backends/comment_1_375bb1fb5973e8fa67b763f2dd6e404b._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="http://nanotech.nanotechcorp.net/"
- nickname="NanoTech"
- subject="SHA performance"
- date="2012-08-10T04:37:32Z"
- content="""
-It turns out that (at least on x86-64 machines) `SHA512` [is faster than][1] `SHA256`. In some benchmarks I performed<sup>1</sup> `SHA256` was 1.8–2.2x slower than `SHA1` while `SHA512` was only 1.5–1.6x slower.
-
-`SHA224` and `SHA384` are effectively just truncated versions of `SHA256` and `SHA512` so their performance characteristics are identical.
-
-[1]: https://community.emc.com/community/edn/rsashare/blog/2010/11/01/sha-2-algorithms-when-sha-512-is-more-secure-and-faster
-<sup>1</sup> `time head -c 100000000 /dev/zero | shasum -a 512`
-"""]]
diff --git a/doc/backends/comment_2_1f2626eca9004b31a0b7fc1a0df8027b._comment b/doc/backends/comment_2_1f2626eca9004b31a0b7fc1a0df8027b._comment
deleted file mode 100644
--- a/doc/backends/comment_2_1f2626eca9004b31a0b7fc1a0df8027b._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm7eqCMh_B7mxE0tnchbr0JoYu11FUAFRY"
- nickname="Stéphane"
- subject="Tracking remote copies not even stored locally / URL backend turned into a &quot;special remote&quot;."
- date="2013-01-03T10:59:35Z"
- content="""
-In case you came here looking for the URL backend.
-
-## The URL backend
-
-Several documents on the web refer to a special \"URL backend\", e.g. [Large file management with git-annex [LWN.net]](http://lwn.net/Articles/419241/).  Historical content will never be updated yet it drives people to living places.
-
-## Why a URL backend ?
-
-It is interesting because you can:
-
-* let `git-annex` rest on the fact that some documents are available as extra copies available at any time (but from something that is not a git repository).
-* track these documents like your own with all git features, which opens up some truly marvelous combinations, which this margin is too narrow to contain (Pierre d.F. wouldn't disapprove ;-).
-
-## How/Where now ?
-
-`git-annex` used to have a URL backend. It seems that the design changed into a \"special remote\" feature, not limited to the web. You can now track files available through plain directories, rsync, webdav, some cloud storage, etc, even clay tablets. For details see [[special remotes]].
-
-"""]]
diff --git a/doc/backends/comment_3_fdcbf8727fdefb9942a54689234b9698._comment b/doc/backends/comment_3_fdcbf8727fdefb9942a54689234b9698._comment
deleted file mode 100644
--- a/doc/backends/comment_3_fdcbf8727fdefb9942a54689234b9698._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmicVKRM8vJX4wPuAwlLEoS2cjmFXQkjkE"
- nickname="Thomas"
- subject="Please be more specific about what information goes into the key"
- date="2013-07-31T11:55:09Z"
- content="""
-It's a bit confusing to read that SHA256 does not include the file extension from which I can deduct that SHA256E does include it. What else does it include? I used to \"seed\" my git-annex with localy available data by \"git-annex add\"-ing it in a temporary folder without doing a commit and than to initiate a copy from the slow remote annex repo. My theory was that remote copy sees the pre-seeded files and does not need to copy them again.
-
-But does this theory hold true for different file names, extensions, modification date, full path? Maybe you could also link to the code that implements the different backends so that curious readers can check for themselves.
-
-Thank you!
-"""]]
diff --git a/doc/backends/comment_4_46591a3ba888fb686b1b319b80ca2c22._comment b/doc/backends/comment_4_46591a3ba888fb686b1b319b80ca2c22._comment
deleted file mode 100644
--- a/doc/backends/comment_4_46591a3ba888fb686b1b319b80ca2c22._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmTho3mActvetF1iQdmui6gH1t6WE6c284"
- nickname="Michael"
- subject="SHA256e"
- date="2013-10-30T02:00:45Z"
- content="""
-I'd really like to have a SHA256e backend -- same as SHA256E but making sure that extensions of the files in .git/annex are converted to lower case.  I normally try to convert filenames from cameras etc to lower case, but not all people that I share annex with do so consistently.
-In my use case, I need to be able to find duplicates among files and .jpg vs .JPG throws git annex dedup off.  Otherwise E backends are superior to non-E for me.  Thanks, Michael.
-"""]]
diff --git a/doc/backends/comment_5_2210c7ff2d5812fb3b778ac172291656._comment b/doc/backends/comment_5_2210c7ff2d5812fb3b778ac172291656._comment
deleted file mode 100644
--- a/doc/backends/comment_5_2210c7ff2d5812fb3b778ac172291656._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmWBvsZvSsAL8P2ye3F0OBStjFCVnOImzM"
- nickname="Jarno"
- subject="Non-E backend drawbacks?"
- date="2013-10-30T21:25:00Z"
- content="""
-The page states \"[non-E backends] can confuse some programs\". I like the ideal simplicity and recoverability of pure checksum backends but \"confusion\" sounds a bit worrying. Any practical examples of these problems to help me choose?
-"""]]
diff --git a/doc/backends/comment_6_82f239b58680a2681bd8074c7ef9584d._comment b/doc/backends/comment_6_82f239b58680a2681bd8074c7ef9584d._comment
deleted file mode 100644
--- a/doc/backends/comment_6_82f239b58680a2681bd8074c7ef9584d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.47"
- subject="comment 6"
- date="2013-11-01T15:47:26Z"
- content="""
-Some examples of problems with the raw SHA backends include, IIRC, calibre, and many programs on OSX. These programs look at the extension of the filename the symlink points at.
-"""]]
diff --git a/doc/backends/comment_7_4aa8cfaec1090f79fed530720e4ddad4._comment b/doc/backends/comment_7_4aa8cfaec1090f79fed530720e4ddad4._comment
deleted file mode 100644
--- a/doc/backends/comment_7_4aa8cfaec1090f79fed530720e4ddad4._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmraN_ldJplGunVGmnjjLN6jL9s9TrVMGE"
- nickname="Ævar Arnfjörð"
- subject="Can annex use existing backends when amending existing files?"
- date="2014-08-05T21:35:34Z"
- content="""
-Related to the question posed in http://git-annex.branchable.com/forum/switching_backends/ can git annex be told to use the existing backend for a given file?
-
-The use case for this is that you have an existing repo that started out e.g. with SHA256, but new files are being added with SHA256E since that's the default now.
-
-But I was doing:
-
-    git annex edit .
-    rsync /some/old/copy/ .
-    git annex add .
-
-And was expecting it to show no changes for existing files, but it did, it would be nice if that was not the case.
-"""]]
diff --git a/doc/backends/comment_8_c40d2c2c929ad3239ee5d529e307c746._comment b/doc/backends/comment_8_c40d2c2c929ad3239ee5d529e307c746._comment
deleted file mode 100644
--- a/doc/backends/comment_8_c40d2c2c929ad3239ee5d529e307c746._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.7"
- subject="comment 8"
- date="2014-08-12T18:00:46Z"
- content="""
-Ævar, you can use `git annex add --backend=SHA256` to temporarily override the backend.
-"""]]
diff --git a/doc/backends/comment_9_5bef7f76f5e5b73a8e404fe6172b4368._comment b/doc/backends/comment_9_5bef7f76f5e5b73a8e404fe6172b4368._comment
deleted file mode 100644
--- a/doc/backends/comment_9_5bef7f76f5e5b73a8e404fe6172b4368._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm_YXzEdPHzbSGVwtmTR7g1BqDtTnIBB5s"
- nickname="Matthias"
- subject="Over-long pathnames?"
- date="2015-01-06T09:41:03Z"
- content="""
-the SHA* backends generate too-complicated paths:
-
-lrwxrwxrwx 1 root root 193 Apr 22  2009 test.ogg -> ../../../.git/annex/objects/fX/pz/SHA256-s71983--4a55ff578b4c592c06a1f4d9e0f8a6949ea9961d9717fc22e7b3c412620ac890/SHA256-s71983--4a55ff578b4c592c06a1f4d9e0f8a6949ea9961d9717fc22e7b3c412620ac890
-
-I don't want the additional directory. What is it for?? It contains exactly one file and adds a couple of disk seeks to file lookup.
-"""]]
diff --git a/doc/bare_repositories.mdwn b/doc/bare_repositories.mdwn
deleted file mode 100644
--- a/doc/bare_repositories.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-Due to popular demand, git-annex can now be used with bare repositories.
-
-So, for example, you can stash a file away in the origin:
-`git annex move mybigfile --to origin`
-
-Of course, for that to work, the bare repository has to be on a system with
-[[git-annex-shell]] installed. If "origin" is on GitWeb, you still can't
-use git-annex to store stuff there.
-
-It took a while, but bare repositories are now supported exactly as well
-as non-bare repositories. Except for these caveats:
-
-* `git annex fsck` works in a bare repository, but does not display
-  warnings about insufficient
-  [[copies]]. To get those warnings, just run it in one of the non-bare
-  checkouts.
-* `git annex unused` in a bare repository only knows about keys used in
-  branches that have been pushed to the bare repository. So use it with care..
-* Commands that need a work tree, like `git annex add` won't work in a bare
-  repository, of course.
-* However, you can (with recent versions of git-annex) run `git annex copy`,
-  `git annex get`, and `git annex move` in a bare repository. These behave
-  as if the `--all` option were used, and just operate on every single
-  version of every single file that is present in the git repository
-  history.
-
-***
-
-Here is a quick example of how to set this up, using `origin` as the remote name, and assuming `~/annex` contains an annex:
-
-On the server:
-
-    git init --bare bare-annex.git
-    cd bare-annex.git && git annex init origin
-
-Now configure the remote and do the initial push:
-
-    cd ~/annex
-    git remote add origin example.com:bare-annex.git
-    git push origin master git-annex
-
-Now `git annex info` should show the configured bare remote. If it does not, you may have to pull from the remote first (older versions of `git-annex`)
-
-If you wish to configure git such that you can push/pull without arguments, set the upstream branch:
-
-    git branch master --set-upstream origin/master
-
-   
diff --git a/doc/bare_repositories/comment_1_148e1da70d37d311634a0309a4ff8dcd._comment b/doc/bare_repositories/comment_1_148e1da70d37d311634a0309a4ff8dcd._comment
deleted file mode 100644
--- a/doc/bare_repositories/comment_1_148e1da70d37d311634a0309a4ff8dcd._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmraN_ldJplGunVGmnjjLN6jL9s9TrVMGE"
- nickname="Ævar Arnfjörð"
- subject="How to convert bare repositories to non-bare"
- date="2012-11-11T20:14:44Z"
- content="""
-I made a repository bare and later wanted to convert it, this would have worked with just plain git:
-
-    cd bare-repo.git
-    mkdir .git
-    mv .??* * .git/
-    git config --unset core.bare
-    git reset --hard
-
-But because git-annex uses different hashing directories under bare repositories all the files in the repo will point to files you don't have. Here's how you can fix that up assuming you're using a backend that assigns unique hashes based on file content (e.g. the SHA256 backend):
-
-    mv .git/annex/objects from-bare-repo
-    git annex add from-bare-repo
-    git rm -f from-bare-repo
-
-
-"""]]
diff --git a/doc/bare_repositories/comment_2_c88216da0588562c851c2ceabbfebc0a._comment b/doc/bare_repositories/comment_2_c88216da0588562c851c2ceabbfebc0a._comment
deleted file mode 100644
--- a/doc/bare_repositories/comment_2_c88216da0588562c851c2ceabbfebc0a._comment
+++ /dev/null
@@ -1,28 +0,0 @@
-[[!comment format=mdwn
- username="https://openid.stackexchange.com/user/814e4910-8e9b-4fe5-83ef-ff863c1a7314"
- nickname="BehemothTheCat"
- subject="push fails"
- date="2015-02-14T00:11:40Z"
- content="""
-These instructions don't work for me, unfortunately.
-
-This step:
-
-    git push origin master git-annex
-
-results in:
-
-    To ssh://my.server.com/home/itz/git/annex.git
-     ! [rejected]        git-annex -> git-annex (non-fast-forward)
-    error: failed to push some refs to 'ssh://my.server.com/home/itz/git/annex.git'
-    hint: Updates were rejected because a pushed branch tip is behind its remote
-    hint: counterpart. Check out this branch and integrate the remote changes
-    hint: (e.g. 'git pull ...') before pushing again.
-    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
-
-Versions: git 1:1.9.1-1~bpo70+2 , git-annex 5.20141024~bpo70+1 (both packaged by Debian, same on local and remote)
-
-And yes, I did a pull on the master branch first.  Afraid to do anything
-with the git-annex branch without explicit instruction.
-
-"""]]
diff --git a/doc/bare_repositories/comment_3_26ba93bddb0cd1bb4e1799311f3ca750._comment b/doc/bare_repositories/comment_3_26ba93bddb0cd1bb4e1799311f3ca750._comment
deleted file mode 100644
--- a/doc/bare_repositories/comment_3_26ba93bddb0cd1bb4e1799311f3ca750._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 3"""
- date="2015-02-17T21:54:33Z"
- content="""
-Since the two repos git-annex branches have diverged, you need to run `git
-annex merge` to merge them before you can push that branch.
-
-Of course, `git annex sync` handles all that for you. It can be used
-against a bare repository as well as a non-bare.
-"""]]
diff --git a/doc/bare_repositories/comment_4_7cf6103709a7a2710686681a6f406214._comment b/doc/bare_repositories/comment_4_7cf6103709a7a2710686681a6f406214._comment
deleted file mode 100644
--- a/doc/bare_repositories/comment_4_7cf6103709a7a2710686681a6f406214._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/bBy7WkgQicYHIiiyj.Vm0TcMbxi2quzbPFef#6f9f7"
- nickname="Frederik Vanrenterghem"
- subject="Convert bare repository to normal"
- date="2015-05-19T09:17:15Z"
- content="""
-Just wondering what the right steps are to convert a bare repository to a normal one? The comment above from 2.5 years ago includes the creation of a .git directory, which actually already exists. Have things changed in the mean time?
-"""]]
diff --git a/doc/bare_repositories/comment_5_6328134497c0de6a088087fc9cb0e59e._comment b/doc/bare_repositories/comment_5_6328134497c0de6a088087fc9cb0e59e._comment
deleted file mode 100644
--- a/doc/bare_repositories/comment_5_6328134497c0de6a088087fc9cb0e59e._comment
+++ /dev/null
@@ -1,31 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- subject="comment 5"
- date="2015-05-19T12:18:05Z"
- content="""
-Well, no, i don't think they changed, unless i missed something: there
-shouldn't be a `.git` repository there.
-
-There are [various
-instructions](http://stackoverflow.com/questions/10637378/how-do-i-convert-a-bare-git-repository-into-a-normal-one-in-place)
-on how to do this online. They do seem to agree with the first comment
-above.
-
-Personnally, I would just `git clone` to a different repo and `git
-annex forget` the old one. Unless you have a very complex repository
-with a lot of files, this is simple enough... You could even use `git
-annex reinit` to recycle the previous uuid if that's a concern. So in
-short:
-
-   git clone repo.git repo
-   cd repo
-   git annex info --fast # find the UUID of repo.git
-   git annex move --from $UUID
-   git annex reinit $UUID
-
-Then `repo.git` can be removed if you are certain everything is
-correct in `repo`.
-
-Note that you may want to have backups of everything before you do
-anything, as usual.
-"""]]
diff --git a/doc/bare_repositories/comment_6_bf227861ec3cb2ea474c143218c68133._comment b/doc/bare_repositories/comment_6_bf227861ec3cb2ea474c143218c68133._comment
deleted file mode 100644
--- a/doc/bare_repositories/comment_6_bf227861ec3cb2ea474c143218c68133._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/bBy7WkgQicYHIiiyj.Vm0TcMbxi2quzbPFef#6f9f7"
- nickname="Frederik Vanrenterghem"
- subject="comment 6"
- date="2015-05-21T06:14:33Z"
- content="""
-Thanks Anarcat. I actually was dealing with a repository in direct mode, not bare mode. Only realised after today encountering one in bare mode, and reading [[internals]]. Your method worked too, but
-
-    git annex indirect 
-
-would have been quicker I guess.
-"""]]
diff --git a/doc/bugs.mdwn b/doc/bugs.mdwn
deleted file mode 100644
--- a/doc/bugs.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-This is git-annex's bug list. Closed bugs are moved to [[done]].
-
-[[!inline pages="./bugs/* and !./bugs/*/* and !./bugs/done and !link(done) 
-and !./bugs/moreinfo and !./bugs/confirmed and !./bugs/forwarded and !*/Discussion"
-actions=yes postform=yes postformtext="Report a new bug titled:" show=0 archive=yes template=buglist]]
-
-[[!edittemplate template=templates/bugtemplate match="bugs/*" silent=yes]]
diff --git a/doc/bugs/20151116_tests_fail_on_OS_X.mdwn b/doc/bugs/20151116_tests_fail_on_OS_X.mdwn
deleted file mode 100644
--- a/doc/bugs/20151116_tests_fail_on_OS_X.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Test output on OS X. Btw, the previous version works:
-
-```
-OK (4.87s)
-    map:                                            OK (0.33s)
-    uninit:                                         Deleted branch git-annex (was 9a28b38).
-OK (0.38s)
-    uninit (in git-annex branch):                   Switched to branch 'git-annex'
-OK (0.26s)
-    upgrade:                                        OK (0.21s)
-    whereis:                                        OK (0.61s)
-    hook remote:                                    OK (0.91s)
-    directory remote:                               OK (0.85s)
-    rsync remote:                                   OK (1.40s)
-    bup remote:                                     Reinitialized existing Git repository in /private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/.bup/
-Initialized empty Git repository in /private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/git-annex-5.20151116/.t/tmprepo0/dir/
-  content cannot be completely removed from bup remote
-OK (2.62s)
-    crypto:                                         OK (4.16s)
-    preferred content:                              OK (1.97s)
-    add subdirs:                                    Merge made by the 'recursive' strategy.
- conflictor.variant-cc12 | 1 +
- conflictor/subfile      | 1 +
- 2 files changed, 2 insertions(+)
- create mode 120000 conflictor.variant-cc12
- create mode 120000 conflictor/subfile
-To /private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/git-annex-5.20151116/.t/repo
-   e4d3d14..60148c4  git-annex -> synced/git-annex
-   efda76d..f76baae  master -> synced/master
-OK (0.55s)
-    addurl:                                         git-annex: .git/annex/objects/2Q/J8/SHA256E-s3--2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae/SHA256E-s3--2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae: createSymbolicLink: invalid argument (File name too long)
-FAIL (0.29s)
-      addurl failed on file:///private/var/folders/4j/br7bdhjx4b384_snb2087gt00000gn/T/nix-build-git-annex-5.20151116.drv-0/git-annex-5.20151116/.t/tmprepo0/myurl
-
-2 out of 150 tests failed (126.13s)
-  (This could be due to a bug in git-annex, or an incompatability
-   with utilities, such as git, installed on this system.)
-```
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/A_weird___34__.__34___repository_shows_up_when_switching.mdwn b/doc/bugs/A_weird___34__.__34___repository_shows_up_when_switching.mdwn
deleted file mode 100644
--- a/doc/bugs/A_weird___34__.__34___repository_shows_up_when_switching.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-### Please describe the problem.
-When switching between my 2 repositories I now see a "." repository, see screenshot: http://screencast.com/t/0wxugJ9P 
-If I chose to switch to it, I get this error: http://screencast.com/t/5mndGNlhh8oN
-
-### What steps will reproduce the problem?
-Not sure if this is a real bug, maybe I screwed up?
-
-### What version of git-annex are you using? On what operating system?
-Version: 5.20150929-g7010007 
-Build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA TorrentParser Database
-MAC OSX 10.10.5
-
-### 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
-there is nothing relevant to this error in there unfortunately.
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/Adding_torrent_via_addurl_fails.mdwn b/doc/bugs/Adding_torrent_via_addurl_fails.mdwn
deleted file mode 100644
--- a/doc/bugs/Adding_torrent_via_addurl_fails.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-[[!meta title="addurl failure with non-standard torrent file"]]
-
-### Please describe the problem.
-Adding a magnet link via addurl fails after downloading the torrent metatdata if the "announce" field of the torrent is empty
-
-### What steps will reproduce the problem?
-    git annex addurl "magnet:?xt=urn:btih:88066b90278f2de655ee2dd44e784c340b54e45c"
-
-
-### What version of git-annex are you using? On what operating system?
-git-annex version: 6.20160126
-archlinux
-
-### Please provide any additional information below.
-I have traced back the Problem to the parsing of the torrent metatdata.
-Since you also seem to be the author of the haskel-torrent parser I felt it is apropriate to post here.
-
-The above magnet link (an Archlinux Iso) results in a .torrent file that has no "announce" entry. Instead it only has the entry "announce-list" with multiple urls.
-This causes the parser to fail.
-I dont know if having only "announce-list" horribly violates some standard, however a second magnet link that i tried showed the same behaviour so this might not be an unusual case.
-
-I was able to put in a workarround in btshowmetainfo.py to set "annonuce" to the first entry from "announce-list" if it wasn't defined.
-My git-annex binary is compiled with the haskel parser enabled do this doesn't change annexs' behaviour.
-
-It's not a big dealbreaker for me, just playing arround with the torrent feaure for now.
-
-[[!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
-git annex addurl "magnet:?xt=urn:btih:88066b90278f2de655ee2dd44e784c340b54e45c"
-(downloading torrent file...) 
-
-02/07 16:42:13 [NOTICE] IPv4 DHT: listening on UDP port 6964
-
-02/07 16:42:13 [NOTICE] IPv4 BitTorrent: listening on TCP port 6927
-
-02/07 16:42:13 [NOTICE] IPv6 BitTorrent: listening on TCP port 6927
-[#96c5b2 27KiB/27KiB(100%) CN:11 SD:2]                            
-02/07 16:42:32 [NOTICE] Download complete: [METADATA]88066b90278f2de655ee2dd44e784c340b54e45c
-
-02/07 16:42:32 [NOTICE] Saved metadata as ../../.git/annex/misctmp/URL--magnet&c,63xt,61urn&cbtih&c88066b90278f2de655ee2dd44e784c340b54e45c/meta/88066b90278f2de655ee2dd44e784c340b54e45c.torrent.
-                                                                  
-Download Results:
-gid   |stat|avg speed  |path/URI
-======+====+===========+=======================================================
-96c5b2|OK  |       0B/s|[MEMORY][METADATA]88066b90278f2de655ee2dd44e784c340b54e45c
-
-Status Legend:
-(OK):download completed.
-git-annex: failed to parse torrent: Name not found in dictionary: announce
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
diff --git a/doc/bugs/Android_4.4_install_fails_with_permission_denied_errors.mdwn b/doc/bugs/Android_4.4_install_fails_with_permission_denied_errors.mdwn
deleted file mode 100644
--- a/doc/bugs/Android_4.4_install_fails_with_permission_denied_errors.mdwn
+++ /dev/null
@@ -1,295 +0,0 @@
-### Please describe the problem.
-
-Installing git-annex on a new Nexus 5 with Android 4.4.4 using [Android 4.4 and 4.3 git-annex.apk](http://downloads.kitenet.net/git-annex/android/current/4.3/git-annex.apk) does not give me a working git-annex environment. It seems permission is denied to install many of the app files.
-
-
-### What steps will reproduce the problem?
-
-1. Install git-annex
-2. From within `adb shell`, run: `/data/data/ga.androidterm/runshell`
-3. Try one of the included programs, e.g., `git`
-
-
-### What version of git-annex are you using? On what operating system?
-
-The current (as of 2014-08-30) git-annex for Android 4.3 and up on Android 4.4.4.
-
-
-### Please provide any additional information below.
-
-Running `/data/data/ga.androidterm/runshell` from `adb shell` gives me:
-
-[[!format txt """
-shell@hammerhead:/ $ /data/data/ga.androidterm/runshell                        
-Falling back to hardcoded app location; cannot find expected files in /data/app-lib
-shell@hammerhead:/sdcard/git-annex.home $ ls
-git-annex-install.log
-shell@hammerhead:/sdcard/git-annex.home $ cat git-annex-install.log
-Installation starting to /data/data/ga.androidterm
-71c22504d777380dd59d2128b97715fde9ef6bec
-mv: can't rename '/data/data/ga.androidterm/bin': Permission denied
-installing busybox
-ln: /data/data/ga.androidterm/bin/busybox: Permission denied
-installing git-annex
-ln: /data/data/ga.androidterm/bin/git-annex: Permission denied
-installing git-shell
-ln: /data/data/ga.androidterm/bin/git-shell: Permission denied
-installing git-upload-pack
-ln: /data/data/ga.androidterm/bin/git-upload-pack: Permission denied
-installing git
-ln: /data/data/ga.androidterm/bin/git: Permission denied
-installing gpg
-ln: /data/data/ga.androidterm/bin/gpg: Permission denied
-installing rsync
-ln: /data/data/ga.androidterm/bin/rsync: Permission denied
-installing ssh
-ln: /data/data/ga.androidterm/bin/ssh: Permission denied
-installing ssh-keygen
-ln: /data/data/ga.androidterm/bin/ssh-keygen: Permission denied
-busybox: /data/data/ga.androidterm/bin/[: Permission denied
-busybox: /data/data/ga.androidterm/bin/[[: Permission denied
-busybox: /data/data/ga.androidterm/bin/ar: Permission denied
-busybox: /data/data/ga.androidterm/bin/arp: Permission denied
-busybox: /data/data/ga.androidterm/bin/ash: Permission denied
-busybox: /data/data/ga.androidterm/bin/base64: Permission denied
-busybox: /data/data/ga.androidterm/bin/basename: Permission denied
-busybox: /data/data/ga.androidterm/bin/beep: Permission denied
-busybox: /data/data/ga.androidterm/bin/blkid: Permission denied
-busybox: /data/data/ga.androidterm/bin/blockdev: Permission denied
-busybox: /data/data/ga.androidterm/bin/bunzip2: Permission denied
-busybox: /data/data/ga.androidterm/bin/bzcat: Permission denied
-busybox: /data/data/ga.androidterm/bin/bzip2: Permission denied
-busybox: /data/data/ga.androidterm/bin/cal: Permission denied
-busybox: /data/data/ga.androidterm/bin/cat: Permission denied
-busybox: /data/data/ga.androidterm/bin/catv: Permission denied
-busybox: /data/data/ga.androidterm/bin/chat: Permission denied
-busybox: /data/data/ga.androidterm/bin/chattr: Permission denied
-busybox: /data/data/ga.androidterm/bin/chgrp: Permission denied
-busybox: /data/data/ga.androidterm/bin/chmod: Permission denied
-busybox: /data/data/ga.androidterm/bin/chown: Permission denied
-busybox: /data/data/ga.androidterm/bin/chpst: Permission denied
-busybox: /data/data/ga.androidterm/bin/chroot: Permission denied
-busybox: /data/data/ga.androidterm/bin/chrt: Permission denied
-busybox: /data/data/ga.androidterm/bin/chvt: Permission denied
-busybox: /data/data/ga.androidterm/bin/cksum: Permission denied
-busybox: /data/data/ga.androidterm/bin/clear: Permission denied
-busybox: /data/data/ga.androidterm/bin/cmp: Permission denied
-busybox: /data/data/ga.androidterm/bin/comm: Permission denied
-busybox: /data/data/ga.androidterm/bin/cp: Permission denied
-busybox: /data/data/ga.androidterm/bin/cpio: Permission denied
-busybox: /data/data/ga.androidterm/bin/cttyhack: Permission denied
-busybox: /data/data/ga.androidterm/bin/cut: Permission denied
-busybox: /data/data/ga.androidterm/bin/dc: Permission denied
-busybox: /data/data/ga.androidterm/bin/dd: Permission denied
-busybox: /data/data/ga.androidterm/bin/deallocvt: Permission denied
-busybox: /data/data/ga.androidterm/bin/devmem: Permission denied
-busybox: /data/data/ga.androidterm/bin/diff: Permission denied
-busybox: /data/data/ga.androidterm/bin/dirname: Permission denied
-busybox: /data/data/ga.androidterm/bin/dmesg: Permission denied
-busybox: /data/data/ga.androidterm/bin/dnsd: Permission denied
-busybox: /data/data/ga.androidterm/bin/dos2unix: Permission denied
-busybox: /data/data/ga.androidterm/bin/dpkg: Permission denied
-busybox: /data/data/ga.androidterm/bin/dpkg-deb: Permission denied
-busybox: /data/data/ga.androidterm/bin/du: Permission denied
-busybox: /data/data/ga.androidterm/bin/dumpkmap: Permission denied
-busybox: /data/data/ga.androidterm/bin/echo: Permission denied
-busybox: /data/data/ga.androidterm/bin/envdir: Permission denied
-busybox: /data/data/ga.androidterm/bin/envuidgid: Permission denied
-busybox: /data/data/ga.androidterm/bin/expand: Permission denied
-busybox: /data/data/ga.androidterm/bin/fakeidentd: Permission denied
-busybox: /data/data/ga.androidterm/bin/false: Permission denied
-busybox: /data/data/ga.androidterm/bin/fbset: Permission denied
-busybox: /data/data/ga.androidterm/bin/fbsplash: Permission denied
-busybox: /data/data/ga.androidterm/bin/fdflush: Permission denied
-busybox: /data/data/ga.androidterm/bin/fdformat: Permission denied
-busybox: /data/data/ga.androidterm/bin/fdisk: Permission denied
-busybox: /data/data/ga.androidterm/bin/fgconsole: Permission denied
-busybox: /data/data/ga.androidterm/bin/find: Permission denied
-busybox: /data/data/ga.androidterm/bin/findfs: Permission denied
-busybox: /data/data/ga.androidterm/bin/flash_lock: Permission denied
-busybox: /data/data/ga.androidterm/bin/flash_unlock: Permission denied
-busybox: /data/data/ga.androidterm/bin/flashcp: Permission denied
-busybox: /data/data/ga.androidterm/bin/flock: Permission denied
-busybox: /data/data/ga.androidterm/bin/fold: Permission denied
-busybox: /data/data/ga.androidterm/bin/freeramdisk: Permission denied
-busybox: /data/data/ga.androidterm/bin/ftpd: Permission denied
-busybox: /data/data/ga.androidterm/bin/ftpget: Permission denied
-busybox: /data/data/ga.androidterm/bin/ftpput: Permission denied
-busybox: /data/data/ga.androidterm/bin/fuser: Permission denied
-busybox: /data/data/ga.androidterm/bin/getopt: Permission denied
-busybox: /data/data/ga.androidterm/bin/grep: Permission denied
-busybox: /data/data/ga.androidterm/bin/gunzip: Permission denied
-busybox: /data/data/ga.androidterm/bin/gzip: Permission denied
-busybox: /data/data/ga.androidterm/bin/hd: Permission denied
-busybox: /data/data/ga.androidterm/bin/hdparm: Permission denied
-busybox: /data/data/ga.androidterm/bin/head: Permission denied
-busybox: /data/data/ga.androidterm/bin/hexdump: Permission denied
-busybox: /data/data/ga.androidterm/bin/httpd: Permission denied
-busybox: /data/data/ga.androidterm/bin/ifconfig: Permission denied
-busybox: /data/data/ga.androidterm/bin/ifdown: Permission denied
-busybox: /data/data/ga.androidterm/bin/ifup: Permission denied
-busybox: /data/data/ga.androidterm/bin/inotifyd: Permission denied
-busybox: /data/data/ga.androidterm/bin/install: Permission denied
-busybox: /data/data/ga.androidterm/bin/iostat: Permission denied
-busybox: /data/data/ga.androidterm/bin/ip: Permission denied
-busybox: /data/data/ga.androidterm/bin/ipaddr: Permission denied
-busybox: /data/data/ga.androidterm/bin/ipcalc: Permission denied
-busybox: /data/data/ga.androidterm/bin/iplink: Permission denied
-busybox: /data/data/ga.androidterm/bin/iproute: Permission denied
-busybox: /data/data/ga.androidterm/bin/iprule: Permission denied
-busybox: /data/data/ga.androidterm/bin/iptunnel: Permission denied
-busybox: /data/data/ga.androidterm/bin/klogd: Permission denied
-busybox: /data/data/ga.androidterm/bin/ln: Permission denied
-busybox: /data/data/ga.androidterm/bin/loadkmap: Permission denied
-busybox: /data/data/ga.androidterm/bin/losetup: Permission denied
-busybox: /data/data/ga.androidterm/bin/lpd: Permission denied
-busybox: /data/data/ga.androidterm/bin/lpq: Permission denied
-busybox: /data/data/ga.androidterm/bin/lpr: Permission denied
-busybox: /data/data/ga.androidterm/bin/ls: Permission denied
-busybox: /data/data/ga.androidterm/bin/lsattr: Permission denied
-busybox: /data/data/ga.androidterm/bin/lsof: Permission denied
-busybox: /data/data/ga.androidterm/bin/lspci: Permission denied
-busybox: /data/data/ga.androidterm/bin/lsusb: Permission denied
-busybox: /data/data/ga.androidterm/bin/lzcat: Permission denied
-busybox: /data/data/ga.androidterm/bin/lzma: Permission denied
-busybox: /data/data/ga.androidterm/bin/lzop: Permission denied
-busybox: /data/data/ga.androidterm/bin/lzopcat: Permission denied
-busybox: /data/data/ga.androidterm/bin/makedevs: Permission denied
-busybox: /data/data/ga.androidterm/bin/makemime: Permission denied
-busybox: /data/data/ga.androidterm/bin/man: Permission denied
-busybox: /data/data/ga.androidterm/bin/md5sum: Permission denied
-busybox: /data/data/ga.androidterm/bin/mkdir: Permission denied
-busybox: /data/data/ga.androidterm/bin/mkfifo: Permission denied
-busybox: /data/data/ga.androidterm/bin/mknod: Permission denied
-busybox: /data/data/ga.androidterm/bin/mkswap: Permission denied
-busybox: /data/data/ga.androidterm/bin/mktemp: Permission denied
-busybox: /data/data/ga.androidterm/bin/more: Permission denied
-busybox: /data/data/ga.androidterm/bin/mpstat: Permission denied
-busybox: /data/data/ga.androidterm/bin/mv: Permission denied
-busybox: /data/data/ga.androidterm/bin/nbd-client: Permission denied
-busybox: /data/data/ga.androidterm/bin/nc: Permission denied
-busybox: /data/data/ga.androidterm/bin/netstat: Permission denied
-busybox: /data/data/ga.androidterm/bin/nice: Permission denied
-busybox: /data/data/ga.androidterm/bin/nmeter: Permission denied
-busybox: /data/data/ga.androidterm/bin/nohup: Permission denied
-busybox: /data/data/ga.androidterm/bin/od: Permission denied
-busybox: /data/data/ga.androidterm/bin/openvt: Permission denied
-busybox: /data/data/ga.androidterm/bin/patch: Permission denied
-busybox: /data/data/ga.androidterm/bin/pidof: Permission denied
-busybox: /data/data/ga.androidterm/bin/pipe_progress: Permission denied
-busybox: /data/data/ga.androidterm/bin/pmap: Permission denied
-busybox: /data/data/ga.androidterm/bin/popmaildir: Permission denied
-busybox: /data/data/ga.androidterm/bin/printenv: Permission denied
-busybox: /data/data/ga.androidterm/bin/printf: Permission denied
-busybox: /data/data/ga.androidterm/bin/pscan: Permission denied
-busybox: /data/data/ga.androidterm/bin/pstree: Permission denied
-busybox: /data/data/ga.androidterm/bin/pwd: Permission denied
-busybox: /data/data/ga.androidterm/bin/pwdx: Permission denied
-busybox: /data/data/ga.androidterm/bin/raidautorun: Permission denied
-busybox: /data/data/ga.androidterm/bin/rdev: Permission denied
-busybox: /data/data/ga.androidterm/bin/readlink: Permission denied
-busybox: /data/data/ga.androidterm/bin/readprofile: Permission denied
-busybox: /data/data/ga.androidterm/bin/realpath: Permission denied
-busybox: /data/data/ga.androidterm/bin/reformime: Permission denied
-busybox: /data/data/ga.androidterm/bin/renice: Permission denied
-busybox: /data/data/ga.androidterm/bin/reset: Permission denied
-busybox: /data/data/ga.androidterm/bin/resize: Permission denied
-busybox: /data/data/ga.androidterm/bin/rev: Permission denied
-busybox: /data/data/ga.androidterm/bin/rm: Permission denied
-busybox: /data/data/ga.androidterm/bin/rmdir: Permission denied
-busybox: /data/data/ga.androidterm/bin/route: Permission denied
-busybox: /data/data/ga.androidterm/bin/rpm: Permission denied
-busybox: /data/data/ga.androidterm/bin/rpm2cpio: Permission denied
-busybox: /data/data/ga.androidterm/bin/rtcwake: Permission denied
-busybox: /data/data/ga.androidterm/bin/run-parts: Permission denied
-busybox: /data/data/ga.androidterm/bin/runsv: Permission denied
-busybox: /data/data/ga.androidterm/bin/runsvdir: Permission denied
-busybox: /data/data/ga.androidterm/bin/rx: Permission denied
-busybox: /data/data/ga.androidterm/bin/script: Permission denied
-busybox: /data/data/ga.androidterm/bin/scriptreplay: Permission denied
-busybox: /data/data/ga.androidterm/bin/sed: Permission denied
-busybox: /data/data/ga.androidterm/bin/sendmail: Permission denied
-busybox: /data/data/ga.androidterm/bin/seq: Permission denied
-busybox: /data/data/ga.androidterm/bin/setconsole: Permission denied
-busybox: /data/data/ga.androidterm/bin/setkeycodes: Permission denied
-busybox: /data/data/ga.androidterm/bin/setlogcons: Permission denied
-busybox: /data/data/ga.androidterm/bin/setserial: Permission denied
-busybox: /data/data/ga.androidterm/bin/setsid: Permission denied
-busybox: /data/data/ga.androidterm/bin/setuidgid: Permission denied
-busybox: /data/data/ga.androidterm/bin/sh: Permission denied
-busybox: /data/data/ga.androidterm/bin/sha1sum: Permission denied
-busybox: /data/data/ga.androidterm/bin/sha256sum: Permission denied
-busybox: /data/data/ga.androidterm/bin/sha512sum: Permission denied
-busybox: /data/data/ga.androidterm/bin/showkey: Permission denied
-busybox: /data/data/ga.androidterm/bin/sleep: Permission denied
-busybox: /data/data/ga.androidterm/bin/smemcap: Permission denied
-busybox: /data/data/ga.androidterm/bin/softlimit: Permission denied
-busybox: /data/data/ga.androidterm/bin/sort: Permission denied
-busybox: /data/data/ga.androidterm/bin/split: Permission denied
-busybox: /data/data/ga.androidterm/bin/start-stop-daemon: Permission denied
-busybox: /data/data/ga.androidterm/bin/strings: Permission denied
-busybox: /data/data/ga.androidterm/bin/stty: Permission denied
-busybox: /data/data/ga.androidterm/bin/sum: Permission denied
-busybox: /data/data/ga.androidterm/bin/sv: Permission denied
-busybox: /data/data/ga.androidterm/bin/svlogd: Permission denied
-busybox: /data/data/ga.androidterm/bin/sync: Permission denied
-busybox: /data/data/ga.androidterm/bin/sysctl: Permission denied
-busybox: /data/data/ga.androidterm/bin/tac: Permission denied
-busybox: /data/data/ga.androidterm/bin/tail: Permission denied
-busybox: /data/data/ga.androidterm/bin/tar: Permission denied
-busybox: /data/data/ga.androidterm/bin/tcpsvd: Permission denied
-busybox: /data/data/ga.androidterm/bin/tee: Permission denied
-busybox: /data/data/ga.androidterm/bin/test: Permission denied
-busybox: /data/data/ga.androidterm/bin/time: Permission denied
-busybox: /data/data/ga.androidterm/bin/timeout: Permission denied
-busybox: /data/data/ga.androidterm/bin/top: Permission denied
-busybox: /data/data/ga.androidterm/bin/touch: Permission denied
-busybox: /data/data/ga.androidterm/bin/tr: Permission denied
-busybox: /data/data/ga.androidterm/bin/true: Permission denied
-busybox: /data/data/ga.androidterm/bin/ttysize: Permission denied
-busybox: /data/data/ga.androidterm/bin/tunctl: Permission denied
-busybox: /data/data/ga.androidterm/bin/tune2fs: Permission denied
-busybox: /data/data/ga.androidterm/bin/udhcpc: Permission denied
-busybox: /data/data/ga.androidterm/bin/uname: Permission denied
-busybox: /data/data/ga.androidterm/bin/uncompress: Permission denied
-busybox: /data/data/ga.androidterm/bin/unexpand: Permission denied
-busybox: /data/data/ga.androidterm/bin/uniq: Permission denied
-busybox: /data/data/ga.androidterm/bin/unix2dos: Permission denied
-busybox: /data/data/ga.androidterm/bin/unlzma: Permission denied
-busybox: /data/data/ga.androidterm/bin/unlzop: Permission denied
-busybox: /data/data/ga.androidterm/bin/unxz: Permission denied
-busybox: /data/data/ga.androidterm/bin/unzip: Permission denied
-busybox: /data/data/ga.androidterm/bin/uudecode: Permission denied
-busybox: /data/data/ga.androidterm/bin/uuencode: Permission denied
-busybox: /data/data/ga.androidterm/bin/vi: Permission denied
-busybox: /data/data/ga.androidterm/bin/volname: Permission denied
-busybox: /data/data/ga.androidterm/bin/watch: Permission denied
-busybox: /data/data/ga.androidterm/bin/wc: Permission denied
-busybox: /data/data/ga.androidterm/bin/wget: Permission denied
-busybox: /data/data/ga.androidterm/bin/which: Permission denied
-busybox: /data/data/ga.androidterm/bin/whoami: Permission denied
-busybox: /data/data/ga.androidterm/bin/whois: Permission denied
-busybox: /data/data/ga.androidterm/bin/xargs: Permission denied
-busybox: /data/data/ga.androidterm/bin/xz: Permission denied
-busybox: /data/data/ga.androidterm/bin/xzcat: Permission denied
-busybox: /data/data/ga.androidterm/bin/yes: Permission denied
-busybox: /data/data/ga.androidterm/bin/zcat: Permission denied
-tar: can't remove old file ./links/git-shell: Permission denied
-cat: can't open '/data/data/ga.androidterm/links/git': Permission denied
-rm: can't stat '/data/data/ga.androidterm/links/git': Permission denied
-cat: can't open '/data/data/ga.androidterm/links/git-shell': Permission denied
-rm: can't stat '/data/data/ga.androidterm/links/git-shell': Permission denied
-cat: can't open '/data/data/ga.androidterm/links/git-upload-pack': Permission denied
-rm: can't stat '/data/data/ga.androidterm/links/git-upload-pack': Permission denied
-lib/lib.runshell.so: line 133: can't create /data/data/ga.androidterm/runshell: Permission denied
-lib/lib.runshell.so: line 133: can't create /data/data/ga.androidterm/runshell: Permission denied
-chmod: runshell: Operation not permitted
-lib/lib.runshell.so: line 133: can't create /data/data/ga.androidterm/bin/trustedkeys.gpg: Permission denied
-lib/lib.runshell.so: line 133: can't create /data/data/ga.androidterm/installed-version: Permission denied
-Installation complete
-tar: write: Broken pipe
-shell@hammerhead:/sdcard/git-annex.home $ ^D
-shell@hammerhead:/ $
-"""]]
-
-Android is new to me, so it's possible I'm doing something utterly wrong.
diff --git a/doc/bugs/Android_6.0_compatibility.mdwn b/doc/bugs/Android_6.0_compatibility.mdwn
deleted file mode 100644
--- a/doc/bugs/Android_6.0_compatibility.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-### Please describe the problem.
-Git-annex appears to be incompatible with Android 6. I downloaded the APK for Android 5 and tried installing it on a Nexus 5X running Android 6.0.1. The biggest issue is that pushing and pulling to SSH remotes fails with a "Permission denied" error from muxserver_listen() in OpenSSH. There are some other warnings and errors, listed below, would you like me to file separate bugs for each or track everything here?
-
-- The full error from ssh is "muxserver_listen: link mux listener /data/data/ga.androidterm/tmp/ssh/annex-user@192.168.0.3.Jg42jDbmIRBdbjDZ => /data/data/ga.androidterm/tmp/ssh/annex-user@192.168.0.3: Permission denied". Immediately after that there is an error message, presumably from git, that reads "fatal: Could not read from remote repository." I am able to SSH to the server from the app's command line, and get an interactive shell. I can successfully run 'git fetch `git remote`', but `git annex sync` runs into this issue.
-- When switching between two repositories in the webapp, the page never loads after clicking on a repository. After trying the link a few times, I can see "git-annex: Daemon is already running." through the webapp's log viewer. However, if I stop the daemon through the webapp and start it again, then the webapp will indicate that I successfully switched to the other repository.
-- There is a warning message in the console that reads, "WARNING: linker: git-annex has text relocations. This is wasting memory and prevents security hardening. Please fix." It appears that apps targeting SDK version 23 are not allowed to use text relocations, while apps targeting lower versions just get this warning. See http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-runtime
-- There is a warning message at the top of every new terminal that says "Falling back to hardcoded app location; cannot find expected files in /data/app/ga.androidterm-1/lib". This issue doesn't appear to affect anything, but I thought I'd mention it for completeness.
-- At various times during syncing, "\_\_bionic_open_tzdata_path: ANDROID_DATA not set!" and "\_\_bionic_open_tzdata_path: ANDROID_ROOT not set!" show up in the log.
-
-### What steps will reproduce the problem?
-1. Install Android 5.0 APK on Android 6.0 phone
-2. Create a repository
-3. Add an SSH remote
-
-### What version of git-annex are you using? On what operating system?
-5.20151217-g7b73f34 on Android 6.0.1
-
-### Please provide any additional information below.
-[[!format sh """
-muxserver_listen: link mux listener /data/data/ga.androidterm/tmp/ssh/annex-user@192.168.0.3.ZUzI2MBl8k0qt2pg => /data/data/ga.androidterm/tmp/ssh/annex-user@192.168.0.3: Permission denied
-"""]]
-
-If I look in this temporary directory after the fact, I see the following.
-
-[[!format sh """
-> ls -l /data/data/ga.androidterm/tmp/ssh
--rw-------    1 u0_a108  u0_a108      0 Dec 24 10:06 annex-user@192.168.0.3.lock
-"""]]
-
-I suppose since the socket is a Unix domain socket, it gets destroyed when the process stops, so it shouldn't be surprising there's nothing else in that directory.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-Not yet, but I'm excited to make it work!
diff --git a/doc/bugs/Android_CM_5.1_ANDROID__95__ROOT_not_set.mdwn b/doc/bugs/Android_CM_5.1_ANDROID__95__ROOT_not_set.mdwn
deleted file mode 100644
--- a/doc/bugs/Android_CM_5.1_ANDROID__95__ROOT_not_set.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-### Please describe the problem.
-
-Downloaded git-annex (version for android 5.0) from the website. Upon opening the app for the first time and setting up a repository at /sdcard/annex, the terminal gave out the error.
-
-### What version of git-annex are you using? On what operating system?
-
-Nexus 4 running Cyanogenmod 12.1 (Android 5.1) build 20151007 and 20150901
-
-### Please provide any additional information below.
-Output to the terminal window:
-[[!format sh """
-WARNING: linker: git-annex has text relocations. This is wating memory and prevents security hardening. Please fix.
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-
-Detected a filesystem without fifo support.
-
-Disabling ssh connection caching.
-
-Detected a crippled filesystem.
-
-Enabling direct mode.
-fatal: ../../../../sdcard/annex: '../../../../sdcard/annex' is outside of repository
-(recording state in git...)
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-__bionic_open_tzdata_path: ANDROID_ROOT not set!
-"""]]
-I can add remote repositories and they show up nicely in the webapp, but no files are ever downloaded.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I have a couple of repositories atm, one with my music, another that backs up our family pictures for the family and uses Amazon S3 as a backup.
diff --git a/doc/bugs/Android__58___500___47__etc__47__resolv.conf_does_not_exist.mdwn b/doc/bugs/Android__58___500___47__etc__47__resolv.conf_does_not_exist.mdwn
deleted file mode 100644
--- a/doc/bugs/Android__58___500___47__etc__47__resolv.conf_does_not_exist.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-### Please describe the problem.
-
-When entering Jabber account data, the assistant responds with:
-
-    Internal Server Error: /etc/resolv.conf does not exist (No such file or directory).
-
-### What steps will reproduce the problem?
-
-Get a jabber account at http://jit.si. Enter your jabber name and password on Android assistant, and click "Use This Account". The dark overlay and progress message appears. After about 30 seconds the browser forwards to the "Internal Server Error: /etc/resolv.conf does not exist (No such file or directory)" page.
-
-### What version of git-annex are you using? On what operating system?
-
-Android 4.2 on Lenovo 780p. This model is only for sale in China and India and has been rooted, but the original ROM is still on. Often this makes no difference but you might want to confirm with another device.
-
-git-annex version 5.20131127-g736ce5e
-
-### 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.
-"""]]
-
-> [[fixed|done]] --[[Joey]] 
diff --git a/doc/bugs/Android__58___Cannot_create_repo_on_external_sd_card.mdwn b/doc/bugs/Android__58___Cannot_create_repo_on_external_sd_card.mdwn
deleted file mode 100644
--- a/doc/bugs/Android__58___Cannot_create_repo_on_external_sd_card.mdwn
+++ /dev/null
@@ -1,62 +0,0 @@
-I am using the latest daily build for Android 5.0
-
-My version is Android 5.0.1 Lollipop. And I'm using a Samsung Galaxy S4 unrooted.
-
-Trying to create a repositpory in the folder /storage/extSdCard/Music gives me a webpage with a red error badge that says:
-
-    "Internal Server Error"
-    
-    git init failed
-
-    Output:
-    /storage/extSdCard/Music/.git: Permission denied
-
-I'm pretty sure this is because of Android's crappy permission system on sd cards. But when I install the app, it tells me it is asking for
-read write access to the sd card. So this consideration must have happened.
-
-
-
-### Please describe the problem.
-
-I am using the latest daily build for Android 5.0
-
-My version is Android 5.0.1 Lollipop. And I'm using a Samsung Galaxy S4 unrooted.
-
-Trying to create a repositpory in the folder /storage/extSdCard/Music gives me a webpage with a red error badge that says:
-
-    "Internal Server Error"
-    
-    git init failed
-
-    Output:
-    /storage/extSdCard/Music/.git: Permission denied
-
-I'm pretty sure this is because of Android's crappy permission system on sd cards. But when I install the app, it tells me it is asking for
-read write access to the sd card. So this consideration must have happened.
-
-### What steps will reproduce the problem?
-
-1. Install the Android 5.0 daily build on an Android 5.0.1 phone.
-2. Try to create a repo on an external sd card.
-
-### What version of git-annex are you using? On what operating system?
-
-Latest daily build of Android 5.0 git annex on Android 5.0.1
-
-### Please provide any additional information below.
-
-When I run adb shell I see the following permissions on the file in question:
-
-    drwxrwx--- root     sdcard_r          2016-04-02 14:11 Music
-
-Additional info. The terminal emulator shows this output:
-
-    Falling back to hardcoded app location: cannot find expected files in /data/app/ga.androidterm-2/lib
-    git annex webapp
-    WARNING: linker: git-annex has text relocations. This is wasting memory and prevents security hardening. Please fix.
-
-I have tried moving the app to the sd card, but it will not work if I do that.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Yes! It's by far one of my favorite apps! it works very well on my laptop, on my home file server, and on my internal storage on my Android phone :)
diff --git a/doc/bugs/Android__58___Several_error_messages___47___warnings.mdwn b/doc/bugs/Android__58___Several_error_messages___47___warnings.mdwn
deleted file mode 100644
--- a/doc/bugs/Android__58___Several_error_messages___47___warnings.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-### Please describe the problem.
-
-When I start Git Annex then there are several warnings. The app renders my phone basically unusable (two time my phone rebooted and several time I had to remove the battery because the phone didn't respond).
-
-It seems Git Annex uses all the available memory (one warning is that git-annex has text relocations and that this wastes memory.
-
-I've attached a screen shot of the error messages.
-
-
-### What steps will reproduce the problem?
-
-Starting Git Annex on my phone
-
-
-### What version of git-annex are you using? On what operating system?
-
-Git Annex: 5.20150927-gb506fb2
-Android: 5.0.2
-
-
-### Please provide any additional information below.
-
-My phone is low-end (it has only ~512MB memory for example) - but normally everything works more or less okay.
-
-If I use Chrome as the browser and start the webapp then Git Annex gets (it seems) killed quite often. It seems because there is not enough memory.
-
-If I use a browser with a small memory footprint then the webapp works only barely better - very unresponsive (but at least Git Annex isn't killed).
-
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Sorry, no, I'm just starting out with Git Annex :)
-
-But Git Annex looks amazing - exactly what I need! ;)
-
-Can I somehow help to find the problem?
-
-I'd really love to use Git Annex on my phone.
diff --git a/doc/bugs/Android_can__39__t_sync_files_with_utf-8_characters_in_names.mdwn b/doc/bugs/Android_can__39__t_sync_files_with_utf-8_characters_in_names.mdwn
deleted file mode 100644
--- a/doc/bugs/Android_can__39__t_sync_files_with_utf-8_characters_in_names.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-### Please describe the problem.
-I have a repo where some files have utf-8 characters in their names. They are copied without problems between linux-running pcs, but on Android I only get a small, 206 bytes files with the hash data.
-
-### What steps will reproduce the problem?
-Add some files with utf-8 characters in names, try to sync to Android
-
-### What version of git-annex are you using? On what operating system?
-PC side: tried 5.20140412ubuntu1 from ubuntu repo and standalone tarball 5.20140517-gee56d21, both on Ubuntu Trusy
-Android side: Android 4.4.2 on Nexus 7
-
-### Please provide any additional information below.
-Part of daemon.log I believe is related to this. Lines starting with Number followed by dot are the filenames, but truncated at first non-ascii character.
-I suspect empty lines before the "rsync failed" represent files with names that start with non-ascii character.
-
-[[!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
-
-
-  rsync failed -- run git annex again to resume file transfer
-
-
-  rsync failed -- run git annex again to resume file transfer
-
-
-  rsync failed -- run git annex again to resume file transfer
-
-02. Wyspa W
-  rsync failed -- run git annex again to resume file transfer
-
-05. Ponad Krain
-  rsync failed -- run git annex again to resume file transfer
-
-
-# End of transcript or log.
-"""]]
diff --git a/doc/bugs/Android_cannot_setup_gitlab_repo_due_to_ECDSA_key.mdwn b/doc/bugs/Android_cannot_setup_gitlab_repo_due_to_ECDSA_key.mdwn
deleted file mode 100644
--- a/doc/bugs/Android_cannot_setup_gitlab_repo_due_to_ECDSA_key.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-### Please describe the problem.
-Cannot add gitlab repository on Android.
-
-### What steps will reproduce the problem?
-After attempting to add a gitlab repository on git-annex assistant, I am presented with a ssh key and prompted to add it to my gitlab account. After doing so and continuing, git-annex assistant returns to the same page and presents the ssh key again. Attempting to continue repeats the cycle as the ssh key is presented over and over.
-
-### What version of git-annex are you using? On what operating system?
-Stable version for Lollipop (I experienced this same error on Kit Kat ~6 months ago but could not resolve it at that point)
-Android 5.0 git-annex.apk
-
-### Please provide any additional information below.
-In the git-annex assistant log I see:
-
-    No ECDSA host key is known for gitlab.com and you have requested strict checking. 
-    Host key verification failed. 
-    No ECDSA host key is known for gitlab.com and you have requested strict checking. 
-    Host key verification failed. 
-    fatal: Could not read from remote repository
-    
-    Please make sure you have the correct access rights and the repository exists.
-    Host key verification failed.
-    Host key verification failed.
-    fatal: Could not read from remote repository.
-
-I resolved the issue by opening a new terminal window, attempting to connect to gitlab (ssh git@gitlab.com), verifying the ECDSA key against the gitlab website (https://about.gitlab.com/gitlab-com/) and accepting the key. The file .ssh/known_hosts was created. The gitlab repository could then be added in git annex assistant.
-
-The lack of information about the error presented to the user in git annex assistant was part of the problem.
-
-
-[[!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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
diff --git a/doc/bugs/Android_chroot_stuck_in_Cabal_hell.mdwn b/doc/bugs/Android_chroot_stuck_in_Cabal_hell.mdwn
deleted file mode 100644
--- a/doc/bugs/Android_chroot_stuck_in_Cabal_hell.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-### Please describe the problem.
-I'm trying to get an Android development environment set up, but I am running into conflicting library versions inside of the chroot. The package installation script now finishes, but I run into a link-time error during `cabal configure` because it is pulling in two different versions of the unix package for some reason. Please let me know if there is any information I can get from my build environment that would help diagnosing the issue.
-
-### What steps will reproduce the problem?
-Run `buildchroot`, `install-haskell-packages`, `make android`
-
-### What version of git-annex are you using? On what operating system?
-Attempting to build from source, cross-compiling for Android on Debian Jessie.
-
-### Please provide any additional information below.
-
-[[!format sh """
-Linking ./dist/setup/setup ...
-/usr/lib/ghc/unix-2.6.0.1/libHSunix-2.6.0.1.a(execvpe.o): In function `pPrPr_disableITimers':
-(.text+0x300): multiple definition of `pPrPr_disableITimers'
-/home/builder/.cabal/lib/i386-linux-ghc-7.6.3/unix-2.7.1.0/libHSunix-2.7.1.0.a(ghcrts.o):ghcrts.c:(.text+0x0): first defined here
-collect2: error: ld returned 1 exit status
-Makefile:225: recipe for target 'android' failed
-make: *** [android] Error 1
-"""]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/Assistant_drops_files_from_remote_repos_that_it_shouldn__39__t.mdwn b/doc/bugs/Assistant_drops_files_from_remote_repos_that_it_shouldn__39__t.mdwn
deleted file mode 100644
--- a/doc/bugs/Assistant_drops_files_from_remote_repos_that_it_shouldn__39__t.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-### Please describe the problem.
-
-git-annex assistant starts to drop files in remote repos, even when they are set to manual.
-
-### What steps will reproduce the problem?
-
-
-Create 3 repos:
-
-* A -- standard, archive
-* m1 -- standard, manual
-* m2 -- standard, manual
-
-System has 3 files annexed: file1, file2, file3. Repo "A" has all three files, m1 has none, m2 has file3.
-
-So, while in m1:
-
-    m1 $ git annex find --want-drop --in m2
-    file3
-
-file3 shouln't be dropped from m2. There is no reason to do this. m2 is set as manual, and it shouldn't be touched in any case.
-
-Now, let's get this file in m1:
-
-    m1 $ git annex get file3
-    get file3 (from m2...) ok
-    (Recording state in git...)
-    m1 $ git annex find --want-drop --in m2
-
-So when 'file3' is present in local repo, it's not going to be dropped from m2.
-
-I guess that rule 'present' works in local repo context while 'drop' acts on remote files.
-
-
-### What version of git-annex are you using? On what operating system?
-
-I'm using latest version in Debian Jessie (5.20141024) on amd64 and armhf. I've also reproduced the bug with manually compiled 5.20141105-g8d8b248 on amd64.
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Assistant_has_created_155_semitrusted_repositories.mdwn b/doc/bugs/Assistant_has_created_155_semitrusted_repositories.mdwn
deleted file mode 100644
--- a/doc/bugs/Assistant_has_created_155_semitrusted_repositories.mdwn
+++ /dev/null
@@ -1,191 +0,0 @@
-### Please describe the problem.
-git annex status reports 160 semitrusted repositories. Four of them are the ones I created (only via webapp, I think I never edited any git-annex config file). One is 	00000000-0000-0000-0000-000000000001 -- web
- and although I do not know what it is, it is not something new. The remaining 155 appeared spontaneously after several Gb of data (mostly many small files) were added to an Annex (in an 'archive' directory) operated in direct mode by the assistant.
-
-
-
-### What steps will reproduce the problem?
-Add several Gb of files was enough to trigger this problem, but I did not try to reproduce it. It happened the day I installed the 4.20131106~bpo70+1 version.
-
-### What version of git-annex are you using? On what operating system?
-
-4.20131106~bpo70+1 on debian squeeze (7.2), with git  1.8.4.rc3.
-
-
-### Please provide any additional information below.
-May be related or not: at some point the webapp displayed two warning boxes. One of them held a message that I did not wirte down and proposed to "Restart the thread". This apparently worked since the box disappeared. The other warning box indicated "NetWatcherFallback crashed: unknown response from git cat-file" and proposed to restart the thread. Trying to "restart the thread" via the provided button just did not trigger any response of the webapp which seemed dead at that point.
-
-In spite of the git annex status shown below, the webapp still shows only the expected four repositories.
-
-Output of git annex status (hostname and xmpp account name were edited away):
-[[!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
-repository mode: direct
-trusted repositories: 
-0
-semitrusted repositories: 160
-	00000000-0000-0000-0000-000000000001 -- web
- 	0ab193eb-0c76-4559-a93c-2e30ed8630a8 -- someMachineIown_datadir (archive)
- 	1384784127.91222s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384784164.437824s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384784176.944372s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384784179.254498s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384785147.558938s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785147.717223s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785159.041203s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785159.199504s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785185.79485s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785187.318128s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785215.236504s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785215.389096s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785313.539843s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785313.701305s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785315.596206s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785344.184461s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785348.192805s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785402.70316s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785406.524044s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384785446.074236s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384873605.313126s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384873697.029999s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384873761.687234s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384873774.608376s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384926279.456728s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384926368.736s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384926454.99433s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384926494.152645s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384926504.438232s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384934790.89717s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384934848.757067s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384934899.087168s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384934908.238587s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384948772.14552s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384948805.441196s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384948813.397132s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384948921.45481s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384948924.855852s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384949073.988946s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384949082.298976s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384949399.608138s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384949581.12213s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384949583.9923s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384949700.22807s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384949765.484768s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955202.85962s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955230.953995s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955402.534938s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955457.1885s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955524.603709s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955611.891061s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955677.84592s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955689.293082s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955894.057476s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955910.723021s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955914.732132s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955968.717875s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384955969.634658s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956004.284925s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956029.567195s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956188.628995s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956379.844701s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956381.613833s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956387.923418s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956395.418701s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956408.792928s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956504.019733s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956519.578085s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384956524.419783s -- 1 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384965891.562742s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384965891.815119s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384965903.355602s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384965905.276128s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384965978.806653s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384965979.393089s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966097.495566s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966097.704474s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966154.97658s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966156.967406s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966233.310488s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966233.522324s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966241.284523s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966241.475381s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966301.688497s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966303.427685s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966392.875983s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966393.38718s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966404.708568s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966406.441164s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966553.557387s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966555.752786s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966653.725847s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966654.23288s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966695.201885s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966695.689398s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966784.556877s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966786.574886s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966791.446852s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966793.218318s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384966884.335685s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384966886.147083s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967054.857465s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967055.158871s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967190.980027s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967193.176584s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967328.93796s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967330.428095s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967526.127311s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967526.588491s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967627.132549s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967627.685201s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967686.283694s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967686.728086s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967768.270887s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967768.58402s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967769.245615s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967771.122238s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967813.8197s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967814.168477s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384967915.243469s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384967917.020051s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968031.757775s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968032.190452s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968035.733635s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968036.03299s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968144.555556s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968144.714535s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968150.090148s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968150.820567s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968304.393177s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968304.613624s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968604.499519s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968604.813256s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968702.566939s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968704.427767s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968725.375289s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968725.939271s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384968798.402904s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384968798.659754s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969055.285004s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969055.715448s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969159.885115s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969162.382266s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969184.633052s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969185.413769s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969374.791849s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969377.497842s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969475.469111s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969489.697737s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969492.087023s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969492.58214s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969784.725195s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969786.49773s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	1384969814.984624s -- 1 0ab193eb-0c76-4559-a93c-2e30ed8630a8
- 	1384969815.397676s -- 0 391b0557-dc68-4e40-b6d0-da3033588753
- 	391b0557-dc68-4e40-b6d0-da3033588753 -- here (client)
- 	668ef9d8-68c6-484e-89e5-06634d590a11 -- rsync.net_datadir_annex (transfer)
- 	b0d3c000-0ac9-4a05-aef4-47f826d5c759 -- user.name (client)
-
-
-# End of transcript or log.
-"""]]
diff --git a/doc/bugs/Attempting_to_repair_repository_almost_every_day.mdwn b/doc/bugs/Attempting_to_repair_repository_almost_every_day.mdwn
deleted file mode 100644
--- a/doc/bugs/Attempting_to_repair_repository_almost_every_day.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I'm using the webapp on my two main computers with up-to-date Debian (one has testing and the other one sid) and I have consistency checks scheduled every day.
-
-The problem is that almost every time the check runs I'm getting the "Attempting to repair" message and git-annex starts using 100% CPU for quite a while, but after it it seams to have done no change to the git tree or the files.
-
-The two computers are never on at the same time, but they are constantly syncing files (through box.com), I don't now if downloading files while the check is in progress might have something to do.
diff --git a/doc/bugs/Auto-repair_greatly_slows_down_the_machine.mdwn b/doc/bugs/Auto-repair_greatly_slows_down_the_machine.mdwn
deleted file mode 100644
--- a/doc/bugs/Auto-repair_greatly_slows_down_the_machine.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-### Please describe the problem.
-
-The assistant regulary ends up trying to perform repair (I don't know why, it happens fairly often, once a week or so). When it does so, it ends up creating a huge (2.4G) .git/objects directory, and a git prune-packed process uses so much I/O the machine really slows down.
-
-### What steps will reproduce the problem?
-
-I don't have any reliable way to reproduce it. The repository ends up being attempted to be repaired around once a week. This week the repair (and the slowdown) also happened on a second computer.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20140221-gbdfc8e1 (using the standalone 64bit builds)
-
-This is on an up-to-date Arch Linux. It also happened on Fedora 20.
-
-### Please provide any additional information below.
-
-The daemon.log is fairly long, but not particulary interesting: [[https://ssl.zerodogg.org/~zerodogg/private/tmp/daemon.log-2014-02-25.1]]
-
-The «resource vanished (Broken pipe)» at the end is the result of me killing the prune-packed in order to be able to use the machine again.
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Bootstrap3_icons_missing_on_Android.mdwn b/doc/bugs/Bootstrap3_icons_missing_on_Android.mdwn
deleted file mode 100644
--- a/doc/bugs/Bootstrap3_icons_missing_on_Android.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I’m running git-annex 5.20140517-gee56d21 on Android 4.3.
-
-A number of icons seem to be missing since the bootstrap3 update:
-
-<img src="http://heh.fi/tmp/git-annex-missing-icons.png" alt="git-annex missing icons" width="540">
-
-[[!tag confirmed done]]
diff --git a/doc/bugs/Building_fails__58___Not_in_scope__58_____96__myHomeDir__39___.mdwn b/doc/bugs/Building_fails__58___Not_in_scope__58_____96__myHomeDir__39___.mdwn
deleted file mode 100644
--- a/doc/bugs/Building_fails__58___Not_in_scope__58_____96__myHomeDir__39___.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-What steps will reproduce the problem?
-
-Building of the current github HEAD fails with a strange error message regarding OSX. I'm not using OSX but Ubuntu 12.10, why is cabal trying to build these files?
-
-<pre>
-dominik@Atlantis:/var/tmp$ git clone git://github.com/joeyh/git-annex.git
-Cloning into 'git-annex'...
-remote: Counting objects: 40243, done.
-remote: Compressing objects: 100% (10568/10568), done.
-remote: Total 40243 (delta 29647), reused 40044 (delta 29449)
-Receiving objects: 100% (40243/40243), 9.12 MiB | 184 KiB/s, done.
-Resolving deltas: 100% (29647/29647), done.
-dominik@Atlantis:/var/tmp$ cd git-annex/
-dominik@Atlantis:/var/tmp/git-annex$ cabal update
-Downloading the latest package list from hackage.haskell.org
-dominik@Atlantis:/var/tmp/git-annex$ cabal install --only-dependencies
-Resolving dependencies...
-All the requested packages are already installed:
-Use --reinstall if you want to reinstall anyway.
-dominik@Atlantis:/var/tmp/git-annex$ cabal configure
-Resolving dependencies...
-[ 1 of 21] Compiling Utility.FileSystemEncoding ( Utility/FileSystemEncoding.hs, dist/setup/Utility/FileSystemEncoding.o )
-[ 2 of 21] Compiling Utility.Applicative ( Utility/Applicative.hs, dist/setup/Utility/Applicative.o )
-[ 3 of 21] Compiling Utility.PartialPrelude ( Utility/PartialPrelude.hs, dist/setup/Utility/PartialPrelude.o )
-[ 4 of 21] Compiling Utility.UserInfo ( Utility/UserInfo.hs, dist/setup/Utility/UserInfo.o )
-[ 5 of 21] Compiling Utility.Monad    ( Utility/Monad.hs, dist/setup/Utility/Monad.o )
-[ 6 of 21] Compiling Utility.Path     ( Utility/Path.hs, dist/setup/Utility/Path.o )
-[ 7 of 21] Compiling Utility.OSX      ( Utility/OSX.hs, dist/setup/Utility/OSX.o )
-
-Utility/OSX.hs:22:17: Not in scope: `myHomeDir'
-</pre>
-
-What is the expected output? What do you see instead?
-
-I expect cabal to build git-annex. 
-
-What version of git-annex are you using? On what operating system?
-
-github HEAD on Ubuntu 12.10
-
-Please provide any additional information below.
-
-<pre>
-$ cabal --version
-cabal-install version 0.14.0
-using version 1.14.0 of the Cabal library 
-
-$ ghc --version
-The Glorious Glasgow Haskell Compilation System, version 7.4.2
-
-$ uname -a
-Linux Atlantis 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
-
-</pre>
-
-> [[fixed|done]] --[[Joey]] 
diff --git a/doc/bugs/Button_to_cancel_conistency_checks.mdwn b/doc/bugs/Button_to_cancel_conistency_checks.mdwn
deleted file mode 100644
--- a/doc/bugs/Button_to_cancel_conistency_checks.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-### Please describe the problem.
-
-Sometimes a consistency check is undesired, e.g. when one wants to unmount the external drive. Add a button (along Configure) to the bubble that says Consistency check in progress to the assistent.
-
-### What steps will reproduce the problem?
-
-Run an automatic conistency check.
-
-### What version of git-annex are you using? On what operating system?
-
-20141024
-
-### 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.
-"""]]
diff --git a/doc/bugs/CHECKPRESENT_could_check_file_size_as_well.mdwn b/doc/bugs/CHECKPRESENT_could_check_file_size_as_well.mdwn
deleted file mode 100644
--- a/doc/bugs/CHECKPRESENT_could_check_file_size_as_well.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-The [external special remote protocol](http://git-annex.branchable.com/design/external_special_remote_protocol/) CHECKPRESENT command has no support for checking the file size.
-
-In many cases a special remote is able to fetch the size of an object as it checks its availability with no additional cost (for example when you use the `stat()` function: the size is already included in the response). The remote protocol could be extended so that the backend returns the size with the CHECKPRESENT-SUCCESS command, so that git-annex can provide a primitive but probably useful additional integrity check. This is helpful, for example, to detect bugs that result in the truncation of a file in the special remote; or to detect the case of an aborted upload that resulted in the file being checked into the remote anyway.
-
-When it is not easy to get the file size without incurring in additional costs, the backend can simply return a flag value like `-1` to tell git-annex to ignore it.
-
-There is a delicate point in how git-annex computes the expected object size for an encrypted remote. I do not know if there is a way to compute the size of a file after it has been encrypted with HMAC/GPG without actually performing all the computation. In line of principle it should not be difficult, but I do not know the details.
diff --git a/doc/bugs/Cannot_add_gcrypt_remote_in_webapp__58___gcrypt_backend.mdwn b/doc/bugs/Cannot_add_gcrypt_remote_in_webapp__58___gcrypt_backend.mdwn
deleted file mode 100644
--- a/doc/bugs/Cannot_add_gcrypt_remote_in_webapp__58___gcrypt_backend.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-### Please describe the problem.
-
-I have a repository that is encrypted using GPG. It is supposed to sync a folder between two laptops. (Note: this is a DIFFERENT repository than the one in my other bug report https://git-annex.branchable.com/bugs/Packfile_does_not_match_digest__58___gcrypt_with_assistant/ but the setup is the same)
-
-I set everything up on laptop1. This time, I decided to wait for the syncing to finish, between laptop1 and laptop2 in order to prevent corruption. After laptop1 had finished syncing, I went to laptop2 and setup the repository.
-
-- I created a local repository on laptop2.
-- I told the webapp to combine repositories.
-
-Then I got
-
-"
-Internal Server Error
-Cannot find configuration for the gcrypt remote at ssh://denisa@vps.ip/backup/annex/denisa/Studium
-"
diff --git a/doc/bugs/Cannot_clone_an_annex.mdwn b/doc/bugs/Cannot_clone_an_annex.mdwn
deleted file mode 100644
--- a/doc/bugs/Cannot_clone_an_annex.mdwn
+++ /dev/null
@@ -1,69 +0,0 @@
-I have an annex that I use to store my digital photos.  I had a few false
-starts creating this annex, but now it's looking good on my server:
-
-    root@titan.local:/tank/Media/Pictures# git annex status
-    supported backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
-    supported remote types: git S3 bup directory rsync web hook
-    trusted repositories: 0
-    semitrusted repositories: 2
-            00000000-0000-0000-0000-000000000001 -- web
-            be88bc5a-17e2-11e2-a99b-d388d4437350 -- here (titan)
-    untrusted repositories: 0
-    dead repositories: 5
-            0A9F3136-A12A-43C7-9BE2-33F59954FD52 -- vulcan
-            57349F02-E497-4420-9230-6B15D8AB14EE -- vulcan
-            6195C912-2707-4B75-AC8C-11C51FAA8FE0 -- vulcan
-            D51DEDC4-9255-4A99-8520-2B1CED337674 -- hermes
-            EE327B34-3E20-4B5B-8F0E-D500CBC9738D -- hermes
-    transfers in progress: none
-    available local disk space: unknown
-    local annex keys: 20064
-    local annex size: 217 gigabytes
-    known annex keys: 21496
-    known annex size: 217 gigabytes
-    bloom filter size: 16 mebibytes (4% full)
-    backend usage: 
-            SHA256E: 41560
-    root@titan.local:/tank/Media/Pictures# git annex unused
-    unused . (checking for unused data...) ok
-
-It passes `git annex fsck` without any problems.  However, when I "git clone"
-this annex to my desktop machine and then do a `git annex sync`, I see this:
-
-    Vulcan /Volumes/tank/Media/Pictures (master) $ git annex status
-    supported backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
-    supported remote types: git S3 bup directory rsync web hook
-    trusted repositories: 0
-    semitrusted repositories: 5
-            00000000-0000-0000-0000-000000000001 -- web
-            0A9F3136-A12A-43C7-9BE2-33F59954FD52 -- vulcan
-            274D3474-7A25-44CD-8368-CF11C451014F -- here (vulcan)
-            EE327B34-3E20-4B5B-8F0E-D500CBC9738D -- hermes
-            be88bc5a-17e2-11e2-a99b-d388d4437350 -- titan
-    untrusted repositories: 0
-    dead repositories: 3
-            57349F02-E497-4420-9230-6B15D8AB14EE -- vulcan
-            6195C912-2707-4B75-AC8C-11C51FAA8FE0 -- vulcan
-            D51DEDC4-9255-4A99-8520-2B1CED337674 -- hermes
-    transfers in progress: none
-    available local disk space: 1 terabyte (+1 megabyte reserved)
-    local annex keys: 0
-    local annex size: 0 bytes
-    known annex keys: 21025
-    known annex size: 217 gigabytes
-    bloom filter size: 16 mebibytes (0% full)
-    backend usage: 
-            SHA256: 18707
-            SHA256E: 2318
-
-Where did all these `SHA256` keys come from?
-
-Why doesn't the known annex keys size match?
-
-Further, I cannot `git annex get` on most of the files, because it says that
-the `SHA256` key is not present.
-
-It looks like I'll have to rollback my ZFS snapshots and start over, but I'm
-wondering: how was I even able to create this situation?
-
-> [[Done]]; user error. --[[Joey]] 
diff --git a/doc/bugs/Cannot_delete_remote_when_ssh_sync_fails.mdwn b/doc/bugs/Cannot_delete_remote_when_ssh_sync_fails.mdwn
deleted file mode 100644
--- a/doc/bugs/Cannot_delete_remote_when_ssh_sync_fails.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-### Please describe the problem.
-The webapp does not offer me the option to delete a remote repository that it did not succeed to synchronize with. Status of the repository is sync enabled (metadata only) but in settings I may only edit the repo, but cannot delete it.
-
-### What steps will reproduce the problem?
-Set up git-annex on a new computer. Forget to enable ssh on the machine. Perform a local pairing (success). The sync fails for obvious reasons.
-
-### What version of git-annex are you using? On what operating system?
-System is ubuntu but I assume this is a general issue. Version of git-annex is 5.20140117
diff --git a/doc/bugs/Central_annex_+_assistant_+_v6___61___weirdness__63__.mdwn b/doc/bugs/Central_annex_+_assistant_+_v6___61___weirdness__63__.mdwn
deleted file mode 100644
--- a/doc/bugs/Central_annex_+_assistant_+_v6___61___weirdness__63__.mdwn
+++ /dev/null
@@ -1,104 +0,0 @@
-### Please describe the problem.
-Git-annex with v6 repo causes weird file creation behavior.
-
-### What steps will reproduce the problem?
-On central repo:
-  git init --bare central6
-  cd central6
-  git annex init origin
-  git annex upgrade
-On Client A
-  git clone {central6 repo path/URI}
-  cd central6
-  git annex init clientA6
-  git annex upgrade
-On Client B
-  git clone {central6 repo path/URI}
-  cd central6
-  git annex init clientB6
-  git annex upgrade
-Start assistant on both clients.
-Start webapp on both clients.
-Add files to both clients.
-Wait for assistant to sync new files.
-Force sync with webapp on both clients 
-
-At this point examine files coming from the central repo on the non-originating client.  I see:
-Client A originated file:
--rw-rw-r--. 1 user group 92528731 May 10 20:16 image.png
-Client B created file:
--rw-rw-r--. 1 user group 103 May 10 20:21 image.png
-
-Here's the content of Client B's file:
-/annex/objects/SHA256E-s92528731--098928032fddbd0327c1d608249a133e276a00b8aa8bffca371bd32bded49777.png
-
-### What version of git-annex are you using? On what operating system?
-Linux (Fedora 23/CentOS 7)
-[[!format sh """
-git-annex version: 6.20160428-g1f253e8
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 6
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-"""]]
-
-### Please provide any additional information below.
-
-[[!format sh """
-# Client B
-[2016-05-10 20:09:51.879642] main: starting assistant version 6.20160428-g1f253e8
-[2016-05-10 20:09:52.127709] Cronner: You should enable consistency checking to protect your data. 
-[2016-05-10 20:09:57.340186] TransferScanner: Syncing with origin 
-(scanning...) [2016-05-10 20:09:58.182781] Watcher: Performing startup scan
-(started...) 
-
-merge: refs/remotes/origin/master - not something we can merge
-
-merge: refs/remotes/origin/synced/master - not something we can merge
-gpg: Signature made Thu 28 Apr 2016 10:44:48 AM EDT using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmpOTZtDq/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>"
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-git-annex: Daemon is already running.
-[2016-05-10 20:21:19.633914] main: Syncing with origin 
-From /smb/r7000/USB_Storage/tmp/git-annex/central6
-   7f1d48c..3e6f240  git-annex  -> origin/git-annex
- * [new branch]      master     -> origin/master
- * [new branch]      synced/git-annex -> origin/synced/git-annex
- * [new branch]      synced/master -> origin/synced/master
-(merging origin/git-annex into git-annex...)
-(recording state in git...)
-
-Already up-to-date.
-[2016-05-10 20:21:23.337732] Pusher: Syncing with origin 
-To /smb/r7000/USB_Storage/tmp/git-annex/central6
-   3e6f240..358afc3  git-annex -> synced/git-annex
-[2016-05-10 20:21:25.056294] Committer: Adding image.png
-add image.png ok
-[2016-05-10 20:21:25.543293] Committer: Committing changes to git
-(recording state in git...)
-
-SHA256E-s103--d7d52e9de4a9c7c030743825c3a1ca072062e4ccadefcf1eb34be3004360b9b2.png
-            103 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-(checksum...) [2016-05-10 20:21:27.240904] Transferrer: Uploaded image.png
-[2016-05-10 20:21:27.787233] Pusher: Syncing with origin 
-[2016-05-10 20:21:28.12119] Committer: Adding image.png
-(recording state in git...)
-add image.png ok
-[2016-05-10 20:21:28.696135] Committer: Committing changes to git
-(recording state in git...)
-To /smb/r7000/USB_Storage/tmp/git-annex/central6
-   358afc3..e3ef364  git-annex -> synced/git-annex
-   15d9319..976e99f  master -> synced/master
-[2016-05-10 20:21:32.584488] Pusher: Syncing with origin 
-Everything up-to-date
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-It seems to work really well on v5, but the file "corruption" is difficult to recover from.
diff --git a/doc/bugs/Commiting_Files_Containing_Non_Ascii_Char_on_OS_X_.mdwn b/doc/bugs/Commiting_Files_Containing_Non_Ascii_Char_on_OS_X_.mdwn
deleted file mode 100644
--- a/doc/bugs/Commiting_Files_Containing_Non_Ascii_Char_on_OS_X_.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-### Please describe the problem.
-
-Any file containing non ascii chars either won't get commited by the webapp or when clone of that repo is made they are shown as deleted in git status but the files are there. 
-
-you can not commit them neither,
-
-    git commit -m 'foo'
-
-or
- 
-    git annex sync
-
-will get them to commit trying to reset the state using, 
-     
-    git checkout master 
-
-or 
-
-    git clean -f 
-
-won't fix the issue. till the issue is fixed sync does not work from the command line since there are changes. Temporarily running assistant in the directory does fix the problem but every now and then it pops again.
-
-Also moving any symlinks around containing non ascii chars also causes the same issue. git annex won't add the moved symlinks git annex fix or git annex add won't add them git annex sync also skips them again the only solution is to either run the assistant or restart it if it is running.
-
-### What steps will reproduce the problem?
-
-Adding any file with a non ascii char on OS X (10.9).
-
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20140421-gc34a665
-
-### Please provide any additional information below.
-
-Also another thing I noticed is that same file names same repo will clone fine on Linux no errors this only happens on OS X.
-
-[[!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.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Corrupted_.git__47__annex__47__index_when_running_assistant.mdwn b/doc/bugs/Corrupted_.git__47__annex__47__index_when_running_assistant.mdwn
deleted file mode 100644
--- a/doc/bugs/Corrupted_.git__47__annex__47__index_when_running_assistant.mdwn
+++ /dev/null
@@ -1,658 +0,0 @@
-### Please describe the problem.
-I’ve noticed a repo in which I’m running the assistant wouldn’t push updates to its remote anymore. Inspecting the assistant log revealed that there was a problem with the index used for the git-annex branch. After deleting the index file, the assistant could sync to the remote again. (Could deleting the annex index have introduced any inconsistencies into the git-annex branch?)
-
-### What steps will reproduce the problem?
-Uncertain. However, I made a copy of .git/annex/index and can reproduce the error by cloning my original repo, checking out the git-annex branch, copying in the backed-up index file and doing git write-tree, which then yields an invalid object error.
-
-It looks like the respective object isn’t present in the git object store. The error is for b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8, but no directory .git/objects/b5 exists (even after unpacking packed objects).
-
-I could supply you with the index file; do you need anything else? If I don’t clone from my repo, I obviously get an invalid object for everything; should I supply you with a git-bundle of the git-annex ref?
-
-### What version of git-annex are you using? On what operating system?
-git-annex 5.20150508-1
-Linux 4.0.5
-
-### Please provide any additional information below.
-
-Below is the daemon.log* concatenated, starting with the earliest one. Grep for “invalid object” or “write tree”.
-
-[[!format sh """
-[2015-06-05 16:59:45 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-05 16:59:45 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-05 16:59:57 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-05 16:59:57 CEST] Watcher: Performing startup scan
-(started...) [2015-06-05 16:59:58 CEST] RemoteControl: Syncing with origin 
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-05 16:59:58 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-[2015-06-05 16:59:59 CEST] Committer: Committing changes to git
-[2015-06-05 16:59:59 CEST] Pusher: Syncing with origin 
-error: Unable to create '/home/seb/Annex/.git/refs/remotes/origin/master.lock': File exists.
-
-If no other git process is currently running, this probably means a
-git process crashed in this repository earlier. Make sure no other git
-process is running and remove the file manually to continue.
-error: Cannot lock the ref 'refs/remotes/origin/master'.
-From ssh://redacted.net/srv/git/seb/annex/annex
- ! d71a4e0..1f265ec  master     -> origin/master  (unable to update local ref)
-From ssh://redacted.net/srv/git/seb/annex/annex
-   d71a4e0..1f265ec  master     -> origin/master
-error: Unable to create '/home/seb/Annex/.git/refs/remotes/origin/git-annex.lock': File exists.
-
-If no other git process is currently running, this probably means a
-git process crashed in this repository earlier. Make sure no other git
-process is running and remove the file manually to continue.
-error: Cannot lock the ref 'refs/remotes/origin/git-annex'.
- ! 33446d6..973fbda  git-annex  -> origin/git-annex  (unable to update local ref)
-   33446d6..973fbda  git-annex  -> origin/git-annex
-error: Unable to create '/home/seb/Annex/.git/refs/remotes/origin/synced/git-annex.lock': File exists.
-
-If no other git process is currently running, this probably means a
-git process crashed in this repository earlier. Make sure no other git
-process is running and remove the file manually to continue.
-error: Cannot lock the ref 'refs/remotes/origin/synced/git-annex'.
- ! 33446d6..973fbda  synced/git-annex -> origin/synced/git-annex  (unable to update local ref)
-   d71a4e0..1f265ec  synced/master -> origin/synced/master
-   33446d6..973fbda  synced/git-annex -> origin/synced/git-annex
-error: Ref refs/remotes/origin/synced/master is at 1f265ecc6288ead453681794551c527f64660f8c but expected d71a4e027cdd61c1323fbdc67103dde97f613192
-error: Cannot lock the ref 'refs/remotes/origin/synced/master'.
- ! d71a4e0..1f265ec  synced/master -> origin/synced/master  (unable to update local ref)
-Updating d71a4e0..1f265ec
-Fast-forward
- org/software/software.org | 4 +++-
- org/software/theming.org  | 7 +++++++
- 2 files changed, 10 insertions(+), 1 deletion(-)
-Already up-to-date.
-To ssh://redacted.net/srv/git/seb/annex/annex.git
- + 973fbda...33446d6 git-annex -> synced/git-annex (forced update)
- ! [rejected]        master -> synced/master (non-fast-forward)
-error: failed to push some refs to 'ssh://redacted.net/srv/git/seb/annex/annex.git'
-hint: Updates were rejected because a pushed branch tip is behind its remote
-hint: counterpart. Check out this branch and integrate the remote changes
-hint: (e.g. 'git pull ...') before pushing again.
-hint: See the 'Note about fast-forwards' in 'git push --help' for details.
-[2015-06-05 17:00:00 CEST] Committer: Committing changes to git
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   33446d6..973fbda  git-annex -> synced/git-annex
-Everything up-to-date
-[2015-06-05 17:00:05 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-Connection to redacted.net closed by remote host.
-ssh: connect to host redacted.nessh: connect to host redactedssh: connect to host redacted.n[2015-06-05 17:59:57 CEST] NetWatcherFallback: Syncing with origin 
-Everything up-to-date
-[2015-06-05 18:51:33 CEST] Committer: Committing changes to git
-[2015-06-05 18:51:33 CEST] Pusher: Syncing with origin 
-[2015-06-05 18:51:34 CEST] Committer: Committing changes to git
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   1f265ec..1cee9eb  master -> synced/master
-[2015-06-05 18:51:37 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 19:00:01 CEST] NetWatcherFallback: Syncing with origin 
-Everything up-to-date
-packet_write_wait: Connection to 37.221.198.119: Broken pipe
-[2015-06-05 20:00:03 CEST] NetWatcherFallback: Syncing with origin 
-Everything up-to-date
-[2015-06-05 20:13:01 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-05 20:13:01 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-05 20:13:12 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-05 20:13:12 CEST] Watcher: Performing startup scan
-(started...) gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-05 20:13:13 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-Everything up-to-date
-[2015-06-05 20:13:14 CEST] Committer: Committing changes to git
-[2015-06-05 20:13:14 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 21:13:12 CEST] NetWatcherFallback: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:13:14 CEST] NetWatcherFallback: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:04 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:04 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:08 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:08 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:11 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:11 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:14 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:14 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:16 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:18 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:20 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:21 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:27 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:27 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:28 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:30 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:37 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:37 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:33:43 CEST] Committer: Committing changes to git
-[2015-06-05 22:33:43 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 22:34:12 CEST] Committer: Committing changes to git
-[2015-06-05 22:34:12 CEST] Pusher: Syncing with origin 
-[2015-06-05 22:34:13 CEST] Committer: Committing changes to git
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   1cee9eb..46828df  master -> synced/master
-[2015-06-05 22:34:15 CEST] Pusher: Syncing with origin 
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   46828df..8e93c98  master -> synced/master
-[2015-06-05 22:34:23 CEST] Committer: Committing changes to git
-[2015-06-05 22:34:23 CEST] Pusher: Syncing with origin 
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   8e93c98..9bed0e6  master -> synced/master
-[2015-06-05 22:34:24 CEST] Committer: Committing changes to git
-[2015-06-05 22:34:27 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 23:04:49 CEST] Committer: Committing changes to git
-[2015-06-05 23:04:49 CEST] Pusher: Syncing with origin 
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   9bed0e6..ec8f2c4  master -> synced/master
-[2015-06-05 23:04:50 CEST] Committer: Committing changes to git
-[2015-06-05 23:04:52 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 23:11:39 CEST] Committer: Committing changes to git
-[2015-06-05 23:11:39 CEST] Pusher: Syncing with origin 
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   ec8f2c4..14bc26a  master -> synced/master
-[2015-06-05 23:11:40 CEST] Committer: Committing changes to git
-[2015-06-05 23:11:43 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 23:13:16 CEST] NetWatcherFallback: Syncing with origin 
-Everything up-to-date
-[2015-06-05 23:33:28 CEST] Committer: Committing changes to git
-[2015-06-05 23:33:28 CEST] Pusher: Syncing with origin 
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   14bc26a..bd150f5  master -> synced/master
-[2015-06-05 23:33:29 CEST] Committer: Committing changes to git
-[2015-06-05 23:33:32 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 23:34:09 CEST] Committer: Committing changes to git
-[2015-06-05 23:34:09 CEST] Pusher: Syncing with origin 
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   bd150f5..290c21c  master -> synced/master
-[2015-06-05 23:34:10 CEST] Committer: Committing changes to git
-[2015-06-05 23:34:12 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 23:34:15 CEST] Committer: Committing changes to git
-[2015-06-05 23:34:15 CEST] Pusher: Syncing with origin 
-[2015-06-05 23:34:16 CEST] Committer: Committing changes to git
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   290c21c..a56091f  master -> synced/master
-[2015-06-05 23:34:19 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-05 23:35:17 CEST] Committer: Committing changes to git
-[2015-06-05 23:35:17 CEST] Pusher: Syncing with origin 
-[2015-06-05 23:35:18 CEST] Committer: Committing changes to git
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   a56091f..2fb635b  master -> synced/master
-[2015-06-05 23:35:21 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-
-  lost dbus connection; falling back to polling (ClientError {clientErrorMessage = "Error reading message from socket: UnmarshalError \"Unexpected end of input while parsing message header.\"", clientErrorFatal = True})
-
-  dbus failed; falling back to mtab polling (ClientError {clientErrorMessage = "Error reading message from socket: UnmarshalError \"Unexpected end of input while parsing message header.\"", clientErrorFatal = True})
-[2015-06-06 07:17:17 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-06 07:17:17 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-06 07:17:25 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-06 07:17:30 CEST] Watcher: Performing startup scan
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-06 07:17:32 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-Everything up-to-date
-(started...) [2015-06-06 07:17:36 CEST] Committer: Committing changes to git
-[2015-06-06 07:17:36 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-06 07:45:05 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-06 07:45:05 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-06 07:45:10 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-06 07:45:10 CEST] Watcher: Performing startup scan
-(started...) /usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-06 07:45:12 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-[2015-06-06 07:45:12 CEST] Committer: Committing changes to git
-[2015-06-06 07:45:12 CEST] Pusher: Syncing with origin 
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-Everything up-to-date
-Everything up-to-date
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-
-(recording state in git...)
-
-  bugs/nouveau-bug/nouveau.log.8 still has writers, not adding
-[2015-06-06 07:47:04 CEST] Committer: Adding nouveau.log.8
-add bugs/nouveau-bug/nouveau.log.8 [2015-06-06 07:47:04 CEST] Committer: Committing changes to git
-[2015-06-06 07:47:04 CEST] Pusher: Syncing with origin 
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-Pusher crashed: failed to read sha from git write-tree
-[2015-06-06 07:47:04 CEST] Pusher: warning Pusher crashed: failed to read sha from git write-tree
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'recvkey' '/srv/git/seb/annex/annex.git' 'SHA256E-s4491--e35540a06d6839455b48ecd8f2a4c7714d420379bae55a7b383dc1a5dc60d8e0.log.8' --uuid a2131774-31b2-47d2-9185-b2e344c16134 '--' 'remoteuuid=1dda4b9a-1ff2-4a9b-aaf8-47dfdd02c8ae' 'direct=' 'associatedfile=bugs/nouveau-bug/nouveau.log.8' '--' dummy rsync --server -pe.Lsfx --log-format=X --inplace . .' is not rsync
-rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
-[2015-06-06 07:47:05 CEST] Committer: Committing changes to git
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'recvkey' '/srv/git/seb/annex/annex.git' 'SHA256E-s4491--e35540a06d6839455b48ecd8f2a4c7714d420379bae55a7b383dc1a5dc60d8e0.log.8' --uuid a2131774-31b2-47d2-9185-b2e344c16134 '--' 'remoteuuid=1dda4b9a-1ff2-4a9b-aaf8-47dfdd02c8ae' 'direct=' 'associatedfile=bugs/nouveau-bug/nouveau.log.8' '--' dummy rsync --server -pe.Lsfx --log-format=X --inplace . .' is not rsync
-rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-/usr/lib/rsync/rrsync: SSH_ORIGINAL_COMMAND='git-annex-shell 'notifychanges' '/srv/git/seb/annex/annex.git' --uuid a2131774-31b2-47d2-9185-b2e344c16134' is not rsync
-[2015-06-06 08:45:10 CEST] NetWatcherFallback: Syncing with origin 
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-NetWatcherFallback crashed: failed to read sha from git write-tree
-[2015-06-06 08:45:12 CEST] NetWatcherFallback: warning NetWatcherFallback crashed: failed to read sha from git write-tree
-[2015-06-06 15:58:38 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-06 15:58:38 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-06 15:58:44 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-06 15:58:44 CEST] Watcher: Performing startup scan
-(started...) gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-06 15:58:45 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-TransferScanner crashed: failed to read sha from git write-tree
-[2015-06-06 15:58:45 CEST] TransferScanner: warning TransferScanner crashed: failed to read sha from git write-tree
-[2015-06-06 15:58:46 CEST] Committer: Committing changes to git
-[2015-06-06 15:58:46 CEST] Pusher: Syncing with origin 
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-Pusher crashed: failed to read sha from git write-tree
-[2015-06-06 15:58:46 CEST] Pusher: warning Pusher crashed: failed to read sha from git write-tree
-[2015-06-06 16:58:44 CEST] NetWatcherFallback: Syncing with origin 
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-NetWatcherFallback crashed: failed to read sha from git write-tree
-[2015-06-06 16:58:47 CEST] NetWatcherFallback: warning NetWatcherFallback crashed: failed to read sha from git write-tree
-[2015-06-06 18:10:24 CEST] Committer: Committing changes to git
-[2015-06-06 18:10:25 CEST] Committer: Committing changes to git
-[2015-06-06 20:01:34 CEST] Committer: Committing changes to git
-[2015-06-06 20:01:35 CEST] Committer: Committing changes to git
-[2015-06-06 22:42:41 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-06 22:42:41 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-06 22:42:47 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-06 22:42:47 CEST] Watcher: Performing startup scan
-(started...) error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-TransferScanner crashed: failed to read sha from git write-tree
-[2015-06-06 22:42:48 CEST] TransferScanner: warning TransferScanner crashed: failed to read sha from git write-tree
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-06 22:42:48 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-[2015-06-06 22:42:49 CEST] Committer: Committing changes to git
-[2015-06-06 22:42:49 CEST] Pusher: Syncing with origin 
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-Pusher crashed: failed to read sha from git write-tree
-[2015-06-06 22:42:49 CEST] Pusher: warning Pusher crashed: failed to read sha from git write-tree
-
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-
-  bugs/nouveau-bug/nouveau.log.9 still has writers, not adding
-[2015-06-06 22:43:47 CEST] Committer: Adding nouveau.log.9
-add bugs/nouveau-bug/nouveau.log.9 [2015-06-06 22:43:48 CEST] Committer: Committing changes to git
-
-SHA256E-s4427--4e02ba661d0106ff4715a2cfda0fe39185865551bcb484539e618f2b64f9ec0c.log.9
-
-          4,427 100%    0.00kB/s    0:00:00  
-          4,427 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-06 22:43:48 CEST] Transferrer: Uploaded nouveau.log.9
-[2015-06-06 22:43:49 CEST] Committer: Committing changes to git
-ok
-(recording state in git...)
-
-  lost dbus connection; falling back to polling (ClientError {clientErrorMessage = "Error reading message from socket: UnmarshalError \"Unexpected end of input while parsing message header.\"", clientErrorFatal = True})
-[2015-06-07 07:41:35 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-07 07:41:35 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-07 07:41:42 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-07 07:41:42 CEST] Watcher: Performing startup scan
-(started...) error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-TransferScanner crashed: failed to read sha from git write-tree
-[2015-06-07 07:41:43 CEST] TransferScanner: warning TransferScanner crashed: failed to read sha from git write-tree
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-07 07:41:43 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-[2015-06-07 07:41:44 CEST] Committer: Committing changes to git
-[2015-06-07 07:41:44 CEST] Pusher: Syncing with origin 
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-Pusher crashed: failed to read sha from git write-tree
-[2015-06-07 07:41:44 CEST] Pusher: warning Pusher crashed: failed to read sha from git write-tree
-[2015-06-07 08:41:42 CEST] NetWatcherFallback: Syncing with origin 
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-NetWatcherFallback crashed: failed to read sha from git write-tree
-[2015-06-07 08:41:43 CEST] NetWatcherFallback: warning NetWatcherFallback crashed: failed to read sha from git write-tree
-[2015-06-07 09:21:46 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-07 09:21:46 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-07 09:21:49 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-07 09:21:49 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-07 09:21:54 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-07 09:21:55 CEST] Watcher: Performing startup scan
-(started...) 
-(recording state in git...)
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-TransferScanner crashed: failed to read sha from git write-tree
-[2015-06-07 09:21:55 CEST] TransferScanner: warning TransferScanner crashed: failed to read sha from git write-tree
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-07 09:21:56 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-[2015-06-07 09:21:56 CEST] Committer: Committing changes to git
-(recording state in git...)
-[2015-06-07 09:21:56 CEST] Pusher: Syncing with origin 
-(recording state in git...)
-error: invalid object 100644 b5f693aa67b6d185e6d967e0a45c3c57a4f4b4a8 for '88c/df4/SHA256E-s4644--eca6d831c0a94895a81296327bc21bdf417234c7ebfa3e93fd21a71523ac9da9.log.6.log'
-fatal: git-write-tree: error building trees
-Pusher crashed: failed to read sha from git write-tree
-[2015-06-07 09:21:57 CEST] Pusher: warning Pusher crashed: failed to read sha from git write-tree
-[2015-06-07 09:23:07 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-07 09:23:07 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-07 09:23:12 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-07 09:23:12 CEST] Watcher: Performing startup scan
-(started...) 
-(recording state in git...)
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-07 09:23:13 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-[2015-06-07 09:23:14 CEST] Committer: Committing changes to git
-(recording state in git...)
-[2015-06-07 09:23:14 CEST] Pusher: Syncing with origin 
-
-SHA256E-s4491--e35540a06d6839455b48ecd8f2a4c7714d420379bae55a7b383dc1a5dc60d8e0.log.8
-
-          4,491 100%    0.00kB/s    0:00:00  
-          4,491 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:23:15 CEST] Transferrer: Uploaded nouveau.log.8
-error: Unable to create '/srv/git/seb/annex/annex.git/refs/heads/synced/git-annex.lock': File exists.
-
-If no other git process is currently running, this probably means a
-git process crashed in this repository earlier. Make sure no other git
-process is running and remove the file manually to continue.
-remote: error: Cannot lock the ref 'refs/heads/synced/git-annex'.        
-error: Unable to create '/srv/git/seb/annex/annex.git/refs/heads/synced/master.lock': File exists.
-
-If no other git process is currently running, this probably means a
-git process crashed in this repository earlier. Make sure no other git
-process is running and remove the file manually to continue.
-remote: error: Cannot lock the ref 'refs/heads/synced/master'.        
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   aec4d80..5cac670  master -> synced/master
- ! [remote rejected] git-annex -> synced/git-annex (failed to update ref)
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   973fbda..118a888  git-annex -> synced/git-annex
- ! [remote rejected] master -> synced/master (failed to update ref)
-error: failed to push some refs to 'ssh://redacted.net/srv/git/seb/annex/annex.git'
-error: failed to push some refs to 'ssh://redacted.net/srv/git/seb/annex/annex.git'
-error: Ref refs/remotes/origin/master is at 5cac670bc3d15a2d1a976ab02b2717078717ad48 but expected aec4d80548993b2b6e126124153fab9c93de8375
-error: Cannot lock the ref 'refs/remotes/origin/master'.
-From ssh://redacted.net/srv/git/seb/annex/annex
- ! aec4d80..5cac670  master     -> origin/master  (unable to update local ref)
-error: Ref refs/remotes/origin/git-annex is at 118a888e0244e644c2ec6c0bf100e787d25a222d but expected 973fbdad6d8b549c4db0633ef11fa5a8f9ec0ed1
-error: Cannot lock the ref 'refs/remotes/origin/git-annex'.
- ! 973fbda..118a888  git-annex  -> origin/git-annex  (unable to update local ref)
-Everything up-to-date
-Everything up-to-date
-(recording state in git...)
-[2015-06-07 09:23:20 CEST] main: starting assistant version 5.20150508-g883d57f
-[2015-06-07 09:23:20 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2015-06-07 09:23:25 CEST] TransferScanner: Syncing with origin 
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2015-06-07 09:23:25 CEST] Watcher: Performing startup scan
-(started...) 
-From ssh://redacted.net/srv/git/seb/annex/annex
-   118a888..e058e35  git-annex  -> origin/git-annex
-(merging origin/git-annex into git-annex...)
-(recording state in git...)
-gpg: assuming signed data in '/tmp/git-annex.tmp.0/info'
-gpg: Signature made Thu May 28 19:01:58 2015 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>" [unknown]
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2015-06-07 09:23:26 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20150528)
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   118a888..37bc288  git-annex -> synced/git-annex
-[2015-06-07 09:23:27 CEST] Committer: Committing changes to git
-(recording state in git...)
-[2015-06-07 09:23:27 CEST] Pusher: Syncing with origin 
-Everything up-to-date
-[2015-06-07 09:25:21 CEST] Committer: Adding daemon.log.4
-add bugs/git-annex/daemon.log.4 ok
-[2015-06-07 09:25:21 CEST] Committer: Committing changes to git
-(recording state in git...)
-[2015-06-07 09:25:21 CEST] Pusher: Syncing with origin 
-(recording state in git...)
-
-SHA256E-s2383--66aa385819f9ba961c3b4701dd68b6d1450af08ae24428461d342be8b12784a2.log.4
-
-          2,383 100%    0.00kB/s    0:00:00  
-          2,383 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:25:21 CEST] Transferrer: Uploaded daemon.log.4
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   37bc288..5c63092  git-annex -> synced/git-annex
-   5cac670..3a5e7d0  master -> synced/master
-[2015-06-07 09:25:22 CEST] Committer: Committing changes to git
-[2015-06-07 09:25:24 CEST] Pusher: Syncing with origin 
-(recording state in git...)
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   5c63092..07a3e47  git-annex -> synced/git-annex
-[2015-06-07 09:25:40 CEST] Committer: Adding index~
-add bugs/git-annex/index~ ok
-[2015-06-07 09:25:40 CEST] Committer: Committing changes to git
-(recording state in git...)
-[2015-06-07 09:25:40 CEST] Pusher: Syncing with origin 
-(recording state in git...)
-
-SHA256E-s178074--cf093bacc4367a5e86a07cb8523b183dd0a5401805dde646cf0b2b0ddc8ee282
-
-         32,768  18%    0.00kB/s    0:00:00  
-        178,074 100%   69.29MB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:25:41 CEST] Committer: Committing changes to git
-[2015-06-07 09:25:41 CEST] Transferrer: Uploaded index~
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   07a3e47..32d41fc  git-annex -> synced/git-annex
-   3a5e7d0..20e6e3c  master -> synced/master
-[2015-06-07 09:25:44 CEST] Pusher: Syncing with origin 
-(recording state in git...)
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   32d41fc..b61b73e  git-annex -> synced/git-annex
-[2015-06-07 09:44:47 CEST] Committer: Adding daemon.log daemon.log.1 daemon.log.10 daemon.log.2 daemon.log.3
-add bugs/git-annex/daemon.log ok
-add bugs/git-annex/daemon.log.1 ok
-add bugs/git-annex/daemon.log.10 ok
-add bugs/git-annex/daemon.log.2 ok
-add bugs/git-annex/daemon.log.3 ok
-[2015-06-07 09:44:47 CEST] Committer: Committing changes to git
-(recording state in git...)
-[2015-06-07 09:44:47 CEST] Pusher: Syncing with origin 
-(recording state in git...)
-
-SHA256E-s3284--5784c99b359a5fdfb52f26e82165ffba54d62f9f5cd846fce25a3c6f694eb890.log
-
-          3,284 100%    0.00kB/s    0:00:00  
-          3,284 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:47 CEST] Transferrer: Uploaded daemon.log
-
-SHA256E-s178--704e1850cab9a6b074ba2a77344199b866e9408541b83bf1ad6b3bbd23dfc54a.log.3
-
-            178 100%    0.00kB/s    0:00:00  
-            178 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:48 CEST] Transferrer: Uploaded daemon.log.3
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   b61b73e..854cbda  git-annex -> synced/git-annex
-   20e6e3c..0d8b74a  master -> synced/master
-
-SHA256E-s1993--7f1bec5289ebe07306bf57fb91e0dec25b1d8f5cf1efd15297815503f1290477.log.2
-
-          1,993 100%    0.00kB/s    0:00:00  
-          1,993 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:48 CEST] Committer: Committing changes to git
-(recording state in git...)
-[2015-06-07 09:44:48 CEST] Transferrer: Uploaded daemon.log.2
-
-SHA256E-s4969--ff59d2458e0b43a1965258bd0064626de1a0b7f911de693a02f34fc1bcb4959a.log.10
-
-          4,969 100%    0.00kB/s    0:00:00  
-          4,969 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:48 CEST] Transferrer: Uploaded daemon.log.10
-
-SHA256E-s3385--0e7aef46d502f1d3a583b642239cf1272b2410d5976603b65a104fc866c02e70.log.1
-
-          3,385 100%    0.00kB/s    0:00:00  
-          3,385 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:49 CEST] Transferrer: Uploaded daemon.log.1
-[2015-06-07 09:44:50 CEST] Committer: Adding daemon.log.5 daemon.log.6 daemon.log.7 daemon.log.8 daemon.log.9
-add bugs/git-annex/daemon.log.5 ok
-add bugs/git-annex/daemon.log.6 ok
-add bugs/git-annex/daemon.log.7 ok
-add bugs/git-annex/daemon.log.8 ok
-add bugs/git-annex/daemon.log.9 ok
-[2015-06-07 09:44:50 CEST] Committer: Committing changes to git
-(recording state in git...)
-
-SHA256E-s2792--313d72ecb598b18884602babaed667b71786a0f50edd291754bac0b70c666fa9.log.5
-
-          2,792 100%    0.00kB/s    0:00:00  
-          2,792 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:50 CEST] Transferrer: Uploaded daemon.log.5
-
-SHA256E-s6792--8aaddbb316719160b93305bc7a6698df1b2d6b0e6f3366c0fa9f7d258cf12303.log.9
-
-          6,792 100%    0.00kB/s    0:00:00  
-          6,792 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:50 CEST] Transferrer: Uploaded daemon.log.9
-[2015-06-07 09:44:50 CEST] Pusher: Syncing with origin 
-
-SHA256E-s1183--12703bbab3cd4db78fc4449b5c3dddfb82da77c9b4a750d2b7a902f3eb63547b.log.8
-
-          1,183 100%    0.00kB/s    0:00:00  
-          1,183 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-(recording state in git...)
-[2015-06-07 09:44:51 CEST] Transferrer: Uploaded daemon.log.8
-[2015-06-07 09:44:51 CEST] Committer: Committing changes to git
-(recording state in git...)
-
-SHA256E-s5310--51d80ffdcfdeff4e035f740de0f18afa660404fb448a72421bd7af85ae87ae6f.log.7
-
-          5,310 100%    0.00kB/s    0:00:00  
-          5,310 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:51 CEST] Transferrer: Uploaded daemon.log.7
-
-SHA256E-s2639--c7a0e874ae2dbc874732c000928a5c2a1a6c3d75dcb89b590fcb9e13415427cd.log.6
-
-          2,639 100%    0.00kB/s    0:00:00  
-          2,639 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-[2015-06-07 09:44:51 CEST] Transferrer: Uploaded daemon.log.6
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   854cbda..c940c96  git-annex -> synced/git-annex
-   0d8b74a..3865343  master -> synced/master
-[2015-06-07 09:44:54 CEST] Pusher: Syncing with origin 
-(recording state in git...)
-To ssh://redacted.net/srv/git/seb/annex/annex.git
-   c940c96..95a399f  git-annex -> synced/git-annex
-   3865343..c04efc3  master -> synced/master
-
-"""]]
diff --git a/doc/bugs/Could_not_read_from_remote_repository.mdwn b/doc/bugs/Could_not_read_from_remote_repository.mdwn
deleted file mode 100644
--- a/doc/bugs/Could_not_read_from_remote_repository.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-### Please describe the problem.
-
-I've been using git-annex for a few weeks now, and everything was working fine until today. Now, when git-annex goes to sync my files, it will hang for a while, and then display a red box on the left side, saying `! Synced with adam.liter`. So, basically, it doesn't really sync. The logs say that it cannot read from the remote repository, which is set up on box.com and was working just fine until today.
-
-I've tried reconfiguring my jabber account on all my devices with git-annex as well as deleting and remaking the box.com repository, and none of these steps have solved the problem.
-
-### What steps will reproduce the problem?
-
-Making changes to any file located in the repository.
-
-### What version of git-annex are you using? On what operating system?
-
-Mac OS X 10.8.4 and git-annex version 4.20130801-gc88bbc4.
-
-### Please provide any additional information below.
-
-[[!format sh """
-[2013-09-09 01:33:03 EDT] XMPPSendPack: Syncing with adam.liter 
-Already up-to-date.
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-"""]]
-
-[[!meta title="xmpp syncing sometimes fails"]]
-
-[[!tag confirmed]]
diff --git a/doc/bugs/Crash_when_disabling_syncing_in_the_webapp.mdwn b/doc/bugs/Crash_when_disabling_syncing_in_the_webapp.mdwn
deleted file mode 100644
--- a/doc/bugs/Crash_when_disabling_syncing_in_the_webapp.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-### Please describe the problem.
-The watcher crashes.
-
-I only need to restart the thread in the pop-up to get everything to work again, but I'm reporting just in case that this issue has any other implications.
-
-
-### What steps will reproduce the problem?
-I open the webapp and in the minutes before it starts syncing (syncing is enabled) I disable it (clicking in the 'syncing enabled' text).
-
-This produces a crash every time.
-
-
-### What version of git-annex are you using? On what operating system?
-5.20140320 in Debian sid and testing
-
-
-### Please provide any additional information below.
-This is all I can see in the logs
-
-[[!format sh """
-Watcher crashed: PauseWatcher
-[2014-03-26 08:54:57 CET] Watcher: warning Watcher crashed: PauseWatcher
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Creating_an_encrypted_S3_does_not_check_for_presence_of_GPG.mdwn b/doc/bugs/Creating_an_encrypted_S3_does_not_check_for_presence_of_GPG.mdwn
deleted file mode 100644
--- a/doc/bugs/Creating_an_encrypted_S3_does_not_check_for_presence_of_GPG.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-What steps will reproduce the problem?
-
-Don't have gpg installed/on your $PATH, and attempt to create an encrypted S3 remote via the web interface.
-
-What is the expected output? What do you see instead?
-
-Expected to be told to install GPG. Actual output was a Yesod error:
-
-Internal Server Error
-user error (gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--gen-random","--armor","1","512"] exited 127)
-
-What version of git-annex are you using? On what operating system?
-
-3.20130107 on Fedora 17 (64-bit).
-
-Please provide any additional information below.
-
-[[!tag /design/assistant]]
-[[!tag confirmed]]
diff --git a/doc/bugs/Deasn__39__t_clean_up_ssh_keys_after_removing_remote_repo.mdwn b/doc/bugs/Deasn__39__t_clean_up_ssh_keys_after_removing_remote_repo.mdwn
deleted file mode 100644
--- a/doc/bugs/Deasn__39__t_clean_up_ssh_keys_after_removing_remote_repo.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-### Please describe the problem.
-I created a remote repo on ssh server with the same git-annex version, no personal ssh keys for the repo (password authentication). But I put ~ in front of the repo name so it created in different place than I wanted. I deleted it from assistant and then deleted the remote repo dir. When I added it with the correct path again it always asks for server password (it has some old annex pub key in authorized_keys, but not the new one; it might have been prompted for the password also with the initial repo). During the whole thing it failed to connect a few times due to wrong password or me realizing too late that it asks for yet another one and it generated keys few times, but ultimately didn't put the last one in remote's authorized_keys.
-
-### What steps will reproduce the problem?
-Create, delete and create again a new repo on remote ssh server with password auth.
-
-### What version of git-annex are you using? On what operating system?
-git-annex 4.20130601 Gentoo amd64
-
-### 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.
-"""]]
diff --git a/doc/bugs/Default_startup_command.mdwn b/doc/bugs/Default_startup_command.mdwn
deleted file mode 100644
--- a/doc/bugs/Default_startup_command.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-[[!meta title="Android Default startup command"]]
-
-### Please describe the problem.
-On a CM11 4.4.4 install, the startup will fail with the default startup command "git annex webapp".
-The error message shown is:  
-```
-Falling back to hardcoded app location; cannot find expected files in /data/app-lib
-git annex webapp
-```
-
-However, using "git-annex webapp", git-annex will run fine.
-
-### What steps will reproduce the problem?
-
-Launch the beta or nightly build for 4.3 and 4.4, wait for error message
-
-### What version of git-annex are you using? On what operating system?
-
-Version "current" as of 2014-11-15 and also version "nightly build" as of 2014-11-15 on Android 4.4.4 CM11, device: Oppo Find 7a
-
-### 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.
-"""]]
diff --git a/doc/bugs/Direct_mode_repositories_still_use_symlinks_sometimes.mdwn b/doc/bugs/Direct_mode_repositories_still_use_symlinks_sometimes.mdwn
deleted file mode 100644
--- a/doc/bugs/Direct_mode_repositories_still_use_symlinks_sometimes.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-### Please describe the problem.
-
-When a repository is set in direct mode it will still replace files with symlinks when it becomes aware of a change but still hasn't been able to sync the file contents. This can create repositories that are temporarily unusable with files replaced with broken symlinks.
-
-### What steps will reproduce the problem?
-
-1. Create two repositories with each other as remotes
-2. Run the assistant on both
-3. Create some file changes in one and watch the directory in another.
-4. For a brief (or sometimes long) time the destination repository will have it's old version of the file replaced by a broken symlink
-
-This is particularly noticeable when using XMPP as it can often be the case that the two repositories can't connect to each other directly but can talk through XMPP. This breaks using git-annex in direct mode for things like having a synced config directory across machines. Something like having "~/.bashrc" linked into "~/annex-repository/bashrc", doesn't work as there will be times when a machine is broken because .bashrc is linked to a broken symlink while it fetches a new version. 
-
-The desired behavior would be to have git-annex in direct mode only replace older versions of files with newer versions of files.
-
-### What version of git-annex are you using? On what operating system?
-
-[[!format sh """
-$ git annex version
-git-annex version: 4.20130516.1
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-local repository version: 4
-default repository version: 3
-supported repository versions: 3 4
-upgrade supported from repository versions: 0 1 2
-$ lsb_release -a
-No LSB modules are available.
-Distributor ID:	Ubuntu
-Description:	Ubuntu 12.04.2 LTS
-Release:	12.04
-Codename:	precise
-"""]]
-
-[[!meta title="git-annex does not guarantee modified files are available when merging with a new version of a repository"]]
-
-[[!tag confirmed]]
diff --git a/doc/bugs/Disconcerting_warning_from_git-annex.mdwn b/doc/bugs/Disconcerting_warning_from_git-annex.mdwn
deleted file mode 100644
--- a/doc/bugs/Disconcerting_warning_from_git-annex.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I did a "git annex add" of a bunch of files on a storage server with low IOPS, and saw this:
-
-    git-annex: /tank/Media/Pictures/.git/annex/tmp/430_32b_SHA256E-s4464838--c1785a76ee1451f602e93c99c147e214705004e541de8256d74a3be3717d15e5.jpg.log: openBinaryFile: resource busy (file is locked)
-failed
-
-How is that even possible, when the server is doing nothing else?
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Doesn__39__t_build_with_QuickCheck_2.8.2.mdwn b/doc/bugs/Doesn__39__t_build_with_QuickCheck_2.8.2.mdwn
deleted file mode 100644
--- a/doc/bugs/Doesn__39__t_build_with_QuickCheck_2.8.2.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-### Please describe the problem.
-I am getting build errors when trying to compile git-annex with QuickCheck 2.8.2.
-
-### What steps will reproduce the problem?
-Build git-annex with QuickCheck 2.8.2, and get the following errors:
-
-
-    [ 30 of 535] Compiling Utility.QuickCheck ( Utility/QuickCheck.hs, dist/build/git-annex/git-annex-tmp/Utility/QuickCheck.o )
-    
-    Utility/QuickCheck.hs:24:10:
-        Duplicate instance declarations:
-          instance (Arbitrary k, Arbitrary v, Eq k, Ord k) =>
-                   Arbitrary (M.Map k v)
-            -- Defined at Utility/QuickCheck.hs:24:10
-          instance [safe] (Ord k, Arbitrary k, Arbitrary v) =>
-                          Arbitrary (M.Map k v)
-            -- Defined in `Test.QuickCheck.Arbitrary'
-
-    Utility/QuickCheck.hs:27:10:
-        Duplicate instance declarations:
-          instance (Arbitrary v, Eq v, Ord v) => Arbitrary (S.Set v)
-            -- Defined at Utility/QuickCheck.hs:27:10
-          instance [safe] (Ord a, Arbitrary a) => Arbitrary (S.Set a)
-            -- Defined in `Test.QuickCheck.Arbitrary'
-
-### What version of git-annex are you using? On what operating system?
-git-annex 6.20160114, on Arch Linux x86_64.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-Yes, it built fine with QuickCheck 2.8. I didn't test with 2.8.1, though.
-
-> ifdefed those instances out with this version of quickcheck. [[done]]
-> --[[Joey]]
diff --git a/doc/bugs/Empty_folders_don__39__t_get_remove.mdwn b/doc/bugs/Empty_folders_don__39__t_get_remove.mdwn
deleted file mode 100644
--- a/doc/bugs/Empty_folders_don__39__t_get_remove.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-### Please describe the problem.
-When you rename, move or delete a folder (with files in it) the old folder doesn't get deleted in the other clients
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/EvilLinker_needs_to_escape_spaces_in_user_name.mdwn b/doc/bugs/EvilLinker_needs_to_escape_spaces_in_user_name.mdwn
deleted file mode 100644
--- a/doc/bugs/EvilLinker_needs_to_escape_spaces_in_user_name.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-### Please describe the problem.
-
-git-annex build on Windows does not complete when user name has a space in it
-
-### What steps will reproduce the problem?
-
-Build git-annex from scratch as described on the Windows page of the guide when running as user Joe Blogs
-
-
-### What version of git-annex are you using? On what operating system?
-
-Windows 7 Prof, Cygwin install on 28/5/2014
-
-### Please provide any additional information below.
-
-The problem arises in escapeDosPaths of EvilLinker: windows usernames can have spaces in them which also need escaping
-
-[[!tag confirmed]]
diff --git a/doc/bugs/External_special_remote_broken__63__.mdwn b/doc/bugs/External_special_remote_broken__63__.mdwn
deleted file mode 100644
--- a/doc/bugs/External_special_remote_broken__63__.mdwn
+++ /dev/null
@@ -1,64 +0,0 @@
-[[!meta title="encrypted key not checked when resuming upload to chunked encrypted special remote"]]
-
-### Please describe the problem.
-
-Resuming an upload seems not to work when used with chunking. Here is some sample conservation:
-
-
-
-
-    [2016-04-26 21:26:14.465287] chat: git-annex-remote-rclone []
-    [2016-04-26 21:26:14.468527] git-annex-remote-rclone --> VERSION 1
-    [2016-04-26 21:26:14.468726] git-annex-remote-rclone <-- PREPARE
-    [2016-04-26 21:26:14.469533] git-annex-remote-rclone --> GETCONFIG prefix
-    [2016-04-26 21:26:14.469741] git-annex-remote-rclone <-- VALUE annex.datengrotte
-    [2016-04-26 21:26:14.475725] git-annex-remote-rclone --> GETCONFIG target
-    [2016-04-26 21:26:14.47597] git-annex-remote-rclone <-- VALUE hubic
-    [2016-04-26 21:26:14.481164] git-annex-remote-rclone --> PREPARE-SUCCESS
-    [2016-04-26 21:26:14.485361] git-annex-remote-rclone <-- CHECKPRESENT GPGHMACSHA1--2a63df425e9d018adbc9a6e508817c727e414d55
-    [2016-04-26 21:26:14.485831] git-annex-remote-rclone --> DIRHASH GPGHMACSHA1--2a63df425e9d018adbc9a6e508817c727e414d55
-    [2016-04-26 21:26:14.485937] git-annex-remote-rclone <-- VALUE GM/2k/
-    [2016-04-26 21:26:25.571228] git-annex-remote-rclone --> CHECKPRESENT-FAILURE GPGHMACSHA1--2a63df425e9d018adbc9a6e508817c727e414d55
-    [2016-04-26 21:26:25.5726] git-annex-remote-rclone <-- CHECKPRESENT SHA256E-s2885269915-S104857600-C1--186620a13bc048d4c9d75ec3a504f9569e5a43047342be5e5279b14b0c445fa6.mp4
-    [2016-04-26 21:26:25.57296] git-annex-remote-rclone --> DIRHASH SHA256E-s2885269915-S104857600-C1--186620a13bc048d4c9d75ec3a504f9569e5a43047342be5e5279b14b0c445fa6.mp4
-    [2016-04-26 21:26:25.573207] git-annex-remote-rclone <-- VALUE 1v/zK/
-    [2016-04-26 21:26:27.392524] git-annex-remote-rclone --> CHECKPRESENT-FAILURE SHA256E-s2885269915-S104857600-C1--186620a13bc048d4c9d75ec3a504f9569e5a43047342be5e5279b14b0c445fa6.mp4
-    [2016-04-26 21:26:27.393076] chat: gpg ["--quiet","--trust-model","always","--batch","--passphrase-fd","23","--symmetric","--force-mdc","--no-textmode"]
-    [2016-04-26 21:26:31.103132] git-annex-remote-rclone <-- TRANSFER STORE GPGHMACSHA1--48e285fd650dac05eefa328bfbe8efd8a0ca2100 ../.git/annex/tmp/GPGHMACSHA1--48e285fd650dac05eefa328bfbe8efd8a0ca2100
-    [2016-04-26 21:26:31.103773] git-annex-remote-rclone --> DIRHASH GPGHMACSHA1--48e285fd650dac05eefa328bfbe8efd8a0ca2100
-    [2016-04-26 21:26:31.103888] git-annex-remote-rclone <-- VALUE 8Q/Z9/
-
-
-
-
-
-There are some steps that do not get in my mind:
-
-1. What is the first "CHECKPRESENT GPGHMACSHA1" good for? The full file including all chunks?
-2. Second: Why is git-annex looking for "CHECKPRESENT SHA256E", the plain file (not encrypted)?
-3. And now the 'real' problem: git-annex does a "TRANSFER STORE" of some key, but does not first check with CHECKPRESENT if it's there. And indeed, this file is already in the repo, so a "CHECKPRESENT GPGHMACSHA1--48e285fd650dac05eefa328bfbe8efd8a0ca2100" would return true in my case. Therefore it reuploads all my data, which is not so great ;P.
-
-### What version of git-annex are you using? On what operating system?
-
-it-annex version: 6.20160418-geff8673
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 6
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/FAT__58___Date_resolution_for_mtime_2s--__62___implications.mdwn b/doc/bugs/FAT__58___Date_resolution_for_mtime_2s--__62___implications.mdwn
deleted file mode 100644
--- a/doc/bugs/FAT__58___Date_resolution_for_mtime_2s--__62___implications.mdwn
+++ /dev/null
@@ -1,138 +0,0 @@
-The Date resolution of the FAT filesystem is only 2 seconds for the "last modified time."
-This leads to the strange behaviour, that after umount and remount of an usb drive (direct mode) git-annex thinks that suddenly approx. 50% of
-the files are modified.  (after remount the "seconds" appears to be rounded to even values - the inode cache before unmount had 1 second resolution) So git-annex is not real "guilty" but it would be fine to create a "workaround" for this problem...
-
-Possible the best solution for this is to set even values for the seconds in the filesystem and in annex internal tables direct after the `git annex get`. 
-Other solution would be to treat differences up to 1s in modification time as unmodified or create an new parameter like rsync's "modify-window" for this. To do an `git annex sync` or `git annex add` is in my opinion not a good option, because one could add so Bad file content by accident...
-
-Here's an konsole session to show this behaviour:
-
-    $ mount /mnt/transfer/
-    $ git clone source/ /mnt/transfer/transfer-repo
-
-    Klone nach '/mnt/transfer/transfer-repo'...
-    Fertig.
-
-    $ cd /mnt/transfer/transfer-repo/
-    $ git annex init "test"
-
-    init test 
-      Detected a filesystem without fifo support.
-
-      Disabling ssh connection caching.
-
-      Detected a crippled filesystem.
-
-      Enabling direct mode.
-    ok
-    (Recording state in git...)
-
-    $ git annex group here transfer
-
-    group here (merging origin/git-annex into git-annex...)
-    (Recording state in git...)
-    ok
-    (Recording state in git...)
-
-    $ git annex wanted here standard
-
-    wanted here ok
-    (Recording state in git...)
-
-    $ git annex get --auto
-
-    get n01.mp3 (from origin...) 
-    SHA256E-s1159018--5674452792970dc03e9ba47d3a8af5ad7c8da6b3ca19e8e64b9a4cf462d4a92d.mp3
-         1159018 100%   82.62MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-    sent 1159308 bytes  received 31 bytes  2318678.00 bytes/sec
-    total size is 1159018  speedup is 1.00
-    ok
-
-    get n02.mp3 (from origin...) 
-    SHA256E-s1622113--03998dc10c4839d5ab9aeaceaa63f0363c9d728aaaca2a2707f025c7b9e920a3.mp3
-     1622113 100%   34.45MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-    sent 1622459 bytes  received 31 bytes  3244980.00 bytes/sec
-    total size is 1622113  speedup is 1.00
-    ok
-
-    ...
-    ...
-
-    –--> All 29 files (n01.mp3 to n29.mp3) successfully got
-
-    (Recording state in git...)
-
-    $ git annex status
-    $ stat * >../stat-before-umount
-    $ cd /
-    $ umount /mnt/transfer 
-    $ mount /mnt/transfer 
-    $ cd /mnt/transfer/transfer-repo
-    $ stat * >../stat-after-remount
-    $ git annex status
-    M n05.mp3
-    M n10.mp3
-    M n11.mp3
-    M n13.mp3
-    M n16.mp3
-    M n17.mp3
-    M n20.mp3
-    M n22.mp3
-    M n23.mp3
-    M n24.mp3
-    M n26.mp3
-    M n27.mp3
-    $ diff -u ../stat-before-umount ../stat-after-remount | grep -B8 "+Modifiziert" | grep -E "Datei:|Modifi"
-
-       Datei: „n05.mp3“
-    -Modifiziert: 2014-05-03 19:42:39.000000000 +0200
-    +Modifiziert: 2014-05-03 19:42:38.000000000 +0200
-
-       Datei: „n10.mp3“
-    -Modifiziert: 2014-05-03 19:43:05.000000000 +0200
-    +Modifiziert: 2014-05-03 19:43:04.000000000 +0200
-
-       Datei: „n11.mp3“
-    -Modifiziert: 2014-05-03 19:43:07.000000000 +0200
-    +Modifiziert: 2014-05-03 19:43:06.000000000 +0200
-
-      Datei: „n13.mp3“
-    -Modifiziert: 2014-05-03 19:43:15.000000000 +0200
-    +Modifiziert: 2014-05-03 19:43:14.000000000 +0200
-
-       Datei: „n16.mp3“
-    -Modifiziert: 2014-05-03 19:43:21.000000000 +0200
-    +Modifiziert: 2014-05-03 19:43:20.000000000 +0200
-
-       Datei: „n17.mp3“
-    -Modifiziert: 2014-05-03 19:43:29.000000000 +0200
-    +Modifiziert: 2014-05-03 19:43:28.000000000 +0200
-
-       Datei: „n20.mp3“
-    -Modifiziert: 2014-05-03 19:43:53.000000000 +0200
-    +Modifiziert: 2014-05-03 19:43:52.000000000 +0200
-
-       Datei: „n22.mp3“
-    -Modifiziert: 2014-05-03 19:44:13.000000000 +0200
-    +Modifiziert: 2014-05-03 19:44:12.000000000 +0200
-
-       Datei: „n23.mp3“
-    -Modifiziert: 2014-05-03 19:44:23.000000000 +0200
-    +Modifiziert: 2014-05-03 19:44:22.000000000 +0200
-
-       Datei: „n24.mp3“
-    -Modifiziert: 2014-05-03 19:44:31.000000000 +0200
-    +Modifiziert: 2014-05-03 19:44:30.000000000 +0200
-
-       Datei: „n26.mp3“
-    -Modifiziert: 2014-05-03 19:44:35.000000000 +0200
-    +Modifiziert: 2014-05-03 19:44:34.000000000 +0200
-
-       Datei: „n27.mp3“
-    -Modifiziert: 2014-05-03 19:44:39.000000000 +0200
-    +Modifiziert: 2014-05-03 19:44:38.000000000 +0200
-
-
-> fixed [[done]] --[[Joey]]
diff --git a/doc/bugs/Files_disappear_from_locally_paired_annexes_when_edited.mdwn b/doc/bugs/Files_disappear_from_locally_paired_annexes_when_edited.mdwn
deleted file mode 100644
--- a/doc/bugs/Files_disappear_from_locally_paired_annexes_when_edited.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-**What steps will reproduce the problem?**
-
-Create two annexes from the command line on two separate machines:
-
-    mkdir ~/Files.annex
-    cd ~/Files.annex
-    git init
-    git annex init
-    git annex untrust .
-    git annex direct
-
-Add remote to each one pointing to the other:
-
-    git remote add [remote] [remote hostname]:Files.annex
-
-Start assistant on both repos:
-
-    git annex assistant
-
-Fill one repository with a few text files, and wait for them to propagate.
-
-Edit one of the text files using vim, and save.
-
-**What is the expected output? What do you see instead?**
-
-Edited file should remain in the repo, but a significant portion of the time, the file disappeared from the repo in which it was edited (the file is present and properly synced on the other repo).
-
-**What version of git-annex are you using? On what operating system?**
-
-git-annex 4.20130323, Mac OS X on the repo where the file was edited, Arch Linux for the other paired repo.
-
-**Please provide any additional information below.**
-
-I have observed this problem setting up the repos through the webapp as well, so I don't think it is related to setting up the repos manually. I think the way vim is writing the files seems to be tickling a race condition (both command-line vim and MacVim produce the behavior). I started trying to work around it by switching to emacs to edit those files, and the files haven't disappeared from the edited repo (so far at least).
-
-[[!tag /design/assistant moreinfo]]
diff --git a/doc/bugs/Files_in___34__here__34___not_known_to_git_annex.mdwn b/doc/bugs/Files_in___34__here__34___not_known_to_git_annex.mdwn
deleted file mode 100644
--- a/doc/bugs/Files_in___34__here__34___not_known_to_git_annex.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-### Please describe the problem.
-
-Not sure how I created this mess. But here, I have my git annex repository:
-
-    $ cat .git/config 
-    [annex]
-    	uuid = 206e9fb3-0c68-4c45-a3d7-dad1d9425d28
-    	version = 5
-
-And judging from this, I would expect the file to be present:
-
-    $ git annex log Movies/Bad\ Taste\ -\ Englisch.avi 
-    - 2015-10-28 20:51:42 Movies/Bad Taste - Englisch.avi | f53b3f8a-0f04-11e1-93ae-136c6986c818 -- jeff-media [kent]
-    + 2014-10-13 00:12:50 Movies/Bad Taste - Englisch.avi | 206e9fb3-0c68-4c45-a3d7-dad1d9425d28 -- 1T
-    + 2011-12-24 13:38:23 Movies/Bad Taste - Englisch.avi | 9dd8c662-296d-11e1-b28a-f3c66fd5e263 -- 500G
-    - 2011-12-18 14:59:38 Movies/Bad Taste - Englisch.avi | 9dd8c662-296d-11e1-b28a-f3c66fd5e263 -- 500G
-    + 2011-12-18 12:48:17 Movies/Bad Taste - Englisch.avi | 9dd8c662-296d-11e1-b28a-f3c66fd5e263 -- 500G
-    + 2011-11-14 22:15:57 Movies/Bad Taste - Englisch.avi | f53b3f8a-0f04-11e1-93ae-136c6986c818 -- jeff-media [kent]
-    $ ls -l Movies/Bad\ Taste\ -\ Englisch.avi
-    lrwxrwxrwx 1 jojo jojo 135 Okt  7  2014 Movies/Bad Taste - Englisch.avi -> ../.git/annex/objects/Wx/P0/WORM-s723351552-m1100368371--Bad Taste - Englisch.avi/WORM-s723351552-m1100368371--Bad Taste - Englisch.avi
-    $ ls -shL Movies/Bad\ Taste\ -\ Englisch.avi
-    690M Movies/Bad Taste - Englisch.avi
-
-But git annex seems to be very confused:
-
-    $ git annex whereis Movies/Bad\ Taste\ -\ Englisch.avi 
-    whereis Movies/Bad Taste - Englisch.avi (0 copies) failed
-    git-annex: whereis: 1 failed
-    $ git annex list Movies/Bad\ Taste\ -\ Englisch.avi 
-    here
-    |kent-direct
-    ||kent
-    |||web
-    ||||bittorrent
-    |||||
-    _____ Movies/Bad Taste - Englisch.avi
-    $ git annex fsck  Movies/Bad\ Taste\ -\ Englisch.avi 
-    fsck Movies/Bad Taste - Englisch.avi (fixing location log) 
-      ** No known copies exist of Movies/Bad Taste - Englisch.avi
-    failed
-    (recording state in git...)
-    git-annex: fsck: 1 failed
-
-The `fsck` call does not change anything about the problem.
-
-File system is ext4.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20151019-1, Debian unstable.
-
-> improved fsck output [[done]] --[[Joey]]
diff --git a/doc/bugs/GPG_passphrase_repeated_prompt.mdwn b/doc/bugs/GPG_passphrase_repeated_prompt.mdwn
deleted file mode 100644
--- a/doc/bugs/GPG_passphrase_repeated_prompt.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-#### What steps will reproduce the problem?
-
-1. Create a new repository with a directory
-2. Add files
-3. Select "Store your data in the cloud" with the "Remote server" option
-4. Enter host, user, directory
-5. Select "Use an encrypted rsync repository on the server" (Will there be an option for unencrypted later?)
-6. GPG Passphrase prompt comes up for every file
-
-#### What is the expected output? What do you see instead?
-
-I expect to enter a passphase once and then it will sync all files with the remote server.
-
-Instead, it begins syncing the files to the server but prompts for a GPG passphase for every single file.
-
-#### What version of git-annex are you using? On what operating system?
-
-3.20121017 precompiled binary on Arch Linux
-
-#### Please provide any additional information below.
-
-Not sure if I'm just missing a setting for GPG, but I would think I should only need to use the web app to configure the remote server.
-
-[[!tag /design/assistant]]
-[[!tag confirmed]]
diff --git a/doc/bugs/Git_copy_fails_with_absolute_path_on_mavericks.mdwn b/doc/bugs/Git_copy_fails_with_absolute_path_on_mavericks.mdwn
deleted file mode 100644
--- a/doc/bugs/Git_copy_fails_with_absolute_path_on_mavericks.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-### Please describe the problem.
-
-git-annex version: 6.20160126
-
-Problem happens on Mavericks, not on Yosemite with same version.
-
-Can do a relative or absolute path on a git annex add.
-
-But on the git annex copy to an S3 remote, if I use an absolute path for the file descriptor (e.g. /Users/name/git_directory/test.txt) it will not report an error, but will also not print the "copied..." string. A subsequent call with a relative path (e.g. test.txt) will work, show the copied message and indeed show up on S3.
-
-
-Good news: It's working great on Yosemite!
diff --git a/doc/bugs/Hard_links_not_synced_in_direct_mode.mdwn b/doc/bugs/Hard_links_not_synced_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/bugs/Hard_links_not_synced_in_direct_mode.mdwn
+++ /dev/null
@@ -1,128 +0,0 @@
-[[!meta title="hard links not synced"]]
-
-### Please describe the problem.
-
-Direct mode repositories seem to initially ignore hard linked files and then when changes are done to them sync them as separate files. However, changes to one file are only propagated to that file and not to any of the others that are hardlinked to it.
-
-### What steps will reproduce the problem?
-
-Inside a direct mode repository linked to a ssh remote:
-
-[[!format sh """
-$ ls -l
-total 0
-$ echo "something" > foo
-$ ln foo bar
-$ ls -l
-total 8
--rw-r--r-- 2 pedrocr pedrocr 10 May 29 12:08 bar
--rw-r--r-- 2 pedrocr pedrocr 10 May 29 12:08 foo
-$ tail .git/annex/daemon.log
-   6c0fbd7..0bb8ef9  git-annex -> synced/git-annex
-   0bae1b4..bfedc45  master -> synced/master
-
-sent 77 bytes  received 31 bytes  72.00 bytes/sec
-total size is 10  speedup is 0.09
-[2013-05-29 12:08:03 WEST] Transferrer: Uploaded foo
-Already up-to-date.
-[2013-05-29 12:08:05 WEST] Pusher: Syncing with golias 
-To ssh://golias.git-annex/home/pedrocr/testsync
-   0bb8ef9..2ce5013  git-annex -> synced/git-annex
-$ git status
-# On branch master
-# Changes not staged for commit:
-#   (use "git add <file>..." to update what will be committed)
-#   (use "git checkout -- <file>..." to discard changes in working directory)
-#
-#	typechange: foo
-#
-# Untracked files:
-#   (use "git add <file>..." to include in what will be committed)
-#
-#	bar
-no changes added to commit (use "git add" and/or "git commit -a")
-"""]]
-
-On the remote repository:
-
-[[!format sh """
-$ ls -l
-total 4
--rw-r--r-- 1 pedrocr pedrocr 10 May 29 12:08 foo
-"""]]
-
-If I now just touch the linked file on the repository:
-
-[[!format sh """
-$ touch bar
-$ tail .git/annex/daemon.log
-
-(merging synced/git-annex into git-annex...)
-(Recording state in git...)
-add bar (checksum...) [2013-05-29 12:12:49 WEST] Committer: Committing changes to git
-[2013-05-29 12:12:49 WEST] Pusher: Syncing with golias 
-Already up-to-date.
-To ssh://golias.git-annex/home/pedrocr/testsync
-   2ce5013..d36166b  git-annex -> synced/git-annex
-   bfedc45..ee3a7a1  master -> synced/master
-Already up-to-date.
-"""]]
-
-On the remote repository:
-
-[[!format sh """
-$ ls -l
-total 8
--rw-r--r-- 1 pedrocr pedrocr 10 May 29 12:08 bar
--rw-r--r-- 1 pedrocr pedrocr 10 May 29 12:08 foo
-"""]]
-
-Note that now bar has been synced as a new file and not a hardlink as it should be (the 1's after the permissions). 
-
-The sync also isn't acting properly on the linked files. For example. 
-
-First in the origin repository:
-
-[[!format sh """
-$ cat bar
-something
-$ cat foo
-something
-$ echo "someotherthing" > bar
-$ cat bar
-someotherthing
-$ cat foo
-someotherthing
-"""]]
-
-The result in the destination:
-
-[[!format sh """
-$ cat bar
-someotherthing
-$ cat foo
-something
-"""]]
-
-So even if the intended behavior is for hardlinked files to be synced as two separate files the sync isn't correct because the two files changed in the origin and only one of them changed in the destination. This probably needs to be fixed with actual hard links for real filesystems and with some copying for crippled filesystems.
-
-### What version of git-annex are you using? On what operating system?
-
-[[!format sh """
-$ git annex version
-git-annex version: 4.20130516.1
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-local repository version: 4
-default repository version: 3
-supported repository versions: 3 4
-upgrade supported from repository versions: 0 1 2
-$ lsb_release -a
-No LSB modules are available.
-Distributor ID:	Ubuntu
-Description:	Ubuntu 12.04.2 LTS
-Release:	12.04
-Codename:	precise
-"""]]
-
-
-> [[!taglink confirmed]] (but may be out of scope for git-annex) --[[Joey]] 
diff --git a/doc/bugs/Impossible_to_enable_an_existing_gcrypt_repo_in_the_webapp.mdwn b/doc/bugs/Impossible_to_enable_an_existing_gcrypt_repo_in_the_webapp.mdwn
deleted file mode 100644
--- a/doc/bugs/Impossible_to_enable_an_existing_gcrypt_repo_in_the_webapp.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-### Please describe the problem.
-As described earlier in [[tips/fully_encrypted_git_repositories_with_gcrypt]]
-
-### What steps will reproduce the problem?
-- A: use the webapp to create a new repository
-- A: add a remote server to the repository using the 'gcrypt' method
-- A: add a jabber account
-
-- B: use the webapp to create a new repository
-- B: add the jabber account
-- B: see the previously created 'cloud repository' with status 'not enabled'
-- B: click enable, see that the stored credentials are correct, and press "verify this server"
-- B: enter the ssh password twice
-- B: get redirected to a blank screen (on the url /config/repository/enable/gcrypt/UUID "x"?auth=y)
-
-The assistent logfiles show nothing after the "Your public key has been saved in", the server shows that no public key for B was added to the account.
-
-This is with git-annex installed on the remote server; without it the process gets stuck after clicking "encrypt repository" in step 2, it will just indefinitely keep prompting for the SSH password.
-
-### What version of git-annex are you using? On what operating system?
-Latest nightly build on ubuntu 13.10
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Internal_Server_Error__58___Unknown_UUID.mdwn b/doc/bugs/Internal_Server_Error__58___Unknown_UUID.mdwn
deleted file mode 100644
--- a/doc/bugs/Internal_Server_Error__58___Unknown_UUID.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-### Please describe the problem.
-
-One of my repositories has no name:
-http://screencast.com/t/3OjxFzpz
-
-And when I try to disable it I get this error:
-
-    Internal Server Error
-    Unknown UUID
-
-When I try to delete it I get this error:
-
-    Internal Server Error
-    unknown UUID; cannot modify
-
-I think this was the result of adding a Local Computer Repo, and then that computer signed off.  Maybe.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version 4.20130601-g2b6c3f2
-Mac OS 10.7.5
-
-### Please provide any additional information below.
-
-Maybe it's a glitch that only will happen this once, the problem is I can't get rid of it!  Are there anyways of manually getting rid of a repo with uid?
-
-> Also reported here:
-> [[Missing_repo_uuid_after_local_pairing_with_older_annex]] and
-> [[Internal_Server_Error_unknown_UUID;_cannot_modify]]
-> and [[Local_network___40__ssh__41___fails_to_pair__47__sync]]
-> and [[Internal_Server_Error:_Unknown_UUID]]
-> --[[Joey]] 
-
-[[!meta title="local pairing leads to unknown UUID"]]
-
-> This bug is [[fixed|done]]. The webapp will detect the problem and
-> provides an interface to correct it. --[[Joey]]
diff --git a/doc/bugs/Interrupted_command_broke_encfs_repository.mdwn b/doc/bugs/Interrupted_command_broke_encfs_repository.mdwn
deleted file mode 100644
--- a/doc/bugs/Interrupted_command_broke_encfs_repository.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-### Please describe the problem.
-
-I use git annex on my phone on an encfs directory on a debian root put on a sdcard.
-
-After an interruption, it may happens that git-annex (or git?) changes the
-content of a file in the .git directory by a content in a file from the working
-directory.
-
-[[!format sh """
-$ cat .git/config
-../../../.git/annex/objects/f8/gZ/SHA256E-s1455016--03aaa9bcccada56b6615d9e333b8ada2dd6d1fb14c4aacfac87271939377f537.JPG/SHA256E-s1455016--03aaa9bcccada56b6615d9e333b8ada2dd6d1fb14c4aacfac87271939377f537.JPG
-$ cat .git/refs/remotes/master
-../../../../.git/annex/objects/29/wQ/SHA256E-s2533743--ec986bdbe37257bb5a940469d1e1b64a6016902736ed87315bab5856de322f42.JPG/SHA256E-s2533743--ec986bdbe37257bb5a940469d1e1b64a6016902736ed87315bab5856de322f42.JPG
-"""]]
-
-I only experienced this behavior two or three times since I have been using git-annex (3 years ago).
-
-Everything else works fine and fsck indicates no problem with the sdcard.
-
-This is a strange behavior that is a pain to solve, but today, I experienced something
-even stranger.
-
-Instead of writing the content into the .git/ directory. It was put in the encoded file in the crypt directory, with the path correctly encoded.
-
-[[!format sh """
-$ cat repo/.git/config
-cat: repo/.git/config: Input/output error
-$ encfsctl encode crypt_repo/ .git/config
-CqJBnbpfTEgKPAnmc8Sbo/IA-gS5lOzCF65DW9C7l-3MYU/OKritNqY4ewLnzQ,R2dtBXzW
-$ cat crypt_repo/CqJBnbpfTEgKPAnmc8Sbo/IA-gS5lOzCF65DW9C7l-3MYU/OKritNqY4ewLnzQ,R2dtBXzW
-../../../RSYdwqZh7kgnn3RSbEEx86ax/60jj4hZ60tqcDwSiXy-hHpD9/ebwg,0lJ7hi2iBbgF7HBfdqC/-muvnOVFmMIkfUtJAVyMGRUs/lRm4UHX0Dj2lW6IsCnnBBBSX/O9l1191uPE0a2D-FXhrOEG5,uWeGZHyJccAsw64vy16H3iTcRrxY-75YdRnnMzL27zpC5j0UUVnTaU0TBg0ze-xWCLpoJHZha48Uu8NaekYpn9C5QSSmUV08aZERdCdCfS3/GSOJ0Txna5LM9CLDD6Pw8x5pZ7D5YKFdNb-yx4APrKVm,EXauZiDQoXo6qOuVCMUI4KJB9kdnprlZ4Bw7h7w2jogW7Q1GDpqKVSgk7VYLuk5D7CpdaslquWbg0Ci5e9k9T7
-$ encfs decode ../../../RSYdwqZh7kgnn3RSbEEx86ax/60jj4hZ60tqcDwSiXy-hHpD9/ebwg,0lJ7hi2iBbgF7HBfdqC/-muvnOVFmMIkfUtJAVyMGRUs/lRm4UHX0Dj2lW6IsCnnBBBSX/O9l1191uPE0a2D-FXhrOEG5,uWeGZHyJccAsw64vy16H3iTcRrxY-75YdRnnMzL27zpC5j0UUVnTaU0TBg0ze-xWCLpoJHZha48Uu8NaekYpn9C5QSSmUV08aZERdCdCfS3/GSOJ0
-../../../.git/annex/objects/f8/gZ/SHA256E-s1455016--03aaa9bcccada56b6615d9e333b8ada2dd6d1fb14c4aacfac87271939377f537.JPG/SHA256E-s1455016--03aaa9bcccada56b6615d9e333b8ada2dd6d1fb14c4aacfac87271939377f537.JPG
-"""]]
-
-### What steps will reproduce the problem?
-Interruption of a git annex command, I guess an add or an import command.
-
-### What version of git-annex are you using? On what operating system?
-
-Android 4.3 Cyanogenmod/Samsung Galaxy S3, chrooted debian.
-
-[[!format sh """
-$ git annex version
-git-annex version: 5.20141125
-build flags: Assistant Pairing Testsuite S3 Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web tahoe glacier ddar hook external
-$ cat /etc/debian_version
-8.0
-"""]]
-
-### Please provide any additional information below.
-If you ask for additional information, I will gladly provide it.
-
-> Incremented my `encfs_is_shite` counter; [[done]] --[[Joey]]
diff --git a/doc/bugs/Is_there_any_way_to_rate_limit_uploads_to_an_S3_backend__63__.mdwn b/doc/bugs/Is_there_any_way_to_rate_limit_uploads_to_an_S3_backend__63__.mdwn
deleted file mode 100644
--- a/doc/bugs/Is_there_any_way_to_rate_limit_uploads_to_an_S3_backend__63__.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-What steps will reproduce the problem?
-
-Adding files to a local annex set up to sync to a remote S3 one
-
-
-What is the expected output? What do you see instead?
-
-It syncs, but maxes out the uplink
-
-
-What version of git-annex are you using? On what operating system?
-
-3.20121112 on Debian testing
-
-
-Please provide any additional information below.
-
-The man page lists how to configure rate limiting for rsync, not sure how to do it for this
-
-[[!tag confirmed]]
diff --git a/doc/bugs/Issue_fewer_S3_GET_requests.mdwn b/doc/bugs/Issue_fewer_S3_GET_requests.mdwn
deleted file mode 100644
--- a/doc/bugs/Issue_fewer_S3_GET_requests.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-It appears that git-annex issues one GET request to S3 / Google cloud for every file it tries to copy, if you don't pass --fast.  (I could be wrong; I'm basing this on the fact that each "checking <remote name>" takes about the same amount of time, and that it's slow enough to be hitting the network.)
-
-Amazon lets you GET 1000 objects in one GET request, and afaict a request that returns 1000 objects costs just as much as a request that returns 1 object.  The cost of GET'ing every file in my annex is nontrivial -- Google charges 0.01 per 1000 GETs, and my repo has 130k objects, so that's $1.3, compared to a monthly cost for storage of under $10.  This means that if I want to back up my files more than, say, once a week, I need to write a script that parses the JSON output of git annex whereis and uploads with --fast only the files that aren't present in the cloud.  It also means that I have to trust the output of whereis.
-
-All those GETs also slow down the non-fast copy, and this also applies to other kinds of remotes.
-
-There are a number of ways one could implement this.  One way would be to have a command that updates the whereis data from the remote and then to add a parameter (maybe you already have it) to copy that's like --fast but skips files that are already present (maybe this is what --fast already does, but I did a quick check and it doesn't seem to).  Because of the way git annex names files, I think it would be hard to coalesce GETs during a copy command, but it could be done.
-
-Anyway, please don't consider this a high-priority request; I can get by as-is, and I <3 git annex.
diff --git a/doc/bugs/Issue_on_OSX_with_some_system_limits.mdwn b/doc/bugs/Issue_on_OSX_with_some_system_limits.mdwn
deleted file mode 100644
--- a/doc/bugs/Issue_on_OSX_with_some_system_limits.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-I was dumping ~gigs of files of approximately 3-6megs a pop (my music collection) so I could track the files that I want to listen to when I'm on the go. I had the git watch command running from the assistant branch.
-
-I was getting something along the lines of...
-
-    /Users/jtang/annex/.git/annex/tmp/: openTempFile: resource exhausted (Too many open files)
-
-and
-
-    git-annex: createPipe: resource exhausted (Too many open files)
-
-I also noticed that I somehow ended up with 256 ssh-agent's running on one of my machines, I'm not sure if the two issues are related or not, I had not noticed this type of behaviour up until recently.
-
-Also this was appearing in the logs
-
-    x00:annex jtang$ tail -f .git/annex/daemon.log
-    (scanning...) Already up-to-date.
-    kqueue: Too many open files
-
-To be precise, I suspect that the kqueue limit is 256, I had 325 files in the 'queue', I ended up doing a _git annex add_ manually and all was fine.
-
-[[!meta title="kqueue system limits"]]
-
-> This affects BSD systems that use Kqueue. It no longer affects OSX,
-> since we use FSEvents there instead. --[[Joey]] 
-
-[[!tag /design/assistant]]
-[[!tag confirmed]]
diff --git a/doc/bugs/It_is_very_easy_to_turn_git-annex_into_a_zombie.mdwn b/doc/bugs/It_is_very_easy_to_turn_git-annex_into_a_zombie.mdwn
deleted file mode 100644
--- a/doc/bugs/It_is_very_easy_to_turn_git-annex_into_a_zombie.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-What steps will reproduce the problem?
-
-Run the git-annex assitant, and then "sudo kill" it.
-
-What is the expected output? What do you see instead?
-
-I expect it to die, instead I end up with:
-
-    14604   ??  S      0:00.64 ga assistant
-    14623   ??  Z      0:00.00 (git)
-    14624   ??  Z      0:00.00 (git)
-    14936   ??  Z      0:00.00 (git-annex)
-
-The only way to clear these zombies is to reboot.  Perhaps there is some resource not being correctly terminated under exceptional conditions?
-
-Note that on OpenIndiana the problem is even more severe: Aborting git-annex at the wrong time leaves behind both zombie processes and lock files which cause the machine to suddenly halt if I try to access them in any way (via mv, rsync, etc)!
-
-What version of git-annex are you using? On what operating system?
-
-4d1e0c9 on OS X 10.8.2.
-
-Please provide any additional information below.
-
-[[!meta title="strange OSX behavior when killed"]]
-[[!tag /design/assistant/OSX moreinfo]]
diff --git a/doc/bugs/Local_network___40__ssh__41___fails_to_pair__47__sync.mdwn b/doc/bugs/Local_network___40__ssh__41___fails_to_pair__47__sync.mdwn
deleted file mode 100644
--- a/doc/bugs/Local_network___40__ssh__41___fails_to_pair__47__sync.mdwn
+++ /dev/null
@@ -1,177 +0,0 @@
-### Please describe the problem.
-I am trying to set out two computers on the same network to synchronise.
-
-### What steps will reproduce the problem?
-Install Git-Annex. Start the webapp. Try to connect. Enter a secret phrase on both. The Mythbuntu machine shows "Failed to sync with Inspiron 14z" (the laptop). The laptop shows "Pairing in progress" forever.
-
-The machines can normally connect together passwordlessly through ssh with public key encryption. 
-
-### What version of git-annex are you using? On what operating system?
-Ubuntu Raring Version: 3.20121112ubuntu2 from the repos on my laptop.  Install version 4.20130627 from the PPA on Mythbuntu Precise (which I use as a home server).
-
-### Please provide any additional information below.
-From the the laptop, where I started the pairing:
-[[!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
-$ git-annex webapp 
-
-(process:3084): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
-
-** (firefox:3084): WARNING **: Failed to find domain member of JSON manifest
-Running global cleanup code from study base classes.
-(Recording state in git...)
-
-Launching web browser on file:///tmp/webapp3075.html
-(scanning...) 
-  dbus failed; falling back to mtab polling (ClientError {clientErrorMessage = "Call failed: The name org.gtk.Private.GduVolumeMonitor was not provided by any .service files", clientErrorFatal = False})
-(started...) Generating public/private rsa key pair.
-Your identification has been saved in /tmp/git-annex-keygen3075.0/key.
-Your public key has been saved in /tmp/git-annex-keygen3075.0/key.pub.
-The key fingerprint is:
-79:00:67:a4:f0:5f:62:26:78:ed:09:97:e4:c4:dd:56 aaron@Inspiron-14z
-The key's randomart image is:
-+--[ RSA 2048]----+
-|    . .o*. . .E  |
-|     + X... o    |
-|    . * X ..     |
-|     . O *       |
-|        S .      |
-|         .       |
-|                 |
-|                 |
-|                 |
-+-----------------+
-Control socket connect(/home/shared/annex/.git/annex/ssh/mythbuntu@git-annex-mythbuntu-server.local-mythbuntu): Connection refused
-Failed to connect to new control master
-warning: no common commits
-
-  Remote mythbuntuserver.local_annex does not have git-annex installed; setting remote.mythbuntuserver.local_annex.annex-ignore
-Already up-to-date.
-Counting objects: 13, done.
-Delta compression using up to 4 threads.
-Compressing objects: 100% (9/9), done.
-Writing objects: 100% (11/11), 1.06 KiB, done.
-Total 11 (delta 2), reused 0 (delta 0)
-To ssh://mythbuntu@git-annex-mythbuntu-server.local-mythbuntu/~/annex/
- * [new branch]      git-annex -> synced/git-annex
- * [new branch]      master -> synced/master
-Already up-to-date!
-Merge made by the 'recursive' strategy.
-Already up-to-date.
-Already up-to-date.
-Counting objects: 2, done.
-Delta compression using up to 4 threads.
-Compressing objects: 100% (2/2), done.
-Writing objects: 100% (2/2), 326 bytes, done.
-Total 2 (delta 1), reused 0 (delta 0)
-To ssh://mythbuntu@git-annex-mythbuntu-server.local-mythbuntu/~/annex/
-   82bf946..dfe0bd1  master -> synced/master
-Already up-to-date.
-SendMessage (77594660, 0x101f, (nil), (nil))
-SendMessage (0, 0x1203, (nil), 0x7fffc68a1850)
-SendMessage (0, 0x1204, (nil), 0x7fffc68a1850)
-SendMessage (0, 0x1203, 0x1, 0x7fffc68a1850)
-SendMessage (0, 0x1204, 0x1, 0x7fffc68a1850)
-SendMessage (0, 0x1203, 0x2, 0x7fffc68a1850)
-SendMessage (0, 0x1204, 0x2, 0x7fffc68a1850)
-SendMessage (0, 0x1203, 0x3, 0x7fffc68a1850)
-SendMessage (0, 0x1204, 0x3, 0x7fffc68a1850)
-SendMessage (0, 0x1203, 0x4, 0x7fffc68a1850)
-SendMessage (0, 0x1204, 0x4, 0x7fffc68a1850)
-SendMessage (77594660, 0x101f, (nil), (nil))
-SendMessage (0, 0x1203, (nil), 0x7fffc68a1810)
-SendMessage (0, 0x1204, (nil), 0x7fffc68a1810)
-SendMessage (0, 0x1203, 0x1, 0x7fffc68a1810)
-SendMessage (0, 0x1204, 0x1, 0x7fffc68a1810)
-SendMessage (0, 0x1203, 0x2, 0x7fffc68a1810)
-SendMessage (0, 0x1204, 0x2, 0x7fffc68a1810)
-SendMessage (0, 0x1203, 0x3, 0x7fffc68a1810)
-SendMessage (0, 0x1204, 0x3, 0x7fffc68a1810)
-SendMessage (0, 0x1203, 0x4, 0x7fffc68a1810)
-SendMessage (0, 0x1204, 0x4, 0x7fffc68a1810)
-SendMessage (77594660, 0x101f, (nil), (nil))
-SendMessage (0, 0x1203, (nil), 0x7fffc68a2920)
-SendMessage (0, 0x1204, (nil), 0x7fffc68a2920)
-SendMessage (0, 0x1203, 0x1, 0x7fffc68a2920)
-SendMessage (0, 0x1204, 0x1, 0x7fffc68a2920)
-SendMessage (0, 0x1203, 0x2, 0x7fffc68a2920)
-SendMessage (0, 0x1204, 0x2, 0x7fffc68a2920)
-SendMessage (0, 0x1203, 0x3, 0x7fffc68a2920)
-SendMessage (0, 0x1204, 0x3, 0x7fffc68a2920)
-SendMessage (0, 0x1203, 0x4, 0x7fffc68a2920)
-SendMessage (0, 0x1204, 0x4, 0x7fffc68a2920)
-Redirection loop trying to set HTTPS on:
-  http://www.aol.com/favicon.ico
-(falling back to HTTP)
-SendMessage (77594652, 0x444, 0x1, 0x3652e00)
-SendMessage (77594652, 0x444, 0x1, 0x3647de0)
-SendMessage (77594652, 0x444, 0x1, 0x3667a80)
-SendMessage (77594652, 0x444, 0x1, 0x3667a80)
-
-# End of transcript or log.
-# End of transcript or log.
-"""]]
-
-On the Mythbuntu machine:
-[[!format sh """
-$ git-annex webapp
-Launching web browser on file:///tmp/webapp8399.html
-(Recording state in git...)
-"""]]
-
-Unless I'm going mad, there doesn't seem to be a daemon.log on my laptop.
-
-Daemon.log on the Mythbuntu machine:
-[[!format sh """
-[2013-07-14 10:38:56 BST] main: starting assistant version 4.20130627
-(scanning...) [2013-07-14 10:38:56 BST] Watcher: Performing startup scan
-(started...) [2013-07-14 10:38:57 BST] PairListener: aaron@Inspiron-14z:/home/shared/annex is sending a pair request.
-Generating public/private rsa key pair.
-Your identification has been saved in /tmp/git-annex-keygen.0/key.
-Your public key has been saved in /tmp/git-annex-keygen.0/key.pub.
-The key fingerprint is:
-bb:8c:66:05:22:8e:fa:e1:10:33:6d:cb:d6:57:e2:47 mythbuntu@mythbuntu-server
-The key's randomart image is:
-+--[ RSA 2048]----+
-|                 |
-|                 |
-|                 |
-| .. . .          |
-|+oo. ...E        |
-|.*.o . +..       |
-|o = . o.o        |
-|.+ . .o+ .       |
-| .o  o. o        |
-+-----------------+
-[2013-07-14 10:39:13 BST] main: Pairing with aaron@Inspiron-14z:/home/shared/annex in progress
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-[2013-07-14 10:39:17 BST] PairListener: Syncing with Inspiron14z.local__home_shared_annex 
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-Already up-to-date.
-Already up-to-date.
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-Updating 82bf946..dfe0bd1
-Fast-forward
-[2013-07-14 10:39:56 BST] Pusher: Syncing with Inspiron14z.local__home_shared_annex 
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-ssh: connect to host Inspiron-14z.local port 22: Connection refused
-fatal: The remote end hung up unexpectedly
-"""]]
-
-[[!taglink moreinfo]]
diff --git a/doc/bugs/Local_pairing_fails__58___PairListener_crashed.mdwn b/doc/bugs/Local_pairing_fails__58___PairListener_crashed.mdwn
deleted file mode 100644
--- a/doc/bugs/Local_pairing_fails__58___PairListener_crashed.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-What steps will reproduce the problem?
-
-Attempting to pair between a local repository and a repository on a remote computer on my LAN. Pairing is initiated from my local machine and I'm interacting with the webapp on the remote machine via firefox running over an ssh -X connection. Pairing appears to work up to a point: I enter the secret at one end, the pairing request shows up at the other end. I then enter the secret at that end.
-
-What is the expected output? What do you see instead?
-
-Pairing should complete successfully. Instead I get the error message "PairListener crashed: bad comment in public key", followed by the public key. The pairing process then does not move beyond the 'awaiting pairing' pages.
-
-What version of git-annex are you using? On what operating system?
-
-Local Machine: 3.20121127, Debian Wheezy/Sid (the only package from unstable is git-annex).
-Remote Machine: 3.20121113, Arch Linux (I installed the version from: https://aur.archlinux.org/packages/git-annex-bin/, which is supposedly the same as above, but reports the version specified here).
-
-Please provide any additional information below.
-
-None as yet. Let me know if there are any log files, etc. that I can post.
-
-> So it was the period in the hostname! [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/Location_change_of_remote_DNS_ignored.mdwn b/doc/bugs/Location_change_of_remote_DNS_ignored.mdwn
deleted file mode 100644
--- a/doc/bugs/Location_change_of_remote_DNS_ignored.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-### Please describe the problem.
-git-annex ignores changing of remote location in .git/config
-
-### What steps will reproduce the problem?
-1. Change Hostname of previously working remote so that the existing remote will no longer work and produce "ssh: connect to host <DNS hostname> port 22: Network is unreachable" errors.
-2. Stop all running git-annex processes.
-3. Edit DNS name in corresponding remote .git/config.
-4. Restart git-annex.
-5. Turns out: git-annex still uses the old remote's DNS name.
-
-### What version of git-annex are you using? On what operating system?
-newest one available.
-5.20151116-gbe86081 
-
-### Please provide any additional information below.
-See following entry in log, occurring plenty often:
-[[!format sh """
-ssh: connect to host some.unreachable.dns.net port 22: Network is unreachable
-rsync: connection unexpec
-  rsync failed -- run git annex again to resume file transfer
-tedly closed (0 bytes received so far) [Receiver]
-rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-Trust me I love git-annex. Had dreams of something like git-annex for almost 10 years. I instantly got stuck on git-annex when I have read the first few sentences about it. Since then, things in my life have changed in a quite serious manner.
-
-THANKS for your help!
diff --git a/doc/bugs/Low_disk_space_corrupts_state.mdwn b/doc/bugs/Low_disk_space_corrupts_state.mdwn
deleted file mode 100644
--- a/doc/bugs/Low_disk_space_corrupts_state.mdwn
+++ /dev/null
@@ -1,61 +0,0 @@
-### Please describe the problem.
-
-When there are low disk space left, changes in the annex repo are only semi updated, leaving the dir and git annex state out of sync, leaving error messages with "invalid objects" and "fatal: git-write-tree: error building trees".
-
-I ignored these errors, and kept on trying to copy over all the files to a remote disk, since I wanted a backup, which resultet in symlinks pointing to files which aren't there.
-
-Maybe git-annex should stop if it sees that it's not enough disk space to perform a certain operation? E.g. cache space needed for syncing.
-
-### What steps will reproduce the problem?
-
-I'm not certain about what command that created the issue, but i ran various commands:
-
-- `git annex sync EXTERNALREPO`
-- `git annex copy --to EXTERNALREPO`
-- `git annex unlock Videos/`
-- `git annex lock Videos/`
-
-My disk had 280MB left, and the repo were at a few GBs. Somewhere in between these commands, git-annex started producing a lot of error messages for various files.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20140717 (Fedora 23)
-
-### Please provide any additional information below.
-
-Unfortunately, I don't have the full transcript of my badly behaved commands. Instead I add some of the error messages:
-
-[[!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
-
-
-    $ git annex lock Videos/
-    error: invalid object 100644 56715f46d9256bdcef0cd387364818e597dc9f41 for '003/a56/SHA256-s23430--26dc3b33a5101e4ead217241a371b17f15e7a2f37bbcaedd0d35a0a1aa4eb9b0.log.cnk'
-    fatal: git-write-tree: error building trees
-    git-annex: failed to read sha from git write-tree
-    
-    $ git annex sync
-    error: refs/remotes/remote_annex/synced/master does not point to a valid object!
-    error: refs/remotes/home/synced/master does not point to a valid object!
-    error: refs/remotes/work_annex/synced/master does not point to a valid object!
-    error: refs/remotes/home_annex/synced/master does not point to a valid object!
-    error: refs/remotes/home/synced/master does not point to a valid object!
-    error: refs/remotes/work_annex/synced/master does not point to a valid object!
-    error: Could not read bf3d6640fa32460032926ae6...
-    fatal: revision walk setup failed
-    error: Could not read 8cdec1808723971eaf30e32...
-    fatal: revision walk setup failed
-    (merging work/git-annex into git-annex...)
-    fatal: unable to read tree 21e0681190de239f41d...
-    (Recording state in git...)
-    error: invalid object 100644 56715f36d9256bdeff... for '003/a56/SHA256-s23430--2dc3b411e5ead...log.cnk'
-    fatal: git-write-tree: error building trees
-    git-annex: failed to read sha from git write-tree
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-It worked as a charm until my disk got full! (Maybe it is better to split it up in various, smaller repos, and sync them individually?)
diff --git a/doc/bugs/MacOSX__58___archive_folders_not_working_as_expected.mdwn b/doc/bugs/MacOSX__58___archive_folders_not_working_as_expected.mdwn
deleted file mode 100644
--- a/doc/bugs/MacOSX__58___archive_folders_not_working_as_expected.mdwn
+++ /dev/null
@@ -1,123 +0,0 @@
-### Please describe the problem.
-
-I've added a backup USB Drive and a small archive USB drive and created a archive folder in the root of my ~/annex folder.
-
-If I move a file into the ~/annex folder and then move the same file into the ~/annex/archive folder the file gets uploaded to the small archive USB drive, but not dropped from my ~/annex/archive folder.
-
-[[!format sh """
-[2015-08-14 19:03:47 CEST] Committer: Adding git-annex..iving.ogv
-ok
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-add /Users/markus/annex/git-annex-assistant-archiving.ogv [2015-08-14 19:03:47 CEST] Committer: Committing changes to git
-[2015-08-14 19:03:47 CEST] Pusher: Syncing with annexbackup, annexarchive
-
-git-annex-assistant-archiving.ogv
-To /Volumes/annex-archive/annex-archive0
-   6ef9226..6c87a7d  git-annex -> synced/git-annex
-   b8855cc..bc20ee2  annex/direct/master -> synced/master
-To /Volumes/annex-backup/annex-backup
-   6ef9226..6c87a7d  git-annex -> synced/git-annex
-   b8855cc..bc20ee2  annex/direct/master -> synced/master
-    15428954 100%   20.71MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 15430948 bytes  received 42 bytes  10287326.67 bytes/sec
-total size is 15428954  speedup is 1.00
-[2015-08-14 19:03:48 CEST] Transferrer: Uploaded git-annex..iving.ogv
-[2015-08-14 19:03:49 CEST] Pusher: Syncing with annexbackup, annexarchive
-To /Volumes/annex-backup/annex-backup
-   6c87a7d..d24edd5  git-annex -> synced/git-annex
-To /Volumes/annex-archive/annex-archive
-   6c87a7d..d24edd5  git-annex -> synced/git-annex
-[2015-08-14 19:04:23 CEST] Committer: Adding git-annex..iving.ogv
-ok
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-add /Users/markus/annex/archive/git-annex-assistant-archiving.ogv [2015-08-14 19:04:23 CEST] Committer: Committing changes to git
-[2015-08-14 19:04:23 CEST] Pusher: Syncing with annexbackup, annexarchive
-
-git-annex-assistant-archiving.ogv
-To /Volumes/annex-backup/annex-backup:00
-   d24edd5..507be0c  git-annex -> synced/git-annex
-   bc20ee2..8fea81a  annex/direct/master -> synced/master
-To /Volumes/annex-archive/annex-archive
-   d24edd5..507be0c  git-annex -> synced/git-annex
-   bc20ee2..8fea81a  annex/direct/master -> synced/master
-    15428954 100%   30.72MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 15430948 bytes  received 42 bytes  30861980.00 bytes/sec
-total size is 15428954  speedup is 1.00
-[2015-08-14 19:04:23 CEST] Transferrer: Uploaded git-annex..iving.ogv
-[2015-08-14 19:04:25 CEST] Pusher: Syncing with annexbackup, annexarchive
-To /Volumes/annex-archive/annex-archive
-   507be0c..ba58f77  git-annex -> synced/git-annex
-To /Volumes/annex-backup/annex-backup
-   507be0c..ba58f77  git-annex -> synced/git-annex
-"""]]
-
-If I directly move a file e.g. from ~/Downloads to ~/annex/archive the file gets uploaded to the small archive USB drive and then dropped from my drive (as expected).
-
-[[!format sh """
-[2015-08-14 19:04:25 CEST] Pusher: Syncing with annexbackup, annexarchive
-To /Volumes/annex-archive/annex-archive
-   507be0c..ba58f77  git-annex -> synced/git-annex
-To /Volumes/annex-backup/annex-backup
-   507be0c..ba58f77  git-annex -> synced/git-annex
-[2015-08-14 19:09:44 CEST] Committer: Adding Oracle_VM..x-extpack
-ok
-(recording state in git...)
-(recording state in git...)
-(recording state in git...)
-add /Users/markus/annex/archive/Oracle_VM_VirtualBox_Extension_Pack-5.0.0-101573.vbox-extpack [2015-08-14 19:09:44 CEST] Committer: Committing changes to git
-[2015-08-14 19:09:44 CEST] Pusher: Syncing with annexbackup, annexarchive
-
-Oracle_VM_VirtualBox_Extension_Pack-5.0.0-101573.vbox-extpack
-To /Volumes/annex-backup/annex-backup:00
-   ba58f77..73eed9e  git-annex -> synced/git-annex
-   8fea81a..68526f7  annex/direct/master -> synced/master
-To /Volumes/annex-archive/annex-archive
-   ba58f77..73eed9e  git-annex -> synced/git-annex
-   8fea81a..68526f7  annex/direct/master -> synced/master
-    18028050 100%   25.65MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 18030392 bytes  received 42 bytes  12020289.33 bytes/sec
-total size is 18028050  speedup is 1.00
-[2015-08-14 19:09:45 CEST] Transferrer: Uploaded Oracle_VM..x-extpack
-ok
-(recording state in git...)
-(recording state in git...)
-drop /Users/markus/annex/archive/Oracle_VM_VirtualBox_Extension_Pack-5.0.0-101573.vbox-extpack [2015-08-14 19:09:47 CEST] Pusher: Syncing with annexbackup, annexarchive
-To /Volumes/annex-backup/annex-backup
-   73eed9e..93dc4a3  git-annex -> synced/git-annex
-To /Volumes/annex-archive/annex-archive
-   73eed9e..93dc4a3  git-annex -> synced/git-annex
-"""]]
-
-But if I move the file-link from ~/annex/archive to ~/annex the file stays a link and don't get transferred back to my drive.
-
-[[!format sh """
-[2015-08-14 19:12:39 CEST] Committer: Committing changes to git
-[2015-08-14 19:12:39 CEST] Pusher: Syncing with annexbackup, annexarchive
-To /Volumes/annex-backup/annex-backup
-   68526f7..082e0d8  annex/direct/master -> synced/master
-To /Volumes/annex-archive/annex-archive
-   68526f7..082e0d8  annex/direct/master -> synced/master
-"""]] 
-
-
-### What version of git-annex are you using? On what operating system?
-
-Im using MacOSX 10.11 Beta (15A243d) with the most resend MacOSX App.
- 
-[[!format sh """
-$ /Applications/git-annex.app/Contents/MacOS/git-annex version
-git-annex version: 5.20150812-ga6f7b36
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA TorrentParser Database
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-"""]]
diff --git a/doc/bugs/More_build_oddities_under_OpenBSD.mdwn b/doc/bugs/More_build_oddities_under_OpenBSD.mdwn
deleted file mode 100644
--- a/doc/bugs/More_build_oddities_under_OpenBSD.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-### Please describe the problem.
-I have managed to get most things working under OpenBSD 5.4 now.
-
-One of the last hurdles is that if I enable XMPP the build fails on "Loading package gnuidn-0.2.1..."
-See the error below.
-
-I suspect this is an error in git-annex because network-protocol-xmpp AND gnuidn compiles (and links) fine.
-
-I will gladly do anything I can to get this working, but I'm at a loss what to do right now. It's the last major piece of the puzzle before I get it properly functioning under OpenBSD.
-
-### What steps will reproduce the problem?
-Building with XMPP support under OpenBSD 5.4
-
-### What version of git-annex are you using? On what operating system?
-5.20140129 under OpenBSD 5.4
-
-### 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
-Loading package gnuidn-0.2.1 ... 
-
-GHCi runtime linker: fatal error: I found a duplicate definition for symbol
-   c_isascii
-whilst processing object file
-   /usr/local/lib/libidn.a
-This could be caused by:
-   * Loading two different object files which export the same symbol
-   * Specifying the same object file twice on the GHCi command line
-   * An incorrect `package.conf' entry, causing some object to be
-     loaded twice.
-GHCi cannot safely continue in this situation.  Exiting now.  Sorry.
-
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Moved_files_are_not_picked_up_by_the_assistant_on_OS_X.mdwn b/doc/bugs/Moved_files_are_not_picked_up_by_the_assistant_on_OS_X.mdwn
deleted file mode 100644
--- a/doc/bugs/Moved_files_are_not_picked_up_by_the_assistant_on_OS_X.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-### Please describe the problem.
-
-On indirect repos on OS X, when a symlink is moved asisstant does not pick it up it. Even though assistant syncs after delete/move changes are not committed. git annex status returns ?? for the moved files. when I run git annex add on the files it says it added them but instead they still show up as ??. the only way to solve the problem is to manually restart the daemon which commits them.
-
-### What steps will reproduce the problem?
-
-Moving an annex file.
-
-
-### What version of git-annex are you using? On what operating system?
-
-5.20140703 g3cfcd54
-
-### 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.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Non-annexed_files_being_annexed_and_not_stored.mdwn b/doc/bugs/Non-annexed_files_being_annexed_and_not_stored.mdwn
deleted file mode 100644
--- a/doc/bugs/Non-annexed_files_being_annexed_and_not_stored.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-### Please describe the problem.
-Somehow in my repo, perhaps since I started using the webapp, some of the files which have been commited plain into git have become annexed and turned into broken symlinks.  However, they are not marked as stored in any repositories, so it is difficult to recover them (they need to be checked out again from git history).
-
-### What steps will reproduce the problem?
-I'm not sure how this happened.
-
-### What version of git-annex are you using? On what operating system?
-I've been using builds of git annex between february and april of 2016, on linux.
-
-### Please provide any additional information below.
-
-It looks like the problem occurred on Sun Apr 10 00:49:27 2016 -0400.  I'm mostly recording here that this problem happened, as a lot is on my backlog atm, but if somebody wanted to let me know what logs to investigate, I plan to still be using this repository into the future.
-
-It looks like the system which caused this problem had a looser largefiles setting than the system which added the files to git.  It looks like it was using the 6.20160229-g37a89cc build.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Git-annex rocks, I am a monthly flatr'r.
diff --git a/doc/bugs/OSX__58___Assistant_leaves_repo_in_inconsistent_state.mdwn b/doc/bugs/OSX__58___Assistant_leaves_repo_in_inconsistent_state.mdwn
deleted file mode 100644
--- a/doc/bugs/OSX__58___Assistant_leaves_repo_in_inconsistent_state.mdwn
+++ /dev/null
@@ -1,151 +0,0 @@
-### Please describe the problem.
-Shortly after starting the assistant the local client repository is in an inconsistent state. Just using the cli works fine without destroying the repository.
-
-### What steps will reproduce the problem?
-- Working git annex repository
-
-- Start the Git-Annex Assistant
-> git annex assistant
-
-- Wait a short time and then check the repository state:
-> ➜  annex git:(master) ✗ gst
-> On branch master
-> error: Could not read ea63b58d1252e3432280cdce1282eb02035c926e
-> error: Could not read ea63b58d1252e3432280cdce1282eb02035c926e
-> fatal: Failed to traverse parents of commit 108fa97a989aeabff16738558e1aa636c836598b
-
-- refs/heads/synced/git-annex links to an unknown commit
-> ➜  .git git:(master) cat refs/heads/synced/git-annex
-> be8e6023fbb172b12cec8fdbaa8654194f71c4f5% 
-
-> git show be8e6023fbb172b12cec8fdbaa8654194f71c4f5
-> fatal: unable to read source tree (d2959525362dcadd4dbec96a8f18d80cc689a851)
-
-### What version of git-annex are you using? On what operating system?
-- git-annex version: 5.20150508-gf71c23f
-- Mac OSX 10.10.2
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-[2015-05-15 07:06:32 CEST] main: starting assistant version 5.20150508-gf71c23f
-[2015-05-15 07:06:32 CEST] Cronner: Consistency check in progress
-fsck 2015-05-01 07.56.02.jpg (checksum…)
-ok
-fsck 2015-05-01 09.55.58.jpg (checksum…)
-ok
-fsck 2015-05-14 12.38.24.jpg (checksum…)
-ok
-fsck 2015-05-14 12.39.30.jpg (checksum…)
-ok
-fsck 2015-05-14 12.40.49.jpg (checksum…)
-ok
-fsck 2015-05-14 12.40.53.jpg (checksum…)
-ok
-fsck 2015-05-14 12.43.42.jpg (checksum…)
-ok
-fsck 2015-05-14 12.44.16.jpg (checksum…)
-ok
-fsck 2015-05-14 12.45.11.jpg (checksum…)
-ok
-(recording state in git…)
-[2015-05-15 07:06:39 CEST] TransferScanner: Syncing with nas 
-(scanning…) [2015-05-15 07:06:39 CEST] Watcher: Performing startup scan
-gpg: Unterschrift vom Fr  8 Mai 22:10:28 2015 CEST mittels DSA-Schlüssel ID 89C809CB
-gpg: Unterschrift kann nicht geprüft werden: Öffentlicher Schlüssel nicht gefunden
-(started…) 
-[2015-05-15 07:06:41 CEST] Committer: Committing changes to git
-(recording state in git…)
-[2015-05-15 07:06:41 CEST] Pusher: Syncing with nas 
-
-
-0%            0.0 B/s 0s
-2%          32.0KB/s 47s
-...
-90%         467.6KB/s 0s
-                        
-[2015-05-15 07:06:47 CEST] Transferrer: Uploaded 2015-05-1..38.24.jpg
-
-
-0%            0.0 B/s 0s
-1%          32.0KB/s 54s
-...
-91%         534.5KB/s 0s
-                        
-[2015-05-15 07:06:54 CEST] Transferrer: Uploaded 2015-05-1..45.11.jpg
-
-
-0%            0.0 B/s 0s
-2%        16.0KB/s 1m30s
-…
-90%         440.4KB/s 0s
-                        
-[2015-05-15 07:07:01 CEST] Transferrer: Uploaded 2015-05-1..44.16.jpg
-
-
-0%            0.0 B/s 0s
-1%        16.0KB/s 1m42s
-...
-91%         508.2KB/s 0s
-                        
-[2015-05-15 07:07:07 CEST] Transferrer: Uploaded 2015-05-1..43.42.jpg
-
-
-0%            0.0 B/s 0s
-1%        16.0KB/s 1m40s
-...
-91%         371.6KB/s 0s
-                        
-[2015-05-15 07:07:13 CEST] Transferrer: Uploaded 2015-05-1..40.53.jpg
-
-
-0%            0.0 B/s 0s
-1%          32.0KB/s 50s
-...
-91%         495.1KB/s 0s
-                        
-[2015-05-15 07:07:19 CEST] Transferrer: Uploaded 2015-05-1..40.49.jpg
-
-
-0%            0.0 B/s 0s
-1%          32.0KB/s 53s
-...
-92%         528.2KB/s 0s
-                        
-[2015-05-15 07:07:25 CEST] Transferrer: Uploaded 2015-05-1..39.30.jpg
-ssh: connect to host 1.2.3.43 port 22: Operation timed out
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-fatal: ‚/Volumes/WD1500GB/annex‘ does not appear to be a git repository
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-ssh: connect to host 1.2.3.43 port 22: Operation timed out
-s(recording state in git…)
-fatal: ‚/Volumes/WD1500GB/annex‘ does not appear to be a git repository
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-ssh: connect to host 1.2.3.43 port 22: Operation timed out
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-[2015-05-15 07:08:16 CEST] Cronner: Attempting to repair aether [here]
-Unpacking all pack files.
-ssh: connect to host 1.2.3.43 port 22: Operation timed out
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-ssh: connect to host 1.2.3.36 port 22:sssssh: connect to host 1.2.3.43 port 22: Operation timed out
-fatal: early EOF
-
-
-# End of transcript or log.
-"""]]
diff --git a/doc/bugs/OSX_assistant_fails_to_download_new_file_after_initial_pass.mdwn b/doc/bugs/OSX_assistant_fails_to_download_new_file_after_initial_pass.mdwn
deleted file mode 100644
--- a/doc/bugs/OSX_assistant_fails_to_download_new_file_after_initial_pass.mdwn
+++ /dev/null
@@ -1,119 +0,0 @@
-### Please describe the problem.
-
-git-annex assistant on Mac OSX 10.8.5 fails to download new repo files from SSH remote/rsync shared-encryption annex after initial startup.  The assistant does sync with the repo and create symlinks for new files, and file contents can manually be retrieved using 'git annex get $file' once the file is in the repository. However, assistant makes no subsequent attempt to download the new files until assistant is restarted.  Once restarted, assistant downloads all new files for which is previously only had symlinks.
-
-git-annex whereis $file does not indicate that the files represented as symlinks are located on the Mac OSX clients in question until after files are manually retrieved or assistant is retarted and files are automatically downloaded, replacing the symlinks.
-
-git-annex assistant on Mac OSX does not have problems uploading files to the remote as they are added.
-
-git-annex 5.20140517.4 on Ubuntu 12.04 behaves as expected and downloads new files (with content) properly as they are added to the repo.
-
-### What steps will reproduce the problem?
-
-(all using git-annex webapp)
-
---create client repo on Mac OSX, direct mode (used two 10.8.5 machines)
-
---create client repo on Ubuntu, direct mode (used several 12.04 VMs)
-
---create repo (transfer mode) on VPS
-
---create shared encryption repo (backup mode) on same VPS
-
---add VPS transfer repo to each client (shared encryption repo appears and syncing is enabled for each client)
-
---create file in Mac OSX annex - file gets distributed to VPS backup repo and each linux system. Symlink is created on 2nd Mac OS X machine.
-
---create file in Ubuntu VM annex - file gets distributed to VPS backup repo and each linux system.  Symlink is created on both Mac OSX machines.
-
-
-
-### What version of git-annex are you using? On what operating system?
-git-annex version: 5.20140421 (installed using brew), Mac OSX 10.8.5
-
-I tested 5.20140613 (from brew) also and it appears to also not download new files automatically.
-
-
-
-### Please provide any additional information below.
-I've tested a few things I thought might be related.  Since restarting assistant seems to temporarily "fix" the problem, I thought there may be some SSH client caching problems... as in the existing connection not being reused properly.  However, I disabled annex.sshcaching as described elsewhere and that did not have any affect. 
-
-I've enabled XMPP and it only introduced more confusion as the XMPP messaging was not reliably consistent.
-
-daemon.log for Mac OS systems does not show the "Pusher" process getting initiated once new files are added to the repo if the assistant is currently running, however it is logged immediately after assistant is started if there are new files in the repo.  
-
-daemon.log for Ubuntu systems does contain the Pusher process event following the repo sync that takes place once the file has been added to the repo.
-
-
-
-[[!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
-
-MACOSX:user$git-annex assistant --autostart
-
-daemon.log:
-
-[2014-06-25 11:52:04 CDT] main: starting assistant version 5.20140421
-[2014-06-25 11:52:09 CDT] TransferScanner: Syncing with serverrepo 
-
-Already up-to-date.
-(scanning...) [2014-06-25 11:52:09 CDT] Watcher: Performing startup scan
-
-Already up-to-date.
-(started...) 
-[2014-06-25 11:52:10 CDT] Committer: Committing changes to git
-(Recording state in git...)
-(gpg) 
-Already up-to-date.
-
-Already up-to-date.
-[2014-06-25 11:52:11 CDT] Pusher: Syncing with serverrepo 
-
-GPGHMACSHA1--3e18c6a4ee5aece84f4f00fc2e7fcb828d8fa7d8
-Everything up-to-date0.00kB/s    0:00:00
-Everything up-to-date4.56MB/s    0:00:00
-     8409197 100%    4.94MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 38 bytes  received 8411383 bytes  2403263.14 bytes/sec
-total size is 8409197  speedup is 1.00
-[2014-06-25 11:52:13 CDT] Transferrer: Downloaded 67-more-fromubuntu
-[2014-06-25 11:52:14 CDT] Committer: Adding 67-more-fromubuntu
-add /Users/user/computer_annex/67-more-fromubuntu ok
-[2014-06-25 11:52:14 CDT] Committer: Committing changes to git
-(Recording state in git...)
-[2014-06-25 11:52:20 CDT] Pusher: Syncing with serverrepo 
-(Recording state in git...)
-To ssh://user@git-annex-server.remotehost.net-user_.2Fhome.2Fuser.2Fserver_repo/home/user/server_repo/
-   7e375a8..1a64e4c  git-annex -> synced/git-annex
-[2014-06-25 11:52:36 CDT] RemoteControl: Syncing with serverrepo 
-From ssh://git-annex-server.remotehost.net-user_.2Fhome.2Fuser.2Fserver_repo/home/user/server_repo
-   1a64e4c..dee9f84  synced/git-annex -> serverrepo/synced/git-annex
-   d424057..989003e  synced/master -> serverrepo/synced/master
-(merging serverrepo/synced/git-annex into git-annex...)
-
-<<<File gets added to any other client annex, MAC OSX or Ubuntu>>>
-
-Updating d424057..989003e
-Fast-forward
- 89-more-fromubuntu | 1 +
- 1 file changed, 1 insertion(+)
- create mode 120000 89-more-fromubuntu
-[2014-06-25 11:58:42 CDT] RemoteControl: Syncing with serverrepo 
-From ssh://git-annex-server.remotehost.net-user_.2Fhome.2Fuser.2Fserver_repo/home/user/server_repo
-   dee9f84..b24c8bf  synced/git-annex -> serverrepo/synced/git-annex
-(merging serverrepo/synced/git-annex into git-annex...)
-[2014-06-25 11:58:47 CDT] RemoteControl: Syncing with serverrepo 
-From ssh://git-annex-server.remotehost.net-user_.2Fhome.2Fuser.2Fserver_repo/home/user/server_repo
-   b24c8bf..6488b45  synced/git-annex -> serverrepo/synced/git-annex
-(merging serverrepo/synced/git-annex into git-annex...)
-[2014-06-25 11:58:56 CDT] RemoteControl: Syncing with serverrepo 
-From ssh://git-annex-server.remotehost.net-user_.2Fhome.2Fuser.2Fserver_repo/home/user/server_repo
-   6488b45..c73c180  synced/git-annex -> serverrepo/synced/git-annex
-(merging serverrepo/synced/git-annex into git-annex...)
-
-
-
-
-# End of transcript or log.
-"""]]
diff --git a/doc/bugs/OSX_case_insensitive_filesystem.mdwn b/doc/bugs/OSX_case_insensitive_filesystem.mdwn
deleted file mode 100644
--- a/doc/bugs/OSX_case_insensitive_filesystem.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-### Please describe the problem.
-
-I copied one entire folder from my OSX local machine to a linux server.
-That folder was version controlled by git with git annex big files.
-On the linux machine the symlinks were broken.
-
-In particular, on my local machine, a file like:
-```
-file.vcf.gz.tbi -> ../../.git/annex/objects/J4/Pg/SHA256E-s572463--85b357849ddad75fc1138b27d6af62cf410876e329ff035f21a631bd53146224.gz.tbi/SHA256E-s572463--85b357849ddad75fc1138b27d6af62cf410876e329ff035f21a631bd53146224.gz.tbi
-```
-
-but the file resides in:
-
-```
-../../.git/annex/objects/j4/Pg/SHA256E-s572463--85b357849ddad75fc1138b27d6af62cf410876e329ff035f21a631bd53146224.gz.tbi/SHA256E-s572463--85b357849ddad75fc1138b27d6af62cf410876e329ff035f21a631bd53146224.gz.tbi
-```
-
-Notice the difference between `J4` and `j4`. This is not a problem on my OSX but becomes one on a linux machine.
-
-### What steps will reproduce the problem?
-
-on local machine:
-```rsync -aztv folder/ remote-machine:folder/```
-
-on server:
-```find . -type l -exec sh -c "file -b {} | grep -q ^broken" \; -print```
-listed every symlink as broken.
-
-### What version of git-annex are you using? On what operating system?
-
-git annex version 6.20160318
-
-my special remote is rsync.net
-
-OSX 10.11.4
-
-Not sure of which option were used when creating ther file system, but I suspect a HFS+ case insensitive.
-
-### Please provide any additional information below.
-
-I wanted to do this full copy because the transfer speed from the special remote was too slow.
-Since then I got decent speeds, and if I do `git annex get .` on the server, all is fine.
-So, my "problem" is solved but I'm still wondering why the discrepant folder capitalization.
-
-[[!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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Sure, it works marvels :-) Also what I was trying to do is perhaps not by the book...
-
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
deleted file mode 100644
--- a/doc/bugs/Offline_editing_in_Android_removes_files_and_creates_links.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-### 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.
-"""]]
diff --git a/doc/bugs/One_Client_Not_Syncing_Content.mdwn b/doc/bugs/One_Client_Not_Syncing_Content.mdwn
deleted file mode 100644
--- a/doc/bugs/One_Client_Not_Syncing_Content.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-### Please describe the problem.
-
-I am fairly new to git annex - so I may have a misconception about how it should work.
-
-I have two laptop clients A and B that each have a single ssh remote, server C, setup as a full backup. Both of the laptops were setup through the web and have the assistant running.
-
-The problem I am seeing is that laptop A does not seem to sync contents created on laptop B. If i do the following:
-
-    laptopA# echo "foo" > bar
-    laptopB# cat bar
-    > foo
-
-    laptopB# echo "baz" > bang
-    laptopA# cat bang
-    > No such file or directory
-
-Laptop A has the symlink for bang but no contents. 
-
-if i run the following:
-
-    laptopA# git annex find --want-get --not --in .
-it returns 'bang'
-
-So it seems that laptopA wants the contents of the file created on laptopB, but doesn't sync it. If I manually run git annex sync --content everything is good. But when running the assistant should I not care about this?
-
-
-### What steps will reproduce the problem?
-
-See above.
-
-### What version of git-annex are you using? On what operating system?
-
-laptopA: OSX 10.10
-
-    git-annex version: 5.20150205
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA TorrentParser
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-laptopB: Archlinux
-
-    git-annex version: 5.20150219-g7751a05
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA TorrentParser
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-
-### Please provide any additional information below.
diff --git a/doc/bugs/Packfile_does_not_match_digest__58___gcrypt_with_assistant.mdwn b/doc/bugs/Packfile_does_not_match_digest__58___gcrypt_with_assistant.mdwn
deleted file mode 100644
--- a/doc/bugs/Packfile_does_not_match_digest__58___gcrypt_with_assistant.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-### Please describe the problem.
-I tried to sync a folder between two laptops, using the webapp and GPG encryption. I started by seting up the repository on laptop1, and then, while all the files were uploading, I went over to laptop2 and set things up there as well.
-
-At first, everything looked fine, laptop1 was uploading and laptop2 was downloading. Then, laptop2 reported "Failed to sync with VPS, and the log file showed a gcrypt error: "Packfile long-hash does not match digest!"
-
-### What version of git-annex are you using? On what operating system?
-
-
-
-Laptop1 is running wheezy with git annex version 6.20160307+gitgb095561-1~ndall+1 from neurodebian.
-
-VPS is running wheezy
-
-Laptop2 is runing jessie with git annex version 6.20160307+gitgb095561-1~ndall+1 from neurodebian.
-
-### Please provide any additional information below.
-
-http://denisa.hobbs.cz/laptop1.daemon.log
-http://denisa.hobbs.cz/laptop2.daemon.log
-
-### Have you had any luck using git-annex before?
-
-If I could get this syncing to work, then that would be great! I don't want to use unison, because that wouldn't be encrypted... So this would be wonderful.
-
diff --git a/doc/bugs/Permission_problem_in_second_user_account_on_Android.mdwn b/doc/bugs/Permission_problem_in_second_user_account_on_Android.mdwn
deleted file mode 100644
--- a/doc/bugs/Permission_problem_in_second_user_account_on_Android.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I get the following error message upon starting git-annex in a second user account on Android:
-
-    Falling back to hardcoded app location: cannot find expected files in /data/app-lib
-    git annex webapp
-    lib/lib.runshell.so: line 133: git: Permission denied
-
-    [Terminal session finished]
-
-The same version of git-annex works just fine for the primary user.
-(The primary user has root access which unfortunately can't be enabled for other user accounts.)
-
-### What version of git-annex are you using? On what operating system?
-
-  * git-annex: 5.20140710
-  * OS: CyanogenMod 10.1.3-p3110
diff --git a/doc/bugs/Podcast_filename_encoding_breaks_Android_client.mdwn b/doc/bugs/Podcast_filename_encoding_breaks_Android_client.mdwn
deleted file mode 100644
--- a/doc/bugs/Podcast_filename_encoding_breaks_Android_client.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-### Please describe the problem.
-
-Imported podcast files with iso-8859-1 encoding and swedish
-characters break repo on Android client with errors like.
-
-``error: unable to create file pod/Pennypodden___om_bostadspolitik/E54___�se_Richard__Gr�nby_.mp3 (Invalid argument)``
-
-Android clients empty direct repo is then distributed to all clients. Whole
-annex repo appears empty on all clients. Old revision has to be checked out to
-get files back. As soon as Android client syncs again however, all repos are
-emptied.
-
-### What steps will reproduce the problem?
-Set up indirect repo on linux laptop and direct repo on Android phone. On the
-laptop do:
-
-``git-annex importfeed http://www.pennygangen.se/podcast/podcast.xml``
-
-Wait for changes to propagate if using the assistant or sync manually.
-
-### What version of git-annex are you using? On what operating system?
-
- - Debian sid and testing with 5.20141125 on various clients and 
- - Android 4.4 with 5.20150219-gd24cfd3 on the phone.
-
-### Please provide any additional information below.
-
-After failing to write the files with problematic filenames git annex appears
-to belive it should commit the fact that the repo is empty and sync this
-emptiness to everyone.
-
-``convmv -f iso-8859-1 -t utf8 $problemfile --notest`` on the laptop fixes the
-filenames and the Android client stops wrecking everything.
-
diff --git a/doc/bugs/Prefered_Content_not_Taken_into_Account.mdwn b/doc/bugs/Prefered_Content_not_Taken_into_Account.mdwn
deleted file mode 100644
--- a/doc/bugs/Prefered_Content_not_Taken_into_Account.mdwn
+++ /dev/null
@@ -1,364 +0,0 @@
-### Please describe the problem.
-
-This is a follow up to the question [1]. I've created 4 repos with the following vicfg.
-
-[[!format sh """
-# git-annex configuration
-# 
-# Changes saved to this file will be recorded in the git-annex branch.
-# 
-# Lines in this file have the format:
-#   setting field = value
-
-# Repository trust configuration
-# (Valid trust levels: trusted semitrusted untrusted dead)
-# (for web)
-#trust 00000000-0000-0000-0000-000000000001 = semitrusted
-# (for bittorrent)
-#trust 00000000-0000-0000-0000-000000000002 = semitrusted
-# (for repo2)
-#trust 2837f3d7-7c58-4177-8877-620213cf5146 = semitrusted
-# (for repo3)
-#trust b3cbb656-e797-45ba-bf43-08523d463146 = semitrusted
-# (for repo1)
-#trust e7673de4-d465-4557-be8f-b1400acf923e = semitrusted
-
-# Repository groups
-# (Standard groups: client transfer backup incrementalbackup smallarchive archive source manual public unwanted)
-# (Separate group names with spaces)
-# (for repo3)
-group b3cbb656-e797-45ba-bf43-08523d463146 = PodA
-# (for repo1)
-group e7673de4-d465-4557-be8f-b1400acf923e = PodA
-# (for repo2)
-group 2837f3d7-7c58-4177-8877-620213cf5146 = PodB
-# (for web)
-#group 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#group 00000000-0000-0000-0000-000000000002 = 
-
-# Repository preferred contents
-# (Set to "standard" to use a repository's group's preferred contents)
-# (for repo2)
-wanted 2837f3d7-7c58-4177-8877-620213cf5146 = groupwanted
-# (for repo1)
-wanted e7673de4-d465-4557-be8f-b1400acf923e = groupwanted
-# (for web)
-#wanted 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#wanted 00000000-0000-0000-0000-000000000002 = 
-# (for repo3)
-#wanted b3cbb656-e797-45ba-bf43-08523d463146 = 
-
-# Group preferred contents
-# (Used by repositories with "groupwanted" in their preferred contents)
-groupwanted PodA = not copies=PodA:1
-groupwanted PodB = not copies=PodB:1
-#groupwanted archive = 
-#groupwanted backup = 
-#groupwanted client = 
-#groupwanted incrementalbackup = 
-#groupwanted manual = 
-#groupwanted public = 
-#groupwanted smallarchive = 
-#groupwanted source = 
-#groupwanted transfer = 
-#groupwanted unwanted = 
-
-# Standard preferred contents
-# (Used by wanted or groupwanted expressions containing "standard")
-# (For reference only; built-in and cannot be changed!)
-# standard client = (include=* and ((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1)))) or approxlackingcopies=1
-# standard transfer = (not (inallgroup=client and copies=client:2) and ((include=* and ((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1)))) or approxlackingcopies=1)) or approxlackingcopies=1
-# standard backup = anything
-# standard incrementalbackup = ((not copies=backup:1) and (not copies=incrementalbackup:1)) or approxlackingcopies=1
-# standard smallarchive = ((include=*/archive/* or include=archive/*) and ((not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1)) or approxlackingcopies=1
-# standard archive = (not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1
-# standard source = not (copies=1)
-# standard manual = present and ((include=* and ((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1)))) or approxlackingcopies=1)
-# standard public = inpreferreddir
-# standard unwanted = not anything
-
-# Repository required contents
-# (for web)
-#required 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#required 00000000-0000-0000-0000-000000000002 = 
-# (for repo2)
-#required 2837f3d7-7c58-4177-8877-620213cf5146 = 
-# (for repo3)
-#required b3cbb656-e797-45ba-bf43-08523d463146 = 
-# (for repo1)
-#required e7673de4-d465-4557-be8f-b1400acf923e = 
-
-# Scheduled activities
-# (Separate multiple activities with "; ")
-# (for web)
-#schedule 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#schedule 00000000-0000-0000-0000-000000000002 = 
-# (for repo2)
-#schedule 2837f3d7-7c58-4177-8877-620213cf5146 = 
-# (for repo3)
-#schedule b3cbb656-e797-45ba-bf43-08523d463146 = 
-# (for repo1)
-#schedule e7673de4-d465-4557-be8f-b1400acf923e = 
-"""]]
-
-This works as expected each file lands in 1 on of the repos on the group, not both. My original repo one with the problem has the following vicfg.
-
-[[!format sh """
-# git-annex configuration
-# 
-# Changes saved to this file will be recorded in the git-annex branch.
-# 
-# Lines in this file have the format:
-#   setting field = value
-
-# Repository trust configuration
-# (Valid trust levels: trusted semitrusted untrusted dead)
-# (for buse [origin])
-trust bff7238e-bd92-4929-88a8-c59c1a1dcf03 = semitrusted
-# (for web)
-trust 00000000-0000-0000-0000-000000000001 = untrusted
-# (for bittorrent)
-trust 00000000-0000-0000-0000-000000000002 = untrusted
-# (for )
-trust 03b19bdc-8497-4234-9ef6-c80d78e309f8 = dead
-# (for )
-trust 0b1a34ce-a8e3-4002-b46a-83e96626305f = dead
-# (for )
-trust 1459a238-6f60-4b43-8459-f7055b49e3c5 = dead
-# (for )
-trust 14738d0f-2f50-4f93-a8e4-c29870d02ba1 = dead
-# (for )
-trust 1512a830-7789-4bc8-a4a0-4c51eedd1109 = dead
-# (for )
-trust 174d69cb-9b97-44df-9f15-aea00f66a61c = dead
-# (for )
-trust 1ade7f29-2ad0-4ab0-a816-de55ffde389e = dead
-# (for )
-trust 1ba9d14b-deae-46e6-b451-dbf0fa8aa934 = dead
-# (for )
-trust 1dda84ca-4e8c-49b4-b673-35ec2b11557b = dead
-# (for )
-trust 29aad234-82e6-45c9-9822-b650290c2264 = dead
-# (for )
-trust 2be091a2-e721-4a86-a759-c5df7a41a61d = dead
-# (for )
-trust 3540b01a-03f0-4a58-8ea1-7ca80002a22d = dead
-# (for )
-trust 39b4d431-9d55-432d-a801-eaf4cf643de1 = dead
-# (for )
-trust 3a443e72-e8e0-11e2-b7db-8feb865236d4 = dead
-# (for )
-trust 42023cde-e95f-483c-8389-54b823aed789 = dead
-# (for )
-trust 54a819c1-65a3-44e9-86c3-0eb602223ee8 = dead
-# (for )
-trust 68846c04-912d-4bfc-80f3-3b8ec1e7a3c7 = dead
-# (for )
-trust 69b10f7e-0214-4fd0-8138-ff4717d1f39f = dead
-# (for )
-trust 7b236779-a961-4e72-abfc-56b764e53a9c = dead
-# (for )
-trust 7cde3feb-3876-4c2a-a772-d4541eac8614 = dead
-# (for )
-trust 8f3e7b2b-f8de-4114-bcdd-2ef3ed932c18 = dead
-# (for )
-trust a3bd1546-e8df-11e2-bc54-a7edbf29f5da = dead
-# (for )
-trust aa830256-4c63-44e3-9a3f-33b377de79d5 = dead
-# (for )
-trust ad46e36b-df9c-4d45-9af1-58d17e798afa = dead
-# (for )
-trust b5464382-b5f8-4ec3-b36d-a378b1202497 = dead
-# (for )
-trust b6317827-97d3-44bd-8197-91cae0b56a19 = dead
-# (for )
-trust bbb5dd98-f09d-11e2-a57b-d7185df9eef1 = dead
-# (for )
-trust c6dfb856-a0cc-4e79-acbd-3600f4bce158 = dead
-# (for )
-trust ccb11b54-ecc8-11e2-ad6c-af6445c8eedc = dead
-# (for )
-trust cdbf33bc-17bc-49e3-b0d1-afa653a2c1f7 = dead
-# (for )
-trust d8cf3fb5-4e8e-4732-b566-dab6f2d9dc4c = dead
-# (for )
-trust e160a8ef-3b3d-4f0e-88eb-9ceba11b2f57 = dead
-# (for )
-trust e39439a0-1486-55a0-ada3-c9785c08d650 = dead
-# (for )
-trust e8bcb64b-17df-4d79-a5b6-9d444e4afa51 = dead
-# (for )
-trust eae76b0e-ada9-4c5e-b9e3-db5998324e70 = dead
-# (for )
-trust ec71b4bd-1b7b-408c-906f-91c4168fd89f = dead
-# (for )
-trust f936015b-d62b-4899-a3f0-8d91efb385b5 = dead
-# (for damla)
-#trust 132503d4-dcde-4790-aabb-ee5ba539a3a0 = semitrusted
-# (for ozge)
-#trust 1e1d0c4e-b1da-465f-9140-7128a7e3ee13 = semitrusted
-# (for mini)
-#trust 7deafa14-8add-4316-984f-9b24eb713770 = semitrusted
-# (for irem)
-#trust aabc3536-a423-42b6-a234-5f110607296e = semitrusted
-# (for yesim)
-#trust ba3593c0-ddf1-4433-9916-aa25d1a52895 = semitrusted
-# (for hubic)
-#trust f980f309-0ebd-41c8-9303-73aff6409365 = semitrusted
-
-# Repository groups
-# (Standard groups: client transfer backup incrementalbackup smallarchive archive source manual public unwanted)
-# (Separate group names with spaces)
-# (for damla)
-group 132503d4-dcde-4790-aabb-ee5ba539a3a0 = PodA
-# (for ozge)
-group 1e1d0c4e-b1da-465f-9140-7128a7e3ee13 = PodA
-# (for irem)
-group aabc3536-a423-42b6-a234-5f110607296e = PodA
-# (for yesim)
-group ba3593c0-ddf1-4433-9916-aa25d1a52895 = PodA
-# (for buse [origin])
-group bff7238e-bd92-4929-88a8-c59c1a1dcf03 = PodA
-# (for hubic)
-group f980f309-0ebd-41c8-9303-73aff6409365 = PodB
-# (for mini)
-group 7deafa14-8add-4316-984f-9b24eb713770 = manual
-# (for web)
-#group 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#group 00000000-0000-0000-0000-000000000002 = 
-
-# Repository preferred contents
-# (Set to "standard" to use a repository's group's preferred contents)
-# (for damla)
-wanted 132503d4-dcde-4790-aabb-ee5ba539a3a0 = groupwanted
-# (for ozge)
-wanted 1e1d0c4e-b1da-465f-9140-7128a7e3ee13 = groupwanted
-# (for irem)
-wanted aabc3536-a423-42b6-a234-5f110607296e = groupwanted
-# (for yesim)
-wanted ba3593c0-ddf1-4433-9916-aa25d1a52895 = groupwanted
-# (for buse [origin])
-wanted bff7238e-bd92-4929-88a8-c59c1a1dcf03 = groupwanted
-# (for hubic)
-wanted f980f309-0ebd-41c8-9303-73aff6409365 = groupwanted
-# (for mini)
-wanted 7deafa14-8add-4316-984f-9b24eb713770 = standard
-# (for web)
-#wanted 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#wanted 00000000-0000-0000-0000-000000000002 = 
-
-# Group preferred contents
-# (Used by repositories with "groupwanted" in their preferred contents)
-groupwanted storagePodA = 
-groupwanted storagePodB = 
-groupwanted PodA = not copies=PodA:1
-groupwanted PodB = not copies=PodB:1
-#groupwanted archive = 
-#groupwanted backup = 
-#groupwanted client = 
-#groupwanted incrementalbackup = 
-#groupwanted manual = 
-#groupwanted public = 
-#groupwanted smallarchive = 
-#groupwanted source = 
-#groupwanted transfer = 
-#groupwanted unwanted = 
-
-# Standard preferred contents
-# (Used by wanted or groupwanted expressions containing "standard")
-# (For reference only; built-in and cannot be changed!)
-# standard client = (include=* and ((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1)))) or approxlackingcopies=1
-# standard transfer = (not (inallgroup=client and copies=client:2) and ((include=* and ((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1)))) or approxlackingcopies=1)) or approxlackingcopies=1
-# standard backup = anything
-# standard incrementalbackup = ((not copies=backup:1) and (not copies=incrementalbackup:1)) or approxlackingcopies=1
-# standard smallarchive = ((include=*/archive/* or include=archive/*) and ((not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1)) or approxlackingcopies=1
-# standard archive = (not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1
-# standard source = not (copies=1)
-# standard manual = present and ((include=* and ((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1)))) or approxlackingcopies=1)
-# standard public = inpreferreddir
-# standard unwanted = not anything
-
-# Repository required contents
-# (for damla)
-required 132503d4-dcde-4790-aabb-ee5ba539a3a0 = 
-# (for ozge)
-required 1e1d0c4e-b1da-465f-9140-7128a7e3ee13 = 
-# (for irem)
-required aabc3536-a423-42b6-a234-5f110607296e = 
-# (for yesim)
-required ba3593c0-ddf1-4433-9916-aa25d1a52895 = 
-# (for buse [origin])
-required bff7238e-bd92-4929-88a8-c59c1a1dcf03 = 
-# (for web)
-#required 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#required 00000000-0000-0000-0000-000000000002 = 
-# (for mini)
-#required 7deafa14-8add-4316-984f-9b24eb713770 = 
-# (for hubic)
-#required f980f309-0ebd-41c8-9303-73aff6409365 = 
-
-# Scheduled activities
-# (Separate multiple activities with "; ")
-# (for web)
-#schedule 00000000-0000-0000-0000-000000000001 = 
-# (for bittorrent)
-#schedule 00000000-0000-0000-0000-000000000002 = 
-# (for damla)
-#schedule 132503d4-dcde-4790-aabb-ee5ba539a3a0 = 
-# (for ozge)
-#schedule 1e1d0c4e-b1da-465f-9140-7128a7e3ee13 = 
-# (for mini)
-#schedule 7deafa14-8add-4316-984f-9b24eb713770 = 
-# (for irem)
-#schedule aabc3536-a423-42b6-a234-5f110607296e = 
-# (for yesim)
-#schedule ba3593c0-ddf1-4433-9916-aa25d1a52895 = 
-# (for buse [origin])
-#schedule bff7238e-bd92-4929-88a8-c59c1a1dcf03 = 
-# (for hubic)
-#schedule f980f309-0ebd-41c8-9303-73aff6409365 = 
-
-"""]]
-
-With this settings all the repos tries get all of the files files that are present in other groups. Is there a way to debug this problem and tell why git-annex is trying to get the files? According to the settings it should not. I've also tried deleting all history this is a big (around 7 TB) old repo I thought maybe something got messed up along the way but it did not fix it.
-
-### What steps will reproduce the problem?
-
-
-### What version of git-annex are you using? On what operating system?
-
-[[!format sh """
-git-annex version: 5.20150825-g7826f84
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA Database                                                                                                     
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SKEIN256E SKEIN256 SKEIN512E SKEIN512
- SHA1E SHA1 MD5E MD5 WORM URL                                                                                       
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-"""]]
-
-On Ubuntu 14.04. All repos are on external USB drives on the same machine except the one called "mini".
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
-[1] https://git-annex.branchable.com/forum/git-annex_does_not_respect_preferred_content_settings/
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/Problem_with_windows_version__58___1.9.5.msysgit.0_wrong_path.mdwn b/doc/bugs/Problem_with_windows_version__58___1.9.5.msysgit.0_wrong_path.mdwn
deleted file mode 100644
--- a/doc/bugs/Problem_with_windows_version__58___1.9.5.msysgit.0_wrong_path.mdwn
+++ /dev/null
@@ -1,82 +0,0 @@
-### Please describe the problem.
-1. git annex  - command not found - found a workaround
-2. git assistant broken
-
-### What steps will reproduce the problem?
-1. fresh download of 19.5.msysgit.0
-2. fresh download of recent git-annex
-### What version of git-annex are you using? On what operating system?
-1. Window 7.
-2. git version 1.9.5.msysgit.0
-2. git-annex version 5.20150205-g0f63eb0
-
-### Please provide any additional information below.
-After copying
-   cp cmd/git-annex bin
-in the  git install directory it was working.
-
-Adding a fresh "removeable Storage" repository delivered
-git [Param "config",Param "core.fsyncobjectfiles",Param "true"] failed
-
-calling the command (locally) manually:
-   git config core.fsyncobjectfiles true
-works fine, but i found no way to call it on the remote directory.
-The "annex" directory on H: was created and looks like a bare git depot.
-
-[[!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
-[2015-02-07 17:09:04 Mitteleuropõische Zeit] main: starting assistant version 5.20150205-g0f63eb0
-[2015-02-07 17:09:04 Mitteleuropõische Zeit] Cronner: You should enable consistency checking to protect your data. 
-(scanning...) [2015-02-07 17:09:05 Mitteleuropõische Zeit] Watcher: Performing startup scan
-(started...) [2015-02-07 17:09:42 Mitteleuropõische Zeit] main: starting assistant version 5.20150205-g0f63eb0
-[2015-02-07 17:09:42 Mitteleuropõische Zeit] Cronner: You should enable consistency checking to protect your data. 
-recv: failed (No error)
-(scanning...) [2015-02-07 17:09:42 Mitteleuropõische Zeit] Watcher: Performing startup scan
-(started...) [2015-02-07 17:09:51 Mitteleuropõische Zeit] main: starting assistant version 5.20150205-g0f63eb0
-[2015-02-07 17:09:52 Mitteleuropõische Zeit] Cronner: You should enable consistency checking to protect your data. 
-(scanning...) [2015-02-07 17:09:52 Mitteleuropõische Zeit] Watcher: Performing startup scan
-(started...) [2015-02-07 17:10:18 Mitteleuropõische Zeit] Committer: Adding DSC07173.JPG DSC07174.JPG DSC07175.JPG
-
-add 2014-08-01-Waal\DSC07173.JPG Committer crashed: sha256sum parse error
-[2015-02-07 17:10:18 Mitteleuropõische Zeit] Committer: warning Committer crashed: sha256sum parse error
-recv: failed (No error)
-[2015-02-07 17:10:27 Mitteleuropõische Zeit] Committer: Adding DSC07175.JPG DSC07176.JPG DSC07177.JPG DSC07178.JPG
-add 2014-08-01-Waal\DSC07175.JPG Committer crashed: sha256sum parse error
-[2015-02-07 17:10:27 Mitteleuropõische Zeit] Committer: warning Committer crashed: sha256sum parse error
-[2015-02-07 17:10:37 Mitteleuropõische Zeit] main: starting assistant version 5.20150205-g0f63eb0
-[2015-02-07 17:10:37 Mitteleuropõische Zeit] Cronner: You should enable consistency checking to protect your data. 
-recv: failed (No error)
-recv: failed (No error)
-DaemonStatus crashed: MoveFileEx ".git\\annex\\daemon.status6720.tmp" ".git\\annex\\daemon.status": permission denied (Zugriff verweigert)
-[2015-02-07 17:10:37 Mitteleuropõische Zeit] DaemonStatus: warning DaemonStatus crashed: MoveFileEx ".git\\annex\\daemon.status6720.tmp" ".git\\annex\\daemon.status": permission denied (Zugriff verweigert)
-(scanning...) [2015-02-07 17:10:37 Mitteleuropõische Zeit] Watcher: Performing startup scan
-(started...) [2015-02-07 17:10:38 Mitteleuropõische Zeit] Committer: Adding DSC07178.JPG DSC07177.JPG DSC07176.JPG DSC07175.JPG DSC07174.JPG DSC07173.JPG
-
-add .\2014-08-01-Waal\DSC07178.JPG Committer crashed: sha256sum parse error
-[2015-02-07 17:10:38 Mitteleuropõische Zeit] Committer: warning Committer crashed: sha256sum parse error
-[2015-02-07 17:10:40 Mitteleuropõische Zeit] main: starting assistant version 5.20150205-g0f63eb0
-WebApp crashed: MoveFileEx ".git\\annex\\webapp.html5592.tmp" ".git\\annex\\webapp.html": permission denied (Zugriff verweigert)
-[2015-02-07 17:10:40 Mitteleuropõische Zeit] WebApp: warning WebApp crashed: MoveFileEx ".git\\annex\\webapp.html5592.tmp" ".git\\annex\\webapp.html": permission denied (Zugriff verweigert)
-[2015-02-07 17:10:40 Mitteleuropõische Zeit] Cronner: You should enable consistency checking to protect your data. 
-(scanning...) [2015-02-07 17:10:41 Mitteleuropõische Zeit] Watcher: Performing startup scan
-(started...) [2015-02-07 17:10:41 Mitteleuropõische Zeit] Committer: Adding DSC07178.JPG DSC07177.JPG DSC07176.JPG DSC07175.JPG DSC07174.JPG DSC07173.JPG
-
-add .\2014-08-01-Waal\DSC07178.JPG Committer crashed: sha256sum parse error
-[2015-02-07 17:10:42 Mitteleuropõische Zeit] Committer: warning Committer crashed: sha256sum parse error
-rerrrcereevcecc:vcvv :v::f :  af ffiafaaliaiielilldelee dedd( d  N( ((oN(NN oNooe o  re eerrerrorrrrroroo)rorr
-)r))
-)
-
-
-recv: failed (No error)
-recv: failed (No error)
-fatal: unable to access '..\..\..\..\H:\annex/config': Invalid argument
-07/Feb/2015:17:11:40 +0100 [Error#yesod-core] git [Param "config",Param "core.fsyncobjectfiles",Param "true"] failed @(yesod-core-1.2.19:Yesod.Core.Class.Yesod .\Yesod\Core\Class\Yesod.hs:503:5)
-
-
-
-# End of transcript or log.
-"""]]
-
-> User error; [[closing|done]] --[[Joey]]
diff --git a/doc/bugs/R__47__O_permissions_are_stalking_me_somehow.mdwn b/doc/bugs/R__47__O_permissions_are_stalking_me_somehow.mdwn
deleted file mode 100644
--- a/doc/bugs/R__47__O_permissions_are_stalking_me_somehow.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-### Please describe the problem.
-
-I have got data which I was trying to add to an existing annex.  Unfortunately I have missed first that some files were not having write permissions so initial 'annex add' failed with similar to below messages, so I have pruned misctmp, adjusted permissions and have tried to add again -- but the same error keeps coming back
-
-[[!format sh """
-% chmod +w -R S1/DDA-Freeviewing/surf2anat
-
-% ls -l S1/DDA-Freeviewing/surf2anat/S1_run1_lh*
--rw-r----- 2 yoh retino 241147956 Feb 28 21:46 S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz
-
-% rm -rf .git/annex/misctmp/*
-zsh: sure you want to delete all the files in /mnt/datasets/mikemp/data-annex/.git/annex/misctmp [yn]? y
-
-% git annex add S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz
-add S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz
-git-annex: .git/annex/misctmp/S1_run1_lh1804289383846930886: rename: permission denied (Permission denied)
-failed
-git-annex: add: 1 failed
-
-% ls -l S1/DDA-Freeviewing/surf2anat/S1_run1_lh*
--r--r----- 2 yoh retino 241147956 Feb 28 21:46 S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz
-
-% git annex version
-git-annex version: 6.20160307+gitgb095561-1~ndall+1
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-
-
-% rm -rf .git/annex/misctmp/*
-zsh: sure you want to delete all the files in /mnt/datasets/mikemp/data-annex/.git/annex/misctmp [yn]? y
-
-% chmod +w -R S1/DDA-Freeviewing/surf2anat
-
-% git annex add --debug S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz
-[2016-03-10 10:15:22.578786] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","ls-files","--others","--exclude-standard","-z","--","S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz"]
-[2016-03-10 10:15:22.583854] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","check-attr","-z","--stdin","annex.backend","annex.numcopies","annex.largefiles","--"]
-[2016-03-10 10:15:22.584443] read: git ["--version"]
-[2016-03-10 10:15:22.588703] process done ExitSuccess
-add S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz [2016-03-10 10:15:23.186056] read: sha256sum [".git/annex/misctmp/S1_run1_lh1804289383846930886"]
-[2016-03-10 10:15:24.611133] process done ExitSuccess
-
-git-annex: .git/annex/misctmp/S1_run1_lh1804289383846930886: rename: permission denied (Permission denied)
-failed
-[2016-03-10 10:15:24.648808] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","diff","--name-only","--diff-filter=T","-z","--","S1/DDA-Freeviewing/surf2anat/S1_run1_lh_process_surf.nii.gz"]
-git-annex: add: 1 failed
-% ls -l .git/annex/misctmp/S1_run1_lh1804289383846930886
--r--r----- 2 yoh retino 241147956 Feb 28 21:46 .git/annex/misctmp/S1_run1_lh1804289383846930886
-
-"""]]
-
-[[!meta author=yoh]]
diff --git a/doc/bugs/Race_condition_between_watch__47__assistant_and_addurl.mdwn b/doc/bugs/Race_condition_between_watch__47__assistant_and_addurl.mdwn
deleted file mode 100644
--- a/doc/bugs/Race_condition_between_watch__47__assistant_and_addurl.mdwn
+++ /dev/null
@@ -1,195 +0,0 @@
-Addurl can fail due to an apparent race condition when watch or assistant is running and the repository is in direct mode. The following stress test script encounters the bug consistently on my system. I am running git-annex 5.20140320 on on Ubuntu 13.10.
-
-[[!format sh """
-#!/bin/sh
-set -eu
-
-cleanup() {
-  local dir
-  dir="$1"; shift
-  if [ -d "$dir" ]; then
-    (
-      set -x
-      fuser -k -w "$dir/annex/.git/annex/daemon.log" || :
-      find "$dir" -type d -exec chmod 700 '{}' '+'
-      find "$dir" -type f -exec chmod 600 '{}' '+'
-      rm -fr "$dir"
-    )
-  fi
-}
-
-go() {
-  local dir
-  dir="$(mktemp -d "${TMP:-/tmp}/stress-annex.XXXXXXXXXX")"
-  trap "cleanup '$dir'" 0 1 2 13 15
-
-  (
-    cd "$dir"
-    mkdir annex
-    cd annex
-    set -x
-
-    git init
-    git annex init
-    git annex direct
-    git annex watch
-
-    for n in $(seq 100); do
-      git annex addurl --file=foo http://heh.fi/robots.txt
-      git annex sync
-      rm -f foo
-      git annex sync
-    done
-
-    git annex watch --stop
-    git annex uninit
-  )
-
-  cleanup "$dir"
-  trap - 0 1 2 13 14
-}
-
-go
-"""]]
-
-Script output:
-
-[[!format sh """
-% ./stress-annex
-+ git init
-Initialized empty Git repository in /tmp/stress-annex.OKj6D8kVmV/annex/.git/
-+ git annex init
-init  ok
-(Recording state in git...)
-+ git annex direct
-commit  
-On branch master
-
-Initial commit
-
-nothing to commit
-ok
-direct  ok
-+ git annex watch
-+ seq 100
-+ git annex addurl --file=foo http://heh.fi/robots.txt
-addurl foo (downloading http://heh.fi/robots.txt ...) 
---2014-03-27 03:14:29--  http://heh.fi/robots.txt
-Resolving heh.fi (heh.fi)... 83.145.237.222
-Connecting to heh.fi (heh.fi)|83.145.237.222|:80... connected.
-HTTP request sent, awaiting response... 200 OK
-Length: 0 [text/plain]
-Saving to: ‘/tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’
-
-    [ <=>                                                                                      ] 0           --.-K/s   in 0s      
-
-2014-03-27 03:14:29 (0.00 B/s) - ‘/tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’ saved [0/0]
-
-(Recording state in git...)
-ok
-(Recording state in git...)
-+ git annex sync
-commit  ok
-+ rm -f foo
-+ git annex sync
-commit  (Recording state in git...)
-ok
-(Recording state in git...)
-+ git annex addurl --file=foo http://heh.fi/robots.txt
-addurl foo (downloading http://heh.fi/robots.txt ...) 
---2014-03-27 03:14:29--  http://heh.fi/robots.txt
-Resolving heh.fi (heh.fi)... 83.145.237.222
-Connecting to heh.fi (heh.fi)|83.145.237.222|:80... connected.
-HTTP request sent, awaiting response... 200 OK
-Length: 0 [text/plain]
-Saving to: ‘/tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’
-
-    [ <=>                                                                                      ] 0           --.-K/s   in 0s      
-
-2014-03-27 03:14:29 (0.00 B/s) - ‘/tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’ saved [0/0]
-
-(Recording state in git...)
-ok
-(Recording state in git...)
-+ git annex sync
-commit  ok
-+ rm -f foo
-+ git annex sync
-commit  (Recording state in git...)
-ok
-(Recording state in git...)
-+ git annex addurl --file=foo http://heh.fi/robots.txt
-addurl foo (downloading http://heh.fi/robots.txt ...) 
---2014-03-27 03:14:29--  http://heh.fi/robots.txt
-Resolving heh.fi (heh.fi)... 83.145.237.222
-Connecting to heh.fi (heh.fi)|83.145.237.222|:80... connected.
-HTTP request sent, awaiting response... 200 OK
-Length: 0 [text/plain]
-Saving to: ‘/tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’
-
-    [ <=>                                                                                      ] 0           --.-K/s   in 0s      
-
-2014-03-27 03:14:29 (0.00 B/s) - ‘/tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’ saved [0/0]
-
-
-git-annex: /tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/objects/pX/ZJ/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/: openTempFile: permission denied (Permission denied)
-failed
-git-annex: addurl: 1 failed
-+ fuser -k -w /tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/daemon.log
-/tmp/stress-annex.OKj6D8kVmV/annex/.git/annex/daemon.log: 30704 30709 30735 30738 30778
-+ find /tmp/stress-annex.OKj6D8kVmV -type d -exec chmod 700 {} +
-+ find /tmp/stress-annex.OKj6D8kVmV -type f -exec chmod 600 {} +
-+ rm -fr /tmp/stress-annex.OKj6D8kVmV
-"""]]
-
-The script also seems to encounter another issue. The output when seq 100 is changed to seq 1 and addurl happens to succeed:
-
-[[!format sh """
-+ git init
-Initialized empty Git repository in /tmp/stress-annex.QEs0pNyS9z/annex/.git/
-+ git annex init
-init  ok
-(Recording state in git...)
-+ git annex direct
-commit  
-On branch master
-
-Initial commit
-
-nothing to commit
-ok
-direct  ok
-+ git annex watch
-+ seq 1
-+ git annex addurl --file=foo http://heh.fi/robots.txt
-addurl foo (downloading http://heh.fi/robots.txt ...) 
---2014-03-27 03:17:20--  http://heh.fi/robots.txt
-Resolving heh.fi (heh.fi)... 83.145.237.222
-Connecting to heh.fi (heh.fi)|83.145.237.222|:80... connected.
-HTTP request sent, awaiting response... 200 OK
-Length: 0 [text/plain]
-Saving to: ‘/tmp/stress-annex.QEs0pNyS9z/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’
-
-    [ <=>                                                                                      ] 0           --.-K/s   in 0s      
-
-2014-03-27 03:17:20 (0.00 B/s) - ‘/tmp/stress-annex.QEs0pNyS9z/annex/.git/annex/tmp/URL--http&c%%heh.fi%robots.txt’ saved [0/0]
-
-(Recording state in git...)
-ok
-(Recording state in git...)
-+ git annex sync
-commit  ok
-+ rm -f foo
-+ git annex sync
-commit  (Recording state in git...)
-ok
-(Recording state in git...)
-+ git annex watch --stop
-+ git annex uninit
-git-annex: /tmp/stress-annex.QEs0pNyS9z/annex/.git/annex/objects/pX/ZJ/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.map: removeLink: permission denied (Permission denied)
-+ fuser -k -w /tmp/stress-annex.QEs0pNyS9z/annex/.git/annex/daemon.log
-+ :
-+ find /tmp/stress-annex.QEs0pNyS9z -type d -exec chmod 700 {} +
-+ find /tmp/stress-annex.QEs0pNyS9z -type f -exec chmod 600 {} +
-+ rm -fr /tmp/stress-annex.QEs0pNyS9z
-"""]]
diff --git a/doc/bugs/Recreating_remote_repository__39__s_annex.mdwn b/doc/bugs/Recreating_remote_repository__39__s_annex.mdwn
deleted file mode 100644
--- a/doc/bugs/Recreating_remote_repository__39__s_annex.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-### Please describe the problem.
-My remote repository's annex was lost.  In the webapp, I can now click to recreate it, that fails half-way.
-
-### What steps will reproduce the problem?
-Create a remote repo, delete the annex directory.
-
-### What version of git-annex are you using? On what operating system?
-git-annex version: 5.20140517-g0aed6d9
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-local repository version: unknown
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-
-### Please provide any additional information below.
-
-[[!format sh """
-gcrypt: Development version -- Repository format MAY CHANGE
-gcrypt: Repository not found: ssh://lhunath@satura.lyndir.com/~/annex/
-gcrypt: Setting up new repository
-gcrypt: Remote ID is :id:ROTs3SImZEdvdO2yCMku
-gcrypt: Encrypting to:  -R 0EF21226F43EA6BC
-gcrypt: Requesting manifest signature
-Warning: remote port forwarding failed for listen port 2222
-Warning: remote port forwarding failed for listen port 37218
-fatal: '~/annex/' does not appear to be a git repository
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Remote_repositories_have_to_be_setup_encrypted.mdwn b/doc/bugs/Remote_repositories_have_to_be_setup_encrypted.mdwn
deleted file mode 100644
--- a/doc/bugs/Remote_repositories_have_to_be_setup_encrypted.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-What steps will reproduce the problem?
-
-Create a new remote repository in the webapp. Get to the final phase of the setup where it asks you if you want to encrypt it, yet no other option is given to continue.
-
-What is the expected output? What do you see instead?
-
-At least two options:
-
-1. Use an encrypted rsync repository on the server (the existing one)
-2. Use an unencrypted rsync repository on the server
-
-What version of git-annex are you using? On what operating system?
-
-    $ ./git-annex version
-    git-annex version: 3.20130102
-
-    $ uname -a
-    Linux wintermute 3.2.0-35-generic #55-Ubuntu SMP Wed Dec 5 17:45:18 UTC 2012 i686 i686 i386 GNU/Linux
-
-    $ lsb_release -a
-    Distributor ID:	Ubuntu
-    Description:	Ubuntu 12.04.1 LTS
-    Release:	12.04
-    Codename:	precise
-
-[[!meta title="webapp does not allow disabling encryption on rsync special remotes"]]
-[[!tag /design/assistant]]
-[[!tag confirmed]]
diff --git a/doc/bugs/Renamed_special_remote_cannot_be_reactivated_by_the_webapp.mdwn b/doc/bugs/Renamed_special_remote_cannot_be_reactivated_by_the_webapp.mdwn
deleted file mode 100644
--- a/doc/bugs/Renamed_special_remote_cannot_be_reactivated_by_the_webapp.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Setup:
-
-* fresh install of Debian Wheezy with git-annex 4.20130227 pulled in from unstable
-* clone existing repository and activate assistant
-* repository has encrypted rsync remote originally setup with the name `metaarray`
-* this remote was renamed to `ma` a long time ago, using the webapp
-* had to perform this rename on each client
-
-Steps:
-
-* attempt to reactivate special remote using webapp repositories page, on reinstalled machine
-
-Expected:
-
-* special remote starts working
-* renaming special remotes ought to survive clones
-
-Actual:
-
-* firstly, special remote activation page has blank hostname box and the hostname of the machine is in the username box
-* form gives error "cannot change encryption type of existing remote"
-
-Workaround:
-
-* execute `git annex initremote metaarray`
-* rename `metaarray` to `ma` again using the webapp
-
-Perhaps the renaming of the remote not surviving clones is unavoidable, but the webapp should be able to cope with the situation.  Thanks.
-
-[[!tag /design/assistant]]
diff --git a/doc/bugs/Resource_exhausted.mdwn b/doc/bugs/Resource_exhausted.mdwn
deleted file mode 100644
--- a/doc/bugs/Resource_exhausted.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-What steps will reproduce the problem?
-My annex dir has 23459 files and uses 749MB disk space.
-Just create a repository put this dir inside, and git-annex will crash.
-
-What is the expected output? What do you see instead?
-I expect git-annex handles large number of files, and does not watch every single file of it.
-
-What version of git-annex are you using? On what operating system?
-I'm using git-annex linux build, version 2013.04.17.
-
-Please provide any additional information below.
-
-    [2013-04-17 23:52:35 CEST] Transferrer: Downloaded pappas_hu..di_44.jpg
-    git-annex: runInteractiveProcess: pipe: Too many open files
-    Committer crashed: lsof: createProcess: resource exhausted (Too many open files)
-    [2013-04-17 23:53:52 CEST] Committer: warning Committer crashed: lsof: createProcess: resource exhausted (Too many open files)
-    git-annex: runInteractiveProcess: pipe: Too many open files
-    git: createProcess: resource exhausted (Too many open files)
-    DaemonStatus crashed: /home/user/Desktop/down/annex_test/.git/annex/daemon.status.tmp21215: openFile: resource exhausted (Too many open files)
-    [2013-04-17 23:57:24 CEST] DaemonStatus: warning DaemonStatus crashed: /home/user/Desktop/down/annex_test/.git/annex/daemon.status.tmp21215: openFile: resource exhausted (Too many open files)
-    git-annex: runInteractiveProcess: pipe: Too many open files
-    git: createProcess: resource exhausted (Too many open files)
-    git-annex: runInteractiveProcess: pipe: Too many open files
-    NetWatcherFallback crashed: git: createProcess: resource exhausted (Too many open files)
-    [2013-04-18 00:27:17 CEST] NetWatcherFallback: warning NetWatcherFallback crashed: git: createProcess: resource exhausted (Too many open files)
-    git-annex: runInteractiveProcess: pipe: Too many open files
-    git-annex: git: createProcess: resource exhausted (Too many open files)
-    git-annex: accept: resource exhausted (Too many open files)
-
-Instead of raising system's limit (which is a neverending story), can we make git-annex only watch a directory and not every file of it?
-
-Or could the user specify some directory which he knows it is rarely change, to not be watched only check it once a day?
-
-The best would be if git annex could automatically adapt itself.
-Ie. it watches eg. 200 files, and if some of it does not change for three days, then it drops from the watching basket, and those who changed (noticed while sanity checked) it adds to the basket.
-
-I don't really want to raise the ulimit, because my ultimate goal is to have git-annex on multiple raspberry pi with external harddrive (one at my home, one at my mom's home, one at my friends home, etc, etc). And raspberry is fairly low on resource.
-
-I'm interested in your thoughts.
-
-Best, 
- Laszlo
-
-[[!tag /design/assistant]]
-[[!meta title="assistant can try to add too many files at once in batch add mode"]]
diff --git a/doc/bugs/Resource_temporarily_unavailable_when_running_enableremote.mdwn b/doc/bugs/Resource_temporarily_unavailable_when_running_enableremote.mdwn
deleted file mode 100644
--- a/doc/bugs/Resource_temporarily_unavailable_when_running_enableremote.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-### Please describe the problem.
-
-enableremote gives this weird error when trying to change settings on the s3 remote:
-
-<pre>
-$ git annex enableremote s3
-enableremote s3
-git-annex: .git/annex/creds/SOME-LONG-HASH-I-AM-NOT-SURE-SHOULD-BE-PUBLIC: openFile: resource exhausted (Resource temporarily unavailable)
-failed
-git-annex: enableremote: 1 failed
-</pre>
-
-### What steps will reproduce the problem?
-
-Unclear. I tried to update to the latest neurodebian packages to make use of the new [[tips/public_Amazon_S3_remote]] but it seems something is going wrong here.
-
-The git-annex repository is on a "persistent amazon volume" (EBS, presumably?) so there may be something fishy with the filesystem there... 
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150610+gitg608172f-1~ndall+1 on Ubuntu precise, in amazon EC2. --[[anarcat]]
-
-A workaround is to run this on a different machine. I suspect some amazon foul play at hand... so this could be invalid. :(
diff --git a/doc/bugs/SSL_repos_does_not_show_up_in_Assistant.mdwn b/doc/bugs/SSL_repos_does_not_show_up_in_Assistant.mdwn
deleted file mode 100644
--- a/doc/bugs/SSL_repos_does_not_show_up_in_Assistant.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-### Please describe the problem.
-
-I have recently switched to self hosted git. Gitbucket over SSL. When I swithced origin from rsync ssh to ssl url assistant stopped showing origin in the repositories list it also does not sync to it when a file changes. (It does sync to it every 5 6 hours.). Running sync on the command line does sync to the repo. Authentication is done using netrc file. Replacing the ssl based url to ssh based url, repo shows up in the list and assistant syncs to it.
-
-
-### What steps will reproduce the problem?
-
-Replacing the ssh url with ssl url.
-
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150823-geb17375
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
diff --git a/doc/bugs/STANDARD__95__IA_for_S3_remote_not_working.mdwn b/doc/bugs/STANDARD__95__IA_for_S3_remote_not_working.mdwn
deleted file mode 100644
--- a/doc/bugs/STANDARD__95__IA_for_S3_remote_not_working.mdwn
+++ /dev/null
@@ -1,63 +0,0 @@
-### Please describe the problem.
-
-Cannot set S3 remote to use Infrequently accessed.
-
-### What steps will reproduce the problem?
-
-git annex enableremote <remote> storageclass=STANDARD_IA
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150930 on Arch Linux
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-# Trying with RR
-$ git annex enableremote amazon storageclass=REDUCED_REDUNDANCY
-enableremote amazon (encryption update) (hybrid cipher with gpg key XXX) ok
-(recording state in git...)
-
-$ git annex info amazon                                        
-remote: amazon
-description: [amazon]
-uuid: XXX
-trust: semitrusted
-cost: 250.0
-type: S3
-creds: embedded in git repository (gpg encrypted)
-bucket: XXX
-endpoint: s3.amazonaws.com
-port: 80
-storage class: ReducedRedundancy
-# snip
-
-# Trying with IA
-$ git annex enableremote amazon storageclass=STANDARD_IA       
-enableremote amazon (encryption update) (hybrid cipher with gpg key XXX) ok
-(recording state in git...)
-
-$ git annex info amazon                                 
-remote: amazon
-description: [amazon]
-uuid: XXX
-trust: semitrusted
-cost: 250.0
-type: S3
-creds: embedded in git repository (gpg encrypted)
-bucket: XXX
-endpoint: s3.amazonaws.com
-port: 80
-storage class: Standard
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I've had great experiences using git annex normally, but the special remotes tend
-to get dicey, like here.
-
-> The `STANDARD_IA` docuemntation now includes the necessary version of the
-> aws library to support this feature. [[done]] --[[Joey]]
diff --git a/doc/bugs/Selfsigned_certificates_with_jabber_fail_miserably.mdwn b/doc/bugs/Selfsigned_certificates_with_jabber_fail_miserably.mdwn
deleted file mode 100644
--- a/doc/bugs/Selfsigned_certificates_with_jabber_fail_miserably.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-### Please describe the problem.
-Entering a jabber address which's server got a selfsigned certificate, the process just fails, without asking for acceptance for that certificate. This is quite a showstopper.
-(for example: jabber.ccc.de)
-
-
-### What steps will reproduce the problem?
-Try with an account from e.g. jabber.ccc.de
-
-
-### What version of git-annex are you using? On what operating system?
-Arch Linux, aur/git-annex-standalone 4.20130709-1 
-
-### Please provide any additional information below.
-There is no logoutput to add... I'm sorry.
-
-[[!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.
-"""]]
-
-[[!meta title="XMPP does not work with jabber.ccc.de"]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Should_try_again_when_network_fails___40__esp._DNS__41__.mdwn b/doc/bugs/Should_try_again_when_network_fails___40__esp._DNS__41__.mdwn
deleted file mode 100644
--- a/doc/bugs/Should_try_again_when_network_fails___40__esp._DNS__41__.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-### Please describe the problem.
-
-If you have a flaky connection big uploads and downloads will fail. git-annex should try again few times.
-
-This is an example of failed download.
-
-[[!format sh """
-$ git annex get --not --in here
-get File1.bin (from s3...) (gpg) 
-You need a passphrase to unlock the secret key for
-user: "Gioele"
-4096-bit RSA key, ....
-
-gpg: gpg-agent is not available in this session
-
-  ErrorMisc "<socket: 14>: hGetBuf: resource vanished (Connection reset by peer)"
-                        
-  Unable to access these remotes: s3
-
-  Try making some of these repositories available:
-        331fa184-799d-4511-1725-ef2a17ace8b4 -- s3
-        c2a0cfa0-8871-9721-9b81-5649281fabdc -- other
-failed
-get File2.bin (from s3...) 
-
-  Unable to access these remotes: s3
-
-  Try making some of these repositories available:
-        331fa184-799d-4511-1725-ef2a17ace8b4 -- s3
-        c2a0cfa0-8871-9721-9b81-5649281fabdc -- other
-failed
-git-annex: get: 2 failed
-"""]]
-
-This is especially annoying when the DNS is out of order for a few seconds every now and then. In such cases, git-annex will complain, skip very fast to the next file, and repeat this process until it runs out of files. In the end it will have uploaded or downloaded very few files.
-
-Please not that it may not possible to write a simple shell loop to try again as the are GPG passwords to be entered.
-
-Git-annex should try again to upload or download a file in case something goes wrong.
-
-### What version of git-annex are you using? On what operating system?
-
-    git-annex version: 4.20130709.1
-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-    local repository version: unknown
-    default repository version: 3
-    supported repository versions: 3 4
-    upgrade supported from repository versions: 0 1 2
-
-Ubuntu 12.04.2 LTS
diff --git a/doc/bugs/Stress_test.mdwn b/doc/bugs/Stress_test.mdwn
deleted file mode 100644
--- a/doc/bugs/Stress_test.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-What steps will reproduce the problem?
-
-mkdir annex_stress; cd annex_stress, 
-then execute the following script:
-
-    #! /bin/sh
-    
-    # creating a directory, in which we dump all the files.
-    mkdir probes; cd probes
-    
-    for i in `seq -w 1 25769`; do
-        mkdir probe$i
-        echo "This is an important file, which saved also in backup ('back') directory too.\n Content changes: $i" > probe$i/probe$i.txt
-        echo "This is just an identical content file. Saved in each subdir." > probe$i/defaults.txt
-        echo "This is a variable ($i) content file, which is not backed up in 'back' directory." > probe$i/probe-nb$i.txt
-        mkdir probe$i/back
-        cp probe$i/probe$i.txt probe$i/back/probe$i.txt
-    done
-
-
-It creates about 25000 directory and 3 files in each, two of them are identical.
-
-What is the expected output? What do you see instead?
-
-I expect git annex could import the directory within 12 hours. 
-Yet, it just crashes the gui (starting webapp, uses the cpu 100% and it does not finish after 28hours.)
-
-
-What version of git-annex are you using? On what operating system?
-
-version 2013.04.17
-
-Please provide any additional information below.
-
-I do hope git-annex can be fixed to handle large number of files.
-This stress test models well enough my own directory structure, 
-relatively high number of files relatively low disk space usage 
-(my own directory structure: 750MB, this test creates 605MB).
-
-
-Best, 
- Laszlo
-
-[[!meta title="assistant Stress test"]]
-[[!tag /design/assistant]]
diff --git a/doc/bugs/Stress_test/comment_10_1694e990eab6592159309c231c6dcc16._comment b/doc/bugs/Stress_test/comment_10_1694e990eab6592159309c231c6dcc16._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_10_1694e990eab6592159309c231c6dcc16._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 10"
- date="2013-05-06T16:54:36Z"
- content="""
-My estimate was indeed slightly optimistic. While I did not run the whole import, it did run slower for the later batches of files. As far as I can see, that slowdown is just because git gets slower as it has more files. So nothing I can do about it. git-annex is now scaling well itself, though.
-
-Re checksumming on startup: There was a bug that caused the assistant to re-checksum all direct mode files on startup. This bug was fixed in version 4.20130417. If you're using that version and still see it re-checksumming files, please file a new bug report about it, as this is not intended behavior.
-
-You seem to be saying that the assistant is failing to add some files, and then when stopped and restarted it finds and adds them. I don't quite know how that would happen. If you can provide a test case that I can use to reproduce that behavior, I will try to debug it.
-"""]]
diff --git a/doc/bugs/Stress_test/comment_11_ab4cb6eefd279e6c1f229e089f703581._comment b/doc/bugs/Stress_test/comment_11_ab4cb6eefd279e6c1f229e089f703581._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_11_ab4cb6eefd279e6c1f229e089f703581._comment
+++ /dev/null
@@ -1,25 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"
- nickname="Laszlo"
- subject="comment 11"
- date="2013-05-11T05:36:48Z"
- content="""
-rechecksuming: it seem like it is indeed fixed in the newest (2013.05.01) version downloaded from here:
-http://downloads.kitenet.net/git-annex/linux/
-
-I tried to add the big stress test dir as a secondary repository into git-annex (along with my real data dir), but 
-seems like some library is not matching on my system, so some curl is complaining:
-
-    curl: /lib/tls/i686/cmov/libc.so.6: version `GLIBC_2.12' not found (required by /home/user/Desktop/down/git-annex.linux//usr/lib/i386-linux-gnu/libldap_r-2.4.so.2)
-
-I'm on ubuntu 10.04.
-
-And the log file is starting to fill up, so maybe once a problem occur, it should only write into the log file once.
-
-I will redone this stress test next week, without combining with any repository.
-Thank you very much for your response, I do appreciate you are bothering/dealing with my complains!:)
-
-Best, 
- Laszlo
-
-"""]]
diff --git a/doc/bugs/Stress_test/comment_1_c4c764488ac082f5c48d3a6b4b5fba42._comment b/doc/bugs/Stress_test/comment_1_c4c764488ac082f5c48d3a6b4b5fba42._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_1_c4c764488ac082f5c48d3a6b4b5fba42._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 1"
- date="2013-04-23T20:00:31Z"
- content="""
-Is this related or unrelated to the bug you filed at [[Resource_exhausted]]?
-
-I tried this test, and noticed that it was taking the assistant rather a long time to get to the 10 thousand file threshhold where it makes a batch commit. A small change to a better data structure for its queue reduced that time from probably 10 minutes to 2.5. 
-
-I was unable to reproduce any problem with the webapp. Please provide lots of details to back up \"it just crashes the GUI\".
-
-The main problem with this directory tree is that it has more directories than inotify can watch, in the default configuration. 
-So after it adds the first 8192 directories, it begins failing to watch any more, and printing a message about you needing to increase the inotify limits for each additional directory. I don't think that 51 thousand directories is a particularly realistic amount for any real-world usage of git-annex. (It will also break file manager, dropbox, etc, which all use inotify in the same way.)
-
-The other main time sink is that git-annex needs to run `git hash-object` once per file to stage its symlink. That is a lot of processes to run, and perhaps it could be sped up by using `git fast-import`.
-"""]]
diff --git a/doc/bugs/Stress_test/comment_2_42125bba09a0ea9821cda7183e458100._comment b/doc/bugs/Stress_test/comment_2_42125bba09a0ea9821cda7183e458100._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_2_42125bba09a0ea9821cda7183e458100._comment
+++ /dev/null
@@ -1,47 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"
- nickname="Laszlo"
- subject="comment 2"
- date="2013-04-24T06:30:16Z"
- content="""
-Hi,
-
-First of all thank you for your time looking into my bug. I try to research more from my side.
-
-The 'Resource exhausted' bugreport 
-(which lost its title, and could not click on it to add this testcase as a comment)
-was tested on real data, my own working directory (a copy of it).
-This bugreport is tested on the output of this small shell script.
-
-None of them succeeded to import, and I quickly assumed it is the exact same.
-
-So I will test again, raising the ulimit to 81920, and report.
-
-    The main problem with this directory tree is that it has more directories than inotify can watch, in the default configuration
-
-I would be perfectly fine if I could configure git-annex to sync those directory only once a month or once a week
-(ie. check for update once a week). So no need to watch it real time, those are my archived work files.
-
-    I don't think that 51 thousand directories is a particularly realistic amount for any real-world usage of git-annex.
-
-Well, it is not 25000 dir in a single a folder, but rather something like this:
-
-    work_done/2009/workname/back9/back8/back7/back6/back5
-
-Where each 'backX' contains a whole backup the work until it. 
-So the directory structure is a bit more deep, and no 25000 subdirectory in a single dir. 
-But the overall numbers are right.
-
-If I could somehow mark this **work_done** dir to not sync real time (or work_done/2008,work_done/2009,work_done/2010,work_done/2011,work_done/2012 subdir in them), 
-then my whole issue would vanish.
-
-I only want to use git-annex to have a backup of this directory. 
-In case of laptop theft, or misfunction I could have a backup. 
-I dont need live sync anywhere, I have directories which I know I will not touch for months.
-
-Best,
- Laszlo
-
-
-
-"""]]
diff --git a/doc/bugs/Stress_test/comment_3_8240e61106b494d3600ad91f16eb5b1c._comment b/doc/bugs/Stress_test/comment_3_8240e61106b494d3600ad91f16eb5b1c._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_3_8240e61106b494d3600ad91f16eb5b1c._comment
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"
- nickname="Laszlo"
- subject="comment 3"
- date="2013-04-24T09:10:20Z"
- content="""
-    (It will also break file manager, dropbox, etc, which all use inotify in the same way.)
-
-I beg to differ: with dropbox I handle my scrapbook(1) folder, 
-which means 130 thousand files for over 2 years now without problem between three computers.
-
-    ~/Dropbox/scrapbook$ ls -R -1 |wc -l
-    130263
-
-Don't get me wrong. I'm not complaining, I only give you a completely unrelated usecase, 
-which requires also high number of files handling. And in that case the 81 thousand ulimit would not help either.
-
-(1): https://addons.mozilla.org/hu/firefox/addon/scrapbook/
-
-"""]]
diff --git a/doc/bugs/Stress_test/comment_4_c38d84e0dcc834931804c44bce7f7b7a._comment b/doc/bugs/Stress_test/comment_4_c38d84e0dcc834931804c44bce7f7b7a._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_4_c38d84e0dcc834931804c44bce7f7b7a._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 4"
- date="2013-04-24T15:05:33Z"
- content="""
-You're confusing number of files (inotify doesn't care) with number of directories (inotify does care).
-
-Dropbox is on record about being limited in the number of directories it can watch without adjusting the inotify limit. 
-<https://www.dropbox.com/help/145>
-"""]]
diff --git a/doc/bugs/Stress_test/comment_5_60ce20ee255451c4ea809ba475561adb._comment b/doc/bugs/Stress_test/comment_5_60ce20ee255451c4ea809ba475561adb._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_5_60ce20ee255451c4ea809ba475561adb._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 5"
- date="2013-04-24T15:30:04Z"
- content="""
-I found a bug in the webapp thanks to this stress test. When inotify goes over limit, it displays a message about how to fix it..
-But it displays that message over and over for each file. The result is a constantly updating very large web page. 
-
-Unless you tell me differently, I'm going to assume that's what the GUI crash you referred to was, since it can make a web browser very slow.
-
-I've fixed this problem. Now when it goes over limit, the webapp will just display this:
-
-[[/assistant/inotify_max_limit_alert.png]]
-"""]]
diff --git a/doc/bugs/Stress_test/comment_6_1371562e201393986cd41597f6f288cb._comment b/doc/bugs/Stress_test/comment_6_1371562e201393986cd41597f6f288cb._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_6_1371562e201393986cd41597f6f288cb._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 6"
- date="2013-04-24T17:26:39Z"
- content="""
-I put in a further change to reduce the number of alerts shown in the webapp when bulk adding files. This probably quadrupled the speed or more, even when the webapp was not running, as updating an alert every time a file was added was a lot of unnecessary work.
-
-After these changes, it adds the first 10 thousand files in 35 minutes, on my five year old netbook. It should scale linear
-(aside from git's own scalability issues with a lot of files, which I don't think are very bad under 1 million files),
-so adding all 100 thousand files should take 6 hours or so.
-
-I'm interested to see what results you get, compared with before..
-"""]]
diff --git a/doc/bugs/Stress_test/comment_7_a14be7699da224a8f6c9b34f1b911219._comment b/doc/bugs/Stress_test/comment_7_a14be7699da224a8f6c9b34f1b911219._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_7_a14be7699da224a8f6c9b34f1b911219._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 7"
- date="2013-04-24T21:02:55Z"
- content="""
-A few more changes got the rate down to 21 minutes per 10 thousand files. Estimate 3.5 hours for all.
-"""]]
diff --git a/doc/bugs/Stress_test/comment_8_a01995bdca7ade7dde9842b53fbc4e0c._comment b/doc/bugs/Stress_test/comment_8_a01995bdca7ade7dde9842b53fbc4e0c._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_8_a01995bdca7ade7dde9842b53fbc4e0c._comment
+++ /dev/null
@@ -1,57 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"
- nickname="Laszlo"
- subject="Definite improvement"
- date="2013-05-03T06:27:12Z"
- content="""
-Hi,
-
-I have just tried it out again with the latest (20130501) version.
-
-It is really nice to see you have been working on it, and it have improved tremendously!
-The logging issue solved, and logrotates even, and it finished importing without crashing!
-
-Remaining polishing things:
-
-a)
-The import time is not as good (as you write), it slowes itself down.
-It is true the first 10000 files import in about an hour, but it finishes with everything
-in 9 hours 20 minutes.
-(on a normal laptop, the last 5000 file portion took more then 2 hours)
-
-b) 
-Every startup means rechecksuming everything, so it means the second start took also around 8-12 hours.
-(I don't know exactly because it finished somewhere during the night, but it was longer then 8 hours)
-I don't think rechecksuming is necessary at all, if the filename, size and date have not modified, 
-then why rechecksuming (sha) it?
-
-
-c) 
-It is leaking. 
-At the second startup, it reported it successfully added:
-    Added 2375 files 5 files probe25366.txt
-
-I have not touched the directory. ls confirms leaking:
-
-    After first start (importing):
-    annex_many/.git$ ls -lR |wc -l
-    770199
-
-    After second startup:
-    annex_many/.git$ ls -lR |wc -l
-    788351
-
-d) Without ulimit raise, it does not work at all.
-I think it could be solved by not watching each and every directory all the time.
-Every users will likely have a working directory and some which he don't intend to touch/modify at all.
-Some usecases: photo archiving, video archiving, finished work archiving, etc
-
-All the above results with the stress test script. 
-I would love to have a confirmation by a thirdparty.
-
-Overall I'm impressed with the work you have done.
-
-Best, 
- Laszlo
-
-"""]]
diff --git a/doc/bugs/Stress_test/comment_9_9f7efe81b7e40aaa04a865394c53e20f._comment b/doc/bugs/Stress_test/comment_9_9f7efe81b7e40aaa04a865394c53e20f._comment
deleted file mode 100644
--- a/doc/bugs/Stress_test/comment_9_9f7efe81b7e40aaa04a865394c53e20f._comment
+++ /dev/null
@@ -1,52 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm5iosFbL2By7UFeViqkc6v-hoAtqILeDA"
- nickname="Laszlo"
- subject="Maybe it is not leaking after all"
- date="2013-05-03T18:37:48Z"
- content="""
-I have been working the whole day zipping up (tar.gz) all the unused directories.
-Now my real data dir looks like this:
-
-    ./annex_real/work_done$ du -hs .
-    1,1G	.
-    Has 9088 files and 1608 directories in total:
-    ./annex_real/work_done$ ls -R1l |grep \\-r |wc -l
-    9088
-    ./annex_real/work_done$ ls -R1l |grep ^d |wc -l
-    1608
-
-When I first started git annex, it added 5492 files, then next time it added the missing 3596 files. Then it stopped adding files.
-From the gui everything looked fine even at the first start (performed startup scan), even in the log files (daemon.log.x) was nothing suspicious.
-
-    ./annex_real/work_done$ for i in ../.git/annex/daemon.log.*; do echo $i; cat $i |grep files; done
-     ../.git/annex/daemon.log.1
-     ../.git/annex/daemon.log.2
-     ../.git/annex/daemon.log.3
-     ../.git/annex/daemon.log.4
-     [2013-05-03 20:03:34 CEST] Committer: Adding 3596 files
-     ../.git/annex/daemon.log.5
-     [2013-05-03 19:15:22 CEST] Committer: Adding 5492 files
-
-As you can see, this case is not a stress test at all, 
-it is really the minimal test case, 1.1GB diskspace, 9088 files and a thousand dirs. 
-The real question is, why git-annex miss at the first startup 3492 files (ie. adding all the files).
-
-It would help tremendously, if it would display at startup how many files he found, 
-and when it adds, then how many left to be added.
-Something like this:
-
-    (scanning...) [2013-05-03 20:03:14 CEST] Watcher: Performing startup scan
-    (started...)
-    [2013-05-03 20:03:34 CEST] Committer: Found 9088 files
-    [2013-05-03 20:03:34 CEST] Committer: Adding 3596 files of 9088 remaining files (9088 in total)
-    ....
-    [2013-05-03 20:05:04 CEST] Committer: Adding 1492 files of 5492 remaining files (9088 in total)
-    ....
-    [2013-05-03 20:06:02 CEST] Committer: Adding 4000 files of 4000 remaining files (9088 in total)
-
-So it is definietly a bug, and I stuck how to debug it further. Everything looks just fine.
-
-Best, 
- Laszlo
-
-"""]]
diff --git a/doc/bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage.mdwn b/doc/bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage.mdwn
deleted file mode 100644
--- a/doc/bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage.mdwn
+++ /dev/null
@@ -1,94 +0,0 @@
-### Please describe the problem.
-
-The S3 remote does not support Google Cloud Storage buckets with the
-Durable Reduced Availability or Nearline storage classes.  These are
-less-expensive alternatives to the Standard storage class, which would
-otherwise be a good fit for git-annex.
-
-### What steps will reproduce the problem?
-
-1. `git annex initremote cloud type=S3 encryption=none host=storage.googleapis.com bucket=storage-class-test storageclass=NEARLINE`
-2. Observe that the bucket is created with Standard storage class.
-
-or,
-
-1. Use Cloud Storage web interface to create the `storage-class-test` bucket with Nearline storage class.
-2. `git annex -d initremote cloud type=S3 encryption=none host=storage.googleapis.com bucket=storage-class-test storageclass=NEARLINE`
-2. Observe failure shown below.
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150528, Fedora 22
-
-### Please provide any additional information below.
-
-Google Cloud Storage applies the storage class per-bucket rather than per-object.  As a result there are two separate problems:
-
-1. If git-annex creates the bucket, there is no way to get it to pass the `StorageClass` XML element in the PUT Bucket operation (see e.g. [here](https://cloud.google.com/storage/docs/nearline#create), the "XML API" tab).
-2. If the bucket is manually created by the user, subsequent PUT Object operations explicitly pass an `x-amz-storage-class` of `STANDARD` (or `REDUCED_REDUNDANCY`).  Since this is incompatible with the storage class of the bucket, Google Cloud Storage returns `InvalidArgument`.
-
-Example of the second problem:
-
-[[!format sh """
-$ git annex -d initremote cloud type=S3 encryption=none host=storage.googleapis.com bucket=storage-class-test storageclass=NEARLINE 
-[2015-05-31 17:38:21 EDT] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","git-annex"]
-[2015-05-31 17:38:21 EDT] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
-[2015-05-31 17:38:21 EDT] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..417a5e8880eb22fa5288056f4f4e5d998e64a3e6","-n1","--pretty=%H"]
-[2015-05-31 17:38:21 EDT] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch"]
-initremote cloud (checking bucket...) [2015-05-31 17:38:21 EDT] String to sign: "GET\n\n\nSun, 31 May 2015 21:38:21 GMT\n/storage-class-test/annex-uuid"
-[2015-05-31 17:38:21 EDT] Host: "storage-class-test.storage.googleapis.com"
-[2015-05-31 17:38:21 EDT] Path: "/annex-uuid"
-[2015-05-31 17:38:21 EDT] Query string: ""
-[2015-05-31 17:38:21 EDT] Response status: Status {statusCode = 404, statusMessage = "Not Found"}
-[2015-05-31 17:38:21 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'
-[2015-05-31 17:38:21 EDT] Response header 'Content-Length': '127'
-[2015-05-31 17:38:21 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:21 GMT'
-[2015-05-31 17:38:21 EDT] Response header 'Expires': 'Sun, 31 May 2015 21:38:21 GMT'
-[2015-05-31 17:38:21 EDT] Response header 'Cache-Control': 'private, max-age=0'
-[2015-05-31 17:38:21 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'
-[2015-05-31 17:38:21 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'
-[2015-05-31 17:38:21 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>
-[2015-05-31 17:38:21 EDT] String to sign: "GET\n\n\nSun, 31 May 2015 21:38:21 GMT\n/storage-class-test/"
-[2015-05-31 17:38:21 EDT] Host: "storage-class-test.storage.googleapis.com"
-[2015-05-31 17:38:21 EDT] Path: "/"
-[2015-05-31 17:38:21 EDT] Query string: ""
-[2015-05-31 17:38:22 EDT] Response status: Status {statusCode = 200, statusMessage = "OK"}
-[2015-05-31 17:38:22 EDT] Response header 'x-goog-metageneration': '1'
-[2015-05-31 17:38:22 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'
-[2015-05-31 17:38:22 EDT] Response header 'Content-Length': '219'
-[2015-05-31 17:38:22 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:21 GMT'
-[2015-05-31 17:38:22 EDT] Response header 'Expires': 'Sun, 31 May 2015 21:38:21 GMT'
-[2015-05-31 17:38:22 EDT] Response header 'Cache-Control': 'private, max-age=0'
-[2015-05-31 17:38:22 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'
-[2015-05-31 17:38:22 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'
-[2015-05-31 17:38:22 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>
-[2015-05-31 17:38:22 EDT] String to sign: "GET\n\n\nSun, 31 May 2015 21:38:22 GMT\n/storage-class-test/annex-uuid"
-[2015-05-31 17:38:22 EDT] Host: "storage-class-test.storage.googleapis.com"
-[2015-05-31 17:38:22 EDT] Path: "/annex-uuid"
-[2015-05-31 17:38:22 EDT] Query string: ""
-[2015-05-31 17:38:22 EDT] Response status: Status {statusCode = 404, statusMessage = "Not Found"}
-[2015-05-31 17:38:22 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'
-[2015-05-31 17:38:22 EDT] Response header 'Content-Length': '127'
-[2015-05-31 17:38:22 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:22 GMT'
-[2015-05-31 17:38:22 EDT] Response header 'Expires': 'Sun, 31 May 2015 21:38:22 GMT'
-[2015-05-31 17:38:22 EDT] Response header 'Cache-Control': 'private, max-age=0'
-[2015-05-31 17:38:22 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'
-[2015-05-31 17:38:22 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'
-[2015-05-31 17:38:22 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>
-[2015-05-31 17:38:22 EDT] String to sign: "PUT\n\n\nSun, 31 May 2015 21:38:22 GMT\nx-amz-storage-class:STANDARD\n/storage-class-test/annex-uuid"
-[2015-05-31 17:38:22 EDT] Host: "storage-class-test.storage.googleapis.com"
-[2015-05-31 17:38:22 EDT] Path: "/annex-uuid"
-[2015-05-31 17:38:22 EDT] Query string: ""
-[2015-05-31 17:38:22 EDT] Body: "6eb85d96-8f9b-456a-819c-1724d12d2ffd"
-[2015-05-31 17:38:22 EDT] Response status: Status {statusCode = 400, statusMessage = "Bad Request"}
-[2015-05-31 17:38:22 EDT] Response header 'Content-Type': 'application/xml; charset=UTF-8'
-[2015-05-31 17:38:22 EDT] Response header 'Content-Length': '117'
-[2015-05-31 17:38:22 EDT] Response header 'Vary': 'Origin'
-[2015-05-31 17:38:22 EDT] Response header 'Date': 'Sun, 31 May 2015 21:38:22 GMT'
-[2015-05-31 17:38:22 EDT] Response header 'Server': 'UploadServer ("Built on May 21 2015 09:31:47 (1432225907)")'
-[2015-05-31 17:38:22 EDT] Response header 'Alternate-Protocol': '80:quic,p=0'
-[2015-05-31 17:38:22 EDT] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>
-git-annex: S3Error {s3StatusCode = Status {statusCode = 400, statusMessage = "Bad Request"}, s3ErrorCode = "InvalidArgument", s3ErrorMessage = "Invalid argument.", s3ErrorResource = Nothing, s3ErrorHostId = Nothing, s3ErrorAccessKeyId = Nothing, s3ErrorStringToSign = Nothing}
-"""]]
-
-> [[done]], see comments --[[Joey]] 
diff --git a/doc/bugs/Three_tests_fail_when_annex.backends_is_defined.mdwn b/doc/bugs/Three_tests_fail_when_annex.backends_is_defined.mdwn
deleted file mode 100644
--- a/doc/bugs/Three_tests_fail_when_annex.backends_is_defined.mdwn
+++ /dev/null
@@ -1,111 +0,0 @@
-### Please describe the problem.
-
-I noticed three tests failed when running "git annex test", and it seems 
-it's because I have `annex.backends` set to `SHA256` in `~/.gitconfig`. 
-When I disable that option, all tests succeed.
-
-### What steps will reproduce the problem?
-
-Add
-
-    [annex]
-      backends = SHA256
-
-to `~/.gitconfig`.
-
-### What version of git-annex are you using? On what operating system?
-
-Newest git-annex (6.20160211 amd64) from downloads.kitenet.net.
-
-- Debian GNU/Linux 8.3 (64 bit). Installed yesterday, so it's pretty pristine.
-- git version 2.7.1.287.g4943984 (Newest version from 'master' in 
-  git.git)
-
-The first version with this problem is 6.20160114. 5.20151218 works.
-
-### Please provide any additional information below.
-
-[[!format text """
-# 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
-
-$ git annex test
-Tests
-
-[Removed 188 lines]
-
-    migrate (via gitattributes):                          /etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-OK (3.11s)
-    unused:                                               /etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-FAIL (1.84s)
-      unused keys differ after origin branches are gone
-      expected: [Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256E", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}]
-       but got: [Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}]
-    describe:                                             /etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-OK (0.84s)
-
-[Removed 1108 lines]
-
-    migrate (via gitattributes):                          /etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-OK (3.34s)
-    unused:                                               /etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-/etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-/etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-FAIL (1.82s)
-      unused keys differ after origin branches are gone
-      expected: [Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256E", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}]
-       but got: [Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}]
-    describe:                                             /etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-OK (0.78s)
-
-[Removed 1062 lines]
-
-    migrate (via gitattributes):                          OK (2.64s)
-    unused:                                               FAIL (1.53s)
-      unused keys differ after origin branches are gone
-      expected: [Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256E", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}]
-       but got: [Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}]
-    describe:                                             OK (0.62s)
-
-[Removed 1667 lines]
-
-3 out of 269 tests failed (640.58s)
-  (This could be due to a bug in git-annex, or an incompatability
-   with utilities, such as git, installed on this system.)
-$
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Roses are red<br/>
-Violets are blue<br/>
-git-annex is awesome<br/>
-and so are you
-
-`;-)`
-
-But bloody hell, it's hard to get this thing to build. As you've 
-mentioned earlier, building on Debian 7 isn't supported anymore, so I 
-installed Debian 8.3 yesterday for the sole purpose of compiling git-annex, 
-but still no luck:
-
-    [32 of 32] Compiling Main             ( dist/setup/setup.hs, dist/setup/Main.o )
-    Linking ./dist/setup/setup ...
-    unrecognized option `--extra-prog-path=/home/sunny/.cabal/bin'
-    Makefile:19: recipe for target 'Build/SysConfig.hs' failed
-    make: *** [Build/SysConfig.hs] Error 1
-
-I was hoping to get it to build so I could find the exact commit that 
-introduced this, and also provide some patches with some functionality 
-I've been thinking of. Is building on Debian 8.3 (jessie) supported? I 
-found a bug report from you on 
-<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=778987> that seems to 
-be related, but I don't know if that's the case. The newest version I'm 
-able to build is 5.20150219, somewhere after that various things start 
-to fail.
-
-> [[fixed|done]]; I found a way to isolate the test suite from global git
-> configs, by setting `GIT_CONFIG_NOSYSTEM` and also setting
-> `HOME` and `XDG_CONFIG_HOME` to an empty directory. --[[Joey]]
diff --git a/doc/bugs/Transfers_continue_after_daemon_stopped.mdwn b/doc/bugs/Transfers_continue_after_daemon_stopped.mdwn
deleted file mode 100644
--- a/doc/bugs/Transfers_continue_after_daemon_stopped.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-After creating a new pairing, I stopped the daemon through the webapp while it was syncing.  The webapp shut down and was no longer accessible, but git-annex continued running in the background, along with git-annex-shell, and they continued to run new transfers with new rsync processes.  This continued until I killed them all.
-
-I expected that when I stopped the daemon in the webapp, all git-annex processes and all transfers would stop.
-
-Using the 20131101 tarball.
diff --git a/doc/bugs/Tries_to_upload_to_remote_although_remote_is_dead.mdwn b/doc/bugs/Tries_to_upload_to_remote_although_remote_is_dead.mdwn
deleted file mode 100644
--- a/doc/bugs/Tries_to_upload_to_remote_although_remote_is_dead.mdwn
+++ /dev/null
@@ -1,51 +0,0 @@
-What steps will reproduce the problem?
-
-I added a (encrypted) ssh remote and everything worked fine. Now I marked the remote as dead, but git-annex still tries to upload to this remote. I recognize this because it asks for my ssh and gpg keys passwords. 
-
-While transfering (or asking for the password), `git annex status` shows the following:
-<pre>
-supported backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
-supported remote types: git S3 bup directory rsync web hook
-trusted repositories: 0
-semitrusted repositories: 2
-	00000000-0000-0000-0000-000000000001 -- web
- 	cd16b9c6-f464-11e1-9845-8749687232d2 -- here (Dell)
-untrusted repositories: 0
-dead repositories: 7
-	11379fa0-ecd6-49e2-9bec-24fc19cc7b9f -- vserver.dbruhn.de_annex
- 	2195e036-d2ef-4357-8c89-a9aaec23ebdc -- vserver-plain
- 	4d066ea1-fb9f-45fd-990a-5c5c836f530e -- inTmp
- 	bb276045-6ba6-488f-88d0-39a3c5f5134d -- vserver-enc
- 	c49f3372-3fcf-49fc-b626-73ba4454c172 -- annexBare (bareAnnex)
- 	e52645b3-bfb6-457d-b281-967353919e29 -- AnnexUSBFAT
- 	ea3d6acc-716c-48e8-9b6b-993b90dcc1db -- vserver2
-transfers in progress: 
-	uploading Schmidt/somefile.m4a
-
-
- to vserver2
-available local disk space: 43 gigabytes (+1 megabyte reserved)
-temporary directory size: 389 megabytes (clean up with git-annex unused)
-local annex keys: 23
-local annex size: 396 megabytes
-known annex keys: 19
-known annex size: 396 megabytes
-bloom filter size: 16 mebibytes (0% full)
-backend usage: 
-	SHA256E: 42
-</pre>
-
-As you can see, the `vserver2` remote is marked as dead but git-annex still tries to upload. This problem keeps occuring even after restarts. 
-
-What is the expected output? What do you see instead?
-
-If I do not get the `dead` status wrong, git-annex should not use these remotes.
-
-
-What version of git-annex are you using? On what operating system?
-
-git-annex HEAD from yesterdays git. Ubuntu 12.10
-
-Please provide any additional information below.
-
-[[!tag /design/assistant moreinfo]]
diff --git a/doc/bugs/Unable_to_parallel_fsck.mdwn b/doc/bugs/Unable_to_parallel_fsck.mdwn
deleted file mode 100644
--- a/doc/bugs/Unable_to_parallel_fsck.mdwn
+++ /dev/null
@@ -1,88 +0,0 @@
-### Please describe the problem.
-
-If I run git annex fsck with the parallel jobs switch (e.g. -J2) it fails when it encounters files with non-ASCII filenames. It works fine without
-this switch.
-
-
-### What steps will reproduce the problem?
-
-Make a git annex repository with non-ascii filenames, add the files, and then run fsck with the parallel switch. A script to do this
-is included below.
-
-
-### What version of git-annex are you using? On what operating system?
-
-Arch Linux (64bit)
-
-git-annex version: 6.20160114-g297a744
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3(multipartupload) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput DNS Feeds Quvi TDFA TorrentParser
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-
-### Please provide any additional information below.
-
-[[!format sh """
-#!/bin/bash
-set -o errexit -o nounset
-
-mkdir testing-repo
-cd testing-repo
-git init
-git annex init testing-repo
-
-make_fake_file() {
-  local filename="$1"
-  mkdir -p "$(dirname "$filename")"
-  echo "hello world" > "$filename"
-  git annex add "$filename"
-}
-
-export -f make_fake_file
-parallel -j1 'make_fake_file {}' <<EOF
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/folder.jpg
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/01 - 遥か彼方 - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/02 - 未来の破片 - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/03 - アンダースタンド - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/04 - 君という花 - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/05 - リライト - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/06 - 君の街まで - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/07 - ループ & ループ - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/08 - ブラックアウト - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/09 - ブルートレイン - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/10 - 或る街の群青 - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/11 - アフターダーク - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/12 - 転がる岩、君に朝が降る - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/13 - ムスタング - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/14 - 藤沢ルーザー - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/15 - 新世紀のラブソング - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/16 - ソラニン - ASIAN KUNG-FU GENERATION.flac
-ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/17 - マーチングバンド - ASIAN KUNG-FU GENERATION.flac
-EOF
-
-git commit -m 'Add testing files.'
-git annex fsck -J2
-"""]]
-
-On my system this produces:
-
-[[!format sh """
-fsck ASIAN KUNG-FU GENERATION/2012 - BEST HIT AKG/flac/01 - git-annex: <stdout>: commitAndReleaseBuffer: invalid argument (invalid character)
-FAIL 1
-"""]]
-
-(The FAIL 1 output is just my terminal printing that the exit code was 1)
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Plenty. In fact I've been using it for a long time - I just only recently tried to use -J2 to speed up the fsck'ing :)
-
-
-[[!meta title="-J can crash on displaying filenames not supported by current locale"]]
-
-> I've worked around this by detecting the non-unicode locale and avoiding
-> the fancy concurrent output which needs it. So -J will work, just not
-> with concurrent progress. I think this is the best that can be done
-> reasonably, so [[done]]. --[[Joey]]
diff --git a/doc/bugs/Unable_to_take_transfer_lock.mdwn b/doc/bugs/Unable_to_take_transfer_lock.mdwn
deleted file mode 100644
--- a/doc/bugs/Unable_to_take_transfer_lock.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-### Please describe the problem.
-
-`git annex get --from=myremote' show "transfer already in progress, or unable to take transfer lock".
-
-**Likely Problem discovered!** I copied the whole remote repo (was residing on a Linux machine accessed via SMB) and pasted it into my Mac. The problem was resolved. It is likely something to do with the fact that Mac OS filesystem is **case-insensitive**. I discovered this issue when I tried to copy that remote repo with ``cp`` rather than ``tar``ing it first.
-
-
-### What steps will reproduce the problem?
-
-Remote is on a Linux machine.
-Do `git annex get' on a Mac OS.
-Do the same on another Linux machine.
-
-The git annex client on the Linux machine works.
-Mac OS doesn't.
-
-rsync version for all machines: 3.1.1
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex 5.20151019
-
-Lubuntu 15.10.
-Mac OS X 10.11.1 (El Capitan)
-
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Yes.
-
-It's wonderful. This should be a problem with Mac OS.
diff --git a/doc/bugs/Upgrade_impossible_om_Mac_OSX.mdwn b/doc/bugs/Upgrade_impossible_om_Mac_OSX.mdwn
deleted file mode 100644
--- a/doc/bugs/Upgrade_impossible_om_Mac_OSX.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-### Please describe the problem.
-When starting git-annex Version: 5.20140420-ga25b8bb Build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash on My MBP running OSX 10.9.2 I get a notification about:  An upgrade of git-annex is available. (version 5.20140421) 
-
-I then click UPGRADE and then get this message: Internal Server Error Cannot find old distribution bundle; not upgrading.
-
-### What steps will reproduce the problem?
-See problem description above, not sure what else to say.
-
-### What version of git-annex are you using? On what operating system?
-See problem description above, not sure what else to say.
-
-### 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.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Upload_to_S3_fails_.mdwn b/doc/bugs/Upload_to_S3_fails_.mdwn
deleted file mode 100644
--- a/doc/bugs/Upload_to_S3_fails_.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-### Please describe the problem.
-
-Uploading a 21GB file to an S3 special remote fails. It will generally fail somewhere at about 3-15%. I am using the new chunking feature, with chunks set to 25MiB.
-
-### What steps will reproduce the problem?
-
-    $ git annex copy my-big-file.tar.bz --to s3
-    copy my-big-file.tar.bz (gpg) (checking s3...) (to s3...)
-    13%       863.8KB/s 6h0m
-      ErrorClosed
-    failed
-    git-annex: copy: 1 failed
-
-### What version of git-annex are you using? On what operating system?
-
-Running on Arch Linux.
-
-    git-annex version: 5.20140818-g10bf03a
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-### Please provide any additional information below.
-
-If I fire up the web app and open the log, the end looks like this:
-
-
-[[!format sh """
-...
-
-3%       857.3KB/s 6h46m
-3%       857.3KB/s 6h46m
-3%       857.3KB/s 6h46m
-3%       857.4KB/s 6h46m
-3%       857.4KB/s 6h46m
-3%       857.5KB/s 6h46m
-3%       857.5KB/s 6h46m
-3%       857.6KB/s 6h46m
-3%       857.6KB/s 6h46m
-3%       857.6KB/s 6h46m
-3%       857.7KB/s 6h46m
-3%       857.7KB/s 6h46m
-3%       857.8KB/s 6h46m
-3%       857.8KB/s 6h46m
-3%       857.8KB/s 6h46m
-3%       857.9KB/s 6h46m
-3%       857.9KB/s 6h46m
-3%       858.0KB/s 6h46m
-3%       858.0KB/s 6h46m
-3%       858.1KB/s 6h46m
-3%       858.1KB/s 6h45m
-3%       858.1KB/s 6h45mmux_client_request_session: read from master failed: Broken pipe
-
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/Utility__47__libdiskfree.c_more_BSD_friendly.mdwn b/doc/bugs/Utility__47__libdiskfree.c_more_BSD_friendly.mdwn
deleted file mode 100644
--- a/doc/bugs/Utility__47__libdiskfree.c_more_BSD_friendly.mdwn
+++ /dev/null
@@ -1,84 +0,0 @@
-### Please describe the problem.
-
-There exist more BSD systems than FreeBSD. Thus I propose diff for Utility/libdiskfree.c.
-
-Based on pkgsrc patching guidelines https://www.netbsd.org/docs/pkgsrc/components.html#components.patches.guidelines
-I tried to cook a diff even I'm not C developer.
-
-
-### What steps will reproduce the problem?
-
-Add support for more OS for disk free check.
-
-### What version of git-annex are you using? On what operating system?
-git-annex-5.20150930
-
-
-### Please provide any additional information below.
-
-The diff probably needs check, improvement...
-
-[[!format sh """
---- libdiskfree.c.orig	Sun Oct  4 15:18:07 2015
-+++ libdiskfree.c	Sun Oct  4 15:23:23 2015
-@@ -7,35 +7,30 @@
- 
- /* Include appropriate headers for the OS, and define what will be used to
-  * check the free space. */
--#if defined(__APPLE__)
--# define _DARWIN_FEATURE_64_BIT_INODE 1
--# include <sys/param.h>
--# include <sys/mount.h>
--# define STATCALL statfs
--# define STATSTRUCT statfs64
--#else
--#if defined (__FreeBSD__)
--# include <sys/param.h>
--# include <sys/mount.h>
--# define STATCALL statfs /* statfs64 not yet tested on a real FreeBSD machine */
--# define STATSTRUCT statfs
--#else
--#if defined __ANDROID__
--# warning free space checking code not available for Android
--# define UNKNOWN
--#else
- #if defined (__linux__) || defined (__FreeBSD_kernel__)
- /* Linux or Debian kFreeBSD */
- /* This is a POSIX standard, so might also work elsewhere too. */
- # include <sys/statvfs.h>
- # define STATCALL statvfs
- # define STATSTRUCT statvfs
--#else
--# warning free space checking code not available for this OS
-+#endif
-+
-+#if defined __ANDROID__
-+# warning free space checking code not available for Android
- # define UNKNOWN
- #endif
-+
-+#if defined (HAVE_SYS_PARAM_H) && defined (HAVE_SYS_MOUNT_H)
-+#if defined(__APPLE__)
-+# define _DARWIN_FEATURE_64_BIT_INODE 1
- #endif
--#endif
-+# include <sys/param.h>
-+# include <sys/mount.h>
-+# define STATCALL statfs /* statfs64 not yet tested on a real FreeBSD machine */
-+# define STATSTRUCT statfs64
-+#else
-+# warning free space checking code not available for this OS
-+# define UNKNOWN
- #endif
- 
- #include <errno.h>
-
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Not tested this "feature" yet, I got another issue which blocks me for now.
-
-> Well, this code has been removing from git-annex, and it's now using
-> <http://hackage.haskell.org/package/disk-free-space>. I think that
-> library is somewhat more portable. [[done]]
diff --git a/doc/bugs/VFAT_crazy_limit_on_max_filenames_in_directory.mdwn b/doc/bugs/VFAT_crazy_limit_on_max_filenames_in_directory.mdwn
deleted file mode 100644
--- a/doc/bugs/VFAT_crazy_limit_on_max_filenames_in_directory.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-VFAT limits have been hit when the .git/annex/journal/
-directory gets a lot of stuff in it. See <http://bugs.debian.org/696313>
diff --git a/doc/bugs/Volume_monitor_in_GNOME_3.18.mdwn b/doc/bugs/Volume_monitor_in_GNOME_3.18.mdwn
deleted file mode 100644
--- a/doc/bugs/Volume_monitor_in_GNOME_3.18.mdwn
+++ /dev/null
@@ -1,182 +0,0 @@
-### Please describe the problem.
-
-The assistant prints _"No known volume monitor available through dbus; falling back to mtab polling"_ on startup. Based on source code, it expects to find `org.gtk.Private.UDisks2VolumeMonitor` on the session bus.
-
-However, gvfs 1.26 (on GNOME 3.18) has renamed the service to `org.gtk.vfs.UDisks2VolumeMonitor` instead, and git-annex doesn't know about that yet.
-
-### What steps will reproduce the problem?
-
-Start the assistant on GNOME 3.18.
-
-### What version of git-annex are you using? On what operating system?
-
-Arch Linux:
-git-annex     6.20160114-8
-gvfs          1.26.2-1
-
-### Please provide any additional information below.
-
-The signals seem to have the same format:
-
-[[!format text """
-signal time=1453449272.593009 sender=:1.25 -> destination=(null destination) serial=2270 path=/org/gtk/Private/RemoteVolumeMonitor; interface=org.gtk.Private.RemoteVolumeMonitor; member=MountAdded
-   string "org.gtk.vfs.UDisks2VolumeMonitor"
-   string "0x1981b90"
-   struct {
-      string "0x1981b90"
-      string "A0D8-7268"
-      string ". GThemedIcon drive-harddisk-usb drive-harddisk drive"
-      string ". GThemedIcon drive-harddisk-usb-symbolic drive-harddisk-symbolic drive-symbolic drive-harddisk-usb drive-harddisk drive"
-      string ""
-      string "file:///run/media/grawity/A0D8-7268"
-      boolean true
-      string "0x7f396402a400"
-      array [
-      ]
-      string "gvfs.time_detected_usec.1453449272586665"
-      array [
-      ]
-   }
-"""]]
-
-The DBus interface looks like this:
-
-[[!format text """
-$ gdbus introspect -e -d org.gtk.vfs.UDisks2VolumeMonitor -o / -r
-node /org/gtk/Private/RemoteVolumeMonitor {
-  interface org.freedesktop.DBus.Properties {
-    methods:
-      Get(in  s interface_name,
-          in  s property_name,
-          out v value);
-      GetAll(in  s interface_name,
-             out a{sv} properties);
-      Set(in  s interface_name,
-          in  s property_name,
-          in  v value);
-    signals:
-      PropertiesChanged(s interface_name,
-                        a{sv} changed_properties,
-                        as invalidated_properties);
-    properties:
-  };
-  interface org.freedesktop.DBus.Introspectable {
-    methods:
-      Introspect(out s xml_data);
-    signals:
-    properties:
-  };
-  interface org.freedesktop.DBus.Peer {
-    methods:
-      Ping();
-      GetMachineId(out s machine_uuid);
-    signals:
-    properties:
-  };
-  interface org.gtk.Private.RemoteVolumeMonitor {
-    methods:
-      IsSupported(out b is_supported);
-      List(out a(ssssbbbbbbbbuasa{ss}sa{sv}) drives,
-           out a(ssssssbbssa{ss}sa{sv}) volumes,
-           out a(ssssssbsassa{sv}) mounts);
-      CancelOperation(in  s cancellation_id,
-                      out b was_cancelled);
-      MountUnmount(in  s id,
-                   in  s cancellation_id,
-                   in  u unmount_flags,
-                   in  s mount_op_id);
-      VolumeMount(in  s id,
-                  in  s cancellation_id,
-                  in  u mount_flags,
-                  in  s mount_op_id);
-      DriveEject(in  s id,
-                 in  s cancellation_id,
-                 in  u unmount_flags,
-                 in  s mount_op_id);
-      DrivePollForMedia(in  s id,
-                        in  s cancellation_id);
-      DriveStart(in  s id,
-                 in  s cancellation_id,
-                 in  u flags,
-                 in  s mount_op_id);
-      DriveStop(in  s id,
-                in  s cancellation_id,
-                in  u unmount_flags,
-                in  s mount_op_id);
-      MountOpReply(in  s mount_op_id,
-                   in  i result,
-                   in  s user_name,
-                   in  s domain,
-                   in  s encoded_password,
-                   in  i password_save,
-                   in  i choice,
-                   in  b anonymous);
-    signals:
-      DriveChanged(s dbus_name,
-                   s id,
-                   (ssssbbbbbbbbuasa{ss}sa{sv}) drive);
-      DriveConnected(s dbus_name,
-                     s id,
-                     (ssssbbbbbbbbuasa{ss}sa{sv}) drive);
-      DriveDisconnected(s dbus_name,
-                        s id,
-                        (ssssbbbbbbbbuasa{ss}sa{sv}) drive);
-      DriveEjectButton(s dbus_name,
-                       s id,
-                       (ssssbbbbbbbbuasa{ss}sa{sv}) drive);
-      DriveStopButton(s dbus_name,
-                      s id,
-                      (ssssbbbbbbbbuasa{ss}sa{sv}) drive);
-      VolumeChanged(s dbus_name,
-                    s id,
-                    (ssssssbbssa{ss}sa{sv}) volume);
-      VolumeAdded(s dbus_name,
-                  s id,
-                  (ssssssbbssa{ss}sa{sv}) volume);
-      VolumeRemoved(s dbus_name,
-                    s id,
-                    (ssssssbbssa{ss}sa{sv}) volume);
-      MountChanged(s dbus_name,
-                   s id,
-                   (ssssssbsassa{sv}) mount);
-      MountAdded(s dbus_name,
-                 s id,
-                 (ssssssbsassa{sv}) mount);
-      MountPreUnmount(s dbus_name,
-                      s id,
-                      (ssssssbsassa{sv}) mount);
-      MountRemoved(s dbus_name,
-                   s id,
-                   (ssssssbsassa{sv}) mount);
-      MountOpAskPassword(s dbus_name,
-                         s id,
-                         s message_to_show,
-                         s default_user,
-                         s default_domain,
-                         u flags);
-      MountOpAskQuestion(s dbus_name,
-                         s id,
-                         s message_to_show,
-                         as choices);
-      MountOpShowProcesses(s dbus_name,
-                           s id,
-                           s message_to_show,
-                           ai pid,
-                           as choices);
-      MountOpShowUnmountProgress(s dbus_name,
-                                 s id,
-                                 s message_to_show,
-                                 x time_left,
-                                 x bytes_left);
-      MountOpAborted(s dbus_name,
-                     s id);
-    properties:
-  };
-};
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Works fine in general.
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/Windows__58___Annex_can_not_get_files.mdwn b/doc/bugs/Windows__58___Annex_can_not_get_files.mdwn
deleted file mode 100644
--- a/doc/bugs/Windows__58___Annex_can_not_get_files.mdwn
+++ /dev/null
@@ -1,162 +0,0 @@
-### 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
-
-"""]]
-
-> [[fixed|done]]; a simple path calculation bug. --[[Joey]]
diff --git a/doc/bugs/Windows__58___can__39__t_clone_repository.mdwn b/doc/bugs/Windows__58___can__39__t_clone_repository.mdwn
deleted file mode 100644
--- a/doc/bugs/Windows__58___can__39__t_clone_repository.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-### Please describe the problem.
-
-Can't clone repository on Windows 7 64bit
-
-### What steps will reproduce the problem?
-git clone git://git-annex.branchable.com/ gitannex
-
-...
-
-error: Invalid path 'doc/walkthrough/fsck:_verifying_your_data.mdwn'
-
-error: Invalid path 'doc/walkthrough/fsck:_when_things_go_wrong.mdwn'
-
-error: Invalid path 'doc/walkthrough/quiet_please:_When_git-annex_seems_to_skip_files.mdwn'
-
-error: Invalid path 'doc/walkthrough/removing_files:_When_things_go_wrong.mdwn'
-
-error: Invalid path 'doc/walkthrough/transferring_files:_When_things_go_wrong.mdwn'
-
-Checking out files: 100% (7235/7235), done.
-
-git status shows many deleted
-
-git reset --hard shows same error as clone
-
-### What version of git-annex are you using? On what operating system?
-git annex version
-
-git-annex version: 5.20150219-g3fc8d83
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA TorrentParser
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM
- URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: unknown
-supported repository version: 5
-upgrade supported from repository versions: 2 3 4
-
-git --version
-
-git version 1.9.5.msysgit.0
-
-Windows 7 64bit
-
-
-> Here's a nickle kid, go buy yourself a real OS that supports
-> colon in filenames.  
-> 
-> Windows has all kinds of stupid limitations that are enough fun
-> making git-annex support, without trying to make its source/website
-> repo also avoid them. 
-> 
-> The solution is cygwin; git-annex's windows autobuilder uses cygwin's
-> version of git to check out its git repository, and that should work for you.
-> [[done]]
-> 
-> --[[Joey]] 
diff --git a/doc/bugs/Windows__58___git_annex_get_failed.mdwn b/doc/bugs/Windows__58___git_annex_get_failed.mdwn
deleted file mode 100644
--- a/doc/bugs/Windows__58___git_annex_get_failed.mdwn
+++ /dev/null
@@ -1,90 +0,0 @@
-### Please describe the problem.
-I'm using git-annex v6 in windows and seems `git annex get` fails.
-Deleting the pointer files and doing a hard reset seems to fix the problem.
-Another bug report named "v6 repo can not restore files with executable permission" seems to point to the same problem but a little different.
-
-[[!retitle "git annex get fails sometimes in v6 repository on Windows"]]
-
-### What steps will reproduce the problem?
-I have a repo in D:\annex with a file `test`
-Now I create another repo:
-
-	$ cd H:\annex
-
-	$ git init
-	Initialized empty Git repository in H:/annex/.git/
-
-	$ git annex init "portable drive"
-	init portable drive
-	  Detected a filesystem without fifo support.
-
-	  Disabling ssh connection caching.
-
-	  Detected a crippled filesystem.
-
-	  Enabling direct mode.
-	ok
-	(recording state in git...)
-
-	$ git annex upgrade
-	upgrade . (v5 to v6...)
-	  Upgraded repository out of direct mode.
-
-	  Changes have been staged for all annexed files in this repository; you should run `git commit` to commit these changes.
-
-	  Any other clones of this repository that use direct mode need to be upgraded now, too.
-	ok
-
-	$ git remote add laptop D:/annex
-
-	$ git annex sync
-	commit  ok
-	pull laptop
-	warning: no common commits
-	remote: Counting objects: 21, done.
-	remote: Compressing objects: 100% (15/15), done.
-	remote: Total 21 (delta 3), reused 0 (delta 0)
-	Unpacking objects: 100% (21/21), done.
-	From D:/annex
-	 * [new branch]      git-annex  -> laptop/git-annex
-	 * [new branch]      master     -> laptop/master
-	 * [new branch]      synced/git-annex -> laptop/synced/git-annex
-	 * [new branch]      synced/master -> laptop/synced/master
-
-
-	Already up-to-date.
-	ok
-	(merging laptop/git-annex laptop/synced/git-annex into git-annex...)
-	(recording state in git...)
-	push laptop
-	Counting objects: 8, done.
-	Delta compression using up to 8 threads.
-	Compressing objects: 100% (6/6), done.
-	Writing objects: 100% (8/8), 928 bytes | 0 bytes/s, done.
-	Total 8 (delta 0), reused 0 (delta 0)
-	To D:/annex
-	   c1aee82..980dc01  git-annex -> synced/git-annex
-	ok
-
-	$ git annex get .
-	get test (from laptop...)
-	SHA256E-s14488367--4391729b982439764813156e1bfc12e9626ae89452ab812f5180c376fbd57fc0
-		 14,488,367 100%   63.24MB/s    0:00:00 (xfr#1, to-chk=0/1)
-	(checksum...)
-	git-annex: DeleteFile ".\\test": permission denied (The process cannot access the file because it is being used by another process.)
-	failed
-	git-annex: get: 1 failed
-
-It seems to try to delete the pointer file, but finds the file in use. Maybe fsck is using it?
-
-	$ cat test
-	/annex/objects/SHA256E-s14488367--4391729b982439764813156e1bfc12e9626ae89452ab812f5180c376fbd57fc0
-
-	$ git annex lock
-	lock test git-annex: content not present; cannot lock
-
-And `git annex unlock` will do nothing.
-
-If you can't reproduce the problem, I'll run the tests for you.
-### What version of git-annex are you using? On what operating system?
-Latest compile from source, Windows 8.1
diff --git a/doc/bugs/Windows_build_test_failures.mdwn b/doc/bugs/Windows_build_test_failures.mdwn
deleted file mode 100644
--- a/doc/bugs/Windows_build_test_failures.mdwn
+++ /dev/null
@@ -1,1232 +0,0 @@
-Given that others can build+run OK I wonder if this is a build environment setup problem rather than a code issue. 
-This might be two bugs, but I rather suspect the fix to one is the fix to the other.
-
-### Please describe the problem.
-Some tests fail with:
-ssh: Could not resolve hostname C: no address associated with name
-
-then if you try and do a copy to/from an ssh remote then it fails with simply 'copy: 1 failed'
-
-### What steps will reproduce the problem?
-
-For the tests, simply sh standalone/windows/build.sh
-
-For the other, I'm using a modified version of the other windows user's script, the set -x'd output is:
-
-<pre>
-+ git-annex version
-git-annex version: 4.20130621-g36258de^M
-build flags: Pairing Testsuite S3 WebDAV DNS^M
-+ ssh gitremote sh testrepo.sh
-git-annex version: 4.20130621-g36258de
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS
-Initialized empty Git repository in /media/backup/git/repo.git/
-init origin ok
-(Recording state in git...)
-commit
-ok
-git-annex: no branch is checked out
-+ rm -rf repo
-+ git init repo
-Initialized empty Git repository in c:/Users/Oliver/repo/.git/
-+ cd repo
-+ git-annex init
-init  ^M
-  Detected a crippled filesystem.^M
-^M
-  Enabling direct mode.^M
-^M
-  Detected a filesystem without fifo support.^M
-^M
-  Disabling ssh connection caching.^M
-ok^M
-(Recording state in git...)^M
-+ git remote add origin ssh://git@remote/~/repo.git
-+ echo hello
-+ git-annex add .
-add foo.txt (checksum...) ok^M
-(Recording state in git...)^M
-+ git commit -m .
-[master (root-commit) f34a076] .
- 1 file changed, 1 insertion(+)
- create mode 120000 foo.txt
-+ git-annex sync
-commit  ^M
-ok^M
-pull origin warning: no common commits
-From ssh://remote/~/repo
- * [new branch]      git-annex  -> origin/git-annex
-^M
-ok^M
-(merging origin/git-annex into git-annex...)^M
-(Recording state in git...)^M
-push origin To ssh://git@remote/~/repo.git
- * [new branch]      git-annex -> synced/git-annex
- * [new branch]      master -> synced/master
-^M
-ok^M
-+ git-annex copy --to origin
-copy foo.txt (checking origin...) (to origin...) ^M
-failed^M
-git-annex.exe: copy: 1 failed
-</pre>
-
-
-
-
-
-### What version of git-annex are you using? On what operating system?
-Windows (8 x64):
-git-annex version: 4.20130621-g36258de
-build flags: Pairing Testsuite S3 WebDAV DNS
-Linux (debian wheezy i386):
-git-annex version: 4.20130621-g36258de
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS
-
-other versions
-git-bash: git(1.8.0.msysgit.0),ssh(ssh 4.6p1, ssl 0.9.8e 23 feb 2007)
-msys: git(none) ssh(ssh 5.4p1, ssl 1.0.0 29 Mar 2010)
-cygwin: git(1.7.9) ssh(none)
-
-### 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
-
-build.log:
-+ set -e
-+ HP='/c/Program Files (x86)/Haskell Platform/2012.4.0.0'
-+ FLAGS='-Webapp -Assistant -XMPP'
-+ PATH='/c/Program Files (x86)/Haskell Platform/2012.4.0.0/bin:/c/Program Files (x86)/Haskell Platform/2012.4.0.0/lib/extralibs/bin:/c/Program Files (x86)/NSIS:/home/Oliver/bin:.:/usr/local/bin:/mingw/bin:/bin:/c/Program Files (x86)/Haskell/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/lib/extralibs/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/bin:/c/Program Files (x86)/AMD APP/bin/x86_64:/c/Program Files (x86)/AMD APP/bin/x86:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/c/Program Files (x86)/Windows Kits/8.0/Windows Performance Toolkit/:/c/Program Files/Microsoft/Web Platform Installer/:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/mingw/bin:/c/Users/Oliver/AppData/Roaming/cabal/bin'
-+ rm -f git-annex-installer.exe
-+ cabal update
-Downloading the latest package list from hackage.haskell.org
-+ rm -rf MissingH-1.2.0.0
-+ cabal unpack MissingH
-Unpacking to MissingH-1.2.0.0\
-+ cd MissingH-1.2.0.0
-+ withcyg patch -p1
-+ PATH='/c/Program Files (x86)/Haskell Platform/2012.4.0.0/bin:/c/Program Files (x86)/Haskell Platform/2012.4.0.0/lib/extralibs/bin:/c/Program Files (x86)/NSIS:/home/Oliver/bin:.:/usr/local/bin:/mingw/bin:/bin:/c/Program Files (x86)/Haskell/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/lib/extralibs/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/bin:/c/Program Files (x86)/AMD APP/bin/x86_64:/c/Program Files (x86)/AMD APP/bin/x86:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/c/Program Files (x86)/Windows Kits/8.0/Windows Performance Toolkit/:/c/Program Files/Microsoft/Web Platform Installer/:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/mingw/bin:/c/Users/Oliver/AppData/Roaming/cabal/bin:/c/cygwin/bin'
-+ patch -p1
-patching file src/System/IO/WindowsCompat.hs
-Hunk #1 succeeded at 119 (offset -1 lines).
-Hunk #2 succeeded at 132 (offset -1 lines).
-+ cabal install
-Resolving dependencies...
-In order, the following would be installed:
-MissingH-1.2.0.0 (reinstall)
-cabal.exe: The following packages are likely to be broken by the reinstalls:
-hS3-0.5.7
-Use --force-reinstalls if you want to install anyway.
-+ true
-+ cd ..
-+ cabal install --only-dependencies '-f-Webapp -Assistant -XMPP'
-Resolving dependencies...
-All the requested packages are already installed:
-Use --reinstall if you want to reinstall anyway.
-+ '[' -e last-incremental-failed ']'
-+ touch last-incremental-failed
-+ withcyg cabal configure '-f-Webapp -Assistant -XMPP'
-+ PATH='/c/Program Files (x86)/Haskell Platform/2012.4.0.0/bin:/c/Program Files (x86)/Haskell Platform/2012.4.0.0/lib/extralibs/bin:/c/Program Files (x86)/NSIS:/home/Oliver/bin:.:/usr/local/bin:/mingw/bin:/bin:/c/Program Files (x86)/Haskell/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/lib/extralibs/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/bin:/c/Program Files (x86)/AMD APP/bin/x86_64:/c/Program Files (x86)/AMD APP/bin/x86:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/c/Program Files (x86)/Windows Kits/8.0/Windows Performance Toolkit/:/c/Program Files/Microsoft/Web Platform Installer/:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/mingw/bin:/c/Users/Oliver/AppData/Roaming/cabal/bin:/c/cygwin/bin'
-+ cabal configure '-f-Webapp -Assistant -XMPP'
-Resolving dependencies...
-[ 1 of 24] Compiling Utility.Applicative ( Utility\Applicative.hs, dist\setup\Utility\Applicative.o )
-[ 2 of 24] Compiling Utility.PartialPrelude ( Utility\PartialPrelude.hs, dist\setup\Utility\PartialPrelude.o )
-[ 3 of 24] Compiling Utility.FileSystemEncoding ( Utility\FileSystemEncoding.hs, dist\setup\Utility\FileSystemEncoding.o )
-[ 4 of 24] Compiling Utility.Exception ( Utility\Exception.hs, dist\setup\Utility\Exception.o )
-[ 5 of 24] Compiling Utility.Misc     ( Utility\Misc.hs, dist\setup\Utility\Misc.o )
-[ 6 of 24] Compiling Utility.Process  ( Utility\Process.hs, dist\setup\Utility\Process.o )
-[ 7 of 24] Compiling Utility.Env      ( Utility\Env.hs, dist\setup\Utility\Env.o )
-[ 8 of 24] Compiling Utility.UserInfo ( Utility\UserInfo.hs, dist\setup\Utility\UserInfo.o )
-[ 9 of 24] Compiling Utility.OSX      ( Utility\OSX.hs, dist\setup\Utility\OSX.o )
-[10 of 24] Compiling Utility.Tmp      ( Utility\Tmp.hs, dist\setup\Utility\Tmp.o )
-[11 of 24] Compiling Utility.Monad    ( Utility\Monad.hs, dist\setup\Utility\Monad.o )
-[12 of 24] Compiling Utility.Path     ( Utility\Path.hs, dist\setup\Utility\Path.o )
-[13 of 24] Compiling Utility.FreeDesktop ( Utility\FreeDesktop.hs, dist\setup\Utility\FreeDesktop.o )
-[16 of 24] Compiling Utility.SafeCommand ( Utility\SafeCommand.hs, dist\setup\Utility\SafeCommand.o )
-[17 of 24] Compiling Utility.ExternalSHA ( Utility\ExternalSHA.hs, dist\setup\Utility\ExternalSHA.o )
-[18 of 24] Compiling Utility.Directory ( Utility\Directory.hs, dist\setup\Utility\Directory.o )
-Linking .\dist\setup\setup.exe ...
-  checking version... 4.20130621-g36258de
-  checking git... yes
-  checking git version... 1.7.9
-  checking cp -a... yes
-  checking cp -p... yes
-  checking cp --reflink=auto... no
-  checking xargs -0... yes
-  checking rsync... yes
-  checking curl... no
-  checking wget... yes
-  checking bup... no
-  checking gpg... not available
-  checking lsof... not available
-  checking ssh connection caching... no
-  checking sha1... sha1sum
-  checking sha256... sha256sum
-  checking sha512... sha512sum
-  checking sha224... sha224sum
-  checking sha384... sha384sum
-Configuring git-annex-4.20130601...
-+ withcyg cabal build
-+ PATH='/c/Program Files (x86)/Haskell Platform/2012.4.0.0/bin:/c/Program Files (x86)/Haskell Platform/2012.4.0.0/lib/extralibs/bin:/c/Program Files (x86)/NSIS:/home/Oliver/bin:.:/usr/local/bin:/mingw/bin:/bin:/c/Program Files (x86)/Haskell/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/lib/extralibs/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/bin:/c/Program Files (x86)/AMD APP/bin/x86_64:/c/Program Files (x86)/AMD APP/bin/x86:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/c/Program Files (x86)/Windows Kits/8.0/Windows Performance Toolkit/:/c/Program Files/Microsoft/Web Platform Installer/:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/mingw/bin:/c/Users/Oliver/AppData/Roaming/cabal/bin:/c/cygwin/bin'
-+ cabal build
-Building git-annex-4.20130601...
-Preprocessing executable 'git-annex' for git-annex-4.20130601...
-Touch.hsc:117:2: warning: #warning "utimensat and lutimes not available; building without symlink timestamp preservation support"
-Touch.hsc: In function 'main':
-Touch.hsc:117:2: warning: #warning "utimensat and lutimes not available; building without symlink timestamp preservation support"
-Touch.hsc:117:2: warning: #warning "utimensat and lutimes not available; building without symlink timestamp preservation support"
-In file included from Mounts.hsc:23:0:
-Utility/libmounts.h:17:3: warning: #warning mounts listing code not available for this OS
-
-Utility\libdiskfree.c:36:3:
-     warning: #warning free space checking code not available for this OS
-
-In file included from Utility\libmounts.c:35:0: 
-
-Utility\libmounts.h:17:3:
-     warning: #warning mounts listing code not available for this OS
-[  1 of 217] Compiling Utility.Dot      ( Utility\Dot.hs, dist\build\git-annex\git-annex-tmp\Utility\Dot.o )
-[  2 of 217] Compiling BuildFlags       ( BuildFlags.hs, dist\build\git-annex\git-annex-tmp\BuildFlags.o )
-[  3 of 217] Compiling Utility.Percentage ( Utility\Percentage.hs, dist\build\git-annex\git-annex-tmp\Utility\Percentage.o )
-[  4 of 217] Compiling Utility.Base64   ( Utility\Base64.hs, dist\build\git-annex\git-annex-tmp\Utility\Base64.o )
-[  5 of 217] Compiling Utility.JSONStream ( Utility\JSONStream.hs, dist\build\git-annex\git-annex-tmp\Utility\JSONStream.o )
-[  6 of 217] Compiling Git.Types        ( Git\Types.hs, dist\build\git-annex\git-annex-tmp\Git\Types.o )
-[  7 of 217] Compiling Utility.DataUnits ( Utility\DataUnits.hs, dist\build\git-annex\git-annex-tmp\Utility\DataUnits.o )
-[  8 of 217] Compiling Types.FileMatcher ( Types\FileMatcher.hs, dist\build\git-annex\git-annex-tmp\Types\FileMatcher.o )
-[  9 of 217] Compiling Types.BranchState ( Types\BranchState.hs, dist\build\git-annex\git-annex-tmp\Types\BranchState.o )
-[ 10 of 217] Compiling Messages.JSON    ( Messages\JSON.hs, dist\build\git-annex\git-annex-tmp\Messages\JSON.o )
-[ 11 of 217] Compiling Types.UUID       ( Types\UUID.hs, dist\build\git-annex\git-annex-tmp\Types\UUID.o )
-[ 12 of 217] Compiling Types.Group      ( Types\Group.hs, dist\build\git-annex\git-annex-tmp\Types\Group.o )
-[ 13 of 217] Compiling Utility.Shell    ( Utility\Shell.hs, dist\build\git-annex\git-annex-tmp\Utility\Shell.o )
-[ 14 of 217] Compiling Utility.QuickCheck ( Utility\QuickCheck.hs, dist\build\git-annex\git-annex-tmp\Utility\QuickCheck.o )
-[ 15 of 217] Compiling Utility.PartialPrelude ( Utility\PartialPrelude.hs, dist\build\git-annex\git-annex-tmp\Utility\PartialPrelude.o )
-[ 16 of 217] Compiling Utility.HumanTime ( Utility\HumanTime.hs, dist\build\git-annex\git-annex-tmp\Utility\HumanTime.o )
-[ 17 of 217] Compiling Utility.FileSystemEncoding ( Utility\FileSystemEncoding.hs, dist\build\git-annex\git-annex-tmp\Utility\FileSystemEncoding.o )
-[ 18 of 217] Compiling Utility.Touch    ( dist\build\git-annex\git-annex-tmp\Utility\Touch.hs, dist\build\git-annex\git-annex-tmp\Utility\Touch.o )
-
-UtilityTouch.hsc:17:1: Warning:
-    The import of `Utility.FileSystemEncoding' is redundant
-      except perhaps to import instances from `Utility.FileSystemEncoding'
-    To import instances alone, use: import Utility.FileSystemEncoding()
-
-UtilityTouch.hsc:19:1: Warning:
-    The import of `Foreign' is redundant
-      except perhaps to import instances from `Foreign'
-    To import instances alone, use: import Foreign()
-
-UtilityTouch.hsc:21:1: Warning:
-    The import of `Control.Monad' is redundant
-      except perhaps to import instances from `Control.Monad'
-    To import instances alone, use: import Control.Monad()
-[ 19 of 217] Compiling Utility.Applicative ( Utility\Applicative.hs, dist\build\git-annex\git-annex-tmp\Utility\Applicative.o )
-[ 20 of 217] Compiling Utility.Monad    ( Utility\Monad.hs, dist\build\git-annex\git-annex-tmp\Utility\Monad.o )
-[ 21 of 217] Compiling Utility.Exception ( Utility\Exception.hs, dist\build\git-annex\git-annex-tmp\Utility\Exception.o )
-[ 22 of 217] Compiling Utility.Tmp      ( Utility\Tmp.hs, dist\build\git-annex\git-annex-tmp\Utility\Tmp.o )
-[ 23 of 217] Compiling Utility.Env      ( Utility\Env.hs, dist\build\git-annex\git-annex-tmp\Utility\Env.o )
-[ 24 of 217] Compiling Utility.UserInfo ( Utility\UserInfo.hs, dist\build\git-annex\git-annex-tmp\Utility\UserInfo.o )
-[ 25 of 217] Compiling Utility.Misc     ( Utility\Misc.hs, dist\build\git-annex\git-annex-tmp\Utility\Misc.o )
-
-Utility\Misc.hs:22:1: Warning:
-    The import of `Utility.Exception' is redundant
-      except perhaps to import instances from `Utility.Exception'
-    To import instances alone, use: import Utility.Exception()
-[ 26 of 217] Compiling Utility.Process  ( Utility\Process.hs, dist\build\git-annex\git-annex-tmp\Utility\Process.o )
-
-Utility\Process.hs:44:1: Warning:
-    The import of `Data.Maybe' is redundant
-      except perhaps to import instances from `Data.Maybe'
-    To import instances alone, use: import Data.Maybe()
-[ 27 of 217] Compiling Utility.Network  ( Utility\Network.hs, dist\build\git-annex\git-annex-tmp\Utility\Network.o )
-[ 28 of 217] Compiling Utility.Verifiable ( Utility\Verifiable.hs, dist\build\git-annex\git-annex-tmp\Utility\Verifiable.o )
-[ 29 of 217] Compiling Utility.Format   ( Utility\Format.hs, dist\build\git-annex\git-annex-tmp\Utility\Format.o )
-[ 30 of 217] Compiling Build.SysConfig  ( Build\SysConfig.hs, dist\build\git-annex\git-annex-tmp\Build\SysConfig.o )
-[ 31 of 217] Compiling Utility.Path     ( Utility\Path.hs, dist\build\git-annex\git-annex-tmp\Utility\Path.o )
-[ 32 of 217] Compiling Config.Cost      ( Config\Cost.hs, dist\build\git-annex\git-annex-tmp\Config\Cost.o )
-[ 33 of 217] Compiling Types.Messages   ( Types\Messages.hs, dist\build\git-annex\git-annex-tmp\Types\Messages.o )
-[ 34 of 217] Compiling Types.TrustLevel ( Types\TrustLevel.hs, dist\build\git-annex\git-annex-tmp\Types\TrustLevel.o )
-[ 35 of 217] Compiling Utility.SafeCommand ( Utility\SafeCommand.hs, dist\build\git-annex\git-annex-tmp\Utility\SafeCommand.o )
-[ 36 of 217] Compiling Utility.Directory ( Utility\Directory.hs, dist\build\git-annex\git-annex-tmp\Utility\Directory.o )
-[ 37 of 217] Compiling Utility.ExternalSHA ( Utility\ExternalSHA.hs, dist\build\git-annex\git-annex-tmp\Utility\ExternalSHA.o )
-[ 38 of 217] Compiling Common           ( Common.hs, dist\build\git-annex\git-annex-tmp\Common.o )
-[ 39 of 217] Compiling Git.Filename     ( Git\Filename.hs, dist\build\git-annex\git-annex-tmp\Git\Filename.o )
-[ 40 of 217] Compiling Logs.UUIDBased   ( Logs\UUIDBased.hs, dist\build\git-annex\git-annex-tmp\Logs\UUIDBased.o )
-[ 41 of 217] Compiling Types.Key        ( Types\Key.hs, dist\build\git-annex\git-annex-tmp\Types\Key.o )
-[ 42 of 217] Compiling Utility.FileMode ( Utility\FileMode.hs, dist\build\git-annex\git-annex-tmp\Utility\FileMode.o )
-[ 43 of 217] Compiling Git              ( Git.hs, dist\build\git-annex\git-annex-tmp\Git.o )
-
-Git.hs:41:1: Warning:
-    The import of `Utility.FileMode' is redundant
-      except perhaps to import instances from `Utility.FileMode'
-    To import instances alone, use: import Utility.FileMode()
-[ 44 of 217] Compiling Utility.InodeCache ( Utility\InodeCache.hs, dist\build\git-annex\git-annex-tmp\Utility\InodeCache.o )
-[ 45 of 217] Compiling Types.KeySource  ( Types\KeySource.hs, dist\build\git-annex\git-annex-tmp\Types\KeySource.o )
-[ 46 of 217] Compiling Types.Backend    ( Types\Backend.hs, dist\build\git-annex\git-annex-tmp\Types\Backend.o )
-[ 47 of 217] Compiling Utility.Gpg      ( Utility\Gpg.hs, dist\build\git-annex\git-annex-tmp\Utility\Gpg.o )
-
-Utility\Gpg.hs:12:1: Warning:
-    The import of `System.Posix.Types' is redundant
-      except perhaps to import instances from `System.Posix.Types'
-    To import instances alone, use: import System.Posix.Types()
-
-Utility\Gpg.hs:14:1: Warning:
-    The import of `Control.Concurrent' is redundant
-      except perhaps to import instances from `Control.Concurrent'
-    To import instances alone, use: import Control.Concurrent()
-
-Utility\Gpg.hs:15:1: Warning:
-    The import of `Control.Exception' is redundant
-      except perhaps to import instances from `Control.Exception'
-    To import instances alone, use: import Control.Exception()
-
-Utility\Gpg.hs:16:1: Warning:
-    The import of `System.Path' is redundant
-      except perhaps to import instances from `System.Path'
-    To import instances alone, use: import System.Path()
-
-Utility\Gpg.hs:19:1: Warning:
-    The import of `Utility.Env' is redundant
-      except perhaps to import instances from `Utility.Env'
-    To import instances alone, use: import Utility.Env()
-[ 48 of 217] Compiling Types.Crypto     ( Types\Crypto.hs, dist\build\git-annex\git-annex-tmp\Types\Crypto.o )
-[ 49 of 217] Compiling Utility.Matcher  ( Utility\Matcher.hs, dist\build\git-annex\git-annex-tmp\Utility\Matcher.o )
-[ 50 of 217] Compiling Utility.Metered  ( Utility\Metered.hs, dist\build\git-annex\git-annex-tmp\Utility\Metered.o )
-[ 51 of 217] Compiling Git.FilePath     ( Git\FilePath.hs, dist\build\git-annex\git-annex-tmp\Git\FilePath.o )
-[ 52 of 217] Compiling Git.Url          ( Git\Url.hs, dist\build\git-annex\git-annex-tmp\Git\Url.o )
-[ 53 of 217] Compiling Git.Construct    ( Git\Construct.hs, dist\build\git-annex\git-annex-tmp\Git\Construct.o )
-[ 54 of 217] Compiling Git.Config       ( Git\Config.hs, dist\build\git-annex\git-annex-tmp\Git\Config.o )
-[ 55 of 217] Compiling Git.CurrentRepo  ( Git\CurrentRepo.hs, dist\build\git-annex\git-annex-tmp\Git\CurrentRepo.o )
-
-Git\CurrentRepo.hs:16:1: Warning:
-    The import of `Utility.Env' is redundant
-      except perhaps to import instances from `Utility.Env'
-    To import instances alone, use: import Utility.Env()
-
-Git\CurrentRepo.hs:43:17: Warning: Defined but not used: `s'
-[ 56 of 217] Compiling Git.SharedRepository ( Git\SharedRepository.hs, dist\build\git-annex\git-annex-tmp\Git\SharedRepository.o )
-[ 57 of 217] Compiling Types.GitConfig  ( Types\GitConfig.hs, dist\build\git-annex\git-annex-tmp\Types\GitConfig.o )
-[ 58 of 217] Compiling Types.Remote     ( Types\Remote.hs, dist\build\git-annex\git-annex-tmp\Types\Remote.o )
-[ 59 of 217] Compiling Types.StandardGroups ( Types\StandardGroups.hs, dist\build\git-annex\git-annex-tmp\Types\StandardGroups.o )
-[ 60 of 217] Compiling Utility.Gpg.Types ( Utility\Gpg\Types.hs, dist\build\git-annex\git-annex-tmp\Utility\Gpg\Types.o )
-[ 61 of 217] Compiling Git.Sha          ( Git\Sha.hs, dist\build\git-annex\git-annex-tmp\Git\Sha.o )
-[ 62 of 217] Compiling Utility.CoProcess ( Utility\CoProcess.hs, dist\build\git-annex\git-annex-tmp\Utility\CoProcess.o )
-[ 63 of 217] Compiling Git.Command      ( Git\Command.hs, dist\build\git-annex\git-annex-tmp\Git\Command.o )
-[ 64 of 217] Compiling Git.LsFiles      ( Git\LsFiles.hs, dist\build\git-annex\git-annex-tmp\Git\LsFiles.o )
-[ 65 of 217] Compiling Git.CatFile      ( Git\CatFile.hs, dist\build\git-annex\git-annex-tmp\Git\CatFile.o )
-[ 66 of 217] Compiling Git.UpdateIndex  ( Git\UpdateIndex.hs, dist\build\git-annex\git-annex-tmp\Git\UpdateIndex.o )
-[ 67 of 217] Compiling Git.Queue        ( Git\Queue.hs, dist\build\git-annex\git-annex-tmp\Git\Queue.o )
-[ 68 of 217] Compiling Git.Version      ( Git\Version.hs, dist\build\git-annex\git-annex-tmp\Git\Version.o )
-[ 69 of 217] Compiling Git.CheckAttr    ( Git\CheckAttr.hs, dist\build\git-annex\git-annex-tmp\Git\CheckAttr.o )
-[ 70 of 217] Compiling Annex            ( Annex.hs, dist\build\git-annex\git-annex-tmp\Annex.o )
-[ 71 of 217] Compiling Types.Option     ( Types\Option.hs, dist\build\git-annex\git-annex-tmp\Types\Option.o )
-[ 72 of 217] Compiling Types            ( Types.hs, dist\build\git-annex\git-annex-tmp\Types.o )
-[ 73 of 217] Compiling Locations        ( Locations.hs, dist\build\git-annex\git-annex-tmp\Locations.o )
-[ 74 of 217] Compiling Messages         ( Messages.hs, dist\build\git-annex\git-annex-tmp\Messages.o )
-[ 75 of 217] Compiling Common.Annex     ( Common\Annex.hs, dist\build\git-annex\git-annex-tmp\Common\Annex.o )
-[ 76 of 217] Compiling Crypto           ( Crypto.hs, dist\build\git-annex\git-annex-tmp\Crypto.o )
-[ 77 of 217] Compiling Annex.CatFile    ( Annex\CatFile.hs, dist\build\git-annex\git-annex-tmp\Annex\CatFile.o )
-[ 78 of 217] Compiling Backend.SHA      ( Backend\SHA.hs, dist\build\git-annex\git-annex-tmp\Backend\SHA.o )
-[ 79 of 217] Compiling Backend.WORM     ( Backend\WORM.hs, dist\build\git-annex\git-annex-tmp\Backend\WORM.o )
-[ 80 of 217] Compiling Backend.URL      ( Backend\URL.hs, dist\build\git-annex\git-annex-tmp\Backend\URL.o )
-[ 81 of 217] Compiling Annex.Exception  ( Annex\Exception.hs, dist\build\git-annex\git-annex-tmp\Annex\Exception.o )
-[ 82 of 217] Compiling Remote.Helper.Special ( Remote\Helper\Special.hs, dist\build\git-annex\git-annex-tmp\Remote\Helper\Special.o )
-[ 83 of 217] Compiling Remote.Helper.Chunked ( Remote\Helper\Chunked.hs, dist\build\git-annex\git-annex-tmp\Remote\Helper\Chunked.o )
-[ 84 of 217] Compiling Annex.Environment ( Annex\Environment.hs, dist\build\git-annex\git-annex-tmp\Annex\Environment.o )
-
-Annex\Environment.hs:13:1: Warning:
-    The import of `Utility.Env' is redundant
-      except perhaps to import instances from `Utility.Env'
-    To import instances alone, use: import Utility.Env()
-
-Annex\Environment.hs:14:1: Warning:
-    The import of `Utility.UserInfo' is redundant
-      except perhaps to import instances from `Utility.UserInfo'
-    To import instances alone, use: import Utility.UserInfo()
-[ 85 of 217] Compiling Types.Command    ( Types\Command.hs, dist\build\git-annex\git-annex-tmp\Types\Command.o )
-[ 86 of 217] Compiling Usage            ( Usage.hs, dist\build\git-annex\git-annex-tmp\Usage.o )
-[ 87 of 217] Compiling Annex.Queue      ( Annex\Queue.hs, dist\build\git-annex\git-annex-tmp\Annex\Queue.o )
-[ 88 of 217] Compiling Annex.BranchState ( Annex\BranchState.hs, dist\build\git-annex\git-annex-tmp\Annex\BranchState.o )
-[ 89 of 217] Compiling Remote.Helper.Encryptable ( Remote\Helper\Encryptable.hs, dist\build\git-annex\git-annex-tmp\Remote\Helper\Encryptable.o )
-[ 90 of 217] Compiling Fields           ( Fields.hs, dist\build\git-annex\git-annex-tmp\Fields.o )
-[ 91 of 217] Compiling Annex.CheckAttr  ( Annex\CheckAttr.hs, dist\build\git-annex\git-annex-tmp\Annex\CheckAttr.o )
-[ 92 of 217] Compiling Git.HashObject   ( Git\HashObject.hs, dist\build\git-annex\git-annex-tmp\Git\HashObject.o )
-[ 93 of 217] Compiling Annex.Link       ( Annex\Link.hs, dist\build\git-annex\git-annex-tmp\Annex\Link.o )
-[ 94 of 217] Compiling Utility.CopyFile ( Utility\CopyFile.hs, dist\build\git-annex\git-annex-tmp\Utility\CopyFile.o )
-[ 95 of 217] Compiling Git.Ref          ( Git\Ref.hs, dist\build\git-annex\git-annex-tmp\Git\Ref.o )
-[ 96 of 217] Compiling Git.Branch       ( Git\Branch.hs, dist\build\git-annex\git-annex-tmp\Git\Branch.o )
-[ 97 of 217] Compiling Git.UnionMerge   ( Git\UnionMerge.hs, dist\build\git-annex\git-annex-tmp\Git\UnionMerge.o )
-[ 98 of 217] Compiling Git.Merge        ( Git\Merge.hs, dist\build\git-annex\git-annex-tmp\Git\Merge.o )
-[ 99 of 217] Compiling Git.DiffTree     ( Git\DiffTree.hs, dist\build\git-annex\git-annex-tmp\Git\DiffTree.o )
-[100 of 217] Compiling Utility.DiskFree ( Utility\DiskFree.hs, dist\build\git-annex\git-annex-tmp\Utility\DiskFree.o )
-[101 of 217] Compiling Utility.Url      ( Utility\Url.hs, dist\build\git-annex\git-annex-tmp\Utility\Url.o )
-[102 of 217] Compiling Utility.Rsync    ( Utility\Rsync.hs, dist\build\git-annex\git-annex-tmp\Utility\Rsync.o )
-[103 of 217] Compiling Utility.LogFile  ( Utility\LogFile.hs, dist\build\git-annex\git-annex-tmp\Utility\LogFile.o )
-
-Utility\LogFile.hs:67:1: Warning:
-    Top-level binding with no type signature:
-      redir :: forall t t1 t2. t -> t1 -> t2
-[104 of 217] Compiling Utility.Daemon   ( Utility\Daemon.hs, dist\build\git-annex\git-annex-tmp\Utility\Daemon.o )
-
-Utility\Daemon.hs:13:1: Warning:
-    The import of `Utility.LogFile' is redundant
-      except perhaps to import instances from `Utility.LogFile'
-    To import instances alone, use: import Utility.LogFile()
-
-Utility\Daemon.hs:19:1: Warning:
-    The import of `System.Posix.Types' is redundant
-      except perhaps to import instances from `System.Posix.Types'
-    To import instances alone, use: import System.Posix.Types()
-[105 of 217] Compiling Git.AutoCorrect  ( Git\AutoCorrect.hs, dist\build\git-annex\git-annex-tmp\Git\AutoCorrect.o )
-[106 of 217] Compiling Utility.ThreadScheduler ( Utility\ThreadScheduler.hs, dist\build\git-annex\git-annex-tmp\Utility\ThreadScheduler.o )
-[107 of 217] Compiling Git.LsTree       ( Git\LsTree.hs, dist\build\git-annex\git-annex-tmp\Git\LsTree.o )
-[108 of 217] Compiling Config           ( Config.hs, dist\build\git-annex\git-annex-tmp\Config.o )
-[109 of 217] Compiling Annex.UUID       ( Annex\UUID.hs, dist\build\git-annex\git-annex-tmp\Annex\UUID.o )
-[110 of 217] Compiling Backend          ( Backend.hs, dist\build\git-annex\git-annex-tmp\Backend.o )
-[111 of 217] Compiling Annex.Version    ( Annex\Version.hs, dist\build\git-annex\git-annex-tmp\Annex\Version.o )
-[112 of 217] Compiling Annex.Perms      ( Annex\Perms.hs, dist\build\git-annex\git-annex-tmp\Annex\Perms.o )
-[113 of 217] Compiling Logs.Transfer    ( Logs\Transfer.hs, dist\build\git-annex\git-annex-tmp\Logs\Transfer.o )
-
-Logs\Transfer.hs:126:20: Warning: Defined but not used: `mode'
-
-Logs\Transfer.hs:146:29: Warning: Defined but not used: `fd'
-[114 of 217] Compiling Annex.ReplaceFile ( Annex\ReplaceFile.hs, dist\build\git-annex\git-annex-tmp\Annex\ReplaceFile.o )
-[115 of 217] Compiling Annex.Journal    ( Annex\Journal.hs, dist\build\git-annex\git-annex-tmp\Annex\Journal.o )
-
-Annex\Journal.hs:89:23: Warning: Defined but not used: `mode'
-[116 of 217] Compiling Annex.Branch     ( Annex\Branch.hs, dist\build\git-annex\git-annex-tmp\Annex\Branch.o )
-[117 of 217] Compiling Logs.Remote      ( Logs\Remote.hs, dist\build\git-annex\git-annex-tmp\Logs\Remote.o )
-[118 of 217] Compiling Logs.Presence    ( Logs\Presence.hs, dist\build\git-annex\git-annex-tmp\Logs\Presence.o )
-[119 of 217] Compiling Logs.UUID        ( Logs\UUID.hs, dist\build\git-annex\git-annex-tmp\Logs\UUID.o )
-[120 of 217] Compiling Logs.Location    ( Logs\Location.hs, dist\build\git-annex\git-annex-tmp\Logs\Location.o )
-[121 of 217] Compiling Annex.Content.Direct ( Annex\Content\Direct.hs, dist\build\git-annex\git-annex-tmp\Annex\Content\Direct.o )
-[122 of 217] Compiling Annex.Content    ( Annex\Content.hs, dist\build\git-annex\git-annex-tmp\Annex\Content.o )
-
-Annex\Content.hs:50:1: Warning:
-    The import of `Annex.Exception' is redundant
-      except perhaps to import instances from `Annex.Exception'
-    To import instances alone, use: import Annex.Exception()
-
-Annex\Content.hs:89:21: Warning: Defined but not used: `f'
-
-Annex\Content.hs:96:21: Warning: Defined but not used: `h'
-
-Annex\Content.hs:106:9: Warning: Defined but not used: `is_locked'
-
-Annex\Content.hs:113:13: Warning: Defined but not used: `key'
-[123 of 217] Compiling Annex.Direct     ( Annex\Direct.hs, dist\build\git-annex\git-annex-tmp\Annex\Direct.o )
-[124 of 217] Compiling Init             ( Init.hs, dist\build\git-annex\git-annex-tmp\Init.o )
-
-Init.hs:29:1: Warning:
-    The import of `Utility.UserInfo' is redundant
-      except perhaps to import instances from `Utility.UserInfo'
-    To import instances alone, use: import Utility.UserInfo()
-
-Init.hs:31:1: Warning:
-    The import of `Utility.FileMode' is redundant
-      except perhaps to import instances from `Utility.FileMode'
-    To import instances alone, use: import Utility.FileMode()
-[125 of 217] Compiling Logs.Web         ( Logs\Web.hs, dist\build\git-annex\git-annex-tmp\Logs\Web.o )
-[126 of 217] Compiling Logs.Group       ( Logs\Group.hs, dist\build\git-annex\git-annex-tmp\Logs\Group.o )
-[127 of 217] Compiling Upgrade.V2       ( Upgrade\V2.hs, dist\build\git-annex\git-annex-tmp\Upgrade\V2.o )
-[128 of 217] Compiling Upgrade          ( Upgrade.hs, dist\build\git-annex\git-annex-tmp\Upgrade.o )
-[129 of 217] Compiling Creds            ( Creds.hs, dist\build\git-annex\git-annex-tmp\Creds.o )
-
-Creds.hs:18:1: Warning:
-    The import of `Utility.Env' is redundant
-      except perhaps to import instances from `Utility.Env'
-    To import instances alone, use: import Utility.Env()
-[130 of 217] Compiling Remote.Helper.AWS ( Remote\Helper\AWS.hs, dist\build\git-annex\git-annex-tmp\Remote\Helper\AWS.o )
-[131 of 217] Compiling Annex.LockPool   ( Annex\LockPool.hs, dist\build\git-annex\git-annex-tmp\Annex\LockPool.o )
-
-Annex\LockPool.hs:17:1: Warning:
-    The import of `Annex.Perms' is redundant
-      except perhaps to import instances from `Annex.Perms'
-    To import instances alone, use: import Annex.Perms()
-
-Annex\LockPool.hs:39:12: Warning: Defined but not used: `fd'
-[132 of 217] Compiling Remote.Helper.Hooks ( Remote\Helper\Hooks.hs, dist\build\git-annex\git-annex-tmp\Remote\Helper\Hooks.o )
-
-Remote\Helper\Hooks.hs:18:1: Warning:
-    The import of `Annex.Perms' is redundant
-      except perhaps to import instances from `Annex.Perms'
-    To import instances alone, use: import Annex.Perms()
-
-Remote\Helper\Hooks.hs:74:17: Warning: Defined but not used: `lck'
-[133 of 217] Compiling Remote.S3        ( Remote\S3.hs, dist\build\git-annex\git-annex-tmp\Remote\S3.o )
-[134 of 217] Compiling Remote.Directory ( Remote\Directory.hs, dist\build\git-annex\git-annex-tmp\Remote\Directory.o )
-[135 of 217] Compiling Remote.Web       ( Remote\Web.hs, dist\build\git-annex\git-annex-tmp\Remote\Web.o )
-[136 of 217] Compiling Remote.WebDAV    ( Remote\WebDAV.hs, dist\build\git-annex\git-annex-tmp\Remote\WebDAV.o )
-[137 of 217] Compiling Remote.Glacier   ( Remote\Glacier.hs, dist\build\git-annex\git-annex-tmp\Remote\Glacier.o )
-[138 of 217] Compiling Remote.Hook      ( Remote\Hook.hs, dist\build\git-annex\git-annex-tmp\Remote\Hook.o )
-[139 of 217] Compiling Annex.Ssh        ( Annex\Ssh.hs, dist\build\git-annex\git-annex-tmp\Annex\Ssh.o )
-
-Annex\Ssh.hs:21:1: Warning:
-    The import of `Annex.Perms' is redundant
-      except perhaps to import instances from `Annex.Perms'
-    To import instances alone, use: import Annex.Perms()
-[140 of 217] Compiling Remote.Rsync     ( Remote\Rsync.hs, dist\build\git-annex\git-annex-tmp\Remote\Rsync.o )
-[141 of 217] Compiling Remote.Helper.Ssh ( Remote\Helper\Ssh.hs, dist\build\git-annex\git-annex-tmp\Remote\Helper\Ssh.o )
-[142 of 217] Compiling Remote.Git       ( Remote\Git.hs, dist\build\git-annex\git-annex-tmp\Remote\Git.o )
-
-Remote\Git.hs:20:1: Warning:
-    The import of `Utility.CopyFile' is redundant
-      except perhaps to import instances from `Utility.CopyFile'
-    To import instances alone, use: import Utility.CopyFile()
-
-Remote\Git.hs:360:21: Warning: Defined but not used: `r'
-
-Remote\Git.hs:360:23: Warning: Defined but not used: `key'
-
-Remote\Git.hs:360:27: Warning: Defined but not used: `file'
-[143 of 217] Compiling Remote.Bup       ( Remote\Bup.hs, dist\build\git-annex\git-annex-tmp\Remote\Bup.o )
-[144 of 217] Compiling Remote.List      ( Remote\List.hs, dist\build\git-annex\git-annex-tmp\Remote\List.o )
-[145 of 217] Compiling Logs.Trust       ( Logs\Trust.hs, dist\build\git-annex\git-annex-tmp\Logs\Trust.o )
-[146 of 217] Compiling Remote           ( Remote.hs, dist\build\git-annex\git-annex-tmp\Remote.o )
-[147 of 217] Compiling Limit            ( Limit.hs, dist\build\git-annex\git-annex-tmp\Limit.o )
-[148 of 217] Compiling Option           ( Option.hs, dist\build\git-annex\git-annex-tmp\Option.o )
-[149 of 217] Compiling Annex.FileMatcher ( Annex\FileMatcher.hs, dist\build\git-annex\git-annex-tmp\Annex\FileMatcher.o )
-[150 of 217] Compiling Logs.PreferredContent ( Logs\PreferredContent.hs, dist\build\git-annex\git-annex-tmp\Logs\PreferredContent.o )
-[151 of 217] Compiling Annex.Wanted     ( Annex\Wanted.hs, dist\build\git-annex\git-annex-tmp\Annex\Wanted.o )
-[152 of 217] Compiling Seek             ( Seek.hs, dist\build\git-annex\git-annex-tmp\Seek.o )
-[153 of 217] Compiling Checks           ( Checks.hs, dist\build\git-annex\git-annex-tmp\Checks.o )
-[154 of 217] Compiling Command          ( Command.hs, dist\build\git-annex\git-annex-tmp\Command.o )
-[155 of 217] Compiling Logs.Unused      ( Logs\Unused.hs, dist\build\git-annex\git-annex-tmp\Logs\Unused.o )
-[156 of 217] Compiling CmdLine          ( CmdLine.hs, dist\build\git-annex\git-annex-tmp\CmdLine.o )
-[157 of 217] Compiling Command.ConfigList ( Command\ConfigList.hs, dist\build\git-annex\git-annex-tmp\Command\ConfigList.o )
-[158 of 217] Compiling Command.InAnnex  ( Command\InAnnex.hs, dist\build\git-annex\git-annex-tmp\Command\InAnnex.o )
-[159 of 217] Compiling Command.DropKey  ( Command\DropKey.hs, dist\build\git-annex\git-annex-tmp\Command\DropKey.o )
-[160 of 217] Compiling Command.SendKey  ( Command\SendKey.hs, dist\build\git-annex\git-annex-tmp\Command\SendKey.o )
-[161 of 217] Compiling Command.RecvKey  ( Command\RecvKey.hs, dist\build\git-annex\git-annex-tmp\Command\RecvKey.o )
-[162 of 217] Compiling Command.TransferInfo ( Command\TransferInfo.hs, dist\build\git-annex\git-annex-tmp\Command\TransferInfo.o )
-[163 of 217] Compiling Command.Commit   ( Command\Commit.hs, dist\build\git-annex\git-annex-tmp\Command\Commit.o )
-[164 of 217] Compiling GitAnnex.Options ( GitAnnex\Options.hs, dist\build\git-annex\git-annex-tmp\GitAnnex\Options.o )
-[165 of 217] Compiling Command.Unannex  ( Command\Unannex.hs, dist\build\git-annex\git-annex-tmp\Command\Unannex.o )
-[166 of 217] Compiling Command.FromKey  ( Command\FromKey.hs, dist\build\git-annex\git-annex-tmp\Command\FromKey.o )
-[167 of 217] Compiling Command.Fix      ( Command\Fix.hs, dist\build\git-annex\git-annex-tmp\Command\Fix.o )
-[168 of 217] Compiling Command.Init     ( Command\Init.hs, dist\build\git-annex\git-annex-tmp\Command\Init.o )
-[169 of 217] Compiling Command.Describe ( Command\Describe.hs, dist\build\git-annex\git-annex-tmp\Command\Describe.o )
-[170 of 217] Compiling Command.InitRemote ( Command\InitRemote.hs, dist\build\git-annex\git-annex-tmp\Command\InitRemote.o )
-[171 of 217] Compiling Command.EnableRemote ( Command\EnableRemote.hs, dist\build\git-annex\git-annex-tmp\Command\EnableRemote.o )
-[172 of 217] Compiling Command.Unused   ( Command\Unused.hs, dist\build\git-annex\git-annex-tmp\Command\Unused.o )
-[173 of 217] Compiling Command.Unlock   ( Command\Unlock.hs, dist\build\git-annex\git-annex-tmp\Command\Unlock.o )
-[174 of 217] Compiling Command.Lock     ( Command\Lock.hs, dist\build\git-annex\git-annex-tmp\Command\Lock.o )
-[175 of 217] Compiling Command.Find     ( Command\Find.hs, dist\build\git-annex\git-annex-tmp\Command\Find.o )
-[176 of 217] Compiling Command.Whereis  ( Command\Whereis.hs, dist\build\git-annex\git-annex-tmp\Command\Whereis.o )
-[177 of 217] Compiling Command.Log      ( Command\Log.hs, dist\build\git-annex\git-annex-tmp\Command\Log.o )
-[178 of 217] Compiling Command.Merge    ( Command\Merge.hs, dist\build\git-annex\git-annex-tmp\Command\Merge.o )
-[179 of 217] Compiling Command.Uninit   ( Command\Uninit.hs, dist\build\git-annex\git-annex-tmp\Command\Uninit.o )
-[180 of 217] Compiling Command.Trust    ( Command\Trust.hs, dist\build\git-annex\git-annex-tmp\Command\Trust.o )
-[181 of 217] Compiling Command.Untrust  ( Command\Untrust.hs, dist\build\git-annex\git-annex-tmp\Command\Untrust.o )
-[182 of 217] Compiling Command.Semitrust ( Command\Semitrust.hs, dist\build\git-annex\git-annex-tmp\Command\Semitrust.o )
-[183 of 217] Compiling Command.Dead     ( Command\Dead.hs, dist\build\git-annex\git-annex-tmp\Command\Dead.o )
-[184 of 217] Compiling Command.Group    ( Command\Group.hs, dist\build\git-annex\git-annex-tmp\Command\Group.o )
-[185 of 217] Compiling Command.Content  ( Command\Content.hs, dist\build\git-annex\git-annex-tmp\Command\Content.o )
-[186 of 217] Compiling Command.Ungroup  ( Command\Ungroup.hs, dist\build\git-annex\git-annex-tmp\Command\Ungroup.o )
-[187 of 217] Compiling Command.Vicfg    ( Command\Vicfg.hs, dist\build\git-annex\git-annex-tmp\Command\Vicfg.o )
-[188 of 217] Compiling Command.RmUrl    ( Command\RmUrl.hs, dist\build\git-annex\git-annex-tmp\Command\RmUrl.o )
-[189 of 217] Compiling Command.Map      ( Command\Map.hs, dist\build\git-annex\git-annex-tmp\Command\Map.o )
-[190 of 217] Compiling Command.Upgrade  ( Command\Upgrade.hs, dist\build\git-annex\git-annex-tmp\Command\Upgrade.o )
-[191 of 217] Compiling Command.Version  ( Command\Version.hs, dist\build\git-annex\git-annex-tmp\Command\Version.o )
-[192 of 217] Compiling Command.Test     ( Command\Test.hs, dist\build\git-annex\git-annex-tmp\Command\Test.o )
-[193 of 217] Compiling Command.Add      ( Command\Add.hs, dist\build\git-annex\git-annex-tmp\Command\Add.o )
-[194 of 217] Compiling Command.ReKey    ( Command\ReKey.hs, dist\build\git-annex\git-annex-tmp\Command\ReKey.o )
-[195 of 217] Compiling Command.AddUnused ( Command\AddUnused.hs, dist\build\git-annex\git-annex-tmp\Command\AddUnused.o )
-[196 of 217] Compiling Command.PreCommit ( Command\PreCommit.hs, dist\build\git-annex\git-annex-tmp\Command\PreCommit.o )
-[197 of 217] Compiling Command.Import   ( Command\Import.hs, dist\build\git-annex\git-annex-tmp\Command\Import.o )
-[198 of 217] Compiling Command.Drop     ( Command\Drop.hs, dist\build\git-annex\git-annex-tmp\Command\Drop.o )
-[199 of 217] Compiling Command.Move     ( Command\Move.hs, dist\build\git-annex\git-annex-tmp\Command\Move.o )
-[200 of 217] Compiling Command.Copy     ( Command\Copy.hs, dist\build\git-annex\git-annex-tmp\Command\Copy.o )
-[201 of 217] Compiling Command.Get      ( Command\Get.hs, dist\build\git-annex\git-annex-tmp\Command\Get.o )
-[202 of 217] Compiling Command.TransferKey ( Command\TransferKey.hs, dist\build\git-annex\git-annex-tmp\Command\TransferKey.o )
-[203 of 217] Compiling Command.DropUnused ( Command\DropUnused.hs, dist\build\git-annex\git-annex-tmp\Command\DropUnused.o )
-[204 of 217] Compiling Command.Fsck     ( Command\Fsck.hs, dist\build\git-annex\git-annex-tmp\Command\Fsck.o )
-[205 of 217] Compiling Command.Reinject ( Command\Reinject.hs, dist\build\git-annex\git-annex-tmp\Command\Reinject.o )
-[206 of 217] Compiling Command.Migrate  ( Command\Migrate.hs, dist\build\git-annex\git-annex-tmp\Command\Migrate.o )
-[207 of 217] Compiling Command.Status   ( Command\Status.hs, dist\build\git-annex\git-annex-tmp\Command\Status.o )
-[208 of 217] Compiling Command.Sync     ( Command\Sync.hs, dist\build\git-annex\git-annex-tmp\Command\Sync.o )
-[209 of 217] Compiling Command.Help     ( Command\Help.hs, dist\build\git-annex\git-annex-tmp\Command\Help.o )
-[210 of 217] Compiling Command.AddUrl   ( Command\AddUrl.hs, dist\build\git-annex\git-annex-tmp\Command\AddUrl.o )
-[211 of 217] Compiling Command.Direct   ( Command\Direct.hs, dist\build\git-annex\git-annex-tmp\Command\Direct.o )
-[212 of 217] Compiling Command.Indirect ( Command\Indirect.hs, dist\build\git-annex\git-annex-tmp\Command\Indirect.o )
-[213 of 217] Compiling Command.FuzzTest ( Command\FuzzTest.hs, dist\build\git-annex\git-annex-tmp\Command\FuzzTest.o )
-[214 of 217] Compiling Test             ( Test.hs, dist\build\git-annex\git-annex-tmp\Test.o )
-[215 of 217] Compiling GitAnnexShell    ( GitAnnexShell.hs, dist\build\git-annex\git-annex-tmp\GitAnnexShell.o )
-[216 of 217] Compiling GitAnnex         ( GitAnnex.hs, dist\build\git-annex\git-annex-tmp\GitAnnex.o )
-[217 of 217] Compiling Main             ( git-annex.hs, dist\build\git-annex\git-annex-tmp\Main.o )
-Linking dist\build\git-annex\git-annex.exe ...
-+ cabal install nsis
-Resolving dependencies...
-All the requested packages are already installed:
-nsis-0.2.2
-Use --reinstall if you want to reinstall anyway.
-+ ghc --make Build/NullSoftInstaller.hs
-[15 of 18] Compiling Build.SysConfig  ( Build\SysConfig.hs, Build\SysConfig.o )
-Linking Build\NullSoftInstaller.exe ...
-+ withcyg Build/NullSoftInstaller.exe
-+ PATH='/c/Program Files (x86)/Haskell Platform/2012.4.0.0/bin:/c/Program Files (x86)/Haskell Platform/2012.4.0.0/lib/extralibs/bin:/c/Program Files (x86)/NSIS:/home/Oliver/bin:.:/usr/local/bin:/mingw/bin:/bin:/c/Program Files (x86)/Haskell/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/lib/extralibs/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/bin:/c/Program Files (x86)/AMD APP/bin/x86_64:/c/Program Files (x86)/AMD APP/bin/x86:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/c/Program Files (x86)/Windows Kits/8.0/Windows Performance Toolkit/:/c/Program Files/Microsoft/Web Platform Installer/:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/mingw/bin:/c/Users/Oliver/AppData/Roaming/cabal/bin:/c/cygwin/bin'
-+ Build/NullSoftInstaller.exe
-MakeNSIS v2.46 - Copyright 1995-2009 Contributors
-See the file COPYING for license details.
-Credits can be found in the Users Manual.
-
-Processing config: 
-Processing plugin dlls: "c:\Program Files (x86)\NSIS\Plugins\*.dll"
- - AdvSplash::show
- - Banner::destroy
- - Banner::getWindow
- - Banner::show
- - BgImage::AddImage
- - BgImage::AddText
- - BgImage::Clear
- - BgImage::Destroy
- - BgImage::Redraw
- - BgImage::SetBg
- - BgImage::SetReturn
- - BgImage::Sound
- - Dialer::AttemptConnect
- - Dialer::AutodialHangup
- - Dialer::AutodialOnline
- - Dialer::AutodialUnattended
- - Dialer::GetConnectedState
- - InstallOptions::dialog
- - InstallOptions::initDialog
- - InstallOptions::show
- - LangDLL::LangDialog
- - Math::Script
- - NSISdl::download
- - NSISdl::download_quiet
- - Splash::show
- - StartMenu::Init
- - StartMenu::Select
- - StartMenu::Show
- - System::Alloc
- - System::Call
- - System::Copy
- - System::Free
- - System::Get
- - System::Int64Op
- - System::Store
- - TypeLib::GetLibVersion
- - TypeLib::Register
- - TypeLib::UnRegister
- - UserInfo::GetAccountType
- - UserInfo::GetName
- - UserInfo::GetOriginalAccountType
- - VPatch::GetFileCRC32
- - VPatch::GetFileMD5
- - VPatch::vpatchfile
- - nsDialogs::Create
- - nsDialogs::CreateControl
- - nsDialogs::CreateItem
- - nsDialogs::CreateTimer
- - nsDialogs::GetUserData
- - nsDialogs::KillTimer
- - nsDialogs::OnBack
- - nsDialogs::OnChange
- - nsDialogs::OnClick
- - nsDialogs::OnNotify
- - nsDialogs::SelectFileDialog
- - nsDialogs::SelectFolderDialog
- - nsDialogs::SetRTL
- - nsDialogs::SetUserData
- - nsDialogs::Show
- - nsExec::Exec
- - nsExec::ExecToLog
- - nsExec::ExecToStack
-
-!define: "MUI_INSERT_NSISCONF"=""
-
-Changing directory to: "C:\MinGW\msys\1.0\home\Oliver\src\git-annex"
-
-Processing script file: "git-annex.nsi"
-!include: "c:\Program Files (x86)\NSIS\Include\MUI2.nsh"
-!include: "c:\Program Files (x86)\NSIS\Contrib\Modern UI 2\MUI2.nsh"
-NSIS Modern User Interface version 2.0 - Copyright 2002-2009 Joost Verburg (c:\Program Files (x86)\NSIS\Contrib\Modern UI 2\MUI2.nsh:8)
-!define: "MUI_INCLUDED"=""
-!define: "MUI_SYSVERSION"="2.0"
-!define: "MUI_VERBOSE"="3"
-!include: closed: "c:\Program Files (x86)\NSIS\Contrib\Modern UI 2\MUI2.nsh"
-!include: closed: "c:\Program Files (x86)\NSIS\Include\MUI2.nsh"
-Name: "git-annex"
-OutFile: "git-annex-installer.exe"
-InstallDir: "$PROGRAMFILES\Git\cmd"
-!insertmacro: MUI_PAGE_DIRECTORY
-!insertmacro: end of MUI_PAGE_DIRECTORY
-!insertmacro: MUI_PAGE_LICENSE
-!insertmacro: end of MUI_PAGEDECLARATION_LICENSE
-!insertmacro: end of MUI_PAGE_LICENSE
-!insertmacro: MUI_PAGE_INSTFILES
-!insertmacro: end of MUI_PAGE_INSTFILES
-!insertmacro: MUI_LANGUAGE
-!insertmacro: end of MUI_LANGUAGE
-Section: "main" ->(_sec10)
-SetOutPath: "$INSTDIR"
-File: "git-annex.exe" [compress] 7664822/31704766 bytes
-File: "git-annex-licenses.txt" [compress] 60509/237415 bytes
-File: "cp.exe" [compress] 62591/116736 bytes
-File: "xargs.exe" [compress] 17002/33280 bytes
-File: "rsync.exe" [compress] 188346/359424 bytes
-File: "ssh.exe" [compress] 157190/320000 bytes
-File: "wget.exe" [compress] 155666/349184 bytes
-File: "sha1sum.exe" [compress] 20337/39424 bytes
-File: "sha256sum.exe" [compress] 18279/37390 bytes
-File: "sha512sum.exe" [compress] 30393/92174 bytes
-File: "sha224sum.exe" [compress] 18279/37390 bytes
-File: "sha384sum.exe" [compress] 30392/92174 bytes
-File: "cygwin1.dll" [compress] 1036075/2874639 bytes
-File: "cygasn1-8.dll" [compress] 154881/459293 bytes
-File: "cygattr-1.dll" [compress] 5460/13838 bytes
-File: "cygheimbase-1.dll" [compress] 4441/10781 bytes
-File: "cygroken-18.dll" [compress] 26103/52253 bytes
-File: "cygcom_err-2.dll" [compress] 3984/9757 bytes
-File: "cygheimntlm-0.dll" [compress] 9018/20509 bytes
-File: "cygsqlite3-0.dll" [compress] 334366/601629 bytes
-File: "cygcrypt-0.dll" [compress] 3352/7182 bytes
-File: "cyghx509-5.dll" [compress] 95839/216093 bytes
-File: "cygssp-0.dll" [compress] 3377/8206 bytes
-File: "cygcrypto-1.0.0.dll" [compress] 652766/1553920 bytes
-File: "cygiconv-2.dll" [compress] 738899/1008654 bytes
-File: "cyggcc_s-1.dll" [compress] 40241/80910 bytes
-File: "cygintl-8.dll" [compress] 17737/35342 bytes
-File: "cygwind-0.dll" [compress] 73172/160797 bytes
-File: "cyggssapi-3.dll" [compress] 81662/183837 bytes
-File: "cygkrb5-26.dll" [compress] 170204/381469 bytes
-File: "cygz.dll" [compress] 42634/74269 bytes
-WriteUninstaller: "git-annex-uninstall.exe"
-SectionEnd
-Section: "Uninstall" ->(_sec11)
-Delete: /REBOOTOK "$INSTDIR\git-annex.exe"
-Delete: /REBOOTOK "$INSTDIR\git-annex-licenses.txt"
-Delete: /REBOOTOK "$INSTDIR\git-annex-uninstall.exe"
-Delete: /REBOOTOK "$INSTDIR\cp.exe"
-Delete: /REBOOTOK "$INSTDIR\xargs.exe"
-Delete: /REBOOTOK "$INSTDIR\rsync.exe"
-Delete: /REBOOTOK "$INSTDIR\ssh.exe"
-Delete: /REBOOTOK "$INSTDIR\wget.exe"
-Delete: /REBOOTOK "$INSTDIR\sha1sum.exe"
-Delete: /REBOOTOK "$INSTDIR\sha256sum.exe"
-Delete: /REBOOTOK "$INSTDIR\sha512sum.exe"
-Delete: /REBOOTOK "$INSTDIR\sha224sum.exe"
-Delete: /REBOOTOK "$INSTDIR\sha384sum.exe"
-Delete: /REBOOTOK "$INSTDIR\cygwin1.dll"
-Delete: /REBOOTOK "$INSTDIR\cygasn1-8.dll"
-Delete: /REBOOTOK "$INSTDIR\cygattr-1.dll"
-Delete: /REBOOTOK "$INSTDIR\cygheimbase-1.dll"
-Delete: /REBOOTOK "$INSTDIR\cygroken-18.dll"
-Delete: /REBOOTOK "$INSTDIR\cygcom_err-2.dll"
-Delete: /REBOOTOK "$INSTDIR\cygheimntlm-0.dll"
-Delete: /REBOOTOK "$INSTDIR\cygsqlite3-0.dll"
-Delete: /REBOOTOK "$INSTDIR\cygcrypt-0.dll"
-Delete: /REBOOTOK "$INSTDIR\cyghx509-5.dll"
-Delete: /REBOOTOK "$INSTDIR\cygssp-0.dll"
-Delete: /REBOOTOK "$INSTDIR\cygcrypto-1.0.0.dll"
-Delete: /REBOOTOK "$INSTDIR\cygiconv-2.dll"
-Delete: /REBOOTOK "$INSTDIR\cyggcc_s-1.dll"
-Delete: /REBOOTOK "$INSTDIR\cygintl-8.dll"
-Delete: /REBOOTOK "$INSTDIR\cygwind-0.dll"
-Delete: /REBOOTOK "$INSTDIR\cyggssapi-3.dll"
-Delete: /REBOOTOK "$INSTDIR\cygkrb5-26.dll"
-Delete: /REBOOTOK "$INSTDIR\cygz.dll"
-SectionEnd
-Function: ".onInit"
-IfFileExists: "$PROGRAMFILES\Git\cmd" ? _lbl3 : 0
-MessageBox: 48: "You need git installed to use git-annex. Looking at $PROGRAMFILES\Git\cmd , it seems to not be installed, or may be installed in another location. You can install git from http://git-scm.com/" (on IDOK goto 0)
-FunctionEnd
-
-Processed 1 file, writing output:
-Processing pages... Done!
-Removing unused resources... Done!
-Generating language tables... Done!
-Generating uninstaller... Done!
-
-Output: "C:\MinGW\msys\1.0\home\Oliver\src\git-annex\git-annex-installer.exe"
-Install: 4 pages (256 bytes), 1 section (1048 bytes), 98 instructions (2744 bytes), 133 strings (239643 bytes), 1 language table (278 bytes).
-Uninstall: 2 pages (128 bytes), 
-1 section (1048 bytes), 33 instructions (924 bytes), 72 strings (1154 bytes), 1 language table (194 bytes).
-
-Using zlib compression.
-
-EXE header size:               48640 / 35840 bytes
-Install code:                  63270 / 244345 bytes
-Install data:               11918141 / 41172867 bytes
-Uninstall code+data:           10537 / 14897 bytes
-CRC (0x090A4FD3):                  4 / 4 bytes
-
-Total size:                 12040592 / 41467953 bytes (29.0%)
-+ rm -f last-incremental-failed
-+ rm -rf .t
-+ withcyg dist/build/git-annex/git-annex.exe test
-+ PATH='/c/Program Files (x86)/Haskell Platform/2012.4.0.0/bin:/c/Program Files (x86)/Haskell Platform/2012.4.0.0/lib/extralibs/bin:/c/Program Files (x86)/NSIS:/home/Oliver/bin:.:/usr/local/bin:/mingw/bin:/bin:/c/Program Files (x86)/Haskell/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/lib/extralibs/bin:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/bin:/c/Program Files (x86)/AMD APP/bin/x86_64:/c/Program Files (x86)/AMD APP/bin/x86:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files (x86)/ATI Technologies/ATI.ACE/Core-Static:/c/Program Files (x86)/Windows Kits/8.0/Windows Performance Toolkit/:/c/Program Files/Microsoft/Web Platform Installer/:/c/Program Files (x86)/Haskell Platform/2013.2.0.0/mingw/bin:/c/Users/Oliver/AppData/Roaming/cabal/bin:/c/cygwin/bin'
-+ dist/build/git-annex/git-annex.exe test
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          ----------------------------------------------------------------------
-First, some automated quick checks of properties ...
-----------------------------------------------------------------------
-prop_idempotent_deencode_git
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_idempotent_deencode
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_idempotent_fileKey
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_idempotent_key_encode
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_idempotent_shellEscape
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_idempotent_shellEscape_multiword
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_idempotent_configEscape
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_parse_show_Config
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_parentDir_basics
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_relPathDirToFile_basics
-+++ OK, passed 100 tests.
-(0 tests)         prop_relPathDirToFile_regressionTest
-+++ OK, passed 1 tests.
-(0 tests)         prop_cost_sane
-+++ OK, passed 1 tests.
-(0 tests)         prop_matcher_sane
-+++ OK, passed 1 tests.
-(0 tests)         prop_HmacSha1WithCipher_sane
-+++ OK, passed 1 tests.
-(0 tests)         prop_TimeStamp_sane
-+++ OK, passed 1 tests.
-(0 tests)         prop_addLog_sane
-+++ OK, passed 1 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_verifiable_sane
-+++ OK, passed 100 tests.
-(0 tests)         prop_segment_regressionTest
-+++ OK, passed 1 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_read_write_transferinfo
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_read_show_inodecache
-+++ OK, passed 100 tests.
-(0 tests)         (1 test)        (2 tests)         (3 tests)         (4 tests)         (5 tests)         (6 tests)         (7 tests)         (8 tests)         (9 tests)         (10 tests)          (11 tests)          (12 tests)          (13 tests)          (14 tests)          (15 tests)          (16 tests)          (17 tests)          (18 tests)          (19 tests)          (20 tests)          (21 tests)          (22 tests)          (23 tests)          (24 tests)          (25 tests)          (26 tests)          (27 tests)          (28 tests)          (29 tests)          (30 tests)          (31 tests)          (32 tests)          (33 tests)          (34 tests)          (35 tests)          (36 tests)          (37 tests)          (38 tests)          (39 tests)          (40 tests)          (41 tests)          (42 tests)          (43 tests)          (44 tests)          (45 tests)          (46 tests)          (47 tests)          (48 tests)          (49 tests)          (50 tests)          (51 tests)          (52 tests)          (53 tests)          (54 tests)          (55 tests)          (56 tests)          (57 tests)          (58 tests)          (59 tests)          (60 tests)          (61 tests)          (62 tests)          (63 tests)          (64 tests)          (65 tests)          (66 tests)          (67 tests)          (68 tests)          (69 tests)          (70 tests)          (71 tests)          (72 tests)          (73 tests)          (74 tests)          (75 tests)          (76 tests)          (77 tests)          (78 tests)          (79 tests)          (80 tests)          (81 tests)          (82 tests)          (83 tests)          (84 tests)          (85 tests)          (86 tests)          (87 tests)          (88 tests)          (89 tests)          (90 tests)          (91 tests)          (92 tests)          (93 tests)          (94 tests)          (95 tests)          (96 tests)          (97 tests)          (98 tests)          (99 tests)          prop_parse_show_log
-+++ OK, passed 100 tests.
-(0 tests)         prop_read_show_TrustLevel
-+++ OK, passed 1 tests.
-(0 tests)         prop_parse_show_TrustLog
-+++ OK, passed 1 tests.
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0init test repo 
-  Detected a crippled filesystem.
-
-  Disabling core.symlinks.
-
-  Enabling direct mode.
-
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-ok
-(Recording state in git...)
-
-                                          
-Cases: 1  Tried: 1  Errors: 0  Failures: 0
-
-Cases: 3  Tried: 0  Errors: 0  Failures: 0add foo (checksum...) ok
-(Recording state in git...)
-add sha1foo (checksum...) ok
-(Recording state in git...)
-add apple ok
-(Recording state in git...)
-
-Cases: 3  Tried: 1  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex add:1
-git clone failed
-
-Cases: 3  Tried: 2  Errors: 0  Failures: 1ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex add:2
-git clone failed
-Cases: 3  Tried: 3  Errors: 0  Failures: 2
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex reinject/fromkey
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 2  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex unannex:0:no content
-git clone failed
-
-Cases: 2  Tried: 1  Errors: 0  Failures: 1ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex unannex:1:with content
-git clone failed
-Cases: 2  Tried: 2  Errors: 0  Failures: 2
-
-Cases: 3  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex drop:0:no remotes
-git clone failed
-
-Cases: 3  Tried: 1  Errors: 0  Failures: 1ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex drop:1:with remote
-git clone failed
-
-Cases: 3  Tried: 2  Errors: 0  Failures: 2ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex drop:2:untrusted remote
-git clone failed
-Cases: 3  Tried: 3  Errors: 0  Failures: 3
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex get
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex move
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex copy
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex unlock/lock
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 2  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex edit/commit:0
-git clone failed
-
-Cases: 2  Tried: 1  Errors: 0  Failures: 1ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex edit/commit:1
-git clone failed
-Cases: 2  Tried: 2  Errors: 0  Failures: 2
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex fix
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex trust/untrust/semitrust/dead
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 4  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex fsck:0
-git clone failed
-
-Cases: 4  Tried: 1  Errors: 0  Failures: 1ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex fsck:1
-git clone failed
-
-Cases: 4  Tried: 2  Errors: 0  Failures: 2ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex fsck:2
-git clone failed
-
-Cases: 4  Tried: 3  Errors: 0  Failures: 3ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex fsck:3
-git clone failed
-Cases: 4  Tried: 4  Errors: 0  Failures: 4
-
-Cases: 2  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex migrate:0
-git clone failed
-
-Cases: 2  Tried: 1  Errors: 0  Failures: 1ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex migrate:1
-git clone failed
-Cases: 2  Tried: 2  Errors: 0  Failures: 2
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex unused/dropunused
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex describe
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex find
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex merge
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex status
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex version
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex sync
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: union merge regression
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: automatic conflict resolution
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex map
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex uninit
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex upgrade
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex whereis
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex hook remote
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex directory remote
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex rsync remote
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex bup remote
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex crypto
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-
-Cases: 1  Tried: 0  Errors: 0  Failures: 0ssh: Could not resolve hostname C: no address associated with name
-fatal: The remote end hung up unexpectedly
-
-                                          
-### Failure in: git-annex preferred-content
-git clone failed
-Cases: 1  Tried: 1  Errors: 0  Failures: 1
-----------------------------------------------------------------------
-Now, some broader checks ...
-  (Do not be alarmed by odd output here; it's normal.
-   wait for the last line to see how it went.)
-----------------------------------------------------------------------
-init
-----------------------------------------------------------------------
-add
-----------------------------------------------------------------------
-reinject
-----------------------------------------------------------------------
-unannex
-----------------------------------------------------------------------
-drop
-----------------------------------------------------------------------
-get
-----------------------------------------------------------------------
-move
-----------------------------------------------------------------------
-copy
-----------------------------------------------------------------------
-lock
-----------------------------------------------------------------------
-edit
-----------------------------------------------------------------------
-fix
-----------------------------------------------------------------------
-trust
-----------------------------------------------------------------------
-fsck
-----------------------------------------------------------------------
-migrate
-----------------------------------------------------------------------
- unused
-----------------------------------------------------------------------
-describe
-----------------------------------------------------------------------
-find
-----------------------------------------------------------------------
-merge
-----------------------------------------------------------------------
-status
-----------------------------------------------------------------------
-version
-----------------------------------------------------------------------
-sync
-----------------------------------------------------------------------
-union merge regression
-----------------------------------------------------------------------
-conflict resolution
-----------------------------------------------------------------------
-map
-----------------------------------------------------------------------
-uninit
-----------------------------------------------------------------------
-upgrade
-----------------------------------------------------------------------
-whereis
-----------------------------------------------------------------------
-hook remote
-----------------------------------------------------------------------
-directory remote
-----------------------------------------------------------------------
-rsync remote
-----------------------------------------------------------------------
-bup remote
-----------------------------------------------------------------------
-crypto
-----------------------------------------------------------------------
-preferred content
-----------------------------------------------------------------------
-Some tests failed!
-  (This could be due to a bug in git-annex, or an incompatability
-   with utilities, such as git, installed on this system.)
-
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/__34__Adding_4923_files__34___is_really_slow.mdwn b/doc/bugs/__34__Adding_4923_files__34___is_really_slow.mdwn
deleted file mode 100644
--- a/doc/bugs/__34__Adding_4923_files__34___is_really_slow.mdwn
+++ /dev/null
@@ -1,103 +0,0 @@
-Wow, what a great archiving system. Thank you for all your work on git annex!
-
-### Please describe the problem.
-
-I was using 'git annex assistant' on a brand-new annex that I created today. I had previously added about 20GB of data and a couple thousand files, mostly MP4 videos and MP3 music.
-
-I then used regular 'mv' to add a folder containing about 20GB of music. This went well for a while—git annex assistant added two groups of files, containing roughly 700 and 1000 MP3s each. But the third group contained 4,923 files, and it's taking a really long time to import.
-
-CPU usage is pretty consistently near 100%. According to the log, the files are being processed slowly.
-
-### What steps will reproduce the problem?
-
-I don't want to try to reproduce this problem until the MP3s finish being imported. I can try again later with thousands of digital photos if that would help.
-
-### What version of git-annex are you using? On what operating system?
-
-Version: 4.20130709.1 
-Build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-
-Ubuntu 12.04.2 LTS
-
-### Please provide any additional information below.
-
-Here's the 'top' output and a snippet of the log. Let me know if you need anything else.
-
-[[!format sh """
-# CPU usage
-
-  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND      
-  584 ...me...  20   0  776m 147m  16m S  100  0.9 181:16.87 git-annex    
-
-
-# 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
-
-[201ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._3-06 Words.mp3 3-0(checksum...) 7-22 14:52:14 EDT] TransferScanner: queued Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-08 Walk This Way.mp3 Nothing : expensive scan found missing object
-[2013-07-22 14:52:34 EDT] Transferrer: Transferring: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-08 Walk This Way.mp3 Nothing
-[2013-07-22 14:52:34 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._4-05 Our House.mp3 2013-0(checksum...) 7-22 14:52:34 EDT] TransferWatcher: transfer starting: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-08 Walk This Way.mp3 Nothing
-[2013-07-22 14:52:54 EDT] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06", transferKey = Key {keyName = "a8ddf79be61cf4a5ab3c7c8e95d8c259ceb102410dff50eb1260e7d818f8c5a8.mp3", keyBackendName = "SHA256E", keySize = Just 70, keyMtime = Nothing}}
-[2013-07-22 14:52:54 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/7-15 Never Gonna Give You Up.mp3 (checksum...) [2013-07-22 14:52:54 EDT] read: sha256sum ["/mnt/storage/private/annex/.git/annex/tmp/7-15 Never Gonna Give You Up584.mp3"]
-[2013-07-22 14:52:55 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/3-09 Down Under.mp3 2013-07-(checksum...) 22 14:52:55 EDT] TransferScanner: queued Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-09 Dude (Looks Like A Lady).mp3 Nothing : expensive scan found missing object
-[2013-07-22 14:52:55 EDT] read: sha256sum ["/mnt/storage/private/annex/.git/annex/tmp/3-09 Down Under584.mp3"]
-[2013-07-22 14:52:55 EDT] Transferrer: Transferring: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-09 Dude (Looks Like A Lady).mp3 Nothing
-[2013-07-22 14:52:55 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/7-19 Right Here Waiting.mp3 2013(checksum...) -07-22 14:52:55 EDT] TransferWatcher: transfer starting: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-09 Dude (Looks Like A Lady).mp3 Nothing
-[2013-07-22 14:52:55 EDT] read: sha256sum ["/mnt/storage/private/annex/.git/annex/tmp/7-19 Right Here Waiting584.mp3"]
-[2013-07-22 14:52:55 EDT] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06", transferKey = Key {keyName = "a8ddf79be61cf4a5ab3c7c8e95d8c259ceb102410dff50eb1260e7d818f8c5a8.mp3", keyBackendName = "SHA256E", keySize = Just 70, keyMtime = Nothing}}
-[2013-07-22 14:52:55 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._1-04 Another One Bites The Dust.mp3 (checksum...) [2013-07-22 14:53:15 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[2013ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/2-08 Hold On Loosely.mp3 -07(checksum...) -22 14:53:15 EDT] TransferScanner: queued Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-10 What It Takes.mp3 Nothing : expensive scan found missing object
-[2013-07-22 14:53:15 EDT] read: sha256sum ["/mnt/storage/private/annex/.git/annex/tmp/2-08 Hold On Loosely584.mp3"]
-[2013-07-22 14:53:15 EDT] Transferrer: Transferring: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-10 What It Takes.mp3 Nothing
-[2013-07-22 14:53:15 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._6-11 Kyrie.mp3 201(checksum...) 3-07-22 14:53:15 EDT] TransferWatcher: transfer starting: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-10 What It Takes.mp3 Nothing
-[2013-07-22 14:53:36 EDT] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06", transferKey = Key {keyName = "a8ddf79be61cf4a5ab3c7c8e95d8c259ceb102410dff50eb1260e7d818f8c5a8.mp3", keyBackendName = "SHA256E", keySize = Just 70, keyMtime = Nothing}}
-[2013-07-22 14:53:36 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._5-03 I'm So Excited.mp3 (checksum...) [2013-07-22 14:53:56 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[2013ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/7-20 Roam.mp3 -07-(checksum...) 22 14:53:56 EDT] TransferScanner: queued Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-11 Sweet Emotion.mp3 Nothing : expensive scan found missing object
-[2013-07-22 14:53:56 EDT] read: sha256sum ["/mnt/storage/private/annex/.git/annex/tmp/7-20 Roam584.mp3"]
-[2013-07-22 14:53:57 EDT] Transferrer: Transferring: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/._2-11 Sweet Emotion.mp3 Nothing
-[2013-07-22 14:53:57 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[2ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._3-20 Goodbye To You.mp3 013-07(checksum...) -22 14:53:57 EDT] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06", transferKey = Key {keyName = "a8ddf79be61cf4a5ab3c7c8e95d8c259ceb102410dff50eb1260e7d818f8c5a8.mp3", keyBackendName = "SHA256E", keySize = Just 70, keyMtime = Nothing}}
-[2013-07-22 14:54:17 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._7-18 Don't Worry Be Happy.mp3 (checksum...) [2013-07-22 14:54:37 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._3-04 Rock This Town.mp3 2013-(checksum...) 07-22 14:54:37 EDT] TransferScanner: queued Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/1-01 Eat The Rich.mp3 Nothing : expensive scan found missing object
-[2013-07-22 14:54:57 EDT] Transferrer: Transferring: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/1-01 Eat The Rich.mp3 Nothing
-[2013-07-22 14:54:57 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._7-13 Since You've Been Gone.mp3 [2013-(checksum...) 07-22 14:54:57 EDT] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06", transferKey = Key {keyName = "2cb6e7b6ee77f9f98e01e942185265dfe18868503e93d78201485672e6939ab7.mp3", keyBackendName = "SHA256E", keySize = Just 6354105, keyMtime = Nothing}}
-[2013-07-22 14:55:18 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._2-09 Believe It Or Not (Theme From _Greatest American Hero_).mp3 (checksum...) [2013-07-22 14:55:38 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/7-14 Only In My Dreams.mp3 2013(checksum...) -07-22 14:55:38 EDT] TransferScanner: queued Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/1-02 Love In An Elevator.mp3 Nothing : expensive scan found missing object
-[2013-07-22 14:55:38 EDT] read: sha256sum ["/mnt/storage/private/annex/.git/annex/tmp/7-14 Only In My Dreams584.mp3"]
-[2013-07-22 14:55:38 EDT] Transferrer: Transferring: Upload UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06" music/Rock/Aerosmith/A Little South of Sanity/1-02 Love In An Elevator.mp3 Nothing
-[2013-07-22 14:55:38 EDT] chat: git ["--git-dir=/mnt/storage/private/annex/.git","--work-tree=/mnt/storage/private/annex","hash-object","-t","blob","-w","--stdin","--no-filters"]
-[2013-ok
-add music/Pop/Various/Like, Omigod! The 80s Pop Culture Box (totally)/._4-08 Talking In Your Sleep.mp3 07-2(checksum...) 2 14:55:38 EDT] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "8dbe75a4-b065-46fd-99f7-22599b2eaf06", transferKey = Key {keyName = "7cd4b9aefb99f044c5f3b24e9890f45673a63ada3b71e7399e17eb1d710ea0f6.mp3", keyBackendName = "SHA256E", keySize = Just 7181660, keyMtime = Nothing}}
-
-# End of transcript or log.
-"""]]
-
-[[!meta title="direct mode mappings scale badly with thousands of identical files"]]
-
-[[!tag confirmed]]
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/bugs/__34__fatal__58___bad_config_file__34__.mdwn b/doc/bugs/__34__fatal__58___bad_config_file__34__.mdwn
deleted file mode 100644
--- a/doc/bugs/__34__fatal__58___bad_config_file__34__.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-### Please describe the problem.
-
-When running a command like `git annex copy --not --in bucket --to bucket`, I got:
-
-`fatal: bad config file line 1 in /home/jim/tmp/git-annex14898.tmp`
-
-I caught `git-annex14898.tmp` before it was deleted and it contained an HTML error page.
-I have a remote `https://git.example.com/jim/annex.git`, and it appears that git-annex
-is requesting `https://git.example.com/jim/annex.git/config`.  My server returns a 401 
-Forbidden and an error page for that URL, but git-annex tries to use the response as a config file anyway.
-
-Jim
-
-> [[fixed|done]] --[[Joey]] 
diff --git a/doc/bugs/__34__git-annex__58___direct__58___1_failed__34___on_Windows.mdwn b/doc/bugs/__34__git-annex__58___direct__58___1_failed__34___on_Windows.mdwn
deleted file mode 100644
--- a/doc/bugs/__34__git-annex__58___direct__58___1_failed__34___on_Windows.mdwn
+++ /dev/null
@@ -1,109 +0,0 @@
-### Please describe the problem.
-
-When attempting to clone and use a git repository in a subdirectory several levels deep on Windows, I observe symptoms very similar to those described at http://git-annex.branchable.com/direct_mode/#comment-8feee726df4e287dd3751bc77fd1441f.  By contrast, when I attempt the same operation in a subdirectory higher up, the operation is successful.  Logs of both sessions are given below.
-
-My suspicion is that this has to do with exceeding the maximum path length limitation (MAX_PATH) of 260 characters on Windows, as described here: http://msdn.microsoft.com/en-us/library/aa365247.aspx. 
-
-
-### What steps will reproduce the problem?
-
-See above.
-
-
-### What version of git-annex are you using? On what operating system?
-
->git annex version
-git-annex version: 5.20140517-gee56d21
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 2 3 4
-
->git version
-git version 1.9.0.msysgit.0
-
-Operating system: Windows 7 Professional (64-bit), Service Pack 1
-
-
-### 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
-C:\Users\areeves\Documents\Work\MyDirectoryHere\git>git clone ssh://areeves@myserver:/home/work/git/sbv
-Cloning into 'sbv'...
-remote: Counting objects: 65, done.
-remote: Compressing objects: 100% (57/57), done.
-remote: Total 65 (delta 26), reused 0 (delta 0)
-Receiving objects: 100% (65/65), 9.25 KiB | 0 bytes/s, done.
-Resolving deltas: 100% (26/26), done.
-Checking connectivity... done.
-
-
-C:\Users\areeves\Documents\Work\MyDirectoryHere\git>cd sbv
-C:\Users\areeves\Documents\Work\MyDirectoryHere\git\sbv>git annex get
-
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-
-  Detected a crippled filesystem.
-
-  Enabling direct mode.
-git-annex: C:\Users\areeves\Documents\Work\MyDirectoryHere\git\sbv\.git\annex\objects\3de\5f4\SHA256-s765223180--c9e2eebd915b4ade9429b00a7a893df928389b3fb4ab759ea9f00b0e05e18de6\: openTempFile: does not exist (No such file or directory)
-
-
-C:\Users\areeves\Documents\Work\MyDirectoryHere\git\sbv>git annex direct
-commit
-On branch master
-Your branch is up-to-date with 'origin/master'.
-
-nothing to commit, working directory clean
-ok
-
-git-annex: C:\Users\areeves\Documents\Work\MyDirectoryHere\git\sbv\.git\annex\objects\3de\5f4\SHA256-s765223180--c9e2eebd915b4ade9429b00a7a893df928389b3fb4ab759ea9f00b0e05e18de6\: openTempFile: does not exist (No such file or directory)
-failed
-git-annex: direct: 1 failed
-
-
-C:\Users\areeves\Documents\Work\MyDirectoryHere\git\sbv>cd c:\temp
-c:\temp>git clone ssh://areeves@myserver:/home/work/git/sbv
-Cloning into 'sbv'...
-remote: Counting objects: 65, done.
-remote: Compressing objects: 100% (57/57), done.
-remote: Total 65 (delta 26), reused 0 (delta 0)
-Receiving objects: 100% (65/65), 9.25 KiB | 0 bytes/s, done.
-Resolving deltas: 100% (26/26), done.
-Checking connectivity... done.
-
-c:\temp>cd sbv
-c:\temp\sbv>git annex direct
-
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-
-  Detected a crippled filesystem.
-
-  Enabling direct mode.
-(Recording state in git...)
-
-
-c:\temp\sbv>git annex get
-get BigBinaryFile_Data_Package_2012-03-31.tar.bz2.gpg (merging origin/git-annex into git-annex...)
-(Recording state in git...)
-sent 30 bytes  received 765316741 bytes  11011752.10 bytes/sec
-total size is 765223180  speedup is 1.00
-ok
-(Recording state in git...)
-
-
-c:\temp\sbv>
-
-# End of transcript or log.
-"""]]
-
-[[!meta title="window's tiny mind is confused by some long paths used by git-annex"]]
diff --git a/doc/bugs/_impossible_to_switch_repositories_on_android__in_webapp.mdwn b/doc/bugs/_impossible_to_switch_repositories_on_android__in_webapp.mdwn
deleted file mode 100644
--- a/doc/bugs/_impossible_to_switch_repositories_on_android__in_webapp.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-### Please describe the problem.
-I didn't spot this  bugs  page before so here is my report I  have  commented on android page
-
-In addition to two existing repositories (1 local /sdcard/annex, which is also avail at/storage/sdcard0/annex + 1 remote) I have added one more local (and said to keep it in sync with original local). But it didn't work -- it "Synced with onerussian.com_annex but not with Annex" and claimed that the /external/extSdCard/Annex doesn't exist, although it is there (and with .git generated etc). When I restarted the deamon I got into a "new" Repository: /storage/extSdCard/Annex which also listed the 1st local but with "Failed to sync with localhost" message -- no remote one listed. Whenever I try to "Switch repository" to /sdcard/annex (the original local) -- it starts loading a new page but gets stuck right there. The only way to revive webui is to go back to Dashboard. Log there says (retyping from the screen so typos might be there):
-
-error: cannot run git-receive-pack '/storage/sdcard0/annex': No such file or directory fatal: unable to fork
-### What steps will reproduce the problem?
-
-
-### What version of git-annex are you using? On what operating system?
-android
-
-### 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.
-"""]]
diff --git a/doc/bugs/acl_not_honoured_in_rsync_remote.mdwn b/doc/bugs/acl_not_honoured_in_rsync_remote.mdwn
deleted file mode 100644
--- a/doc/bugs/acl_not_honoured_in_rsync_remote.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-in a setup where an rsync(+gnupg) remote is shared among different users of the same git-annex repository (ie, the people copying to there use different accounts on the rsync server), acls are not honored under some circumstances.
-
-the error message reads as follows:
-
-    copy …filename… (to prometheus...) Reading passphrase from file descriptor 11    
-    
-    sending incremental file list
-    rsync: recv_generator: mkdir "/home/shared/photos/encrypted_storage/9a6/0ff" failed: Permission denied (13)
-    *** Skipping any contents from this failed directory ***
-    9a6/0ff/
-    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.8]
-    
-    sent 185 bytes  received 18 bytes  135.33 bytes/sec
-    total size is 2119419  speedup is 10440.49
-    
-      This could have failed because --fast is enabled.
-    failed
-
-the acl used in my particular case is:
-
-    # file: .
-    # owner: chrysn
-    # group: chrysn
-    user::rwx
-    group::rwx
-    group:family:rwx
-    mask::rwx
-    other::r-x
-    default:user::rwx
-    default:group::rwx
-    default:group:family:rwx
-    default:mask::rwx
-    default:other::r-x
-
-sub-directories are observed to have diverging permissions, though:
-
-    # file: 794
-    # owner: chrysn
-    # group: chrysn
-    user::rwx
-    group::rwx                      #effective:r-x
-    group:family:rwx                #effective:r-x
-    mask::r-x
-    other::r-x
-    default:user::rwx
-    default:group::rwx
-    default:group:family:rwx
-    default:mask::rwx
-    default:other::r-x
-
-something seems to apply the umask (default 022) and revoke group write access from the files, overruling the acl. this is not what a umask is normally used for, and smells of [coreutils slavishly observing posix specs that don't consider all features](http://savannah.gnu.org/bugs/?19546) -- the observed effect is exactly what's described there.
-
-the git annex version used is 3.20121017 as in debian, the receiving site uses rsync 3.0.7; the affected directories come from a time when these very versions are known to have been used.
-
-this is probably not a bug of git-annex alone, but affects its operation and might be solvable by invoking rsync differently.
-
-(this is kind of a follow-up on [[forum/__34__permission_denied__34___in_fsck_on_shared_repo]])
-
-[[!tag forwarded]]
diff --git a/doc/bugs/added_branches_makes___39__git_annex_unused__39___slow.mdwn b/doc/bugs/added_branches_makes___39__git_annex_unused__39___slow.mdwn
deleted file mode 100644
--- a/doc/bugs/added_branches_makes___39__git_annex_unused__39___slow.mdwn
+++ /dev/null
@@ -1,87 +0,0 @@
-Creating additional branches in history seems to slow down the 'git annex unused' command quadratically, even if the location of the branches should be irrelevant as far as unused data goes.
-
-This was tested on:
-
-	$ git annex version
-	git-annex version: 3.20130216
-	local repository version: 3
-	default repository version: 3
-	supported repository versions: 3
-	upgrade supported from repository versions: 0 1 2
-
-What steps will reproduce the problem?
-
-	$ mkdir a
-	$ cd a
-	$ git init
-	$ git annex init
-	$ i=0 ; while test $i -lt 1000; do dd if=/dev/urandom of=$i.img bs=1M count=1; i=$(($i+1)); done
-	$ git annex add .
-	$ git commit -m"foo"
-	$ git rm 1*
-	$ git commit -m"bar"
-	$ git log --oneline --decorate
-	ffcca3a (HEAD, master) bar
-	3e7793d foo
-	$ time -p git annex unused
-	unused . (checking for unused data...) (checking master...)
-	(...)
-	real 0.76
-	user 0.40
-	sys 0.06
-	git commit --allow-empty -m"baz"
-	$ git log --oneline --decorate
-	4390c32 (HEAD, master) baz
-	ffcca3a bar
-	3e7793d foo
-	$ time -p git annex unused
-	unused . (checking for unused data...) (checking master...)
-	(...)
-	real 0.75
-	user 0.38
-	sys 0.07
-	$ git branch boo HEAD^
-	$ time -p git annex unused
-	unused . (checking for unused data...) (checking boo...) (checking master...)
-	(...)
-	real 1.29
-	user 0.62
-	sys 0.08
-	arand@mas:~/tmp/more/a(master)$ git branch beeboo HEAD^
-	4390c32 (HEAD, master) baz
-	ffcca3a (boo, beeboo) bar
-	3e7793d foo
-	arand@mas:~/tmp/more/a(master)$ time -p git annex unused
-	unused . (checking for unused data...) (checking beeboo...) (checking master...)
-	(...)
-	real 2.50
-	user 1.12
-	sys 0.14
-	$ git branch -d boo beeboo
-	$ git log --oneline --decorate
-	4390c32 (HEAD, master) baz
-	ffcca3a bar
-	3e7793d foo
-	$ time -p git annex unused
-	unused . (checking for unused data...) (checking master...)
-	(...)
-	real 0.77
-	user 0.42
-	sys 0.04
-
-What is the expected output? What do you see instead?
-
-I would expect the time to be the same in all the above cases.
-
-What version of git-annex are you using? On what operating system?
-
-	$ git annex version
-	git-annex version: 3.20130216
-
-On current Debian sid/experimental
-
-> [[Done]], thanks to guilhem. We ended up using a different algorythm
-> which is faster yet, basically it now does a diff-index between the
-> index and each branch for its second stage bloom filter.
-> Speedup is 30x with 0 (or 1?) branch, and then massive for each
-> additional branch. --[[Joey]] 
diff --git a/doc/bugs/adding_a_remote_server_fails.mdwn b/doc/bugs/adding_a_remote_server_fails.mdwn
deleted file mode 100644
--- a/doc/bugs/adding_a_remote_server_fails.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-### Please describe the problem.
-I tried to add a remote server to my annex repo using the webapp.
-
-### What steps will reproduce the problem?
-Configuration -> Repositories -> Remote server -> Fill in stuff, use public key auth -> click "check this server" -> enjoy
-
-### What version of git-annex are you using? On what operating system?
-OpenSUSE Tumbleweed, git-annex 5.20140709-gc75193e
-
-### Please provide any additional information below.
-Error message: `user error (gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--with-colons","--list-secret-keys","--fixed-list-mode"] exited 2)`
-
-[[!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
-[2014-07-11 12:03:52 CEST] main: starting assistant version 5.20140709-gc75193e
-[2014-07-11 12:03:53 CEST] UpgradeWatcher: Finished upgrading git-annex to version 5.20140709-gc75193e 
-(scanning...) [2014-07-11 12:03:53 CEST] Watcher: Performing startup scan
-(started...) gpg: /home/zilti/.gnupg/gpg.conf:200: argument not expected
-gpg: /home/zilti/.gnupg/gpg.conf:201: invalid option
-gpg: /home/zilti/.gnupg/gpg.conf:200: argument not expected
-gpg: /home/zilti/.gnupg/gpg.conf:201: invalid option
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
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
deleted file mode 100644
--- a/doc/bugs/adding_remote_server_using_ssh_on_a_4.1_device.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-[[!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.
-
-The error message on the android is: Failed to ssh to the server. Transcript: Could not create directory '(null)/.ssh'.
-
-The message from sshd on the server is: Feb 20 11:32:37 thrain sshd[1662]: Did not receive identification string from 10.1.0.16
-
-(thrain is the sshd server, 10.1.0.16 is the android)
-
-### What steps will reproduce the problem?
-
-On the android, go into the get-annex webpage, select add remote repository,
-add the particulars
-
-hit check this server.
-
-### What version of git-annex are you using? On what operating system?
-
-The android version of git-annex is 5.20150219-gd24cgd3
-The version of address is 4.1.1
-
-The sshd server is debian wheezy
-
-
-### 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.
-"""]]
diff --git a/doc/bugs/addurl_unittest_failing_under_windows.mdwn b/doc/bugs/addurl_unittest_failing_under_windows.mdwn
deleted file mode 100644
--- a/doc/bugs/addurl_unittest_failing_under_windows.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-### Please describe the problem.
-git annex works perfectly fine under windows now; awesome work! One of the tests in the suite still fails (which might affect some features, that I don't use (yet?)).
-
-### What steps will reproduce the problem?
-[[!format sh """
-$ git annex test -p addurl
-"""]]
-
-### What version of git-annex are you using? On what operating system?
-
-[[!format sh """
-$ git --version
-git version 2.6.4.windows.1
-
-$ git annex version
-git-annex version: 5.20151218-g5008846
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3(multipartupload) WebDAV ConcurrentOutput DNS Feeds Quvi TDFA TorrentParser Database
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-"""]]
-
-Windows 10 (OS Build 10586.0)
-
-### Please provide any additional information below.
-
-[[!format sh """
-$ git annex test -p addurl
-Tests
-  Unit Tests
-Init Tests
-    addurl:   init:   Detected a filesystem without fifo support.
-  Disabling ssh connection caching.
-  Detected a crippled filesystem.
-  Enabling direct mode.
-OK (2.74s)
-  add:  fatal: This operation must be run in a work tree
-OK (6.00s)
-
-All 2 tests passed (8.79s)
-  Detected a filesystem without fifo support.
-  Disabling ssh connection caching.
-  Detected a crippled filesystem.
-  Enabling direct mode.
-removeDirectoryRecursive: permission denied (The process cannot access the file because it is being used by another process.)
-sleeping 10 seconds and will retry directory cleanup
-FAIL (7.16s)
-      addurl failed on file:///Users/born/.t/tmprepo0/myurl
-
-1 out of 1 tests failed (28.13s)
-  (This could be due to a bug in git-annex, or an incompatability
-   with utilities, such as git, installed on this system.)
-"""]]
-
-
diff --git a/doc/bugs/android_4.3_install_failed_.mdwn b/doc/bugs/android_4.3_install_failed_.mdwn
deleted file mode 100644
--- a/doc/bugs/android_4.3_install_failed_.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-### Please describe the problem.
-Impossible installation on Android 4.3
-
-
-### What version of git-annex are you using? On what operating system?
-The lastest version of git-annex, and Android 4.3, **without sdcard** (Wiko Wax)
-
-### Please provide any additional information below.
-
-The message given by git-annex:
-
-
-    Falling back to hardcoded app location; cannot find expected files in /data/app-lib 
-    mkdir: can't create directory '/sdcard/git-annex.home': Permission denied
-    mkdir of /sdcard/git-annex.home failed !
-    lib/lib.runshell.so: line 133: can't create /sdcard/git-annex.home/git-annex-install.log: Permission denied 
-    Installation failed ! Please report a but and attach /sdcard/git-annex.home/git-annex-install.log
-
-[[!meta title="android 4.3 install failed on android device without sdcard"]]
-[[!tag moreinfo]]
diff --git a/doc/bugs/android_ed25519_algorithm.mdwn b/doc/bugs/android_ed25519_algorithm.mdwn
deleted file mode 100644
--- a/doc/bugs/android_ed25519_algorithm.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-### Please describe the problem.
-Openssh was not compiled to support ed25519 algorithm
-
-### What steps will reproduce the problem?
-only enable ed25519 on server and try to connect via ssh.
-fails with "no hostkey alg"
-
-### What version of git-annex are you using? On what operating system?
-5.20150219-gd24cfd3, Android 5.0.1
-
-regards,
-David
diff --git a/doc/bugs/annex.autocommit_seems_ignored_for_new_files.mdwn b/doc/bugs/annex.autocommit_seems_ignored_for_new_files.mdwn
deleted file mode 100644
--- a/doc/bugs/annex.autocommit_seems_ignored_for_new_files.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-### Please describe the problem.
-
-When `annex.autocommit` is set to `false`, the assistant continues to commit to the repository, at least in indirect mode (direct mode not tested). I'd like it to not even `git annex add`, but it should at least not `git commit`.
-
-### What steps will reproduce the problem?
-
-I started the assistant with `git annex assistant`. Then I also opened the webapp with `git annex website`.
-
-Next, I ran `git config --bool --local --replace-all annex.autocommit false`. Supposedly that'll stop the assistant from committing things.
-
-Then I did a `echo "hello world" > test`.
-
-The webapp showed the file syncing, and `ls -l test` confirmed it'd been added the annex. `git status` confirmed it'd been committed as well.
-
-I did a `git rm test`, and then a `git status`... and it turns out the annex committed that as well.
-
-NOTE: My repository is in indirect mode.
-
-I tried `--global` instead of `--local` for the config, and that didn't make a difference.
-
-
-### What version of git-annex are you using? On what operating system?
-
-5.20141125 on Debian testing, from the package. (And, thank you Joey, for all your work on Debian. You'll be missed.)
-
-### Please provide any additional information below.
-
-> The assistant does not notice changes to the 
-> git configuration that are made while it's already running.
-> 
-> I have verified that setting `git config annex.autocommit true`
-> and then starting the assistant behaves as documented.
->
-> So will asking the webapp to restart.
-> 
-> Retitling bug report appropriately. --[[Joey]]
-
-[[!meta title="git-annex assistant could watch .git/config and react to config changes on the fly"]]
-[[!tag confirmed]]
diff --git a/doc/bugs/annex.gnupg-options_not_used_by_assistant.mdwn b/doc/bugs/annex.gnupg-options_not_used_by_assistant.mdwn
deleted file mode 100644
--- a/doc/bugs/annex.gnupg-options_not_used_by_assistant.mdwn
+++ /dev/null
@@ -1,81 +0,0 @@
-### Please describe the problem.
-
-I am using annex with a gcrypt encrypted repository but I am not able to sync content to the remote share via Webapp. If I sync via command line everything is working as expected but via Webapp I receive several error messages complaining about tty not available.
-
-As I workaround I changed two things:
-
-1. /usr/local/bin/git-remote-gcrypt: As $GPG_AGENT_INFO was not set I needed to include "--no-tty" on line 377
-2. Add a line in ~/.gnupg/gpg.conf with option "no-tty"
-
-As this breaks gpg2 for use on command line I wanted to provide the --no-tty via option **annex.gnupg-options** as mentioned in the manual. Not sure what I am doing wrong but the Webapp does not pick up these options.
-
-```
-[annex]
-	gnupg-options = --no-tty
-```
-
-
-### What steps will reproduce the problem?
-
-Create repository via
-
-```sh
-git annex initremote hidrive type=gcrypt gitrepo=rsync.hidrive.strato.com:/users/xxxxxx/hidrive.git chunk=5MiB keyid=XXXXXXXX
-```
-Launch Webapp
-
-```sh
-git annex webapp
-```
-
-Copy files to local annex directory
-
-### What version of git-annex are you using? On what operating system?
-
-OSX 10.11.4
-
-gpg (GnuPG) 2.0.30
-libgcrypt 1.7.0
-Copyright (C) 2015 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-
-Home: ~/.gnupg
-Supported algorithms:
-Pubkey: RSA, RSA, RSA, ELG, DSA
-Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
-        CAMELLIA128, CAMELLIA192, CAMELLIA256
-Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
-Compression: Uncompressed, ZIP, ZLIB, BZIP2
-
-
-git-annex version: 6.20160418
-build flags: Assistant Webapp Pairing Testsuite WebDAV FsEvents XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 6
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-[2016-05-05 15:04:31.059236] Pusher: Syncing with hidrive 
-(recording state in git...)
-gcrypt: Development version -- Repository format MAY CHANGE
-gpg: cannot open `/dev/tty': Device not configured
-
-  user error (gpg2 ["--quiet","--trust-model","always","--decrypt"] exited 2)
-gpg: cannot open `/dev/tty': Device not configured
-
-  user error (gpg2 ["--quiet","--trust-model","always","--decrypt"] exited 2)
-
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
-> added annex.gnupg-decrypt-options; [[done]] --[[Joey]]
diff --git a/doc/bugs/annex.hardlink_no_longer_set_on_init_of_shared_repo.mdwn b/doc/bugs/annex.hardlink_no_longer_set_on_init_of_shared_repo.mdwn
deleted file mode 100644
--- a/doc/bugs/annex.hardlink_no_longer_set_on_init_of_shared_repo.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-### Please describe the problem.
-
-In an earlier git-annex version (5.20141125, at least on debian), `git clone --shared` followed by `git annex init` used to set annex.hardlink to true and mark the repository as untrusted. It no longer does that.
-
-### What steps will reproduce the problem?
-
-(Assuming "foo" is a pre-existing repo with an annex)
-
-    git clone --shared foo foo.shared
-    cd foo.shared
-    git annex init
-    git config annex.hardlink
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150824, Debian Jessie. Tried both the debian unstable package and direct cabal build.
-
-### Please provide any additional information below.
-
-I haven't really debugged this, but it seems that `git annex init` nowadays does some syncing (i.e. commits, i.e. objects) that it didn't used to. The hard link check tests that the current repository has alternates, but doesn't have local objects. It might be that the newly created local objects prevent the hard link check from passing. Perhaps the hard link test should only check the presence of alternates?
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Sure, it's a great tool!
-
-> Seems that bit rotted at some point. I've fixed it, and put in a test
-> case. [[done]] --[[Joey]]
diff --git a/doc/bugs/annex_get_fails_from_read-only_filesystem.mdwn b/doc/bugs/annex_get_fails_from_read-only_filesystem.mdwn
deleted file mode 100644
--- a/doc/bugs/annex_get_fails_from_read-only_filesystem.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-### Please describe the problem.
-
-annex get does not work from read-only file systems...
-
-### What steps will reproduce the problem?
-
-    $ git annex get --from=...
-    error: could not lock config file /.../Annex/.git/config: Read-only file system
-    get ... (from ...) error: could not lock config file .../Annex/.git/config: Read-only file system
-      git [Param "config",Param "annex.version",Param "5"] failed
-    failed
-
-### What version of git-annex are you using? On what operating system?
-
-annex.version = 3 in the remote
-
-    $ git annex version
-    git-annex version: 5.20140927
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-[[!tag confirmed]]
-[[!meta title="read-only filesystem on remote prevents auto-upgrade from v3 to v5, and prevents using a remote"]]
diff --git a/doc/bugs/annex_remotedaemon_100__37___cpu_hungry.mdwn b/doc/bugs/annex_remotedaemon_100__37___cpu_hungry.mdwn
deleted file mode 100644
--- a/doc/bugs/annex_remotedaemon_100__37___cpu_hungry.mdwn
+++ /dev/null
@@ -1,81 +0,0 @@
-### Please describe the problem.
-
-Rebooted my laptop recently (after dunno how long of uptime) and annex assistant was shut off in previous uptime, but this time decided to leave it running. spotted that laptop is hot today to see that git-annex is busy.  And I am not sure what it is really doing:  top says
-
-     3087 yoh       30  10  520700  21084  14748 S 100.0  0.1  80:50.60 /usr/bin/git-annex remotedaemon 
-
-
-[[!format sh """
-
-$> tail -20 /proc/3087/cwd/.git/annex/daemon.log
-
-Please make sure you have the correct access rights
-and the repository exists.
-ssh: connect to host vagus.cns.dartmouth.edu port 22: Connection timed out
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-ssh: connect to host vagus.cns.dartmouth.edu port 22: Connection timed out
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-[2015-03-28 20:27:53 EDT] main: Syncing with debandy_Vault 
-hostname: Name or service not known
-hostname: Name or service not known
-To ssh://yoh@git-annex-andy-yoh_.2Fmedia.2FVault.2Fannex/media/Vault/annex/
-   8c181af..a0b0bd6  git-annex -> synced/git-annex
-   8352761..537d4a6  master -> synced/master
-
-"""]]
-
-in webapp I saw it struggling to connect  to vagus which is offline, I turned it off, then reanabled syncing to above yoh@git-annex-andy-yoh_.2Fmedia.2FVault.2Fannex .  I don't know if annex was busier or not before, but it is 100% busy now, but nothing seems to be done -- no traffic, no changing fd's for that annex process
-
-strace shows busy reading from fd 24:
-
-[[!format sh """
-[pid  3110] read(24, "", 8096)          = 0
-[pid  3110] read(24, "", 8096)          = 0
-[pid  3110] read(24, "", 8096)          = 0
-[pid  3110] read(24, "", 8096)          = 0
-"""]]
-
-
-    $> ls -l /proc/3087/fd/24                      
-    lr-x------ 1 yoh yoh 64 Mar 28 20:31 /proc/3087/fd/24 -> pipe:[794930]
-
-
-so what could it be doing?
-
-[[!format sh """
- 2807 yoh        20   0  693M  110M 36948 S  1.4  0.7 11:15.32 ├─ /usr/bin/git-annex assistant --startdelay=5s
- 3359 yoh        39  19 20996  3412  3096 S  0.0  0.0  0:00.01 │  ├─ git --git-dir=.git --work-tree=. check-attr -z --stdin annex.backend annex.numcopies --
- 3140 yoh        20   0 21128  3504  3188 S  0.0  0.0  0:00.01 │  ├─ git --git-dir=.git --work-tree=. check-ignore -z --stdin --verbose --non-matching
- 3117 yoh        20   0  693M  110M 36948 S  0.0  0.7  0:00.00 │  ├─ /usr/bin/git-annex assistant --startdelay=5s
- 3108 yoh        20   0  693M  110M 36948 S  0.0  0.7  0:00.15 │  ├─ /usr/bin/git-annex assistant --startdelay=5s
- 3087 yoh        30  10  508M 21084 14748 S 97.9  0.1  1h29:16 │  ├─ /usr/bin/git-annex remotedaemon
-24361 yoh        30  10  508M 21084 14748 S  0.0  0.1  0:00.00 │  │  ├─ /usr/bin/git-annex remotedaemon
-19799 yoh        30  10     0     0     0 Z  0.0  0.0  0:00.01 │  │  ├─ ssh
-19440 yoh        30  10  508M 21084 14748 S  0.0  0.1  0:00.00 │  │  ├─ /usr/bin/git-annex remotedaemon
- 3222 yoh        30  10 27368  5796  3456 S  0.0  0.0  0:00.00 │  │  ├─ git --git-dir=.git --work-tree=. cat-file --batch
- 3110 yoh        30  10  508M 21084 14748 R 97.5  0.1  1h29:10 │  │  ├─ /usr/bin/git-annex remotedaemon
- 3090 yoh        30  10  508M 21084 14748 S  0.0  0.1  0:00.98 │  │  ├─ /usr/bin/git-annex remotedaemon
- 3089 yoh        30  10  508M 21084 14748 S  0.0  0.1  0:00.03 │  │  └─ /usr/bin/git-annex remotedaemon
-"""]]
-
-how could I figure out what is doing??? meanwhile I have just sent STOP signal to 3087
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150327+git27-g6af24b6-1
-
-### 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.
-"""]]
diff --git a/doc/bugs/annex_symlinks_too.mdwn b/doc/bugs/annex_symlinks_too.mdwn
deleted file mode 100644
--- a/doc/bugs/annex_symlinks_too.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-Because git annex doesn't annex symlinks, it is not possible to copy files from the a repository with a simple cp/rsync dereferencing each files. If we do this as of today, we would lose the original symlink information.
-Would it be possible to change this behavior in the future, at least with an option?
-
-Thanks
-
-> Not going to happen, sorry. [[done]] --[[Joey]]
diff --git a/doc/bugs/annex_tries_to_start_old_binaray.mdwn b/doc/bugs/annex_tries_to_start_old_binaray.mdwn
deleted file mode 100644
--- a/doc/bugs/annex_tries_to_start_old_binaray.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-### Please describe the problem.
-See the logs. git-annex-shell tries to use not existing runshell
-
-
-### What steps will reproduce the problem?
-I am on Debian testing and have, some month ago, tried the tarball distribution.
-I have returned to deb packages later and  deleted the tarball installation. 
-Seems that there some traces left.  
-
-I have tried to find the runshell configuration, but failed to do so.
-
-I have destroyed the repo completely, has not helped.
-
-### What version of git-annex are you using? On what operating system?
-ii  git-annex      5.20140831   amd64      
-
-### 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
-
-[2014-09-07 17:15:04 CEST] main: starting assistant version 5.20140831
-[2014-09-07 17:15:04 CEST] Cronner: Consistency check in progress
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-(scanning...) [2014-09-07 17:16:47 CEST] Watcher: Performing startup scan
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.2013121/
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-/home/<user>/.ssh/git-annex-shell: 4: exec: /home/<user>/git-annex.linux.5.20131213/runshell: not found
-
-# End of transcript or log.
-"""]]
diff --git a/doc/bugs/annex_unannex__47__uninit_should_handle_copies.mdwn b/doc/bugs/annex_unannex__47__uninit_should_handle_copies.mdwn
deleted file mode 100644
--- a/doc/bugs/annex_unannex__47__uninit_should_handle_copies.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Just starting using v3, even more awesome, thanks!
-
-With git-annex, I take the habit to do copies of files without restriction, as they end up into (cheap) symlink copies.
-However, if 2 copies are unannexed, only one is restored, the other becomes a broken symlink, so I kind of loose some information 
-(my use case: I have a repo on which I recently started using annex, but most of the files, which i would want to be annexed, are only in git,
-so my plan is to unninit this repo, delete the .git dir, and then annex everything, as I don't mind the history).
-
-Rafaël
-
-> The only way for git-annex to support this in its current state would be
-> for the unannex command to copy the file content from the annex, rather
-> than moving it out. Then multiple links to the same content could be
-> unannexed.
-> 
-> But, this would be slower, and would depend on a later `unused` and
-> `dropunused` to actually remove the content. While doable, by use case
-> for unannex is more to quickly undo a mistaken add, and it's unlikely there
-> are multiple symlinks to the same content in this situation. --[[Joey]] 
-
-[[!tag done]]
diff --git a/doc/bugs/aria2c_display_broken_in_git-annex.mdwn b/doc/bugs/aria2c_display_broken_in_git-annex.mdwn
deleted file mode 100644
--- a/doc/bugs/aria2c_display_broken_in_git-annex.mdwn
+++ /dev/null
@@ -1,147 +0,0 @@
-[[!meta title="aria2c output very verbose (non-console mode)"]]
-[[!tag confirmed]]
-
-### Please describe the problem.
-
-Instead of displaying what are probably carriage returns, git-annex strips those out and outputs a *lot* of lines when downloading stuff through aria2c. On small downloads, it's not a big deal, but on large downloads it can flood the screen pretty badly.
-
-### What steps will reproduce the problem?
-
-Just download a torrent with git-annex.
-
-### What version of git-annex are you using? On what operating system?
-
-`5.20150205-gbf9058a` on current debian jessie.
-
-### 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
-anarcat@marcos:iso(master +)$ /srv/downloads.kitenet.net/git-annex/linux/current/git-annex.linux/git-annex addurl http://images.kali.org/kali-linux-1.1.0-amd64.torrent
-(downloading torrent file...)
---2015-02-09 22:12:51--  http://images.kali.org/kali-linux-1.1.0-amd64.torrent
-Résolution de images.kali.org (images.kali.org)… 50.7.37.130
-Connexion à images.kali.org (images.kali.org)|50.7.37.130|:80… connecté.
-requête HTTP transmise, en attente de la réponse… 200 OK
-Taille : 233152 (228K) [application/octet-stream]
-Sauvegarde en : « ../.git/annex/misctmp/torrent32659 »
-
-100%[=====================================================================================================================================================================================================>] 233 152      610KB/s   ds 0,4s
-
-2015-02-09 22:12:52 (610 KB/s) — « ../.git/annex/misctmp/torrent32659 » sauvegardé [233152/233152]
-
-addurl images.kali.org_kali_linux_1.1.0_amd64.torrent/kali_linux_1.1.0_amd64.iso (from bittorrent)
-
-
-02/09 22:12:52 [NOTICE] IPv4 DHT: listening on UDP port 6940
-
-02/09 22:12:52 [ERROR] Erreur d'intÃ©gritÃ© dÃ©tectÃ©e. fichier=../.git/annex/misctmp/URL--http&c%%images.kali.org%kali-linux-1.1.0-amd64.torrent/kali-linux-1.1.0-amd64
-
-02/09 22:12:52 [NOTICE] IPv4 BitTorrent: listening on TCP port 6923
-
-02/09 22:12:52 [NOTICE] IPv6 BitTorrent: listening on TCP port 6923
-[#066a28 0B/2.8GiB(0%) CN:0 SD:0 DL:0B]
-[#066a28 0B/2.8GiB(0%) CN:44 SD:0 DL:0B]
-[#066a28 0B/2.8GiB(0%) CN:44 SD:0 DL:0B]
-[#066a28 0B/2.8GiB(0%) CN:44 SD:1 DL:0B]
-[#066a28 0B/2.8GiB(0%) CN:44 SD:2 DL:0B]
-[#066a28 16KiB/2.8GiB(0%) CN:44 SD:2 DL:11KiB ETA:72h44m54s]
-[#066a28 32KiB/2.8GiB(0%) CN:44 SD:4 DL:11KiB ETA:72h55m47s]
-[#066a28 48KiB/2.8GiB(0%) CN:44 SD:5 DL:10KiB ETA:79h7m17s]
-[#066a28 64KiB/2.8GiB(0%) CN:49 SD:6 DL:10KiB ETA:77h27m]
-[#066a28 96KiB/2.8GiB(0%) CN:47 SD:6 DL:13KiB ETA:60h20m41s]
-[#066a28 160KiB/2.8GiB(0%) CN:45 SD:6 DL:20KiB ETA:41h20m43s]
-[#066a28 304KiB/2.8GiB(0%) CN:45 SD:6 DL:33KiB ETA:24h28m29s]
-[#066a28 384KiB/2.8GiB(0%) CN:45 SD:6 DL:38KiB ETA:21h34m21s]
-[#066a28 416KiB/2.8GiB(0%) CN:44 SD:6 DL:37KiB ETA:21h54m17s]
-[#066a28 512KiB/2.8GiB(0%) CN:44 SD:6 DL:42KiB ETA:19h26m19s]
-[#066a28 544KiB/2.8GiB(0%) CN:44 SD:6 DL:41KiB ETA:19h48m32s]
-[#066a28 624KiB/2.8GiB(0%) CN:44 SD:6 DL:44KiB ETA:18h38m8s]
-[#066a28 720KiB/2.8GiB(0%) CN:44 SD:6 DL:52KiB ETA:15h42m33s]
-[#066a28 736KiB/2.8GiB(0%) CN:44 SD:6 DL:50KiB ETA:16h30m42s]
-[#066a28 768KiB/2.8GiB(0%) CN:44 SD:7 DL:52KiB ETA:15h42m44s]
-[#066a28 896KiB/2.8GiB(0%) CN:44 SD:7 DL:57KiB ETA:14h20m4s]
-[#066a28 1.0MiB/2.8GiB(0%) CN:44 SD:7 DL:69KiB ETA:11h58m54s]
-[#066a28 1.1MiB/2.8GiB(0%) CN:44 SD:7 DL:79KiB ETA:10h21m22s]
-[#066a28 1.2MiB/2.8GiB(0%) CN:44 SD:7 DL:87KiB ETA:9h24m15s]
-[#066a28 1.4MiB/2.8GiB(0%) CN:44 SD:6 DL:90KiB ETA:9h8m26s]
-[#066a28 1.4MiB/2.8GiB(0%) CN:44 SD:6 DL:88KiB ETA:9h23m40s]
-[#066a28 1.5MiB/2.8GiB(0%) CN:44 SD:6 DL:85KiB ETA:9h41m21s]
-[#066a28 1.6MiB/2.8GiB(0%) CN:44 SD:6 DL:89KiB ETA:9h12m17s]
-[#066a28 1.6MiB/2.8GiB(0%) CN:44 SD:6 DL:86KiB ETA:9h32m9s]
-[#066a28 1.7MiB/2.8GiB(0%) CN:44 SD:6 DL:85KiB UL:451KiB(288KiB) ETA:9h37m58s]
-[#066a28 1.8MiB/2.8GiB(0%) CN:44 SD:6 DL:89KiB UL:168KiB(288KiB) ETA:9h16m53s]
-[#066a28 1.8MiB/2.8GiB(0%) CN:44 SD:6 DL:84KiB UL:105KiB(288KiB) ETA:9h47m6s]
-[#066a28 1.8MiB/2.8GiB(0%) CN:44 SD:6 DL:89KiB UL:76KiB(288KiB) ETA:9h16m44s]
-[#066a28 1.9MiB/2.8GiB(0%) CN:44 SD:7 DL:85KiB UL:59KiB(288KiB) ETA:9h36m53s]
-[#066a28 1.9MiB/2.8GiB(0%) CN:44 SD:7 DL:79KiB UL:49KiB(288KiB) ETA:10h24m56s]
-[#066a28 2.1MiB/2.8GiB(0%) CN:44 SD:7 DL:80KiB UL:42KiB(288KiB) ETA:10h15m19s]
-[#066a28 2.2MiB/2.8GiB(0%) CN:44 SD:7 DL:75KiB UL:68KiB(544KiB) ETA:10h56m]
-[#066a28 2.3MiB/2.8GiB(0%) CN:44 SD:7 DL:75KiB UL:60KiB(544KiB) ETA:10h54m12s]
-[#066a28 2.4MiB/2.8GiB(0%) CN:44 SD:7 DL:70KiB UL:54KiB(544KiB) ETA:11h39m51s]
-[#066a28 2.4MiB/2.8GiB(0%) CN:44 SD:7 DL:71KiB UL:49KiB(544KiB) ETA:11h29m45s]
-[#066a28 2.6MiB/2.8GiB(0%) CN:44 SD:7 DL:74KiB UL:44KiB(544KiB) ETA:11h1m53s]
-[#066a28 2.6MiB/2.8GiB(0%) CN:44 SD:7 DL:73KiB UL:41KiB(544KiB) ETA:11h14m27s]
-[#066a28 2.7MiB/2.8GiB(0%) CN:44 SD:7 DL:76KiB UL:38KiB(544KiB) ETA:10h52m4s]
-[#066a28 2.7MiB/2.8GiB(0%) CN:44 SD:7 DL:73KiB UL:19KiB(544KiB) ETA:11h18m54s]
-[#066a28 2.8MiB/2.8GiB(0%) CN:44 SD:7 DL:78KiB UL:27KiB(544KiB) ETA:10h31m16s]
-[#066a28 2.9MiB/2.8GiB(0%) CN:44 SD:7 DL:74KiB UL:25KiB(544KiB) ETA:11h7m40s]
-[#066a28 2.9MiB/2.8GiB(0%) CN:44 SD:7 DL:72KiB UL:22KiB(544KiB) ETA:11h22m19s]
-[#066a28 3.0MiB/2.8GiB(0%) CN:44 SD:7 DL:77KiB UL:41KiB(800KiB) ETA:10h42m53s]
-[#066a28 3.0MiB/2.8GiB(0%) CN:44 SD:7 DL:79KiB UL:38KiB(800KiB) ETA:10h24m56s]
-[#066a28 3.2MiB/2.8GiB(0%) CN:44 SD:7 DL:82KiB UL:35KiB(800KiB) ETA:10h4m14s]
-[#066a28 3.2MiB/2.8GiB(0%) CN:44 SD:7 DL:76KiB UL:72KiB(800KiB) ETA:10h44m14s]
-[#066a28 3.2MiB/2.8GiB(0%) CN:44 SD:7 DL:69KiB UL:113KiB(1.0MiB) ETA:11h48m20s]
-[#066a28 3.3MiB/2.8GiB(0%) CN:44 SD:8 DL:69KiB UL:92KiB(1.0MiB) ETA:11h54m37s]
-[#066a28 3.4MiB/2.8GiB(0%) CN:44 SD:8 DL:73KiB UL:78KiB(1.0MiB) ETA:11h17m38s]
-[#066a28 3.6MiB/2.8GiB(0%) CN:44 SD:8 DL:78KiB UL:67KiB(1.0MiB) ETA:10h27m51s]
-[#066a28 3.7MiB/2.8GiB(0%) CN:44 SD:9 DL:76KiB UL:59KiB(1.0MiB) ETA:10h46m10s]
-[#066a28 3.7MiB/2.8GiB(0%) CN:44 SD:9 DL:72KiB UL:53KiB(1.0MiB) ETA:11h21m24s]
-[#066a28 3.8MiB/2.8GiB(0%) CN:44 SD:10 DL:75KiB UL:72KiB(1.2MiB) ETA:10h55m4s]
-[#066a28 3.9MiB/2.8GiB(0%) CN:44 SD:10 DL:74KiB UL:66KiB(1.2MiB) ETA:11h9m6s]
-[#066a28 4.0MiB/2.8GiB(0%) CN:44 SD:10 DL:80KiB UL:62KiB(1.3MiB) ETA:10h12m8s]
-[#066a28 4.1MiB/2.8GiB(0%) CN:44 SD:10 DL:84KiB UL:58KiB(1.3MiB) ETA:9h45m9s]
-[#066a28 4.2MiB/2.8GiB(0%) CN:44 SD:9 DL:88KiB UL:54KiB(1.3MiB) ETA:9h17m20s]
-[#066a28 4.2MiB/2.8GiB(0%) CN:44 SD:9 DL:83KiB UL:46KiB(1.3MiB) ETA:9h53m47s]
-[#066a28 4.3MiB/2.8GiB(0%) CN:44 SD:8 DL:75KiB UL:42KiB(1.3MiB) ETA:10h55m25s]
-[#066a28 4.4MiB/2.8GiB(0%) CN:44 SD:8 DL:82KiB UL:39KiB(1.3MiB) ETA:10h3m52s]
-[#066a28 4.4MiB/2.8GiB(0%) CN:44 SD:7 DL:80KiB UL:36KiB(1.3MiB) ETA:10h18m43s]
-[#066a28 4.4MiB/2.8GiB(0%) CN:44 SD:7 DL:76KiB UL:53KiB(1.5MiB) ETA:10h49m36s]
-[#066a28 4.4MiB/2.8GiB(0%) CN:44 SD:7 DL:66KiB UL:48KiB(1.5MiB) ETA:12h22m22s]
-[#066a28 4.5MiB/2.8GiB(0%) CN:44 SD:7 DL:57KiB UL:43KiB(1.5MiB) ETA:14h27m44s]
-[#066a28 4.5MiB/2.8GiB(0%) CN:44 SD:7 DL:55KiB UL:39KiB(1.5MiB) ETA:14h52m9s]
-[#066a28 4.5MiB/2.8GiB(0%) CN:44 SD:8 DL:52KiB UL:37KiB(1.5MiB) ETA:15h48m10s]
-[#066a28 4.6MiB/2.8GiB(0%) CN:44 SD:8 DL:50KiB UL:21KiB(1.5MiB) ETA:16h13m54s]
-[#066a28 4.6MiB/2.8GiB(0%) CN:44 SD:9 DL:42KiB UL:30KiB(1.5MiB) ETA:19h24m47s]
-[#066a28 4.6MiB/2.8GiB(0%) CN:44 SD:9 DL:41KiB UL:53KiB(1.8MiB) ETA:19h44m57s]
-[#066a28 4.7MiB/2.8GiB(0%) CN:44 SD:9 DL:32KiB UL:48KiB(1.8MiB) ETA:25h20m56s]
-[#066a28 4.7MiB/2.8GiB(0%) CN:44 SD:10 DL:38KiB UL:44KiB(1.8MiB) ETA:21h24m33s]
-[#066a28 4.8MiB/2.8GiB(0%) CN:44 SD:10 DL:34KiB UL:40KiB(1.8MiB) ETA:23h45m37s]
-[#066a28 4.8MiB/2.8GiB(0%) CN:48 SD:10 DL:31KiB UL:56KiB(2.0MiB) ETA:26h11m56s]
-[#066a28 4.8MiB/2.8GiB(0%) CN:46 SD:10 DL:30KiB UL:52KiB(2.0MiB) ETA:27h15m40s]
-[#066a28 4.9MiB/2.8GiB(0%) CN:44 SD:10 DL:32KiB UL:75KiB(2.0MiB) ETA:25h13m45s]
-[#066a28 4.9MiB/2.8GiB(0%) CN:44 SD:10 DL:36KiB UL:66KiB(2.0MiB) ETA:22h32m9s]
-[#066a28 4.9MiB/2.8GiB(0%) CN:44 SD:10 DL:35KiB UL:61KiB(2.0MiB) ETA:23h9m10s]
-[#066a28 5.0MiB/2.8GiB(0%) CN:44 SD:9 DL:36KiB UL:80KiB(2.3MiB) ETA:22h43m56s]
-[#066a28 5.0MiB/2.8GiB(0%) CN:44 SD:9 DL:35KiB UL:69KiB(2.3MiB) ETA:23h6m29s]
-[#066a28 5.1MiB/2.8GiB(0%) CN:44 SD:10 DL:37KiB UL:62KiB(2.3MiB) ETA:21h58m37s]
-[#066a28 5.1MiB/2.8GiB(0%) CN:44 SD:10 DL:38KiB UL:58KiB(2.3MiB) ETA:21h19m1s]
-[#066a28 5.1MiB/2.8GiB(0%) CN:49 SD:12 DL:35KiB UL:55KiB(2.3MiB) ETA:23h3s]
-[#066a28 5.2MiB/2.8GiB(0%) CN:48 SD:11 DL:38KiB UL:48KiB(2.3MiB) ETA:21h41m12s]
-[#066a28 5.2MiB/2.8GiB(0%) CN:45 SD:11 DL:32KiB UL:64KiB(2.6MiB) ETA:25h8m51s]
-[#066a28 5.2MiB/2.8GiB(0%) CN:44 SD:12 DL:32KiB UL:59KiB(2.6MiB) ETA:25h17m48s]
-^C
-anarcat@marcos:iso(master +%)$ aria2c kali-linux-1.1.0-amd64.torrent
-
-02/09 22:17:16 [NOTICE] IPv4 DHT: listening on UDP port 6963
-
-02/09 22:17:16 [NOTICE] IPv4 BitTorrent: listening on TCP port 6950
-
-02/09 22:17:16 [NOTICE] IPv6 BitTorrent: listening on TCP port 6950
-[#51d0f6 5.2MiB/2.8GiB(0%) CN:44 SD:12 DL:241KiB ETA:3h25m7s]
-
-# End of transcript or log.
-"""]]
-
-Could be caused by [[bittorrent_special_url_double-encoding]]? --[[anarcat]]
diff --git a/doc/bugs/assistant_-_GTalk_collision.mdwn b/doc/bugs/assistant_-_GTalk_collision.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_-_GTalk_collision.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-##What steps will reproduce the problem?
-
-Follow the [share with a friend walkthrough](http://git-annex.branchable.com/assistant/share_with_a_friend_walkthrough/).  I use my Google Talk account to pair with myself.  With the assistant running, log in to Google Talk on the web interface and set your status 'Invisible'.
-
-##What is the expected output? What do you see instead?
-
-I expect to remain invisible, but I get the following warning: "Oops! You are not invisible because you're logged into Google Talk from another client, device or location that doesn't support invisibility."
-
-##What version of git-annex are you using? On what operating system?
-
-4.20130314 on Linux.
-
-##Please provide any additional information below.
-
-Syncing between the repositories works ok.
-
-[[!tag /design/assistant]]
diff --git a/doc/bugs/assistant_bails_when_adding_encrypted_usbdrive_repo_on_mac.mdwn b/doc/bugs/assistant_bails_when_adding_encrypted_usbdrive_repo_on_mac.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_bails_when_adding_encrypted_usbdrive_repo_on_mac.mdwn
+++ /dev/null
@@ -1,53 +0,0 @@
-### Please describe the problem.
-Tried adding a removable drive repository through git-annex assistant on Mac, asked to encrypt it, got Internal server error with explanation: unable to determine gcrypt-id of remote
-
-### What steps will reproduce the problem?
-current (today's) version of git-annex build for Mountain Lion installed
-app launched
-default annex initialized, a couple file added
-a removable 2GB USB drive (ExFAT) mounted in OS
-click Add another repository
-choose removable drive
-choose to encrypt
-a window explaining the need to wait for entropy shows
-then we get the Internal server error: unable to determine gcrypt-id of remote
-
-### What version of git-annex are you using? On what operating system?
-git-annex version 4.20130922-g7dc188a
-Mac OS X 10.8.5
-
-### Please provide any additional information below.
-
-looking at transcript below, it appears the root cause is the lack of initial git/gcrypt configuration. perhaps this needs to be caught/addressed somehow
-
-[[!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
-
-gpg: can't open `/usr/local/share/gnupg/options.skel': No such file or directory
-.......+++++
-.+++++
-gpg: key 71BFBC31 marked as ultimately trusted
-ok
-(Recording state in git...)
-(Recording state in git...)
-(encryption setup) (hybrid cipher with gpg key C4B2EA8D71BFBC31) gcrypt: Development version -- Repository format MAY CHANGE
-gpg: checking the trustdb
-gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
-gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
-gcrypt: WARNING: Skipping missing key C4B2EA8D71BFBC31
-gcrypt: You have not configured any keys you can encrypt to for this repository
-gcrypt: Use ::
-gcrypt:   git config gcrypt.participants YOURKEYID
-gcrypt: Development version -- Repository format MAY CHANGE
-gcrypt: WARNING: Skipping missing key C4B2EA8D71BFBC31
-gcrypt: You have not configured any keys you can encrypt to for this repository
-gcrypt: Use ::
-gcrypt:   git config gcrypt.participants YOURKEYID
-03/Oct/2013:00:05:24 +0400 [Error#yesod-core] unable to determine gcrypt-id of remote @(yesod-core-1.1.8.3:Yesod.Internal.Core ./Yesod/Internal/Core.hs:550:5)
-
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/assistant_does_not_allow_adding_an_existing_repo.mdwn b/doc/bugs/assistant_does_not_allow_adding_an_existing_repo.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_does_not_allow_adding_an_existing_repo.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-The assistant does not allow adding an existing repo: I tried to add a "remote server", to enter the credits, and then I add to choose between "git-annex" or "rsync". Choosing "git-annex" tries to create a new repo and then fails. The repo on the server is a bare one, accessed via gitolite. Setting the remote manually ("git remote add origin git@example.org:my-annex.git" works (I can pull, push, ...))
-
-Mac OS 10.7 version 2013-09-10
-
-
-[[!meta title="assistant does not interoperate with gitolite when adding a repository"]]
-
-[2013-09-13 17:00:55 CEST] chat: ssh ["-p","22","git@example.org","sh -c 'mkdir -p '\"'\"'my-annex.git'\"'\"'&&cd '\"'\"'my-annex.git'\"'\"'&&if [ ! -d .git ]; then git init --bare --shared; fi&&git annex init'"]
-
-[[!tag confirmed]]
diff --git a/doc/bugs/assistant_doesn__39__t_sync_empty_directories.mdwn b/doc/bugs/assistant_doesn__39__t_sync_empty_directories.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_doesn__39__t_sync_empty_directories.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-### Please describe the problem.
-
-The assistant seems to only sync files and not directories, so empty directories will not be synced.
-
-### What steps will reproduce the problem?
-
-- Create an empty directory on HostA
-- See that nothing gets synced (daemon.log is silent) and the directory doesn't exist on the other HostB
-- Create an empty file inside the empty directory on HostA
-- See that now HostB has the empty file inside the directory
-
-I'm sure this comes directly from the git behavior but is at least surprising for a direct mode repository using the assistant.
-
-### What version of git-annex are you using? On what operating system?
-
-[[!format sh """
-$ git annex version
-git-annex version: 4.20130516.1
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-local repository version: 4
-default repository version: 3
-supported repository versions: 3 4
-upgrade supported from repository versions: 0 1 2
-$ lsb_release -a
-No LSB modules are available.
-Distributor ID:	Ubuntu
-Description:	Ubuntu 12.04.2 LTS
-Release:	12.04
-Codename:	precise
-"""]]
-
-> [[!taglink confirmed]] (but may be out of scope) --[[Joey]] 
diff --git a/doc/bugs/assistant_doesn__39__t_sync_file_permissions.mdwn b/doc/bugs/assistant_doesn__39__t_sync_file_permissions.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_doesn__39__t_sync_file_permissions.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-### Please describe the problem.
-
-The assistant does not sync file permissions so if you set something as executable it won't be set the same on the other repositories.
-
-### What steps will reproduce the problem?
-
-On the first host:
-
-[[!format sh """
-$ echo -e '#!/bin/sh\necho "Hello World!"' > testscript
-$ chmod ugo+x testscript 
-$ ./testscript 
-Hello World!
-$ ls -l
-total 4
--rwxr-xr-x 1 pedrocr pedrocr 30 May 31 20:00 testscript
-"""]]
-
-And on the second host:
-
-[[!format sh """
-$ ls -l
-total 4
--rw-r--r-- 1 pedrocr pedrocr 30 May 31 20:00 testscript
-$ ./testscript
-bash: ./testscript: Permission denied
-"""]]
-
-### What version of git-annex are you using? On what operating system?
-
-[[!format sh """
-$ git annex version
-git-annex version: 4.20130516.1
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-local repository version: 4
-default repository version: 3
-supported repository versions: 3 4
-upgrade supported from repository versions: 0 1 2
-$ lsb_release -a
-No LSB modules are available.
-Distributor ID:	Ubuntu
-Description:	Ubuntu 12.04.2 LTS
-Release:	12.04
-Codename:	precise
-"""]]
-
-> [[!taglink confirmed]] (but may be out of scope) --[[Joey]] 
diff --git a/doc/bugs/assistant_expensive_scan_unnecessarily_queues_files.mdwn b/doc/bugs/assistant_expensive_scan_unnecessarily_queues_files.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_expensive_scan_unnecessarily_queues_files.mdwn
+++ /dev/null
@@ -1,65 +0,0 @@
-### Please describe the problem.
-Summary: The assistant pulls files from remote repos although they are stored on trusted repos (remote machine may be up or down).
-
-After starting the assistant via "git annex webapp --listen #ip# --verbose --debug" it starts to check for pending tasks and starts to queue lots of files (could be all of them). I checked the daemon.log and found the following line:
-
-[[!format sh """
-[2014-06-03 21:39:04 CEST] TransferScanner: queued Download UUID "541d2f88-16c3-11e2-aa7e-8f1a2c8e14c5" apps/Apache_OpenOffice_4.0.0_MacOS_x86_install_en-US.dmg Nothing : expensive scan found missing object
-"""]]
-
-The file is available in a remote repo:
-
-[[!format sh """
-$ git annex whereis apps/Apache_OpenOffice_4.0.0_MacOS_x86_install_en-US.dmg
-whereis apps/Apache_OpenOffice_4.0.0_MacOS_x86_install_en-US.dmg (1 copy) 
-  	541d2f88-16c3-11e2-aa7e-8f1a2c8e14c5 -- dump
-ok
-"""]]
-
-The remote "dump" is trusted and is configured as "backup" repo. The repo running the assistant is configured as "manual". The configuration settings for wanted, required and scheduled remained untouched.
-
-Num copies is unset and defaults to 1:
-
-[[!format sh """
-$ git annex numcopies
-global numcopies is not set
-(default is 1)
-"""]]
-
-When calling "git annex find --want-get" no files are listed as in my case, all are stored in the "dump" repo which is trusted.
-
-[[!format sh """
-$ git annex find --want-get
-$ 
-"""]]
-
-### What steps will reproduce the problem?
-Start the assistant and wait for it to finish startup checking. The assistant adds lots (all?) of the files due to “expensive scan found missing object”.
-
-### What version of git-annex are you using? On what operating system?
-Snapshot build from the annex branchable webpage running on an OSX 10.9.3 machine:
-[[!format sh """
-$ git annex version
-git-annex version: 5.20140411-g2503f43
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-"""]]
-
-Note: Updated to 5.20140529-g68a56a6 but same behavior is observed.
-
-### Please provide any additional information below.
-
-The backup node was down while the assistant starts up. However also files from another trusted node that is online 24/7 is pulled. Repo was upgraded from version 4 to 5. Is there a way to further check why a file was added e.g. to dump all variables of the evaluated term (approxlackingcopies, copies, etc)?
-
-[[!format sh """
-[2014-06-03 21:39:04 CEST] TransferScanner: starting scan of [Remote { name ="origin" },Remote { name ="dump" }]
-[2014-06-03 21:39:04 CEST] read: git ["--git-dir=/Volumes/DATA/annex/images/.git","--work-tree=/Volumes/DATA/annex/images","ls-files","--cached","-z","--"]
-[2014-06-03 21:39:04 CEST] chat: git ["--git-dir=/Volumes/DATA/annex/images/.git","--work-tree=/Volumes/DATA/annex/images","check-attr","-z","--stdin","annex.backend","annex.numcopies","--"]
-[2014-06-03 21:39:04 CEST] TransferScanner: queued Download UUID "541d2f88-16c3-11e2-aa7e-8f1a2c8e14c5" apps/Apache_OpenOffice_4.0.0_MacOS_x86_install_en-US.dmg Nothing : expensive scan found missing object
-[2014-06-03 21:39:04 CEST] Transferrer: Transferring: Download UUID "541d2f88-16c3-11e2-aa7e-8f1a2c8e14c5" apps/Apache_OpenOffice_4.0.0_MacOS_x86_install_en-US.dmg Nothing
-[2014-06-03 21:39:04 CEST] TransferScanner: queued Download UUID "541d2f88-16c3-11e2-aa7e-8f1a2c8e14c5" apps/Apache_OpenOffice_4.0.1_MacOS_x86_install_en-US.dmg Nothing : expensive scan found missing object
-"""]]
diff --git a/doc/bugs/assistant_locked_my_files.mdwn b/doc/bugs/assistant_locked_my_files.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_locked_my_files.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-### Please describe the problem.
-
-When the assistant is running, using "git annex unlock" on the commandline may lead to unexpected results.
-
-### What steps will reproduce the problem?
-
-Make sure the assitant is running on a repository.
-
-`git annex unlock somefiles`, try to edit them, wait a while, try to edit.
-
-If you're not lucky, the assistant will notice the unlocked files as new and will add them back, locking them in the process, and you won't be able to save them.
-
-### What version of git-annex are you using? On what operating system?
-
-debian wheezy.
-
-[[!format sh """
-git-annex version: 5.20131109-gf2cb5b9
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
-local repository version: 3
-default repository version: 3
-supported repository versions: 3 5
-upgrade supported from repository versions: 0 1 2 4
-"""]]
-
-### Please provide any additional information below.
-
-[[!tag confirmed]]
diff --git a/doc/bugs/assistant_memory_leak.mdwn b/doc/bugs/assistant_memory_leak.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_memory_leak.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-### Please describe the problem.
-
-The assistant is using gruesome amounts of resident memory:
-
-<pre>
-USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
-www-data 23898 29.0 90.4 7842888 5536740 ?     Sl   Jun17 2810:08 /usr/lib/git-annex.linux/exe/git-annex --library-path /usr/lib/git-annex.linu
-</pre>
-
-I had to stop the assistant because it ended up using all memory.
-
-### What steps will reproduce the problem?
-
-Unclear. The assistant has been running for a while and there's a big tansfer (~800GB) of files in progress.
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150610+gitg608172f-1~ndall+1 on Debian 7 Wheezy.
-
-### Please provide any additional information below.
-
-daemon.log: http://paste2.org/YJVGvpy5 --[[anarcat]]
diff --git a/doc/bugs/assistant_sometimes_does_not_merge_changes_from_remote.mdwn b/doc/bugs/assistant_sometimes_does_not_merge_changes_from_remote.mdwn
deleted file mode 100644
--- a/doc/bugs/assistant_sometimes_does_not_merge_changes_from_remote.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-This bug seems to be somewhat reproducible:
-
-1. Set up ~/annex using webapp, keep empty.
-2. Add another local repo, eg /tmp/annex, and combine the 2 repositories.
-
-Now files written to ~/annex should quickly appear in /tmp/annex, and
-vice-versa. However, this seems not to happen at first. There's a pause
-for some reason until changes start propigating. Apparently a push from
-the repo that got the file to the other repo doesn't happen.
-After this pause, syncing of changes starts happening quickly, as expected.
-
---[[Joey]]
diff --git a/doc/bugs/autostart__47__git-annex.desktop_gets_resurrected.mdwn b/doc/bugs/autostart__47__git-annex.desktop_gets_resurrected.mdwn
deleted file mode 100644
--- a/doc/bugs/autostart__47__git-annex.desktop_gets_resurrected.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-### Please describe the problem.
-
-Due to the very unstable kernel on my laptop atm I need to reboot quite frequently... and this issue with annex assistant immediately starting synchronizing (although I did disable all synchronizations in webapp, so it would be another issue I guess), I wanted just to disable autostart of git-annex altogether.  I have removed $HOME/.config/autostart/git-annex.desktop but to my surprise upon gnome crashing/relogin I had the same ssh key passphrase dialog and that file reappeared.
-
-### What version of git-annex are you using? On what operating system?
-
-5.20151116+gitg5416a1a-1~ndall+1
-
-[[!meta author=yoh]]
diff --git a/doc/bugs/box.com_never_stops_syncing.mdwn b/doc/bugs/box.com_never_stops_syncing.mdwn
deleted file mode 100644
--- a/doc/bugs/box.com_never_stops_syncing.mdwn
+++ /dev/null
@@ -1,74 +0,0 @@
-### Please describe the problem.
-Git-annex will constantly sync most(if not all) my files to box.com
-
-### What steps will reproduce the problem?
-1 - Use git-annex instead of Dropbox at work
-2 - Boot computer.
-3 - Watch it sync everything to box.com (even files i believe it has transferred each and every day for the last few months)
-
-### What version of git-annex are you using? On what operating system?
-git-annex version: 4.20130827
-
-But i have never seen it work satisfactory in any version.
-
-Also, i have seen this is 10+ different clean git-annexes. So it isn't annex specific. 
-
-### Please provide any additional information below.
-
-I am going to add more debug to this bug constantly. (I intend to do a full 'git annex copy --to box.com --not --in box.com' daily, and see if the same files are transfered again and again)
-
-
-For now, i see a few different issues already:
-
-
-[[!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
-
-
-tou@DSK1049:~/work-annex$ git annex copy --to box.com --not --in box.com 2>&1 | tee ../work-annex-copy-to-box.com-not-in-box.com-run1.log
-[2013-09-11 09:24:53 CEST] read: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","show-ref","git-annex"]
-[2013-09-11 09:24:53 CEST] read: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","show-ref","--hash","refs/heads/git-annex"]
-[2013-09-11 09:24:53 CEST] read: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","log","refs/heads/git-annex..dbe8b1cfa5f84126c45a39fdc7c7f26e272c71cc","--oneline","-n1"]
-[2013-09-11 09:24:53 CEST] read: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","log","refs/heads/git-annex..45e279375897a2cd7f5b893402e0ec25c1b23436","--oneline","-n1"]
-[2013-09-11 09:24:54 CEST] read: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","log","refs/heads/git-annex..c4921be4434f751493fce1c932ac759214abacd4","--oneline","-n1"]
-[2013-09-11 09:24:54 CEST] read: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","log","refs/heads/git-annex..d591398dc1cac824a5fc5bdacdcb82301a9b15a3","--oneline","-n1"]
-[2013-09-11 09:24:54 CEST] chat: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","cat-file","--batch"]
-[2013-09-11 09:24:54 CEST] read: git ["config","--null","--list"]
-[2013-09-11 09:24:54 CEST] read: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","ls-files","--cached","-z","--"]
-[2013-09-11 09:24:54 CEST] chat: git ["--git-dir=/home/tou/work-annex/.git","--work-tree=/home/tou/work-annex","cat-file","--batch"]
-copy Documents/Gamle catillo overførsler/Rapport b-bm.odt (gpg) (checking box.com...) ok
-copy Documents/Gamle catillo overførsler/Rapport brandt skorstensfejeren.odt (checking box.com...) (failed to read https://www.box.com/dav/work-annex/4a5/18e/GPGHMACSHA1--5f8660edac93899cf9adc5fadcc480ddc2992bb1/GPGHMACSHA1--5f8660edac93899cf9adc5fadcc480ddc2992bb1.chunkcount) failed
-copy Documents/Gamle catillo overførsler/Rapport teamkoege.odt (checking box.com...) (failed to read https://www.box.com/dav/work-annex/98d/ae7/GPGHMACSHA1--5253241407527aa6c980f1174fdbc32713c54c44/GPGHMACSHA1--5253241407527aa6c980f1174fdbc32713c54c44.chunkcount) failed
-copy Documents/Gamle catillo overførsler/Rapport vikarborsen.odt (checking box.com...) ok
-copy Documents/Gamle catillo overførsler/Rapport-terrariemesteren.odt (checking box.com...) ok
-copy Documents/Gamle catillo overførsler/catillo-efhandel.odt (checking box.com...) (failed to read https://www.box.com/dav/work-annex/9d9/aea/GPGHMACSHA1--1516eac1ec7b4ceaa840faebabde1f50f5db0a52/GPGHMACSHA1--1516eac1ec7b4ceaa840faebabde1f50f5db0a52.chunkcount) failed
-copy Documents/Nøgeordsanalyse catillo104.xlsx (checking box.com...) (ResponseTimeout) failed
-copy Documents/Søgeordsliste.txt (checking box.com...) ok
-copy Documents/catillo guide.odt (checking box.com...) ok
-copy Documents/guide bruger oprettelse.odt (checking box.com...) (failed to read https://www.box.com/dav/work-annex/49e/175/GPGHMACSHA1--2b47737f8de7faac7704eaa322785edad63a921c/GPGHMACSHA1--2b47737f8de7faac7704eaa322785edad63a921c.chunkcount) failed
-copy Documents/guide skift backup bånd.odt (checking box.com...) ok
-copy Documents/lilletest.csv (checking box.com...) (failed to read https://www.box.com/dav/work-annex/915/373/GPGHMACSHA1--49ba3d5f63c012ae2cd2c0fc3e729178b1023c33/GPGHMACSHA1--49ba3d5f63c012ae2cd2c0fc3e729178b1023c33.chunkcount) failed
-copy Dropbox/adams-scraper/CommonFunctions.py (checking box.com...) (ResponseTimeout) failed
-copy Dropbox/adams-scraper/__pycache__/CommonFunctions.cpython-33.pyc (checking box.com...) (to box.com...) [2013-09-11 09:28:30 CEST] chat: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--batch","--passphrase-fd","14","--symmetric","--force-mdc"]
-
-100%          0.0 B/s 0sResponseTimeout
-ResponseTimeout
-failed                  
-
-
-# End of transcript or log.
-"""]]
-
-More to come(full log)
-
-> This is [[fixed|done]] in git; when built with a new enough
-> version of the haskell DAV library, git-annex disables the default 5
-> second timeout.
-> 
-> It'll still be present in the Debian stable backports, which are
-> built with an old version of DAV. Not much I can do about that;
-> backporting DAV would be difficult.
-> 
-> The daily builds are updated to use the new version.
-> --[[Joey]]
diff --git a/doc/bugs/broken_repo_when_inodes_exhausted.mdwn b/doc/bugs/broken_repo_when_inodes_exhausted.mdwn
deleted file mode 100644
--- a/doc/bugs/broken_repo_when_inodes_exhausted.mdwn
+++ /dev/null
@@ -1,62 +0,0 @@
-### Please describe the problem.
-I found one of my repos damaged after letting the webapp sync with it for a while.  The filesystem inodes were exhausted and all the refs pointed to objects that do not exist.
-
-### What steps will reproduce the problem?
-I expect this issue to be reproduced by syncing to a filesystem without enough free inodes to hold the incoming files.
-
-### What version of git-annex are you using? On what operating system?
-This repo is using git-annex 6.20160229-g37a89cc
-
-### 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
-
-$ git status
-fatal: bad object HEAD
-$ git pull
-error: refs/heads/master does not point to a valid object!
-error: refs/heads/synced/git-annex does not point to a valid object!
-error: refs/heads/synced/master does not point to a valid object!
-error: refs/heads/master does not point to a valid object!
-error: refs/heads/synced/git-annex does not point to a valid object!
-error: refs/heads/synced/master does not point to a valid object!
-error: refs/heads/master does not point to a valid object!
-error: refs/heads/synced/git-annex does not point to a valid object!
-error: refs/heads/synced/master does not point to a valid object!
-error: refs/heads/master does not point to a valid object!
-error: refs/heads/synced/git-annex does not point to a valid object!
-error: refs/heads/synced/master does not point to a valid object!
-remote: Counting objects: 3, done.
-remote: Compressing objects: 100% (3/3), done.
-remote: Total 3 (delta 0), reused 0 (delta 0)
-Unpacking objects: 100% (3/3), done.
-error: refs/heads/master does not point to a valid object!
-error: refs/heads/synced/git-annex does not point to a valid object!
-error: refs/heads/synced/master does not point to a valid object!
-fatal: bad object HEAD
-error: /home/olpc/annex-ext4 did not send all necessary objects
-
-Auto packing the repository in background for optimum performance.
-See "git help gc" for manual housekeeping.
-error: The last gc run reported the following. Please correct the root cause
-and remove .git/gc.log.
-Automatic cleanup will not be performed until the file is removed.
-
-error: refs/heads/master does not point to a valid object!
-error: refs/heads/synced/git-annex does not point to a valid object!
-error: refs/heads/synced/master does not point to a valid object!
-error: refs/remotes/beta/master does not point to a valid object!
-error: refs/remotes/beta/synced/master does not point to a valid object!
-error: refs/remotes/halloween/master does not point to a valid object!
-error: refs/remotes/halloween/synced/master does not point to a valid object!
-fatal: bad object HEAD
-error: failed to run repack
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I'm running into a few issues but I intend to work through them.  
diff --git a/doc/bugs/can__39__t_connect_jabber_with_custom_google_apps_domain.mdwn b/doc/bugs/can__39__t_connect_jabber_with_custom_google_apps_domain.mdwn
deleted file mode 100644
--- a/doc/bugs/can__39__t_connect_jabber_with_custom_google_apps_domain.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-### Please describe the problem.
-In "Configuring jabber account" custom domains through google apps don't connect properly.
-
-### What steps will reproduce the problem?
-Try to use a google account that uses a non-gmail domain, e.g. user@domain.com
-
-### What version of git-annex are you using? On what operating system?
-Newest, on Mac OS 10.9
-
-### Please provide any additional information below.
-The issue is because git-annex is trying to connect to @domain.com as the jabber server, but the server should be talk.google.com:5223.
-
-[[!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.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/can__39__t_get.mdwn b/doc/bugs/can__39__t_get.mdwn
deleted file mode 100644
--- a/doc/bugs/can__39__t_get.mdwn
+++ /dev/null
@@ -1,81 +0,0 @@
-### Please describe the problem.
-
-
-### What steps will reproduce the problem?
-
-[[!format sh """
-$> git annex get 2read/ISNN2010__Tang.pdf
-git-annex: Cannot mix --all or --unused with file names.
-"""]]
-
-### What version of git-annex are you using? On what operating system?
-
-
-[[!format sh """
-$> apt-cache policy git-annex
-git-annex:
-  Installed: 5.20140116
-  Candidate: 5.20140116
-  Version table:
- *** 5.20140116 0
-        600 http://debian.lcs.mit.edu/debian/ sid/main amd64 Packages
-        100 /var/lib/dpkg/status
-"""]]
-
-### 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
-
-$> git annex get 2read/ISNN2010__Tang.pdf
-git-annex: Cannot mix --all or --unused with file names.
-
-but seems to start fetching some load if I do not specify any path and just run 'git annex get'.
-
-There seems to be some screw up:
-
-I have plenty of objects under .git/annex/objects/ (seems largely from
-the directory above), nothing is now reported by unused (with obscure
-msg):
-
-$> du -scmL * 2>/dev/null | tail -1
-1	total                      
-
-$> du -scm .git/annex/objects 
-334	.git/annex/objects
-334	total
-
-$> git annex dropunused all
-git-annex: Map.findMin: empty map has no minimal element
-
-Here is some portion of the history which lead to such a state (there
-was git annex unused somewhere before)
-
-25954  git annex move --unused --to onerussian.com_annex
-25955  git annex dropunused
-25956  git annex dropunused all
-25962  git annex unused
-25963  git log --stat -SSHA256E-s5639442--67691e57cb4d6c51afe838590ad265ba4bea9c291cf52d58ed24f05b70bf33bf.mp3
-25965  git log --stat -SSHA256E-s143042--b4012bf03ed0a387a9e714390efa75f1dd769162cca4c9b77e516732342be3f9.html
-25968  git annex move --unused --to onerussian.com_annex
-25969  git annex dropunused all
-25976  git annex unused
-25978  git br
-25980  git log --stat -Ss741707--7c215090893f1f0c994e2a9ad3088016676464bbad26768841dd08c07295a2fe.pdf.map
-25981  git annex unused
-25982  git annex fsck
-25983  git annex unused
-25984  git annex dropkey
-25985  git log --stat -SSHA256E-s14534131--20de680eedb3e1fb687c9b00c154d978333b61f4ea122c632bdb5bcdbb1553ff.pdf
-25986  git show de3ccae8304efbae4a7a8add49de638f64b821fc
-25991  git annex fsck
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
-
-> Tagged moreinfo since I have a workable theory about how this happened,
-> which would make it user configuration error and not a bug, but 
-> that has not been confirmed. --[[Joey]]
diff --git a/doc/bugs/can__39__t_get/comment_1_ef32287828481c161bd913c9db9052a5._comment b/doc/bugs/can__39__t_get/comment_1_ef32287828481c161bd913c9db9052a5._comment
deleted file mode 100644
--- a/doc/bugs/can__39__t_get/comment_1_ef32287828481c161bd913c9db9052a5._comment
+++ /dev/null
@@ -1,27 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="git annex fix starts fixing but then spits bulk of errors"
- date="2014-01-18T05:42:15Z"
- content="""
-probably related:
-
-```
-fix books/Мои первые книжки/PDF/Благинина Е.А. - Лодочки (Мои первые книжки) - 1962.pdf ok
-fix books/Мои первые книжки/PDF/Благинина Е.А. - Не мешайте мне трудиться (Мои первые книжки) - 1975.pdf fatal: This operation must be run in a work tree
-ok
-(Recording state in git...)
-
-git-annex: user error (xargs [\"-0\",\"git\",\"--git-dir=/home/yoh/annex/.git\",\"add\",\"--force\",\"--\"] exited 123)
-fatal: This operation must be run in a work tree
-failed
-(Recording state in git...)
-
-git-annex: user error (xargs [\"-0\",\"git\",\"--git-dir=/home/yoh/annex/.git\",\"add\",\"--force\",\"--\"] exited 123)
-fatal: This operation must be run in a work tree
-failed
-(Recording state in git...)
-
-....
-```
-"""]]
diff --git a/doc/bugs/can__39__t_get/comment_2_31fe400f4bac516a5c1101612cb06a54._comment b/doc/bugs/can__39__t_get/comment_2_31fe400f4bac516a5c1101612cb06a54._comment
deleted file mode 100644
--- a/doc/bugs/can__39__t_get/comment_2_31fe400f4bac516a5c1101612cb06a54._comment
+++ /dev/null
@@ -1,32 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="repair seems to be also confused"
- date="2014-01-18T05:47:02Z"
- content="""
-[[[
-$> git annex repair                               
-Running git fsck ...
-No problems found.
-fatal: '/home/yoh/annex/.git' is outside repository
-Had to delete the .git/annex/index file as it was corrupt.
-No data was lost.
-ok
-
-$> ls
-2enjoy/   2read/    2watch/  books/  hardware/  videos/
-2listen/  2review/  abooks/  docs/   pics/
-
-$> git annex repair
-Running git fsck ...
-No problems found.
-fatal: '/home/yoh/annex/.git' is outside repository
-Had to delete the .git/annex/index file as it was corrupt.
-No data was lost.
-ok
-
-$> git annex get 2read/ISNN2010__Tang.pdf
-git-annex: Cannot mix --all or --unused with file names.
-
-]]]
-"""]]
diff --git a/doc/bugs/can__39__t_get/comment_3_87d123c04815d38abb92f967829c3a23._comment b/doc/bugs/can__39__t_get/comment_3_87d123c04815d38abb92f967829c3a23._comment
deleted file mode 100644
--- a/doc/bugs/can__39__t_get/comment_3_87d123c04815d38abb92f967829c3a23._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="could it be part/reason of the problem"
- date="2014-01-18T06:05:50Z"
- content="""
-not sure how that happened... definitely not me consciously! ;-)  some commands are complaining that \"You cannot run this command in a bare repository\" which I thought is BS since it is not BARE! but then looked into .git/config and it does have core.bare = True ... yikes!.. 
-
-This repository is also under assistant \"control\".
-
-changing to bare=False seems to start 'get'ing things, git annex repair doesn't produce obscure errors.
-
-git annex fix though now doesn't report any problems -- only 'ok', but none of those files mentioned 'ok' has a working symlink,,,  but I guess that is a fluke after many upgrades -- just dropping everything locally and getting needed context after purging .git/annex/objects .
-
-So I guess issue is resolved by discovering that repository was set to 'bare' mode somehow although it was not and seemed like working but not quite
-"""]]
diff --git a/doc/bugs/can__39__t_get/comment_4_b99cff87dbe38f08f888200dfe7e2436._comment b/doc/bugs/can__39__t_get/comment_4_b99cff87dbe38f08f888200dfe7e2436._comment
deleted file mode 100644
--- a/doc/bugs/can__39__t_get/comment_4_b99cff87dbe38f08f888200dfe7e2436._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.43"
- subject="comment 4"
- date="2014-01-18T15:42:59Z"
- content="""
-git-annex sets core.bare=true for direct mode, but it also then sets annex.direct=true and so does not treat it as a bare mode repository. If you had eg, manually tried to change annex.direct to false, and left it in bare mode, that would explain everything.
-
-> git annex fix though now doesn't report any problems -- only 'ok', but none of those files mentioned 'ok' has a working symlink
-
-That is completely normal behavior; git annex fix does not care if the content is locally present or not; it just checks that the symlinks would point to it if it were present.
-
-(Fixed the partial function in dropunused.)
-"""]]
diff --git a/doc/bugs/cannot_add_a_files_with_an_accent_in_it.mdwn b/doc/bugs/cannot_add_a_files_with_an_accent_in_it.mdwn
deleted file mode 100644
--- a/doc/bugs/cannot_add_a_files_with_an_accent_in_it.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-### Please describe the problem.
-
-I cannot add a file that has an accent in its name. If I change the file name to not have accents, everything works.
-
-### What steps will reproduce the problem?
-
-- create a file with an accent in its name
-- "git annex status" shows the file is not checked in
-- "git annex add" the file
-- nothing happens, and "git annex status" still shows the file as not checked in
-
-### What version of git-annex are you using? On what operating system?
-
-% brew info git-annex
-git-annex: stable 5.20151218 (bottled), HEAD
-
-OS X 10.11.2
-
-### 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
-[schmitta@charm-ecran:~/Documents/annex on master]
-% git annex status
-[schmitta@charm-ecran:~/Documents/annex on master]
-% cat > é
-foo
-[schmitta@charm-ecran:~/Documents/annex on master]
-% git annex status                                                            ✭
-? é
-[schmitta@charm-ecran:~/Documents/annex on master]
-% git annex add é                                                             ✭
-[schmitta@charm-ecran:~/Documents/annex on master]
-% git annex status                                                            ✭
-? é
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Yes, git annex is great and I use it to store videos I want to watch later but that are too big to all be stored on my laptop.
diff --git a/doc/bugs/cannot_add_local_readonly_repo_through_the_webapp.mdwn b/doc/bugs/cannot_add_local_readonly_repo_through_the_webapp.mdwn
deleted file mode 100644
--- a/doc/bugs/cannot_add_local_readonly_repo_through_the_webapp.mdwn
+++ /dev/null
@@ -1,98 +0,0 @@
-### Please describe the problem.
-
-A readonly repository that I can add fine on the commandline (and sync content from) cannot be added through the webapp.
-
-### What steps will reproduce the problem?
-
-Say I have a readonly (owned by root) repository in `~/test/a` and I create a `~/test/b` (owned by my user). In the webapp, when to add `/home/anarcat/test/a` as a "local repository" (`Add another local repository`) to the `~/test/b` repo, it fails when i enter that path, with "Cannot write a repository there." I obviously can't sync content from there then.
-
-This works on the commandline, although with warnings.
-
-### What version of git-annex are you using? On what operating system?
-
-Version: 5.20140927 
-Build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-
-Debian Jessie.
-
-### Please provide any additional information below.
-
-Here's the transcript of the commandline equivalent:
-
-~~~
-anarcat@marcos:test$ git init a
-Dépôt Git vide initialisé dans /home/anarcat/test/a/.git/
-anarcat@marcos:test$ git init b
-Dépôt Git vide initialisé dans /home/anarcat/test/b/.git/
-anarcat@marcos:test$ cd a
-anarcat@marcos:a$ git annex init
-init  ok
-(Recording state in git...)
-anarcat@marcos:a$ echo hellow world > README
-anarcat@marcos:a$ git annex add README
-add README ok
-(Recording state in git...)
-anarcat@marcos:a$ git commit -m"test repo a"
-[master (commit racine) 3ece2a1] test repo a
- 1 file changed, 1 insertion(+)
- create mode 120000 README
-anarcat@marcos:a$ cd ../ ^C
-anarcat@marcos:a$ sudo chown -R root .
-[sudo] password for anarcat:
-Sorry, try again.
-[sudo] password for anarcat:
-anarcat@marcos:a$ cd ../b
-anarcat@marcos:b$ git annex init
-init  ok
-(Recording state in git...)
-anarcat@marcos:b$ git remote add a ../a
-anarcat@marcos:b$ git annex sync a
-commit  ok
-pull a
-warning: no common commits
-remote: Décompte des objets: 13, fait.
-remote: Compression des objets: 100% (9/9), fait.
-remote: Total 13 (delta 1), reused 0 (delta 0)
-Dépaquetage des objets: 100% (13/13), fait.
-Depuis ../a
- * [nouvelle branche] git-annex  -> a/git-annex
- * [nouvelle branche] master     -> a/master
-
-
-merge: refs/remotes/a/synced/master - not something we can merge
-failed
-(merging a/git-annex into git-annex...)
-(Recording state in git...)
-push a
-Décompte des objets: 8, fait.
-Delta compression using up to 2 threads.
-Compression des objets: 100% (6/6), fait.
-Écriture des objets: 100% (8/8), 819 bytes | 0 bytes/s, fait.
-Total 8 (delta 1), reused 0 (delta 0)
-remote: error: insufficient permission for adding an object to repository database objects
-remote: fatal: failed to write object
-error: unpack failed: unpack-objects abnormal exit
-To ../a
- ! [remote rejected] git-annex -> synced/git-annex (unpacker error)
- ! [remote rejected] master -> synced/master (unpacker error)
-error: impossible de pousser des références vers '../a'
-
-  Pushing to a failed.
-
-  (non-fast-forward problems can be solved by setting receive.denyNonFastforwards to false in the remote's git config)
-failed
-git-annex: sync: 2 failed
-anarcat@marcos:b$ ls
-README
-anarcat@marcos:b$ git annex copy --from a
-copy README (from a...) ok
-(Recording state in git...)
-anarcat@marcos:b$ ls -al
-total 16K
-drwxr-xr-x 3 anarcat anarcat 4096 oct.  20 15:36 .
-drwxr-xr-x 4 anarcat anarcat 4096 oct.  20 15:35 ..
-drwxr-xr-x 9 anarcat anarcat 4096 oct.  20 15:36 .git
-lrwxrwxrwx 1 anarcat anarcat  180 oct.  20 15:36 README -> .git/annex/objects/wz/Zq/SHA256E-s13--8c083c6897455257dfbace7a9012d92ca8ebfb6e6ebe8acddc6dfa8fc81226ed/SHA256E-s13--8c083c6897455257dfbace7a9012d92ca8ebfb6e6ebe8acddc6dfa8fc81226ed
-~~~
-
-This is part of the [[todo/read-only_removable_drives/]] series. --[[anarcat]]
diff --git a/doc/bugs/cannot_change_locale___40__en__95__US.UTF-8__41__.mdwn b/doc/bugs/cannot_change_locale___40__en__95__US.UTF-8__41__.mdwn
deleted file mode 100644
--- a/doc/bugs/cannot_change_locale___40__en__95__US.UTF-8__41__.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-### Please describe the problem.
-
-All git annex commands run successfully but are prefixed by an annoying error message:
-
-"/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)"
-
-
-### What steps will reproduce the problem?
-
-`git annex init` or just about any git annex command.
-
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20150710-g8fd7052 on arch linux 4.0.7-2.
-
-### Please provide any additional information below.
-
-# locale -a 
-C
-en_US
-en_US.iso88591
-en_US.utf8
-hebrew
-he_IL
-he_IL.iso88598
-he_IL.utf8
-POSIX
-
-> I've made LOCPATH not be set except when git-annex is built with ghc
-> older than 7.10, since the problem was fixed in ghc 7.10.
-> 
-> Also, I loved the LOCPATH setting into the linker shim script, rather
-> than in runshell, so it will only affect the programs bundled with
-> git-annex (itself and git and a few other things). Which are not
-> localized anyway in the bundle. So, even in builds where it's still set
-> (the linux ancient build in particular), things done in the runshell
-> environment won't be affected.
-> 
-> I do wonder if there could be problems with incompatabilities between the
-> bundled glibc and the system locale files, which might be for a
-> newer/older libc version. Not so much random `.mo` files, which seem
-> quite portable across glibc versions, but the more core locale files.
-> If that turns out to be a problem, LOCPATH might have to be turned back
-> on. 
-> 
-> For now, [[done]] --[[Joey]]
diff --git a/doc/bugs/cannot_remove___96__.t__96___directory.mdwn b/doc/bugs/cannot_remove___96__.t__96___directory.mdwn
deleted file mode 100644
--- a/doc/bugs/cannot_remove___96__.t__96___directory.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-### Please describe the problem.
-
-I am running `git-annex test`, it stops on an NFS mount with exhausted resources (too many open FDs).
-
-Then I try to remove the `.t` directory with `rm -rf .t` and get many errors like:
-
-```
-rm: cannot remove `.t/tmprepo61/.git/annex/objects/96/qw/SHA256E-s10--bcc2eba25d48be76c9d968f2d818196b0e10e13476dcff75371fc0ca4910450c/SHA256E-s10--bcc2eba25d48be76c9d968f2d818196b0e10e13476dcff75371fc0ca4910450c': Permission denied
-```
-
-The permissions on those files look normal (they are mine).
-
-### What steps will reproduce the problem?
-
-see above
-
-### What version of git-annex are you using? On what operating system?
-
-git HEAD (self-built). On Linux.
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-On /tmp the self-test works. Maybe it is related to NFS?
-
-> Turns out that git-annex was keeping files in .t open in some
-> circumstances after deleting them. I have fixed some of this. Possibly
-> not all. --[[Joey]]
diff --git a/doc/bugs/checksum_loads_whole_file_into_memory.mdwn b/doc/bugs/checksum_loads_whole_file_into_memory.mdwn
deleted file mode 100644
--- a/doc/bugs/checksum_loads_whole_file_into_memory.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Using eg, fsck with the MD5 backend loads whole files into memory.
-
-May only happen for very large files (40 gb) or in other specific
-circumstances, including ghc version used for buildd etc.
-
-Observed with 6.20160217-g95bbdb8, linux standalone amd64.
-
-Not observed with 5.20151218-g5008846.
-
-Commit 7482853ddddc21f2696dcfbc82d737f03032134a may be relevant,
-but I don't understand how yet. A small test program using the same
-code doesn't exhibit the problem, even when built in the identical build
-environment as the 6.20160217-g95bbdb8 that has the problem.
-
-> Update: Reverted 7482853ddddc21f2696dcfbc82d737f03032134a and indeed the
-> problem got fixed. But, reverting that commit breaks the test suite on
-> windows and has a FD leak, so is not desirable. This needs more
-> investigation. --[[Joey]]
-
->> I see it now, the checksum is a String and it was only forced to WHNF,
->> so the hashing didn't fully complete and the file got buffered.
->> Probably only occurred when fscking, and not when adding a file,
->> due to differing use patterns of the checksum.
->> [[fixed|done]] --[[Joey]] 
diff --git a/doc/bugs/concurrent_drop--from_presence_checking_failures.mdwn b/doc/bugs/concurrent_drop--from_presence_checking_failures.mdwn
deleted file mode 100644
--- a/doc/bugs/concurrent_drop--from_presence_checking_failures.mdwn
+++ /dev/null
@@ -1,398 +0,0 @@
-Concurrent dropping of a file has problems when drop --from is
-used. (Also when the assistant or sync --content decided to drop from a
-remote.)
-
-> Now [[fixed|done]] --[[Joey]]
-
-[[!toc]]
-
-# refresher
-
-First, let's remember how it works in the case where we're just dropping
-from 2 repos concurrently. git-annex uses locking to detect and prevent
-data loss:
-
-<pre>
-Two repos, each with a file:
-
-A (has)
-B (has)
-
-A wants from drop from A         B wants to drop from B
-A locks it                       B locks it
-A checks if B has it             B checks if A has it
-  (does, but locked, so fails)     (does, but locked, so fails)
-A fails to drop it               B fails to drop it
-
-The two processes are racing, so there are other orderings to
-consider, for example:
-
-A wants from drop from A        B wants to drop from B
-A locks it                     
-A checks if B has it (succeeds)
-A drops it from A               B locks it 
-                                B checks if A has it (fails)
-                                B fails to drop it
-
-Which is also ok.
-
-A wants from drop from A        B wants to drop from B
-A locks it                     
-A checks if B has it (succeeds)
-                                B locks it           
-                                B checks if A has it
-                                  (does, but locked, so fails)
-A drops it                      B fails to drop it
-
-Yay, still ok.
-</pre>
-
-Locking works in those cases to prevent concurrent dropping of a file.
-
-# the bug
-
-But, when drop --from is used, the locking doesn't work:
-
-<pre>
-Two repos, each with a file:
-
-A (has)
-B (has)
-
-A wants to drop from B                  B wants to drop from A
-A checks to see if A has it (succeeds)  B checks to see if B has it (succeeds)
-A tells B to drop it                    B tells A to drop it
-B locks it, drops it                    A locks it, drops it
-
-No more copies remain!
-</pre>
-
-Verified this one in the wild (adding an appropriate sleep to force the
-race).
-
-Best fix here seems to be for A to lock the content on A
-as part of its check of numcopies, and keep it locked
-while it's asking B to drop it. Then when B tells A to drop it,
-it'll be locked and that'll fail (and vice-versa).
-
-> Done, and verified the fix works in this situation.
-
-# the bug part 2
-
-<pre>
-Three repos; C might be a special remote, so w/o its own locking:
-
-A       C (has)
-B (has)
-
-A wants to drop from C         B wants to drop from B
-                               B locks it
-A checks if B has it           B checks if C has it (does)
- (does, but locked, so fails)  B drops it
-
-Copy remains in C. But, what if the race goes the other way?
-
-A wants to drop from C          B wants to drop from B
-A checks if B has it (succeeds)
-A drops it from C               B locks it
-                                B checks if C has it (does not)
-
-So ok, but then:
-
-A wants to drop from C          B wants to drop from B
-A checks if B has it (succeeds)
-                                B locks it
-                                B checks if C has it (does)
-A drops it from C               B drops it from B
-
-No more copies remain!
-</pre>
-
-To fix this, seems that A should not just check if B has it, but lock
-the content on B and keep it locked while A is dropping from C.
-This would prevent B dropping the content from itself while A is in the
-process of dropping from C.
-
-That would mean replacing the call to `git-annex-shell inannex`
-with a new command that locks the content.
-
-Note that this is analgous to the fix above; in both cases
-the change is from checking if content is in a location, to locking it in
-that location while performing a drop from another location.
-
-> Done, and verified the fix works in this situation.
-
-# the bug part 3 (where it gets really nasty)
-
-<pre>
-4 repos; C and D might be special remotes, so w/o their own locking:
-
-A      C (has)
-B      D (has)
-
-B wants to drop from C        A wants to drop from D
-B checks if D has it (does)   A checks if C has it (does)
-B drops from C                A drops from D
-
-No more copies remain!
-</pre>
-
-How do we get locking in this case?
-
-Adding locking to C and D is not a general option, because special remotes
-are dumb key/value stores; they may have no locking operations.
-
-## a solution: remote locking
-
-What could be done is, change from checking if the remote has content, to
-trying to lock it there. If the remote doesn't support locking, it can't
-be guaranteed to have a copy. Require N locked copies for a drop to
-succeed.
-
-So, drop --from would no longer be supported in these configurations.
-To drop the content from C, B would have to --force the drop, or move the
-content from C to B, and then drop it from B.
-
-### impact when using assistant/sync --content
-
-Need to consider whether this might cause currently working topologies
-with the assistant/sync --content to no longer work. Eg, might content
-pile up in a transfer remote?
-
-> The assistant checks after any transfer of an object if it should drop
-> it from anywhere. So, it gets/puts, and later drops.
-> Similarly, for sync --content, it first gets, then puts, and finally drops.
-
-> When dropping an object from remotes(s) + local, in `handleDropsFrom`,
-> it drops from local first. So, this would cause content pile-up unless
-> changed.
-> 
-> Also, when numcopies > 1, a toplogy like
-> `A(transfer) -- B(client) -- specials(backup)` would never be able to drop
-> the file from A, because the specials don't support locking and it can't
-> guarantee the content will remain on them.
-> 
-> One solution might be to make sync --content/the assistant generate
-> move operations, which can then ignore numcopies (like `move` does).
-> So, move from A to B and then copy to the specials. 
-> 
-> Using moves does lead to a decrease in robustness. For example, in
-> the topology `A(transfer) -- B(client) -- C (backup)`, with numcopies=2,
-> and C intermittently connected, the current
-> behavior with sync --content/assistant is for an object to reach B
-> and then later C, and only then be removed from A.
-> If moves were used, the object moves from A to B, and so there's only
-> 1 copy instead of the 2 as before, in the interim until C gets connected.
-
-## a solution: minimal remote locking
-
-This avoids needing to special case moves, and has 2 parts.
-
-### to drop from remote
-
-Instead of requiring N locked copies of content when dropping,
-require only 1 locked copy (either the local copy, or a git remote that
-can be locked remotely). Check that content is on the other N-1
-remotes w/o requiring locking (but use it if the remote supports locking).
-
-Unlike using moves, this does not decrease robustness, most of the time;
-barring the kind of race this bug is about, numcopies behaves as desired.
-When there is a race, some of the non-locked copies might be removed,
-dipping below numcopies, but the 1 locked copy remains, so the data is
-never entirely lost.
-
-Dipping below desired numcopies in an unusual race condition, and then
-doing extra work later to recover may be good enough.
-
-> Implemented, and I've now verified this solves the case above.
-> Indeed, neither drop succeeds, because no copy can be locked.
-
-### to drop from local repo
-
-When dropping an object from the local repo, lock it for drop,
-and then verify that N remotes have a copy 
-(without requiring locking on special remotes).
-
-So, this is done exactly as git-annex already does it.
-
-Like dropping from a remote, this can dip below numcopies in a race
-condition involving special remotes. 
-
-But, it's crucial that, despite the lack of locking of 
-content on special remotes, which may be the last copy,
-the last copy never be removed in a race. Is this the case?
-
-We can prove that the last copy is never removed 
-by considering shapes of networks.
-
-1. Networks only connected by single special
-   remotes, and not by git-git repo connections. Such networks are
-   essentially a collection of disconnected smaller networks, each 
-   of the form `R--S`
-2. Like 1, but with more special remotes. `S1--R--S2` etc.
-3. More complicated (and less unusal) are networks with git-git
-   repo connections, and no cycles.
-   These can have arbitrary special remotes connected in too.
-4. Finally, there can be a cycle of git-git connections.
-
-The overall network may be larger and more complicated, but we need only
-concern ourselves with the subset that has a particular object
-or is directly connected to that subset; the rest is not relevant.
-
-So, if we can prove local repo dropping is safe in each of these cases,
-it follows it's safe for arbitrarily complicated networks.
-
-Case 1:
-
-<pre>
-2 essentially disconnected networks, R1--S and R2--S
-
-R1 (has)   S (has)
-R1
-
-R1 wants to drop its local copy     R2 wants to move from S
-R1 locks its copy for drop          R2 copies from S
-R1 checks that S has a copy         R2 locks its copy
-R1 drops its local copy             R2 drops from S
-
-R1 expected S to have the copy, and due to a race with R2,
-S no longer had the copy it expected. But, this is not actually
-a problem, because the copy moved to R2 and so still exists. 
-
-So, this is ok!
-</pre>
-
-Case 2:
-
-<pre>
-2 essentially disconnected networks, S1--R1--S2 and S1--R2--S2
-
-R1(has)        S1 (has)
-R2(has)        S2 (has)
-
-R1 wants to move from S1 to S2    R2 wants to move from S2 to S1
-R1 locks its copy                 R2 locks its copy
-R1 checks that S2 has a copy      R2 checks that S1 has a copy
-R1 drops from S1                  R2 drops from S2
-
-R1 and R2 end up each with a copy still, so this is ok,
-despite S1 and S2 lacking a copy.
-
-If R1/R2 had not had a local copy, they could not have done a remote drop.
-</pre>
-
-(Adding more special remotes shouldn't change how this works.)
-
-Case 3:
-
-<pre>
-3 repos; B has A and C as remotes; A has C as remote; C is special remote.
-
-A (has)      C (has)
-B
-
-B wants to drop from C        A wants to drop from A
-B locks it on A
-B drops from C                A locks it on A for drop
-                                (fails; locked by B)
-B drops from C                A keeps its copy
-
-ok!
-
-or, racing the other way
-
-B wants to drop from C        A wants to drop from A
-                              A locks it on A for drop
-B locks it on A
-   (fails; locked by A)
-C keeps its copy              A drops its copy
-
-ok!
-</pre>
-
-Case 4:
-
-But, what if we have a cycle? The above case 3 also works if B and A are in a
-cycle, but what about a larger cycle?
-
-Well, a cycle necessarily involves only git repos, not special remotes.
-Any special remote can't be part of a cycle, because a special remote
-does not have remotes itself.
-
-As the remotes in the cycle are not special remotes, locking is done
-of content on remotes when dropping it from local or another remote.
-This locking ensures that even with a cycle, we're ok. For example:
-
-<pre>
-4 repos; D is special remote w/o its own locking, and the rest are git
-repos. A has remotes B,D; B has remotes C,D; C has remotes A,D
-
-A (has) D
-B (has)
-C (has)
-
-A wants to drop from A     B wants to drop from B     C wants to drop from C
-A locks it on A for drop   B locks it on B for drop   C locks it on C for drop
-A locks it on B            B locks it on C            C locks it on A
-  (fails; locked by B)      (fails; locked by C)       (fails; locked by A)
-
-Which is fine! But, check races..
-
-A wants to drop from A     B wants to drop from B     C wants to drop from C
-A locks it on A for drop                              C locks it on C for drop
-A locks it on B (succeeds)                            C locks it on A
-                           B locks it on B for drop       (fails; locked by A)
-                               (fails; locked by A)
-A drops                    B keeps                    C keeps
-
-It can race other ways, but they all work out the same way essentially,
-due to the locking.
-</pre>
-
-# the bug, with moves
-
-`git annex move --from remote` is the same as a copy followed by drop --from,
-so the same bug can occur then.
-
-But, the implementation differs from Command.Drop, so will also
-need some changes.
-
-Command.Move.toPerform already locks local content for removal before
-removing it, of course. So, that will interoperate fine with
-concurrent drops/moves. Seems fine as-is.
-
-Command.Move.fromPerform simply needs to lock the local content
-in place before dropping it from the remote. This satisfies the need
-for 1 locked copy when dropping from a remote, and so is sufficent to
-fix the bug.
-
-> done
-
-# drop ordering
-
-Consider the network: `T -- C --- (B1,B2)`
-
-When numcopies is 2, a file could start on T, get copied to C, and then on
-the B1 and B2. At which point, it can be dropped from C and T (if
-unwanted).
-
-Currently, the assistant and sync --content drop from the local repo 1st,
-and then from remotes. Before the changes to fix this bug, that worked;
-the content got removed from T and then from C, using the copies on B1 and
-B2 as evidence. Now though, if B1 and B2 are special remotes, once the copy
-is dropped from C, there is no locked copy available on (B1,B2), so the
-subsequent drop from T fails.
-
-Changing the drop order lets C lock its own copy in order to
-drop from T. then the local drop from C proceeds successfully without locking,
-as local drops don't need locking.
-
-Course, there is a behavior change here.. Before, if B2 didn't exist,
-the content would reach B2 and then be dropped from C, and then with only 2
-copies, it could not also be dropped from T. If the drop order changes, the
-content is instead dropped from T and left on C.
-
-The new behavior seems better when T is a transfer remote, but perhaps not in
-other cases.
-
-> implemented
diff --git a/doc/bugs/concurrent_git-annex_processes_can_lead_to_locking_issues.mdwn b/doc/bugs/concurrent_git-annex_processes_can_lead_to_locking_issues.mdwn
deleted file mode 100644
--- a/doc/bugs/concurrent_git-annex_processes_can_lead_to_locking_issues.mdwn
+++ /dev/null
@@ -1,53 +0,0 @@
-When two git-annex processes are running and both modifying the git-annex
-branch, it's possible one will fail due to git's locking. When this
-happens, git-annex has already recorded its state in the journal (so no
-data is lost), but git-annex does crash, which can be surprising.
-
-I feel that, in general, multiple git-annex processes should be able to run
-concurrently. A big lock around all commands, or even all
-repository-modifying commands is a bad idea. Also, it's probably best to
-only worry about locking conflicts editing the git-annex branch. While `git
-annex add` and a few other commands make changes to the main git repo,
-and can have similar locking issues, so can any git commands that stage
-changes (I think.. check).
-
-Probably should KISS. Just add a lock file that is taken before changes to
-the git-annex branch, and if it's locked, wait. Changes to the git-annex
-branch tend to happen quickly (unless it's committing an enormous set of
-changes, and even that is relatively fast), so waiting seems ok. --[[Joey]] 
-
-----
-
-Commit 7981eb4cb512fbe3c49a3dd165c31be14ae4bc49 is more pessimistic, 
-describes some other potential issues. 
-
-* The journal needs to be emptied (done) and kept locked (not done) during
-  a merge, since a merge operates at a level below the journal, and any
-  changes that are journaled during a merge can overwrite changes merged
-  in from another branch.
-
-* Two git-annex processes can be doing conflicting things and inconsistent
-  information be written to the journal.
-
-  - One example would be concurrent get and drop of the same key.
-    But could this really race? If the key was already present, the get
-    would do nothing, so record no changes. If the key was not yet present,
-    the drop would do nothing, and record no changes.
-
-  - Instead, consider two copys of a key to different locations. If the
-    slower copy starts first and ends last, it could cache the location 
-    info, add the  new location, and lose the other location it was copied to.
-    Tested it and the location is not cached during the whole copy (logChange
-    reads the current log immediatly before writing), so this
-    race's window is very small -- but does exist.
-
----- 
-
-## Updated plan
-
-Make Branch.change transactional, so it takes a lock, reads a file,
-applies a function to it, and writes the changed file.
-
-Make Branch.update hold the same lock.
-
-> [[Done]].
diff --git a/doc/bugs/confirmed.mdwn b/doc/bugs/confirmed.mdwn
deleted file mode 100644
--- a/doc/bugs/confirmed.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-This tag is for bugs that have been confirmed to be real bugs, and so are likely
-to be the next bugs fixed.
-
-If your bug report is not tagged as confirmed, you probably need to provide more
-information so that the bug can be reproduced.
diff --git a/doc/bugs/corrupt_backend_upon_sync__63__.mdwn b/doc/bugs/corrupt_backend_upon_sync__63__.mdwn
deleted file mode 100644
--- a/doc/bugs/corrupt_backend_upon_sync__63__.mdwn
+++ /dev/null
@@ -1,78 +0,0 @@
-### Please describe the problem.
-
-When syncing with a remote, I get some files with "unknown backend".
-
-Original:
-
-    $ ls -lh Pictures/2014/06/21/2014-06-21\ 13.52.34.png
-    lrwxrwxrwx 1 jean jean 214 Jun 21  2014 Pictures/2014/06/21/2014-06-21 13.52.34.png -> ../../../../.git/annex/objects/mx/Ff/SHA256E-s247069--d425c1049778880eb9b9fcab74a82ec86dd22882db9c026f8fc0e9cb6270d022.34.png/SHA256E-s247069--d425c1049778880eb9b9fcab74a82ec86dd22882db9c026f8fc0e9cb6270d022.34.png
-
-This picture and symlink is fine.
-
-Remote (broken symlink):
-
-    $ ls -lh Pictures/2014/06/21/2014-06-21\ 13.52.34.png
-    lrwxrwxrwx 1 jean jean 214 Apr  6 12:50 Pictures/2014/06/21/2014-06-21 13.52.34.png -> ./../../.git/annex/objects/mx/Ff/SHA256E-s247069--d425c134ac2f9b0eb9b9fcab74a82ec86dd22882db9c026f8fc0e9cb6270d022.34.pn0.png/SHE-s247069--d425c1049778880eb9b9fcab74a82ec86dd22882db9c09efe84ca9cb6270d022.34.png
-
-In this case the paths differ: there is an extra `.pn0` component, and the final `SHA256E` has changed to `SHE`.
-
-### What steps will reproduce the problem?
-
-I don't know yet.
-
-### What version of git-annex are you using? On what operating system?
-
-    $ git annex version
-    git-annex version: 5.20140412ubuntu1
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-Ubuntu 14.04.1 LTS
-
-### 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
-
-$ git annex info
-repository mode: indirect
-trusted repositories: 0
-semitrusted repositories: 6
-        00000000-0000-0000-0000-000000000001 -- web
-        ...
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 168.35 gigabytes (+1 megabyte reserved)
-local annex keys: 16503
-local annex size: 39.15 gigabytes
-annexed files in working tree:
-  skipping Pictures/2014/06/21/2014-06-21 13.52.34.png (unknown backend SHE)
-
-  skipping Pictures/2014/06/21/2014-06-21 13.52.45.png (unknown backend SHE)
-
-  skipping Pictures/2014/06/21/2014-06-21 13.58.03.png (unknown backend SHA256EE)
-104552
-size of annexed files in working tree: 124.64 gigabytes
-bloom filter size: 16 mebibytes (3.3% full)
-backend usage:
-        SHA256E: 121054
-        SHA256: 1
-
-$ git annex get --from=laptop
-
-  skipping Pictures/2014/06/21/2014-06-21 13.52.34.png (unknown backend SHE)
-
-  skipping Pictures/2014/06/21/2014-06-21 13.52.45.png (unknown backend SHE)
-
-  skipping Pictures/2014/06/21/2014-06-21 13.58.03.png (unknown backend SHA256EE)
-
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/creating_a_plain_directory_where_a_mountpoint_should_have_been.mdwn b/doc/bugs/creating_a_plain_directory_where_a_mountpoint_should_have_been.mdwn
deleted file mode 100644
--- a/doc/bugs/creating_a_plain_directory_where_a_mountpoint_should_have_been.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-### Please describe the problem.
-
-This is a one-off thing, not a reproducible bug.  It was just so weird that I wanted to make a note of it in case somebody else had the same problem and it was reproducible.
-
-I have a remote on the a USB drive which I mount once in a while on /Volumes/TOSHIBAEXT which has a remote on /Volumes/TOSHIBAEXT/annex.   It's a remote which I created by hand using "git clone" a long time ago, not something the assistant set up for me.
-
-Anyway, today the assistant kept reporting that it could not sync to it.  I didn't know why, because I checked in my Finder sidebar and it showed a mounted drive called TOSHIBAEXT.  It's only when I checked with the command line that I noticed something was up!  There was now an ordinary directory at /Volumes/TOSHIBAEXT/annex.   This had apparently been created at some point when the drive was unmounted, so when it re-mounted, because there was a directory in the way, it re-mounted at "/Volumes/TOSHIBAEXT 1".  But it was displayed in the finder sidebar as just "TOSHIBAEXT" anyway because the finder hides this workaround from the user for whatever reason.
-
-Presumably git-annex assistant at some point, for some reason, created an ordinary directory where it expected to find the annex.
-
-I wonder if this may have to do with the fact that this is a non-bare, created-by-hand repo, from before I was using the assistant, not a normal bare remote that the assistant would have created for me if I'd been using the webapp.
-
-### What steps will reproduce the problem?
-
-I've only seen it once, and report the bug not as an outstanding issue but only as a heads-up that this has ever happened.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 4.20130501-gb61740e
-
-OS X lion (10.7)
-
-### Please provide any additional information below.
-
-I wasn't logging when this happened.
-
-Again, just a heads-up; I'll keep my eye open for this happening again and post more info if it does.
-
-[[!tag confirmed]]
diff --git a/doc/bugs/creating_a_remote_server_repository.mdwn b/doc/bugs/creating_a_remote_server_repository.mdwn
deleted file mode 100644
--- a/doc/bugs/creating_a_remote_server_repository.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-What steps will reproduce the problem?
-
-I was trying to add a remote server repository. Unfortunately, this didn't work. Enter Host name, user name, directory, port
-(left most of them at their default), but there is no way, to specify a password.) Clicking check this server failed:
-
- Failed to ssh to the server. Transcript: Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password). 
-
-(Problem was, I could never enter a password. Interestingly, on the konsole, I get a prompt for a password, but I can't enter anything there).
-
-
-What is the expected output? What do you see instead?
-
-Successfully create a connection and use the remote server.
-
-
-What version of git-annex are you using? On what operating system?
-Version: 3.20130124
-
-
-
-Please provide any additional information below.
-
-[[!tag /design/assistant done]]
-[[!meta title="ssh password prompting issue with assistant"]]
diff --git a/doc/bugs/debian__47__rules_clean_fails_with_with_cabal_not_found.mdwn b/doc/bugs/debian__47__rules_clean_fails_with_with_cabal_not_found.mdwn
deleted file mode 100644
--- a/doc/bugs/debian__47__rules_clean_fails_with_with_cabal_not_found.mdwn
+++ /dev/null
@@ -1,68 +0,0 @@
-### Please describe the problem.
-
-Adding BUILDER=stack support in 441573a9 breaks building debian based packages.
-
-### What steps will reproduce the problem?
-
-[[!format sh """
-$ debian/rules clean
-dh clean
-   dh_testdir
-   dh_auto_clean
-        make -j1 clean
-make[1]: Entering directory '/home/jtgeibel/repos/launchpad.net/git-annex'
-debian/cabal-wrapper clean
-debian/cabal-wrapper: 14: debian/cabal-wrapper: cabal: not found
-Makefile:101: recipe for target 'clean' failed
-make[1]: *** [clean] Error 127
-make[1]: Leaving directory '/home/jtgeibel/repos/launchpad.net/git-annex'
-dh_auto_clean: make -j1 clean returned exit code 2
-debian/rules:12: recipe for target 'clean' failed
-make: *** [clean] Error 2
-"""]]
-
-### What version of git-annex are you using? On what operating system?
-
-6.20160114 (Ubuntu wily & trusty)
-
-### Please provide any additional information below.
-
-I've patched this locally as follows.  In the Makefile I've assumed that both cabal and stack support a clean command.
-
-[[!format patch """
-diff --git a/Makefile b/Makefile                                                                                                                              
-index 342152c..977855a 100644                                                                                                                                               
---- a/Makefile                                                                                                                                                              
-+++ b/Makefile                                                                                                                                                              
-@@ -98,7 +98,7 @@ docs: mans                                                                                                                                                                 
-                --exclude='users/*' --exclude='devblog/*' --exclude='thanks'                                                                                                                 
-                                                                                                                                                                                             
- clean:                                                                                                                                                                                      
--       $(BUILDER) clean                                                                                                                                                                     
-+       if [ "$(BUILDER)" != ./Setup ]; then $(BUILDER) clean; fi                                                                                                                            
-        rm -rf tmp dist git-annex $(mans) configure  *.tix .hpc \                                                                                                                            
-                doc/.ikiwiki html dist tags Build/SysConfig.hs \                                                                                                                             
-                Setup Build/InstallDesktopFile Build/EvilSplicer \                                                                                                                                                
-diff --git a/debian/rules b/debian/rules
-index e6ee592..3345fee 100755
---- a/debian/rules
-+++ b/debian/rules
-@@ -1,6 +1,6 @@
- #!/usr/bin/make -f
- 
--export BUILDER=debian/cabal-wrapper
-+export BUILDER=./Setup
- 
- STANDALONE_BUILD=$(shell grep -qe '^Package: git-annex-standalone' debian/control \
-                          && echo 1 || echo 0)
-"""]]
-
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-git-annex has been a great way for me to explore both Haskell and software packaging.
-
-I enjoyed the interview on LWN.
-
-> I don't think this is a bug, I think build dependencies were not
-> installed when building the package. [[done]] --[[Joey]]
diff --git a/doc/bugs/detox___34__destroys__34___annex.mdwn b/doc/bugs/detox___34__destroys__34___annex.mdwn
deleted file mode 100644
--- a/doc/bugs/detox___34__destroys__34___annex.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-### Please describe the problem.
-
-I accidentally (entirely my fault!) ran detox (batch file renamer to eliminate spaces etc.) on a git-annex dir.
-Alas detox substitutes every "--" with "-", thus "destroying" the annex.
-Of course the objects are still there, just renamed so that the symlinks become broken.
-
-I solved it by copying the objects back from my backup (I have many rsynced backups) since I was too lazy to write a script to rename all the files...
-
-A good solution would be to provide a general script (or there is one already?) to try to recover situations like this one, maybe using shatag to identify data objects.
-
-### What steps will reproduce the problem?
-
-Just run detox -vr (verbose, recursive) on an annex
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150819+g
-
-Linux
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
-I currently have about a dozen annexes, local and remote (nfs, git), no other big problem apart from lack of speed when syncing
-
-> Closing since I don't see how any changes to git-annex can prevent this
-> kind of problem. [[done]] --[[Joey]]
diff --git a/doc/bugs/direct_command_leaves_repository_inconsistent_if_interrupted.mdwn b/doc/bugs/direct_command_leaves_repository_inconsistent_if_interrupted.mdwn
deleted file mode 100644
--- a/doc/bugs/direct_command_leaves_repository_inconsistent_if_interrupted.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-### Please describe the problem.
-
-When `git annex direct` is interrupted (either through a power outage or deliberate `control-c`) it may leave the repository in an inconsistent state.
-
-A typical situation is `git-annex` believing that the repo is in `indirect` mode while the files are not symlinks anymore.
-
-I believe I have described this problem here before, but the bug report was deleted as part of the may 29th purge (222f78e9eadd3d2cc40ec94ab22241823a7d50d9,  [[bugs/git_annex_indirect_can_fail_catastrophically]]).
-
-### What steps will reproduce the problem?
-
-`git annex direct` on a large repository, `control-c` before it finishes.
-
-Observe how a lot of files are now considered to be in the famous [[typechange status|forum/git-status_typechange_in_direct_mode/]] in git.
-
-### What version of git-annex are you using? On what operating system?
-
-5.20140717 on Debian Jessie, ext4 filesystem.
-
-### Please provide any additional information below.
-
-I wish i could resume the `git annex direct` command, but this will do a `git commit -a` and therefore commit all those files to git directly. It still seems to me that `git annex` should never run `git commit -a` for exactly that kind of situations.
-
-I think that's it for now. -- [[anarcat]]
-
-Update: i was able to get rid of the `typechange` situation by running `git annex lock` on the repository, but then all files are found to be missing by `git annex fsck`:
-
-[[!format txt """
-fsck films/God Hates Cartoons/VIDEO_TS/VTS_15_0.BUP (fixing location log)
-  ** Based on the location log, films/God Hates Cartoons/VIDEO_TS/VTS_15_0.BUP
-  ** was expected to be present, but its content is missing.
-
-  Only 1 of 2 trustworthy copies exist of films/God Hates Cartoons/VIDEO_TS/VTS_15_0.BUP
-  Back it up with git-annex copy.
-"""]]
-
-Oddly enough, the repo still uses hundreds of gigs, because all the files ended up in `.git/annex/misctmp`. Not sure I remember what happened there.
-
-Similar issues and discussions:
-
-* [[bugs/direct_mode_merge_interrupt/]]
-* [[forum/Cleaning_up_after_aborted_sync_in_direct_mode/]]
-* [[bugs/failure_to_return_to_indirect_mode_on_usb/]]
-* [[forum/git-status_typechange_in_direct_mode/]]
-
-[[!meta title="git annex lock --force deletes only copy of content after interrupted switch to direct mode"]
-
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/bugs/direct_cripple_mode_crippled_my_other_non-crippled_repos.mdwn b/doc/bugs/direct_cripple_mode_crippled_my_other_non-crippled_repos.mdwn
deleted file mode 100644
--- a/doc/bugs/direct_cripple_mode_crippled_my_other_non-crippled_repos.mdwn
+++ /dev/null
@@ -1,299 +0,0 @@
-### Please describe the problem.
-
-I am trying to setup a repo on my external music player, a Nokia N900
-device. It appears as a `vfat` filesystem from the outside, so
-git-annex see it as a "crippled filesystem" and sets up direct mode
-appropriately.
-
-The problem is that for some weird reason, the checkout somewhat fails
-and i'm left with a basically emptied repo. The next `sync` commits
-the removal of all files, and happily pushes that to the other repos,
-pretty much irreversibly, unless i start fiddling with the git
-history.
-
-What's going on?
-
-It seems the problem is because i setup my remote repo from scratch,
-because doing a checkout fails, because the crippled filesystem
-doesn't support files with:
-
-* colons (`:`)
-* question marks (`?`)
-* backslashes (`\`)
-* double quotes (`"`)
-* stars (`*`)
-* irregular encoding (i.e. non-UTF8)
-
-I have found the following tools to be useful to cleanup the filesystem:
-
-* [convmv](http://tracker.debian.org/convmv) can massively re-encode filenames and may also be able to fix all the issues above, but i didn't test that
-* [rename](http://tracker.debian.org/rename) can massively rename files according to certain patterns, I have used:
-
-      rename 's/\?//' *
-      rename 's/://' *
-      rename 's/\\//' *
-      rename 's/"//' *
-      rename 's/*//' *
-      git add -A .
-
-Similar issues:
-
-* windows bugs:
-  * [[bugs/Can__39__t_clone_on_Windows_because_some_filenames_have_a_colon_in_them/]]
-  * [[bugs/Windows:_can__39__t_clone_repository/]]
-* more general feature request:
-  [[forum/Wishlist:_rename_files__47__dirs_w__47___special_characters_if_filesystem_is_FAT/]]
-
-The above issue specifically request that files with "special" characters be supported in vFAT or even Windows, but here is a different issue: I am worried about potential data loss and lack of anti-foot-shooting device in case a user adds an external hard drive or USB key that are widely formatted as vFAT and then triggers destruction of all files (after garbage collection).
-
-### What steps will reproduce the problem?
-
-<pre>
-git init nokia-n900/repo
-cd nokia-n900/repo
-git annex init
-git remote add /srv/mp3
-git annex sync # sets up a synced/master branch with no files on the remote repo
-cd /srv/mp3
-git annex sync # commits the removal of all files
-</pre>
-
-I didn't expect that to fail: a test run here doesn't delete files on /srv/mp3...
-
-### What version of git-annex are you using? On what operating system?
-
-5.20141125, debian jessie.
-
-### Please provide any additional information below.
-
-Complete trace:
-
-[[!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
-
-[986]anarcat@marcos:~130$ cd /media/anarcat/Nokia\ N900/.sounds/
-
-[1026]anarcat@marcos:.sounds130$ git init mp3-test
-Dépôt Git vide initialisé dans /media/anarcat/Nokia N900/.sounds/mp3-test/.git/
-[1027]anarcat@marcos:.sounds$ cd mp3-test
-[1028]anarcat@marcos:mp3-test$ git annex init
-init
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-
-  Detected a crippled filesystem.
-
-  Enabling direct mode.
-ok
-(Recording state in git...)
-[1029]anarcat@marcos:mp3-test$ git remote add origin /srv/mp3
-[1030]anarcat@marcos:mp3-test$ git annex sync
-commit  ok
-pull origin
-warning: no common commits
-remote: Décompte des objets: 721895, fait.
-remote: Compression des objets: 100% (194286/194286), fait.
-remote: Total 721895 (delta 565247), reused 660087 (delta 526635)
-Réception d'objets: 100% (721895/721895), 53.76 MiB | 5.45 MiB/s, fait.
-Résolution des deltas: 100% (565247/565247), fait.
-Depuis /srv/mp3
- * [nouvelle branche] git-annex  -> origin/git-annex
- * [nouvelle branche] master     -> origin/master
- * [nouvelle branche] synced/git-annex -> origin/synced/git-annex
- * [nouvelle branche] synced/master -> origin/synced/master
-
-error: unable to create file Dri/Dirty Rotten LP/04 -  Why?.mp3 (Argument invalide)
-error: unable to create file Dri/Dirty Rotten LP/07 -  Who Am I?.mp3 (Argument invalide)
-error: unable to create file Dysrhythmia/Barriers and Passages/10 - Will the Spirit Prevail?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 06 - How Long Has This Been Going On?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 10 - What Is There to Say?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 19 - Baby, What Else Can I Do?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/The Best of The Song Books/Ella Fitzgerald - The Best of The Song Books - 14 - Why Was I Born? (Jan 6, 1963 in L.A.).ogg (Argument invalide)
-error: unable to create file Fantomas/Fantomas/01 - Book 1: Page 1.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/02 - Book 1: Page 2.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/03 - Book 1: Page 3.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/04 - Book 1: Page 4.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/05 - Book 1: Page 5.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/06 - Book 1: Page 6.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/07 - Book 1: Page 7.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/08 - Book 1: Page 8.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/09 - Book 1: Page 9.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/10 - Book 1: Page 10.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/11 - Book 1: Page 11.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/12 - Book 1: Page 12.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/13 - Book 1: Page 13.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/14 - Book 1: Page 14.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/15 - Book 1: Page 15.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/16 - Book 1: Page 16.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/17 - Book 1: Page 17.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/18 - Book 1: Page 18.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/19 - Book 1: Page 19.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/20 - Book 1: Page 20.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/21 - Book 1: Page 21.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/22 - Book 1: Page 22.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/23 - Book 1: Page 23.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/24 - Book 1: Page 24.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/25 - Book 1: Page 25.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/26 - Book 1: Page 26.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/27 - Book 1: Page 27.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/28 - Book 1: Page 28.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/29 - Book 1: Page 29.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/30 - Book 1: Page 30.mp3 (Argument invalide)
-error: unable to create file Fantomas/The Director's Cut/11 - Henry: Portrait Of A Serial Ki.mp3 (Argument invalide)
-error: unable to create file Fantomas/The Director's Cut/15 - Twin Peaks: Fire Walk With Me.mp3 (Argument invalide)
-error: unable to create file Fantomas/The Director's Cut/Fant�mas - The Director's Cut.m3u (Argument invalide)
-error: unable to create file Francois Perusse/Parodie "La Fureur".mp3 (Argument invalide)
-error: unable to create file Frank zappa/Fillmore East, June 1971/Frank Zappa & The Mothers Of Invention - Fillmore East, June 1971 - 03 - What Kind Of Girl Do You Think We Are?.ogg (Argument invalide)
-error: unable to create file Frank zappa/Fillmore East, June 1971/Frank Zappa & The Mothers Of Invention - Fillmore East, June 1971 - 07 - Do You Like My New Car?.ogg (Argument invalide)
-fatal: cannot create directory at 'Frank zappa/Joe's Garage: Acts I, II & III': Argument invalide
-failed
-(merging origin/git-annex into git-annex...)
-(Recording state in git...)
-push origin
-Décompte des objets: 6, fait.
-Delta compression using up to 2 threads.
-Compression des objets: 100% (5/5), fait.
-Écriture des objets: 100% (6/6), 700 bytes | 0 bytes/s, fait.
-Total 6 (delta 2), reused 1 (delta 0)
-To /srv/mp3
-   26fc58f..63cfaf8  git-annex -> synced/git-annex
-   76ec411..8458b14  annex/direct/master -> synced/master
-ok
-git-annex: sync: 1 failed
-[1052]anarcat@marcos:annex$ git annex sync
-commit  ok
-pull origin
-ok
-push origin
-Everything up-to-date
-ok
-# End of transcript or log.
-"""]]
-
-Now on the remote repo, it destroys everything:
-
-<pre>
-$ cd /srv/mp3
-$ git annex sync
-[ backlog lost, because of the sheer number of files deleted ]
-$ git diff --stat 91fda32 | tail -1
- 21923 files changed, 21923 deletions(-)
-$ # 91fda32 is the last known good commit on the master branch there
-</pre>
-
-Boom! Doing the following restores some sanity:
-
-<pre>
-$ git reset --hard 91fda32
-$ git branch -D synced/master
-$ git annex sync
-</pre>
-
-On the direct repo, now sync doesn't destroy anything, but then again,
-there are no files either. Eventually, after enough `sync` commands,
-the destruction will return...
-
-A clone also fails similarly, which is why i was trying with the
-"clean init" approach:
-
-<pre>
-[1032]anarcat@marcos:.sounds$ git clone /srv/mp3 mp3-clone
-Clonage dans 'mp3-clone'...
-fait.
-error: unable to create file Dri/Dirty Rotten LP/04 -  Why?.mp3 (Argument invalide)
-error: unable to create file Dri/Dirty Rotten LP/07 -  Who Am I?.mp3 (Argument invalide)
-error: unable to create file Dysrhythmia/Barriers and Passages/10 - Will the Spirit Prevail?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 06 - How Long Has This Been Going On?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 10 - What Is There to Say?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 19 - Baby, What Else Can I Do?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/The Best of The Song Books/Ella Fitzgerald - The Best of The Song Books - 14 - Why Was I Born? (Jan 6, 1963 in L.A.).ogg (Argument invalide)
-Extraction des fichiers:  24% (5433/21923)
-[...]
-[1036]anarcat@marcos:.sounds130$ git clone /srv/mp3 mp3-clone
-Clonage dans 'mp3-clone'...
-fait.
-error: unable to create file Dri/Dirty Rotten LP/04 -  Why?.mp3 (Argument invalide)
-error: unable to create file Dri/Dirty Rotten LP/07 -  Who Am I?.mp3 (Argument invalide)
-error: unable to create file Dysrhythmia/Barriers and Passages/10 - Will the Spirit Prevail?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 06 - How Long Has This Been Going On?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 10 - What Is There to Say?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/Pure Ella/Ella Fitzgerald - Pure Ella - 19 - Baby, What Else Can I Do?.ogg (Argument invalide)
-error: unable to create file Ella Fitzgerald/The Best of The Song Books/Ella Fitzgerald - The Best of The Song Books - 14 - Why Was I Born? (Jan 6, 1963 in L.A.).ogg (Argument invalide)
-error: unable to create file Fantomas/Fantomas/01 - Book 1: Page 1.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/02 - Book 1: Page 2.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/03 - Book 1: Page 3.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/04 - Book 1: Page 4.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/05 - Book 1: Page 5.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/06 - Book 1: Page 6.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/07 - Book 1: Page 7.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/08 - Book 1: Page 8.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/09 - Book 1: Page 9.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/10 - Book 1: Page 10.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/11 - Book 1: Page 11.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/12 - Book 1: Page 12.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/13 - Book 1: Page 13.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/14 - Book 1: Page 14.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/15 - Book 1: Page 15.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/16 - Book 1: Page 16.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/17 - Book 1: Page 17.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/18 - Book 1: Page 18.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/19 - Book 1: Page 19.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/20 - Book 1: Page 20.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/21 - Book 1: Page 21.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/22 - Book 1: Page 22.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/23 - Book 1: Page 23.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/24 - Book 1: Page 24.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/25 - Book 1: Page 25.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/26 - Book 1: Page 26.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/27 - Book 1: Page 27.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/28 - Book 1: Page 28.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/29 - Book 1: Page 29.mp3 (Argument invalide)
-error: unable to create file Fantomas/Fantomas/30 - Book 1: Page 30.mp3 (Argument invalide)
-error: unable to create file Fantomas/The Director's Cut/11 - Henry: Portrait Of A Serial Ki.mp3 (Argument invalide)
-error: unable to create file Fantomas/The Director's Cut/15 - Twin Peaks: Fire Walk With Me.mp3 (Argument invalide)
-error: unable to create file Fantomas/The Director's Cut/Fant�mas - The Director's Cut.m3u (Argument invalide)
-error: unable to create file Francois Perusse/Parodie "La Fureur".mp3 (Argument invalide)
-error: unable to create file Frank zappa/Fillmore East, June 1971/Frank Zappa & The Mothers Of Invention - Fillmore East, June 1971 - 03 - What Kind Of Girl Do You Think We Are?.ogg (Argument invalide)
-error: unable to create file Frank zappa/Fillmore East, June 1971/Frank Zappa & The Mothers Of Invention - Fillmore East, June 1971 - 07 - Do You Like My New Car?.ogg (Argument invalide)
-fatal: cannot create directory at 'Frank zappa/Joe's Garage: Acts I, II & III': Argument invalide
-warning: Le clone a réussi, mais l'extraction a échoué.
-Vous pouvez inspecter ce qui a été extrait avec 'git status'
-et réessayer l'extraction avec 'git checkout -f HEAD'
-</pre>
-
-Besides, `clone` creates actually seems to create and transfer all the files and setup direct mode (!?), which takes up too much space on this external drive...
-
-Interestingly, i have managed to clone the repo by cleaning up a lot of space and fixing the above errors. Interestingly, the git clone is only 2GB while the original repo is closer to 110GB. There's nevertheless a bunch of files checked out, and obviously, enabling git-annex on the repo gives the predictable:
-
-<pre>
-$ git annex sync
-
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-
-  Detected a crippled filesystem.
-
-  Enabling direct mode.
-git-annex: /media/anarcat/Nokia N900/.sounds/mp3-clone/.git/annex/objects/cec/e45/SHA256E-s3547512--6d0b48b144ba58cf649134c7b4d6597f4e0c5f319302f1c109d0967f22af607a.mp3: createDirectory: resource exhausted (No space left on device)
-</pre>
-
-... and leaves the repo in an inconsistent state again. Also note that the above took over 2 hours of wall clock time before failing.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Git-annex has been my bread and butter for a few months in the past
-year. I absolutely love it and it generally makes my life much easier
-when dealing with large files. Direct mode sometimes drives me nuts,
-but it certainly is more the fault to the damn crippled filesystems
-than git-annex's fault for sure. :)
-
-Arguably, the above problems are partly due to me assuming that
-git-annex will work well on crippled filesystems, regardless of my
-dataset, which maybe an inaccurate assumption.
-
-Thanks for all your hard work! --[[anarcat]]
-
-> [[fixed|done]]
diff --git a/doc/bugs/direct_mode_fails__44___left_in_an_inconsistent_state.mdwn b/doc/bugs/direct_mode_fails__44___left_in_an_inconsistent_state.mdwn
deleted file mode 100644
--- a/doc/bugs/direct_mode_fails__44___left_in_an_inconsistent_state.mdwn
+++ /dev/null
@@ -1,61 +0,0 @@
-### Please describe the problem.
-
-Running `git annex direct` in a repository may results with the following error message:
-
-    git-annex: /home/mildred/Music/.git/annex/objects/2K/49/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.map898.tmp: rename: permission denied (Permission denied)
-failed
-    git-annex: direct: 1 failed
-
-
-The major problem is that git-annex doesn't roll back the changes it did for the files it could successfully put in direct mode. Running git status show many files with typechange. The solution was to run `git add` on those files (although the hashing backend changed, so a commit must be created)
-
-### What steps will reproduce the problem?
-
-Don't know yet why the rename failed, but the direct mode should be rolled back if there is a problem. Restarting `git-annex direct` didn't result in an error.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex 5.20140405-g8729abc
-arch-linux Linux moiraine 3.15.3-1-ARCH #1 SMP PREEMPT Tue Jul 1 07:32:45 CEST 2014 x86_64 GNU/Linux
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-$ git annex direct
-commit  
-(Recording state in git...)
-On branch master
-nothing to commit, working directory clean
-ok
-direct .gitrefs/heads/annex/direct/master ok
-direct .gitrefs/heads/git-annex ok
-direct .gitrefs/heads/master ok
-direct .gitrefs/heads/synced/master ok
-direct .gitrefs/remotes/ashley/git-annex ok
-direct .gitrefs/remotes/ashley/master ok
-direct .gitrefs/remotes/ashley/synced/git-annex ok
-direct .gitrefs/remotes/ashley/synced/master ok
-direct .gitrefs/remotes/kylae/git-annex ok
-direct .gitrefs/remotes/kylae/master ok
-direct .gitrefs/remotes/kylae/synced/git-annex ok
-direct ... ok
-direct ... ok
-direct ... ok
-  /home/mildred/Music/.git/annex/objects/2K/49/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.map897.tmp: rename: permission denied (Permission denied)
-
-  leaving this file as-is; correct this problem and run git annex fsck on it
-direct ... ok
-direct ... ok
-direct ... ok
-direct ... ok
-direct ... ok
-
-git-annex: /home/mildred/Music/.git/annex/objects/2K/49/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.map898.tmp: rename: permission denied (Permission denied)
-failed
-git-annex: direct: 1 failed
-
-"""]]
-
-[[!tag moreinfo]]
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/bugs/direct_mode_merge_interrupt.mdwn b/doc/bugs/direct_mode_merge_interrupt.mdwn
deleted file mode 100644
--- a/doc/bugs/direct_mode_merge_interrupt.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-Seems to me there is a bug in how merges are done in direct mode. This is
-done in two steps:
-
-1. Merge the remote branch into the local branch, with work tree directed
-   to a temp dir.
-2. Use the temp dir and the newly merged branch to update the work tree.
-
-If this is interrupted between 1 and 2, by eg the user ctrl-Cing or power
-being lost, the result is a repository that thinks the current branch has
-been merged, but does not have an updated work tree. The next sync in that
-repository will see the files as deleted (or as being an old version), and
-commit the current work tree state to the branch. 
-
-Result is files appear to be lost, although `git revert` in an indirect
-mode repo can get them back.
-
-To fix this, direct mode merge would need to avoid updating the current
-branch when merging the remote branch into it (how?). It should first
-update the whole work tree, and only after it's updated should it update
-the index and the current branch to reflect the merge.  
-
-This way, if the merge is interrupted, the work tree may have uncommitted
-changed -- but it's fine if they get accidentially committed, since when
-the merge is re-done, those changes will by the same ones made by the
-merge. (I assume this is how `git merge` normally works.) --[[Joey]]
-
-> Implemented that. And then realized that even updating the index
-> as part of a merge results in the work tree being out of sync with the
-> index. Which will cause the next sync to again delete any files that
-> are in the index but not the work tree. Urgh. 
-> 
-> Seems that a direct mode
-> merge also needs to use a different index file to stage its changes?
-> (Ugh)
-> > done --[[Joey]]
-
-> > > I had to revert the fix on FAT/Windows due to 
-> > > a git bug: <http://marc.info/?l=git&m=140262402204212&w=2>
-> > > Once that bug's fixed, I can revisit this. --[[Joey]]
-
-[[!meta title="direct mode merge interrupt (fixed for all except FAT, Windows)"]]
-
-## other options
-
-> Or could perhaps use `git-merge-tree`
-> and avoid staging the merge in the index until the work-tree is updated.
-> 
-> Alternatively, could use another strategy.. Add a lock file which is held while 
-> the merge is in progress and contains the pre-merge sha.
-> If the lock file is present but not held, state is inconsistent.
-> `git-annex sync` and the SanityChecker should
-> then run mergeDirectCleanup to recover, before any commits can be made
-> from the inconsistent state. This approach seems to get complicated
-> quickly.. --[[Joey]]
-
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/bugs/direct_mode_should_refuse_to_merge_with_illegal_filenames.mdwn b/doc/bugs/direct_mode_should_refuse_to_merge_with_illegal_filenames.mdwn
deleted file mode 100644
--- a/doc/bugs/direct_mode_should_refuse_to_merge_with_illegal_filenames.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-Some filesystems have stupid rules about characters not allowed in filenames. For example, FAT doesn't allow '?' '*' ':' etc.
-
-The direct mode merge code lets `git merge` update a temp directory with the new files from the merge, before doing its work tree update and committing. This can fail:
-
-<pre>
-error: unable to create file non-rus/Dance/Dream_Dance_Vol15/CD1/09-??.mp3 (Invalid argument)
-</pre>
-
-This leaves the work tree without the file, and the index knows about the file. Result is that the next time a commit is done, this file appears to have been deleted, and that is committed and propigates out. Which can be surprising.
-
-----
-
-It would probably be better if, when the working tree cannot be updated, it left the repository in some state that would not make the next commit remove anything.
-
-Ie, direct mode should replicate this behavior:
-
-<pre>
-root@darkstar:/home/joey/mnt>git init
-root@darkstar:/home/joey/mnt>git merge FETCH_HEAD 
-error: unable to create file foo? (Invalid argument)
-fatal: read-tree failed
-root@darkstar:/home/joey/mnt>git status
-On branch master
-
-Initial commit
-
-nothing to commit (create/copy files and use "git add" to track)
-</pre>
-
-Problem is, the call to `git merge` can also fail due to a conflict. In that case, git-annex wants to continue with automatic conflict resolution.
-So, how to detect when `git merge` has skipped creating illegal filenames?
-
-----
-
-Alternatively, git-annex could learn/probe the full set of characters not allowed in filenames, and examine merges before performing them, and refuse to do anything if the merge added an illegal filename.a
-
-[[!tag confirmed]]
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/bugs/done.mdwn b/doc/bugs/done.mdwn
deleted file mode 100644
--- a/doc/bugs/done.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-recently fixed [[bugs]]
-
-[[!inline pages="./* and link(./done) and !*/Discussion" sort=mtime show=10
-archive=yes]]
diff --git a/doc/bugs/drop_from_special_hybrid_encryption_remote_fails.mdwn b/doc/bugs/drop_from_special_hybrid_encryption_remote_fails.mdwn
deleted file mode 100644
--- a/doc/bugs/drop_from_special_hybrid_encryption_remote_fails.mdwn
+++ /dev/null
@@ -1,57 +0,0 @@
-### Please describe the problem.
-
-I am trying to drop a file from a special, hybrid encryption remote. It says "failed", but I cannot figure out why, the commands in --debug all seem to exit with ExitSuccess.
-
-### What steps will reproduce the problem?
-
-Not sure how to reproduce from scratch, see log below for what happens when I do 
-git annex drop file -f specialremote ...
-
-### What version of git-annex are you using? On what operating system?
-
-[[!format sh """
-$ git annex version
-git-annex version: 5.20150916+gitg79661ef-1~ndall+1
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA Database
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-"""]]
-
-### Please provide any additional information below.
-
-[[!format sh """
-[2015-12-27 00:15:58.093036] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","ls-files","--cached","-z","--","20150816_cccamp/DSC04537.ARW"]
-[2015-12-27 00:15:58.147092] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","show-ref","git-annex"]
-[2015-12-27 00:15:58.150596] process done ExitSuccess
-[2015-12-27 00:15:58.150901] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
-[2015-12-27 00:15:58.155607] process done ExitSuccess
-[2015-12-27 00:15:58.157843] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","log","refs/heads/git-annex..85eb4dbbebcc100c2414f5a71f4fb9a22f0239fb","-n1","--pretty=%H"]
-[2015-12-27 00:15:58.162227] process done ExitSuccess
-[2015-12-27 00:15:58.162985] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","log","refs/heads/git-annex..c0747d4c69cf80aa0290f1385454eb76a4c21032","-n1","--pretty=%H"]
-[2015-12-27 00:15:58.168515] process done ExitSuccess
-[2015-12-27 00:15:58.168888] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","log","refs/heads/git-annex..0357da603dc61b28814125650def17fb0e3f82ca","-n1","--pretty=%H"]
-[2015-12-27 00:15:58.174589] process done ExitSuccess
-[2015-12-27 00:15:58.1749] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","log","refs/heads/git-annex..4673c36870f0a536b4bedc3f5826f2d6b39c9d6a","-n1","--pretty=%H"]
-[2015-12-27 00:15:58.214221] process done ExitSuccess
-[2015-12-27 00:15:58.215418] read: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","log","refs/heads/git-annex..75de80c0acf77e04e5b2b4c6f7947aec75603989","-n1","--pretty=%H"]
-[2015-12-27 00:15:58.243546] process done ExitSuccess
-[2015-12-27 00:15:58.244412] chat: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","cat-file","--batch"]
-[2015-12-27 00:15:58.250349] read: git ["config","--null","--list"]
-[2015-12-27 00:15:58.250859] read: git ["config","--null","--list"]
-[2015-12-27 00:15:58.253927] process done ExitSuccess
-[2015-12-27 00:15:58.254538] chat: git ["--git-dir=../../.git","--work-tree=../..","--literal-pathspecs","check-attr","-z","--stdin","annex.backend","annex.numcopies","--"]
-[2015-12-27 00:15:58.255324] read: git ["--version"]
-[2015-12-27 00:15:58.257803] process done ExitSuccess
-drop stratohidrive 20150816_cccamp/DSC04537.ARW [2015-12-27 00:15:58.328068] chat: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--decrypt"]
-[2015-12-27 00:15:58.354229] process done ExitSuccess
-failed
-git-annex: drop: 1 failed
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-As mentioned before, I am very, very happy with git-annex :-) Discovery of 2015 for me.
diff --git a/doc/bugs/dropkey_--batch_--json_--force_is_always_succesfull.mdwn b/doc/bugs/dropkey_--batch_--json_--force_is_always_succesfull.mdwn
deleted file mode 100644
--- a/doc/bugs/dropkey_--batch_--json_--force_is_always_succesfull.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-### Please describe the problem.
-
-just want to check if that is "by design"... --force was demanded seem operation is dangerous, but I expected that it would still report success false if key was not actually dropped, at least if a key is a completely wrong key
-
-so is that "by design" and I shouldn't care to check success field...?
-
-### What version of git-annex are you using? On what operating system?
-6.20160425+gitgffe2ea2-1~ndall+1
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-$> echo MD5E-s11--74d80f7d99b835e5189948c8d4297efd | git annex dropkey --batch --json --force
-{"command":"dropkey","key":"MD5E-s11--74d80f7d99b835e5189948c8d4297efd","success":true}
-
-$> ls -l
-total 0
-0 lrwxrwxrwx 1 yoh yoh 110 Apr 29 09:21 124 -> .git/annex/objects/MV/Jw/MD5E-s11--74d80f7d99b835e5189948c8d4297efd/MD5E-s11--74d80f7d99b835e5189948c8d4297efd
-
-$> echo MD5E-s11--74d80f7d99b835e5189948c8d4297efd | git annex dropkey --batch --json --force
-{"command":"dropkey","key":"MD5E-s11--74d80f7d99b835e5189948c8d4297efd","success":true}
-
-$> echo MD5E-s11--74d80f7dsd99b835e5189948c8d4297efd | git annex dropkey --batch --json --force 
-{"command":"dropkey","key":"MD5E-s11--74d80f7dsd99b835e5189948c8d4297efd","success":true}
-
-$> echo MD5E-s11--74d80f7dsd99b835e5189948c8d4297efdsdfsdf | git annex dropkey --batch --json --force 
-{"command":"dropkey","key":"MD5E-s11--74d80f7dsd99b835e5189948c8d4297efdsdfsdf","success":true}
-
-
-"""]]
-
-[[!meta author=yoh]]
-
-> [[notabug|done]] --[[Joey]]
diff --git a/doc/bugs/duplicate_progress_reports_in_parallel___39__get__39__.mdwn b/doc/bugs/duplicate_progress_reports_in_parallel___39__get__39__.mdwn
deleted file mode 100644
--- a/doc/bugs/duplicate_progress_reports_in_parallel___39__get__39__.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!format sh """
-$> git annex version                    
-git-annex version: 6.20160213+gitg9597a21-1~ndall+1
-...
-$> git annex get -J 5 .
-get docs/freesurfer.groupanalysis.ppt (from origin...) (checksum...) ok
-get docs/freesurfer.future_directions.2007.ppt (from origin...) (checksum...) ok
-get docs/freesurfer.groupanalysis.short.ppt (from origin...) (checksum...) ok
-get distribution/trctrain/trctraindata.tar.gz (from origin...) 
-47%          80.2MB/s 3s
-47%          80.2MB/s 3s
-get docs/freesurfer.inferring_architectonics.ppt (from origin...) 
-33%           8.1MB/s 4s
-33%           8.1MB/s 4s
-get docs/freesurfer.intro.2011.ppt (from origin...) 
-64%           7.3MB/s 1s
-64%           7.3MB/s 1s
-get docs/freesurfer.intro.mmclass.ppt (from origin...)
-# End of transcript or log.
-"""]]
-
-[[!meta author=yoh]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/easy_feature_request__58___enable_lan_sync_on_android.mdwn b/doc/bugs/easy_feature_request__58___enable_lan_sync_on_android.mdwn
deleted file mode 100644
--- a/doc/bugs/easy_feature_request__58___enable_lan_sync_on_android.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-It would be nice to allow LAN sync on the android client.  This would allow for easily syncing files when in an out-of-service area, or rapidly syncing to a device with a better network connection.
diff --git a/doc/bugs/encryption__61__none_doesn__39__t_work_with_enableremote.mdwn b/doc/bugs/encryption__61__none_doesn__39__t_work_with_enableremote.mdwn
deleted file mode 100644
--- a/doc/bugs/encryption__61__none_doesn__39__t_work_with_enableremote.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-### Please describe the problem.
-When cloning a remote client repo via ssh and then enableremote the encryptionsetting seem not be used
-
-
-### What steps will reproduce the problem?
-- create a repository (as client) on computer WO
-- create a special remote via rsync+ssh on computer BA with encryption=none from WO
---> syncing works
-- git clone via ssh from WO on computer XY, group is manual
-- git-annex get on XY with source WO workes (OK)
-- enableremote BA on computer XY
-- shutdown computer WO
-- try to get some file on computer XY. The download is first tried from WO, then from BA  --> correct
-
-
-- download from BA fails (ERROR) 
---> Reason seems to be that encryption=none is not honored: 
-rsync: change_dir "XXXXXXXX/GPGHMACSHA1--398057f8bd37edf898aeae4557c6277f1162382b" failed: No such file or directory (2)
-
-I additionally could not find out where to manually change the encryption settings after enableremote
-
-
-
-### What version of git-annex are you using? On what operating system?
-git-annex version: 5.20140412ubuntu1
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-
-
-### 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.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/error_on_only_repository_copy_deletion.mdwn b/doc/bugs/error_on_only_repository_copy_deletion.mdwn
deleted file mode 100644
--- a/doc/bugs/error_on_only_repository_copy_deletion.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-**What steps will reproduce the problem?**<br>
-Delete the last repository in the current repository (where it says: warning type in "yes please do as i say").
-Then try running git annex webapp
-<br><br>
-**What is the expected output? What do you see instead?**<br>
-Webapp starts. git-annex: Not in a git repository.
-<br><br>
-**What version of git-annex are you using? On what operating system?**<br>
-4.20130417. Debian wheezy/testing
-<br><br>
-**Please provide any additional information below.**<br>
-See also
-[[bugs/git-annex:_Not_in_a_git_repository._/]]
-where the same error message occurs
-
-[[!tag /design/assistant moreinfo]]
diff --git a/doc/bugs/false_positives_from_fsck_in_bare_repo.mdwn b/doc/bugs/false_positives_from_fsck_in_bare_repo.mdwn
deleted file mode 100644
--- a/doc/bugs/false_positives_from_fsck_in_bare_repo.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-### Please describe the problem.
-
-git annex fsck complains about no known copies of files which seem to be there
-
-### What steps will reproduce the problem?
-
-run git annex fsck in a bare repo? At least I tried 3, two from one set of mirrors, and one from another
-
-### What version of git-annex are you using? On what operating system?
-
-╰─% apt-cache policy git-annex
-git-annex:
-  Installed: 5.20141125
-  Candidate: 5.20141125
-  Version table:
- *** 5.20141125 0
-        900 http://http.debian.net/debian/ jessie/main amd64 Packages
-
-
-### 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
-$ cd /media/usbdata3/data/audio.git/
-$ tail /tmp/usbdata3.audio.log
-  ** No known copies exist of SHA256E-s22382--ceaa24fd4ef186b90146cbfc48a2da261e85d63288520aa3efd80705f1976117.jpg
-  ** No known copies exist of SHA256E-s6532--4cf24963db72d1c06b03310a83922875bfff4d82b7285096a7bf76ecdba39552.jpg
-  ** No known copies exist of SHA256E-s9539--eb1db62f33125aee2093ecf530f94497f8c890b3ffddb5214cbd2ad99ce5a4c4.jpg
-  ** No known copies exist of SHA256E-s13710--5d69a49a290012f480e6848f88122e90f803177c610524234e16136d95bc7715.jpg
-  ** No known copies exist of SHA256E-s3515--3a225ae6b26571a27d7e70f49948e2be4d78f1fb29e64308880e208e20bc2868.jpg
-  ** No known copies exist of SHA256E-s8359--9291d7b0bf3a862901607ec7c56d5e1ee6a0f3889e775e4db23999b38322e83f.jpg
-  ** No known copies exist of SHA256E-s3157--4c43cf5618f939a09dada21b45b3860bcb4c6968fa166daf3215f879a25e504d.gif
-  ** No known copies exist of SHA256E-s2676--13b4b08525ce90b44ea9eb703630646f2d8f41d9a07b65d130aaf653a072d408.gif
-  ** No known copies exist of SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg
-git-annex: fsck: 10484 failed
-$ find . -name SHA256E-s5863--f0eb8c34ea1aa834280c7\*
-./annex/objects/5b3/5c3/SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg
-./annex/objects/5b3/5c3/SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg/SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg
-$ sha256sum ./annex/objects/5b3/5c3/SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg/SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg
-f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746  ./annex/objects/5b3/5c3/SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg/SHA256E-s5863--f0eb8c34ea1aa834280c78f1ec28d50aef81379ba62fb0bbf084664c7a7e2746.jpg
-$ 
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/fat_support.mdwn b/doc/bugs/fat_support.mdwn
deleted file mode 100644
--- a/doc/bugs/fat_support.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Klaus pointed out that there are two problems that keep
-git-annex from being used on USB keys, that would typically
-be VFAT formatted:
-
-- Use of symlinks, which VFAT does not support. Very hard to fix.
-  Instead, just use [[/bare_repositories]] on the key,
-  they're supported now.
-- Use of ":" in filenames of object files, also not supported.
-  Could easily be fixed by reorganizing the object directory.
-
-[[Done]]; in annex.version 2 repos, colons are entirely avoided in
-filenames. So a bare git clone can be put on VFAT, and git-annex
-used to move stuff --to and --from it, for sneakernet.
diff --git a/doc/bugs/fat_support/comment_1_04bcc4795d431e8cb32293aab29bbfe2._comment b/doc/bugs/fat_support/comment_1_04bcc4795d431e8cb32293aab29bbfe2._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_1_04bcc4795d431e8cb32293aab29bbfe2._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="fmarier"
- ip="121.73.248.43"
- subject="Exporting to a FAT filesystem?"
- date="2011-04-04T07:40:41Z"
- content="""
-I'm using git-annex to keep my music in sync between all of my different machines. What I'd love to be able to do is to also keep it in sync with my iRiver player. Unfortunately, the firmware, Rockbox, doesn't support ext3, so I'm stuck with a FAT filesystem.
-
-I can see how the design of git-annex makes it rather difficult to get rid of the symlinks, so how about taking a different approach: something like a \"git annex export DEST\" which would take a destination (not a git remote) and rsync the content over to there as regular files.
-
-Maybe \"git annex sync DEST\" or \"git annex rsync DEST\" would be better names if we want to convey the idea that the destination will be made to look like the source repo, including performing the necessary deletions.
-"""]]
diff --git a/doc/bugs/fat_support/comment_2_bb4a97ebadb5c53809fc78431eabd7c8._comment b/doc/bugs/fat_support/comment_2_bb4a97ebadb5c53809fc78431eabd7c8._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_2_bb4a97ebadb5c53809fc78431eabd7c8._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="http://joey.kitenet.net/"
- nickname="joey"
- subject="comment 2"
- date="2011-04-04T18:20:45Z"
- content="""
-Hey @fmarier. Well, this bug report is closed because you can already get rid of the symlinks. Just put a bare git repo on your fat filesystem, and use git-annex copy --to/--from there.
-
-Now, that puts all the files that are on the device in .git/annex/objects/xx/yy/blah.mp3 -- how well rockbox would support that I don't know. And if it tries to modify or delete those files, git annex also can't help you manage those changes.
-
-Another recent option is the [[special_remotes/directory]] special remote type, which again uses \"xx/yy/blah.mp3\" and can't track changes made to the files. This could perhaps be extended in the direction you suggest, although trying to fit this into the special remote infrastructure might not be a good fit really.
-
-The most likely way this has to get dealt with is really by using [[todo/smudge]] filters, which would eliminate the symlinks and allow copying a non-bare git repo onto vfat. 
-"""]]
diff --git a/doc/bugs/fat_support/comment_3_df3b943bc1081a8f3f7434ae0c8e061e._comment b/doc/bugs/fat_support/comment_3_df3b943bc1081a8f3f7434ae0c8e061e._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_3_df3b943bc1081a8f3f7434ae0c8e061e._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="fmarier"
- subject="comment 3"
- date="2011-04-05T10:00:21Z"
- content="""
-Thanks for the reply @joey.
-
-While it would certainly be possible for a bare repo to exist on my iRiver, the problem is that the music player uses the filesystem to organize files into directories like \"Artist/Album/Track.ogg\". So replacing that with \"..../xx/yy/Track.ogg\" would make it fairly difficult to browse my music collection and select the album/track I want to listen to :)
-
-So unless I have the files physically organized like the symlinks, then it's probably not going to work very for that particular workflow. Smudge filters are interesting though. In the meantime, I'll look into rsyncing from another box which has the right filesystem layout onto my iRiver directly.
-"""]]
diff --git a/doc/bugs/fat_support/comment_4_90a8a15bedd94480945a374f9d706b86._comment b/doc/bugs/fat_support/comment_4_90a8a15bedd94480945a374f9d706b86._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_4_90a8a15bedd94480945a374f9d706b86._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://ethan.betacantrips.com/"
- nickname="ethan.glasser.camp"
- subject="no symlinks"
- date="2011-06-08T20:59:38Z"
- content="""
-If you try to clone a git repo that has a symlink over to a VFAT filesystem, you get (in its place) a regular file that contains the name of the symlink target.  So why can't git-annex use that?  I could still do git annex get on this file, git annex would still \"know\" that it's a symlink, and could replace it with a copy of the real file (instead of putting it in .git/annex).
-
-I know if it were that simple, someone would have done it already, so what am I missing?  I guess trying to get the file FROM the repository would fail because it wouldn't find the file in .git/annex?  Couldn't you store a reverse mapping?  You wouldn't be able to move the file around, but you already lose that once you give up symlinks.  It would also be a little harder to tell which symlinks were \"dangling\"; I don't see an easy way to get around that.  It would still be better than a bare repo..
-"""]]
diff --git a/doc/bugs/fat_support/comment_5_64bbf89de0836673224b83fdefa0407b._comment b/doc/bugs/fat_support/comment_5_64bbf89de0836673224b83fdefa0407b._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_5_64bbf89de0836673224b83fdefa0407b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joey.kitenet.net/"
- nickname="joey"
- subject="comment 5"
- date="2011-06-10T16:41:43Z"
- content="""
-@ethan the reason that wouldn't work is because git would then see a file that was checked in and had its one line symlinkish content replaced with a huge binary blob. And git commit would try to commit that etc. The potential for foot-shooting is too high.
-"""]]
diff --git a/doc/bugs/fat_support/comment_6_a3b6000330c9c376611c228d746a1d55._comment b/doc/bugs/fat_support/comment_6_a3b6000330c9c376611c228d746a1d55._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_6_a3b6000330c9c376611c228d746a1d55._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkZRoTRyW3tox-FD2DQWxskgI6_tkEtHL4"
- nickname="Ben"
- subject="comment 6"
- date="2012-07-23T16:11:52Z"
- content="""
-The above would work fine for me but the files in my annex (e.g. .git/annex/objects/xx/yy/blah.ogg) don't have extensions like that, so my media player doesn't recognize them as media files. How do I get the files under \"objects\" to keep the extensions of the original files like in Joey's example?
-"""]]
diff --git a/doc/bugs/fat_support/comment_7_a0ac7f2c44efc8116940c7b94b35e9d0._comment b/doc/bugs/fat_support/comment_7_a0ac7f2c44efc8116940c7b94b35e9d0._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_7_a0ac7f2c44efc8116940c7b94b35e9d0._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 7"
- date="2012-07-24T14:51:50Z"
- content="""
-You can get the extensions by migrating to the SHA1E (or SHA256E) backend. 
-"""]]
diff --git a/doc/bugs/fat_support/comment_8_acc947643a635eb10a1bff92083a3506._comment b/doc/bugs/fat_support/comment_8_acc947643a635eb10a1bff92083a3506._comment
deleted file mode 100644
--- a/doc/bugs/fat_support/comment_8_acc947643a635eb10a1bff92083a3506._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmcYryijvlF8bJvM_eZNSrUPEkMlxMDGTQ"
- nickname="Thiago"
- subject="POSIX layer on top of VFAT using FUSE"
- date="2012-11-24T00:21:23Z"
- content="""
-I just found out about this project and didn't try it, but it looks like it would allow using git-annex on an usb stick with a normal repository:
-
-<http://sourceforge.net/projects/posixovl/>
-"""]]
diff --git a/doc/bugs/fatal__58___Cannot_handle_files_this_big.mdwn b/doc/bugs/fatal__58___Cannot_handle_files_this_big.mdwn
deleted file mode 100644
--- a/doc/bugs/fatal__58___Cannot_handle_files_this_big.mdwn
+++ /dev/null
@@ -1,96 +0,0 @@
-### Please describe the problem.
-
-Syncing a 20GB video file causes this error. I have no problems with 8GB files. 
-
-### What steps will reproduce the problem?
-
-See additional info
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20140920-gb0c4300
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 2 3 4
-
-git version 1.9.4.msysgit.2
-
-Windows 7 64bit 
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-Z:\>git clone L:\repositories\bigFilesTest.git-annex
-Cloning into 'bigFilesTest.git-annex'...
-done.
-
-Z:\>cd bigFilesTest.git-annex
-
-Z:\bigFilesTest.git-annex>git annex init "cloned"
-init cloned
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-
-  Detected a crippled filesystem.
-
-  Enabling direct mode.
-ok
-(Recording state in git...)
-
-Z:\bigFilesTest.git-annex>git annex add test20GBVideo.mkv
-add test20GBVideo.mkv ok
-(Recording state in git...)
-
-Z:\bigFilesTest.git-annex>git annex sync --debug
-[2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","git-annex"]
-[2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--hash","refs/heads/git-annex"]
-[2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/heads/git-annex..54de336a3423f7f8f72f897effd29f952534c24e","-n1","--pretty=%H"]
-[2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/heads/git-annex..53cfcf38b40247b3992b6007336b2c915a945ad4","-n1","--pretty=%H"]
-[2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] chat: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","cat-file","--batch"]
-[2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] read: git ["config","--null","--list"]
-commit  [2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","ls-files","--stage","-z","--others","--exclude-standard","--","Z:\\bigFilesTest.git-annex"]
-[2014-10-18 15:39:02 Mitteleurop├ñische Sommerzeit] chat: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","cat-file","--batch"]
-(Recording state in git...)
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","add","-f","test20GBVideo.mkv"]
-fatal: Cannot handle files this big
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--head"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","diff-index","-z","--raw","--no-renames","-l0","--cached","HEAD"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","symbolic-ref","HEAD"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--hash","refs/heads/annex/direct/master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","write-tree"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","rev-parse","b12e8477242df97be13c1395db143f860ce8e895:"]
-ok
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","symbolic-ref","HEAD"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","refs/heads/annex/direct/master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--verify","-q","refs/heads/synced/master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/heads/annex/direct/master..refs/heads/synced/master","-n1","--pretty=%H"]
-pull origin
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","fetch","origin"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--verify","-q","refs/remotes/origin/annex/direct/master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--verify","-q","refs/remotes/origin/synced/master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/heads/synced/master..refs/remotes/origin/synced/master","-n1","--pretty=%H"]
-ok
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","git-annex"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--hash","refs/heads/git-annex"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/heads/git-annex..54de336a3423f7f8f72f897effd29f952534c24e","-n1","--pretty=%H"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/heads/git-annex..53cfcf38b40247b3992b6007336b2c915a945ad4","-n1","--pretty=%H"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","branch","-f","synced/master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","branch","-f","master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--verify","-q","refs/remotes/origin/synced/master"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/remotes/origin/synced/master..refs/heads/synced/master","-n1","--pretty=%H"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","show-ref","--verify","-q","refs/remotes/origin/git-annex"]
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","log","refs/remotes/origin/git-annex..git-annex","-n1","--pretty=%H"]
-push origin
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] call: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","push","origin","+git-annex:synced/git-annex","annex/direct/master:synced/master"]
-Everything up-to-date
-[2014-10-18 15:39:03 Mitteleurop├ñische Sommerzeit] read: git ["--git-dir=Z:\\bigFilesTest.git-annex\\.git","--work-tree=Z:\\bigFilesTest.git-annex","-c","core.bare=false","push","origin","master"]
-ok
-
-
-
-"""]]
diff --git a/doc/bugs/fatal__58___git-write-tree__58___error_building_trees.mdwn b/doc/bugs/fatal__58___git-write-tree__58___error_building_trees.mdwn
deleted file mode 100644
--- a/doc/bugs/fatal__58___git-write-tree__58___error_building_trees.mdwn
+++ /dev/null
@@ -1,103 +0,0 @@
-### Please describe the problem.
-Not able to successfully git-annex sync with a remote due to a git fatal. Caused by masters diverging?
-
-### What steps will reproduce the problem?
-git-annex sync, or, letting the assistant try.
-
-### What version of git-annex are you using? On what operating system?
-git-annex version: 5.20131221+b1 on my laptop
-git-annex version: 5.20131224-g6ca5271 on the remote server
-
-### Please provide any additional information below.
-
-Output of a manual git-annex sync in the directory:
-
-[[!format sh """
-greg@x200s:~/Documents$ git-annex sync
-commit  (Recording state in git...)
-Copyright Office/Orphan Works/ARROW/170409_ARROW_Leaflet.pdf: unmerged (783afced6bc43138373fda43edfda0c33be36525)
-Copyright Office/Orphan Works/ARROW/ARROWproject_results1.pdf: unmerged (b536e5f3d93e7905e05510f26db1f743e9eae16e)
-Copyright Office/Orphan Works/ARROW/ARROWproject_results1.ppt: unmerged (5543049b8940cc5702d37aff18b03c67d9c8374d)
-Copyright Office/Orphan Works/ARROW/ARROWstandardPresent2010.pdf: unmerged (54d751bc98cb5da29d3d568856b74675e842072e)
-Copyright Office/Orphan Works/ARROW/ARROWstandardPresent2010.ppt: unmerged (efe0e94b51eccb9a6a0c352f4a210bd5a6105050)
-Copyright Office/Orphan Works/ARROW/ARROWtrifoldMAR2011.pdf: unmerged (b52ff16178e29261fe00a518c23610a3b0826482)
-Copyright Office/Orphan Works/Documentation/20110531/Documentation.doc.odt: unmerged (1348d5f42f7e34706407f7936f4fb0438e4b8ffa)
-Copyright Office/Orphan Works/Documentation/AAPpublishers.pdf: unmerged (3f448a03d31a38adb095e3031e4ee13771d22d70)
-Copyright Office/Orphan Works/Documentation/Documentation.doc: unmerged (265fdff7787f560e3ba20789a12e15ffb165ec7f)
-Copyright Office/Orphan Works/Documentation/Documentation.pdf: unmerged (7a9ff92663ed42b42b9baaefaf4721499d18d82d)
-...
-fatal: git-write-tree: error building trees
-git-annex: failed to read sha from git write-tree
-"""]]
-
-See also:
-
-1. the [partial daemon log](http://paste.debian.net/73176/) from the assistant running in that directory on the laptop and 
-2. the output of [git fsck](http://paste.debian.net/73175/) on the remote.
-
-git-annex repair on the laptop and the server:
-[[!format sh """
-greg@x200s:~/Documents$ git-annex repair
-Running git fsck ...
-No problems found.
-ok
-"""]]
-
-
-### How I ended up fixing it:
-[[!format sh """
-greg@x200s:~/Documents$ killall git-annex
-greg@x200s:~/Documents$ git-annex indirect
-blah...............
-indirect  ok
-ok
-greg@x200s:~/Documents$ git status
-On branch master
-Your branch and 'rose/master' have diverged,
-and have 294 and 1 different commit each, respectively.
-  (use "git pull" to merge the remote branch into yours)
-
-Untracked files:
-  (use "git add <file>..." to include in what will be committed)
-
-	.gitrefs/
-
-nothing added to commit but untracked files present (use "git add" to track)
-greg@x200s:~/Documents$ git pull
-Merge made by the 'recursive' strategy.
- Copyright Office/Orphan Works/staging/reporting/process_report.txt.2 | 1 +
- Copyright Office/Orphan Works/staging/reporting/with-title.xls       | 1 +
- Copyright Office/Orphan Works/staging/with-title.xls                 | 1 +
- Copyright Office/Orphan Works/worker_emails.txt                      | 1 +
- git.fsck.log                                                         | 1 +
- 5 files changed, 5 insertions(+)
- create mode 120000 Copyright Office/Orphan Works/staging/reporting/process_report.txt.2
- create mode 120000 Copyright Office/Orphan Works/staging/reporting/with-title.xls
- create mode 120000 Copyright Office/Orphan Works/staging/with-title.xls
- create mode 120000 Copyright Office/Orphan Works/worker_emails.txt
- create mode 120000 git.fsck.log
-greg@x200s:~/Documents$ git-annex sync
-commit  ok
-pull rose 
-
-Already up-to-date.
-ok
-push rose 
-Counting objects: 1658, done.
-Delta compression using up to 2 threads.
-Compressing objects: 100% (904/904), done.
-Writing objects: 100% (1604/1604), 138.97 KiB | 0 bytes/s, done.
-Total 1604 (delta 892), reused 1298 (delta 688)
-To greg@rose.makesad.us:/home/greg/Documents/
-   f1d206e..e836b9b  master -> synced/master
-ok
-greg@x200s:~/Documents$
-"""]]
-
-I restarted the assistant and the daemon.log looks good.
-
-After sync'ing on the server, it appears that this has been the case for quite some time (based off of what symlinks were created).
-
-Lastly: Joey, this is probably what caused that weird behavior in the webapp where it showed the bad transfer each day after the fsck at noon. I never diagnosed that more but I bet I won't see it tomorrow.
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/fatal__58___unable_to_access___39__..__47__..__47__..__47.mdwn b/doc/bugs/fatal__58___unable_to_access___39__..__47__..__47__..__47.mdwn
deleted file mode 100644
--- a/doc/bugs/fatal__58___unable_to_access___39__..__47__..__47__..__47.mdwn
+++ /dev/null
@@ -1,63 +0,0 @@
-### 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(+)
- create mode 120000 test
-
-C:\Users\Bruno\annex>git annex sync
-(Recording state in git...)
-fatal: unable to access '../../../../C:\Users\Bruno\annex\.git/config': Invalid argument
-
-git-annex: user error (xargs ["-0","git","--git-dir=C:\\Users\\Bruno\\annex\\.git","--work-tree=C:\\Users\\Bruno\\annex","add","-f"] exited 123)
-failed
-git-annex: sync: 1 failed
-"""]]
-
-### What version of git-annex are you using? On what operating system?
-Windows 8 (64 bits)
-
-git version 1.8.4.msysgit.0
-
-[[!format sh """
-git-annex version: 4.20131008-ge115441
-build flags: Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
-local repository version: 4
-default repository version: 3
-supported repository versions: 3 4
-upgrade supported from repository versions: 2
-"""]]
-
-### Please provide any additional information below.
-C:\Users\Bruno\annex\.git\config exists
-
-> xargs was one problem; also msysgit seems to just not
-> accept DOS style paths anymore in --git-dir or --git-work-tree.
-> megaweird. [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/forwarded.mdwn b/doc/bugs/forwarded.mdwn
deleted file mode 100644
--- a/doc/bugs/forwarded.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-This tag is for bugs that have been forwarded from git-annex to some other
-software, such as a library it uses.
diff --git a/doc/bugs/fsck_--incremental-schedule_does_not_work_as_documented.mdwn b/doc/bugs/fsck_--incremental-schedule_does_not_work_as_documented.mdwn
deleted file mode 100644
--- a/doc/bugs/fsck_--incremental-schedule_does_not_work_as_documented.mdwn
+++ /dev/null
@@ -1,73 +0,0 @@
-### Please describe the problem.
-git annex fsck with --incremental-schedule restarts all the time. According to the man page:
-
-    Maybe you'd like to run a fsck for 5 hours at night,  pick-
-    ing  up  each  night  where it left off. You'd like this to
-    continue until all files have been fscked.  And  once  it's
-    done,  you'd  like  a  new  fsck pass to start, but no more
-    often than once a month. Then put this in  a  nightly  cron
-    job:
-
-    git annex fsck --incremental-schedule 30d --time-limit 5h
-
-If I run that command (with a time limit of 10 minutes) it starts over instead of continuing where it finished off.
-
-### What version of git-annex are you using? On what operating system?
-
-Debian testing version on linux 
-
-    time_machine_carl@pi:/media/backup_hdd/carl/annex$ git annex version
-    git-annex version: 5.20150731-1
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA Database
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-    time_machine_carl@pi:/media/backup_hdd/carl/annex$ uname -a
-    Linux pi 4.1.6+ #810 PREEMPT Tue Aug 18 15:19:58 BST 2015 armv6l GNU/Linux
-
-and latest version built from homebrew on OS X
-
-    Carls-MacBook-Air:CurveDe carlmod$ git annex version
-    git-annex version: 5.20150824
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA TorrentParser Database
-    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    local repository version: unknown
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-    Carls-MacBook-Air:CurveDe carlmod$ uname -a
-    Darwin Carls-MacBook-Air.local 14.5.0 Darwin Kernel Version 14.5.0: Wed Jul 29 02:26:53 PDT 2015; root:xnu-2782.40.9~1/RELEASE_X86_64 x86_64
-
-
-
-### 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
-time_machine_carl@pi:/media/backup_hdd/carl/annex$ git annex fsck --incremental-schedule 30d --time-limit 10m
-fsck 15 minutes/2014-12-15_Chorkonzert_ Gesungene Vorfreude auf das Christkind - Nachrichten Augsburg-Land, Gersthofen, Neusäß - Augsburger Allgemeine.pdf (checksum...)
-ok
-fsck 15 minutes/2014_midnattsloppet.pdf (checksum...)
-ok
-<Snip lots of files>
-fsck Deklaration/archive/2014/SE/Bilagor/2013-12-31_SEB Årsbesked.pdf (checksum...)
-ok
-
-  Time limit (10m) reached!
-time_machine_carl@pi:/media/backup_hdd/carl/annex$ git annex fsck --incremental-schedule 30d --time-limit 10m
-fsck 15 minutes/2014-12-15_Chorkonzert_ Gesungene Vorfreude auf das Christkind - Nachrichten Augsburg-Land, Gersthofen, Neusäß - Augsburger Allgemeine.pdf (checksum...)
-ok
-fsck 15 minutes/2014_midnattsloppet.pdf (checksum...)
-ok
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I manage all my important personal documents since about two or three years, spreading them out over home servers, cloud providers and off site usb-drives in foreign countries, making sure that there are always at least 4 copies available. (if my flat burns the same day that box.com goes bankrupt ...)
-
-> [[done]] per comments --[[Joey]]
diff --git a/doc/bugs/gcrypt_special_remote_fails_on_bare_remote_repos.mdwn b/doc/bugs/gcrypt_special_remote_fails_on_bare_remote_repos.mdwn
deleted file mode 100644
--- a/doc/bugs/gcrypt_special_remote_fails_on_bare_remote_repos.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-Creating a gcrypt remote on a remote bare repository fails: it tries to modify the config file in the wrong path:
-
-(problem is in last line)
-
-```
-$ git annex initremote qech type=gcrypt encryption=hybrid gitrepo=~/astro.git keyid=0BA74AC5B9494715
-initremote qech (encryption setup) (hybrid cipher with gpg key 0BA74AC5B9494715) gcrypt: Development version -- Repository format MAY CHANGE
-gcrypt: Decrypting manifest
-gpg: Signature made Son 13 Sep 2015 19:37:16 CEST using RSA key ID B9494715
-gpg: Good signature from "Arian Sanusi <arian@sanusi.ch>"
-gpg:                 aka "Arian Sanusi <arian@sanusi.de>"
-gpg:                 aka "Arian Sanusi <asanusi@student.ethz.ch>"
-gpg:                 aka "Arian Sanusi <arian@guave.org>"
-gpg:                 aka "Arian Sanusi <asanusi@ethz.ch>"
-gpg:                 aka "Arian Sanusi <arian@semioptimal.net>"
-gcrypt: Remote ID is :id:1+DP8KgrbsvpSycQ5QKO
-Von gcrypt::/home/arian-debian-ssd/astro
- * [neuer Branch]    git-annex  -> qech/git-annex
-gcrypt: Development version -- Repository format MAY CHANGE
-gcrypt: Decrypting manifest
-gpg: Signature made Son 13 Sep 2015 19:37:16 CEST using RSA key ID B9494715
-gpg: Good signature from "Arian Sanusi <arian@sanusi.ch>"
-gpg:                 aka "Arian Sanusi <arian@sanusi.de>"
-gpg:                 aka "Arian Sanusi <asanusi@student.ethz.ch>"
-gpg:                 aka "Arian Sanusi <arian@guave.org>"
-gpg:                 aka "Arian Sanusi <asanusi@ethz.ch>"
-gpg:                 aka "Arian Sanusi <arian@semioptimal.net>"
-Everything up-to-date
-error: could not lock config file /home/arian-debian-ssd/astro.git/.git/config: Datei oder Verzeichnis nicht gefunden
-git-annex: git [Param "config",Param "core.gcrypt-id",Param ":id:1+DP8KgrbsvpSycQ5QKO"] failed
-```
-
-debian stretch *pre gcc5* on amd64 here:
-
-```
-i  git                 1:2.5.1-1    amd64
-ii  git-annex           5.20150812-2 amd64
-ii  git-remote-gcrypt   0.20130908-7 all
-```
diff --git a/doc/bugs/git-annex-shell/comment_1_3d2c3827de34509c0a5595eda07dd18f._comment b/doc/bugs/git-annex-shell/comment_1_3d2c3827de34509c0a5595eda07dd18f._comment
deleted file mode 100644
--- a/doc/bugs/git-annex-shell/comment_1_3d2c3827de34509c0a5595eda07dd18f._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2015-04-09T17:48:20Z"
- content="""
-GIT_SSH is set to the full path of the binary, unless
-~/.config/git-annex/program overrides it.
-
-Finding the full path to the binary is not a trivial or error-free
-operation.
-
-Could you please follow up to this bug or close it?
-"""]]
diff --git a/doc/bugs/git-annex-shell__58___gcryptsetup_permission_denied.mdwn b/doc/bugs/git-annex-shell__58___gcryptsetup_permission_denied.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex-shell__58___gcryptsetup_permission_denied.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-### Please describe the problem.
-I followed the tip on [fully encrypted git repositories with gcrypt](http://git-annex.branchable.com/tips/fully_encrypted_git_repositories_with_gcrypt/) to create encrypted git-annex repository on a ssh server. When I try to checkout the repository, things break as follows:
-
-`git clone gcrypt::ssh://my.server/home/me/encryptedrepo myrepo` 
-
-works as expected but when in the myrepo directory, 
-
-`git annex enableremote encryptedrepo gitrepo=ssh://my.server/home/me/encryptedrepo`
-
-issues the following text (among normal messages):
-
-`git-annex-shell: gcryptsetup permission denied`
-
-Then while the links are there, 
-
-`git annex get --from encryptedrepo`
-
-does nothing (in the sense that the content is not retrieved). 
-
-This seems to have everything to do with git-annex-shell as the exact same manipulations but with a local repository work perfectly. Unfortunately, I don't know haskell so [this code](https://github.com/joeyh/git-annex/blob/master/Command/GCryptSetup.hs) is cryptic to me. I can guess there is a problem getting the uuid of the repository, but as far as I can tell the bare distant repo looks fine. 
-
-### What steps will reproduce the problem?
-
-Create a standard git annex local repository and then follow the [fully encrypted git repositories with gcrypt tip](http://git-annex.branchable.com/tips/fully_encrypted_git_repositories_with_gcrypt/) to create an encrypted git-annex repository on a ssh server. Then follow the instructions in the same tip to clone the remote repository. 
-
-### What version of git-annex are you using? On what operating system?
-Both computers run ubuntu 12.04 with all updates and the latest git annex from the ppa, that is:
-
-git-annex version: 4.20131024
-
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA
-
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
-
-remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
-
-
-### 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.
-"""]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/git-annex__58___failed_to_lock_content.mdwn b/doc/bugs/git-annex__58___failed_to_lock_content.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex__58___failed_to_lock_content.mdwn
+++ /dev/null
@@ -1,107 +0,0 @@
-### Please describe the problem.
-
-Cannot drop unused files on a USB drive, failing with the error message "git-annex: failed to lock content".
-
-### What steps will reproduce the problem?
-
-1. Installed stand-alone verison of git-annex on Ubuntu sometime last month
-2. Created a repository on my main HD, upgraded to v6
-3. Added files to it
-4. Created a USB (vfat) repo using the webapp without encryption; stopped the webapp, and ran `git annex get` on the USB repo.
-5. Saw that I had added some files to the repo by mistake, and used `git annex unannex $FILES` on the main HD, then `git annex unused`, then `git annex dropunused 1-101`
-6. Re-synced both repos
-7. In the USB repo, `git annex unused` showed the same list as on the HD.
-8. `git annex dropunused 1-101` then fails
-9. Installed the latest stand-alone version (6.20160229-gbe4820c)
-10. tried dropping again, didn't work; reboot the computer; tried dropping again, didn't work.
-11. ran `git annex upgrade` on USB repo, tried dropping agian, no success
-
-### What version of git-annex are you using? On what operating system?
-
-* git annex version 6.20160229-gbe4820c
-* Ubuntu 15.10
-
-### Please provide any additional information below.
-
-[[!format sh """
-/media/ellis/USB04/repo/taiji-lib
-% cat annex/unused
-2 SHA256E-s562039928--04903c0b7d4e16062b3dc0bf17a84ce7943545d9437b80947ff98a3d3483e66e.AVI 1457129072.853555s
-101 SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav 1457129072.853555s
-...
-44 SHA256E-s561941624--fdf6f89d9403464d4c494eac67fc1525aa6b9b0adc96be99f7d42e7f5472e44c.avi 1457129072.853555s
-
-/media/ellis/USB04/repo/taiji-lib
-% git annex dropunused 101 --debug                                                                                                                                                                                                                                13:09:28
-[2016-03-05 13:09:28.675403] read: git ["--git-dir=.","--literal-pathspecs","show-ref","git-annex"]
-[2016-03-05 13:09:28.677635] process done ExitSuccess
-[2016-03-05 13:09:28.67773] read: git ["--git-dir=.","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
-[2016-03-05 13:09:28.679775] process done ExitSuccess
-[2016-03-05 13:09:28.680234] read: git ["--git-dir=.","--literal-pathspecs","log","refs/heads/git-annex..aee0b39b5232c369721c08eb782a7143ba2f8901","-n1","--pretty=%H"]
-[2016-03-05 13:09:28.685879] process done ExitSuccess
-[2016-03-05 13:09:28.686006] read: git ["--git-dir=.","--literal-pathspecs","log","refs/heads/git-annex..2b2b2747a6533f115867cc7a70a426764fc90286","-n1","--pretty=%H"]
-[2016-03-05 13:09:28.688135] process done ExitSuccess
-[2016-03-05 13:09:28.688227] read: git ["--git-dir=.","--literal-pathspecs","log","refs/heads/git-annex..4f4acf1555539a7bcb520e4befbeab803f220f67","-n1","--pretty=%H"]
-[2016-03-05 13:09:28.690357] process done ExitSuccess
-[2016-03-05 13:09:28.691327] chat: git ["--git-dir=.","--literal-pathspecs","cat-file","--batch"]
-dropunused 101 git-annex: failed to lock content: ./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav: openFd: permission denied (Permission denied)
-
-/media/ellis/USB04/repo/taiji-lib
-% ls -l ./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav
--r--r--r-- 1 ellis ellis 38464078 Mar  4 18:32 ./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav
-
-/media/ellis/USB04/repo/taiji-lib
-% strace -e file -f git annex dropunused 101 --debug
-...
-[pid  4646] openat(AT_FDCWD, "./objects/pack", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
-[pid  4646] access("./objects/pack/pack-80b045ea51312a9d40fdefd0c76ef54d494cd5c1.keep", F_OK) = -1 ENOENT (No such file or directory)
-[pid  4646] stat("./objects/pack/pack-80b045ea51312a9d40fdefd0c76ef54d494cd5c1.pack", {st_mode=S_IFREG|0644, st_size=828068, ...}) = 0
-[pid  4646] access("./objects/pack/pack-69caefc604cfbcb2f374ab0b4266f444fec4930f.keep", F_OK <unfinished ...>
-[pid  4636] --- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_pid=0, si_uid=1, si_value=0} ---
-[pid  4646] <... access resumed> )      = -1 ENOENT (No such file or directory)
-[pid  4646] stat("./objects/pack/pack-69caefc604cfbcb2f374ab0b4266f444fec4930f.pack", {st_mode=S_IFREG|0644, st_size=55237, ...}) = 0
-[pid  4646] access("./objects/pack/pack-f6711fe647796d2143d12b6f915686d373f4e69b.keep", F_OK) = -1 ENOENT (No such file or directory)
-[pid  4646] stat("./objects/pack/pack-f6711fe647796d2143d12b6f915686d373f4e69b.pack", {st_mode=S_IFREG|0644, st_size=116702, ...}) = 0
-[pid  4646] access("./objects/pack/pack-31185be34b1a30abb4b6e427c1ec924cfee300af.keep", F_OK) = -1 ENOENT (No such file or directory)
-[pid  4646] stat("./objects/pack/pack-31185be34b1a30abb4b6e427c1ec924cfee300af.pack", {st_mode=S_IFREG|0644, st_size=116197, ...}) = 0
-[pid  4646] getcwd("/media/ellis/USB04/repo/taiji-lib", 129) = 34
-[pid  4646] open("./objects/info/alternates", O_RDONLY|O_NOATIME) = -1 ENOENT (No such file or directory)
-[pid  4646] open("./objects/pack/pack-f6711fe647796d2143d12b6f915686d373f4e69b.idx", O_RDONLY|O_NOATIME) = 3
-[pid  4646] open("./objects/pack/pack-31185be34b1a30abb4b6e427c1ec924cfee300af.idx", O_RDONLY|O_NOATIME) = 3
-[pid  4646] open("./objects/pack/pack-80b045ea51312a9d40fdefd0c76ef54d494cd5c1.idx", O_RDONLY|O_NOATIME) = 3
-[pid  4646] open("./objects/pack/pack-69caefc604cfbcb2f374ab0b4266f444fec4930f.idx", O_RDONLY|O_NOATIME) = 3
-[pid  4646] open("./objects/ae/e0b39b5232c369721c08eb782a7143ba2f8901", O_RDONLY|O_NOATIME) = 3
-[pid  4646] open("./objects/1d/ca126189c826e37b03897754fab7e8a8687683", O_RDONLY|O_NOATIME) = 3
-[pid  4636] stat("./annex/unused", {st_mode=S_IFREG|0644, st_size=11160, ...}) = 0
-[pid  4636] open("./annex/unused", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 11
-[pid  4636] --- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_pid=0, si_uid=0, si_value=0} ---
-[pid  4636] stat("./annex/badunused", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-[pid  4636] open("./annex/badunused", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 11
-[pid  4636] stat("./annex/tmpunused", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
-[pid  4636] open("./annex/tmpunused", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 11
-dropunused 101 [pid  4636] stat("./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav", {st_mode=S_IFREG|0444, st_size=38464078, ...}) = 0
-[pid  4636] stat("./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav", {st_mode=S_IFREG|0444, st_size=38464078, ...}) = 0
-[pid  4636] stat("./annex", {st_mode=S_IFDIR|0755, st_size=32768, ...}) = 0
-[pid  4636] open("./annex/keys.lck", O_RDWR|O_CREAT, 0666) = 11
-[pid  4636] stat("./annex/keys/db", 0x7f2247d0ceb0) = -1 ENOENT (No such file or directory)
-[pid  4636] --- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_pid=0, si_uid=9, si_value=0} ---
-[pid  4636] stat("./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav", {st_mode=S_IFREG|0444, st_size=38464078, ...}) = 0
-[pid  4636] open("./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav", O_RDWR) = -1 EACCES (Permission denied)
-git-annex: failed to lock content: ./annex/objects/97e/78c/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav/SHA256E-s38464078--0db38599ed526d248857015c7b8e1b177af646939f8e0c8004b17a931ce2e101.wav: openFd: permission denied (Permission denied)
-[pid  4638] +++ exited with 0 +++
-[pid  4639] +++ exited with 0 +++
-[pid  4637] +++ exited with 0 +++
-[pid  4636] +++ exited with 1 +++
-[pid  4623] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=4636, si_status=1, si_utime=1, si_stime=4} ---
-[pid  4623] +++ exited with 1 +++
-+++ exited with 0 +++
-
-"""]]
-
-Could the problem have something to do with the file having permission 0444 and trying to opening it O_RDWR?
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Been using it since your kickstarter campaign!
-
-> [[done]] --[[Joey]]
diff --git a/doc/bugs/git-annex__58___fd__58__14__58___hGetLine__58___end_of_file.mdwn b/doc/bugs/git-annex__58___fd__58__14__58___hGetLine__58___end_of_file.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex__58___fd__58__14__58___hGetLine__58___end_of_file.mdwn
+++ /dev/null
@@ -1,51 +0,0 @@
-[[!tag moreinfo]]
-
-### Please describe the problem.
-
-git-annex webapp won't run 
-
-### What steps will reproduce the problem?
-
-[[!format sh """
-arthur@machine:~/annex$ git-annex --debug webapp
-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","show-ref","git-annex"]
-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","show-ref","--hash","refs/heads/git-annex"]
-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..a2b8f10ef258dff1a91e0354b2e2a58241631c9a","--oneline","-n1"]
-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty
-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt
-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..8d4b8e04ccf0092d625f680b42e73d7bf15c6517","--oneline","-n1"]
-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty
-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt
-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..6b2665208c11c9ecf969294bf45baac31894d8a7","--oneline","-n1"]
-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty
-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt
-[2013-07-29 15:02:15 CEST] read: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","log","refs/heads/git-annex..9d8429668f2148ea43760fb430e5950fbf42751e","--oneline","-n1"]
-error: object file /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a is empty
-fatal: loose object a2b8f10ef258dff1a91e0354b2e2a58241631c9a (stored in /home/arthur/annex/.git/objects/a2/b8f10ef258dff1a91e0354b2e2a58241631c9a) is corrupt
-[2013-07-29 15:02:15 CEST] chat: git ["--git-dir=/home/arthur/annex/.git","--work-tree=/home/arthur/annex","cat-file","--batch"]
-
-git-annex: fd:14: hGetLine: end of file
-failed
-[2013-07-29 15:02:15 CEST] read: ssh ["-O","stop","-S","/home/arthur/annex/.git/annex/ssh/arthur@git-annex-hostname-arthur_annex","-o","ControlMaster=auto","-o","ControlPersist=yes","arthur@git-annex-hostname-arthur_annex"]
-git-annex: webapp: 1 failed
-"""]]
-
-
-### What version of git-annex are you using? On what operating system?
-
-
-$ git-annex version
-git-annex version: 4.20130516.1
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-local repository version: 3
-default repository version: 3
-supported repository versions: 3 4
-upgrade supported from repository versions: 0 1 2
-
-$ git --version
-git version 1.7.9.5
-
-
-### Please provide any additional information below.
-
-
diff --git a/doc/bugs/git-annex_branch_not_being_pushed_after_git-annex_forget.mdwn b/doc/bugs/git-annex_branch_not_being_pushed_after_git-annex_forget.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_branch_not_being_pushed_after_git-annex_forget.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-### Please describe the problem.
-I have a repository that is being synced with a normal Bitbucket git repository (with `annex-ignore = true`). It's been created with the webapp in direct mode and I'm using the assistant.
-
-Everything is working fine, but after running `git annex forget` the git-annex branch in Bitbucket stopped being pushed. git-annex is still working correctly, but I have a lot of useless commits in the history.
-
-So currently I have this branches:
-
-    # git branch -a
-    * annex/direct/master
-      git-annex
-      master
-      synced/master
-      remotes/bitbucket/git-annex
-      remotes/bitbucket/master
-      remotes/bitbucket/synced/git-annex
-      remotes/bitbucket/synced/master
-
-And `remotes/bitbucket/git-annex` isn't being updated with the content of `git-annex`
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150812 and 5.20150731 in Debian Sid and Testing
-
-### Please provide any additional information below.
-
-As I've said, git-annex is still working normally, so the solution might be to simply remove that branch.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I use `git-annex` daily with 3 repositories with a total of ~112GB, and I'm really happy with it. Thank you very much for the effort.
diff --git a/doc/bugs/git-annex_branch_shows_commit_with_looong_commitlog.mdwn b/doc/bugs/git-annex_branch_shows_commit_with_looong_commitlog.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_branch_shows_commit_with_looong_commitlog.mdwn
+++ /dev/null
@@ -1,74 +0,0 @@
-### Please describe the problem.
-
-I have found a really weird commit in my git-annex branch:
-
-    * a59dd1c update (il y a 8 heures) <Antoine Beaupré>
-    * 57f887a update (recovery from race) (recovery from race) (recovery from race) [...]
-
-it repeats that for a looong time. about 12 000 times, to be more precise:
-
-[[!format sh """
-anarcat@marcos:video$ git show 57f887a | wc
-      5   12686   88850
-"""]]
-
-### What steps will reproduce the problem?
-
-Now i have absolutely no idea how I managed that. I got through some pretty dark moments last night trying various levels of git-annex voodoo (including a duplicate repo which was rsync'd to a backup drive so the unique identifier applied to two distinct paths), so I have no idea exactly what happened here.
-
-### What version of git-annex are you using? On what operating system?
-
-debian jessie amd64 5.20140412
-
-### Please provide any additional information below.
-
-[[!format sh """
-anarcat@marcos:video$ git show 57f887a | tail -c 100
-very from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race)
-anarcat@marcos:video$ git show 57f887a | head -c 512
-commit 57f887a9d766829d00832ad1ee23b2785212d055
-Author: Antoine Beaupré <anarcat@koumbit.org>
-Date:   Sat Apr 19 01:48:18 2014 -0400
-
-    update (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery from race) (recovery
-"""]]
-
-that's 80KB for only one commit here - maybe that should be cleaned up? --[[anarcat]]
-
-Ah! more information: it seems that 01:48 was the moment i shutdown the assistant in yet another panic... 
-
-[[!format sh """
-anarcat@marcos:video$ ls -al .git/annex/daemon.log*
--rw-r--r-- 1 anarcat anarcat  17075 avril 19 09:28 .git/annex/daemon.log
--rw-r--r-- 1 anarcat anarcat 128367 avril 19 01:48 .git/annex/daemon.log.1
-"""]]
-
-an extract from that second logfile:
-
-[[!format sh """
-19/Apr/2014:01:31:38 -0400 [Error#yesod-core] unknown response from git cat-file ("9a73bf01-ed01-450d-a0ab-f20fff47ed32 encryption=none name=stephc rsyncurl=192.168.0.104:video/ type=rsync timestamp=1397865844.925354s","refs/heads/git-annex:remote.log") @(yesod-core-1.2.3:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:471:5)
-19/Apr/2014:01:31:50 -0400 [Error#yesod-core] unknown response from git cat-file ("fe428a7a-25a2-4c2e-b01f-315c490cbe45 encryption=none name=myrsync rsyncurl=/home/anarcat/video/ type=rsync timestamp=1397868063.038898s","refs/heads/git-annex:remote.log") @(yesod-core-1.2.3:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:471:5)
-19/Apr/2014:01:31:57 -0400 [Error#yesod-core] unknown response from git cat-file ("","refs/heads/git-annex:remote.log") @(yesod-core-1.2.3:Yesod.Core.Class.Yesod ./Yesod/Core/Class/Yesod.hs:471:5)
-[2014-04-19 01:32:03 EDT] TransferScanner: Syncing with test, mnt
-Depuis /mnt/video
- * [nouvelle branche] synced/git-annex -> test/synced/git-annex
- * [nouvelle branche] synced/master -> test/synced/master
-fatal: 'mnt' does not appear to be a git repository
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-Already up-to-date.
-[2014-04-19 01:32:21 EDT] main: warning git-annex has been shut down
-
-(Recording state in git...)
-(Recording state in git...)
-(Recording state in git...)
-(Recording state in git...)
-"""]]
-
-the last line repeats about 4000 times.
-
-i would love to paste the daemon.log.1 file, but it seems like it containts encryption credentials... which i have no idea how to get rid of or change.
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/git-annex_can__39__t_find_gpg_if_it__39__s_named_gpg2.mdwn b/doc/bugs/git-annex_can__39__t_find_gpg_if_it__39__s_named_gpg2.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_can__39__t_find_gpg_if_it__39__s_named_gpg2.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-### Please describe the problem.
-
-git-annex requires a `gpg -> gpg2` alias, which is dangerous for other software to misuse.
-
-### What steps will reproduce the problem?
-
-Run any gpg-requiring operation on a machine that has only gpg2 installed and no gpg alias.
-
-    gpg: createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20150710
-
-OS X, gpg2 installed with brew
-
-### Have you had any luck using git-annex before?
-
-git-annex took some time to get in the mentality and configure, but now it's a beautiful perfectly oiled file management system. Thanks!
-
->  git.program support now implemented, [[done]] --[[Joey]]
diff --git a/doc/bugs/git-annex_cannot_connect_to_freenet_cloud___40__webdav__41__.mdwn b/doc/bugs/git-annex_cannot_connect_to_freenet_cloud___40__webdav__41__.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_cannot_connect_to_freenet_cloud___40__webdav__41__.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-### Please describe the problem.
-
-git-annex's WebDAV support does not like (aka it does not work) the WebDAV server of the freenet cloud.
-    
-### What steps will reproduce the problem?
-
-My first attempt was:
-
-    WEBDAV_USERNAME='XXX' WEBDAV_PASSWORD='XXX' git annex initremote webdav type=webdav url='https://webmail.freenet.de/webdav' encryption=none
-    initremote webdav (testing WebDAV server...) 
-    git-annex: WebDAV test failed: StatusCodeException (Status {statusCode = 401, statusMessage = "Unauthorized"}) [("Date","Fri, 04 Dec 2015 12:20:57 GMT"),("Server","Apache/2.2.16 (Debian)"),("WWW-Authenticate","Basic realm=\"MD-Cloud\""),
-    ("Vary","Accept-Encoding"),("Content-Encoding","gzip"),("Content-Length","20"),("Connection","close"),("Content-Type","text/html; charset=iso-8859-15"),("X-Response-Body-Start",""),("X-Request-URL","MKCOL https://webmail.freenet.de:443/webdav/tmp")]
-    (CJ {expose = []}): user error failed
-    git-annex: initremote: 1 failed
-
-Ok this fails (what is the error?). However, it does create a folder "tmp" in the "cloud". A second attempt yields another error:
-
-    WEBDAV_USERNAME='XXX' WEBDAV_PASSWORD='XXX' git annex initremote webdav type=webdav url='https://webmail.freenet.de/webdav' encryption=none
-    initremote webdav (testing WebDAV server...) 
-    git-annex: WebDAV test failed: StatusCodeException (Status {statusCode = 501, statusMessage = "Not Implemented"}) [("Date","Fri, 04 Dec 2015 12:21:22 GMT"),("Server","Apache/2.2.16 (Debian)"),("Content-Length","349"),("Connection","close"),
-    ("Content-Type","application/xml; charset=utf-8"),("X-Response-Body-Start","<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<d:error xmlns:d=\"DAV:\" xmlns:s=\"http://sabredav.org/ns\">\n  <s:exception>Sabre\\DAV\\Exception\\NotImplemented</s:exception>\n  
-    <s:message>This server is not compatible with OS/X finder. Consider using a different WebDAV client or webserver.</s:message>\n  <s:sabredav-version>1.8.6</s:sabredav-version>\n</d:error>\n"),("X-Request-URL","PUT https://webmail.freenet.de:443/webdav
-    /tmp/git-annex-test")] (CJ {expose = []}): user error failed
-    git-annex: initremote: 1 failed
-
-which is I guess the same. The WebDAV server does support writing and locking files. I tried writing using davfs2 and locking-unlocking using cadaver. I guess in the end that it's the server's fault, but it would be great to know what exactly fails at this point :).
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20151116-gbe86081
-
-Gentoo Linux
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-First time trying WebDAV support.
diff --git a/doc/bugs/git-annex_confuses_Git_with_nested_submodules.mdwn b/doc/bugs/git-annex_confuses_Git_with_nested_submodules.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_confuses_Git_with_nested_submodules.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-### Please describe the problem.
-The way git-annex deals with submodules (replacing the .git file in the submodule, with a link to the corresponding gitdir of the submodule) seems to confuse Git when creating another submodule in an annex-init'ed submodule.
-
-### What steps will reproduce the problem?
-    % mkdir some ; cd some; git init
-    Initialized empty Git repository in /tmp/some/.git/
-    % git submodule add /src/somegitrepo sub_lvl1
-    Cloning into 'sub_lvl1'...
-    done.
-    % cd sub_lvl1
-    % git annex init
-    init  (merging origin/git-annex into git-annex...)
-    (recording state in git...)
-    ok
-    (recording state in git...)
-    % git submodule add /src/somegitrepo sub_lvl2
-    Cloning into 'sub_lvl2'...
-    done.
-    fatal: Could not chdir to '../../../sub_lvl2': No such file or directory
-    Unable to checkout submodule 'sub_lvl2'
-
-### What version of git-annex are you using? On what operating system?
-    % apt-cache policy git-annex-standalone
-    git-annex-standalone:
-      Installed: 6.20160213+gitg9597a21-1~ndall+1
-
-Debian stretch, git-annex from NeuroDebian.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Yes, lots! Using it for some of its original use cases for more than five years now -- I was actually surprised to learn, just now, that the oldest commit in my music repository is exactly 5 years and 6 days old. Thanks for longevity and reliability!
-
-More recently I aim exploring the use of git annex for managing datasets and their dependencies, i.e. going from raw to some processed state over multiple levels, where each level is a useful starting point for some analysis, and each previous level is a dependency (input) to the next. With just one level above "raw" this has massively improved collaboration workflows in student/teacher settings for me. Deeper nesting levels would allow for even more interesting applications, but see above ;-) I think Git seems needlessly confused, but I don't fully grasp what is happening yet. I'd appreciate any insight you may have. Although it is Git that shows the undesired behavior, it seems it is git-annex that ultimately confused it. Hence I came here first.
-
-BTW: What a nice idea to ask for something like this in a bug report.
-
-
-[[!meta author=mih]]
diff --git a/doc/bugs/git-annex_creates_many_zombies.mdwn b/doc/bugs/git-annex_creates_many_zombies.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_creates_many_zombies.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-### Please describe the problem.
-
-In a debian unstable docker container, I run `git-annex assistant --auto` on a few repositories.
-
-After a few days, I have many (> 10000 right now) zombie processes:
-
-    % ps x | grep "git-annex.*defunct" | wc -l
-    10325
-
-### What steps will reproduce the problem?
-
-Keep `git-annex assistant` running.
-
-### What version of git-annex are you using? On what operating system?
-
-Binary version 5.20151116-gbe86081 on Debian Linux unstable (up-to-date from a few days ago when my docker container started)
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I couldn't live without git-annex to synchronize my documents over multiple hosts and archives :-)
-
-> [[done]]; this is a docker bug if anything, and I really don't see any
-> way git-annex can solve it. --[[Joey]]
diff --git a/doc/bugs/git-annex_died_of_signal_11_when_syncing_content.mdwn b/doc/bugs/git-annex_died_of_signal_11_when_syncing_content.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_died_of_signal_11_when_syncing_content.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-### Please describe the problem.
-
-git-annex dies of signal 11 when syncing content with Box.
-
-I noticed that the assistant stopped syncing after a few files, so I tried to sync manually through the terminal and saw the error.
-
-### What steps will reproduce the problem?
-
-    $ git annex sync box.com --content
-    commit  ok
-    copy myfile1 (checking box.com...) (to box.com...) 
-    ok                      
-    copy myfile2 (checking box.com...) (to box.com...) 
-    ok                      
-    copy myfile3 (checking box.com...) (to box.com...) 
-    ok                      
-    copy myfile4 (checking box.com...) (to box.com...) 
-    ok                      
-    copy myfile5 (checking box.com...) error: git-annex died of signal 11
-
-The number of files that are copied correctly is quite random, some times it syncs 200 files and other times only 2 or 3.
-
-
-### What version of git-annex are you using? On what operating system?
-
-5.20141125 on Debian Sid (everything install from official packages)
-
-### Please provide any additional information below.
-
-I don't know how to get more details of the problem, I haven't manage to get a more precise error activating logs or verbose mode, if there's anything I can do to debug the problem I'll be more than willing.
diff --git a/doc/bugs/git-annex_does_not_install_on_windows_without_admin_rights.mdwn b/doc/bugs/git-annex_does_not_install_on_windows_without_admin_rights.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_does_not_install_on_windows_without_admin_rights.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-### Please describe the problem.
-
-Installing on Windows requires installing git followed by git-annex.
-Installing the former works without admin rights, but the latter cannot be
-installed afterwards.
-
-### What steps will reproduce the problem?
-
-1. Create a Windows account without admin rights
-2. Install git
-3. Install git-annex
-
-### What version of git-annex are you using? On what operating system?
-
-Latest release on MS Windows.
-
-### Please provide any additional information below.
-
-
-Installing git creates read-only directories that cannot be used by the
-git-annex install afterwards. Without admin rights, the read-only flag of
-the git dir cannot be altered.
-
-[[!tag confirmed]]
diff --git a/doc/bugs/git-annex_get_with_umlaut_characters_in_filenames.mdwn b/doc/bugs/git-annex_get_with_umlaut_characters_in_filenames.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_get_with_umlaut_characters_in_filenames.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-### Please describe the problem.
-
-Files with umlauts were not copied from local system, all other files were copied successfully.
-
-### What steps will reproduce the problem?
-
-Trying to sync content from a repository on the same machine.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20150727 / Darwin tba.lan 14.4.0 Darwin Kernel Version 14.4.0: Thu May 28 11:35:04 PDT 2015; root:xnu-2782.30.5~1/RELEASE_X86_64 x86_64
-
-### Please provide any additional information below.
-
-[[!format sh """
-$ git annex get .
-get Die Sterne/Flucht in die Flucht (Bonus Track Version)/03 Ihr wollt mich töten.m4a
-  Unable to access these remotes: tba
-
-  Try making some of these repositories available:
-  	2cabf5e0-00ae-4cc6-b9b7-5d303a7f3f06 -- Music [tba]
-   	8e315ed0-f318-45f7-98ca-1a791f9c92df -- jan@hostname:/srv/annex-Music
-failed
-get Die Sterne/Flucht in die Flucht (Bonus Track Version)/03 Ihr wollt mich töten.m4a
-  Unable to access these remotes: tba
-
-  Try making some of these repositories available:
-  	2cabf5e0-00ae-4cc6-b9b7-5d303a7f3f06 -- Music [tba]
-   	8e315ed0-f318-45f7-98ca-1a791f9c92df -- jan@hostname:/srv/annex-Music
-failed
-get Die Sterne/Flucht in die Flucht (Bonus Track Version)/10 Der Bär.m4a
-  Unable to access these remotes: tba
-
-  Try making some of these repositories available:
-  	2cabf5e0-00ae-4cc6-b9b7-5d303a7f3f06 -- Music [tba]
-   	8e315ed0-f318-45f7-98ca-1a791f9c92df -- jan@hostname:/srv/annex-Music
-failed
-get Die Sterne/Flucht in die Flucht (Bonus Track Version)/10 Der Bär.m4a
-  Unable to access these remotes: tba
-
-  Try making some of these repositories available:
-  	2cabf5e0-00ae-4cc6-b9b7-5d303a7f3f06 -- Music [tba]
-   	8e315ed0-f318-45f7-98ca-1a791f9c92df -- jan@hostname:/srv/annex-Music
-failed
-"""]]
-
-the *tba* repository is accessible since all the other files were synced correctly.
-
-Git status reports untracked files which look like they were renamed.
-
-[[!format sh """
-$ git status
-Untracked files:
-  (use "git add <file>..." to include in what will be committed)
-
-	"Ant\303\263nio Varia\303\247\303\265es/"
-	"B Fachada/B Fachada/01 sozinho no r\303\263que.mp3"
-	"B Fachada/B Fachada/03 D\303\241 mais m\303\272sica \303\240 b\303\263fia.mp3"
-"""]]
diff --git a/doc/bugs/git-annex_merge_stalls.mdwn b/doc/bugs/git-annex_merge_stalls.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_merge_stalls.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-### Please describe the problem.
-
-Running git-annex merge shows the output "git-annex merge ", followed by a blinking cursor. The command never seems to end.
-
-### What steps will reproduce the problem?
-
-
-### What version of git-annex are you using? On what operating system?
-
-4.20130827-gd04d9bb on MacOS X Mountain Lion
-
-### Please provide any additional information below.
-
-dtruss output at https://www.dropbox.com/s/4b3yqn7ajfz5el2/annex-merge.log
-
-[[!meta title="no indication when git-annex is stuck waiting for a lock"]]
-
-[[!tag confirmed]]
diff --git a/doc/bugs/git-annex_rewrites_.ssh__47__config.mdwn b/doc/bugs/git-annex_rewrites_.ssh__47__config.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_rewrites_.ssh__47__config.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-### Please describe the problem.
-Running git annex assistant, my .ssh/config file is rewritten. First, it is a symlink, but then git-annex makes it into an actual file. Second, it adds a trailing whitespace to a generic host block:
-
-    Host
-        ForwardAgent no
-        ...
-
-### What steps will reproduce the problem?
-For the symlink, just make .ssh/config a symlink to the real thing. Have a generic host block will add trailing whitespace. Starting git annex assistant will rewrite .ssh/config.
-
-### What version of git-annex are you using? On what operating system?
-git-annex-5.20140717-8.fc24.x86_64
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-Has worked wonders for syncing keepass files between devices; just now setting up assistant to do things automatically though :) .
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/git-annex_smudge_fails_on_git_add.mdwn b/doc/bugs/git-annex_smudge_fails_on_git_add.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_smudge_fails_on_git_add.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-### Please describe the problem.
-
-I want to be able to use "normal" git commands so I'm trying a v6 repo. 
-I have attempted to set up `.gitattributes` to only annex non-text mime types.  When I attempt to add something that would go into the annex, the `git-annex smudge` command fails.
-
-
-
-### What steps will reproduce the problem?
-
-See transcript below
-
-
-### What version of git-annex are you using? On what operating system?
-
-debian jessie; built from github using stack;installed to ~/.local/bin
-
-[[!format sh """
-git-annex version: 6.20160308-ge51f555
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotif
-y XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi                                                         
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_51
-2 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL         
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 6
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-"""]]
-
-### Please provide any additional information below.
-
-.gitattributes is:
-[[!format sh """
-* annex.largefiles=(not(mimetype=text/*))
-"""]]
-
-[[!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
-
-renn:/tmp/gat$ git init && git annex init --version=6                                                      
-Initialized empty Git repository in /tmp/gat/.git/
-init  ok
-(recording state in git...)
-renn:/tmp/gat$ cp ../tga/.gitattributes .
-renn:/tmp/gat$ git add .gitattributes 
-renn:/tmp/gat$ cp ../tga/pkdconvweb.mov .
-renn:/tmp/gat$ git add pkdconvweb.mov 
-error: cannot feed the input to external filter git-annex smudge --clean %f
-error: external filter git-annex smudge --clean %f failed
-
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-No, I'm a first-time user.  Thanks for this neat piece of software.
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/git-annex_sucking_up_all_available_RAM_after_startup.mdwn b/doc/bugs/git-annex_sucking_up_all_available_RAM_after_startup.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_sucking_up_all_available_RAM_after_startup.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-Hi.
-
-trying to manage my collection of digital music files using git-annex. The collection (113 gigs of flac files ripped from my CDs) should be stored on my three different machines and updated on all of them, if I add or change a file on only one of the machines.
-
-### Please describe the problem.
-
-Added a new external USB disk for sneaker transfer via web app, yesterday.
-
-Now for no apparent reason, after startup/login, git-annex would start and quickly suck up all available RAM. This is on a fairly well equipped machine (16G physical RAM, i5-2400), yet "top" tells me that there is one git process that sucks up more than 20G and climbing. It looked like this:
-
-    git --git-dir=/home/user/Sync/Audio/.git --work-tree=/home/user/Sync/Audio -c core.bare=false log refs/heads git-annex..13d365f16ffdb5a393f66362b840d3f21bb4c59c --oneline -n1
-
-The computer then slows down, grinds to halt, becomes unresponsive and it's difficult to even login on the console.
-
-Then, the OOM killer kicks in and kicks the git process, but git-annex quickly starts another which does the same.
-
-### What steps will reproduce the problem?
-
-I don't know what caused it. The symptoms remained after a reboot, "git annex watch --stop" didn't help either, since I'm a dumb web app user, I'm not sure if that's the right command to use anyway.
-
-For now, I have removed git-annex from the system.
-
-### What version of git-annex are you using? On what operating system?
-
-Last installed version: git-annex 5.20140127.1 on Ubuntu 13.10, amd64.
-
-### Please provide any additional information below.
-
-I'm fairly unsure where to look for the cause and what logs to provide you with to help fix this. Just guessing that it could be a symptom, but the daemon.log is full of entries like this:
-
-[[!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
-
-("race detected",ca2cbdb84bcbd4aab895284b16fc72f693fbba90,[4a2e7c1d7d286a4da9e816b20368ce2f9b4177c4],"committing",(ca2cbdb84bcbd4aab895284b16fc72f693fbba90,[ca2cbdb84bcbd4aab895284b16fc72f693fbba90]))
-(Recording state in git...)
-("race detected",28c835634e65ced0e532c1a0e4f34dd0344193bc,[19597be0f49fb859fafa51e006459d5a95e3d005],"committing",(28c835634e65ced0e532c1a0e4f34dd0344193bc,[28c835634e65ced0e532c1a0e4f34dd0344193bc]))
-(Recording state in git...)
-("race detected",1f2b06c7001be38bd9595eb2205c91454597edaa,[398660279436246a698d6bd55eb06998999ed64f],"committing",(1f2b06c7001be38bd9595eb2205c91454597edaa,[1f2b06c7001be38bd9595eb2205c91454597edaa]))
-(Recording state in git...)
-("race detected",4c1510c3db41ff400526d5753c03bddc48f5c37e,[1989177cf24ec9151058ed99f05117e48c239001],"committing",(4c1510c3db41ff400526d5753c03bddc48f5c37e,[4c1510c3db41ff400526d5753c03bddc48f5c37e]))
-(Recording state in git...)
-("race detected",b82f41fcbf24c43fe9f1f9d6fb54ba5ef9ff8de0,[799e4434447b18be63bd097120e1fbf56eac48ce],"committing",(b82f41fcbf24c43fe9f1f9d6fb54ba5ef9ff8de0,[b82f41fcbf24c43fe9f1f9d6fb54ba5ef9ff8de0]))
-(Recording state in git...)
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/git-annex_won__39__t_execute_on_WD_My_Cloud_NAS.mdwn b/doc/bugs/git-annex_won__39__t_execute_on_WD_My_Cloud_NAS.mdwn
deleted file mode 100644
--- a/doc/bugs/git-annex_won__39__t_execute_on_WD_My_Cloud_NAS.mdwn
+++ /dev/null
@@ -1,58 +0,0 @@
-### Please describe the problem.
-
-I'm trying to get git-annex running on a WD MyCloud EX2 NAS.
-
-There are a number of issues, I imagine to overcome, a few of which I've already managed to overcome.
-
-
-### What steps will reproduce the problem?
-
-I've managed to get it to work as special remote via rsync. But, it's nowhere near ideal. I was hoping to get working properly by installing git-annex locally on the machine.
-
-FYI, git 2.6.1 is already installed on the NAS.
-
-I can ssh into the NAS no problem. Only user sshd is allowed to ssh, but that's ok. Furthermore, the which command is missing, which prevented webapp lunched on my Mac from creating an rsync remote. Overcame that hurdle by "faking" it:
-[[!format sh """
-    > echo \#\!\/bin\/sh > /usr/bin/which
-    > echo command \-v \$\@ >> /usr/bin/which
-    > chmod +x /usr/bin/which
-"""]]
-
-I've downloaded the latest arm build. After untaring and running runshell successfully, I can't get through the next step, which is running git annex. It results in the following error:
-[[!format sh """
-    > git annex
-    /mnt/HD/HD_a2/git-annex/shimmed/git-annex/git-annex: error while loading shared libraries: /mnt/HD/HD_a2/git-annex/shimmed/git-annex/git-annex: ELF load command alignment not page-aligned
-    fatal: 'annex' appears to be a git command, but we were not able to execute it. Maybe git-annex is broken?
-"""]]
-
-same goes for
-[[!format sh """
-    > runshell git-annex-shell -c git annex:
-    /mnt/HD/HD_a2/Nas_Prog/git-annex/shimmed/git-annex-shell/git-annex-shell: error while loading shared libraries: /mnt/HD/HD_a2/Nas_Prog/git-annex/shimmed/git-annex-shell/git-annex-shell: ELF load command alignment not page-aligned
-"""]]
-
-and pretty much any of the git-annex binaries.
-
-Compiling from source is not an option.
-Any ideas? Thanks.
-
-### What version of git-annex are you using? On what operating system?
-
-I'm trying the latest version of git-annex-standalone-armel.tar.gz downloaded 2015-10-10.
-
-uname -a:  Linux WDMyCloudEX2 3.2.40 #4 Fri Jul 31 16:04:18 CST 2015 armv7l GNU/Linux
-
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Sure, runs on my Mac laptop
diff --git a/doc/bugs/git_annex_assistant_cannot_run_rsync___40__windows__41__.mdwn b/doc/bugs/git_annex_assistant_cannot_run_rsync___40__windows__41__.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_assistant_cannot_run_rsync___40__windows__41__.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-### Please describe the problem.
-
-When the assistant decides to sync the content of a file, it launches rsync. Windows shows an Application Error popup which says this:
-
-    The application was unable to start correctly (0xc000007b).
-
-Presumably it's crashing. 
-
-### What version of git-annex are you using? On what operating system?
-
-    git-annex version: 5.20151019-gcc50c00
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA     TorrentParser Database
-    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Not on windows so far :)
-
-> The page doesn't suggest getting the 32 bit version, it just says to get
-> it. Implication should be that's the version that works. I've noted that
-> this is an important requirement now. [[done]] --[[Joey]]
diff --git a/doc/bugs/git_annex_assistant_failing_with_ARM_NAS.mdwn b/doc/bugs/git_annex_assistant_failing_with_ARM_NAS.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_assistant_failing_with_ARM_NAS.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-I'm trying to use a Synology NAS (ARM architecture, DiskStation 214+) as a remote repository for my laptop, but I'm failing to get a convenient configuration to work.
-
-I already set-up git-annex on the NAS following the explanations found [here](http://git-annex.branchable.com/tips/Synology_NAS_and_git_annex/). I installed version **5.20150714-g8695533**.
-
-On my laptop I have the version provided with Ubuntu 14.04: **5.20140412ubuntu1**.
-
-If calling git annex from my laptop's command line and doing everything manually (git remote add, copy file to the dir, git annex add, git commit, git push, git annex copy), then it works properly.
-
-But when trying with the assistant I get this error:
-
-```
-fatal: unrecognized command 'sh -c 'mkdir -p '"'"'annex'"'"'&&cd '"'"'annex'"'"'&&if [ ! -d .git ]; then git init --bare --shared && git config receive.denyNonFastforwards false; fi&&git annex init''
-git-annex-shell: git-shell failed
-```
-
-This is the content of daemon.log:
-[[!format sh """
-[2015-08-04 00:51:41 CEST] main: starting assistant version 5.20140412ubuntu1
-[2015-08-04 00:51:41 CEST] Cronner: You should enable consistency checking to protect your data. 
-(Recording state in git...)
-(scanning...) [2015-08-04 00:51:41 CEST] Watcher: Performing startup scan
-(started...) [2015-08-04 00:52:41 CEST] Cronner: Consistency check in progress
-[2015-08-04 00:59:12 CEST] read: ssh-keygen ["-F","git-annex-trusted"]
-[2015-08-04 00:59:12 CEST] read: ssh ["-oNumberOfPasswordPrompts=0","-oStrictHostKeyChecking=no","-n","-p","22","git-annex@git-annex-trusted","sh -c 'echo git-annex-probe loggedin;if which git-annex-shell; then echo git-annex-probe git-annex-shell; fi;if which git; then echo git-annex-probe git; fi;if which rsync; then echo git-annex-probe rsync; fi;if which ~/.ssh/git-annex-shell; then echo git-annex-probe ~/.ssh/git-annex-shell; fi;cd '\"'\"'annex'\"'\"' && git config --list'"]
-[2015-08-04 00:59:13 CEST] read: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--with-colons","--list-secret-keys","--fixed-list-mode"]
-[2015-08-04 00:59:15 CEST] read: ssh ["-p","22","git-annex@git-annex-trusted","sh -c 'mkdir -p '\"'\"'annex'\"'\"'&&cd '\"'\"'annex'\"'\"'&&if [ ! -d .git ]; then git init --bare --shared && git config receive.denyNonFastforwards false; fi&&git annex init'"]
-"""]]
-
-Is there any problem with the version provided by Ubuntu that is producing this strange behavior?
diff --git a/doc/bugs/git_annex_assistant_leaks_a_lot_of_memory.mdwn b/doc/bugs/git_annex_assistant_leaks_a_lot_of_memory.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_assistant_leaks_a_lot_of_memory.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hi,
-
-I have a git-annex repository on a server managed by git annex assistant in indirect mode and as a backup group serving my org-mode files (organizer module for emacs) which are plain text files no more than a 100kb.
-
-I also have 2 clients in direct mode to sync the files across my computers.
-
-I save my files fairly often so the assistant might be a bit overwhelmed but I think it can managed that. At least it used to.
-
-Since maybe a couple months, the assistant running on the server has been leaking nearly 1Gb each day and I suspect it rises whenever I push files to it.
diff --git a/doc/bugs/git_annex_cannot_get_my_files_after_clone.mdwn b/doc/bugs/git_annex_cannot_get_my_files_after_clone.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_cannot_get_my_files_after_clone.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-### Please describe the problem.
-
-git annex cannot get me my file contents from my remotes
-
-### What steps will reproduce the problem?
-
-```
-git clone myserver:/path/to/repo
-cd repo
-git annex get
-```
-
-### What version of git-annex are you using? On what operating system?
-Using git-annex-5.20150327 on gentoo linux
-
-### Please provide any additional information below.
-
-The error messages I get egenrally look like:
-
-```
-get 2att/photos-glasgow/male/patrik.jpg (from clusterhost...) 
-git-annex: ../chymera/data/.git/annex/transfer/upload/b8415264-4b9a-40ca-b450-7e57507cdc06/lck.SHA256E-s814245--9dc6f1287ba683cae030e04ba7f94a73e566ce392c2d032f171094ddc342fa60.jpg: openFd: does not exist (No such file or directory)
-git-annex-shell: sendkey: 1 failed
-protocol version mismatch -- is your shell clean?
-(see the rsync man page for an explanation)
-rsync error: protocol incompatibility (code 2) at compat.c(176) [Receiver=3.1.1]
-
-  rsync failed -- run git annex again to resume file transfer
-
-  Unable to access these remotes: clusterhost
-
-  Try making some of these repositories available:
-  	809074b6-e079-4ea1-b2f8-2d7840deda7d -- zenbookhost
-   	a1ed6786-8b93-4a14-b00d-877b741e34da -- [clusterhost]
-failed
-```
diff --git a/doc/bugs/git_annex_daemon_crashes_when_authenticating_with_jabber.de.mdwn b/doc/bugs/git_annex_daemon_crashes_when_authenticating_with_jabber.de.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_daemon_crashes_when_authenticating_with_jabber.de.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-### Please describe the problem.
-In the webapp, I enter my credentials for my jabber.de account.  When I hit "use this account" the daemon and webapp crash.
-
-### What steps will reproduce the problem?
-Presumably, authenticate with a jabber.de account.
-
-### What version of git-annex are you using? On what operating system?
-git-annex version: 5.20140517-g0aed6d9
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-
-### Please provide any additional information below.
-
-[[!format sh """
-[2014-05-25 18:11:02 EDT] 127.0.0.1 POST /config/xmpp Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
-git-annex: <socket: 44>: hGetBuf: resource vanished (Connection reset by peer)
-git-annex: interrupted
-"""]]
-
-[[!tag confirmed forwarded]]
-
-[[!meta title="OSX xmpp crash with jabber.de"]]
diff --git a/doc/bugs/git_annex_direct_-__62___rename__58___does_not_exist.mdwn b/doc/bugs/git_annex_direct_-__62___rename__58___does_not_exist.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_direct_-__62___rename__58___does_not_exist.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-### Please describe the problem.
-
-git annex direct displays warnings(?)
-### What steps will reproduce the problem?
-    mkdir test
-    cd test
-    git init
-    git annex init
-    touch foobar.txt
-    git annex add
-    git annex direct
-
-
-### What version of git-annex are you using? On what operating system?
-5.20140717 (ubuntu 14.10)
-
-### 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.
-"""]]
-
-> [[done]]; cannot reproduce with current version of git-annex AFAICS.
-> --[[Joey]]
diff --git a/doc/bugs/git_annex_enableremote_gcrypt_failure_leaves_a_remote.mdwn b/doc/bugs/git_annex_enableremote_gcrypt_failure_leaves_a_remote.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_enableremote_gcrypt_failure_leaves_a_remote.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-### Please describe the problem.
-
-Running `git-annex enableremote remote` without a suitable key available leaves a partially unconfigured git remote.
-
-Subsequently making the key available and running `git-annex enableremote remote` a second time fails as the remote now partially exists.
-
-Removing the remote with `git remote remove remote` and then re-running `git-annex enable remote` seems to do the trick.
-
-However, I notice that even after syncing my special remotes are missing some details in the git config file - namely the `annex-gcrypt` and `annex-uuid` (there may have been more).  I fixed by adding the details from a working repo.
-
-Finally, when I initially created the gcrypt repo (by hand) I specified the remote as a local directory on the machine in question i.e. `gcrypt::/matt/mnt/isilon/rss/zzalsmf3/git-annex/mus` I then decided to make it available and changed it (via `git remote rename` to `gcrypt::ssh://rss/home/matt/mnt/isilon/rss/zzalsmf3/git-annex/mus`.  Unfortunately on other machines when I `git enableremote` it recovers the original remote which obviously doesn't work - how can I update this setting?
-
-Phew!
-
-
-
-### What steps will reproduce the problem?
-
-
-### What version of git-annex are you using? On what operating system?
-
-
-### 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.
-"""]]
diff --git a/doc/bugs/git_annex_get_fails_from_read-only_repository.mdwn b/doc/bugs/git_annex_get_fails_from_read-only_repository.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_get_fails_from_read-only_repository.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-### Please describe the problem.
-
-Getting a file from a read-only remote fails with the following error:
-
-[[!format sh """
-$ git annex get somefile.avi
-get somefile.avi (from some.repo...)
-git-annex: ../../../home/annex/repo/.git/annex/transfer/upload/9bxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxb4/lck.SHA256E-sxxxxxxx52--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8c.avi: openFd: does not exist (No su
-ch file oprotocol version mismatch -- is your shell clean?
-(see the rsync man page for an explanation)
-rsync error: protocol incompatibility (code 2) at compat.c(176) [Receiver=3.1.1]
-r directory)
-git-annex-shell: sendkey: 1 failed
-
-  rsync failed -- run git annex again to resume file transfer
-
-  Unable to access these remotes: some.repo
-
-  Try making some of these repositories available:
-        xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -- [some.repo]
-failed
-git-annex: get: 1 failed
-"""]]
-
-### What version of git-annex are you using? On what operating system?
-
-Locally git-annex 5.20141125 on debian/jessie, remotely 5.20150727 on FreeBSD.
-
-### Please provide any additional information below.
-
-Using `ps` I got the command executed on the remote side. Running it directly gives:
-
-[[!format sh """
-$ git-annex-shell sendkey /home/annex/repo SHA256E-sxxxxxxx52--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8c.avi --uuid 9axxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxde -- remoteuuid=9bxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxb4 direct= associatedfile=somefile.avi -- dummy rsync --server --sender -pe.Lsfx --inplace . .
-git-annex: ../../../home/annex/repo/.git/annex/transfer/upload/9bxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxb4/lck.SHA256E-sxxxxxxx52--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8c.avi: openFd: does not exist (No such file or directory)
-failed
-git-annex-shell: sendkey: 1 failed
-"""]]
-
-The remote repository is marked as read-only. The user on the remote has only read-only access to the git-annex repository.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Yes! :-) Despite this, everything works like a charm with several repos on different OSs with lots of data. Thanks for this great tool!
-
-> [[fixed|done]] --[[Joey]]
-
-If others are in the same situation as me here, note that you only need to upgrade the server side of things to resolve this. The backports from neurodebian work it, you need something at least 6.201602XX. --[[anarcat]]
diff --git a/doc/bugs/git_annex_import__58___ignored_names_fatal.mdwn b/doc/bugs/git_annex_import__58___ignored_names_fatal.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_import__58___ignored_names_fatal.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-### Please describe the problem.
-
-When I import files that include ignored files, it seems to confuse git-annex (see below).
-
-This chunk repeats over and over, it looks like import gets stuck until I delete the ignored files. 
-
-Can't the ignored files just be ignored?
-
-### What steps will reproduce the problem?
-
-`git annex import ../some-tree-with-ignored-files`
-
-### What version of git-annex are you using? On what operating system?
-
-    $ git annex version
-    git-annex version: 5.20140412ubuntu1
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-    git-annex: user error (xargs ["-0","git","--git-dir=/media/jean/Elements/annex/.git","--work-tree=/media/jean/Elements/annex","add","--"] exited 123)
-    failed
-    (Recording state in git...)
-    The following paths are ignored by one of your .gitignore files:
-    work/performancemanagement/performancemanagement.zuml1156079052355.tmp
-    Use -f if you really want to add them.
-    fatal: no files added
-
-# End of transcript or log.
-"""]]
-
-> Made git-annex import check for gitignored files before 
-> moving them into the work tree. [[done]] --[[Joey]]
diff --git a/doc/bugs/git_annex_import_fails_on_filenames_with_newlines_in_them.mdwn b/doc/bugs/git_annex_import_fails_on_filenames_with_newlines_in_them.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_import_fails_on_filenames_with_newlines_in_them.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-### Please describe the problem.
-I am importing a lot of old documents into my annex.  Some of these old files apparently have newlines in their filename.  A run of `git annex import` aborts when it encounters such a file; the file is moved to the annex, but it is left unstaged.
-
-### What steps will reproduce the problem?
-[[!format sh """
-bram@durian% mkdir annex
-bram@durian% cd annex
-bram@durian% git init
-Initialized empty Git repository in /home/bram/tmp/t/annex/.git/
-bram@durian% git annex init
-init  ok
-(Recording state in git...)
-bram@durian% echo foo > ../$'foo\nbar'
-bram@durian% ls -lb ..
-total 8
-drwxr-xr-x 3 bram bram 4096 Jul 26 18:20 annex/
--rw-r--r-- 1 bram bram    4 Jul 26 18:20 foo\nbar
-bram@durian% git annex import ../foo$'\n'bar
-import foo
-bar git-annex: unknown response from git cat-file ("HEAD:./foo missing","HEAD:./foo\nbar")
-bram@durian% ls -lb
-total 4
--r--r--r-- 2 bram bram 4 Jul 26 18:20 foo\nbar
-bram@durian% git status
-On branch master
-
-Initial commit
-
-Untracked files:
-  (use "git add <file>..." to include in what will be committed)
-
-	"foo\nbar"
-
-nothing added to commit but untracked files present (use "git add" to track)
-bram@durian% cat $'foo\nbar'
-foo
-"""]]
-
-
-### What version of git-annex are you using? On what operating system?
-    Debian unstable
-    git-annex version: 5.20140717
-    git version 2.0.1
-    Linux durian 3.14-1-amd64 #1 SMP Debian 3.14.9-1 (2014-06-30) x86_64 GNU/Linux
-
-[[!tag confirmed git-bug]]
-[[!title git limitations prevent using git-annex on filenames containing newlines]]
diff --git a/doc/bugs/git_annex_info_is_reporting_file_as_not_annexed_in_direct_mode.mdwn b/doc/bugs/git_annex_info_is_reporting_file_as_not_annexed_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_info_is_reporting_file_as_not_annexed_in_direct_mode.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-### Please describe the problem.
-
-I was thinking to answer Emanuele's question in forum (http://git-annex.branchable.com/forum/test_whether_a_file_is_already_annexed/) but realized that 'info' is not the way :-/ (whereis could be used I guess)
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150826+gitg87972f5-1~ndall+1
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-$> git annex indirect     
-commit  ok
-indirect 1.dat ok
-indirect  ok
-ok
-
-$> git annex info 1.dat
-file: 1.dat
-size: 4 bytes
-key: SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat
-
-$> git annex direct    
-commit  
-On branch master
-nothing to commit, working directory clean
-ok
-direct 1.dat ok
-direct  ok
-
-$> git annex info 1.dat
-git-annex: 1.dat is not a directory or an annexed file or a remote or a uuid
-
-
-"""]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/git_annex_preferred_content_strange_behavior.mdwn b/doc/bugs/git_annex_preferred_content_strange_behavior.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_preferred_content_strange_behavior.mdwn
+++ /dev/null
@@ -1,53 +0,0 @@
-### Please describe the problem.
-
-With a version above 5.20141125, git annex wants all remotes to get all files
-when one remote wants standard.
-
-### What steps will reproduce the problem?
-
-- Create repo "a" and "b"
-- Add "b" as a remote of "a"
-- Add a file in "a"
-- In "a", try git annex copy --to b. Nothing happens: this is the excepted behaviour
-- In "a", run git annex wanted here standard
-- In "a", try git annex copy --to b. Now, it wants to copy the file to "b" without any obvious (to me) reason
-
-It may be useful to emphasis the fact that git-annex wanted to copy a file to "b" while we did not change the preferred content of "b".
-
-I tried with the version 5.20141125 and the problem does not occur. It occurs
-though with the versions, 5.20150731-1, 5.20150916-1 and 5.20150930-g40fdbe9.
-
-### What version of git-annex are you using? On what operating system?
-
-    $ git annex version
-    git-annex version: 5.20150930-g40fdbe9
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA Database
-    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-### Please provide any additional information below.
-
-[[!format sh """
-mkdir a
-cd a
-git init
-git annex init
-echo a > a
-git annex add
-git commit -m "first commit"
-git clone . ../b
-git remote add b file://$(pwd)/../b
-git annex sync b
-git annex copy --to b --auto # nothing happens, this is normal
-git annex wanted here standard
-git annex copy --to b --auto # now, it copies the file to b. Why ??
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Definitely! git-annex is a wonderful tool that I have been using every day to manage all my files for 2 years now. Thank you for this excellent software.
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/git_annex_still_deleting_content_when_merging.mdwn b/doc/bugs/git_annex_still_deleting_content_when_merging.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_still_deleting_content_when_merging.mdwn
+++ /dev/null
@@ -1,97 +0,0 @@
-**Premise:**
-
-I've had this problem before 5.20140709-gc75193e and when the [ugly bug](http://git-annex.branchable.com/devblog/day_193-194__ugly_bug/) was discovered and fixed, I updated and thought it was gone.
-Yet, I'm still experiencing a content removal bug, so it might be something different altogether.
-I should also add that I don't know much about git log history and git-annex inner workings. I might need some help with finding the necessary information for debugging.
-
-**Bug description:**
-
-Two local computers, running Ubuntu-14.04 and Fedora-20 respectively, are paired through the assistant and functional with git annex 5.20140709. In direct mode. Most of the time, everything seems to work fine. Sometimes, *Computer A* will modify one file in its repository while *B* is offline. When *B* comes back online both repositories will lose their copy of the modified file (I'm not sure whether this also happens when they're both online when the change happens; it doesn't look like it anyway). The rest of the data in the repository is intact. This does not happen every time and I haven't been able to reproduce it consistently. Since 5.20140709 came out, it happened 2 or 3 times.
-
-Looking at 'git log --stat' in *B*:
-
-    commit d9eb9e94a39
-    Author: COMPUTER B
-    Date:   Thu Jul 17 18:17:16 2014 +0200
-      shared.skg | 1 -
-      1 file changed, 1 deletion(-)
-
-    commit 6fa27f08492
-    Author: COMPUTER A
-    Date:   Thu Jul 17 18:17:14 2014 +0200
-      shared.skg | 1 +
-      1 file changed, 1 insertion(+)
-
-    commit d25cc793739
-    Author: COMPUTER A
-    Date:   Thu Jul 17 18:17:12 2014 +0200
-      shared.skg | 1 -
-      1 file changed, 1 deletion(-)
-
-A change is apparently deleting and rewriting the whole file (maybe that's normal because it's a binary (encrypted) file?). The third most recent deletion is probably the one that shouldn't happen.
-
-Reverting "d9eb9e94a39" will only recover a placeholder, not really the original file. I can get the content back by going through *git annex unused* with *git log -S'key'*, then going to indirect mode, and then using *addunused*. This can only be done in the repository that changed the file in the first place (repo A), as the other repository only has the older version of the file in its unused list. This probably means that the change did not propagate before the file was deleted.
-
-**daemon.log transcript**
-
-[[!format sh """
-
-[2014-07-17 18:13:17 CEST] main: starting assistant version 5.20140709-gc75193e
-[2014-07-17 18:13:17 CEST] Cronner: You should enable consistency checking to protect your data. 
-[2014-07-17 18:13:55 CEST] TransferScanner: Syncing with asus.local_sincro 
-(scanning...) [2014-07-17 18:13:55 CEST] Watcher: Performing startup scan
-p11-kit: couldn't load module: /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so: /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so: cannot open shared object file: No such file or directory
-p11-kit: couldn't load module: /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: cannot open shared object file: No such file or directory
-(started...) p11-kit: couldn't load module: /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so: /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so: cannot open shared object file: No such file or directory
-p11-kit: couldn't load module: /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: cannot open shared object file: No such file or directory
-gpg: Signature made gio 17 lug 2014 18:02:09 CEST using DSA key ID 89C809CB
-gpg: /tmp/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from "git-annex distribution signing key (for Joey Hess) <id@joeyh.name>"
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
-[2014-07-17 18:13:58 CEST] Upgrader: An upgrade of git-annex is available.  (version 5.20140716)
-Everything up-to-date
-git-annex-shell: key is already present in annex
-rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.0]
-
-########## SYNCING STARTS HERE ###########
-
-[2014-07-17 18:17:12 CEST] RemoteControl: Syncing with asus.local_sincro 
-From ssh://git-annex-asus.local-USER-A_22_sincro/~/sincro
-   51815ea..d25cc79  annex/direct/master -> asus.local_sincro/annex/direct/master
-   0391880..49efa5f  git-annex  -> asus.local_sincro/git-annex
-   51815ea..d25cc79  master     -> asus.local_sincro/master
-   51815ea..d25cc79  synced/master -> asus.local_sincro/synced/master
-[2014-07-17 18:17:15 CEST] RemoteControl: Syncing with asus.local_sincro 
-Automatic merge went well; stopped before committing as requested
-Removing shared.skg
-From ssh://git-annex-asus.local-USER-A_22_sincro/~/sincro
-   d25cc79..6fa27f0  annex/direct/master -> asus.local_sincro/annex/direct/master
-   d25cc79..6fa27f0  master     -> asus.local_sincro/master
-   d25cc79..6fa27f0  synced/master -> asus.local_sincro/synced/master
-[2014-07-17 18:17:16 CEST] Committer: Committing changes to git
-[2014-07-17 18:17:16 CEST] Pusher: Syncing with asus.local_sincro 
-To ssh://USER-A@git-annex-asus.local-USER-A_22_sincro/~/sincro/
-   0391880..8d1c927  git-annex -> synced/git-annex
-   6fa27f0..d9eb9e9  annex/direct/master -> synced/master
-[2014-07-17 18:17:17 CEST] RemoteControl: Syncing with asus.local_sincro 
-From ssh://git-annex-asus.local-USER-A_22_sincro/~/sincro
-   49efa5f..e328661  git-annex  -> asus.local_sincro/git-annex
-[2014-07-17 18:17:20 CEST] RemoteControl: Syncing with asus.local_sincro 
-From ssh://git-annex-asus.local-USER-A_22_sincro/~/sincro
-   6fa27f0..d9eb9e9  annex/direct/master -> asus.local_sincro/annex/direct/master
-   e328661..32e44ce  git-annex  -> asus.local_sincro/git-annex
-
-# End of transcript or log.
-"""]]
-
-> [[Deleted_files_during_merge]] seems like much the same problem.
-> In both that bug report and this one, the file that gets deleted on B was
-> earlier modifed on A. There is a small difference, in that in this bug
-> report, A made 2 commits, first deleting the file and then adding back a
-> new version. In the other bug report, A made just 1 commit, changing the
-> file. --[[Joey]]
-
-[[!meta title="Assistant deleted file when merging"]]
diff --git a/doc/bugs/git_annex_sync_in_direct_mode_does_not_honor_skip-worktree.mdwn b/doc/bugs/git_annex_sync_in_direct_mode_does_not_honor_skip-worktree.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_sync_in_direct_mode_does_not_honor_skip-worktree.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-### Please describe the problem.
-
-In a direct mode repo (crippled/uncrippled filesystem does not matter), when a symlink is marked using `git update-index --skip-worktree <FILE>` and removed, git annex sync still `git rm`s the symlink. This does not happen in indirect mode (git annex sync leaves the symlink in git intact).
-
-### What steps will reproduce the problem?
-
-[[!format  sh """
-mkdir test-repo; cd test-repo
-git init
-git annex init
-echo file1 >file1
-git annex add
-git commit -m"update"
-cd ..
-git clone test-repo test-repo2; cd test-repo2
-git annex init
-git annex direct
-git update-index --skip-worktree file1
-rm file1
-git annex sync
-"""]]
-
-Output of `git annex sync` indicates file has been removed from git. Repeating these steps without the `git annex direct` above to set the second repo to direct mode will succeed in retaining the symlink in git.
-
-### What version of git-annex are you using? On what operating system?
-
-4.20130521 using git-annex-standalone AUR build (uses Linux executable tarball) on Arch Linux
-
-### Please provide any additional information below.
-
-I'd like to use the skip-worktree scheme in order to be able to rm the symlink files (from the filesystem, not git), specifically for my Android devices. Syncing my music annex creates .mp3 symlinks that aren't actually MP3s, which gives the stock apps some fits. This would only be for clearing out symlinks; I fully understand that trying to doing this for downloaded content in a direct repo would be a Class A no-no. :-)
-
-I did a little digging in the code, and it looks like the source of this is the stageDirect step done specifically by `git annex sync` in direct repos (which makes sense, since indirect repos work). It does `git ls-files --others --exclude-standard --stage`. This list includes files marked skip-worktree, which means skip-worktree files would be treated like normal, and deleted because it's no longer there. There is an additional `-t` argument that could be added to ls-files that would provide the tag field to indicate if a file was marked skip-worktree, and they could be filtered out of processing.
-
-I wonder if this would have side effects, or if there are other places in the code where skip-worktree files would need to be handled, though. I'm particularly motivated to solve this, so let me know if it doesn't look like it would get looked at right away, and I'll have an excuse to get a Haskell dev environment setup again and shake the rust off.
-
-[[!tag confirmed]]
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/bugs/git_annex_test_fails_when_run_through_powershell.mdwn b/doc/bugs/git_annex_test_fails_when_run_through_powershell.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_test_fails_when_run_through_powershell.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-### Please describe the problem.
-
-When running "git annex test" in a Powershell window, two tests fail (listed in additional details). I am assuming it is because it is using powershell internal commands instead of msys utilities, at least in the case of the "mv" failure. Specifying "mv.exe" instead of just "mv" on Windows should work.
-
-### What steps will reproduce the problem?
-
-Run "git annex test" from the powershell prompt. Two tests fail. All tests pass when run through cmd.
-
-### What version of git-annex are you using? On what operating system?
-
-Windows 7 Enterprise SP1
-Powershell version 4.0
-git version 1.9.5.msysgit.1
-git annex I *think* is 5.20150617, but I don't know for sure.
-
-### 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
-
-addurl failed on file:///ws/wcs-project-new/.t/tmprepo5/myurl
-
-"mv": cannot move `C:\\Users\\duffrw\\LOCALS~1\\Temp\\importtest.0\\import1\\f' to `import1\\f12956.tmp'
-git-annex: MoveFileEx "C:\\Users\\duffrw\\LOCALS~1\\Temp\\importtest.0\\import1\\f" "import1\\f": unsupported operation (The system cannot move the file to a different disk drive.)
-
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/git_annex_webapp_--listen_on_a_remote_linux_server.mdwn b/doc/bugs/git_annex_webapp_--listen_on_a_remote_linux_server.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_webapp_--listen_on_a_remote_linux_server.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-### Please describe the problem.
-
-webapp needs to be killed and restarted to finish setting up a new repository
-
-### What steps will reproduce the problem?
-
-I run on a remote linux server
-
-git annex webapp --listen=10.222.0.1:4000
-
-I get a url printed
-
-click the url, it opens in my browser
-click make a repository, and it doesn't finish loading the web page
-if I ctrl-c git on the remote server and start it up again, click
-the url again, i can continue to set up the new repository
-
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 4.20130709
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-
-debian wheezy with git-annex pinned from sid
-
-### 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
-
-[2013-07-19 08:09:54 EST] main: starting assistant version 4.20130709
-WebApp crashed: unable to bind to local socket
-[2013-07-19 08:09:54 EST] WebApp: warning WebApp crashed: unable to bind to local socket
-
-  dbus failed; falling back to mtab polling (ClientError {clientErrorMessage = "runClient: unable to determine DBUS address", clientErrorFatal = True})
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2013-07-19 08:09:54 EST] Watcher: Performing startup scan
-(started...) Merge made by the 'recursive' strategy.
- ...book.azw |    1 +
- 1 file changed, 1 insertion(+)
- create mode 120000 Books/book.azw
-[2013-07-19 08:13:03 EST] Committer: Committing changes to git
-
-
-# End of transcript or log.
-"""]]
-
-> Duplicate; [[closed|done]]. --[[Joey]]
diff --git a/doc/bugs/git_annex_wont_work_with_git-dir_and_work-tree.mdwn b/doc/bugs/git_annex_wont_work_with_git-dir_and_work-tree.mdwn
deleted file mode 100644
--- a/doc/bugs/git_annex_wont_work_with_git-dir_and_work-tree.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-### Please describe the problem.
-If using git annex with external .git dir webapp report a tread crashed and ever trying to restart it crash again and webapp is not able to upload/download/sync (also the download of git-annex updates is affected)
-
-### What steps will reproduce the problem?
-
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20150113-gcf247cf
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-
-Precompiled tarball from official git-annex download site
-
-Gentoo linux
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-Launching web browser on file://../.git_annex_repos/pippo.git/annex/webapp.html      <-- note wrong path! should be /home/gioacchino/.git_annex_repos/pippo.git/annex/webapp.html
-
-RemoteControl crashed: user error (nice ["ionice","-c3","/home/gioacchino/opt/git-annex.linux/git-annex","remotedaemon"] exited 1)
-
-WebApp crashed: <file descriptor: 11>: hPutStr: illegal operation (handle is closed
-"""]]
-
-[[!meta title="assistant does not support nonstandard --git-dir"]]
diff --git a/doc/bugs/git_rename_detection_on_file_move.mdwn b/doc/bugs/git_rename_detection_on_file_move.mdwn
deleted file mode 100644
--- a/doc/bugs/git_rename_detection_on_file_move.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-It's unfortunate that git-annex sorta defeats git's rename detection.
-
-When an annexed file is moved to a different directory (specifically, a
-directory that is shallower or deeper than the old directory),
-the symlink often has to change. And so git log cannot --follow back
-through the rename history, since all it has to go on is that symlink,
-which it effectively sees as a one line file containing the symlink target.
-
-One way to fix this might be to do the `git annex fix` *after* the rename
-is committed. This would mean that a commit would result in new staged
-changes for another commit, which is perhaps startling behavior.
-
-The other way to fix it is to stop using symlinks, see [[todo/smudge]].
-[[!tag confirmed]]
diff --git a/doc/bugs/git_security_fix.mdwn b/doc/bugs/git_security_fix.mdwn
deleted file mode 100644
--- a/doc/bugs/git_security_fix.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-git had some remotely exploitable security holes announced recently
-(CVE-2016-2324, CVE-2016-2315)
-
-git-annex builds that bundle git need to be updated.
-
-status of autobuilds:
-
-* Linux is fixed (all builds)
-* OSX is fixed
-* Windows does not bundle git
-* Android is fixed (git build is untested)
-
-status of released builds:
-
-* Linux is fixed (all builds)
-* OSX is fixed (yosemite only; old builds vulnerable so removed)
-* Windows does not bundle git
-* Android is fixed (git build is untested)
-
-[[done]] --[[Joey]]
diff --git a/doc/bugs/gitlab_configuration_out_of_date.mdwn b/doc/bugs/gitlab_configuration_out_of_date.mdwn
deleted file mode 100644
--- a/doc/bugs/gitlab_configuration_out_of_date.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-### Please describe the problem.
-The webapp configuration for enabling a new gitlab remote is out of date and no longer functions.
-
-### What steps will reproduce the problem?
-Attempt to use the webapp to create a new gitlab remote.
-- The url linked to add a public key is invalid
-- Pressing the confirmation button reloads the same page.  The remote is never enabled.
-
-### What version of git-annex are you using? On what operating system?
-6.20160229-g37a89cc on linux x86 fedora 18
-
-### Please provide any additional information below.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Git-annex is a miracle to find.  I intend to stick with it, migrate my life to it, and perhaps learn haskell some day to contribute.
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/glacier_from_multiple_repos.mdwn b/doc/bugs/glacier_from_multiple_repos.mdwn
deleted file mode 100644
--- a/doc/bugs/glacier_from_multiple_repos.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-glacier-cli currently relies on a local cache of
-inventory information, and so other git-annexes using the same glacier
-repository are not able to access stuff in it, unless and until
-`glacier vault sync` is run.
-
-An example of this causing trouble is with the assistant. When a file is
-moved into archive/, the assistant that sends it to glacier is able to
-trust that it's in glacier and remove the local copy. But other assistants
-that also have a copy cannot trust that, and so don't remove their copies.
-
-I've discussed with glacier-cli's author making git-annex store enough info
-in its branch to be able to bootstrap glacier-cli to know about a file.
-This seems doable and he had a design; waiting on movement 
-on the glacier-cli side.
-
-[[!tag confirmed]]
diff --git a/doc/bugs/googlemail.mdwn b/doc/bugs/googlemail.mdwn
deleted file mode 100644
--- a/doc/bugs/googlemail.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-### Please describe the problem.
-Git-Annex crashes when configuring jabber account with foo.bar@googlemail.com
-
-### What steps will reproduce the problem?
-Configure the Jabber Account with foo.bar@googlemail.com instead of foo.bar@gmail.com. The domain googlemail was used for a long time in germany because of a license issue. 
-
-### What version of git-annex are you using? On what operating system?
-Mac OS X - 10.8.3 Mountain Lion
-
-Version: 4.20130709-g18e5f43 
-
-Build flags: Assistant Webapp Pairing Testsuite S3 WebDAV FsEvents XMPP DNS
-
-
-[[!meta title="xmpp fails to work with googlemail domain"]]
-[[!tag design/assistant]]
diff --git a/doc/bugs/googlemail/comment_1_5614fa85029f9f97be03cb74899a7099._comment b/doc/bugs/googlemail/comment_1_5614fa85029f9f97be03cb74899a7099._comment
deleted file mode 100644
--- a/doc/bugs/googlemail/comment_1_5614fa85029f9f97be03cb74899a7099._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm8BAEUyzYhORZmMuocRTk4M-3IumDm5VU"
- nickname="luciusf0"
- subject="Bug still valid"
- date="2014-07-31T08:35:29Z"
- content="""
-The bug is still valid. A lot of german users had to use the @googlemail.com extension as google couldn't get the gmail domain in Germany. 
-So it might be bothering not just a few people, but a whole country! Now, if that doesn't count ...
-
-	Mac OSX 10.9.4
-	Version: 5.20140717-g5a7d4ff 
-	Build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash
-
-This is the message I get
-
-	Unable to connect to the Jabber server. Maybe you entered the wrong password? (Error message: host xmpp.l.google.com.:5222 failed: AuthenticationFailure (Element {elementName = Name {nameLocalName = \"failure\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = [NodeElement (Element {elementName = Name {nameLocalName = \"not-authorized\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})]}); host alt2.xmpp.l.google.com.:5222 failed: AuthenticationFailure (Element {elementName = Name {nameLocalName = \"failure\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = [NodeElement (Element {elementName = Name {nameLocalName = \"not-authorized\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})]}); host alt1.xmpp.l.google.com.:5222 failed: AuthenticationFailure (Element {elementName = Name {nameLocalName = \"failure\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = [NodeElement (Element {elementName = Name {nameLocalName = \"not-authorized\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})]}); host alt4.xmpp.l.google.com.:5222 failed: AuthenticationFailure (Element {elementName = Name {nameLocalName = \"failure\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = [NodeElement (Element {elementName = Name {nameLocalName = \"not-authorized\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})]}); host alt3.xmpp.l.google.com.:5222 failed: AuthenticationFailure (Element {elementName = Name {nameLocalName = \"failure\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = [NodeElement (Element {elementName = Name {nameLocalName = \"not-authorized\", nameNamespace = Just \"urn:ietf:params:xml:ns:xmpp-sasl\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})]}))
-	
-
-"""]]
diff --git a/doc/bugs/googlemail/comment_2_bdb2b08346673f850709041d2f41be5c._comment b/doc/bugs/googlemail/comment_2_bdb2b08346673f850709041d2f41be5c._comment
deleted file mode 100644
--- a/doc/bugs/googlemail/comment_2_bdb2b08346673f850709041d2f41be5c._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.7"
- subject="comment 2"
- date="2014-08-12T17:39:09Z"
- content="""
-AFAICS, xmpp.l.google.com is the correct XMPP server; it's what the SRV record for googlemail.com says to use.
-
-Since it fails with an authentication error, I wonder if google's XMPP is rejecting a user@googlemail.com jid and expects the domain to be @gmail.com or something else. Would that be allowed by the XMPP spec? I don't know.
-
-
-"""]]
diff --git a/doc/bugs/gpg-agent.mdwn b/doc/bugs/gpg-agent.mdwn
deleted file mode 100644
--- a/doc/bugs/gpg-agent.mdwn
+++ /dev/null
@@ -1,5049 +0,0 @@
-### Please describe the problem.
-I'm running git-annex on OSX 10.9.3. The problem is that during sync with an git-annex remote the system gets flooded with gpg-agent processes which are never stopped, eventually running out of user processes.
-
-[[!tag moreinfo]]
-
-### What steps will reproduce the problem?
-Any synchronization of a lot of files with a git-annex remote.
-
-### What version of git-annex are you using? On what operating system?
-5.20140517-g0aed6d9.
-
-The problem did not appear on any older version.
-
-### 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
-[2014-05-25 18:15:53 CEST] main: starting assistant version 5.20140517-g0aed6d9
-[2014-05-25 18:16:02 CEST] main: Syncing with diskstation 
-Everything up-to-date
-[2014-05-25 18:16:16 CEST] UpgradeWatcher: Finished upgrading git-annex to version 5.20140517-g0aed6d9 
-[2014-05-25 18:16:16 CEST] TransferScanner: Syncing with diskstation 
-Already up-to-date.
-Already up-to-date.
-Everything up-to-date
-[2014-05-25 18:16:36 CEST] main: Syncing with diskstation 
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   95ae98a..16f51d5  git-annex -> synced/git-annex
-
-WORM-s196517551-m1400608062--An Introduction to d3.js - From Scattered to Scatterplot%01_introduction.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3670016   1%    3.40MB/s    0:00:55
-     6750208   3%    3.17MB/s    0:00:58
-     9830400   5%    3.09MB/s    0:00:59
-    12976128   6%    3.03MB/s    0:00:59
-    15990784   8%    2.90MB/s    0:01:00
-    18644992   9%    2.79MB/s    0:01:02
-    21528576  10%    2.75MB/s    0:01:02
-    24543232  12%    2.73MB/s    0:01:01
-    27557888  14%    2.72MB/s    0:01:00
-    30834688  15%    2.85MB/s    0:00:56
-    33980416  17%    2.89MB/s    0:00:55
-    36995072  18%    2.88MB/s    0:00:54
-    40108032  20%    2.91MB/s    0:00:52
-    42991616  21%    2.83MB/s    0:00:52
-    45875200  23%    2.79MB/s    0:00:52
-    48857088  24%    2.78MB/s    0:00:51
-    51740672  26%    2.72MB/s    0:00:51
-    54755328  27%    2.75MB/s    0:00:50
-    57638912  29%    2.74MB/s    0:00:49
-    59998208  30%    2.60MB/s    0:00:51
-    62947328  32%    2.61MB/s    0:00:49
-    65961984  33%    2.60MB/s    0:00:49
-    68845568  35%    2.60MB/s    0:00:48
-    71729152  36%    2.73MB/s    0:00:44
-    74743808  38%    2.74MB/s    0:00:43
-    77627392  39%    2.72MB/s    0:00:42
-    80642048  41%    2.76MB/s    0:00:41
-    83656704  42%    2.78MB/s    0:00:39
-    86540288  44%    2.76MB/s    0:00:38
-    89292800  45%    2.72MB/s    0:00:38
-    91389952  46%    2.51MB/s    0:00:40
-    94404608  48%    2.50MB/s    0:00:39
-    97288192  49%    2.49MB/s    0:00:38
-   100040704  50%    2.49MB/s    0:00:37
-   102924288  52%    2.66MB/s    0:00:34
-   105807872  53%    2.65MB/s    0:00:33
-   108691456  55%    2.67MB/s    0:00:32
-   111443968  56%    2.65MB/s    0:00:31
-   114196480  58%    2.63MB/s    0:00:30
-   117342208  59%    2.66MB/s    0:00:29
-   120225792  61%    2.66MB/s    0:00:27
-   123109376  62%    2.70MB/s    0:00:26
-   125992960  64%    2.73MB/s    0:00:25
-   128745472  65%    2.67MB/s    0:00:24
-   131760128  67%    2.70MB/s    0:00:23
-   134643712  68%    2.70MB/s    0:00:22
-   137396224  69%    2.65MB/s    0:00:21
-   140410880  71%    2.72MB/s    0:00:20
-   143294464  72%    2.70MB/s    0:00:19
-   145915904  74%    2.60MB/s    0:00:19
-   148275200  75%    2.50MB/s    0:00:18
-   150896640  76%    2.41MB/s    0:00:18
-   153780224  78%    2.41MB/s    0:00:17
-   157057024  79%    2.60MB/s    0:00:14
-   160202752  81%    2.79MB/s    0:00:12
-   163217408  83%    2.87MB/s    0:00:11
-   166100992  84%    2.86MB/s    0:00:10
-   168984576  85%    2.75MB/s    0:00:09
-   171737088  87%    2.68MB/s    0:00:09
-   174817280  88%    2.68MB/s    0:00:07
-   177831936  90%    2.71MB/s    0:00:06
-   180846592  92%    2.75MB/s    0:00:05
-   183730176  93%    2.77MB/s    0:00:04
-   186875904  95%    2.80MB/s    0:00:03
-   190021632  96%    2.84MB/s    0:00:02
-   192970752  98%    2.85MB/s    0:00:01
-   195854336  99%    2.87MB/s    0:00:00
-   196517551 100%    2.72MB/s    0:01:08 (xfer#1, to-check=0/1)
-
-sent 196541725 bytes  received 42 bytes  2787826.48 bytes/sec
-total size is 196517551  speedup is 1.00
-[2014-05-25 18:17:58 CEST] Transferrer: Uploaded 01_introduction.mp4
-[2014-05-25 18:17:58 CEST] Pusher: Syncing with diskstation 
-
-WORM-s57838296-m1400607924--An Introduction to d3.js - From Scattered to Scatterplot%02_setting-up.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4030464   6%    3.75MB/s    0:00:14
-     6782976  11%    3.15MB/s    0:00:15
-     9535488  16%    2.96MB/s    0:00:15
-    12288000  21%    2.88MB/s    0:00:15
-    15040512  26%    2.58MB/s    0:00:16
-    17793024  30%    2.60MB/s    0:00:15
-    20545536  35%    2.61MB/s    0:00:13
-    23560192  40%    2.66MB/s    0:00:12
-    26705920  46%    2.76MB/s    0:00:11
-    29720576  51%    2.80MB/s    0:00:09
-    32604160  56%    2.81MB/s    0:00:08
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   16f51d5..b142966  git-annex -> synced/git-annex
-    35356672  61%    2.76MB/s    0:00:07
-    38371328  66%    2.73MB/s    0:00:06
-[2014-05-25 18:18:14 CEST] RemoteControl: Syncing with diskstation 
-    41648128  72%    2.79MB/s    0:00:05
-    44761088  77%    2.86MB/s    0:00:04
-    47841280  82%    2.92MB/s    0:00:03
-    50855936  87%    2.92MB/s    0:00:02
-    53870592  93%    2.86MB/s    0:00:01
-    56885248  98%    2.81MB/s    0:00:00
-    57838296 100%    2.80MB/s    0:00:19 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   95ae98a..5809ceb  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at b1429660ab35f95d5bc54e4d8b4f39a19fe66998 but expected 16f51d51d23bf026556435a5cea88488ae0ab108
- ! 16f51d5..b142966  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 57845539 bytes  received 42 bytes  2690492.14 bytes/sec
-total size is 57838296  speedup is 1.00
-[2014-05-25 18:18:22 CEST] Transferrer: Uploaded 02_setting-up.mp4
-[2014-05-25 18:18:23 CEST] Pusher: Syncing with diskstation 
-
-WORM-s149069061-m1401033118--An Introduction to d3.js - From Scattered to Scatterplot%03_selecting-and-creating-elements.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4063232   2%    3.60MB/s    0:00:39
-remote: merge git-annex      6815744   4%    3.12MB/s    0:00:44
-     9568256   6%    2.96MB/s    0:00:46
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 18:18:28 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b142966..7713a32  git-annex -> synced/git-annex
-    12582912   8%    2.93MB/s    0:00:45
-    15466496  10%    2.70MB/s    0:00:48
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5809ceb..19d05e5  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 7713a32f85cf1d993948f15859f0d035d63aa6e0 but expected b1429660ab35f95d5bc54e4d8b4f39a19fe66998
- ! b142966..7713a32  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    18448384  12%    2.75MB/s    0:00:46
-    21594112  14%    2.83MB/s    0:00:44
-    24477696  16%    2.80MB/s    0:00:43
-    27492352  18%    2.84MB/s    0:00:41
-    30375936  20%    2.80MB/s    0:00:41
-    33587200  22%    2.83MB/s    0:00:39
-    36601856  24%    2.85MB/s    0:00:38
-    39616512  26%    2.82MB/s    0:00:37
-    42041344  28%    2.73MB/s    0:00:38
-    45056000  30%    2.67MB/s    0:00:37
-    48037888  32%    2.66MB/s    0:00:37
-    50855936  34%    2.64MB/s    0:00:36
-    52756480  35%    2.52MB/s    0:00:37
-    54853632  36%    2.26MB/s    0:00:40
-    56950784  38%    2.02MB/s    0:00:44
-    58916864  39%    1.81MB/s    0:00:48
-    61669376  41%    2.00MB/s    0:00:42
-    64552960  43%    2.23MB/s    0:00:36
-    67567616  45%    2.48MB/s    0:00:32
-    70713344  47%    2.77MB/s    0:00:27
-    73859072  49%    2.84MB/s    0:00:25
-    76873728  51%    2.85MB/s    0:00:24
-    79888384  53%    2.85MB/s    0:00:23
-    82903040  55%    2.81MB/s    0:00:22
-    85786624  57%    2.77MB/s    0:00:22
-    88571904  59%    2.73MB/s    0:00:21
-    91422720  61%    2.70MB/s    0:00:20
-    94502912  63%    2.73MB/s    0:00:19
-    97288192  65%    2.68MB/s    0:00:18
-   100335616  67%    2.72MB/s    0:00:17
-   103350272  69%    2.77MB/s    0:00:16
-   106364928  71%    2.73MB/s    0:00:15
-   109379584  73%    2.82MB/s    0:00:13
-   112394240  75%    2.79MB/s    0:00:12
-   115376128  77%    2.76MB/s    0:00:11
-   118390784  79%    2.76MB/s    0:00:10
-   121536512  81%    2.80MB/s    0:00:09
-   124682240  83%    2.85MB/s    0:00:08
-   127827968  85%    2.90MB/s    0:00:07
-   130842624  87%    2.91MB/s    0:00:06
-   133988352  89%    2.91MB/s    0:00:05
-   137003008  91%    2.88MB/s    0:00:04
-   140017664  93%    2.86MB/s    0:00:03
-   142901248  95%    2.85MB/s    0:00:02
-   145588224  97%    2.71MB/s    0:00:01
-   148537344  99%    2.71MB/s    0:00:00
-   149069061 100%    2.71MB/s    0:00:52 (xfer#1, to-check=0/1)
-
-sent 149087462 bytes  received 42 bytes  2786682.32 bytes/sec
-total size is 149069061  speedup is 1.00
-[2014-05-25 18:19:18 CEST] Transferrer: Uploaded 03_select..ments.mp4
-[2014-05-25 18:19:18 CEST] Pusher: Syncing with diskstation 
-
-WORM-s36798210-m1400608746--An Introduction to d3.js - From Scattered to Scatterplot%04_exercise-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072  11%    3.89MB/s    0:00:08
-     7143424  19%    3.32MB/s    0:00:08
-    10158080  27%    3.15MB/s    0:00:08
-remote: merge git-annex     13172736  35%    3.07MB/s    0:00:07
-[2014-05-25 18:19:24 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7713a32..c892127  git-annex -> synced/git-annex
-    16187392  43%    2.81MB/s    0:00:07
-    19136512  52%    2.83MB/s    0:00:06
-    22282240  60%    2.88MB/s    0:00:04
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   19d05e5..928f25d  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at c8921270e51c1eb7f5f88a288adbd778711d0ff0 but expected 7713a32f85cf1d993948f15859f0d035d63aa6e0
- ! 7713a32..c892127  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    25296896  68%    2.88MB/s    0:00:03
-    28442624  77%    2.88MB/s    0:00:02
-    31457280  85%    2.88MB/s    0:00:01
-    34603008  94%    2.84MB/s    0:00:00
-    36798210 100%    2.94MB/s    0:00:11 (xfer#1, to-check=0/1)
-
-sent 36802881 bytes  received 42 bytes  2538132.62 bytes/sec
-total size is 36798210  speedup is 1.00
-[2014-05-25 18:19:32 CEST] Transferrer: Uploaded 04_exercise-1.mp4
-[2014-05-25 18:19:32 CEST] Pusher: Syncing with diskstation 
-
-WORM-s272759172-m1400608447--An Introduction to d3.js - From Scattered to Scatterplot%05_svg.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072   1%    3.97MB/s    0:01:06
-     7241728   2%    3.39MB/s    0:01:16
-    10256384   3%    3.17MB/s    0:01:20
-remote: merge git-annex     13402112   4%    3.11MB/s    0:01:21
-    16416768   6%    2.83MB/s    0:01:28
-[2014-05-25 18:19:38 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c892127..ff739c0  git-annex -> synced/git-annex
-    19431424   7%    2.83MB/s    0:01:27
-    22446080   8%    2.85MB/s    0:01:25
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   928f25d..383d246  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at ff739c08bd8881b7d1c3fd6c305b0d80b3213b0d but expected c8921270e51c1eb7f5f88a288adbd778711d0ff0
- ! c892127..ff739c0  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    25591808   9%    2.83MB/s    0:01:25
-    28606464  10%    2.81MB/s    0:01:24
-    31621120  11%    2.82MB/s    0:01:23
-    34766848  12%    2.83MB/s    0:01:22
-    37781504  13%    2.83MB/s    0:01:21
-    40927232  15%    2.87MB/s    0:01:18
-    44072960  16%    2.89MB/s    0:01:17
-    47087616  17%    2.89MB/s    0:01:16
-    50397184  18%    2.95MB/s    0:01:13
-    53411840  19%    2.93MB/s    0:01:13
-    56295424  20%    2.89MB/s    0:01:13
-    59146240  21%    2.84MB/s    0:01:13
-    62160896  22%    2.78MB/s    0:01:13
-    65306624  23%    2.82MB/s    0:01:11
-    68321280  25%    2.84MB/s    0:01:10
-    71335936  26%    2.86MB/s    0:01:08
-    74350592  27%    2.85MB/s    0:01:07
-    77365248  28%    2.80MB/s    0:01:08
-    80379904  29%    2.80MB/s    0:01:07
-    83394560  30%    2.82MB/s    0:01:05
-    86540288  31%    2.84MB/s    0:01:04
-    89554944  32%    2.85MB/s    0:01:02
-    92569600  33%    2.86MB/s    0:01:01
-    95453184  34%    2.81MB/s    0:01:01
-    98336768  36%    2.76MB/s    0:01:01
-   101220352  37%    2.74MB/s    0:01:01
-   104103936  38%    2.70MB/s    0:01:00
-   107118592  39%    2.75MB/s    0:00:58
-   110002176  40%    2.74MB/s    0:00:58
-   113016832  41%    2.75MB/s    0:00:56
-   115113984  42%    2.57MB/s    0:00:59
-   117342208  43%    2.37MB/s    0:01:04
-   120356864  44%    2.40MB/s    0:01:02
-   123371520  45%    2.41MB/s    0:01:00
-   126386176  46%    2.61MB/s    0:00:54
-   129335296  47%    2.77MB/s    0:00:50
-   132481024  48%    2.80MB/s    0:00:48
-   135626752  49%    2.83MB/s    0:00:47
-   138772480  50%    2.86MB/s    0:00:45
-   141656064  51%    2.88MB/s    0:00:44
-   144572416  53%    2.83MB/s    0:00:44
-   147456000  54%    2.78MB/s    0:00:43
-   150732800  55%    2.84MB/s    0:00:41
-   153845760  56%    2.89MB/s    0:00:40
-   156860416  57%    2.88MB/s    0:00:39
-   159875072  58%    2.89MB/s    0:00:38
-   162889728  59%    2.83MB/s    0:00:37
-   165904384  60%    2.79MB/s    0:00:37
-   168919040  61%    2.80MB/s    0:00:36
-   172064768  63%    2.82MB/s    0:00:34
-   175079424  64%    2.79MB/s    0:00:34
-   178094080  65%    2.79MB/s    0:00:33
-   180977664  66%    2.77MB/s    0:00:32
-   183861248  67%    2.74MB/s    0:00:31
-   186875904  68%    2.76MB/s    0:00:30
-   190152704  69%    2.81MB/s    0:00:28
-   193298432  70%    2.86MB/s    0:00:27
-   196313088  71%    2.87MB/s    0:00:26
-   199458816  73%    2.92MB/s    0:00:24
-   202473472  74%    2.86MB/s    0:00:23
-   205455360  75%    2.82MB/s    0:00:23
-   208207872  76%    2.76MB/s    0:00:22
-   211091456  77%    2.69MB/s    0:00:22
-   214237184  78%    2.74MB/s    0:00:20
-   217251840  79%    2.77MB/s    0:00:19
-   220266496  80%    2.81MB/s    0:00:18
-   223019008  81%    2.77MB/s    0:00:17
-   225247232  82%    2.54MB/s    0:00:18
-   228261888  83%    2.54MB/s    0:00:17
-   231145472  84%    2.52MB/s    0:00:16
-   234160128  85%    2.58MB/s    0:00:14
-   237043712  86%    2.74MB/s    0:00:12
-   240091136  88%    2.76MB/s    0:00:11
-   243073024  89%    2.78MB/s    0:00:10
-   246087680  90%    2.79MB/s    0:00:09
-   248971264  91%    2.81MB/s    0:00:08
-   251723776  92%    2.71MB/s    0:00:07
-   254738432  93%    2.73MB/s    0:00:06
-   257884160  94%    2.75MB/s    0:00:05
-   261029888  95%    2.80MB/s    0:00:04
-   263913472  96%    2.85MB/s    0:00:03
-   266928128  97%    2.87MB/s    0:00:01
-   269942784  98%    2.83MB/s    0:00:00
-   272759172 100%    2.80MB/s    0:01:32 (xfer#1, to-check=0/1)
-
-sent 272792641 bytes  received 42 bytes  2886695.06 bytes/sec
-total size is 272759172  speedup is 1.00
-[2014-05-25 18:21:07 CEST] Transferrer: Uploaded 05_svg.mp4
-[2014-05-25 18:21:07 CEST] Pusher: Syncing with diskstation 
-
-WORM-s29712591-m1400608733--An Introduction to d3.js - From Scattered to Scatterplot%06_exercise-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4259840  14%    4.00MB/s    0:00:06
-     7274496  24%    3.44MB/s    0:00:06
-    10289152  34%    3.24MB/s    0:00:05
-remote: merge git-annex     13434880  45%    3.17MB/s    0:00:05
-    16678912  56%    2.92MB/s    0:00:04
-[2014-05-25 18:21:13 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ff739c0..07153a2  git-annex -> synced/git-annex
-    19693568  66%    2.89MB/s    0:00:03
-    22740992  76%    2.86MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   383d246..1749643  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 07153a2d49264b9792593fc016c00499ce87f70b but expected ff739c08bd8881b7d1c3fd6c305b0d80b3213b0d
- ! ff739c0..07153a2  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    25624576  86%    2.81MB/s    0:00:01
-    28639232  96%    2.75MB/s    0:00:00
-    29712591 100%    2.94MB/s    0:00:09 (xfer#1, to-check=0/1)
-
-sent 29716398 bytes  received 42 bytes  2584038.26 bytes/sec
-total size is 29712591  speedup is 1.00
-[2014-05-25 18:21:18 CEST] Transferrer: Uploaded 06_exercise-2.mp4
-[2014-05-25 18:21:18 CEST] Pusher: Syncing with diskstation 
-
-WORM-s276749404-m1400608181--An Introduction to d3.js - From Scattered to Scatterplot%07_binding-data-and-creating-elements-from-data.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4030464   1%    3.60MB/s    0:01:13
-     7307264   2%    3.29MB/s    0:01:19
-remote: merge git-annex     10190848   3%    3.11MB/s    0:01:23
-    13336576   4%    3.06MB/s    0:01:24
-[2014-05-25 18:21:24 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   07153a2..0a42aa9  git-annex -> synced/git-annex
-    16482304   5%    2.89MB/s    0:01:27
-    19496960   7%    2.85MB/s    0:01:28
-    22642688   8%    2.89MB/s    0:01:25
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   1749643..e6798ff  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 0a42aa9412e0a0f03e8edaa7a37eb0d6273bc4d9 but expected 07153a2d49264b9792593fc016c00499ce87f70b
- ! 07153a2..0a42aa9  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    25788416   9%    2.88MB/s    0:01:25
-    28803072  10%    2.84MB/s    0:01:25
-    31817728  11%    2.84MB/s    0:01:24
-    34832384  12%    2.83MB/s    0:01:23
-    37978112  13%    2.84MB/s    0:01:22
-    40828928  14%    2.82MB/s    0:01:21
-    43974656  15%    2.83MB/s    0:01:20
-    46956544  16%    2.84MB/s    0:01:18
-    50233344  18%    2.88MB/s    0:01:16
-    53248000  19%    2.91MB/s    0:01:15
-    56262656  20%    2.88MB/s    0:01:14
-    59146240  21%    2.84MB/s    0:01:14
-    62291968  22%    2.81MB/s    0:01:14
-    65699840  23%    2.89MB/s    0:01:11
-    68812800  24%    2.91MB/s    0:01:09
-    71892992  25%    2.97MB/s    0:01:07
-    75038720  27%    2.95MB/s    0:01:06
-    78020608  28%    2.87MB/s    0:01:07
-    81166336  29%    2.88MB/s    0:01:06
-    84049920  30%    2.83MB/s    0:01:06
-    86769664  31%    2.76MB/s    0:01:07
-    89653248  32%    2.73MB/s    0:01:06
-    92536832  33%    2.66MB/s    0:01:07
-    95420416  34%    2.66MB/s    0:01:06
-    98304000  35%    2.69MB/s    0:01:04
-   101187584  36%    2.69MB/s    0:01:03
-   104202240  37%    2.75MB/s    0:01:01
-   107216896  38%    2.76MB/s    0:00:59
-   110100480  39%    2.77MB/s    0:00:58
-   113016832  40%    2.78MB/s    0:00:57
-   115867648  41%    2.74MB/s    0:00:57
-   118620160  42%    2.71MB/s    0:00:57
-   121503744  43%    2.69MB/s    0:00:56
-   124452864  44%    2.67MB/s    0:00:55
-   127467520  46%    2.70MB/s    0:00:53
-   130220032  47%    2.69MB/s    0:00:53
-   132972544  48%    2.68MB/s    0:00:52
-   135987200  49%    2.70MB/s    0:00:50
-   138870784  50%    2.68MB/s    0:00:50
-   141754368  51%    2.72MB/s    0:00:48
-   144474112  52%    2.71MB/s    0:00:47
-   147357696  53%    2.68MB/s    0:00:47
-   150372352  54%    2.70MB/s    0:00:45
-   153387008  55%    2.71MB/s    0:00:44
-   156401664  56%    2.76MB/s    0:00:42
-   159416320  57%    2.79MB/s    0:00:41
-   162299904  58%    2.78MB/s    0:00:40
-   165445632  59%    2.80MB/s    0:00:38
-   168460288  60%    2.82MB/s    0:00:37
-   171343872  61%    2.79MB/s    0:00:36
-   174227456  62%    2.78MB/s    0:00:36
-   177373184  64%    2.78MB/s    0:00:34
-   180387840  65%    2.79MB/s    0:00:33
-   183533568  66%    2.86MB/s    0:00:31
-   186548224  67%    2.87MB/s    0:00:30
-   189562880  68%    2.81MB/s    0:00:30
-   192446464  69%    2.75MB/s    0:00:29
-   195461120  70%    2.71MB/s    0:00:29
-   198475776  71%    2.73MB/s    0:00:28
-   201359360  72%    2.74MB/s    0:00:26
-   204308480  73%    2.78MB/s    0:00:25
-   207060992  74%    2.72MB/s    0:00:24
-   210206720  75%    2.77MB/s    0:00:23
-   212828160  76%    2.64MB/s    0:00:23
-   215318528  77%    2.54MB/s    0:00:23
-   218333184  78%    2.58MB/s    0:00:22
-   221347840  79%    2.53MB/s    0:00:21
-   224362496  81%    2.67MB/s    0:00:19
-   227377152  82%    2.77MB/s    0:00:17
-   230129664  83%    2.74MB/s    0:00:16
-   233078784  84%    2.74MB/s    0:00:15
-   236093440  85%    2.74MB/s    0:00:14
-   239108096  86%    2.76MB/s    0:00:13
-   242122752  87%    2.83MB/s    0:00:11
-   245006336  88%    2.81MB/s    0:00:11
-   247824384  89%    2.77MB/s    0:00:10
-   250707968  90%    2.70MB/s    0:00:09
-   253460480  91%    2.63MB/s    0:00:08
-   256606208  92%    2.69MB/s    0:00:07
-   259620864  93%    2.73MB/s    0:00:06
-   262504448  94%    2.75MB/s    0:00:05
-   264994816  95%    2.63MB/s    0:00:04
-   266960896  96%    2.37MB/s    0:00:04
-   268795904  97%    2.11MB/s    0:00:03
-   271155200  97%    1.99MB/s    0:00:02
-   274038784  99%    2.14MB/s    0:00:01
-   276749404 100%    2.75MB/s    0:01:36 (xfer#1, to-check=0/1)
-
-sent 276783402 bytes  received 42 bytes  2838804.55 bytes/sec
-total size is 276749404  speedup is 1.00
-[2014-05-25 18:22:56 CEST] Transferrer: Uploaded 07_bindin..-data.mp4
-[2014-05-25 18:22:56 CEST] Pusher: Syncing with diskstation 
-
-WORM-s58893321-m1400608603--An Introduction to d3.js - From Scattered to Scatterplot%08_exercise-3.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072   7%    3.98MB/s    0:00:13
-     7241728  12%    3.38MB/s    0:00:14
-    10125312  17%    3.14MB/s    0:00:15
-    13139968  22%    3.05MB/s    0:00:14
-    16023552  27%    2.74MB/s    0:00:15
-remote: merge git-annex     18907136  32%    2.72MB/s    0:00:14
-[2014-05-25 18:23:04 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   0a42aa9..961714e  git-annex -> synced/git-annex
-    21790720  37%    2.72MB/s    0:00:13
-    24870912  42%    2.72MB/s    0:00:12
-    27754496  47%    2.72MB/s    0:00:11
-    30638080  52%    2.70MB/s    0:00:10
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e6798ff..c074ab0  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 961714e5af3653435346ed0f7ae7e19efb899c6f but expected 0a42aa9412e0a0f03e8edaa7a37eb0d6273bc4d9
- ! 0a42aa9..961714e  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    33980416  57%    2.81MB/s    0:00:08
-    36864000  62%    2.78MB/s    0:00:07
-    39616512  67%    2.76MB/s    0:00:06
-    42369024  71%    2.75MB/s    0:00:05
-    45252608  76%    2.64MB/s    0:00:05
-    48136192  81%    2.64MB/s    0:00:03
-    51150848  86%    2.67MB/s    0:00:02
-    53903360  91%    2.65MB/s    0:00:01
-    56655872  96%    2.63MB/s    0:00:00
-    58893321 100%    2.76MB/s    0:00:20 (xfer#1, to-check=0/1)
-
-sent 58900692 bytes  received 42 bytes  2617810.40 bytes/sec
-total size is 58893321  speedup is 1.00
-[2014-05-25 18:23:18 CEST] Transferrer: Uploaded 08_exercise-3.mp4
-[2014-05-25 18:23:18 CEST] Pusher: Syncing with diskstation 
-
-WORM-s134947390-m1400608565--An Introduction to d3.js - From Scattered to Scatterplot%09_transitions.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4161536   3%    3.82MB/s    0:00:33
-     7045120   5%    3.24MB/s    0:00:38
-remote: merge git-annex      9928704   7%    3.04MB/s    0:00:40
-    13205504   9%    3.05MB/s    0:00:38
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   961714e..dbdf944  git-annex -> synced/git-annex
-[2014-05-25 18:23:24 CEST] RemoteControl: Syncing with diskstation 
-    16220160  12%    2.79MB/s    0:00:41
-    19103744  14%    2.80MB/s    0:00:40
-    21856256  16%    2.79MB/s    0:00:39
-    24576000  18%    2.66MB/s    0:00:40
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c074ab0..1e5f9f1  git-annex  -> diskstation/git-annex
-    27459584  20%    2.64MB/s    0:00:39
-    30474240  22%    2.68MB/s    0:00:38
-    33357824  24%    2.70MB/s    0:00:36
-    36372480  26%    2.76MB/s    0:00:34
-    39256064  29%    2.76MB/s    0:00:33
-    42139648  31%    2.73MB/s    0:00:33
-    45023232  33%    2.73MB/s    0:00:32
-    47775744  35%    2.66MB/s    0:00:31
-    50659328  37%    2.66MB/s    0:00:30
-    53542912  39%    2.65MB/s    0:00:29
-    56557568  41%    2.66MB/s    0:00:28
-    59310080  43%    2.67MB/s    0:00:27
-    62029824  45%    2.64MB/s    0:00:26
-    64782336  48%    2.62MB/s    0:00:26
-    67665920  50%    2.61MB/s    0:00:25
-    70680576  52%    2.64MB/s    0:00:23
-    73695232  54%    2.70MB/s    0:00:22
-    76709888  56%    2.77MB/s    0:00:20
-    79593472  58%    2.76MB/s    0:00:19
-    82608128  61%    2.79MB/s    0:00:18
-    85622784  63%    2.81MB/s    0:00:17
-    88506368  65%    2.76MB/s    0:00:16
-    91619328  67%    2.81MB/s    0:00:15
-    94502912  70%    2.78MB/s    0:00:14
-    97255424  72%    2.72MB/s    0:00:13
-   100270080  74%    2.76MB/s    0:00:12
-   102760448  76%    2.61MB/s    0:00:12
-   105349120  78%    2.54MB/s    0:00:11
-   108232704  80%    2.57MB/s    0:00:10
-   111247360  82%    2.56MB/s    0:00:09
-   114262016  84%    2.68MB/s    0:00:07
-   117145600  86%    2.76MB/s    0:00:06
-   120029184  88%    2.75MB/s    0:00:05
-   123043840  91%    2.76MB/s    0:00:04
-   125927424  93%    2.74MB/s    0:00:03
-   128942080  95%    2.76MB/s    0:00:02
-   131694592  97%    2.74MB/s    0:00:01
-   134447104  99%    2.64MB/s    0:00:00
-   134947390 100%    2.72MB/s    0:00:47 (xfer#1, to-check=0/1)
-
-sent 134964047 bytes  received 42 bytes  2726547.25 bytes/sec
-total size is 134947390  speedup is 1.00
-[2014-05-25 18:24:08 CEST] Transferrer: Uploaded 09_transitions.mp4
-[2014-05-25 18:24:08 CEST] Pusher: Syncing with diskstation 
-
-WORM-s106802484-m1399168180--An Introduction to d3.js - From Scattered to Scatterplot%10_scales-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4128768   3%    3.75MB/s    0:00:26
-     7143424   6%    3.27MB/s    0:00:29
-    10027008   9%    3.10MB/s    0:00:30
-remote: merge git-annex     13008896  12%    3.01MB/s    0:00:30
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-[2014-05-25 18:24:13 CEST] RemoteControl: Syncing with diskstation 
-   dbdf944..cef70b3  git-annex -> synced/git-annex
-    16154624  15%    2.81MB/s    0:00:31
-    19169280  17%    2.81MB/s    0:00:30
-    22183936  20%    2.83MB/s    0:00:29
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   1e5f9f1..af18e69  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at cef70b30ddce59c2b22b370b25420da2fa7e2b49 but expected dbdf94438b7e48971a594c7647721f4821c8cff2
- ! dbdf944..cef70b3  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    24936448  23%    2.78MB/s    0:00:28
-    27688960  25%    2.70MB/s    0:00:28
-    30834688  28%    2.73MB/s    0:00:27
-    32899072  30%    2.50MB/s    0:00:28
-    35749888  33%    2.53MB/s    0:00:27
-    38764544  36%    2.56MB/s    0:00:25
-    41779200  39%    2.53MB/s    0:00:25
-    44072960  41%    2.60MB/s    0:00:23
-    47415296  44%    2.71MB/s    0:00:21
-    50036736  46%    2.65MB/s    0:00:20
-    52789248  49%    2.59MB/s    0:00:20
-    55672832  52%    2.72MB/s    0:00:18
-    58687488  54%    2.64MB/s    0:00:17
-    61571072  57%    2.69MB/s    0:00:16
-    64585728  60%    2.75MB/s    0:00:14
-    67207168  62%    2.65MB/s    0:00:14
-    69304320  64%    2.44MB/s    0:00:14
-    72318976  67%    2.46MB/s    0:00:13
-    75071488  70%    2.42MB/s    0:00:12
-    78020608  73%    2.53MB/s    0:00:11
-    80904192  75%    2.71MB/s    0:00:09
-    83787776  78%    2.68MB/s    0:00:08
-    86540288  81%    2.66MB/s    0:00:07
-    89423872  83%    2.64MB/s    0:00:06
-    92372992  86%    2.67MB/s    0:00:05
-    95256576  89%    2.68MB/s    0:00:04
-    98140160  91%    2.72MB/s    0:00:03
-   101154816  94%    2.74MB/s    0:00:02
-   104169472  97%    2.73MB/s    0:00:00
-   106802484 100%    2.70MB/s    0:00:37 (xfer#1, to-check=0/1)
-
-sent 106815702 bytes  received 42 bytes  2704196.05 bytes/sec
-total size is 106802484  speedup is 1.00
-[2014-05-25 18:24:47 CEST] Transferrer: Uploaded 10_scales-2.mp4
-[2014-05-25 18:24:47 CEST] Pusher: Syncing with diskstation 
-
-WORM-s106802484-m1399168180--An Introduction to d3.js - From Scattered to Scatterplot%10_scales.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3964928   3%    3.74MB/s    0:00:26
-     6848512   6%    3.19MB/s    0:00:30
-     9994240   9%    3.08MB/s    0:00:30
-remote: merge git-annex     12877824  12%    2.97MB/s    0:00:30
-    15892480  14%    2.74MB/s    0:00:32
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-[2014-05-25 18:24:53 CEST] RemoteControl: Syncing with diskstation 
-   cef70b3..bc92e4a  git-annex -> synced/git-annex
-    18644992  17%    2.71MB/s    0:00:31
-    20873216  19%    2.51MB/s    0:00:33
-    23429120  21%    2.39MB/s    0:00:34
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   af18e69..7b0c500  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at bc92e4a867338760dec749af77a9262591b9c43a but expected cef70b30ddce59c2b22b370b25420da2fa7e2b49
- ! cef70b3..bc92e4a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    27099136  25%    2.52MB/s    0:00:30
-    29982720  28%    2.56MB/s    0:00:29
-    32866304  30%    2.72MB/s    0:00:26
-    35880960  33%    2.88MB/s    0:00:24
-    38633472  36%    2.69MB/s    0:00:24
-    41517056  38%    2.68MB/s    0:00:23
-    44662784  41%    2.74MB/s    0:00:22
-    47546368  44%    2.72MB/s    0:00:21
-    50298880  47%    2.72MB/s    0:00:20
-    53182464  49%    2.72MB/s    0:00:19
-    56066048  52%    2.66MB/s    0:00:18
-    58949632  55%    2.67MB/s    0:00:17
-    61308928  57%    2.59MB/s    0:00:17
-    63799296  59%    2.51MB/s    0:00:16
-    66781184  62%    2.54MB/s    0:00:15
-    69697536  65%    2.53MB/s    0:00:14
-    72712192  68%    2.67MB/s    0:00:12
-    75595776  70%    2.77MB/s    0:00:10
-    78479360  73%    2.74MB/s    0:00:10
-    81428480  76%    2.75MB/s    0:00:09
-    84312064  78%    2.73MB/s    0:00:08
-    87195648  81%    2.73MB/s    0:00:07
-    90210304  84%    2.77MB/s    0:00:05
-    93192192  87%    2.76MB/s    0:00:04
-    96075776  89%    2.74MB/s    0:00:03
-    98959360  92%    2.71MB/s    0:00:02
-   101974016  95%    2.68MB/s    0:00:01
-   104857600  98%    2.68MB/s    0:00:00
-   106802484 100%    2.71MB/s    0:00:37 (xfer#1, to-check=0/1)
-
-sent 106815700 bytes  received 42 bytes  2704196.00 bytes/sec
-total size is 106802484  speedup is 1.00
-[2014-05-25 18:25:26 CEST] Transferrer: Uploaded 10_scales.mp4
-[2014-05-25 18:25:26 CEST] Pusher: Syncing with diskstation 
-
-WORM-s132805496-m1399168071--An Introduction to d3.js - From Scattered to Scatterplot%11_axes.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4096000   3%    3.82MB/s    0:00:32
-     7110656   5%    3.32MB/s    0:00:37
-     9863168   7%    3.07MB/s    0:00:39
-remote: merge git-annex     12877824   9%    3.01MB/s    0:00:38
-    15826944  11%    2.76MB/s    0:00:41
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 18:25:33 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   bc92e4a..cf6d3d1  git-annex -> synced/git-annex
-    18710528  14%    2.74MB/s    0:00:40
-    21594112  16%    2.78MB/s    0:00:39
-    24477696  18%    2.75MB/s    0:00:38
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7b0c500..8393191  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at cf6d3d1e7ec71ad4d9c4a0e5256f361c58ca5e75 but expected bc92e4a867338760dec749af77a9262591b9c43a
- ! bc92e4a..cf6d3d1  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    27230208  20%    2.70MB/s    0:00:38
-    29949952  22%    2.63MB/s    0:00:38
-    32964608  24%    2.64MB/s    0:00:36
-    35848192  26%    2.64MB/s    0:00:35
-    38862848  29%    2.69MB/s    0:00:34
-    41877504  31%    2.77MB/s    0:00:32
-    44761088  33%    2.73MB/s    0:00:31
-    47513600  35%    2.71MB/s    0:00:30
-    50135040  37%    2.61MB/s    0:00:30
-    53280768  40%    2.66MB/s    0:00:29
-    56164352  42%    2.67MB/s    0:00:28
-    59179008  44%    2.71MB/s    0:00:26
-    62062592  46%    2.79MB/s    0:00:24
-    64946176  48%    2.73MB/s    0:00:24
-    68091904  51%    2.82MB/s    0:00:22
-    71106560  53%    2.84MB/s    0:00:21
-    74055680  55%    2.83MB/s    0:00:20
-    77070336  58%    2.85MB/s    0:00:19
-    79953920  60%    2.77MB/s    0:00:18
-    82837504  62%    2.74MB/s    0:00:17
-    85590016  64%    2.72MB/s    0:00:16
-    88342528  66%    2.63MB/s    0:00:16
-    91095040  68%    2.60MB/s    0:00:15
-    94044160  70%    2.62MB/s    0:00:14
-    97058816  73%    2.66MB/s    0:00:13
-    99549184  74%    2.60MB/s    0:00:12
-   101515264  76%    2.41MB/s    0:00:12
-   103481344  77%    2.18MB/s    0:00:13
-   105578496  79%    1.93MB/s    0:00:13
-   107806720  81%    1.89MB/s    0:00:12
-   110821376  83%    2.12MB/s    0:00:10
-   113704960  85%    2.34MB/s    0:00:07
-   116719616  87%    2.60MB/s    0:00:06
-   119603200  90%    2.77MB/s    0:00:04
-   122486784  92%    2.73MB/s    0:00:03
-   125435904  94%    2.74MB/s    0:00:02
-   128450560  96%    2.74MB/s    0:00:01
-   131268608  98%    2.70MB/s    0:00:00
-   132805496 100%    2.67MB/s    0:00:47 (xfer#1, to-check=0/1)
-
-sent 132821882 bytes  received 42 bytes  2683271.19 bytes/sec
-total size is 132805496  speedup is 1.00
-[2014-05-25 18:26:16 CEST] Transferrer: Uploaded 11_axes.mp4
-[2014-05-25 18:26:16 CEST] Pusher: Syncing with diskstation 
-
-WORM-s120549770-m1399667258--An Introduction to d3.js - From Scattered to Scatterplot%12_advanced-techniques.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4096000   3%    3.77MB/s    0:00:30
-     7110656   5%    3.31MB/s    0:00:33
-    10125312   8%    3.15MB/s    0:00:34
-remote: merge git-annex     13008896  10%    3.04MB/s    0:00:34
-[2014-05-25 18:26:22 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   cf6d3d1..fef357a  git-annex -> synced/git-annex
-    15892480  13%    2.78MB/s    0:00:36
-    18776064  15%    2.75MB/s    0:00:36
-    21659648  17%    2.72MB/s    0:00:35
-    24608768  20%    2.73MB/s    0:00:34
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   8393191..9ef8d81  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at fef357aaed77f1b94344c0aeea71b30a50de247d but expected cf6d3d1e7ec71ad4d9c4a0e5256f361c58ca5e75
- ! cf6d3d1..fef357a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    27623424  22%    2.75MB/s    0:00:33
-    30507008  25%    2.74MB/s    0:00:32
-    33390592  27%    2.72MB/s    0:00:31
-    36405248  30%    2.74MB/s    0:00:30
-    39419904  32%    2.73MB/s    0:00:29
-    42434560  35%    2.76MB/s    0:00:27
-    45580288  37%    2.83MB/s    0:00:25
-    48594944  40%    2.83MB/s    0:00:24
-    51576832  42%    2.83MB/s    0:00:23
-    54231040  44%    2.76MB/s    0:00:23
-    57245696  47%    2.74MB/s    0:00:22
-    60260352  49%    2.73MB/s    0:00:21
-    63275008  52%    2.73MB/s    0:00:20
-    66289664  54%    2.80MB/s    0:00:18
-    69304320  57%    2.80MB/s    0:00:17
-    72187904  59%    2.77MB/s    0:00:17
-    75071488  62%    2.74MB/s    0:00:16
-    78086144  64%    2.73MB/s    0:00:15
-    80969728  67%    2.70MB/s    0:00:14
-    84115456  69%    2.75MB/s    0:00:12
-    87130112  72%    2.79MB/s    0:00:11
-    90013696  74%    2.77MB/s    0:00:10
-    92766208  76%    2.73MB/s    0:00:09
-    95780864  79%    2.70MB/s    0:00:08
-    98664448  81%    2.68MB/s    0:00:07
-   101679104  84%    2.71MB/s    0:00:06
-   104693760  86%    2.78MB/s    0:00:05
-   107511808  89%    2.74MB/s    0:00:04
-   110526464  91%    2.74MB/s    0:00:03
-   113508352  94%    2.75MB/s    0:00:02
-   116654080  96%    2.77MB/s    0:00:01
-   119668736  99%    2.82MB/s    0:00:00
-   120549770 100%    2.79MB/s    0:00:41 (xfer#1, to-check=0/1)
-
-sent 120564675 bytes  received 42 bytes  2771602.69 bytes/sec
-total size is 120549770  speedup is 1.00
-[2014-05-25 18:26:59 CEST] Transferrer: Uploaded 12_advanc..iques.mp4
-[2014-05-25 18:27:00 CEST] Pusher: Syncing with diskstation 
-
-WORM-s17591948-m1399167639--An Introduction to d3.js - From Scattered to Scatterplot%13_conclusion.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3997696  22%    3.68MB/s    0:00:03
-     6881280  39%    3.16MB/s    0:00:03
-     9764864  55%    2.99MB/s    0:00:02
-remote: merge git-annex     12910592  73%    2.99MB/s    0:00:01
-    15794176  89%    2.74MB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 18:27:07 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-    17591948 100%    2.92MB/s    0:00:05 (xfer#1, to-check=0/1)
-   fef357a..28d7559  git-annex -> synced/git-annex
-
-sent 17594275 bytes  received 42 bytes  2345908.93 bytes/sec
-total size is 17591948  speedup is 1.00
-[2014-05-25 18:27:08 CEST] Transferrer: Uploaded 13_conclusion.mp4
-
-WORM-s1250093-m1389398522--C,43,43 Memory Management%01_introduction.mp4
-       32768   2%    0.00kB/s    0:00:00
-     1250093 100%   25.24MB/s    0:00:00 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9ef8d81..740fecd  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 28d7559836e91e16f98a532c30e5a4cbaef12250 but expected fef357aaed77f1b94344c0aeea71b30a50de247d
- ! fef357a..28d7559  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 1250398 bytes  received 42 bytes  833626.67 bytes/sec
-total size is 1250093  speedup is 1.00
-[2014-05-25 18:27:10 CEST] Transferrer: Uploaded 01_introduction.mp4
-[2014-05-25 18:27:11 CEST] Pusher: Syncing with diskstation 
-
-WORM-s4072461-m1389398387--C,43,43 Memory Management%02_leaks-and-overruns.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3801088  93%    3.52MB/s    0:00:00
-     4072461 100%    3.35MB/s    0:00:01 (xfer#1, to-check=0/1)
-remote: merge git-annex 
-sent 4073116 bytes  received 42 bytes  1629263.20 bytes/sec
-total size is 4072461  speedup is 1.00
-[2014-05-25 18:27:17 CEST] Transferrer: Uploaded 02_leaks-..rruns.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-
-WORM-s10885066-m1389398446--C,43,43 Memory Management%03_stl-vector-methods-range-checking-and-sentinels.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 18:27:18 CEST] RemoteControl: Syncing with diskstation 
-   28d7559..d7a7f79  git-annex -> synced/git-annex
-     3964928  36%    3.71MB/s    0:00:01
-     6979584  64%    3.28MB/s    0:00:01
-     9797632  90%    3.08MB/s    0:00:00
-    10885066 100%    3.07MB/s    0:00:03 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   740fecd..8700b31  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at d7a7f7988fd67d9cd827311157f7633da55d2e85 but expected 28d7559836e91e16f98a532c30e5a4cbaef12250
- ! 28d7559..d7a7f79  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 10886583 bytes  received 42 bytes  1979386.36 bytes/sec
-total size is 10885066  speedup is 1.00
-[2014-05-25 18:27:22 CEST] Transferrer: Uploaded 03_stl-ve..inels.mp4
-
-WORM-s6830209-m1389398548--C,43,43 Memory Management%04_memory-leaks-part-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 18:27:23 CEST] Pusher: Syncing with diskstation 
-     3964928  58%    3.72MB/s    0:00:00
-     6830209 100%    3.23MB/s    0:00:00
-     6830209 100%    3.23MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 6831201 bytes  received 42 bytes  1951783.71 bytes/sec
-total size is 6830209  speedup is 1.00
-[2014-05-25 18:27:25 CEST] Transferrer: Uploaded 04_memory..art-1.mp4
-
-WORM-s4500501-m1389398494--C,43,43 Memory Management%05_memory-leaks-part-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      3833856  85%    3.57MB/s    0:00:00
-     4500501 100%    3.39MB/s    0:00:01 (xfer#1, to-check=0/1)
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   d7a7f79..963ef9d  git-annex -> synced/git-annex
-[2014-05-25 18:27:28 CEST] RemoteControl: Syncing with diskstation 
-
-sent 4501209 bytes  received 42 bytes  1286071.71 bytes/sec
-total size is 4500501  speedup is 1.00
-[2014-05-25 18:27:28 CEST] Transferrer: Uploaded 05_memory..art-2.mp4
-
-WORM-s4479532-m1389398463--C,43,43 Memory Management%06_pointers-pitfalls-and-best-practices.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4292608  95%    4.06MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   8700b31..8a3838b  git-annex  -> diskstation/git-annex
-     4479532 100%    4.05MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 4480253 bytes  received 42 bytes  1280084.29 bytes/sec
-total size is 4479532  speedup is 1.00
-[2014-05-25 18:27:31 CEST] Transferrer: Uploaded 06_pointe..tices.mp4
-
-WORM-s9775707-m1389398514--C,43,43 Memory Management%07_initialize-everything-trust-but-verify.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 18:27:32 CEST] Pusher: Syncing with diskstation 
-     4096000  41%    3.77MB/s    0:00:01
-     7241728  74%    3.37MB/s    0:00:00
-     9775707 100%    3.22MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 9777078 bytes  received 42 bytes  2793462.86 bytes/sec
-total size is 9775707  speedup is 1.00
-[2014-05-25 18:27:34 CEST] Transferrer: Uploaded 07_initia..erify.mp4
-remote: merge git-annex 
-WORM-s15498925-m1389398484--C,43,43 Memory Management%08_reading-and-writing-shared-assets.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3964928  25%    3.69MB/s    0:00:03
-[2014-05-25 18:27:36 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   963ef9d..d7cb480  git-annex -> synced/git-annex
-     6848512  44%    3.21MB/s    0:00:02
-     9863168  63%    3.07MB/s    0:00:01
-    13008896  83%    3.05MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   8a3838b..9dc2149  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at d7cb4801b1d5172fa94c5ef5b952650404806c5e but expected 963ef9d37e0ca48e88afccc16e3d53a7dbe94a15
- ! 963ef9d..d7cb480  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    15498925 100%    3.04MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 15500988 bytes  received 42 bytes  2818369.09 bytes/sec
-total size is 15498925  speedup is 1.00
-[2014-05-25 18:27:41 CEST] Transferrer: Uploaded 08_readin..ssets.mp4
-[2014-05-25 18:27:41 CEST] Pusher: Syncing with diskstation 
-
-WORM-s7479394-m1389398424--C,43,43 Memory Management%09_undefined-behaviour-and-other-bad-practices.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4030464  53%    3.77MB/s    0:00:00
-remote: merge git-annex      7045120  94%    3.28MB/s    0:00:00
-     7479394 100%    3.24MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 7480490 bytes  received 42 bytes  2137294.86 bytes/sec
-total size is 7479394  speedup is 1.00
-[2014-05-25 18:27:47 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 18:27:47 CEST] Transferrer: Uploaded 09_undefi..tices.mp4
-
-WORM-s5620037-m1389398373--C,43,43 Memory Management%10_the-heap-and-stl-wrappers.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   d7cb480..cebe41e  git-annex -> synced/git-annex
-     4390912  78%    4.02MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9dc2149..2c100e7  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at cebe41ecefec0ba03838b77300b8213abff6e46f but expected d7cb4801b1d5172fa94c5ef5b952650404806c5e
- ! d7cb480..cebe41e  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 18:27:48 CEST] RemoteControl: Syncing with diskstation 
-     5620037 100%    3.71MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 5620887 bytes  received 42 bytes  2248371.60 bytes/sec
-total size is 5620037  speedup is 1.00
-[2014-05-25 18:27:50 CEST] Transferrer: Uploaded 10_the-he..ppers.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   2c100e7..7d585c6  git-annex  -> diskstation/git-annex
-
-WORM-s1014080-m1389398563--C,43,43 Memory Management%11_about-the-author.mp4
-       32768   3%    0.00kB/s    0:00:00
-     1014080 100%   20.80MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 1014357 bytes  received 42 bytes  676266.00 bytes/sec
-total size is 1014080  speedup is 1.00
-[2014-05-25 18:27:51 CEST] Transferrer: Uploaded 11_about-..uthor.mp4
-[2014-05-25 18:27:52 CEST] Pusher: Syncing with diskstation 
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-[2014-05-25 18:27:56 CEST] RemoteControl: Syncing with diskstation 
-   cebe41e..1f16e00  git-annex -> synced/git-annex
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7d585c6..25d816f  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 1f16e00081100c31ba110cc6655ba98ce9c3ccf9 but expected cebe41ecefec0ba03838b77300b8213abff6e46f
- ! cebe41e..1f16e00  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 19:02:45 CEST] main: Syncing with diskstation 
-remote: merge git-annex ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   1f16e00..25d816f  git-annex -> synced/git-annex
-[2014-05-25 19:16:16 CEST] NetWatcherFallback: Syncing with diskstation 
-Everything up-to-date
-[2014-05-25 19:44:23 CEST] main: Syncing with diskstation 
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   25d816f..af358a2  git-annex -> synced/git-annex
-
-WORM-s311796310-m1396397568--Lean UX Workshop%01_introduction.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3440640   1%    3.23MB/s    0:01:33
-     6062080   1%    2.75MB/s    0:01:48
-    10518528   3%    3.15MB/s    0:01:33
-    13926400   4%    3.15MB/s    0:01:32
-    16023552   5%    2.73MB/s    0:01:45
-    20611072   6%    3.22MB/s    0:01:28
-    22315008   7%    2.58MB/s    0:01:49
-    26509312   8%    2.76MB/s    0:01:40
-    29655040   9%    3.10MB/s    0:01:28
-    33325056  10%    2.61MB/s    0:01:44
-    36470784  11%    2.96MB/s    0:01:30
-    40402944  12%    2.88MB/s    0:01:32
-    44072960  14%    2.96MB/s    0:01:28
-    47218688  15%    3.17MB/s    0:01:21
-    49840128  15%    3.04MB/s    0:01:24
-    54296576  17%    3.12MB/s    0:01:20
-    58228736  18%    3.20MB/s    0:01:17
-    61636608  19%    3.23MB/s    0:01:15
-    64782336  20%    3.40MB/s    0:01:11
-    66879488  21%    2.92MB/s    0:01:21
-    71335936  22%    3.07MB/s    0:01:16
-    75005952  24%    3.15MB/s    0:01:13
-    78151680  25%    3.14MB/s    0:01:12
-    80510976  25%    3.01MB/s    0:01:15
-    83918848  26%    2.76MB/s    0:01:20
-    86540288  27%    2.48MB/s    0:01:28
-    91291648  29%    2.83MB/s    0:01:15
-    92831744  29%    2.75MB/s    0:01:17
-    95977472  30%    2.66MB/s    0:01:19
-   100433920  32%    3.08MB/s    0:01:06
-   103841792  33%    2.77MB/s    0:01:13
-   107446272  34%    3.30MB/s    0:01:00
-   109608960  35%    3.12MB/s    0:01:03
-   113803264  36%    3.09MB/s    0:01:02
-   115900416  37%    2.68MB/s    0:01:11
-   119308288  38%    2.62MB/s    0:01:11
-   123240448  39%    2.97MB/s    0:01:01
-   126648320  40%    2.61MB/s    0:01:09
-   130580480  41%    3.09MB/s    0:00:57
-   134643712  43%    3.26MB/s    0:00:52
-   135561216  43%    2.65MB/s    0:01:04
-   140017664  44%    3.11MB/s    0:00:53
-   142639104  45%    2.82MB/s    0:00:58
-   146866176  47%    2.87MB/s    0:00:56
-   150241280  48%    3.46MB/s    0:00:45
-   152338432  48%    2.80MB/s    0:00:55
-   157220864  50%    3.31MB/s    0:00:45
-   160464896  51%    2.88MB/s    0:00:51
-   165085184  52%    3.14MB/s    0:00:45
-   167542784  53%    3.35MB/s    0:00:42
-   171638784  55%    3.18MB/s    0:00:43
-   172785664  55%    2.78MB/s    0:00:48
-   176979968  56%    2.67MB/s    0:00:49
-   179601408  57%    2.48MB/s    0:00:52
-   184254464  59%    2.60MB/s    0:00:47
-   187432960  60%    3.16MB/s    0:00:38
-   190742528  61%    2.96MB/s    0:00:39
-   194412544  62%    3.48MB/s    0:00:32
-   197525504  63%    3.12MB/s    0:00:35
-   201064448  64%    3.19MB/s    0:00:33
-   203980800  65%    3.01MB/s    0:00:35
-   208699392  66%    3.25MB/s    0:00:31
-   212369408  68%    3.36MB/s    0:00:28
-   215515136  69%    3.27MB/s    0:00:28
-   217350144  69%    3.04MB/s    0:00:30
-   221806592  71%    2.99MB/s    0:00:29
-   225378304  72%    2.94MB/s    0:00:28
-   228622336  73%    2.98MB/s    0:00:27
-   231243776  74%    3.13MB/s    0:00:25
-   233603072  74%    2.59MB/s    0:00:29
-   237273088  76%    2.35MB/s    0:00:30
-   239894528  76%    2.22MB/s    0:00:31
-   242515968  77%    2.07MB/s    0:00:32
-   244350976  78%    1.97MB/s    0:00:33
-   246448128  79%    1.87MB/s    0:00:34
-   250118144  80%    1.73MB/s    0:00:34
-   253263872  81%    2.00MB/s    0:00:28
-   254312448  81%    1.80MB/s    0:00:31
-   255885312  82%    1.58MB/s    0:00:34
-   257720320  82%    1.33MB/s    0:00:39
-   259817472  83%    1.01MB/s    0:00:50
-   261914624  84%    1.06MB/s    0:00:45
-   264011776  84%    1.08MB/s    0:00:43
-   265584640  85%    1.16MB/s    0:00:39
-   267419648  85%    1.21MB/s    0:00:35
-   272662528  87%    2.00MB/s    0:00:19
-   276856832  88%    2.77MB/s    0:00:12
-   278953984  89%    2.81MB/s    0:00:11
-   283410432  90%    3.51MB/s    0:00:07
-   288358400  92%    3.47MB/s    0:00:06
-   292323328  93%    3.32MB/s    0:00:05
-   296714240  95%    3.93MB/s    0:00:03
-   300908544  96%    3.95MB/s    0:00:02
-   303333376  97%    3.30MB/s    0:00:02
-   307789824  98%    3.53MB/s    0:00:01
-   310673408  99%    2.89MB/s    0:00:00
-   311796310 100%    2.73MB/s    0:01:48 (xfer#1, to-check=0/1)
-
-sent 311834516 bytes  received 42 bytes  2822032.20 bytes/sec
-total size is 311796310  speedup is 1.00
-[2014-05-25 19:46:46 CEST] Transferrer: Uploaded 01_introduction.mp4
-[2014-05-25 19:46:46 CEST] Pusher: Syncing with diskstation 
-
-WORM-s197776451-m1396396404--Lean UX Workshop%02_nordstrom-case-study.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5177344   2%    4.78MB/s    0:00:39
-     8683520   4%    3.74MB/s    0:00:49
-    13139968   6%    3.33MB/s    0:00:54
-remote: merge git-annex     18382848   9%    3.63MB/s    0:00:48
-    22315008  11%    3.16MB/s    0:00:54
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   af358a2..3b93fc5  git-annex -> synced/git-annex
-[2014-05-25 19:46:54 CEST] RemoteControl: Syncing with diskstation 
-    26902528  13%    3.47MB/s    0:00:48
-    29917184  15%    3.51MB/s    0:00:46
-    31653888  16%    2.82MB/s    0:00:57
-    33849344  17%    2.64MB/s    0:01:00
-    36995072  18%    2.30MB/s    0:01:08
-    41189376  20%    2.62MB/s    0:00:58
-    44859392  22%    2.97MB/s    0:00:50
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   25d816f..b7c06ab  git-annex  -> diskstation/git-annex
-    50102272  25%    3.67MB/s    0:00:39
-    52199424  26%    3.41MB/s    0:00:41
-    56655872  28%    3.47MB/s    0:00:39
-    60719104  30%    3.64MB/s    0:00:36
-    64520192  32%    3.31MB/s    0:00:39
-    68714496  34%    3.85MB/s    0:00:32
-    72876032  36%    3.79MB/s    0:00:32
-    76054528  38%    3.60MB/s    0:00:32
-    80216064  40%    3.70MB/s    0:00:31
-    83656704  42%    3.25MB/s    0:00:34
-    88899584  44%    3.48MB/s    0:00:30
-    92995584  47%    3.69MB/s    0:00:27
-    96763904  48%    3.62MB/s    0:00:27
-   100925440  51%    4.08MB/s    0:00:23
-   104628224  52%    3.73MB/s    0:00:24
-   109084672  55%    3.80MB/s    0:00:22
-   111443968  56%    3.40MB/s    0:00:24
-   116752384  59%    3.66MB/s    0:00:21
-   119046144  60%    3.33MB/s    0:00:23
-   124026880  62%    3.44MB/s    0:00:20
-   128483328  64%    3.98MB/s    0:00:16
-   132710400  67%    3.73MB/s    0:00:17
-   136871936  69%    4.17MB/s    0:00:14
-   141131776  71%    4.00MB/s    0:00:13
-   145522688  73%    4.01MB/s    0:00:12
-   149716992  75%    4.02MB/s    0:00:11
-   154173440  77%    4.08MB/s    0:00:10
-   158433280  80%    4.11MB/s    0:00:09
-   162758656  82%    4.08MB/s    0:00:08
-   166952960  84%    4.08MB/s    0:00:07
-   170459136  86%    3.85MB/s    0:00:06
-   174817280  88%    3.87MB/s    0:00:05
-   179011584  90%    3.85MB/s    0:00:04
-   183238656  92%    3.86MB/s    0:00:03
-   187367424  94%    4.01MB/s    0:00:02
-   191561728  96%    3.96MB/s    0:00:01
-   195887104  99%    3.98MB/s    0:00:00
-   197776451 100%    3.62MB/s    0:00:52 (xfer#1, to-check=0/1)
-
-sent 197800745 bytes  received 42 bytes  3697210.97 bytes/sec
-total size is 197776451  speedup is 1.00
-[2014-05-25 19:47:40 CEST] Transferrer: Uploaded 02_nordst..study.mp4
-[2014-05-25 19:47:40 CEST] Pusher: Syncing with diskstation 
-
-WORM-s401429383-m1396397422--Lean UX Workshop%03_assumptions-and-hypotheses.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5472256   1%    5.18MB/s    0:01:14
-remote: merge git-annex      9895936   2%    4.61MB/s    0:01:22
-    14188544   3%    4.41MB/s    0:01:25
-[2014-05-25 19:47:45 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   3b93fc5..02a8a6a  git-annex -> synced/git-annex
-    18808832   4%    4.39MB/s    0:01:25
-    22315008   5%    3.92MB/s    0:01:34
-    26935296   6%    3.98MB/s    0:01:31
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b7c06ab..c1859f2  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 02a8a6a6016fd1f36acc39b27cd9e2f1b24fd394 but expected 3b93fc5ace21818579a161200a925cf8e2120c4d
- ! 3b93fc5..02a8a6a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    31752192   7%    4.10MB/s    0:01:28
-    36110336   8%    4.04MB/s    0:01:28
-    39616512   9%    4.02MB/s    0:01:27
-    44826624  11%    4.13MB/s    0:01:24
-    47742976  11%    3.71MB/s    0:01:33
-    52854784  13%    3.89MB/s    0:01:27
-    57180160  14%    3.87MB/s    0:01:26
-    62423040  15%    3.92MB/s    0:01:24
-    66617344  16%    4.20MB/s    0:01:17
-    71008256  17%    4.04MB/s    0:01:19
-    75333632  18%    4.30MB/s    0:01:14
-    79659008  19%    4.08MB/s    0:01:17
-    83918848  20%    4.07MB/s    0:01:16
-    88375296  22%    4.07MB/s    0:01:15
-    92700672  23%    4.04MB/s    0:01:14
-    97058816  24%    4.05MB/s    0:01:13
-   101253120  25%    4.06MB/s    0:01:12
-   104759296  26%    3.84MB/s    0:01:15
-   109084672  27%    3.84MB/s    0:01:14
-   112820224  28%    3.70MB/s    0:01:16
-   117473280  29%    3.79MB/s    0:01:13
-   120094720  29%    3.53MB/s    0:01:17
-   125435904  31%    3.79MB/s    0:01:11
-   128483328  32%    3.46MB/s    0:01:17
-   133988352  33%    3.67MB/s    0:01:11
-   137134080  34%    3.68MB/s    0:01:10
-   142639104  35%    3.70MB/s    0:01:08
-   145522688  36%    3.72MB/s    0:01:07
-   150962176  37%    3.69MB/s    0:01:06
-   154435584  38%    3.72MB/s    0:01:04
-   159875072  39%    3.73MB/s    0:01:03
-   163610624  40%    3.76MB/s    0:01:01
-   168755200  42%    3.72MB/s    0:01:01
-   172523520  42%    3.67MB/s    0:01:00
-   177995776  44%    3.66MB/s    0:00:59
-   181960704  45%    3.69MB/s    0:00:58
-   187400192  46%    3.74MB/s    0:00:55
-   191397888  47%    3.79MB/s    0:00:54
-   196739072  49%    3.77MB/s    0:00:53
-   200310784  49%    3.72MB/s    0:00:52
-   205553664  51%    3.69MB/s    0:00:51
-   209780736  52%    4.06MB/s    0:00:46
-   213778432  53%    3.76MB/s    0:00:48
-   217088000  54%    3.72MB/s    0:00:48
-   222560256  55%    3.76MB/s    0:00:46
-   225214464  56%    3.09MB/s    0:00:55
-   227573760  56%    2.76MB/s    0:01:01
-   232816640  57%    3.35MB/s    0:00:49
-   236486656  58%    2.94MB/s    0:00:54
-   241336320  60%    3.77MB/s    0:00:41
-   243826688  60%    3.50MB/s    0:00:44
-   249069568  62%    3.47MB/s    0:00:42
-   253001728  63%    3.18MB/s    0:00:45
-   258146304  64%    3.23MB/s    0:00:43
-   262438912  65%    3.84MB/s    0:00:35
-   263487488  65%    3.00MB/s    0:00:44
-   267943936  66%    3.41MB/s    0:00:38
-   271876096  67%    2.87MB/s    0:00:44
-   277118976  69%    3.07MB/s    0:00:39
-   281542656  70%    3.77MB/s    0:00:31
-   285507584  71%    3.74MB/s    0:00:30
-   290226176  72%    4.25MB/s    0:00:25
-   293371904  73%    3.74MB/s    0:00:28
-   298614784  74%    3.64MB/s    0:00:27
-   304119808  75%    4.00MB/s    0:00:23
-   307527680  76%    3.39MB/s    0:00:27
-   312508416  77%    3.67MB/s    0:00:23
-   317882368  79%    3.97MB/s    0:00:20
-   320372736  79%    3.32MB/s    0:00:23
-   325550080  81%    4.07MB/s    0:00:18
-   329842688  82%    4.06MB/s    0:00:17
-   333217792  83%    3.54MB/s    0:00:18
-   338460672  84%    4.23MB/s    0:00:14
-   342949888  85%    4.06MB/s    0:00:14
-   346062848  86%    3.50MB/s    0:00:15
-   350519296  87%    3.72MB/s    0:00:13
-   355926016  88%    3.75MB/s    0:00:11
-   360185856  89%    3.70MB/s    0:00:10
-   364380160  90%    4.24MB/s    0:00:08
-   368607232  91%    4.26MB/s    0:00:07
-   372015104  92%    3.72MB/s    0:00:07
-   377520128  94%    3.97MB/s    0:00:05
-   381976576  95%    4.03MB/s    0:00:04
-   386236416  96%    4.03MB/s    0:00:03
-   389578752  97%    4.10MB/s    0:00:02
-   394330112  98%    3.97MB/s    0:00:01
-   398589952  99%    3.94MB/s    0:00:00
-   401429383 100%    3.77MB/s    0:01:41 (xfer#1, to-check=0/1)
-
-sent 401478543 bytes  received 42 bytes  3879020.14 bytes/sec
-total size is 401429383  speedup is 1.00
-[2014-05-25 19:49:23 CEST] Transferrer: Uploaded 03_assump..heses.mp4
-[2014-05-25 19:49:23 CEST] Pusher: Syncing with diskstation 
-
-WORM-s341574274-m1396396677--Lean UX Workshop%04_personas.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5013504   1%    3.92MB/s    0:01:23
-    10452992   3%    4.49MB/s    0:01:12
-remote: merge git-annex     14778368   4%    4.38MB/s    0:01:12
-    18382848   5%    4.15MB/s    0:01:16
-[2014-05-25 19:49:29 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   02a8a6a..399d085  git-annex -> synced/git-annex
-    22577152   6%    4.16MB/s    0:01:14
-    26509312   7%    3.60MB/s    0:01:25
-    31293440   9%    3.70MB/s    0:01:21
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c1859f2..5a46cc4  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 399d0856bfb9fef74a18eb9d1d57c0151267323d but expected 02a8a6a6016fd1f36acc39b27cd9e2f1b24fd394
- ! 02a8a6a..399d085  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    35684352  10%    3.88MB/s    0:01:17
-    40108032  11%    3.92MB/s    0:01:15
-    43352064  12%    3.95MB/s    0:01:13
-    46956544  13%    3.67MB/s    0:01:18
-    51675136  15%    3.55MB/s    0:01:19
-    57180160  16%    3.80MB/s    0:01:13
-    61472768  17%    4.03MB/s    0:01:07
-    65044480  19%    4.00MB/s    0:01:07
-    70057984  20%    4.29MB/s    0:01:01
-    74383360  21%    4.03MB/s    0:01:04
-    78675968  23%    4.03MB/s    0:01:03
-    82739200  24%    4.18MB/s    0:01:00
-    86999040  25%    4.01MB/s    0:01:02
-    90734592  26%    3.76MB/s    0:01:05
-    95977472  28%    3.96MB/s    0:01:00
-   100433920  29%    4.04MB/s    0:00:58
-   104792064  30%    4.04MB/s    0:00:57
-   108986368  31%    4.24MB/s    0:00:53
-   111443968  32%    3.60MB/s    0:01:02
-   116686848  34%    3.74MB/s    0:00:58
-   120487936  35%    3.62MB/s    0:00:59
-   123764736  36%    3.25MB/s    0:01:05
-   128974848  37%    3.88MB/s    0:00:53
-   132415488  38%    3.52MB/s    0:00:58
-   136347648  39%    3.31MB/s    0:01:00
-   141721600  41%    3.92MB/s    0:00:49
-   144998400  42%    3.48MB/s    0:00:55
-   147619840  43%    3.27MB/s    0:00:57
-   152862720  44%    3.81MB/s    0:00:48
-   156008448  45%    3.29MB/s    0:00:55
-   160464896  46%    3.25MB/s    0:00:54
-   165904384  48%    3.88MB/s    0:00:44
-   169246720  49%    3.48MB/s    0:00:48
-   172523520  50%    3.36MB/s    0:00:49
-   178028544  52%    3.92MB/s    0:00:40
-   181600256  53%    3.51MB/s    0:00:44
-   184582144  54%    3.28MB/s    0:00:46
-   188514304  55%    3.60MB/s    0:00:41
-   192970752  56%    3.36MB/s    0:00:43
-   196902912  57%    3.19MB/s    0:00:44
-   202113024  59%    3.81MB/s    0:00:35
-   205684736  60%    3.72MB/s    0:00:35
-   208175104  60%    3.27MB/s    0:00:39
-   213581824  62%    3.87MB/s    0:00:32
-   216825856  63%    3.41MB/s    0:00:35
-   219709440  64%    3.22MB/s    0:00:36
-   225083392  65%    3.91MB/s    0:00:29
-   228622336  66%    3.48MB/s    0:00:31
-   232292352  68%    3.31MB/s    0:00:32
-   237666304  69%    3.89MB/s    0:00:26
-   241139712  70%    3.48MB/s    0:00:28
-   245137408  71%    3.29MB/s    0:00:28
-   250380288  73%    3.49MB/s    0:00:25
-   255361024  74%    3.42MB/s    0:00:24
-   258899968  75%    3.43MB/s    0:00:23
-   262176768  76%    3.38MB/s    0:00:22
-   267452416  78%    3.79MB/s    0:00:19
-   270434304  79%    3.36MB/s    0:00:20
-   274235392  80%    3.24MB/s    0:00:20
-   279478272  81%    3.89MB/s    0:00:15
-   282886144  82%    3.45MB/s    0:00:16
-   286818304  83%    3.38MB/s    0:00:15
-   292061184  85%    3.50MB/s    0:00:13
-   297304064  87%    3.50MB/s    0:00:12
-   300711936  88%    3.49MB/s    0:00:11
-   304152576  89%    3.66MB/s    0:00:09
-   308543488  90%    3.86MB/s    0:00:08
-   312770560  91%    3.60MB/s    0:00:07
-   316178432  92%    3.63MB/s    0:00:06
-   319586304  93%    3.44MB/s    0:00:06
-   325025792  95%    3.66MB/s    0:00:04
-   328466432  96%    3.50MB/s    0:00:03
-   331120640  96%    3.24MB/s    0:00:03
-   336592896  98%    3.87MB/s    0:00:01
-   340000768  99%    3.42MB/s    0:00:00
-   341574274 100%    3.66MB/s    0:01:29 (xfer#1, to-check=0/1)
-
-sent 341616112 bytes  received 42 bytes  3733509.88 bytes/sec
-total size is 341574274  speedup is 1.00
-[2014-05-25 19:50:54 CEST] Transferrer: Uploaded 04_personas.mp4
-[2014-05-25 19:50:54 CEST] Pusher: Syncing with diskstation 
-
-WORM-s112588009-m1396396463--Lean UX Workshop%05_outcomes-and-features.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5537792   4%    5.11MB/s    0:00:20
-     8683520   7%    3.73MB/s    0:00:27
-    14057472  12%    4.16MB/s    0:00:23
-remote: merge git-annex     17334272  15%    3.90MB/s    0:00:23
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 19:51:00 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-    21266432  18%    3.26MB/s    0:00:27
-   399d085..8395b06  git-annex -> synced/git-annex
-    26509312  23%    3.85MB/s    0:00:21
-    29655040  26%    3.34MB/s    0:00:24
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5a46cc4..c29a46c  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 8395b065d53211a1d1da518dafd09a81ba42f11c but expected 399d0856bfb9fef74a18eb9d1d57c0151267323d
- ! 399d085..8395b06  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    33062912  29%    3.16MB/s    0:00:24
-    38502400  34%    3.76MB/s    0:00:19
-    41910272  37%    3.36MB/s    0:00:20
-    45121536  40%    3.21MB/s    0:00:20
-    50561024  44%    3.88MB/s    0:00:15
-    53772288  47%    3.36MB/s    0:00:17
-    57442304  51%    3.22MB/s    0:00:16
-    62881792  55%    3.88MB/s    0:00:12
-    66093056  58%    3.39MB/s    0:00:13
-    70451200  62%    3.69MB/s    0:00:11
-    72908800  64%    3.15MB/s    0:00:12
-    77627392  68%    2.87MB/s    0:00:11
-    83132416  73%    3.33MB/s    0:00:08
-    84541440  75%    2.75MB/s    0:00:09
-    89423872  79%    3.71MB/s    0:00:06
-    90570752  80%    3.08MB/s    0:00:06
-    95911936  85%    3.02MB/s    0:00:05
-    97550336  86%    3.06MB/s    0:00:04
-   102531072  91%    2.60MB/s    0:00:03
-   107872256  95%    3.43MB/s    0:00:01
-   109871104  97%    2.78MB/s    0:00:00
-   112588009 100%    3.35MB/s    0:00:31 (xfer#1, to-check=0/1)
-
-sent 112601904 bytes  received 42 bytes  3361252.12 bytes/sec
-total size is 112588009  speedup is 1.00
-[2014-05-25 19:51:27 CEST] Transferrer: Uploaded 05_outcom..tures.mp4
-[2014-05-25 19:51:27 CEST] Pusher: Syncing with diskstation 
-
-WORM-s78565449-m1396396837--Lean UX Workshop%06_writing-hypotheses.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5275648   6%    4.94MB/s    0:00:14
-     6848512   8%    3.18MB/s    0:00:22
-remote: merge git-annex     11796480  15%    3.64MB/s    0:00:17
-    13402112  17%    3.12MB/s    0:00:20
-[2014-05-25 19:51:32 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   8395b06..bbec44b  git-annex -> synced/git-annex
-    17858560  22%    2.94MB/s    0:00:20
-    19693568  25%    3.01MB/s    0:00:19
-    24412160  31%    2.96MB/s    0:00:17
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c29a46c..d52fe33  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at bbec44b1f18107dc3aaab411ddf2ada1aa273741 but expected 8395b065d53211a1d1da518dafd09a81ba42f11c
- ! 8395b06..bbec44b  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    27033600  34%    3.00MB/s    0:00:16
-    31490048  40%    2.69MB/s    0:00:17
-    36470784  46%    2.96MB/s    0:00:13
-    41910272  53%    3.09MB/s    0:00:11
-    43286528  55%    2.97MB/s    0:00:11
-    48529408  61%    3.00MB/s    0:00:09
-    53510144  68%    3.06MB/s    0:00:07
-    58753024  74%    2.78MB/s    0:00:06
-    64159744  81%    3.51MB/s    0:00:04
-    67141632  85%    3.23MB/s    0:00:03
-    72548352  92%    3.61MB/s    0:00:01
-    76840960  97%    3.79MB/s    0:00:00
-    78565449 100%    3.17MB/s    0:00:23 (xfer#1, to-check=0/1)
-
-sent 78575188 bytes  received 42 bytes  3081381.57 bytes/sec
-total size is 78565449  speedup is 1.00
-[2014-05-25 19:51:52 CEST] Transferrer: Uploaded 06_writin..heses.mp4
-[2014-05-25 19:51:52 CEST] Pusher: Syncing with diskstation 
-
-WORM-s237023281-m1396397192--Lean UX Workshop%07_design-studio.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3964928   1%    3.16MB/s    0:01:12
-remote: merge git-annex      9207808   3%    3.35MB/s    0:01:06
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-[2014-05-25 19:51:57 CEST] RemoteControl: Syncing with diskstation 
-    14712832   6%    3.19MB/s    0:01:08
-   bbec44b..423bfb2  git-annex -> synced/git-annex
-    19169280   8%    2.99MB/s    0:01:11
-    23887872  10%    3.20MB/s    0:01:05
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   d52fe33..b408181  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 423bfb2586ebc18e8149998862ee1d0060d962ec but expected bbec44b1f18107dc3aaab411ddf2ada1aa273741
- ! bbec44b..423bfb2  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    26771456  11%    2.98MB/s    0:01:08
-    30965760  13%    2.91MB/s    0:01:09
-    35946496  15%    3.04MB/s    0:01:04
-    40927232  17%    2.76MB/s    0:01:09
-    45187072  19%    3.01MB/s    0:01:02
-    48005120  20%    3.04MB/s    0:01:00
-    50364416  21%    2.73MB/s    0:01:06
-    55607296  23%    2.77MB/s    0:01:03
-    60948480  25%    3.01MB/s    0:00:57
-    62423040  26%    2.75MB/s    0:01:01
-    66355200  27%    2.96MB/s    0:00:56
-    71335936  30%    2.89MB/s    0:00:55
-    76742656  32%    2.90MB/s    0:00:53
-    79200256  33%    3.06MB/s    0:00:50
-    82870272  34%    3.28MB/s    0:00:45
-    86802432  36%    3.60MB/s    0:00:40
-    91521024  38%    3.44MB/s    0:00:41
-    95191040  40%    3.74MB/s    0:00:37
-    97026048  40%    3.23MB/s    0:00:42
-   100171776  42%    2.87MB/s    0:00:46
-   104628224  44%    2.80MB/s    0:00:46
-   109903872  46%    3.14MB/s    0:00:39
-   113541120  47%    3.66MB/s    0:00:32
-   116686848  49%    3.89MB/s    0:00:30
-   121667584  51%    3.68MB/s    0:00:30
-   126386176  53%    3.51MB/s    0:00:30
-   131530752  55%    3.83MB/s    0:00:26
-   135823360  57%    4.07MB/s    0:00:24
-   140214272  59%    4.31MB/s    0:00:21
-   144474112  60%    4.26MB/s    0:00:21
-   148144128  62%    3.82MB/s    0:00:22
-   153124864  64%    3.97MB/s    0:00:20
-   154959872  65%    3.40MB/s    0:00:23
-   160071680  67%    3.59MB/s    0:00:20
-   161513472  68%    3.14MB/s    0:00:23
-   166494208  70%    3.15MB/s    0:00:21
-   169639936  71%    3.11MB/s    0:00:21
-   175046656  73%    3.17MB/s    0:00:19
-   178028544  75%    3.30MB/s    0:00:17
-   183271424  77%    3.33MB/s    0:00:15
-   186941440  78%    3.34MB/s    0:00:14
-   191922176  80%    3.25MB/s    0:00:13
-   195330048  82%    3.22MB/s    0:00:12
-   200835072  84%    3.27MB/s    0:00:10
-   202211328  85%    3.22MB/s    0:00:10
-   207585280  87%    3.31MB/s    0:00:08
-   210534400  88%    3.58MB/s    0:00:07
-   215154688  90%    3.40MB/s    0:00:06
-   215777280  91%    3.21MB/s    0:00:06
-   221020160  93%    3.03MB/s    0:00:05
-   225738752  95%    2.96MB/s    0:00:03
-   230227968  97%    2.94MB/s    0:00:02
-   235175936  99%    3.25MB/s    0:00:00
-   237023281 100%    3.26MB/s    0:01:09 (xfer#1, to-check=0/1)
-
-sent 237052360 bytes  received 42 bytes  3315418.21 bytes/sec
-total size is 237023281  speedup is 1.00
-[2014-05-25 19:53:03 CEST] Transferrer: Uploaded 07_design..tudio.mp4
-[2014-05-25 19:53:04 CEST] Pusher: Syncing with diskstation 
-
-WORM-s113325561-m1396396724--Lean UX Workshop%08_experiments-and-mvp-s.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072   3%    3.88MB/s    0:00:27
-remote: merge git-annex      7897088   6%    3.69MB/s    0:00:27
-[2014-05-25 19:53:08 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   423bfb2..e9861a8  git-annex -> synced/git-annex
-    13139968  11%    4.11MB/s    0:00:23
-    16023552  14%    3.39MB/s    0:00:28
-    21266432  18%    3.62MB/s    0:00:24
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b408181..6b97695  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at e9861a8445e7859f23e90dbc1e6113af547c0515 but expected 423bfb2586ebc18e8149998862ee1d0060d962ec
- ! 423bfb2..e9861a8  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    23101440  20%    3.22MB/s    0:00:27
-    28082176  24%    3.16MB/s    0:00:26
-    31490048  27%    3.25MB/s    0:00:24
-    35946496  31%    3.09MB/s    0:00:24
-    41189376  36%    3.80MB/s    0:00:18
-    42500096  37%    3.03MB/s    0:00:22
-    47972352  42%    3.88MB/s    0:00:16
-    51675136  45%    3.70MB/s    0:00:16
-    55345152  48%    3.13MB/s    0:00:18
-    60948480  53%    4.11MB/s    0:00:12
-    63209472  55%    3.10MB/s    0:00:15
-    67698688  59%    3.28MB/s    0:00:13
-    72646656  64%    3.26MB/s    0:00:12
-    78315520  69%    3.26MB/s    0:00:10
-    81297408  71%    3.36MB/s    0:00:09
-    86900736  76%    3.55MB/s    0:00:07
-    90472448  79%    3.68MB/s    0:00:06
-    94928896  83%    3.23MB/s    0:00:05
-   100433920  88%    3.87MB/s    0:00:03
-   104628224  92%    3.40MB/s    0:00:02
-   110067712  97%    3.85MB/s    0:00:00
-   113325561 100%    3.52MB/s    0:00:30 (xfer#1, to-check=0/1)
-
-sent 113339548 bytes  received 42 bytes  3487372.00 bytes/sec
-total size is 113325561  speedup is 1.00
-[2014-05-25 19:53:36 CEST] Transferrer: Uploaded 08_experi..mvp-s.mp4
-[2014-05-25 19:53:37 CEST] Pusher: Syncing with diskstation 
-
-WORM-s171315323-m1396397078--Lean UX Workshop%09_research.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      3964928   2%    3.72MB/s    0:00:43
-     9469952   5%    4.48MB/s    0:00:35
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e9861a8..0967b9e  git-annex -> synced/git-annex
-[2014-05-25 19:53:41 CEST] RemoteControl: Syncing with diskstation 
-    12353536   7%    3.86MB/s    0:00:40
-    16252928   9%    3.83MB/s    0:00:39
-    19693568  11%    3.50MB/s    0:00:42
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   6b97695..b05c1b5  git-annex  -> diskstation/git-annex
-    25198592  14%    3.50MB/s    0:00:40
-    29392896  17%    3.78MB/s    0:00:36
-    31227904  18%    3.31MB/s    0:00:41
-    35979264  21%    3.82MB/s    0:00:34
-    38043648  22%    2.87MB/s    0:00:45
-    43548672  25%    3.18MB/s    0:00:39
-    47218688  27%    3.16MB/s    0:00:38
-    52723712  30%    3.26MB/s    0:00:35
-    55607296  32%    3.33MB/s    0:00:33
-    59801600  34%    3.09MB/s    0:00:35
-    65208320  38%    3.87MB/s    0:00:26
-    66879488  39%    3.10MB/s    0:00:32
-    72122368  42%    3.87MB/s    0:00:25
-    75530240  44%    3.32MB/s    0:00:28
-    80510976  46%    3.20MB/s    0:00:27
-    84180992  49%    3.32MB/s    0:00:25
-    89686016  52%    3.39MB/s    0:00:23
-    93880320  54%    3.59MB/s    0:00:21
-    99483648  58%    3.74MB/s    0:00:18
-   103317504  60%    3.83MB/s    0:00:17
-   108822528  63%    3.85MB/s    0:00:15
-   112754688  65%    3.82MB/s    0:00:14
-   118292480  69%    3.81MB/s    0:00:13
-   121405440  70%    3.93MB/s    0:00:12
-   126124032  73%    3.76MB/s    0:00:11
-   128745472  75%    3.68MB/s    0:00:11
-   133988352  78%    3.59MB/s    0:00:10
-   138182656  80%    3.53MB/s    0:00:09
-   143687680  83%    3.66MB/s    0:00:07
-   146833408  85%    3.70MB/s    0:00:06
-   152338432  88%    3.77MB/s    0:00:04
-   155484160  90%    3.70MB/s    0:00:04
-   160989184  93%    3.65MB/s    0:00:02
-   164397056  95%    3.71MB/s    0:00:01
-   169639936  99%    3.67MB/s    0:00:00
-   171315323 100%    3.60MB/s    0:00:45 (xfer#1, to-check=0/1)
-
-sent 171336377 bytes  received 42 bytes  3607082.51 bytes/sec
-total size is 171315323  speedup is 1.00
-[2014-05-25 19:54:24 CEST] Transferrer: Uploaded 09_research.mp4
-[2014-05-25 19:54:24 CEST] Pusher: Syncing with diskstation 
-
-WORM-s254857031-m1396396965--Lean UX Workshop%10_combining-lean-and-agile.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5275648   2%    4.91MB/s    0:00:49
-    10027008   3%    4.72MB/s    0:00:50
-remote: merge git-annex     13139968   5%    3.93MB/s    0:01:00
-    18710528   7%    4.26MB/s    0:00:54
-[2014-05-25 19:54:30 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-    22052864   8%    3.51MB/s    0:01:04
-   0967b9e..8e9de0b  git-annex -> synced/git-annex
-    27033600  10%    3.53MB/s    0:01:02
-    30441472  11%    3.72MB/s    0:00:58
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b05c1b5..9285684  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 8e9de0bb0562a8c9e6a72dcff4ad92f93403ad43 but expected 0967b9e587fc2d85662e7b0c1d047ea77bd1e540
- ! 0967b9e..8e9de0b  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    35815424  14%    3.66MB/s    0:00:58
-    39092224  15%    3.99MB/s    0:00:52
-    43286528  16%    3.83MB/s    0:00:54
-    45645824  17%    3.39MB/s    0:01:00
-    50888704  19%    3.34MB/s    0:00:59
-    54034432  21%    3.04MB/s    0:01:04
-    57966592  22%    3.00MB/s    0:01:04
-    63373312  24%    3.79MB/s    0:00:49
-    64520192  25%    2.95MB/s    0:01:02
-    67403776  26%    3.06MB/s    0:00:59
-    72908800  28%    3.40MB/s    0:00:52
-    76840960  30%    3.06MB/s    0:00:56
-    79986688  31%    3.51MB/s    0:00:48
-    85196800  33%    4.18MB/s    0:00:39
-    87326720  34%    3.20MB/s    0:00:51
-    92831744  36%    3.55MB/s    0:00:44
-    95977472  37%    3.15MB/s    0:00:49
-   100696064  39%    2.97MB/s    0:00:50
-   105676800  41%    3.27MB/s    0:00:44
-   110395392  43%    3.13MB/s    0:00:45
-   115376128  45%    3.84MB/s    0:00:35
-   116686848  45%    3.27MB/s    0:00:41
-   121667584  47%    3.72MB/s    0:00:34
-   125861888  49%    3.56MB/s    0:00:35
-   129007616  50%    2.92MB/s    0:00:42
-   134250496  52%    3.74MB/s    0:00:31
-   137396224  53%    3.01MB/s    0:00:38
-   142835712  56%    3.30MB/s    0:00:33
-   146571264  57%    3.21MB/s    0:00:32
-   150765568  59%    3.02MB/s    0:00:33
-   156270592  61%    3.80MB/s    0:00:25
-   158072832  62%    3.08MB/s    0:00:30
-   163282944  64%    3.87MB/s    0:00:23
-   165445632  64%    2.81MB/s    0:00:31
-   169279488  66%    2.52MB/s    0:00:33
-   173572096  68%    2.96MB/s    0:00:26
-   177242112  69%    2.28MB/s    0:00:33
-   179601408  70%    2.36MB/s    0:00:31
-   183959552  72%    2.44MB/s    0:00:28
-   187203584  73%    2.27MB/s    0:00:29
-   191135744  74%    2.68MB/s    0:00:23
-   196640768  77%    3.84MB/s    0:00:14
-   197427200  77%    2.79MB/s    0:00:20
-   200310784  78%    2.76MB/s    0:00:19
-   205815808  80%    3.13MB/s    0:00:15
-   207650816  81%    2.33MB/s    0:00:19
-   213123072  83%    3.64MB/s    0:00:11
-   217579520  85%    3.99MB/s    0:00:09
-   219185152  86%    3.08MB/s    0:00:11
-   222068736  87%    3.17MB/s    0:00:10
-   227508224  89%    3.15MB/s    0:00:08
-   230457344  90%    2.83MB/s    0:00:08
-   234389504  91%    3.27MB/s    0:00:06
-   238583808  93%    3.81MB/s    0:00:04
-   243204096  95%    3.63MB/s    0:00:03
-   247496704  97%    3.94MB/s    0:00:01
-   249593856  97%    3.61MB/s    0:00:01
-   254312448  99%    3.71MB/s    0:00:00
-   254857031 100%    3.29MB/s    0:01:13 (xfer#1, to-check=0/1)
-
-sent 254888297 bytes  received 42 bytes  3376004.49 bytes/sec
-total size is 254857031  speedup is 1.00
-[2014-05-25 19:55:40 CEST] Transferrer: Uploaded 10_combin..agile.mp4
-[2014-05-25 19:55:40 CEST] Pusher: Syncing with diskstation 
-
-WORM-s67182998-m1396396768--Lean UX Workshop%11_tools-and-techniques.mp4
-       32768   0%    0.00kB/s    0:00:00
-     2392064   3%    2.20MB/s    0:00:28
-remote: merge git-annex      7897088  11%    3.69MB/s    0:00:15
-    12353536  18%    3.75MB/s    0:00:14
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   8e9de0b..10f88fb  git-annex -> synced/git-annex
-[2014-05-25 19:55:45 CEST] RemoteControl: Syncing with diskstation 
-    13664256  20%    3.12MB/s    0:00:16
-    18644992  27%    3.71MB/s    0:00:12
-    20217856  30%    2.79MB/s    0:00:16
-    24510464  36%    2.82MB/s    0:00:14
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9285684..b2bad3b  git-annex  -> diskstation/git-annex
-    27557888  41%    3.04MB/s    0:00:12
-    32931840  49%    3.15MB/s    0:00:10
-    34373632  51%    3.09MB/s    0:00:10
-    38830080  57%    3.12MB/s    0:00:08
-    44072960  65%    3.80MB/s    0:00:05
-    45907968  68%    2.96MB/s    0:00:07
-    50626560  75%    3.81MB/s    0:00:04
-    53248000  79%    3.15MB/s    0:00:04
-    57442304  85%    2.95MB/s    0:00:03
-    62717952  93%    3.72MB/s    0:00:01
-    64520192  96%    3.07MB/s    0:00:00
-    67182998 100%    3.28MB/s    0:00:19 (xfer#1, to-check=0/1)
-
-sent 67191351 bytes  received 42 bytes  3125181.07 bytes/sec
-total size is 67182998  speedup is 1.00
-[2014-05-25 19:56:01 CEST] Transferrer: Uploaded 11_tools-..iques.mp4
-[2014-05-25 19:56:01 CEST] Pusher: Syncing with diskstation 
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   10f88fb..aa5471b  git-annex -> synced/git-annex
-[2014-05-25 19:56:06 CEST] RemoteControl: Syncing with diskstation 
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b2bad3b..34ef046  git-annex  -> diskstation/git-annex
-[2014-05-25 20:16:23 CEST] NetWatcherFallback: Syncing with diskstation 
-remote: merge git-annex ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   aa5471b..34ef046  git-annex -> synced/git-annex
-[2014-05-25 21:01:01 CEST] main: Syncing with diskstation 
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   34ef046..2f32e55  git-annex -> synced/git-annex
-
-WORM-s14123840-m1398381779--Learning Corel Painter X3%01_a-quick-tour-of-painter.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5799936  41%    5.46MB/s    0:00:01
-     9994240  70%    4.70MB/s    0:00:00
-    14123840 100%    4.71MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 14125729 bytes  received 42 bytes  4035934.57 bytes/sec
-total size is 14123840  speedup is 1.00
-[2014-05-25 21:01:34 CEST] Transferrer: Uploaded 01_a-quic..inter.mp4
-[2014-05-25 21:01:34 CEST] Pusher: Syncing with diskstation 
-
-WORM-s23356431-m1398381923--Learning Corel Painter X3%02_brushes-and-custom-palettes.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5275648  22%    4.47MB/s    0:00:03
-    10715136  45%    4.81MB/s    0:00:02
-    15237120  65%    4.65MB/s    0:00:01
-    19955712  85%    4.60MB/s    0:00:00
-remote: merge git-annex     23356431 100%    4.51MB/s    0:00:04 (xfer#1, to-check=0/1)
-[2014-05-25 21:01:40 CEST] RemoteControl: Syncing with diskstation 
-
-sent 23359448 bytes  received 42 bytes  4247180.00 bytes/sec
-total size is 23356431  speedup is 1.00
-[2014-05-25 21:01:40 CEST] Transferrer: Uploaded 02_brushe..ettes.mp4
-
-WORM-s16835823-m1398381229--Learning Corel Painter X3%03_managing-layers.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   2f32e55..f2e1569  git-annex -> synced/git-annex
-     6094848  36%    5.76MB/s    0:00:01
-    11010048  65%    5.22MB/s    0:00:01
-    15761408  93%    4.99MB/s    0:00:00
-    16835823 100%    4.96MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 16838032 bytes  received 42 bytes  3741794.22 bytes/sec
-total size is 16835823  speedup is 1.00
-[2014-05-25 21:01:45 CEST] Transferrer: Uploaded 03_managi..ayers.mp4
-
-WORM-s26947174-m1398380993--Learning Corel Painter X3%04_project-red-chairs.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:01:46 CEST] Pusher: Syncing with diskstation 
-     5799936  21%    5.47MB/s    0:00:03
-     8421376  31%    3.79MB/s    0:00:04
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   34ef046..28ecf68  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at f2e15690121bf48eba8288426bf72c0661ea444a but expected 2f32e55b5e8bd953707452ada9ad57fbeb20b7b1
- ! 2f32e55..f2e1569  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:01:48 CEST] RemoteControl: Syncing with diskstation 
-    13139968  48%    3.94MB/s    0:00:03
-    17956864  66%    4.10MB/s    0:00:02
-    22577152  83%    3.83MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   28ecf68..644a4ea  git-annex  -> diskstation/git-annex
-    25460736  94%    3.94MB/s    0:00:00
-    26947174 100%    3.97MB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 26950622 bytes  received 42 bytes  3593421.87 bytes/sec
-total size is 26947174  speedup is 1.00
-remote: merge git-annex [2014-05-25 21:01:52 CEST] Transferrer: Uploaded 04_projec..hairs.mp4
-
-WORM-s14550387-m1398382074--Learning Corel Painter X3%05_the-toolbox-part-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:01:53 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f2e1569..7bf9116  git-annex -> synced/git-annex
-     5668864  38%    5.09MB/s    0:00:01
-    10289152  70%    4.74MB/s    0:00:00
-    14550387 100%    4.56MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 14552323 bytes  received 42 bytes  3233858.89 bytes/sec
-total size is 14550387  speedup is 1.00
-[2014-05-25 21:01:57 CEST] Transferrer: Uploaded 05_the-to..art-1.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   644a4ea..f3817af  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 7bf9116bbeb90b398ac29d7b38e78dbe493f081f but expected f2e15690121bf48eba8288426bf72c0661ea444a
- ! f2e1569..7bf9116  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s5537051-m1398381582--Learning Corel Painter X3%06_the-toolbox-part-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072  76%    4.00MB/s    0:00:00
-[2014-05-25 21:01:58 CEST] Pusher: Syncing with diskstation 
-     5537051 100%    4.47MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 5537882 bytes  received 42 bytes  3691949.33 bytes/sec
-total size is 5537051  speedup is 1.00
-[2014-05-25 21:02:00 CEST] Transferrer: Uploaded 06_the-to..art-2.mp4
-
-WORM-s16270822-m1398381489--Learning Corel Painter X3%07_color-panels.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4882432  30%    4.62MB/s    0:00:02
-remote: merge git-annex      7634944  46%    3.29MB/s    0:00:02
-[2014-05-25 21:02:03 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7bf9116..a826827  git-annex -> synced/git-annex
-     9994240  61%    2.94MB/s    0:00:02
-    13369344  82%    3.01MB/s    0:00:00
-    15761408  96%    2.44MB/s    0:00:00
-    16270822 100%    2.91MB/s    0:00:05 (xfer#1, to-check=0/1)
-
-sent 16272960 bytes  received 42 bytes  2503538.77 bytes/sec
-total size is 16270822  speedup is 1.00
-[2014-05-25 21:02:06 CEST] Transferrer: Uploaded 07_color-panels.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f3817af..bff569c  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at a8268279606cf4fdee4e0fabeef0c9075d840f71 but expected 7bf9116bbeb90b398ac29d7b38e78dbe493f081f
- ! 7bf9116..a826827  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s21555439-m1398381255--Learning Corel Painter X3%08_paper-and-media-libraries.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5111808  23%    4.81MB/s    0:00:03
-[2014-05-25 21:02:08 CEST] Pusher: Syncing with diskstation 
-     9175040  42%    4.29MB/s    0:00:02
-    13369344  62%    4.18MB/s    0:00:01
-    17563648  81%    4.10MB/s    0:00:00
-    21555439 100%    4.05MB/s    0:00:05 (xfer#1, to-check=0/1)
-
-sent 21558234 bytes  received 42 bytes  3316657.85 bytes/sec
-total size is 21555439  speedup is 1.00
-[2014-05-25 21:02:12 CEST] Transferrer: Uploaded 08_paper-..aries.mp4
-remote: merge git-annex 
-WORM-s24881920-m1398382026--Learning Corel Painter X3%09_menu-commands-part-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5210112  20%    4.80MB/s    0:00:03
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 21:02:14 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a826827..e65041f  git-annex -> synced/git-annex
-     9142272  36%    4.28MB/s    0:00:03
-    13041664  52%    4.08MB/s    0:00:02
-    17235968  69%    4.03MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   bff569c..b552f10  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at e65041fc45b14af68426581456deb8d3e9efa1d9 but expected a8268279606cf4fdee4e0fabeef0c9075d840f71
- ! a826827..e65041f  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    21397504  85%    3.81MB/s    0:00:00
-    24881920 100%    4.05MB/s    0:00:05 (xfer#1, to-check=0/1)
-[2014-05-25 21:02:19 CEST] Pusher: Syncing with diskstation 
-
-sent 24885118 bytes  received 42 bytes  3318021.33 bytes/sec
-total size is 24881920  speedup is 1.00
-[2014-05-25 21:02:20 CEST] Transferrer: Uploaded 09_menu-c..art-1.mp4
-
-WORM-s29078392-m1398382059--Learning Corel Painter X3%10_menu-commands-part-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5210112  17%    4.81MB/s    0:00:04
-     9437184  32%    4.41MB/s    0:00:04
-[2014-05-25 21:02:24 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e65041f..530d23c  git-annex -> synced/git-annex
-    13762560  47%    4.30MB/s    0:00:03
-    17924096  61%    4.20MB/s    0:00:02
-    22970368  78%    4.16MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b552f10..4dc60d5  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 530d23cf75a7f936041cdb408fd4f3516fe1514b but expected e65041fc45b14af68426581456deb8d3e9efa1d9
- ! e65041f..530d23c  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    27688960  95%    4.26MB/s    0:00:00
-    29078392 100%    4.33MB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 29082102 bytes  received 42 bytes  3421428.71 bytes/sec
-total size is 29078392  speedup is 1.00
-[2014-05-25 21:02:29 CEST] Transferrer: Uploaded 10_menu-c..art-2.mp4
-
-WORM-s18704564-m1398381759--Learning Corel Painter X3%11_cloner-brushes.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:02:29 CEST] Pusher: Syncing with diskstation 
-     5996544  32%    5.68MB/s    0:00:02
-    10321920  55%    4.86MB/s    0:00:01
-    14581760  77%    4.55MB/s    0:00:00
-    18704564 100%    4.39MB/s    0:00:00
-    18704564 100%    4.39MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 18707000 bytes  received 42 bytes  4157120.44 bytes/sec
-total size is 18704564  speedup is 1.00
-[2014-05-25 21:02:33 CEST] Transferrer: Uploaded 11_cloner..ushes.mp4
-
-WORM-s16483665-m1398381099--Learning Corel Painter X3%12_project-clone-painting-a-pear.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      3964928  24%    3.69MB/s    0:00:03
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 21:02:36 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   530d23c..821b643  git-annex -> synced/git-annex
-     8683520  52%    3.90MB/s    0:00:01
-    12877824  78%    3.90MB/s    0:00:00
-    16483665 100%    4.01MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 16485848 bytes  received 42 bytes  2997434.55 bytes/sec
-total size is 16483665  speedup is 1.00
-[2014-05-25 21:02:38 CEST] Transferrer: Uploaded 12_projec..-pear.mp4
-
-WORM-s13729745-m1398381011--Learning Corel Painter X3%13_dab-stroke-and-method.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   4dc60d5..b35b714  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 821b643cf14025648cceac17c2de27e1a17840e3 but expected 530d23cf75a7f936041cdb408fd4f3516fe1514b
- ! 530d23c..821b643  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     5013504  36%    4.35MB/s    0:00:01
-[2014-05-25 21:02:41 CEST] Pusher: Syncing with diskstation 
-     9469952  68%    4.23MB/s    0:00:00
-    13402112  97%    4.06MB/s    0:00:00
-    13729745 100%    3.98MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 13731580 bytes  received 42 bytes  3923320.57 bytes/sec
-total size is 13729745  speedup is 1.00
-[2014-05-25 21:02:43 CEST] Transferrer: Uploaded 13_dab-st..ethod.mp4
-
-WORM-s15796088-m1398381069--Learning Corel Painter X3%14_advanced-controls.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5013504  31%    4.63MB/s    0:00:02
-     9207808  58%    4.25MB/s    0:00:01
-    13664256  86%    4.21MB/s    0:00:00
-    15796088 100%    4.21MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 15798175 bytes  received 42 bytes  3510714.89 bytes/sec
-total size is 15796088  speedup is 1.00
-[2014-05-25 21:02:47 CEST] Transferrer: Uploaded 14_advanc..trols.mp4
-
-WORM-s14529732-m1398382119--Learning Corel Painter X3%15_custom-variants.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5996544  41%    5.49MB/s    0:00:01
-remote: merge git-annex     10551296  72%    4.90MB/s    0:00:00
-    14529732 100%    4.82MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 14531661 bytes  received 42 bytes  2235646.62 bytes/sec
-total size is 14529732  speedup is 1.00
-[2014-05-25 21:02:54 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:02:54 CEST] Transferrer: Uploaded 15_custom..iants.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   821b643..d1a88a1  git-annex -> synced/git-annex
-
-WORM-s20256713-m1398381124--Learning Corel Painter X3%16_abstract-painting.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5242880  25%    4.82MB/s    0:00:03
-     9437184  46%    4.38MB/s    0:00:02
-    13729792  67%    4.28MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b35b714..5d9e777  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at d1a88a1d1fb37d139753d3b96cbd570810a61a51 but expected 821b643cf14025648cceac17c2de27e1a17840e3
- ! 821b643..d1a88a1  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    17924096  88%    4.19MB/s    0:00:00
-    20256713 100%    4.15MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 20259344 bytes  received 42 bytes  3116828.62 bytes/sec
-total size is 20256713  speedup is 1.00
-[2014-05-25 21:03:00 CEST] Transferrer: Uploaded 16_abstra..nting.mp4
-
-WORM-s15821561-m1398381954--Learning Corel Painter X3%17_tonal-controls.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:03:01 CEST] Pusher: Syncing with diskstation 
-     3964928  25%    3.50MB/s    0:00:03
-     6848512  43%    3.13MB/s    0:00:02
-    11829248  74%    3.62MB/s    0:00:01
-    15821561 100%    3.70MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 15823645 bytes  received 42 bytes  2877034.00 bytes/sec
-total size is 15821561  speedup is 1.00
-[2014-05-25 21:03:05 CEST] Transferrer: Uploaded 17_tonal-..trols.mp4
-remote: merge git-annex 
-WORM-s27686314-m1398381815--Learning Corel Painter X3%18_surface-controls.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5210112  18%    4.91MB/s    0:00:04
-[2014-05-25 21:03:08 CEST] RemoteControl: Syncing with diskstation 
-     9142272  33%    4.29MB/s    0:00:04
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   d1a88a1..2f6a023  git-annex -> synced/git-annex
-    12943360  46%    4.06MB/s    0:00:03
-    17104896  61%    4.01MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5d9e777..5732a07  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 2f6a0230e37a27a287290d40a66a61284abd958e but expected d1a88a1d1fb37d139753d3b96cbd570810a61a51
- ! d1a88a1..2f6a023  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    21266432  76%    3.76MB/s    0:00:01
-    25591808  92%    3.85MB/s    0:00:00
-[2014-05-25 21:06:06 CEST] Pusher: Syncing with diskstation 
-    26640384  96%   73.39kB/s    0:00:14
-    27686314 100%  145.74kB/s    0:03:05 (xfer#1, to-check=0/1)
-
-sent 27689848 bytes  received 42 bytes  148471.26 bytes/sec
-total size is 27686314  speedup is 1.00
-[2014-05-25 21:06:11 CEST] Transferrer: Uploaded 18_surfac..trols.mp4
-remote: merge git-annex 
-WORM-s20041059-m1398382199--Learning Corel Painter X3%19_esoterica.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:06:13 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-     5013504  25%    4.74MB/s    0:00:03
-   2f6a023..3de6568  git-annex -> synced/git-annex
-     8421376  42%    3.99MB/s    0:00:02
-    12681216  63%    4.01MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5732a07..22c09fa  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 3de6568fc3634c50a42c935f315c763106a22e3c but expected 2f6a0230e37a27a287290d40a66a61284abd958e
- ! 2f6a023..3de6568  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    17596416  87%    4.18MB/s    0:00:00
-    20041059 100%    4.24MB/s    0:00:04 (xfer#1, to-check=0/1)
-[2014-05-25 21:06:17 CEST] Pusher: Syncing with diskstation 
-
-sent 20043654 bytes  received 42 bytes  3083645.54 bytes/sec
-total size is 20041059  speedup is 1.00
-[2014-05-25 21:06:18 CEST] Transferrer: Uploaded 19_esoterica.mp4
-
-WORM-s20049901-m1398382237--Learning Corel Painter X3%20_esoterica-mosaic.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072  21%    3.93MB/s    0:00:03
-remote: merge git-annex      7372800  36%    3.43MB/s    0:00:03
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 21:06:22 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   3de6568..91bf58d  git-annex -> synced/git-annex
-    11042816  55%    3.45MB/s    0:00:02
-    14712832  73%    3.45MB/s    0:00:01
-    17858560  89%    3.20MB/s    0:00:00
-    20049901 100%    3.44MB/s    0:00:05 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   22c09fa..f2cac44  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 91bf58d7240d46f8eee363bd3b56dde6deefc012 but expected 3de6568fc3634c50a42c935f315c763106a22e3c
- ! 3de6568..91bf58d  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 20052503 bytes  received 42 bytes  2673672.67 bytes/sec
-total size is 20049901  speedup is 1.00
-[2014-05-25 21:06:25 CEST] Transferrer: Uploaded 20_esoter..osaic.mp4
-
-WORM-s18181651-m1398381889--Learning Corel Painter X3%21_selection-tools-and-commands.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:06:26 CEST] Pusher: Syncing with diskstation 
-     4751360  26%    4.38MB/s    0:00:02
-     8421376  46%    3.89MB/s    0:00:02
-    12091392  66%    3.71MB/s    0:00:01
-    15761408  86%    3.64MB/s    0:00:00
-    18181651 100%    3.65MB/s    0:00:04 (xfer#1, to-check=0/1)
-remote: merge git-annex 
-sent 18184037 bytes  received 42 bytes  2797550.62 bytes/sec
-total size is 18181651  speedup is 1.00
-[2014-05-25 21:06:31 CEST] Transferrer: Uploaded 21_select..mands.mp4
-
-WORM-s16431574-m1398381365--Learning Corel Painter X3%22_text-properties.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5013504  30%    4.71MB/s    0:00:02
-[2014-05-25 21:06:32 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   91bf58d..9341c6c  git-annex -> synced/git-annex
-     8355840  50%    3.82MB/s    0:00:02
-    11763712  71%    3.60MB/s    0:00:01
-    15466496  94%    3.57MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f2cac44..70eb4e9  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 9341c6cf9e5fe11181099779b7248a9debecaa26 but expected 91bf58d7240d46f8eee363bd3b56dde6deefc012
- ! 91bf58d..9341c6c  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    16431574 100%    3.62MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 16433735 bytes  received 42 bytes  2987959.45 bytes/sec
-total size is 16431574  speedup is 1.00
-[2014-05-25 21:06:36 CEST] Transferrer: Uploaded 22_text-p..rties.mp4
-
-WORM-s17364419-m1398381850--Learning Corel Painter X3%23_text-effects.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:06:37 CEST] Pusher: Syncing with diskstation 
-     5046272  29%    4.76MB/s    0:00:02
-     8421376  48%    3.97MB/s    0:00:02
-    12255232  70%    3.87MB/s    0:00:01
-    16023552  92%    3.79MB/s    0:00:00
-remote: merge git-annex     17364419 100%    3.71MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 17366689 bytes  received 42 bytes  3157587.45 bytes/sec
-total size is 17364419  speedup is 1.00
-[2014-05-25 21:06:42 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:06:42 CEST] Transferrer: Uploaded 23_text-effects.mp4
-
-WORM-s19708183-m1398382290--Learning Corel Painter X3%24_postcard-graphic-part-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9341c6c..08cb8d8  git-annex -> synced/git-annex
-     4489216  22%    3.60MB/s    0:00:04
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   70eb4e9..dce2d61  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 08cb8d8ba4b56c67984027263d5213133dcdaad2 but expected 9341c6cf9e5fe11181099779b7248a9debecaa26
- ! 9341c6c..08cb8d8  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:06:44 CEST] RemoteControl: Syncing with diskstation 
-     9469952  48%    4.08MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   dce2d61..ac9201d  git-annex  -> diskstation/git-annex
-    13664256  69%    3.97MB/s    0:00:01
-    17301504  87%    3.86MB/s    0:00:00
-[2014-05-25 21:06:47 CEST] Pusher: Syncing with diskstation 
-    19708183 100%    3.96MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 19710752 bytes  received 42 bytes  3032429.85 bytes/sec
-total size is 19708183  speedup is 1.00
-[2014-05-25 21:06:48 CEST] Transferrer: Uploaded 24_postca..art-1.mp4
-
-WORM-s21565207-m1398381554--Learning Corel Painter X3%25_postcard-graphic-part-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5439488  25%    5.07MB/s    0:00:03
-remote: merge git-annex      9306112  43%    4.32MB/s    0:00:02
-[2014-05-25 21:06:51 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   08cb8d8..1212159  git-annex -> synced/git-annex
-    13107200  60%    4.05MB/s    0:00:02
-    16449536  76%    3.84MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ac9201d..a885109  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 12121595714360b6216de28d0beef79305ec276d but expected 08cb8d8ba4b56c67984027263d5213133dcdaad2
- ! 08cb8d8..1212159  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    20250624  93%    3.46MB/s    0:00:00
-    21565207 100%    3.75MB/s    0:00:05 (xfer#1, to-check=0/1)
-
-sent 21568004 bytes  received 42 bytes  2875739.47 bytes/sec
-total size is 21565207  speedup is 1.00
-[2014-05-25 21:06:55 CEST] Transferrer: Uploaded 25_postca..art-2.mp4
-
-WORM-s20239101-m1398380964--Learning Corel Painter X3%26_dynamic-layers.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:06:56 CEST] Pusher: Syncing with diskstation 
-     5275648  26%    4.78MB/s    0:00:03
-     9404416  46%    4.35MB/s    0:00:02
-    12943360  63%    4.03MB/s    0:00:01
-    16384000  80%    3.85MB/s    0:00:00
-remote: merge git-annex     20152320  99%    3.52MB/s    0:00:00
-    20239101 100%    3.77MB/s    0:00:05 (xfer#1, to-check=0/1)
-[2014-05-25 21:07:01 CEST] RemoteControl: Syncing with diskstation 
-
-sent 20241725 bytes  received 42 bytes  3114118.00 bytes/sec
-total size is 20239101  speedup is 1.00
-[2014-05-25 21:07:02 CEST] Transferrer: Uploaded 26_dynami..ayers.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   1212159..4c20688  git-annex -> synced/git-annex
-
-WORM-s17613999-m1398382264--Learning Corel Painter X3%27_auto-painting.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5275648  29%    4.78MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a885109..ac9fbda  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 4c206880fc1f99dd380b0fb28ebb780b72171633 but expected 12121595714360b6216de28d0beef79305ec276d
- ! 1212159..4c20688  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     9175040  52%    4.26MB/s    0:00:01
-    12845056  72%    4.00MB/s    0:00:01
-    16384000  93%    3.82MB/s    0:00:00
-[2014-05-25 21:07:07 CEST] Pusher: Syncing with diskstation 
-    17613999 100%    3.79MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 17616302 bytes  received 42 bytes  3202971.64 bytes/sec
-total size is 17613999  speedup is 1.00
-[2014-05-25 21:07:08 CEST] Transferrer: Uploaded 27_auto-p..nting.mp4
-
-WORM-s15562581-m1398381274--Learning Corel Painter X3%28_smart-stroke-cloning.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5275648  33%    4.77MB/s    0:00:02
-     9469952  60%    4.34MB/s    0:00:01
-[2014-05-25 21:07:11 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   4c20688..f7be7ec  git-annex -> synced/git-annex
-    13139968  84%    4.06MB/s    0:00:00
-    15562581 100%    3.89MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 15564639 bytes  received 42 bytes  3458818.00 bytes/sec
-total size is 15562581  speedup is 1.00
-[2014-05-25 21:07:13 CEST] Transferrer: Uploaded 28_smart-..oning.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ac9fbda..4f23f91  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at f7be7ececec0dd7a424dfc71571fc2a6cfc63bea but expected 4c206880fc1f99dd380b0fb28ebb780b72171633
- ! 4c20688..f7be7ec  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s28205928-m1398382150--Learning Corel Painter X3%29_mirror-and-kaleidoscope.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5537792  19%    4.94MB/s    0:00:04
-[2014-05-25 21:07:15 CEST] Pusher: Syncing with diskstation 
-     9994240  35%    4.54MB/s    0:00:03
-    14155776  50%    4.34MB/s    0:00:03
-    17956864  63%    4.16MB/s    0:00:02
-    21725184  77%    3.79MB/s    0:00:01
-remote: merge git-annex     25198592  89%    3.58MB/s    0:00:00
-    28205928 100%    3.85MB/s    0:00:06 (xfer#1, to-check=0/1)
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-[2014-05-25 21:07:21 CEST] RemoteControl: Syncing with diskstation 
-
-sent 28209533 bytes  received 42 bytes  3761276.67 bytes/sec
-total size is 28205928  speedup is 1.00
-   f7be7ec..5c452a1  git-annex -> synced/git-annex
-[2014-05-25 21:07:21 CEST] Transferrer: Uploaded 29_mirror..scope.mp4
-
-WORM-s21976288-m1398382005--Learning Corel Painter X3%30_introduction-to-mixed-media.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5406720  24%    5.07MB/s    0:00:03
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   4f23f91..1ca4624  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 5c452a15506c41b30a4ff7099c02f5dae74db8db but expected f7be7ececec0dd7a424dfc71571fc2a6cfc63bea
- ! f7be7ec..5c452a1  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:22:27 CEST] Pusher: Syncing with diskstation 
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5c452a1..de02d45  git-annex -> synced/git-annex
-     8486912  38%    9.03kB/s    0:24:53
-[2014-05-25 21:22:35 CEST] RemoteControl: Syncing with diskstation 
-    12353536  56%   13.15kB/s    0:12:11
-    15761408  71%   16.76kB/s    0:06:10
-    18644992  84%   14.11kB/s    0:03:56
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   1ca4624..0fddca6  git-annex  -> diskstation/git-annex
-    21921792  99%    3.02MB/s    0:00:00
-    21976288 100%   23.34kB/s    0:15:18 (xfer#1, to-check=0/1)
-
-sent 21979137 bytes  received 42 bytes  23903.40 bytes/sec
-total size is 21976288  speedup is 1.00
-[2014-05-25 21:22:40 CEST] Transferrer: Uploaded 30_introd..media.mp4
-[2014-05-25 21:22:40 CEST] Pusher: Syncing with diskstation 
-
-WORM-s20759393-m1398382174--Learning Corel Painter X3%31_portrait-of-stephen.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4194304  20%    3.79MB/s    0:00:04
-     6815744  32%    3.15MB/s    0:00:04
-remote: merge git-annex      9306112  44%    2.89MB/s    0:00:03
-    12320768  59%    2.87MB/s    0:00:02
-[2014-05-25 21:22:45 CEST] RemoteControl: Syncing with diskstation 
-/Applications/git-annex.app/Contents/MacOS/git-annex: fork: Resource temporarily unavailable
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   de02d45..251064b  git-annex -> synced/git-annex
-    15073280  72%    2.55MB/s    0:00:02
-    17563648  84%    2.52MB/s    0:00:01
-    20316160  97%    2.56MB/s    0:00:00
-    20759393 100%    2.71MB/s    0:00:07 (xfer#1, to-check=0/1)
-
-sent 20762086 bytes  received 42 bytes  2185487.16 bytes/sec
-total size is 20759393  speedup is 1.00
-[2014-05-25 21:22:49 CEST] Transferrer: Uploaded 31_portra..ephen.mp4
-
-WORM-s25441460-m1398381650--Learning Corel Painter X3%32_cel-animation.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:22:50 CEST] Pusher: Syncing with diskstation 
-Pusher crashed: git: createProcess: resource exhausted (Resource temporarily unavailable)
-[2014-05-25 21:22:50 CEST] Pusher: warning Pusher crashed: git: createProcess: resource exhausted (Resource temporarily unavailable)
-     4096000  16%    3.83MB/s    0:00:05
-     6979584  27%    3.27MB/s    0:00:05
-     9469952  37%    2.97MB/s    0:00:05
-    12091392  47%    2.78MB/s    0:00:04
-    13664256  53%    2.19MB/s    0:00:05
-    16023552  62%    2.04MB/s    0:00:04
-    18644992  73%    2.07MB/s    0:00:03
-    21266432  83%    2.10MB/s    0:00:01
-    23625728  92%    2.25MB/s    0:00:00
-    25441460 100%    2.36MB/s    0:00:10 (xfer#1, to-check=0/1)
-
-sent 25444719 bytes  received 42 bytes  2212587.91 bytes/sec
-total size is 25441460  speedup is 1.00
-[2014-05-25 21:23:00 CEST] Transferrer: Uploaded 32_cel-an..ation.mp4
-
-WORM-s23123916-m1398381154--Learning Corel Painter X3%33_rotoscope-techniques.mp4
-       32768   0%    0.00kB/s    0:00:00
-     2129920   9%    1.98MB/s    0:00:10
-     5275648  22%    2.45MB/s    0:00:07
-     8945664  38%    2.77MB/s    0:00:04
-    12353536  53%    2.89MB/s    0:00:03
-    15269888  66%    3.06MB/s    0:00:02
-    18022400  77%    2.99MB/s    0:00:01
-    20742144  89%    2.78MB/s    0:00:00
-    23123916 100%    2.74MB/s    0:00:08 (xfer#1, to-check=0/1)
-
-sent 23126898 bytes  received 42 bytes  2434414.74 bytes/sec
-total size is 23123916  speedup is 1.00
-[2014-05-25 21:23:10 CEST] Transferrer: Uploaded 33_rotosc..iques.mp4
-
-WORM-s16168686-m1398381345--Learning Corel Painter X3%34_portrait-of-hines-part-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4194304  25%    3.85MB/s    0:00:03
-     7340032  45%    3.40MB/s    0:00:02
-    10256384  63%    3.19MB/s    0:00:01
-    13500416  83%    3.16MB/s    0:00:00
-    16168686 100%    3.09MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 16170824 bytes  received 42 bytes  2940157.45 bytes/sec
-total size is 16168686  speedup is 1.00
-[2014-05-25 21:23:16 CEST] Transferrer: Uploaded 34_portra..art-1.mp4
-
-WORM-s16185635-m1398381044--Learning Corel Painter X3%35_portrait-of-hines-part-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4390912  27%    4.09MB/s    0:00:02
-     7372800  45%    3.37MB/s    0:00:02
-    10518528  64%    3.23MB/s    0:00:01
-    13139968  81%    3.02MB/s    0:00:00
-    16185635 100%    3.13MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 16187773 bytes  received 42 bytes  2490433.08 bytes/sec
-total size is 16185635  speedup is 1.00
-[2014-05-25 21:23:22 CEST] Transferrer: Uploaded 35_portra..art-2.mp4
-
-WORM-s30681625-m1398381209--Learning Corel Painter X3%36_portrait-of-hines-part-3.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4489216  14%    4.25MB/s    0:00:06
-     7798784  25%    3.65MB/s    0:00:06
-    11206656  36%    3.49MB/s    0:00:05
-    14483456  47%    3.40MB/s    0:00:04
-    17858560  58%    3.14MB/s    0:00:03
-    21299200  69%    3.17MB/s    0:00:02
-    24576000  80%    3.12MB/s    0:00:01
-    27951104  91%    3.15MB/s    0:00:00
-    30681625 100%    3.26MB/s    0:00:08 (xfer#1, to-check=0/1)
-
-sent 30685535 bytes  received 42 bytes  3230060.74 bytes/sec
-total size is 30681625  speedup is 1.00
-[2014-05-25 21:23:32 CEST] Transferrer: Uploaded 36_portra..art-3.mp4
-
-WORM-s22528765-m1398382099--Learning Corel Painter X3%37_digital-watercolor.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4390912  19%    4.08MB/s    0:00:04
-     7536640  33%    3.55MB/s    0:00:04
-    10813440  47%    3.39MB/s    0:00:03
-    14090240  62%    3.30MB/s    0:00:02
-    17334272  76%    3.02MB/s    0:00:01
-    21495808  95%    3.25MB/s    0:00:00
-    22528765 100%    3.39MB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 22531673 bytes  received 42 bytes  3004228.67 bytes/sec
-total size is 22528765  speedup is 1.00
-[2014-05-25 21:23:39 CEST] Transferrer: Uploaded 37_digita..color.mp4
-
-WORM-s26374030-m1398381726--Learning Corel Painter X3%38_real-watercolor-part-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5210112  19%    4.87MB/s    0:00:04
-     8945664  33%    4.18MB/s    0:00:04
-    13074432  49%    4.08MB/s    0:00:03
-    16547840  62%    3.89MB/s    0:00:02
-    20676608  78%    3.65MB/s    0:00:01
-    24412160  92%    3.63MB/s    0:00:00
-    26374030 100%    3.82MB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 26377410 bytes  received 42 bytes  3103229.65 bytes/sec
-total size is 26374030  speedup is 1.00
-[2014-05-25 21:23:47 CEST] Transferrer: Uploaded 38_real-w..art-1.mp4
-
-WORM-s19723496-m1398381429--Learning Corel Painter X3%39_real-watercolor-part-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4751360  24%    4.50MB/s    0:00:03
-     8683520  44%    4.11MB/s    0:00:02
-    12517376  63%    3.96MB/s    0:00:01
-    16384000  83%    3.88MB/s    0:00:00
-    19723496 100%    3.86MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 19726064 bytes  received 42 bytes  3586564.73 bytes/sec
-total size is 19723496  speedup is 1.00
-[2014-05-25 21:23:53 CEST] Transferrer: Uploaded 39_real-w..art-2.mp4
-
-WORM-s19493451-m1398381312--Learning Corel Painter X3%40_caricature-part-1.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4980736  25%    4.62MB/s    0:00:03
-     8683520  44%    4.04MB/s    0:00:02
-    12615680  64%    3.91MB/s    0:00:01
-    16547840  84%    3.84MB/s    0:00:00
-    19493451 100%    3.84MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 19495986 bytes  received 42 bytes  2999388.92 bytes/sec
-total size is 19493451  speedup is 1.00
-[2014-05-25 21:23:59 CEST] Transferrer: Uploaded 40_carica..art-1.mp4
-rsync: fork: Resource temporarily unavailable (35)
-rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(65) [sender=2.6.9]
-rsync: fork: Resource temporarily unavailable (35)
-rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(65) [sender=2.6.9]
-[2014-05-25 21:36:13 CEST] NetWatcherFallback: Syncing with diskstation 
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   0fddca6..08995a9  git-annex  -> diskstation/git-annex
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-[2014-05-25 21:36:38 CEST] RemoteControl: Syncing with diskstation 
-   251064b..9043046  git-annex -> synced/git-annex
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   08995a9..d2359ee  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 90430461e599b7aad5bc8f4891f1e0eac38766b0 but expected 251064bd591813a5e813bd9cefafb8b4e6788f77
- ! 251064b..9043046  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-
-  rsync failed -- run git annex again to resume file transfer
-
-
-  rsync failed -- run git annex again to resume file transfer
-
-
-  rsync failed -- run git annex again to resume file transfer
-
-WORM-s14012455-m1398381979--Learning Corel Painter X3%41_caricature-part-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072  30%    3.81MB/s    0:00:02
-     8159232  58%    3.69MB/s    0:00:01
-     9994240  71%    3.04MB/s    0:00:01
-    11829248  84%    2.67MB/s    0:00:00
-    13664256  97%    2.15MB/s    0:00:00
-    14012455 100%    2.50MB/s    0:00:05 (xfer#1, to-check=0/1)
-
-sent 14014322 bytes  received 42 bytes  1868581.87 bytes/sec
-total size is 14012455  speedup is 1.00
-[2014-05-25 21:37:01 CEST] Transferrer: Uploaded 41_carica..art-2.mp4
-
-WORM-s2813795-m1398381163--Learning Corel Painter X3%42_about-the-author.mp4
-       32768   1%    0.00kB/s    0:00:00
-     2813795 100%    6.18MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 2814292 bytes  received 42 bytes  1125733.60 bytes/sec
-total size is 2813795  speedup is 1.00
-[2014-05-25 21:37:03 CEST] Transferrer: Uploaded 42_about-..uthor.mp4
-
-WORM-s15151010-m1398381679--Learning Corel Painter X3%43_painter-resources-and-the-painter-community.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5111808  33%    4.69MB/s    0:00:02
-     9109504  60%    4.20MB/s    0:00:01
-    12779520  84%    3.97MB/s    0:00:00
-    15151010 100%    3.95MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 15153043 bytes  received 42 bytes  3367352.22 bytes/sec
-total size is 15151010  speedup is 1.00
-[2014-05-25 21:37:07 CEST] Transferrer: Uploaded 43_painte..unity.mp4
-Watcher crashed: ResumeWatcher
-[2014-05-25 21:39:08 CEST] Watcher: warning Watcher crashed: ResumeWatcher
-
-
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(scanning...) [2014-05-25 21:39:16 CEST] Watcher: Performing startup scan
-[2014-05-25 21:39:20 CEST] Pusher: Syncing with diskstation 
-remote: merge git-annex (merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9043046..57f7b8b  git-annex -> synced/git-annex
-[2014-05-25 21:39:28 CEST] RemoteControl: Syncing with diskstation 
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   d2359ee..e459e2f  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 57f7b8bb8d2dd5418eda74deef4a0338b00390d9 but expected 90430461e599b7aad5bc8f4891f1e0eac38766b0
- ! 9043046..57f7b8b  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(started...) [2014-05-25 21:39:46 CEST] Committer: Committing changes to git
-[2014-05-25 21:39:46 CEST] Pusher: Syncing with diskstation 
-Already up-to-date.
-remote: merge git-annex ok        
-remote: merge synced/master Updating 53c007f..6f2044d        
-remote: Fast-forward        
-remote:  .../01_introduction.mp4                                                  | 1 +        
-remote:  .../02_setting-up.mp4                                                    | 1 +        
-remote:  .../03_selecting-and-creating-elements.mp4                               | 1 +        
-remote:  .../04_exercise-1.mp4                                                    | 1 +        
-remote:  An Introduction to d3.js - From Scattered to Scatterplot/05_svg.mp4      | 1 +        
-remote:  .../06_exercise-2.mp4                                                    | 1 +        
-remote:  .../07_binding-data-and-creating-elements-from-data.mp4                  | 1 +        
-remote:  .../08_exercise-3.mp4                                                    | 1 +        
-remote:  .../09_transitions.mp4                                                   | 1 +        
-remote:  An Introduction to d3.js - From Scattered to Scatterplot/10_scales-2.mp4 | 1 +        
-remote:  An Introduction to d3.js - From Scattered to Scatterplot/10_scales.mp4   | 1 +        
-remote:  An Introduction to d3.js - From Scattered to Scatterplot/11_axes.mp4     | 1 +        
-remote:  .../12_advanced-techniques.mp4                                           | 1 +        
-remote:  .../13_conclusion.mp4                                                    | 1 +        
-remote:  C++ Memory Management/01_introduction.mp4                                | 1 +        
-remote:  C++ Memory Management/02_leaks-and-overruns.mp4                          | 1 +        
-remote:  .../03_stl-vector-methods-range-checking-and-sentinels.mp4               | 1 +        
-remote:  C++ Memory Management/04_memory-leaks-part-1.mp4                         | 1 +        
-remote:  C++ Memory Management/05_memory-leaks-part-2.mp4                         | 1 +        
-remote:  C++ Memory Management/06_pointers-pitfalls-and-best-practices.mp4        | 1 +        
-remote:  C++ Memory Management/07_initialize-everything-trust-but-verify.mp4      | 1 +        
-remote:  C++ Memory Management/08_reading-and-writing-shared-assets.mp4           | 1 +        
-remote:  C++ Memory Management/09_undefined-behaviour-and-other-bad-practices.mp4 | 1 +        
-remote:  C++ Memory Management/10_the-heap-and-stl-wrappers.mp4                   | 1 +        
-remote:  C++ Memory Management/11_about-the-author.mp4                            | 1 +        
-remote:  Lean UX Workshop/01_introduction.mp4                                     | 1 +        
-remote:  Lean UX Workshop/02_nordstrom-case-study.mp4                             | 1 +        
-remote:  Lean UX Workshop/03_assumptions-and-hypotheses.mp4                       | 1 +        
-remote:  Lean UX Workshop/04_personas.mp4                                         | 1 +        
-remote:  Lean UX Workshop/05_outcomes-and-features.mp4                            | 1 +        
-remote:  Lean UX Workshop/06_writing-hypotheses.mp4                               | 1 +        
-remote:  Lean UX Workshop/07_design-studio.mp4                                    | 1 +        
-remote:  Lean UX Workshop/08_experiments-and-mvp-s.mp4                            | 1 +        
-remote:  Lean UX Workshop/09_research.mp4                                         | 1 +        
-remote:  Lean UX Workshop/10_combining-lean-and-agile.mp4                         | 1 +        
-remote:  Lean UX Workshop/11_tools-and-techniques.mp4                             | 1 +        
-remote:  Learning Corel Painter X3/01_a-quick-tour-of-painter.mp4                 | 1 +        
-remote:  Learning Corel Painter X3/02_brushes-and-custom-palettes.mp4             | 1 +        
-remote:  Learning Corel Painter X3/03_managing-layers.mp4                         | 1 +        
-remote:  Learning Corel Painter X3/04_project-red-chairs.mp4                      | 1 +        
-remote:  Learning Corel Painter X3/05_the-toolbox-part-1.mp4                      | 1 +        
-remote:  Learning Corel Painter X3/06_the-toolbox-part-2.mp4                      | 1 +        
-remote:  Learning Corel Painter X3/07_color-panels.mp4                            | 1 +        
-remote:  Learning Corel Painter X3/08_paper-and-media-libraries.mp4               | 1 +        
-remote:  Learning Corel Painter X3/09_menu-commands-part-1.mp4                    | 1 +        
-remote:  Learning Corel Painter X3/10_menu-commands-part-2.mp4                    | 1 +        
-remote:  Learning Corel Painter X3/11_cloner-brushes.mp4                          | 1 +        
-remote:  Learning Corel Painter X3/12_project-clone-painting-a-pear.mp4           | 1 +        
-remote:  Learning Corel Painter X3/13_dab-stroke-and-method.mp4                   | 1 +        
-remote:  Learning Corel Painter X3/14_advanced-controls.mp4                       | 1 +        
-remote:  Learning Corel Painter X3/15_custom-variants.mp4                         | 1 +        
-remote:  Learning Corel Painter X3/16_abstract-painting.mp4                       | 1 +        
-remote:  Learning Corel Painter X3/17_tonal-controls.mp4                          | 1 +        
-remote:  Learning Corel Painter X3/18_surface-controls.mp4                        | 1 +        
-remote:  Learning Corel Painter X3/19_esoterica.mp4                               | 1 +        
-remote:  Learning Corel Painter X3/20_esoterica-mosaic.mp4                        | 1 +        
-remote:  Learning Corel Painter X3/21_selection-tools-and-commands.mp4            | 1 +        
-remote:  Learning Corel Painter X3/22_text-properties.mp4                         | 1 +        
-remote:  Learning Corel Painter X3/23_text-effects.mp4                            | 1 +        
-remote:  Learning Corel Painter X3/24_postcard-graphic-part-1.mp4                 | 1 +        
-remote:  Learning Corel Painter X3/25_postcard-graphic-part-2.mp4                 | 1 +        
-remote:  Learning Corel Painter X3/26_dynamic-layers.mp4                          | 1 +        
-remote:  Learning Corel Painter X3/27_auto-painting.mp4                           | 1 +        
-remote:  Learning Corel Painter X3/28_smart-stroke-cloning.mp4                    | 1 +        
-remote:  Learning Corel Painter X3/29_mirror-and-kaleidoscope.mp4                 | 1 +        
-remote:  Learning Corel Painter X3/30_introduction-to-mixed-media.mp4             | 1 +        
-remote:  Learning Corel Painter X3/31_portrait-of-stephen.mp4                     | 1 +        
-remote:  Learning Corel Painter X3/32_cel-animation.mp4                           | 1 +        
-remote:  Learning Corel Painter X3/33_rotoscope-techniques.mp4                    | 1 +        
-remote:  Learning Corel Painter X3/34_portrait-of-hines-part-1.mp4                | 1 +        
-remote:  Learning Corel Painter X3/35_portrait-of-hines-part-2.mp4                | 1 +        
-remote:  Learning Corel Painter X3/36_portrait-of-hines-part-3.mp4                | 1 +        
-remote:  Learning Corel Painter X3/37_digital-watercolor.mp4                      | 1 +        
-remote:  Learning Corel Painter X3/38_real-watercolor-part-1.mp4                  | 1 +        
-remote:  Learning Corel Painter X3/39_real-watercolor-part-2.mp4                  | 1 +        
-remote:  Learning Corel Painter X3/40_caricature-part-1.mp4                       | 1 +        
-remote:  Learning Corel Painter X3/41_caricature-part-2.mp4                       | 1 +        
-remote:  Learning Corel Painter X3/42_about-the-author.mp4                        | 1 +        
-remote:  .../43_painter-resources-and-the-painter-community.mp4                   | 1 +        
-remote:  79 files changed, 79 insertions(+)        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/01_introduction.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/02_setting-up.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/03_selecting-and-creating-elements.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/04_exercise-1.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/05_svg.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/06_exercise-2.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/07_binding-data-and-creating-elements-from-data.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/08_exercise-3.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/09_transitions.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/10_scales-2.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/10_scales.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/11_axes.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/12_advanced-techniques.mp4        
-remote:  create mode 120000 An Introduction to d3.js - From Scattered to Scatterplot/13_conclusion.mp4        
-remote:  create mode 120000 C++ Memory Management/01_introduction.mp4        
-remote:  create mode 120000 C++ Memory Management/02_leaks-and-overruns.mp4        
-remote:  create mode 120000 C++ Memory Management/03_stl-vector-methods-range-checking-and-sentinels.mp4        
-remote:  create mode 120000 C++ Memory Management/04_memory-leaks-part-1.mp4        
-remote:  create mode 120000 C++ Memory Management/05_memory-leaks-part-2.mp4        
-remote:  create mode 120000 C++ Memory Management/06_pointers-pitfalls-and-best-practices.mp4        
-remote:  create mode 120000 C++ Memory Management/07_initialize-everything-trust-but-verify.mp4        
-remote:  create mode 120000 C++ Memory Management/08_reading-and-writing-shared-assets.mp4        
-remote:  create mode 120000 C++ Memory Management/09_undefined-behaviour-and-other-bad-practices.mp4        
-remote:  create mode 120000 C++ Memory Management/10_the-heap-and-stl-wrappers.mp4        
-remote:  create mode 120000 C++ Memory Management/11_about-the-author.mp4        
-remote:  create mode 120000 Lean UX Workshop/01_introduction.mp4        
-remote:  create mode 120000 Lean UX Workshop/02_nordstrom-case-study.mp4        
-remote:  create mode 120000 Lean UX Workshop/03_assumptions-and-hypotheses.mp4        
-remote:  create mode 120000 Lean UX Workshop/04_personas.mp4        
-remote:  create mode 120000 Lean UX Workshop/05_outcomes-and-features.mp4        
-remote:  create mode 120000 Lean UX Workshop/06_writing-hypotheses.mp4        
-remote:  create mode 120000 Lean UX Workshop/07_design-studio.mp4        
-remote:  create mode 120000 Lean UX Workshop/08_experiments-and-mvp-s.mp4        
-remote:  create mode 120000 Lean UX Workshop/09_research.mp4        
-remote:  create mode 120000 Lean UX Workshop/10_combining-lean-and-agile.mp4        
-remote:  create mode 120000 Lean UX Workshop/11_tools-and-techniques.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/01_a-quick-tour-of-painter.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/02_brushes-and-custom-palettes.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/03_managing-layers.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/04_project-red-chairs.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/05_the-toolbox-part-1.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/06_the-toolbox-part-2.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/07_color-panels.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/08_paper-and-media-libraries.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/09_menu-commands-part-1.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/10_menu-commands-part-2.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/11_cloner-brushes.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/12_project-clone-painting-a-pear.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/13_dab-stroke-and-method.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/14_advanced-controls.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/15_custom-variants.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/16_abstract-painting.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/17_tonal-controls.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/18_surface-controls.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/19_esoterica.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/20_esoterica-mosaic.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/21_selection-tools-and-commands.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/22_text-properties.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/23_text-effects.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/24_postcard-graphic-part-1.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/25_postcard-graphic-part-2.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/26_dynamic-layers.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/27_auto-painting.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/28_smart-stroke-cloning.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/29_mirror-and-kaleidoscope.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/30_introduction-to-mixed-media.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/31_portrait-of-stephen.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/32_cel-animation.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/33_rotoscope-techniques.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/34_portrait-of-hines-part-1.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/35_portrait-of-hines-part-2.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/36_portrait-of-hines-part-3.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/37_digital-watercolor.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/38_real-watercolor-part-1.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/39_real-watercolor-part-2.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/40_caricature-part-1.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/41_caricature-part-2.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/42_about-the-author.mp4        
-remote:  create mode 120000 Learning Corel Painter X3/43_painter-resources-and-the-painter-community.mp4        
-remote: 
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   57f7b8b..e459e2f  git-annex -> synced/git-annex
-   53c007f..6f2044d  master -> synced/master
-Already up-to-date.
-[2014-05-25 21:41:22 CEST] Committer: Adding 01_introduction.mp4 02_settin..plate.mp4 03_settin..lbars.mp4 04_how-to..files.mp4 05_line-tool.mp4 06_rectan..-tool.mp4 07_circle-tool.mp4 08_polygon-tool.mp4 09_arc-tool.mp4 and 34 other files
-
-(Recording state in git...)
-
-
-add Learning SketchUp 2013/01_introduction.mp4 ok
-add Learning SketchUp 2013/02_setting-up-the-template.mp4 ok
-add Learning SketchUp 2013/03_setting-up-the-toolbars.mp4 ok
-add Learning SketchUp 2013/04_how-to-access-your-working-files.mp4 ok
-add Learning SketchUp 2013/05_line-tool.mp4 ok
-add Learning SketchUp 2013/06_rectangle-tool.mp4 ok
-add Learning SketchUp 2013/07_circle-tool.mp4 ok
-add Learning SketchUp 2013/08_polygon-tool.mp4 ok
-add Learning SketchUp 2013/09_arc-tool.mp4 ok
-add Learning SketchUp 2013/100_adding-lighting.mp4 ok
-add Learning SketchUp 2013/101_add-reflections-to-existing-textures.mp4 ok
-add Learning SketchUp 2013/102_model-presets-create-a-preview-rendering.mp4 ok
-add Learning SketchUp 2013/103_rendering-a-high-quality-image.mp4 ok
-add Learning SketchUp 2013/104_post-processing-in-photoshop.mp4 ok
-add Learning SketchUp 2013/105_what-is-layout.mp4 ok
-add Learning SketchUp 2013/106_adjusting-the-model-settings.mp4 ok
-add Learning SketchUp 2013/108_adding-additional-pages-and-content.mp4 ok
-add Learning SketchUp 2013/109_updating-the-model-references.mp4 ok
-add Learning SketchUp 2013/10_freehand-tool.mp4 ok
-add Learning SketchUp 2013/111_about-dan-brown.mp4 ok
-add Learning SketchUp 2013/11_navigating-in-3d.mp4 ok
-add Learning SketchUp 2013/12_push-pull-and-move-tool.mp4 ok
-add Learning SketchUp 2013/13_using-follow-me-complex-roof-pitches.mp4 ok
-add Learning SketchUp 2013/14_creating-a-mansard-roof.mp4 ok
-add Learning SketchUp 2013/15_creating-a-gambrel-roof.mp4 ok
-add Learning SketchUp 2013/16_measurements.mp4 ok
-add Learning SketchUp 2013/18_extruding-your-walls-push-pull-and-offset.mp4 ok
-add Learning SketchUp 2013/19_creating-doors-and-openings.mp4 ok
-add Learning SketchUp 2013/20_clean-up-using-the-eraser-to-remove-unwanted-edges.mp4 ok
-add Learning SketchUp 2013/21_why-groups.mp4 ok
-add Learning SketchUp 2013/22_creating-the-second-floor.mp4 ok
-add Learning SketchUp 2013/23_creating-additional-openings.mp4 ok
-add Learning SketchUp 2013/24_hide-model-and-other-useful-shortcuts.mp4 ok
-add Learning SketchUp 2013/25_using-the-outliner.mp4 ok
-add Learning SketchUp 2013/26_using-layers-to-control-visibility.mp4 ok
-add Learning SketchUp 2013/27_viewing-layer-states-of-the-model.mp4 ok
-add Learning SketchUp 2013/28_field-of-view.mp4 ok
-add Learning SketchUp 2013/29_dividing-faces-to-create-your-rooms.mp4 ok
-add Learning SketchUp 2013/30_area-tool-for-calculations.mp4 ok
-add Learning SketchUp 2013/31_using-paint-bucket-for-floor-texture-2.mp4 ok
-add Learning SketchUp 2013/31_using-paint-bucket-for-floor-texture.mp4 ok
-add Learning SketchUp 2013/32_importing-and-applying-a-texture.mp4 ok
-add Learning SketchUp 2013/33_positioning-an-imported-texture.mp4 [2014-05-25 21:41:29 CEST] Committer: Adding 34_editin..tchup.mp4 35_editin..oshop.mp4 36_hide-e..-tool.mp4 37_creati..iling.mp4 38_assign..roups.mp4 39_adding..ter-7.mp4 40_creati..lding.mp4 41_copy-a..place.mp4 42_why-we..nents.mp4 and 57 other files
-ok
-add Learning SketchUp 2013/34_editing-texture-colour-in-sketchup.mp4 ok
-add Learning SketchUp 2013/35_editing-a-texture-in-photoshop.mp4 ok
-add Learning SketchUp 2013/36_hide-edges-and-lines-with-the-eraser-tool.mp4 ok
-add Learning SketchUp 2013/37_creating-the-ceiling.mp4 ok
-add Learning SketchUp 2013/38_assigning-layers-within-groups.mp4 ok
-add Learning SketchUp 2013/39_adding-detail-chapter-7.mp4 ok
-add Learning SketchUp 2013/40_creating-crown-moulding.mp4 ok
-add Learning SketchUp 2013/41_copy-and-paste-in-place.mp4 ok
-add Learning SketchUp 2013/42_why-we-use-groups-and-components.mp4 ok
-add Learning SketchUp 2013/43_creating-the-staircase.mp4 ok
-add Learning SketchUp 2013/44_adding-riser-detail.mp4 ok
-add Learning SketchUp 2013/45_making-a-unique-bottom-step.mp4 ok
-add Learning SketchUp 2013/46_adding-spindles-with-move-and-copy.mp4 ok
-add Learning SketchUp 2013/47_adding-railing.mp4 ok
-add Learning SketchUp 2013/48_review-of-components-and-nested-groups.mp4 ok
-add Learning SketchUp 2013/49_creating-doors.mp4 ok
-add Learning SketchUp 2013/50_creating-the-front-window-frame.mp4 ok
-add Learning SketchUp 2013/51_double-hung-windows.mp4 ok
-add Learning SketchUp 2013/52_installing-bit-tools-plugins.mp4 ok
-add Learning SketchUp 2013/53_creating-walls-and-door-openings.mp4 ok
-add Learning SketchUp 2013/54_using-the-window-feature.mp4 ok
-add Learning SketchUp 2013/55_starting-at-the-base.mp4 ok
-add Learning SketchUp 2013/56_building-the-mantle.mp4 ok
-add Learning SketchUp 2013/57_mantle-columns.mp4 ok
-add Learning SketchUp 2013/58_mantle-support.mp4 ok
-add Learning SketchUp 2013/59_adding-textures.mp4 ok
-add Learning SketchUp 2013/60_base-cabinets.mp4 ok
-add Learning SketchUp 2013/61_wall-cabinets.mp4 ok
-add Learning SketchUp 2013/62_cabinet-doors.mp4 ok
-add Learning SketchUp 2013/63_creating-the-countertop.mp4 ok
-add Learning SketchUp 2013/64_adding-materials.mp4 ok
-add Learning SketchUp 2013/65_adding-appliances.mp4 ok
-add Learning SketchUp 2013/66_adding-the-fridge-and-sink.mp4 ok
-add Learning SketchUp 2013/67_using-the-3d-warehouse.mp4 ok
-add Learning SketchUp 2013/68_using-form-fonts.mp4 ok
-add Learning SketchUp 2013/69_using-the-podium-browser.mp4 ok
-add Learning SketchUp 2013/70_creating-a-library.mp4 ok
-add Learning SketchUp 2013/71_setting-up-to-match-a-new-photo.mp4 ok
-add Learning SketchUp 2013/72_creating-the-massing-model.mp4 ok
-add Learning SketchUp 2013/73_applying-textures.mp4 ok
-add Learning SketchUp 2013/74_adding-detail-chapter-13.mp4 ok
-add Learning SketchUp 2013/75_saving-and-placing-into-the-model.mp4 ok
-add Learning SketchUp 2013/76_creating-the-exterior.mp4 ok
-add Learning SketchUp 2013/77_setting-the-building-in-place-geolocation.mp4 ok
-add Learning SketchUp 2013/78_reset-axis-to-align-building.mp4 ok
-add Learning SketchUp 2013/79_creating-the-front-facade.mp4 ok
-add Learning SketchUp 2013/80_adding-context.mp4 ok
-add Learning SketchUp 2013/81_get-photo-google-street-view.mp4 ok
-add Learning SketchUp 2013/82_using-3d-text.mp4 ok
-add Learning SketchUp 2013/83_add-solar-panels-with-skelion-plugin.mp4 ok
-add Learning SketchUp 2013/84_creating-scenes-and-updating.mp4 ok
-add Learning SketchUp 2013/85_styles.mp4 ok
-add Learning SketchUp 2013/86_scenes-for-animation.mp4 ok
-add Learning SketchUp 2013/87_section-cut-for-interior-elevations.mp4 ok
-add Learning SketchUp 2013/88_creating-a-group.mp4 ok
-add Learning SketchUp 2013/89_creating-the-animation.mp4 ok
-add Learning SketchUp 2013/90_jpeg-and-png-files.mp4 ok
-add Learning SketchUp 2013/91_dwg-elevation-and-plan-pro-feature.mp4 ok
-add Learning SketchUp 2013/92_kmz-for-google-earth.mp4 ok
-add Learning SketchUp 2013/93_collada-files.mp4 ok
-add Learning SketchUp 2013/94_animation-options.mp4 ok
-add Learning SketchUp 2013/95_add-final-touches.mp4 ok
-add Learning SketchUp 2013/96_export-display-options.mp4 ok
-add Learning SketchUp 2013/97_stacking-images-in-photoshop.mp4 ok
-add Learning SketchUp 2013/98_multiply-and-opacity.mp4 ok
-add Learning SketchUp 2013/99_saving-the-image.mp4 [2014-05-25 21:41:31 CEST] Committer: Committing changes to git
-[2014-05-25 21:41:32 CEST] Pusher: Syncing with diskstation 
-
-WORM-s8756441-m1398385688--Learning SketchUp 2013%34_editing-texture-colour-in-sketchup.mp4
-       32768   0%    0.00kB/s    0:00:00
-     2654208  30%    1.97MB/s    0:00:03
-     5734400  65%    2.32MB/s    0:00:01
-Already up-to-date.
-     8756441 100%    2.66MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 8757681 bytes  received 42 bytes  1592313.27 bytes/sec
-total size is 8756441  speedup is 1.00
-[2014-05-25 21:41:37 CEST] Transferrer: Uploaded 34_editin..tchup.mp4
-
-WORM-s16632826-m1398386674--Learning SketchUp 2013%33_positioning-an-imported-texture.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4423680  26%    4.12MB/s    0:00:02
-     8486912  51%    3.96MB/s    0:00:02
-    12517376  75%    3.90MB/s    0:00:01
-remote: merge git-annex     16580608  99%    3.87MB/s    0:00:00
-    16632826 100%    3.89MB/s    0:00:04 (xfer#1, to-check=0/1)
-[2014-05-25 21:41:42 CEST] RemoteControl: Syncing with diskstation 
-
-sent 16635024 bytes  received 42 bytes  3024557.45 bytes/sec
-total size is 16632826  speedup is 1.00
-[2014-05-25 21:41:43 CEST] Transferrer: Uploaded 33_positi..xture.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: merge synced/master 
-WORM-s13603741-m1398386183--Learning SketchUp 2013%32_importing-and-applying-a-texture.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3244032  23%    3.06MB/s    0:00:03
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e459e2f..297826c  git-annex  -> diskstation/git-annex
-   e459e2f..26c6449  synced/git-annex -> diskstation/synced/git-annex
-   6f2044d..7500a88  synced/master -> diskstation/synced/master
-Already up-to-date.
-Updating 6f2044d..7500a88        
-remote: Fast-forward        
-     6520832  47%    3.08MB/s    0:00:02
-remote:  Learning SketchUp 2013/01_introduction.mp4                               | 1 +        
-remote:  Learning SketchUp 2013/02_setting-up-the-template.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/03_setting-up-the-toolbars.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/04_how-to-access-your-working-files.mp4           | 1 +        
-remote:  Learning SketchUp 2013/05_line-tool.mp4                                  | 1 +        
-remote:  Learning SketchUp 2013/06_rectangle-tool.mp4                             | 1 +        
-remote:  Learning SketchUp 2013/07_circle-tool.mp4                                | 1 +        
-remote:  Learning SketchUp 2013/08_polygon-tool.mp4                               | 1 +        
-remote:  Learning SketchUp 2013/09_arc-tool.mp4                                   | 1 +        
-remote:  Learning SketchUp 2013/100_adding-lighting.mp4                           | 1 +        
-remote:  Learning SketchUp 2013/101_add-reflections-to-existing-textures.mp4      | 1 +        
-remote:  Learning SketchUp 2013/102_model-presets-create-a-preview-rendering.mp4  | 1 +        
-remote:  Learning SketchUp 2013/103_rendering-a-high-quality-image.mp4            | 1 +        
-remote:  Learning SketchUp 2013/104_post-processing-in-photoshop.mp4              | 1 +        
-remote:  Learning SketchUp 2013/105_what-is-layout.mp4                            | 1 +        
-remote:  Learning SketchUp 2013/106_adjusting-the-model-settings.mp4              | 1 +        
-remote:  Learning SketchUp 2013/108_adding-additional-pages-and-content.mp4       | 1 +        
-remote:  Learning SketchUp 2013/109_updating-the-model-references.mp4             | 1 +        
-remote:  Learning SketchUp 2013/10_freehand-tool.mp4                              | 1 +        
-remote:  Learning SketchUp 2013/111_about-dan-brown.mp4                           | 1 +        
-remote:  Learning SketchUp 2013/11_navigating-in-3d.mp4                           | 1 +        
-remote:  Learning SketchUp 2013/12_push-pull-and-move-tool.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/13_using-follow-me-complex-roof-pitches.mp4       | 1 +        
-remote:  Learning SketchUp 2013/14_creating-a-mansard-roof.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/15_creating-a-gambrel-roof.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/16_measurements.mp4                               | 1 +        
-remote:  Learning SketchUp 2013/18_extruding-your-walls-push-pull-and-offset.mp4  | 1 +        
-remote:  Learning SketchUp 2013/19_creating-doors-and-openings.mp4                | 1 +        
-remote:  .../20_clean-up-using-the-eraser-to-remove-unwanted-edges.mp4            | 1 +        
-remote:  Learning SketchUp 2013/21_why-groups.mp4                                 | 1 +        
-remote:  Learning SketchUp 2013/22_creating-the-second-floor.mp4                  | 1 +        
-remote:  Learning SketchUp 2013/23_creating-additional-openings.mp4               | 1 +        
-remote:  Learning SketchUp 2013/24_hide-model-and-other-useful-shortcuts.mp4      | 1 +        
-remote:  Learning SketchUp 2013/25_using-the-outliner.mp4                         | 1 +        
-remote:  Learning SketchUp 2013/26_using-layers-to-control-visibility.mp4         | 1 +        
-remote:  Learning SketchUp 2013/27_viewing-layer-states-of-the-model.mp4          | 1 +        
-remote:  Learning SketchUp 2013/28_field-of-view.mp4                              | 1 +        
-remote:  Learning SketchUp 2013/29_dividing-faces-to-create-your-rooms.mp4        | 1 +        
-remote:  Learning SketchUp 2013/30_area-tool-for-calculations.mp4                 | 1 +        
-remote:  Learning SketchUp 2013/31_using-paint-bucket-for-floor-texture-2.mp4     | 1 +        
-remote:  Learning SketchUp 2013/31_using-paint-bucket-for-floor-texture.mp4       | 1 +        
-remote:  Learning SketchUp 2013/32_importing-and-applying-a-texture.mp4           | 1 +        
-remote:  Learning SketchUp 2013/33_positioning-an-imported-texture.mp4            | 1 +        
-remote:  Learning SketchUp 2013/34_editing-texture-colour-in-sketchup.mp4         | 1 +        
-remote:  Learning SketchUp 2013/35_editing-a-texture-in-photoshop.mp4             | 1 +        
-remote:  Learning SketchUp 2013/36_hide-edges-and-lines-with-the-eraser-tool.mp4  | 1 +        
-remote:  Learning SketchUp 2013/37_creating-the-ceiling.mp4                       | 1 +        
-remote:  Learning SketchUp 2013/38_assigning-layers-within-groups.mp4             | 1 +        
-remote:  Learning SketchUp 2013/39_adding-detail-chapter-7.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/40_creating-crown-moulding.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/41_copy-and-paste-in-place.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/42_why-we-use-groups-and-components.mp4           | 1 +        
-remote:  Learning SketchUp 2013/43_creating-the-staircase.mp4                     | 1 +        
-remote:  Learning SketchUp 2013/44_adding-riser-detail.mp4                        | 1 +        
-remote:  Learning SketchUp 2013/45_making-a-unique-bottom-step.mp4                | 1 +        
-remote:  Learning SketchUp 2013/46_adding-spindles-with-move-and-copy.mp4         | 1 +        
-remote:  Learning SketchUp 2013/47_adding-railing.mp4                             | 1 +        
-remote:  Learning SketchUp 2013/48_review-of-components-and-nested-groups.mp4     | 1 +        
-remote:  Learning SketchUp 2013/49_creating-doors.mp4                             | 1 +        
-remote:  Learning SketchUp 2013/50_creating-the-front-window-frame.mp4            | 1 +        
-remote:  Learning SketchUp 2013/51_double-hung-windows.mp4                        | 1 +        
-remote:  Learning SketchUp 2013/52_installing-bit-tools-plugins.mp4               | 1 +        
-remote:  Learning SketchUp 2013/53_creating-walls-and-door-openings.mp4           | 1 +        
-remote:  Learning SketchUp 2013/54_using-the-window-feature.mp4                   | 1 +        
-remote:  Learning SketchUp 2013/55_starting-at-the-base.mp4                       | 1 +        
-remote:  Learning SketchUp 2013/56_building-the-mantle.mp4                        | 1 +        
-remote:  Learning SketchUp 2013/57_mantle-columns.mp4                             | 1 +        
-remote:  Learning SketchUp 2013/58_mantle-support.mp4                             | 1 +        
-remote:  Learning SketchUp 2013/59_adding-textures.mp4                            | 1 +        
-remote:  Learning SketchUp 2013/60_base-cabinets.mp4                              | 1 +        
-remote:  Learning SketchUp 2013/61_wall-cabinets.mp4                              | 1 +        
-remote:  Learning SketchUp 2013/62_cabinet-doors.mp4                              | 1 +        
-remote:  Learning SketchUp 2013/63_creating-the-countertop.mp4                    | 1 +        
-remote:  Learning SketchUp 2013/64_adding-materials.mp4                           | 1 +        
-remote:  Learning SketchUp 2013/65_adding-appliances.mp4                          | 1 +        
-remote:  Learning SketchUp 2013/66_adding-the-fridge-and-sink.mp4                 | 1 +        
-remote:  Learning SketchUp 2013/67_using-the-3d-warehouse.mp4                     | 1 +        
-remote:  Learning SketchUp 2013/68_using-form-fonts.mp4                           | 1 +        
-remote:  Learning SketchUp 2013/69_using-the-podium-browser.mp4                   | 1 +        
-remote:  Learning SketchUp 2013/70_creating-a-library.mp4                         | 1 +        
-remote:  Learning SketchUp 2013/71_setting-up-to-match-a-new-photo.mp4            | 1 +        
-remote:  Learning SketchUp 2013/72_creating-the-massing-model.mp4                 | 1 +        
-remote:  Learning SketchUp 2013/73_applying-textures.mp4                          | 1 +        
-remote:  Learning SketchUp 2013/74_adding-detail-chapter-13.mp4                   | 1 +        
-remote:  Learning SketchUp 2013/75_saving-and-placing-into-the-model.mp4          | 1 +        
-remote:  Learning SketchUp 2013/76_creating-the-exterior.mp4                      | 1 +        
-remote:  Learning SketchUp 2013/77_setting-the-building-in-place-geolocation.mp4  | 1 +        
-remote:  Learning SketchUp 2013/78_reset-axis-to-align-building.mp4               | 1 +        
-remote:  Learning SketchUp 2013/79_creating-the-front-facade.mp4                  | 1 +        
-remote:  Learning SketchUp 2013/80_adding-context.mp4                             | 1 +        
-remote:  Learning SketchUp 2013/81_get-photo-google-street-view.mp4               | 1 +        
-remote:  Learning SketchUp 2013/82_using-3d-text.mp4                              | 1 +        
-remote:  Learning SketchUp 2013/83_add-solar-panels-with-skelion-plugin.mp4       | 1 +        
-remote:  Learning SketchUp 2013/84_creating-scenes-and-updating.mp4               | 1 +        
-remote:  Learning SketchUp 2013/85_styles.mp4                                     | 1 +        
-remote:  Learning SketchUp 2013/86_scenes-for-animation.mp4                       | 1 +        
-remote:  Learning SketchUp 2013/87_section-cut-for-interior-elevations.mp4        | 1 +        
-remote:  Learning SketchUp 2013/88_creating-a-group.mp4                           | 1 +        
-remote:  Learning SketchUp 2013/89_creating-the-animation.mp4                     | 1 +        
-remote:  Learning SketchUp 2013/90_jpeg-and-png-files.mp4                         | 1 +        
-remote:  Learning SketchUp 2013/91_dwg-elevation-and-plan-pro-feature.mp4         | 1 +        
-remote:  Learning SketchUp 2013/92_kmz-for-google-earth.mp4                       | 1 +        
-remote:  Learning SketchUp 2013/93_collada-files.mp4                              | 1 +        
-remote:  Learning SketchUp 2013/94_animation-options.mp4                          | 1 +        
-remote:  Learning SketchUp 2013/95_add-final-touches.mp4                          | 1 +        
-remote:  Learning SketchUp 2013/96_export-display-options.mp4                     | 1 +        
-remote:  Learning SketchUp 2013/97_stacking-images-in-photoshop.mp4               | 1 +        
-remote:  Learning SketchUp 2013/98_multiply-and-opacity.mp4                       | 1 +        
-remote:  Learning SketchUp 2013/99_saving-the-image.mp4                           | 1 +        
-remote:  109 files changed, 109 insertions(+)        
-remote:  create mode 120000 Learning SketchUp 2013/01_introduction.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/02_setting-up-the-template.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/03_setting-up-the-toolbars.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/04_how-to-access-your-working-files.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/05_line-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/06_rectangle-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/07_circle-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/08_polygon-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/09_arc-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/100_adding-lighting.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/101_add-reflections-to-existing-textures.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/102_model-presets-create-a-preview-rendering.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/103_rendering-a-high-quality-image.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/104_post-processing-in-photoshop.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/105_what-is-layout.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/106_adjusting-the-model-settings.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/108_adding-additional-pages-and-content.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/109_updating-the-model-references.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/10_freehand-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/111_about-dan-brown.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/11_navigating-in-3d.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/12_push-pull-and-move-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/13_using-follow-me-complex-roof-pitches.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/14_creating-a-mansard-roof.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/15_creating-a-gambrel-roof.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/16_measurements.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/18_extruding-your-walls-push-pull-and-offset.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/19_creating-doors-and-openings.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/20_clean-up-using-the-eraser-to-remove-unwanted-edges.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/21_why-groups.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/22_creating-the-second-floor.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/23_creating-additional-openings.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/24_hide-model-and-other-useful-shortcuts.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/25_using-the-outliner.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/26_using-layers-to-control-visibility.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/27_viewing-layer-states-of-the-model.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/28_field-of-view.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/29_dividing-faces-to-create-your-rooms.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/30_area-tool-for-calculations.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/31_using-paint-bucket-for-floor-texture-2.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/31_using-paint-bucket-for-floor-texture.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/32_importing-and-applying-a-texture.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/33_positioning-an-imported-texture.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/34_editing-texture-colour-in-sketchup.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/35_editing-a-texture-in-photoshop.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/36_hide-edges-and-lines-with-the-eraser-tool.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/37_creating-the-ceiling.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/38_assigning-layers-within-groups.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/39_adding-detail-chapter-7.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/40_creating-crown-moulding.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/41_copy-and-paste-in-place.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/42_why-we-use-groups-and-components.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/43_creating-the-staircase.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/44_adding-riser-detail.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/45_making-a-unique-bottom-step.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/46_adding-spindles-with-move-and-copy.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/47_adding-railing.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/48_review-of-components-and-nested-groups.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/49_creating-doors.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/50_creating-the-front-window-frame.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/51_double-hung-windows.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/52_installing-bit-tools-plugins.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/53_creating-walls-and-door-openings.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/54_using-the-window-feature.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/55_starting-at-the-base.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/56_building-the-mantle.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/57_mantle-columns.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/58_mantle-support.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/59_adding-textures.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/60_base-cabinets.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/61_wall-cabinets.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/62_cabinet-doors.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/63_creating-the-countertop.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/64_adding-materials.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/65_adding-appliances.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/66_adding-the-fridge-and-sink.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/67_using-the-3d-warehouse.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/68_using-form-fonts.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/69_using-the-podium-browser.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/70_creating-a-library.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/71_setting-up-to-match-a-new-photo.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/72_creating-the-massing-model.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/73_applying-textures.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/74_adding-detail-chapter-13.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/75_saving-and-placing-into-the-model.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/76_creating-the-exterior.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/77_setting-the-building-in-place-geolocation.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/78_reset-axis-to-align-building.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/79_creating-the-front-facade.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/80_adding-context.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/81_get-photo-google-street-view.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/82_using-3d-text.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/83_add-solar-panels-with-skelion-plugin.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/84_creating-scenes-and-updating.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/85_styles.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/86_scenes-for-animation.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/87_section-cut-for-interior-elevations.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/88_creating-a-group.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/89_creating-the-animation.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/90_jpeg-and-png-files.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/91_dwg-elevation-and-plan-pro-feature.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/92_kmz-for-google-earth.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/93_collada-files.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/94_animation-options.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/95_add-final-touches.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/96_export-display-options.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/97_stacking-images-in-photoshop.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/98_multiply-and-opacity.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/99_saving-the-image.mp4        
-     8224768  60%    2.54MB/s    0:00:02
-remote: 
-remote: ok        
-remote: (Recording state in git...)        
-[2014-05-25 21:41:47 CEST] RemoteControl: Syncing with diskstation 
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e459e2f..26c6449  git-annex -> synced/git-annex
-   6f2044d..7500a88  master -> synced/master
-    10911744  80%    2.52MB/s    0:00:01
-    13603741 100%    2.69MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 13605572 bytes  received 42 bytes  2473748.00 bytes/sec
-total size is 13603741  speedup is 1.00
-[2014-05-25 21:41:49 CEST] Transferrer: Uploaded 32_import..xture.mp4
-
-WORM-s13731971-m1398386799--Learning SketchUp 2013%31_using-paint-bucket-for-floor-texture.mp4
-       32768   0%    0.00kB/s    0:00:00
-     2752512  20%    2.48MB/s    0:00:04
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   297826c..ee2d7a6  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/master is at 7500a886b58db7f0a3d2d279a946215525109cd2 but expected 6f2044d781d283993104edb9f8b96041801c1e76
- ! 6f2044d..7500a88  master     -> diskstation/master  (unable to update local ref)
-[2014-05-25 21:41:51 CEST] Pusher: Syncing with diskstation 
-     5373952  39%    2.45MB/s    0:00:03
-     9404416  68%    2.88MB/s    0:00:01
-    12681216  92%    2.63MB/s    0:00:00
-    13731971 100%    2.84MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 13733822 bytes  received 42 bytes  2497066.18 bytes/sec
-total size is 13731971  speedup is 1.00
-[2014-05-25 21:41:54 CEST] Transferrer: Uploaded 31_using-..xture.mp4
-
-WORM-s13731971-m1398386799--Learning SketchUp 2013%31_using-paint-bucket-for-floor-texture-2.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      3211264  23%    2.96MB/s    0:00:03
-     7634944  55%    3.55MB/s    0:00:01
-[2014-05-25 21:41:57 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   26c6449..9d66740  git-annex -> synced/git-annex
-    11370496  82%    3.54MB/s    0:00:00
-    13731971 100%    3.62MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 13733824 bytes  received 42 bytes  2497066.55 bytes/sec
-total size is 13731971  speedup is 1.00
-[2014-05-25 21:41:59 CEST] Transferrer: Uploaded 31_using-..ure-2.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ee2d7a6..be030de  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 9d667409bdd47098b595460d26a4a47a7477b602 but expected 26c64492572c692eb6c5e3af0922849d42142cc5
- ! 26c6449..9d66740  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s6958518-m1398385748--Learning SketchUp 2013%30_area-tool-for-calculations.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4096000  58%    3.77MB/s    0:00:00
-[2014-05-25 21:42:01 CEST] Pusher: Syncing with diskstation 
-     5505024  79%    2.56MB/s    0:00:00
-     6958518 100%    2.63MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 6959530 bytes  received 42 bytes  1988449.14 bytes/sec
-total size is 6958518  speedup is 1.00
-[2014-05-25 21:42:02 CEST] Transferrer: Uploaded 30_area-t..tions.mp4
-
-WORM-s17894336-m1398385618--Learning SketchUp 2013%29_dividing-faces-to-create-your-rooms.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5210112  29%    4.90MB/s    0:00:02
-     8617984  48%    3.99MB/s    0:00:02
-    10715136  59%    3.34MB/s    0:00:02
-[2014-05-25 21:42:07 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9d66740..2f65ea4  git-annex -> synced/git-annex
-    13336576  74%    3.11MB/s    0:00:01
-    16842752  94%    2.72MB/s    0:00:00
-    17894336 100%    3.16MB/s    0:00:05 (xfer#1, to-check=0/1)
-
-sent 17896694 bytes  received 42 bytes  2753344.00 bytes/sec
-total size is 17894336  speedup is 1.00
-[2014-05-25 21:42:09 CEST] Transferrer: Uploaded 29_dividi..rooms.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   be030de..afc435c  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 2f65ea464ab39db40b09478a6857d41450b394d3 but expected 9d667409bdd47098b595460d26a4a47a7477b602
- ! 9d66740..2f65ea4  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:42:10 CEST] Committer: Adding 107_addin..sions.mp4 110_prese..aving.mp4
-ok
-(Recording state in git...)
-(Recording state in git...)
-
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-(merging diskstation/git-annex into git-annex...)
-(Recording state in git...)
-add Learning SketchUp 2013/107_adding-annotations-and-dimensions.mp4 ok
-add Learning SketchUp 2013/110_presenting-and-saving.mp4 [2014-05-25 21:42:10 CEST] Committer: Committing changes to git
-
-WORM-s16183756-m1398386984--Learning SketchUp 2013%28_field-of-view.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:42:11 CEST] Pusher: Syncing with diskstation 
-     5177344  31%    4.80MB/s    0:00:02
-Already up-to-date.
-     9306112  57%    4.38MB/s    0:00:01
-    13434880  83%    4.21MB/s    0:00:00
-remote: merge git-annex     16183756 100%    3.91MB/s    0:00:03 (xfer#1, to-check=0/1)
-[2014-05-25 21:42:16 CEST] RemoteControl: Syncing with diskstation 
-
-sent 16185880 bytes  received 42 bytes  2942894.91 bytes/sec
-total size is 16183756  speedup is 1.00
-[2014-05-25 21:42:16 CEST] Transferrer: Uploaded 28_field-..-view.m(merging synced/git-annex into git-annex...)        
-premote: (Recording state in git...)        
-4remote: ok        
-remote: merge synced/master 
-
-WORM-s8653832-m1398386968--Learning SketchUp 2013%110_presenting-and-saving.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   afc435c..2feeb97  git-annex  -> diskstation/git-annex
-   2f65ea4..de80d6d  synced/git-annex -> diskstation/synced/git-annex
-   7500a88..af4c173  synced/master -> diskstation/synced/master
-     4390912  50%    4.13MB/s    0:00:01
-Already up-to-date.
-     7045120  81%    3.30MB/s    0:00:00
-Updating 7500a88..af4c173        
-remote: Fast-forward        
-remote:  Learning SketchUp 2013/107_adding-annotations-and-dimensions.mp4 | 1 +        
-remote:  Learning SketchUp 2013/110_presenting-and-saving.mp4             | 1 +        
-remote:  2 files changed, 2 insertions(+)        
-remote:  create mode 120000 Learning SketchUp 2013/107_adding-annotations-and-dimensions.mp4        
-remote:  create mode 120000 Learning SketchUp 2013/110_presenting-and-saving.mp4        
-     8653832 100%    3.26MB/s    0:00:02 (xfer#1, to-check=0/1)
-remote: 
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   2f65ea4..de80d6d  git-annex -> synced/git-annex
-   7500a88..af4c173  master -> synced/master
-
-sent 8655048 bytes  received 42 bytes  1923353.33 bytes/sec
-total size is 8653832  speedup is 1.00
-[2014-05-25 21:42:20 CEST] Transferrer: Uploaded 110_prese..aving.mp4
-[2014-05-25 21:42:20 CEST] RemoteControl: Syncing with diskstation 
-
-WORM-s12740321-m1398386533--Learning SketchUp 2013%107_adding-annotations-and-dimensions.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   2feeb97..c393949  git-annex  -> diskstation/git-annex
-   7500a88..af4c173  master     -> diskstation/master
-     4685824  36%    4.30MB/s    0:00:01
-     7667712  60%    3.56MB/s    0:00:01
-    10518528  82%    3.25MB/s    0:00:00
-[2014-05-25 21:42:24 CEST] Pusher: Syncing with diskstation 
-    12740321 100%    3.20MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 12742046 bytes  received 42 bytes  2316743.27 bytes/sec
-total size is 12740321  speedup is 1.00
-[2014-05-25 21:42:25 CEST] Transferrer: Uploaded 107_addin..sions.mp4
-
-WORM-s21683651-m1398384839--Learning SketchUp 2013%27_viewing-layer-states-of-the-model.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      4358144  20%    4.11MB/s    0:00:04
-     7438336  34%    3.47MB/s    0:00:04
-[2014-05-25 21:42:29 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   de80d6d..da93668  git-annex -> synced/git-annex
-     9273344  42%    2.81MB/s    0:00:04
-    12189696  56%    2.78MB/s    0:00:03
-    15532032  71%    2.54MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c393949..9f19ee8  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at da936685ca807cb619e2d6073c857cdcdc345dde but expected de80d6dd537ca7e4bfade9d40eade18afc58878b
- ! de80d6d..da93668  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    19300352  89%    2.70MB/s    0:00:00
-    21683651 100%    2.95MB/s    0:00:06 (xfer#1, to-check=0/1)
-[2014-05-25 21:42:33 CEST] Pusher: Syncing with diskstation 
-
-sent 21686467 bytes  received 42 bytes  2551354.00 bytes/sec
-total size is 21683651  speedup is 1.00
-[2014-05-25 21:42:33 CEST] Transferrer: Uploaded 27_viewin..model.mp4
-
-WORM-s16669986-m1398385184--Learning SketchUp 2013%26_using-layers-to-control-visibility.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      4259840  25%    3.95MB/s    0:00:03
-     7274496  43%    3.37MB/s    0:00:02
-[2014-05-25 21:42:37 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   da93668..fc553e7  git-annex -> synced/git-annex
-    10387456  62%    3.21MB/s    0:00:01
-    13500416  80%    3.14MB/s    0:00:00
-    16613376  99%    2.87MB/s    0:00:00
-    16669986 100%    3.09MB/s    0:00:05 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9f19ee8..a8b9203  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at fc553e72a5ea5a077a254df3f557b3d6241d9342 but expected da936685ca807cb619e2d6073c857cdcdc345dde
- ! da93668..fc553e7  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 16672191 bytes  received 42 bytes  2564958.92 bytes/sec
-total size is 16669986  speedup is 1.00
-[2014-05-25 21:42:40 CEST] Transferrer: Uploaded 26_using-..ility.mp4
-
-WORM-s8161367-m1398386819--Learning SketchUp 2013%25_using-the-outliner.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4620288  56%    4.32MB/s    0:00:00
-[2014-05-25 21:42:41 CEST] Pusher: Syncing with diskstation 
-     8161367 100%    3.89MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 8162519 bytes  received 42 bytes  3265024.40 bytes/sec
-total size is 8161367  speedup is 1.00
-[2014-05-25 21:42:42 CEST] Transferrer: Uploaded 25_using-..liner.mp4
-
-WORM-s26081165-m1398387035--Learning SketchUp 2013%24_hide-model-and-other-useful-shortcuts.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4620288  17%    4.27MB/s    0:00:04
-remote: merge git-annex      6193152  23%    2.82MB/s    0:00:06
-     9568256  36%    2.93MB/s    0:00:05
-    13631488  52%    3.16MB/s    0:00:03
-[2014-05-25 21:42:47 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   fc553e7..7eccd72  git-annex -> synced/git-annex
-    17203200  65%    2.92MB/s    0:00:02
-    21561344  82%    3.62MB/s    0:00:01
-    25362432  97%    3.72MB/s    0:00:00
-    26081165 100%    3.37MB/s    0:00:07 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a8b9203..829ce2e  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 7eccd720d952d1ec3a1ee00cc524732ec970285f but expected fc553e72a5ea5a077a254df3f557b3d6241d9342
- ! fc553e7..7eccd72  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 26084521 bytes  received 42 bytes  2745743.47 bytes/sec
-total size is 26081165  speedup is 1.00
-[2014-05-25 21:42:51 CEST] Transferrer: Uploaded 24_hide-m..tcuts.mp4
-
-WORM-s24710536-m1398386140--Learning SketchUp 2013%23_creating-additional-openings.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:42:52 CEST] Pusher: Syncing with diskstation 
-     5111808  20%    4.80MB/s    0:00:03
-     9142272  36%    4.25MB/s    0:00:03
-    12648448  51%    3.92MB/s    0:00:03
-    16023552  64%    3.71MB/s    0:00:02
-remote: merge git-annex     19365888  78%    3.27MB/s    0:00:01
-    22478848  90%    3.05MB/s    0:00:00
-[2014-05-25 21:42:58 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7eccd72..5dd7ceb  git-annex -> synced/git-annex
-    24710536 100%    3.34MB/s    0:00:07 (xfer#1, to-check=0/1)
-
-sent 24713719 bytes  received 42 bytes  2907501.29 bytes/sec
-total size is 24710536  speedup is 1.00
-[2014-05-25 21:42:59 CEST] Transferrer: Uploaded 23_creati..nings.mp4
-
-WORM-s27007278-m1398386399--Learning SketchUp 2013%22_creating-the-second-floor.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   829ce2e..432e319  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 5dd7ceb17a57b1f11edb692c3c20eb05f7c89aa7 but expected 7eccd720d952d1ec3a1ee00cc524732ec970285f
- ! 7eccd72..5dd7ceb  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     4194304  15%    3.94MB/s    0:00:05
-     6946816  25%    3.24MB/s    0:00:06
-[2014-05-25 21:43:02 CEST] Pusher: Syncing with diskstation 
-     9830400  36%    3.06MB/s    0:00:05
-    12582912  46%    2.96MB/s    0:00:04
-remote: merge git-annex     15761408  58%    2.73MB/s    0:00:04
-    18481152  68%    2.71MB/s    0:00:03
-[2014-05-25 21:43:06 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5dd7ceb..114c7a8  git-annex -> synced/git-annex
-    21889024  81%    2.82MB/s    0:00:01
-    24805376  91%    2.86MB/s    0:00:00
-    27007278 100%    2.89MB/s    0:00:08 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   432e319..ee3c95a  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 114c7a8e0d0873ea44ebfd8a5989b7e4f6fe300d but expected 5dd7ceb17a57b1f11edb692c3c20eb05f7c89aa7
- ! 5dd7ceb..114c7a8  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 27010738 bytes  received 42 bytes  2572455.24 bytes/sec
-total size is 27007278  speedup is 1.00
-[2014-05-25 21:43:09 CEST] Transferrer: Uploaded 22_creati..floor.mp4
-
-WORM-s11952523-m1398387004--Learning SketchUp 2013%21_why-groups.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3538944  29%    3.13MB/s    0:00:02
-[2014-05-25 21:43:11 CEST] Pusher: Syncing with diskstation 
-     4849664  40%    2.11MB/s    0:00:03
-     8257536  69%    2.44MB/s    0:00:01
-    11272192  94%    2.54MB/s    0:00:00
-remote: merge git-annex     11952523 100%    2.56MB/s    0:00:04 (xfer#1, to-check=0/1)
-[2014-05-25 21:43:15 CEST] RemoteControl: Syncing with diskstation 
-
-sent 11954128 bytes  received 42 bytes  2173485.45 bytes/sec
-total size is 11952523  speedup is 1.00
-[2014-05-25 21:43:15 CEST] Transferrer: Uploaded 21_why-groups.mp4
-
-WORM-s14698958-m1401045757--Learning SketchUp 2013%20_clean-up-using-the-eraser-to-remove-unwanted-edges.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   114c7a8..70d2843  git-annex -> synced/git-annex
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ee3c95a..292456c  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 70d2843ca3fd83291be9e3a83c8a2b1d393344fc but expected 114c7a8e0d0873ea44ebfd8a5989b7e4f6fe300d
- ! 114c7a8..70d2843  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:43:17 CEST] RemoteControl: Syncing with diskstation 
-     4489216  30%    4.09MB/s    0:00:02
-     7634944  51%    3.53MB/s    0:00:01
-    10715136  72%    3.32MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   292456c..489a02f  git-annex  -> diskstation/git-annex
-    14254080  96%    3.32MB/s    0:00:00
-    14698958 100%    3.27MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 14700939 bytes  received 42 bytes  2261689.38 bytes/sec
-total size is 14698958  speedup is 1.00
-[2014-05-25 21:43:21 CEST] Transferrer: Uploaded 20_clean-..edges.mp4
-[2014-05-25 21:43:21 CEST] Pusher: Syncing with diskstation 
-
-WORM-s53078315-m1401045818--Learning SketchUp 2013%19_creating-doors-and-openings.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5046272   9%    4.66MB/s    0:00:10
-     9109504  17%    4.21MB/s    0:00:10
-remote: merge git-annex     12779520  24%    3.96MB/s    0:00:09
-    16187392  30%    3.76MB/s    0:00:09
-    20676608  38%    3.66MB/s    0:00:08
-[2014-05-25 21:43:27 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   70d2843..0d8c767  git-annex -> synced/git-annex
-    24739840  46%    3.67MB/s    0:00:07
-    28573696  53%    3.71MB/s    0:00:06
-    32243712  60%    3.76MB/s    0:00:05
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   489a02f..7a7f5ca  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 0d8c76720fa6b51cf2cf5edf847e732dd550ab40 but expected 70d2843ca3fd83291be9e3a83c8a2b1d393344fc
- ! 70d2843..0d8c767  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    36765696  69%    3.74MB/s    0:00:04
-    40697856  76%    3.72MB/s    0:00:03
-    44564480  83%    3.73MB/s    0:00:02
-    47316992  89%    3.53MB/s    0:00:01
-    50331648  94%    3.18MB/s    0:00:00
-    53078315 100%    3.62MB/s    0:00:13 (xfer#1, to-check=0/1)
-
-sent 53084957 bytes  received 42 bytes  3424838.65 bytes/sec
-total size is 53078315  speedup is 1.00
-[2014-05-25 21:43:36 CEST] Transferrer: Uploaded 19_creati..nings.mp4
-[2014-05-25 21:43:36 CEST] Pusher: Syncing with diskstation 
-
-WORM-s30352251-m1398385646--Learning SketchUp 2013%18_extruding-your-walls-push-pull-and-offset.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4784128  15%    4.50MB/s    0:00:05
-remote: merge git-annex      8159232  26%    3.81MB/s    0:00:05
-    10256384  33%    3.17MB/s    0:00:06
-[2014-05-25 21:43:40 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   0d8c767..6f8ae3d  git-annex -> synced/git-annex
-    13271040  43%    3.06MB/s    0:00:05
-    16318464  53%    2.65MB/s    0:00:05
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7a7f5ca..bef94a6  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 6f8ae3d49d1006e2d5cf957d7539c0818db4df12 but expected 0d8c76720fa6b51cf2cf5edf847e732dd550ab40
- ! 0d8c767..6f8ae3d  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    19070976  62%    2.51MB/s    0:00:04
-    21954560  72%    2.71MB/s    0:00:03
-    24969216  82%    2.72MB/s    0:00:01
-    27852800  91%    2.69MB/s    0:00:00
-    30352251 100%    2.87MB/s    0:00:10 (xfer#1, to-check=0/1)
-
-sent 30356135 bytes  received 42 bytes  2639667.57 bytes/sec
-total size is 30352251  speedup is 1.00
-[2014-05-25 21:43:48 CEST] Transferrer: Uploaded 18_extrud..ffset.mp4
-[2014-05-25 21:43:48 CEST] Pusher: Syncing with diskstation 
-
-WORM-s14102612-m1398386513--Learning SketchUp 2013%16_measurements.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4554752  32%    4.23MB/s    0:00:02
-     7634944  54%    3.59MB/s    0:00:01
-remote: merge git-annex     10584064  75%    3.29MB/s    0:00:01
-[2014-05-25 21:43:52 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   6f8ae3d..32eee1a  git-annex -> synced/git-annex
-    13434880  95%    3.13MB/s    0:00:00
-    14102612 100%    3.14MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 14104483 bytes  received 42 bytes  2564459.09 bytes/sec
-total size is 14102612  speedup is 1.00
-[2014-05-25 21:43:53 CEST] Transferrer: Uploaded 16_measurements.mp4
-
-WORM-s16792198-m1398384994--Learning SketchUp 2013%15_creating-a-gambrel-roof.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   bef94a6..10025f1  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 32eee1aff2a03a33e7cc200fefcef41ce775767e but expected 6f8ae3d49d1006e2d5cf957d7539c0818db4df12
- ! 6f8ae3d..32eee1a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     4128768  24%    3.88MB/s    0:00:03
-     7012352  41%    3.26MB/s    0:00:02
-[2014-05-25 21:43:56 CEST] Pusher: Syncing with diskstation 
-     9895936  58%    3.07MB/s    0:00:02
-    12648448  75%    2.95MB/s    0:00:01
-remote: merge git-annex     14745600  87%    2.48MB/s    0:00:00
-    16416768  97%    2.20MB/s    0:00:00
-    16792198 100%    2.58MB/s    0:00:06 (xfer#1, to-check=0/1)
-[2014-05-25 21:44:01 CEST] RemoteControl: Syncing with diskstation 
-
-sent 16794408 bytes  received 42 bytes  1975817.65 bytes/sec
-total size is 16792198  speedup is 1.00
-[2014-05-25 21:44:01 CEST] Transferrer: Uploaded 15_creati..-roof.mp4
-
-WORM-s33139501-m1398386446--Learning SketchUp 2013%14_creating-a-mansard-roof.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   32eee1a..cc461b8  git-annex -> synced/git-annex
-     4685824  14%    4.39MB/s    0:00:06
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   10025f1..f39db09  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at cc461b8c48eb38d8f0b020a9c22440dada4973f0 but expected 32eee1aff2a03a33e7cc200fefcef41ce775767e
- ! 32eee1a..cc461b8  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:44:03 CEST] RemoteControl: Syncing with diskstation 
-     8159232  24%    3.84MB/s    0:00:06
-    11730944  35%    3.67MB/s    0:00:05
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f39db09..d356ca4  git-annex  -> diskstation/git-annex
-    16351232  49%    3.85MB/s    0:00:04
-[2014-05-25 21:44:07 CEST] Pusher: Syncing with diskstation 
-    20119552  60%    3.63MB/s    0:00:03
-    23265280  70%    3.52MB/s    0:00:02
-    25952256  78%    3.31MB/s    0:00:02
-remote: merge git-annex     28803072  86%    2.89MB/s    0:00:01
-(merging synced/git-annex into git-annex...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   cc461b8..f90e094  git-annex -> synced/git-annex
-    31653888  95%    2.67MB/s    0:00:00
-    33139501 100%    3.28MB/s    0:00:09 (xfer#1, to-check=0/1)
-
-sent 33143707 bytes  received 42 bytes  2882065.13 bytes/sec
-total size is 33139501  speedup is 1.00
-[2014-05-25 21:44:12 CEST] Transferrer: Uploaded 14_creati..-roof.mp4
-
-WORM-s32543230-m1398386371--Learning SketchUp 2013%13_using-follow-me-complex-roof-pitches.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4718592  14%    4.45MB/s    0:00:06
-[2014-05-25 21:44:14 CEST] Pusher: Syncing with diskstation 
-     7340032  22%    3.45MB/s    0:00:07
-    10125312  31%    3.18MB/s    0:00:06
-    12877824  39%    3.03MB/s    0:00:06
-remote: merge git-annex     15892480  48%    2.64MB/s    0:00:06
-    18579456  57%    2.64MB/s    0:00:05
-    21561344  66%    2.67MB/s    0:00:04
-[2014-05-25 21:44:20 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f90e094..795020d  git-annex -> synced/git-annex
-    24412160  75%    2.70MB/s    0:00:02
-    27164672  83%    2.61MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   d356ca4..7d763cd  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 795020d6aa856441f602de8d1f2f7efb98c00f20 but expected f90e0945bc55e8e50115bccec9672d1df7c23e69
- ! f90e094..795020d  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    28737536  88%    2.28MB/s    0:00:01
-    30703616  94%    2.05MB/s    0:00:00
-    32543230 100%    2.58MB/s    0:00:12 (xfer#1, to-check=0/1)
-
-sent 32547377 bytes  received 42 bytes  2410919.93 bytes/sec
-total size is 32543230  speedup is 1.00
-[2014-05-25 21:44:25 CEST] Transferrer: Uploaded 13_using-..tches.mp4
-[2014-05-25 21:44:25 CEST] Pusher: Syncing with diskstation 
-
-WORM-s22461160-m1401045786--Learning SketchUp 2013%12_push-pull-and-move-tool.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4161536  18%    3.80MB/s    0:00:04
-remote: merge git-annex      6782976  30%    3.13MB/s    0:00:04
-     9666560  43%    2.95MB/s    0:00:04
-[2014-05-25 21:44:29 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   795020d..496b7bd  git-annex -> synced/git-annex
-    12681216  56%    2.91MB/s    0:00:03
-    15859712  70%    2.70MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7d763cd..2bf57cb  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 496b7bd40f4c979efdd6196eccadeeb370bb4ec3 but expected 795020d6aa856441f602de8d1f2f7efb98c00f20
- ! 795020d..496b7bd  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    18579456  82%    2.72MB/s    0:00:01
-    20414464  90%    2.50MB/s    0:00:00
-    22461160 100%    2.69MB/s    0:00:07 (xfer#1, to-check=0/1)
-
-sent 22464062 bytes  received 42 bytes  2364642.53 bytes/sec
-total size is 22461160  speedup is 1.00
-[2014-05-25 21:44:34 CEST] Transferrer: Uploaded 12_push-p..-tool.mp4
-[2014-05-25 21:44:34 CEST] Pusher: Syncing with diskstation 
-
-WORM-s15320679-m1398386653--Learning SketchUp 2013%11_navigating-in-3d.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4587520  29%    4.18MB/s    0:00:02
-remote: merge git-annex      7471104  48%    3.45MB/s    0:00:02
-    10223616  66%    3.16MB/s    0:00:01
-[2014-05-25 21:44:38 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   496b7bd..eefc387  git-annex -> synced/git-annex
-    12976128  84%    3.00MB/s    0:00:00
-    15320679 100%    2.92MB/s    0:00:04 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   2bf57cb..310d31e  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at eefc387772b3e6ba46f51fbecd86cdabcd27db96 but expected 496b7bd40f4c979efdd6196eccadeeb370bb4ec3
- ! 496b7bd..eefc387  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 15322702 bytes  received 42 bytes  2357345.23 bytes/sec
-total size is 15320679  speedup is 1.00
-[2014-05-25 21:44:40 CEST] Transferrer: Uploaded 11_naviga..in-3d.mp4
-
-WORM-s6065317-m1398386928--Learning SketchUp 2013%111_about-dan-brown.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4292608  70%    3.98MB/s    0:00:00
-[2014-05-25 21:44:42 CEST] Pusher: Syncing with diskstation 
-     6065317 100%    3.02MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 6066211 bytes  received 42 bytes  1733215.14 bytes/sec
-total size is 6065317  speedup is 1.00
-[2014-05-25 21:44:43 CEST] Transferrer: Uploaded 111_about..brown.mp4
-
-WORM-s2764724-m1398386941--Learning SketchUp 2013%10_freehand-tool.mp4
-       32768   1%    0.00kB/s    0:00:00
-     2764724 100%    5.18MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 2765211 bytes  received 42 bytes  1843502.00 bytes/sec
-total size is 2764724  speedup is 1.00
-[2014-05-25 21:44:45 CEST] Transferrer: Uploaded 10_freeha..-tool.mp4
-remote: merge git-annex 
-WORM-s6834151-m1398385049--Learning SketchUp 2013%109_updating-the-model-references.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072  61%    3.81MB/s    0:00:00
-     6834151 100%    3.46MB/s    0:00:01 (xfer#1, to-check=0/1)
-[2014-05-25 21:44:47 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   eefc387..dc4c11c  git-annex -> synced/git-annex
-
-sent 6835151 bytes  received 42 bytes  1952912.29 bytes/sec
-total size is 6834151  speedup is 1.00
-[2014-05-25 21:44:48 CEST] Transferrer: Uploaded 109_updat..ences.mp4
-
-WORM-s6878166-m1398386493--Learning SketchUp 2013%108_adding-additional-pages-and-content.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4259840  61%    3.87MB/s    0:00:00
-     6878166 100%    3.80MB/s    0:00:01 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   310d31e..e2f5d0d  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at dc4c11c618002775bb0e8dcf4b132113c40875ed but expected eefc387772b3e6ba46f51fbecd86cdabcd27db96
- ! eefc387..dc4c11c  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 6879176 bytes  received 42 bytes  1965490.86 bytes/sec
-total size is 6878166  speedup is 1.00
-[2014-05-25 21:44:51 CEST] Transferrer: Uploaded 108_addin..ntent.mp4
-
-WORM-s8253246-m1398386838--Learning SketchUp 2013%106_adjusting-the-model-settings.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:44:52 CEST] Pusher: Syncing with diskstation 
-     2588672  31%    2.32MB/s    0:00:02
-     4554752  55%    2.10MB/s    0:00:01
-     8093696  98%    2.51MB/s    0:00:00
-     8253246 100%    2.52MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 8254417 bytes  received 42 bytes  1834324.22 bytes/sec
-total size is 8253246  speedup is 1.00
-[2014-05-25 21:44:55 CEST] Transferrer: Uploaded 106_adjus..tings.mp4
-
-WORM-s5364896-m1398386068--Learning SketchUp 2013%105_what-is-layout.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      4816896  89%    4.56MB/s    0:00:00
-     5364896 100%    4.39MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 5365701 bytes  received 42 bytes  2146297.20 bytes/sec
-total size is 5364896  speedup is 1.00
-[2014-05-25 21:44:58 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:44:58 CEST] Transferrer: Uploaded 105_what-..ayout.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   dc4c11c..a19dfa9  git-annex -> synced/git-annex
-
-WORM-s7390741-m1398386693--Learning SketchUp 2013%104_post-processing-in-photoshop.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4227072  57%    3.91MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e2f5d0d..73400d3  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at a19dfa9bd0b4aee28bf67773a9f578a9bb94f2e9 but expected dc4c11c618002775bb0e8dcf4b132113c40875ed
- ! dc4c11c..a19dfa9  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     7241728  97%    3.34MB/s    0:00:00
-     7390741 100%    3.35MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 7391808 bytes  received 42 bytes  1642633.33 bytes/sec
-total size is 7390741  speedup is 1.00
-[2014-05-25 21:45:02 CEST] Transferrer: Uploaded 104_post-..oshop.mp4
-
-WORM-s12544086-m1398385948--Learning SketchUp 2013%103_rendering-a-high-quality-image.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:45:03 CEST] Pusher: Syncing with diskstation 
-     4292608  34%    3.96MB/s    0:00:02
-     7307264  58%    3.39MB/s    0:00:01
-     9535488  76%    2.97MB/s    0:00:00
-remote: merge git-annex     12419072  99%    2.91MB/s    0:00:00
-    12544086 100%    2.90MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 12545784 bytes  received 42 bytes  2281059.27 bytes/sec
-total size is 12544086  speedup is 1.00
-[2014-05-25 21:45:07 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:45:07 CEST] Transferrer: Uploaded 103_rende..image.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a19dfa9..96ceb2c  git-annex -> synced/git-annex
-
-WORM-s6567293-m1398384854--Learning SketchUp 2013%102_model-presets-create-a-preview-rendering.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4128768  62%    3.83MB/s    0:00:00
-     6567293 100%    3.26MB/s    0:00:01 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   73400d3..3e5d1b8  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 96ceb2c0e06ff0f1372950ab38c2aa2ebb0f00d7 but expected a19dfa9bd0b4aee28bf67773a9f578a9bb94f2e9
- ! a19dfa9..96ceb2c  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 6568272 bytes  received 42 bytes  1876661.14 bytes/sec
-total size is 6567293  speedup is 1.00
-[2014-05-25 21:45:11 CEST] Transferrer: Uploaded 102_model..ering.mp4
-
-WORM-s8030582-m1398385367--Learning SketchUp 2013%101_add-reflections-to-existing-textures.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4423680  55%    4.18MB/s    0:00:00
-[2014-05-25 21:45:12 CEST] Pusher: Syncing with diskstation 
-     7569408  94%    3.54MB/s    0:00:00
-     8030582 100%    3.53MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 8031737 bytes  received 42 bytes  2294794.00 bytes/sec
-total size is 8030582  speedup is 1.00
-[2014-05-25 21:45:14 CEST] Transferrer: Uploaded 101_add-r..tures.mp4
-
-WORM-s13509940-m1398384818--Learning SketchUp 2013%100_adding-lighting.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4587520  33%    4.25MB/s    0:00:02
-remote: merge git-annex      7831552  57%    3.62MB/s    0:00:01
-    10420224  77%    3.24MB/s    0:00:00
-[2014-05-25 21:45:18 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   96ceb2c..a5f9c8b  git-annex -> synced/git-annex
-    13509940 100%    3.28MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 13511743 bytes  received 42 bytes  2456688.18 bytes/sec
-total size is 13509940  speedup is 1.00
-[2014-05-25 21:45:19 CEST] Transferrer: Uploaded 100_addin..hting.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   3e5d1b8..6ea05e0  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at a5f9c8b9874d4d3fe571687365c391050325bc87 but expected 96ceb2c0e06ff0f1372950ab38c2aa2ebb0f00d7
- ! 96ceb2c..a5f9c8b  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s6047748-m1398386548--Learning SketchUp 2013%09_arc-tool.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4751360  78%    4.47MB/s    0:00:00
-     6047748 100%    4.50MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 6048630 bytes  received 42 bytes  2419468.80 bytes/sec
-total size is 6047748  speedup is 1.00
-[2014-05-25 21:45:22 CEST] Pusher: Syncing with diskstation 
-[2014-05-25 21:45:22 CEST] Transferrer: Uploaded 09_arc-tool.mp4
-
-WORM-s7257160-m1398385203--Learning SketchUp 2013%08_polygon-tool.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5079040  69%    4.65MB/s    0:00:00
-remote: merge git-annex      7257160 100%    4.35MB/s    0:00:01 (xfer#1, to-check=0/1)
-[2014-05-25 21:45:25 CEST] RemoteControl: Syncing with diskstation 
-
-sent 7258194 bytes  received 42 bytes  2073781.71 bytes/sec
-total size is 7257160  speedup is 1.00
-[2014-05-25 21:45:25 CEST] Transferrer: Uploaded 08_polygon-tool.mp4
-
-WORM-s6789048-m1398386463--Learning SketchUp 2013%07_circle-tool.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a5f9c8b..05787b8  git-annex -> synced/git-annex
-     2654208  39%    2.46MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   6ea05e0..b78228d  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 05787b8b7c6dd1aad45fdb0a019a2ed5e56b26bb but expected a5f9c8b9874d4d3fe571687365c391050325bc87
- ! a5f9c8b..05787b8  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:45:28 CEST] RemoteControl: Syncing with diskstation 
-     5013504  73%    2.35MB/s    0:00:00
-     6789048 100%    2.62MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 6790025 bytes  received 42 bytes  1940019.14 bytes/sec
-total size is 6789048  speedup is 1.00
-[2014-05-25 21:45:29 CEST] Transferrer: Uploaded 07_circle-tool.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   b78228d..f1fd60c  git-annex  -> diskstation/git-annex
-
-WORM-s3766669-m1398384958--Learning SketchUp 2013%06_rectangle-tool.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:45:31 CEST] Pusher: Syncing with diskstation 
-     3702784  98%    2.95MB/s    0:00:00
-     3766669 100%    3.00MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 3767277 bytes  received 42 bytes  1506927.60 bytes/sec
-total size is 3766669  speedup is 1.00
-[2014-05-25 21:45:31 CEST] Transferrer: Uploaded 06_rectan..-tool.mp4
-
-WORM-s5571735-m1398386867--Learning SketchUp 2013%05_line-tool.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5144576  92%    4.78MB/s    0:00:00
-     5571735 100%    4.70MB/s    0:00:01 (xfer#1, to-check=0/1)
-remote: merge git-annex 
-sent 5572562 bytes  received 42 bytes  2229041.60 bytes/sec
-total size is 5571735  speedup is 1.00
-[2014-05-25 21:45:33 CEST] Transferrer: Uploaded 05_line-tool.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-[2014-05-25 21:45:35 CEST] RemoteConTo joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-trol: Syncing with diskstati   05787b8..2a723a6  ogit-annex -> synced/git-annexn
- 
-
-WORM-s13796050-m1398386633--Learning SketchUp 2013%04_how-to-access-your-working-files.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4915200  35%    4.65MB/s    0:00:01
-     8159232  59%    3.77MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f1fd60c..bdd7ed6  git-annex  -> diskstation/git-annex
-    11304960  81%    3.45MB/s    0:00:00
-    13796050 100%    3.57MB/s    0:00:03 (xfer#1, to-check=0/1)
-[2014-05-25 21:45:38 CEST] Pusher: Syncing with diskstation 
-
-sent 13797905 bytes  received 42 bytes  2508717.64 bytes/sec
-total size is 13796050  speedup is 1.00
-[2014-05-25 21:45:39 CEST] Transferrer: Uploaded 04_how-to..files.mp4
-
-WORM-s5852944-m1398386582--Learning SketchUp 2013%03_setting-up-the-toolbars.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4947968  84%    4.65MB/s    0:00:00
-     5852944 100%    4.42MB/s    0:00:01 (xfer#1, to-check=0/1)
-remote: merge git-annex [2014-05-25 21:45:42 CEST] RemoteControl: Syncing with diskstation 
-
-sent 5853817 bytes  received 42 bytes  2341543.60 bytes/sec
-total size is 5852944  speedup is 1.00
-[2014-05-25 21:45:42 CEST] Transferrer: Uploaded 03_settin..lbars.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   2a723a6..dc76c23  git-annex -> synced/git-annex
-
-WORM-s3829366-m1398386198--Learning SketchUp 2013%02_setting-up-the-template.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3829366 100%    4.68MB/s    0:00:00 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   bdd7ed6..84f8e25  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at dc76c234409bd5cfac50be70dd21ef8be88aed9b but expected 2a723a6697455228d8b2e95a7015aafb4be4f003
- ! 2a723a6..dc76c23  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 3829991 bytes  received 42 bytes  1532013.20 bytes/sec
-total size is 3829366  speedup is 1.00
-[2014-05-25 21:45:45 CEST] Transferrer: Uploaded 02_settin..plate.mp4
-
-WORM-s6528377-m1398386753--Learning SketchUp 2013%01_introduction.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4718592  72%    4.42MB/s    0:00:00
-[2014-05-25 21:45:47 CEST] Pusher: Syncing with diskstation 
-     6528377 100%    3.21MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 6529323 bytes  received 42 bytes  2611746.00 bytes/sec
-total size is 6528377  speedup is 1.00
-[2014-05-25 21:45:48 CEST] Transferrer: Uploaded 01_introduction.mp4
-
-WORM-s5900041-m1398386278--Learning SketchUp 2013%99_saving-the-image.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5079040  86%    4.72MB/s    0:00:00
-     5900041 100%    4.60MB/s    0:00:01 (xfer#1, to-check=0/1)
-remote: merge git-annex 
-sent 5900915 bytes  received 42 bytes  2360382.80 bytes/sec
-total size is 5900041  speedup is 1.00
-[2014-05-25 21:45:50 CEST] Transferrer: Uploaded 99_saving..image.mp4
-
-WORM-s7221607-m1398385119--Learning SketchUp 2013%98_multiply-and-opacity.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:45:52 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   dc76c23..60c1e82  git-annex -> synced/git-annex
-     4456448  61%    4.07MB/s    0:00:00
-     7221607 100%    4.25MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 7222645 bytes  received 42 bytes  2889074.80 bytes/sec
-total size is 7221607  speedup is 1.00
-[2014-05-25 21:45:54 CEST] Transferrer: Uploaded 98_multip..acity.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   84f8e25..3261510  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 60c1e827e829b642d4618889b425c0bfc259b2c9 but expected dc76c234409bd5cfac50be70dd21ef8be88aed9b
- ! dc76c23..60c1e82  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s6262129-m1398386258--Learning SketchUp 2013%97_stacking-images-in-photoshop.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4947968  79%    4.69MB/s    0:00:00
-     6262129 100%    4.40MB/s    0:00:01 (xfer#1, to-check=0/1)
-[2014-05-25 21:45:56 CEST] Pusher: Syncing with diskstation 
-
-sent 6263059 bytes  received 42 bytes  2505240.40 bytes/sec
-total size is 6262129  speedup is 1.00
-[2014-05-25 21:45:56 CEST] Transferrer: Uploaded 97_stacki..oshop.mp4
-
-WORM-s9298049-m1398385793--Learning SketchUp 2013%96_export-display-options.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5177344  55%    4.84MB/s    0:00:00
-remote: merge git-annex      8519680  91%    4.01MB/s    0:00:00
-     9298049 100%    3.97MB/s    0:00:02 (xfer#1, to-check=0/1)
-[2014-05-25 21:46:00 CEST] RemoteControl: Syncing with diskstation 
-
-sent 9299341 bytes  received 42 bytes  2656966.57 bytes/sec
-total size is 9298049  speedup is 1.00
-[2014-05-25 21:46:00 CEST] Transferrer: Uploaded 96_export..tions.mp4
-
-WORM-s7895136-m1398385533--Learning SketchUp 2013%95_add-final-touches.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   60c1e82..f08968c  git-annex -> synced/git-annex
-     4325376  54%    4.06MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   3261510..c9b4dc3  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at f08968c15cbe86c49c1fb71f22f578ad7cecd680 but expected 60c1e827e829b642d4618889b425c0bfc259b2c9
- ! 60c1e82..f08968c  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:46:02 CEST] RemoteControl: Syncing with diskstation 
-     7895136 100%    3.99MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 7896251 bytes  received 42 bytes  2256083.71 bytes/sec
-total size is 7895136  speedup is 1.00
-[2014-05-25 21:46:03 CEST] Transferrer: Uploaded 95_add-fi..uches.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c9b4dc3..78519cd  git-annex  -> diskstation/git-annex
-
-WORM-s13569035-m1398385318--Learning SketchUp 2013%94_animation-options.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5373952  39%    5.00MB/s    0:00:01
-[2014-05-25 21:46:05 CEST] Pusher: Syncing with diskstation 
-     9437184  69%    4.45MB/s    0:00:00
-    13565952  99%    4.26MB/s    0:00:00
-    13569035 100%    4.26MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 13570847 bytes  received 42 bytes  3015753.11 bytes/sec
-total size is 13569035  speedup is 1.00
-[2014-05-25 21:46:07 CEST] Transferrer: Uploaded 94_animat..tions.mp4
-
-WORM-s8278464-m1398386213--Learning SketchUp 2013%93_collada-files.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5341184  64%    4.98MB/s    0:00:00
-     8278464 100%    4.37MB/s    0:00:01 (xfer#1, to-check=0/1)
-[2014-05-25 21:46:10 CEST] RemoteControl: Syncing with diskstation 
-
-sent 8279623 bytes  received 42 bytes  2365618.57 bytes/sec
-total size is 8278464  speedup is 1.00
-[2014-05-25 21:46:10 CEST] Transferrer: Uploaded 93_collad..files.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f08968c..f99a466  git-annex -> synced/git-annex
-
-WORM-s8934010-m1398386414--Learning SketchUp 2013%92_kmz-for-google-earth.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4784128  53%    4.43MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   78519cd..e30d06f  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at f99a466d7568addbbc99cb058f66a2c03c571fba but expected f08968c15cbe86c49c1fb71f22f578ad7cecd680
- ! f08968c..f99a466  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     8934010 100%    4.24MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 8935256 bytes  received 42 bytes  2552942.29 bytes/sec
-total size is 8934010  speedup is 1.00
-[2014-05-25 21:46:13 CEST] Transferrer: Uploaded 92_kmz-fo..earth.mp4
-
-WORM-s9716042-m1398384915--Learning SketchUp 2013%91_dwg-elevation-and-plan-pro-feature.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5341184  54%    5.00MB/s    0:00:00
-[2014-05-25 21:46:15 CEST] Pusher: Syncing with diskstation 
-     9371648  96%    4.39MB/s    0:00:00
-     9716042 100%    4.44MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 9717398 bytes  received 42 bytes  2776411.43 bytes/sec
-total size is 9716042  speedup is 1.00
-[2014-05-25 21:46:16 CEST] Transferrer: Uploaded 91_dwg-el..ature.mp4
-
-WORM-s14343030-m1398386888--Learning SketchUp 2013%90_jpeg-and-png-files.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5079040  35%    4.81MB/s    0:00:01
-     9535488  66%    4.50MB/s    0:00:01
-[2014-05-25 21:46:19 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f99a466..af84b87  git-annex -> synced/git-annex
-    13565952  94%    4.25MB/s    0:00:00
-    14343030 100%    3.99MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 14344935 bytes  received 42 bytes  2608177.64 bytes/sec
-total size is 14343030  speedup is 1.00
-[2014-05-25 21:46:21 CEST] Transferrer: Uploaded 90_jpeg-a..files.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e30d06f..c6bcde6  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at af84b876d0902aa7da89ca414becf5b9d98d8a19 but expected f99a466d7568addbbc99cb058f66a2c03c571fba
- ! f99a466..af84b87  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s10692771-m1398385558--Learning SketchUp 2013%89_creating-the-animation.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5341184  49%    4.94MB/s    0:00:01
-[2014-05-25 21:46:23 CEST] Pusher: Syncing with diskstation 
-     9535488  89%    4.43MB/s    0:00:00
-    10692771 100%    4.41MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 10694236 bytes  received 42 bytes  3055508.00 bytes/sec
-total size is 10692771  speedup is 1.00
-[2014-05-25 21:46:24 CEST] Transferrer: Uploaded 89_creati..ation.mp4
-
-WORM-s14320839-m1398385514--Learning SketchUp 2013%88_creating-a-group.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5308416  37%    5.02MB/s    0:00:01
-remote: merge git-annex      9469952  66%    4.47MB/s    0:00:01
-    13631488  95%    4.28MB/s    0:00:00
-    14320839 100%    4.31MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 14322742 bytes  received 42 bytes  3182840.89 bytes/sec
-total size is 14320839  speedup is 1.00
-[2014-05-25 21:46:28 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:46:28 CEST] Transferrer: Uploaded 88_creati..group.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   af84b87..7f1137a  git-annex -> synced/git-annex
-
-WORM-s20730987-m1398385414--Learning SketchUp 2013%87_section-cut-for-interior-elevations.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5341184  25%    4.91MB/s    0:00:03
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c6bcde6..a8341a2  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 7f1137a28d8b17c5cdc10e856578da6337d1143c but expected af84b876d0902aa7da89ca414becf5b9d98d8a19
- ! af84b87..7f1137a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     9371648  45%    4.38MB/s    0:00:02
-    13860864  66%    4.33MB/s    0:00:01
-[2014-05-25 21:46:33 CEST] Pusher: Syncing with diskstation 
-    18055168  87%    4.23MB/s    0:00:00
-    20730987 100%    4.19MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 20733689 bytes  received 42 bytes  3189804.77 bytes/sec
-total size is 20730987  speedup is 1.00
-[2014-05-25 21:46:35 CEST] Transferrer: Uploaded 87_sectio..tions.mp4
-
-WORM-s21661288-m1398385144--Learning SketchUp 2013%86_scenes-for-animation.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5177344  23%    4.89MB/s    0:00:03
-     9404416  43%    4.46MB/s    0:00:02
-[2014-05-25 21:46:38 CEST] RemoteControl: Syncing with diskstation 
-    13631488  62%    4.28MB/s    0:00:01
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7f1137a..9338de4  git-annex -> synced/git-annex
-    17170432  79%    4.04MB/s    0:00:01
-    20905984  96%    3.69MB/s    0:00:00
-    21661288 100%    3.90MB/s    0:00:05 (xfer#1, to-check=0/1)
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a8341a2..72c4e65  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 9338de4e5a82415622d40ef588287666f8757fc0 but expected 7f1137a28d8b17c5cdc10e856578da6337d1143c
- ! 7f1137a..9338de4  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-sent 21664091 bytes  received 42 bytes  3332943.54 bytes/sec
-total size is 21661288  speedup is 1.00
-[2014-05-25 21:46:41 CEST] Transferrer: Uploaded 86_scenes..ation.mp4
-
-WORM-s23994784-m1398385930--Learning SketchUp 2013%85_styles.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5177344  21%    4.83MB/s    0:00:03
-[2014-05-25 21:46:42 CEST] Pusher: Syncing with diskstation 
-     9371648  39%    4.39MB/s    0:00:03
-    13565952  56%    4.26MB/s    0:00:02
-    17661952  73%    4.17MB/s    0:00:01
-remote: merge git-annex     21856256  91%    3.94MB/s    0:00:00
-    23994784 100%    4.08MB/s    0:00:05 (xfer#1, to-check=0/1)
-
-sent 23997857 bytes  received 42 bytes  3691984.46 bytes/sec
-total size is 23994784  speedup is 1.00
-[2014-05-25 21:46:48 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:46:48 CEST] Transferrer: Uploaded 85_styles.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   9338de4..47c3025  git-annex -> synced/git-annex
-
-WORM-s9421737-m1398386334--Learning SketchUp 2013%84_creating-scenes-and-updating.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4128768  43%    3.80MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   72c4e65..3862dfd  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 47c3025b26597ab96c6553b17d40df2473761367 but expected 9338de4e5a82415622d40ef588287666f8757fc0
- ! 9338de4..47c3025  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     7045120  74%    3.29MB/s    0:00:00
-     9421737 100%    3.42MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 9423051 bytes  received 42 bytes  2094020.67 bytes/sec
-total size is 9421737  speedup is 1.00
-[2014-05-25 21:46:52 CEST] Transferrer: Uploaded 84_creati..ating.mp4
-
-WORM-s15890796-m1398387058--Learning SketchUp 2013%83_add-solar-panels-with-skelion-plugin.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3932160  24%    3.64MB/s    0:00:03
-[2014-05-25 21:46:54 CEST] Pusher: Syncing with diskstation 
-     8093696  50%    3.80MB/s    0:00:02
-    11304960  71%    3.54MB/s    0:00:01
-    14516224  91%    3.40MB/s    0:00:00
-    15890796 100%    3.45MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 15892907 bytes  received 42 bytes  2889627.09 bytes/sec
-total size is 15890796  speedup is 1.00
-[2014-05-25 21:46:58 CEST] Transferrer: Uploaded 83_add-so..lugin.mp4
-remote: merge git-annex 
-WORM-s9278449-m1398386852--Learning SketchUp 2013%82_using-3d-text.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5439488  58%    5.07MB/s    0:00:00
-     9278449 100%    4.51MB/s    0:00:01 (xfer#1, to-check=0/1)
-[2014-05-25 21:47:00 CEST] RemoteControl: Syncing with diskstation 
-
-sent 9279732 bytes  received 42 bytes  3711909.60 bytes/sec
-total size is 9278449  speedup is 1.00
-[2014-05-25 21:47:00 CEST] Transferrer: Uploaded 82_using-..-text.mp4
-
-WORM-s11983231-m1398385259--Learning SketchUp 2013%81_get-photo-google-street-view.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   47c3025..a7b0dc9  git-annex -> synced/git-annex
-     5079040  42%    4.63MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   3862dfd..5f94bb2  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at a7b0dc9c64973369eb06a57d14ed6e64ec20fa07 but expected 47c3025b26597ab96c6553b17d40df2473761367
- ! 47c3025..a7b0dc9  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:47:03 CEST] RemoteControl: Syncing with diskstation 
-     9404416  78%    4.32MB/s    0:00:00
-    11983231 100%    4.36MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 11984858 bytes  received 42 bytes  2663311.11 bytes/sec
-total size is 11983231  speedup is 1.00
-[2014-05-25 21:47:04 CEST] Transferrer: Uploaded 81_get-ph..-view.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5f94bb2..521740c  git-annex  -> diskstation/git-annex
-
-WORM-s10154793-m1398385298--Learning SketchUp 2013%80_adding-context.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5242880  51%    4.94MB/s    0:00:00
-[2014-05-25 21:47:06 CEST] Pusher: Syncing with diskstation 
-     9437184  92%    4.40MB/s    0:00:00
-    10154793 100%    4.41MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 10156182 bytes  received 42 bytes  2901778.29 bytes/sec
-total size is 10154793  speedup is 1.00
-[2014-05-25 21:47:07 CEST] Transferrer: Uploaded 80_adding..ntext.mp4
-
-WORM-s15455988-m1398386244--Learning SketchUp 2013%79_creating-the-front-facade.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5308416  34%    4.93MB/s    0:00:02
-remote: merge git-annex      9306112  60%    4.38MB/s    0:00:01
-    12124160  78%    3.73MB/s    0:00:00
-[2014-05-25 21:47:12 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a7b0dc9..7a6f85f  git-annex -> synced/git-annex
-    13434880  86%    3.11MB/s    0:00:00
-    15455988 100%    3.14MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 15458036 bytes  received 42 bytes  2810559.64 bytes/sec
-total size is 15455988  speedup is 1.00
-[2014-05-25 21:47:13 CEST] Transferrer: Uploaded 79_creati..acade.mp4
-
-WORM-s7511926-m1398385903--Learning SketchUp 2013%78_reset-axis-to-align-building.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   521740c..57437fb  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 7a6f85f7864920fbcac361f47558fc352f1d2d16 but expected a7b0dc9c64973369eb06a57d14ed6e64ec20fa07
- ! a7b0dc9..7a6f85f  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     4554752  60%    4.27MB/s    0:00:00
-     7511926 100%    4.13MB/s    0:00:01 (xfer#1, to-check=0/1)
-[2014-05-25 21:47:16 CEST] Pusher: Syncing with diskstation 
-
-sent 7513008 bytes  received 42 bytes  2146585.71 bytes/sec
-total size is 7511926  speedup is 1.00
-[2014-05-25 21:47:16 CEST] Transferrer: Uploaded 78_reset-..lding.mp4
-
-WORM-s9197360-m1398386099--Learning SketchUp 2013%77_setting-the-building-in-place-geolocation.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4521984  49%    4.04MB/s    0:00:01
-remote: merge git-annex      7962624  86%    3.66MB/s    0:00:00
-     9197360 100%    3.73MB/s    0:00:02 (xfer#1, to-check=0/1)
-[2014-05-25 21:47:21 CEST] RemoteControl: Syncing with diskstation 
-
-sent 9198659 bytes  received 42 bytes  2628200.29 bytes/sec
-total size is 9197360  speedup is 1.00
-[2014-05-25 21:47:21 CEST] Transferrer: Uploaded 77_settin..ation.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7a6f85f..7457693  git-annex -> synced/git-annex
-
-WORM-s11971891-m1398387083--Learning SketchUp 2013%76_creating-the-exterior.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4784128  39%    4.52MB/s    0:00:01
-     8355840  69%    3.95MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   57437fb..394b254  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 7457693b085f06be2a38cfaafb7c76b34eb62960 but expected 7a6f85f7864920fbcac361f47558fc352f1d2d16
- ! 7a6f85f..7457693  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    11971891 100%    4.15MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 11973511 bytes  received 42 bytes  3421015.14 bytes/sec
-total size is 11971891  speedup is 1.00
-[2014-05-25 21:47:25 CEST] Transferrer: Uploaded 76_creati..erior.mp4
-[2014-05-25 21:47:26 CEST] Pusher: Syncing with diskstation 
-
-WORM-s6407146-m1398386568--Learning SketchUp 2013%75_saving-and-placing-into-the-model.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4390912  68%    4.14MB/s    0:00:00
-     6324224  98%    2.99MB/s    0:00:00
-     6407146 100%    3.02MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 6408097 bytes  received 42 bytes  1830896.86 bytes/sec
-total size is 6407146  speedup is 1.00
-[2014-05-25 21:47:28 CEST] Transferrer: Uploaded 75_saving..model.mp4
-
-WORM-s8962345-m1398386088--Learning SketchUp 2013%74_adding-detail-chapter-13.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5144576  57%    4.78MB/s    0:00:00
-     8962345 100%    4.67MB/s    0:00:01 (xfer#1, to-check=0/1)
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-
-sent 8963599 bytes  received 42 bytes  2561040.29 bytes/sec
-total size is 8962345  speedup is 1.00
-   7457693..ea4b518  git-annex -> synced/git-annex
-[2014-05-25 21:47:31 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:47:31 CEST] Transferrer: Uploaded 74_adding..er-13.mp4
-
-WORM-s7160845-m1398385888--Learning SketchUp 2013%73_applying-textures.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4816896  67%    4.45MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   394b254..c52b780  git-annex  -> diskstation/git-annex
-     7160845 100%    4.44MB/s    0:00:01 (xfer#1, to-check=0/1)
-
-sent 7161872 bytes  received 42 bytes  2046261.14 bytes/sec
-total size is 7160845  speedup is 1.00
-[2014-05-25 21:47:34 CEST] Transferrer: Uploaded 73_applyi..tures.mp4
-
-WORM-s11661338-m1398385993--Learning SketchUp 2013%72_creating-the-massing-model.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:47:35 CEST] Pusher: Syncing with diskstation 
-     5341184  45%    4.97MB/s    0:00:01
-     8028160  68%    3.71MB/s    0:00:00
-     9601024  82%    2.97MB/s    0:00:00
-    11661338 100%    3.00MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 11662923 bytes  received 42 bytes  2120539.09 bytes/sec
-total size is 11661338  speedup is 1.00
-[2014-05-25 21:47:39 CEST] Transferrer: Uploaded 72_creati..model.mp4
-
-WORM-s18351413-m1398385439--Learning SketchUp 2013%71_setting-up-to-match-a-new-photo.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      4816896  26%    4.56MB/s    0:00:02
-     8945664  48%    4.23MB/s    0:00:02
-[2014-05-25 21:47:42 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ea4b518..d1f5994  git-annex -> synced/git-annex
-    13467648  73%    4.25MB/s    0:00:01
-    17104896  93%    4.04MB/s    0:00:00
-    18351413 100%    4.03MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 18353823 bytes  received 42 bytes  3337066.36 bytes/sec
-total size is 18351413  speedup is 1.00
-[2014-05-25 21:47:44 CEST] Transferrer: Uploaded 71_settin..photo.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c52b780..c25cca9  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at d1f5994466b35d4c32ad5a9bbb9dd071e461e3e2 but expected ea4b518d3f3234433b2819aa9965b5613366f1bb
- ! ea4b518..d1f5994  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s13344990-m1398385353--Learning SketchUp 2013%70_creating-a-library.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3506176  26%    3.17MB/s    0:00:03
-[2014-05-25 21:47:47 CEST] Pusher: Syncing with diskstation 
-     6914048  51%    3.20MB/s    0:00:01
-    11337728  84%    3.52MB/s    0:00:00
-    13344990 100%    3.56MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 13346775 bytes  received 42 bytes  2426694.00 bytes/sec
-total size is 13344990  speedup is 1.00
-[2014-05-25 21:47:49 CEST] Transferrer: Uploaded 70_creati..brary.mp4
-
-WORM-s9842222-m1398386008--Learning SketchUp 2013%69_using-the-podium-browser.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5275648  53%    4.88MB/s    0:00:00
-     8323072  84%    3.89MB/s    0:00:00
-     9842222 100%    3.92MB/s    0:00:02 (xfer#1, to-check=0/1)
-[2014-05-25 21:47:52 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   d1f5994..33198fa  git-annex -> synced/git-annex
-
-sent 9843584 bytes  received 42 bytes  2812464.57 bytes/sec
-total size is 9842222  speedup is 1.00
-[2014-05-25 21:47:53 CEST] Transferrer: Uploaded 69_using-..owser.mp4
-
-WORM-s11662587-m1398385968--Learning SketchUp 2013%68_using-form-fonts.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4653056  39%    4.33MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c25cca9..2496e60  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 33198fa7a8195245180bb53efbdec32359506368 but expected d1f5994466b35d4c32ad5a9bbb9dd071e461e3e2
- ! d1f5994..33198fa  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     9437184  80%    4.41MB/s    0:00:00
-    11662587 100%    4.32MB/s    0:00:02 (xfer#1, to-check=0/1)
-[2014-05-25 21:47:57 CEST] Pusher: Syncing with diskstation 
-
-sent 11664162 bytes  received 42 bytes  3332629.71 bytes/sec
-total size is 11662587  speedup is 1.00
-[2014-05-25 21:47:57 CEST] Transferrer: Uploaded 68_using-..fonts.mp4
-
-WORM-s8289672-m1398385702--Learning SketchUp 2013%67_using-the-3d-warehouse.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5439488  65%    4.99MB/s    0:00:00
-remote: merge git-annex      8289672 100%    4.48MB/s    0:00:01 (xfer#1, to-check=0/1)
-[2014-05-25 21:48:00 CEST] RemoteControl: Syncing with diskstation 
-
-sent 8290840 bytes  received 42 bytes  3316352.80 bytes/sec
-total size is 8289672  speedup is 1.00
-[2014-05-25 21:48:00 CEST] Transferrer: Uploaded 67_using-..house.mp4
-
-WORM-s12841748-m1398385284--Learning SketchUp 2013%66_adding-the-fridge-and-sink.mp4
-       32768   0%    0.00kB/s    0:00:00
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   33198fa..f4258a2  git-annex -> synced/git-annex
-     3899392  30%    3.62MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   2496e60..8f91b25  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at f4258a2cd12ee4f23f3a9c9b9c635b9d59075f21 but expected 33198fa7a8195245180bb53efbdec32359506368
- ! 33198fa..f4258a2  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:48:03 CEST] RemoteControl: Syncing with diskstation 
-     7897088  61%    3.69MB/s    0:00:01
-    11698176  91%    3.66MB/s    0:00:00
-    12841748 100%    3.72MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 12843477 bytes  received 42 bytes  2335185.27 bytes/sec
-total size is 12841748  speedup is 1.00
-[2014-05-25 21:48:05 CEST] Transferrer: Uploaded 66_adding..-sink.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   8f91b25..c4dc443  git-annex  -> diskstation/git-annex
-
-WORM-s15640646-m1398385334--Learning SketchUp 2013%65_adding-appliances.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5505024  35%    5.08MB/s    0:00:01
-[2014-05-25 21:48:07 CEST] Pusher: Syncing with diskstation 
-     9601024  61%    4.50MB/s    0:00:01
-    13860864  88%    4.32MB/s    0:00:00
-    15640646 100%    4.28MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 15642710 bytes  received 42 bytes  3476167.11 bytes/sec
-total size is 15640646  speedup is 1.00
-[2014-05-25 21:48:09 CEST] Transferrer: Uploaded 65_adding..ances.mp4
-
-WORM-s14906076-m1398385849--Learning SketchUp 2013%64_adding-materials.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      4620288  30%    4.38MB/s    0:00:02
-[2014-05-25 21:48:12 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   f4258a2..89ce825  git-annex -> synced/git-annex
-     7700480  51%    3.61MB/s    0:00:01
-    10649600  71%    3.30MB/s    0:00:01
-    13467648  90%    3.13MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c4dc443..6fdf232  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 89ce825f4a57b9bc5490b2c0f7dc77e9b3cf0016 but expected f4258a2cd12ee4f23f3a9c9b9c635b9d59075f21
- ! f4258a2..89ce825  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    14906076 100%    3.07MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 14908047 bytes  received 42 bytes  2293552.15 bytes/sec
-total size is 14906076  speedup is 1.00
-[2014-05-25 21:48:15 CEST] Transferrer: Uploaded 64_adding..rials.mp4
-
-WORM-s9700735-m1398385733--Learning SketchUp 2013%63_creating-the-countertop.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4554752  46%    4.18MB/s    0:00:01
-[2014-05-25 21:48:17 CEST] Pusher: Syncing with diskstation 
-     7569408  78%    3.53MB/s    0:00:00
-     9700735 100%    3.40MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 9702080 bytes  received 42 bytes  2156027.11 bytes/sec
-total size is 9700735  speedup is 1.00
-[2014-05-25 21:48:19 CEST] Transferrer: Uploaded 63_creati..ertop.mp4
-
-WORM-s15089043-m1398386778--Learning SketchUp 2013%62_cabinet-doors.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      4456448  29%    4.05MB/s    0:00:02
-     7340032  48%    3.36MB/s    0:00:02
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   89ce825..be1967a  git-annex -> synced/git-annex
-[2014-05-25 21:48:22 CEST] RemoteControl: Syncing with diskstation 
-    10223616  67%    3.12MB/s    0:00:01
-    13369344  88%    3.08MB/s    0:00:00
-    15089043 100%    3.02MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 15091035 bytes  received 42 bytes  2321704.15 bytes/sec
-total size is 15089043  speedup is 1.00
-[2014-05-25 21:48:25 CEST] Transferrer: Uploaded 62_cabine..doors.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   6fdf232..5d94435  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at be1967a15a951b38c76e4e8f674812a01df4c8c8 but expected 89ce825f4a57b9bc5490b2c0f7dc77e9b3cf0016
- ! 89ce825..be1967a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s10872872-m1398384973--Learning SketchUp 2013%61_wall-cabinets.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4194304  38%    3.90MB/s    0:00:01
-[2014-05-25 21:48:27 CEST] Pusher: Syncing with diskstation 
-     7208960  66%    3.34MB/s    0:00:01
-    10190848  93%    3.16MB/s    0:00:00
-    10872872 100%    3.14MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 10874348 bytes  received 42 bytes  2416531.11 bytes/sec
-total size is 10872872  speedup is 1.00
-remote: merge git-annex [2014-05-25 21:48:29 CEST] Transferrer: Uploaded 61_wall-c..inets.mp4
-
-WORM-s14169006-m1398385488--Learning SketchUp 2013%60_base-cabinets.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4292608  30%    3.96MB/s    0:00:02
-[2014-05-25 21:48:31 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   be1967a..0c0e83a  git-annex -> synced/git-annex
-     7143424  50%    3.29MB/s    0:00:02
-    10289152  72%    3.16MB/s    0:00:01
-    13139968  92%    3.03MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   5d94435..c7aef43  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 0c0e83a4b729ed1ef86e4854405ec752226bbd09 but expected be1967a15a951b38c76e4e8f674812a01df4c8c8
- ! be1967a..0c0e83a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    14169006 100%    3.08MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 14170886 bytes  received 42 bytes  2180142.77 bytes/sec
-total size is 14169006  speedup is 1.00
-[2014-05-25 21:48:35 CEST] Transferrer: Uploaded 60_base-c..inets.mp4
-[2014-05-25 21:48:35 CEST] Pusher: Syncing with diskstation 
-
-WORM-s13699702-m1398385658--Learning SketchUp 2013%59_adding-textures.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4063232  29%    3.80MB/s    0:00:02
-remote: merge git-annex      7503872  54%    3.54MB/s    0:00:01
-    11599872  84%    3.65MB/s    0:00:00
-    13699702 100%    3.75MB/s    0:00:03 (xfer#1, to-check=0/1)
-[2014-05-25 21:48:41 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   0c0e83a..cd5b9c0  git-annex -> synced/git-annex
-
-sent 13701528 bytes  received 42 bytes  3044793.33 bytes/sec
-total size is 13699702  speedup is 1.00
-[2014-05-25 21:48:42 CEST] Transferrer: Uploaded 59_adding..tures.mp4
-
-WORM-s10444949-m1398386483--Learning SketchUp 2013%58_mantle-support.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5177344  49%    4.89MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c7aef43..e499593  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at cd5b9c01988d7c7b10730356ed55cc8b1422ce52 but expected 0c0e83a4b729ed1ef86e4854405ec752226bbd09
- ! 0c0e83a..cd5b9c0  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     9175040  87%    4.34MB/s    0:00:00
-    10444949 100%    3.92MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 10446374 bytes  received 42 bytes  2984690.29 bytes/sec
-total size is 10444949  speedup is 1.00
-[2014-05-25 21:48:46 CEST] Transferrer: Uploaded 58_mantle..pport.mp4
-[2014-05-25 21:48:46 CEST] Pusher: Syncing with diskstation 
-
-WORM-s24021797-m1398385079--Learning SketchUp 2013%57_mantle-columns.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5079040  21%    4.81MB/s    0:00:03
-     9011200  37%    4.25MB/s    0:00:03
-    13041664  54%    4.09MB/s    0:00:02
-remote: merge git-annex     17006592  70%    3.97MB/s    0:00:01
-    20643840  85%    3.61MB/s    0:00:00
-[2014-05-25 21:48:52 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   cd5b9c0..7f4755f  git-annex -> synced/git-annex
-    23887872  99%    3.44MB/s    0:00:00
-    24021797 100%    3.69MB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 24024882 bytes  received 42 bytes  3203323.20 bytes/sec
-total size is 24021797  speedup is 1.00
-[2014-05-25 21:48:53 CEST] Transferrer: Uploaded 57_mantle..lumns.mp4
-
-WORM-s20301926-m1398385822--Learning SketchUp 2013%56_building-the-mantle.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e499593..a7e1df5  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 7f4755fe1b2fbe86253a5854d83948a479df1302 but expected cd5b9c01988d7c7b10730356ed55cc8b1422ce52
- ! cd5b9c0..7f4755f  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     4358144  21%    4.07MB/s    0:00:03
-[2014-05-25 21:48:55 CEST] Pusher: Syncing with diskstation 
-     7241728  35%    3.34MB/s    0:00:03
-    10125312  49%    3.14MB/s    0:00:03
-    13271040  65%    3.10MB/s    0:00:02
-remote: merge git-annex     16154624  79%    2.73MB/s    0:00:01
-    18972672  93%    2.74MB/s    0:00:00
-[2014-05-25 21:49:00 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   7f4755f..367f02c  git-annex -> synced/git-annex
-    20301926 100%    2.92MB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 20304560 bytes  received 42 bytes  2388776.71 bytes/sec
-total size is 20301926  speedup is 1.00
-[2014-05-25 21:49:01 CEST] Transferrer: Uploaded 56_buildi..antle.mp4
-
-WORM-s15278630-m1398386298--Learning SketchUp 2013%55_starting-at-the-base.mp4
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a7e1df5..200c73f  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 367f02ceec6d27fdb719156715a8a24a9f0cc149 but expected 7f4755fe1b2fbe86253a5854d83948a479df1302
- ! 7f4755f..367f02c  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     4653056  30%    4.41MB/s    0:00:02
-     7733248  50%    3.61MB/s    0:00:02
-[2014-05-25 21:49:04 CEST] Pusher: Syncing with diskstation 
-    10616832  69%    3.32MB/s    0:00:01
-    13500416  88%    3.14MB/s    0:00:00
-    15278630 100%    3.14MB/s    0:00:04 (xfer#1, to-check=0/1)
-remote: merge git-annex 
-sent 15280653 bytes  received 42 bytes  2350876.15 bytes/sec
-total size is 15278630  speedup is 1.00
-[2014-05-25 21:49:07 CEST] Transferrer: Uploaded 55_starti..-base.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   367f02c..e9cb764  git-annex -> synced/git-annex
-
-WORM-s17900868-m1398386914--Learning SketchUp 2013%54_using-the-window-feature.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:49:08 CEST] RemoteControl: Syncing with diskstation 
-     4718592  26%    4.44MB/s    0:00:02
-     8290304  46%    3.92MB/s    0:00:02
-    12189696  68%    3.85MB/s    0:00:01
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   200c73f..e2eb7b5  git-annex  -> diskstation/git-annex
-    16482304  92%    3.88MB/s    0:00:00
-    17900868 100%    3.91MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 17903215 bytes  received 42 bytes  2754347.23 bytes/sec
-total size is 17900868  speedup is 1.00
-[2014-05-25 21:49:13 CEST] Pusher: Syncing with diskstation 
-[2014-05-25 21:49:13 CEST] Transferrer: Uploaded 54_using-..ature.mp4
-
-WORM-s13516185-m1398386734--Learning SketchUp 2013%53_creating-walls-and-door-openings.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5242880  38%    4.94MB/s    0:00:01
-     9273344  68%    4.36MB/s    0:00:00
-remote: merge git-annex     13369344  98%    4.17MB/s    0:00:00
-    13516185 100%    4.17MB/s    0:00:03 (xfer#1, to-check=0/1)
-[2014-05-25 21:49:18 CEST] RemoteControl: Syncing with diskstation 
-
-sent 13518004 bytes  received 42 bytes  3004010.22 bytes/sec
-total size is 13516185  speedup is 1.00
-[2014-05-25 21:49:18 CEST] Transferrer: Uploaded 53_creati..nings.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-
-WORM-s18590095-m1398385163--Learning SketchUp 2013%52_installing-bit-tools-plugins.mp4
-   e9cb764..c7f1783  git-annex -> synced/git-annex
-       32768   0%    0.00kB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   e2eb7b5..ff506d2  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at c7f178361d32682b60332b5c508a3ce0aec3925c but expected e9cb7644b684d418952b4132c725211eb045b260
- ! e9cb764..c7f1783  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-[2014-05-25 21:49:19 CEST] RemoteControl: Syncing with diskstation 
-     4259840  22%    3.88MB/s    0:00:03
-     6684672  35%    3.09MB/s    0:00:03
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ff506d2..ff2bd4c  git-annex  -> diskstation/git-annex
-    10813440  58%    3.36MB/s    0:00:02
-[2014-05-25 21:49:23 CEST] Pusher: Syncing with diskstation 
-    14876672  80%    3.46MB/s    0:00:01
-    18590095 100%    3.53MB/s    0:00:05 (xfer#1, to-check=0/1)
-
-sent 18592530 bytes  received 42 bytes  2860395.69 bytes/sec
-total size is 18590095  speedup is 1.00
-[2014-05-25 21:49:24 CEST] Transferrer: Uploaded 52_instal..ugins.mp4
-
-WORM-s28284719-m1398385600--Learning SketchUp 2013%51_double-hung-windows.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5046272  17%    4.72MB/s    0:00:04
-remote: merge git-annex      9076736  32%    4.27MB/s    0:00:04
-    13303808  47%    4.16MB/s    0:00:03
-[2014-05-25 21:49:29 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   c7f1783..a39803a  git-annex -> synced/git-annex
-    16711680  59%    3.89MB/s    0:00:02
-    18841600  66%    3.14MB/s    0:00:02
-    21331968  75%    2.78MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   ff2bd4c..338767b  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at a39803aef5ce739ae6a6472a7de156efac31bebc but expected c7f178361d32682b60332b5c508a3ce0aec3925c
- ! c7f1783..a39803a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    26050560  92%    2.89MB/s    0:00:00
-    28284719 100%    3.45MB/s    0:00:07 (xfer#1, to-check=0/1)
-
-sent 28288329 bytes  received 42 bytes  2977723.26 bytes/sec
-total size is 28284719  speedup is 1.00
-[2014-05-25 21:49:34 CEST] Transferrer: Uploaded 51_double..ndows.mp4
-
-WORM-s16987083-m1398385579--Learning SketchUp 2013%50_creating-the-front-window-frame.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:49:35 CEST] Pusher: Syncing with diskstation 
-     5144576  30%    4.85MB/s    0:00:02
-     9371648  55%    4.39MB/s    0:00:01
-    11468800  67%    3.58MB/s    0:00:01
-    15859712  93%    3.72MB/s    0:00:00
-    16987083 100%    3.75MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 16989325 bytes  received 42 bytes  3088975.82 bytes/sec
-total size is 16987083  speedup is 1.00
-[2014-05-25 21:49:39 CEST] Transferrer: Uploaded 50_creati..frame.mp4
-remote: merge git-annex 
-WORM-s19055363-m1398385037--Learning SketchUp 2013%49_creating-doors.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5013504  26%    4.68MB/s    0:00:02
-[2014-05-25 21:49:41 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   a39803a..8462dc1  git-annex -> synced/git-annex
-     9011200  47%    4.21MB/s    0:00:02
-    13041664  68%    4.05MB/s    0:00:01
-    16351232  85%    3.83MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   338767b..47c33b6  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 8462dc1c099c64ff94d5d35cb2f2efaff89b028e but expected a39803aef5ce739ae6a6472a7de156efac31bebc
- ! a39803a..8462dc1  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    19055363 100%    3.97MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 19057840 bytes  received 42 bytes  2931981.85 bytes/sec
-total size is 19055363  speedup is 1.00
-[2014-05-25 21:49:46 CEST] Pusher: Syncing with diskstation 
-[2014-05-25 21:49:46 CEST] Transferrer: Uploaded 49_creati..doors.mp4
-
-WORM-s11184398-m1398385463--Learning SketchUp 2013%48_review-of-components-and-nested-groups.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3375104  30%    2.72MB/s    0:00:02
-     5603328  50%    2.38MB/s    0:00:02
-remote: merge git-annex      9371648  83%    2.75MB/s    0:00:00
-    11184398 100%    2.89MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 11185939 bytes  received 42 bytes  2033814.73 bytes/sec
-total size is 11184398  speedup is 1.00
-[2014-05-25 21:49:52 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:49:52 CEST] Transferrer: Uploaded 48_review..roups.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   8462dc1..877c07a  git-annex -> synced/git-annex
-
-WORM-s19612237-m1398385719--Learning SketchUp 2013%47_adding-railing.mp4
-       32768   0%    0.00kB/s    0:00:00
-     3997696  20%    3.75MB/s    0:00:04
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   47c33b6..bb182f5  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 877c07ad78a25ddf859ac96049ec938fa9b0b5f3 but expected 8462dc1c099c64ff94d5d35cb2f2efaff89b028e
- ! 8462dc1..877c07a  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     8257536  42%    3.88MB/s    0:00:02
-    12845056  65%    4.02MB/s    0:00:01
-    17039360  86%    4.00MB/s    0:00:00
-[2014-05-25 21:49:57 CEST] Pusher: Syncing with diskstation 
-    19612237 100%    3.99MB/s    0:00:04 (xfer#1, to-check=0/1)
-
-sent 19614782 bytes  received 42 bytes  3017665.23 bytes/sec
-total size is 19612237  speedup is 1.00
-[2014-05-25 21:49:58 CEST] Transferrer: Uploaded 47_adding..iling.mp4
-
-WORM-s23427266-m1398386041--Learning SketchUp 2013%46_adding-spindles-with-move-and-copy.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4128768  17%    3.80MB/s    0:00:04
-remote: merge git-annex      7176192  30%    3.33MB/s    0:00:04
-    11304960  48%    3.53MB/s    0:00:03
-[2014-05-25 21:50:02 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   877c07a..873eda1  git-annex -> synced/git-annex
-    15138816  64%    3.53MB/s    0:00:02
-    18644992  79%    3.42MB/s    0:00:01
-    21135360  90%    3.29MB/s    0:00:00
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   bb182f5..470a1af  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 873eda1fd0b52f509bbd03a02ec5a3d6d8085488 but expected 877c07ad78a25ddf859ac96049ec938fa9b0b5f3
- ! 877c07a..873eda1  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-    23427266 100%    3.17MB/s    0:00:07 (xfer#1, to-check=0/1)
-
-sent 23430295 bytes  received 42 bytes  2756510.24 bytes/sec
-total size is 23427266  speedup is 1.00
-[2014-05-25 21:50:06 CEST] Transferrer: Uploaded 46_adding..-copy.mp4
-
-WORM-s28584390-m1398385775--Learning SketchUp 2013%45_making-a-unique-bottom-step.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:50:07 CEST] Pusher: Syncing with diskstation 
-     5472256  19%    4.96MB/s    0:00:04
-     9895936  34%    4.53MB/s    0:00:04
-    14221312  49%    4.40MB/s    0:00:03
-remote: merge git-annex     18055168  63%    4.21MB/s    0:00:02
-    22609920  79%    4.05MB/s    0:00:01
-[2014-05-25 21:50:12 CEST] RemoteControl: Syncing with diskstation 
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   873eda1..274fd99  git-annex -> synced/git-annex
-    26279936  91%    3.88MB/s    0:00:00
-    28584390 100%    4.06MB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 28588044 bytes  received 42 bytes  3363304.24 bytes/sec
-total size is 28584390  speedup is 1.00
-[2014-05-25 21:50:14 CEST] Transferrer: Uploaded 45_making..-step.mp4
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   470a1af..989e8b5  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at 274fd99803c01b7911e45dcb050480eb4bfe2a82 but expected 873eda1fd0b52f509bbd03a02ec5a3d6d8085488
- ! 873eda1..274fd99  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-
-WORM-s24162552-m1398385100--Learning SketchUp 2013%44_adding-riser-detail.mp4
-       32768   0%    0.00kB/s    0:00:00
-     5341184  22%    5.06MB/s    0:00:03
-[2014-05-25 21:50:17 CEST] Pusher: Syncing with diskstation 
-     9240576  38%    4.38MB/s    0:00:03
-    13959168  57%    4.38MB/s    0:00:02
-    18153472  75%    4.28MB/s    0:00:01
-remote: merge git-annex     22347776  92%    4.00MB/s    0:00:00
-    24162552 100%    4.15MB/s    0:00:05 (xfer#1, to-check=0/1)
-[2014-05-25 21:50:22 CEST] RemoteControl: Syncing with diskstation 
-
-sent 24165658 bytes  received 42 bytes  3222093.33 bytes/sec
-total size is 24162552  speedup is 1.00
-[2014-05-25 21:50:22 CEST] Transferrer: Uploaded 44_adding..etail.mp4
-(merging synced/git-annex into git-annex...)        
-remote: (Recording state in git...)        
-remote: ok        
-remote: (Recording state in git...)        
-To joern@annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   274fd99..baa9cda  git-annex -> synced/git-annex
-
-WORM-s14814183-m1398385868--Learning SketchUp 2013%43_creating-the-staircase.mp4
-       32768   0%    0.00kB/s    0:00:00
-     4947968  33%    4.69MB/s    0:00:02
-From annex.diskstation.local:/volume1/homes/joern/Annex.movies
-   989e8b5..c15470f  git-annex  -> diskstation/git-annex
-error: Ref refs/remotes/diskstation/synced/git-annex is at baa9cdae739f6bc1f928d9abe82c0f83b6645093 but expected 274fd99803c01b7911e45dcb050480eb4bfe2a82
- ! 274fd99..baa9cda  synced/git-annex -> diskstation/synced/git-annex  (unable to update local ref)
-     9011200  60%    4.25MB/s    0:00:01
-    13729792  92%    4.31MB/s    0:00:00
-    14814183 100%    4.30MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 14816152 bytes  received 42 bytes  2693853.45 bytes/sec
-total size is 14814183  speedup is 1.00
-[2014-05-25 21:50:27 CEST] Transferrer: Uploaded 43_creati..rcase.mp4
-
-WORM-s14506973-m1398386318--Learning SketchUp 2013%42_why-we-use-groups-and-components.mp4
-       32768   0%    0.00kB/s    0:00:00
-[2014-05-25 21:50:27 CEST] Pusher: Syncing with diskstation 
-     5341184  36%    5.04MB/s    0:00:01
-     9633792  66%    4.55MB/s    0:00:01
-    13926400  95%    4.37MB/s    0:00:00
-    14506973 100%    4.38MB/s    0:00:03 (xfer#1, to-check=0/1)
-
-sent 14508912 bytes  received 42 bytes  3224212.00 bytes/sec
-total size is 14506973  speedup is 1.00
-[2014-05-25 21:50:31 CEST] Transferrer: Uploaded 42_why-we..nents.mp4
-
-WORM-s11494983-m1398385388--Learning SketchUp 2013%41_copy-and-paste-in-place.mp4
-       32768   0%    0.00kB/s    0:00:00
-remote: merge git-annex      5210112  45%    4.82MB/s    0:00:01
-     9404416  81%    4.37MB/s    0:00:00
-    11494983 100%    4.21MB/s    0:00:02 (xfer#1, to-check=0/1)
-
-sent 11496545 bytes  received 42 bytes  3284739.14 bytes/sec
-total size is 11494983  speedup is 1.00
-[2014-05-25 21:50:34 CEST] RemoteControl: Syncing with diskstation 
-[2014-05-25 21:50:34 CEST] Transferrer: Uploaded 41_copy-a..place.mp4
-
-
-# End of transcript or log.
-"""]]
diff --git a/doc/bugs/gpg-agent/comment_1_86860841aaa38541968693ec02f6a506._comment b/doc/bugs/gpg-agent/comment_1_86860841aaa38541968693ec02f6a506._comment
deleted file mode 100644
--- a/doc/bugs/gpg-agent/comment_1_86860841aaa38541968693ec02f6a506._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.176"
- subject="comment 1"
- date="2014-05-30T19:15:33Z"
- content="""
-What I see in the log is git-annex is syncing files to/from the remote \"diskstation\". This remote is not encrypted at all, so git-annex is not using gpg. There is no mention of gpg in the log at all.
-
-So, I don't see any indication that whatever is causing too many gpg-agent processes to be spawned is git-annex. Can you share more information that would point toward git-annex being the cause of this problem?
-"""]]
diff --git a/doc/bugs/gpg_goes_to_100__37___cpu_on_bad_input_data.mdwn b/doc/bugs/gpg_goes_to_100__37___cpu_on_bad_input_data.mdwn
deleted file mode 100644
--- a/doc/bugs/gpg_goes_to_100__37___cpu_on_bad_input_data.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-### Please describe the problem.
-Bad input data given to gpg will make it lock.
-
-### What steps will reproduce the problem?
-Trying to download gpg encrypted data from remote with bad/incorrect data
-
-### What version of git-annex are you using? On what operating system?
-4.20130501-gd9e288b, on ubuntu 13.04
-
-### Please provide any additional information below.
-Transcript
-http://paste.ubuntu.com/5626517/
-
-Note: The problem is most likely caused by bad data from either the nntp hooks program, or the nntp server itself.
-
-I also have one file with bad data that consistently is NOT a problem for gpg to handle(lines 24-25 of log).
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/hPutChar_error_message_with_UTF-8_chars_above_7F_in_filenames.mdwn b/doc/bugs/hPutChar_error_message_with_UTF-8_chars_above_7F_in_filenames.mdwn
deleted file mode 100644
--- a/doc/bugs/hPutChar_error_message_with_UTF-8_chars_above_7F_in_filenames.mdwn
+++ /dev/null
@@ -1,80 +0,0 @@
-### Please describe the problem.
-
-When using `--incremental` together with `git annex fsck`, the error 
-message "hPutChar: invalid argument (invalid character)" appears in the 
-"Only X of Y trustworthy copies exist" message when the filename 
-contains an UTF-8 character above U+007F. The only locale in which this 
-doesn't happen is "C.UTF-8".
-
-### What steps will reproduce the problem?
-
-- Create and add a file with an UTF-8 character in the file name above U+007F to git-annex
-- Set `numcopies` high enough so `git annex fsck` will produce a warning about missing copies
-- Execute `git annex fsck --incremental`
-
-I've created two test scripts on 
-<https://gist.github.com/sunny256/ebf4d055f5500b257ed8> that demonstrate 
-this error:
-
-- `git clone https://gist.github.com/ebf4d055f5500b257ed8.git`
-- `cd ebf4d055f5500b257ed8`
-- `./runme`
-
-You can specify a locale to `runme` as `$1` to experiment with different 
-locales.
-
-There's also a `test-all-locales` script that executes `./runme` with 
-all defined locales on the computer. Both scripts return 1 if the error 
-message appears, if it's gone, 0 is returned.
-
-### What version of git-annex are you using? On what operating system?
-
-Newest git-annex amd64 (5.20150812) from `downloads.kitenet.net`.
-
-### Please provide any additional information below.
-
-The `runme` script contains more information about this issue.
-
-[[!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
-
-Here are two excerpts of the test output using the "C" and 
-"C.UTF-8" locale:
-
-$ ./runme C
-[snip]
-================== git annex --incremental fsck ==================
-fsck U00D8_Ø.txt (checksum...)
-
-  Only 1 of 2 trustworthy copies exist of U00D8_
-git-annex: <stderr>: hPutChar: invalid argument (invalid character)
-failed
-fsck ascii_only.txt (checksum...)
-
-  Only 1 of 2 trustworthy copies exist of ascii_only.txt
-  Back it up with git-annex copy.
-failed
-(recording state in git...)
-git-annex: fsck: 2 failed
-
-$ ./runme C.UTF-8
-[snip]
-================== git annex --incremental fsck ==================
-fsck U00D8_Ø.txt (checksum...)
-
-  Only 1 of 2 trustworthy copies exist of U00D8_Ø.txt
-  Back it up with git-annex copy.
-failed
-fsck ascii_only.txt (checksum...)
-
-  Only 1 of 2 trustworthy copies exist of ascii_only.txt
-  Back it up with git-annex copy.
-failed
-(recording state in git...)
-git-annex: fsck: 2 failed
-
-# End of transcript or log.
-"""]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/hash_changed.mdwn b/doc/bugs/hash_changed.mdwn
deleted file mode 100644
--- a/doc/bugs/hash_changed.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-### Please describe the problem.
-
-I ran `git annex fsck` on some files, and the fsck reported that hashes were incorrect and the files were moved.
-
-### What steps will reproduce the problem?
-
-I don't know.
-
-### What version of git-annex are you using? On what operating system?
-
-```
-git-annex version: 6.20160229
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-```
-
-on NixOS linux 64 bit - unstable channel
-
-### Please provide any additional information below.
-
-The problem was on several disks, different manufacturer, different disk size, etc. The fsck always transformed hashA -> hashB, so the hashes were equal before and after the fsck run on all disks, though the link to the "old" file was not fixed to point to the "new" file.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I use annex for years now, never had a problem with it. It is one of the most awesome pieces of software I've seen in the last 10 years, though I only use a really small part of it. Sometimes it bugs me a little that it consumes quite a lot of memory on large repositories, though most of the time this is not an issue for me.
-
-> I think this was not a bug in hashing, just a corrupted file that
-> spread to several repositories. More recent git-annex versions checksum
-> files after transfer so detect the problem. 
-> 
-> Since it was resolved to reporter's satisfaction, [[done]] --[[Joey]]
diff --git a/doc/bugs/hash_changed/comment_1_7ec190a665b50eefadff59949a576bbb._comment b/doc/bugs/hash_changed/comment_1_7ec190a665b50eefadff59949a576bbb._comment
deleted file mode 100644
--- a/doc/bugs/hash_changed/comment_1_7ec190a665b50eefadff59949a576bbb._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="mail@f1d77c48f528d8c7b885900281887e045ad5114e"
- nickname="mail"
- subject="Solution"
- date="2016-03-09T16:03:35Z"
- content="""
-The solution proposed by \"joeyh\" on irc was to remove the symlink (`git rm` it) and then move the actual file from .git/annex/bad back to the file and `git annex add` it again.
-
-Worked beautifully.
-"""]]
diff --git a/doc/bugs/high_cpu_usage_in_cat-file_and_webapp.mdwn b/doc/bugs/high_cpu_usage_in_cat-file_and_webapp.mdwn
deleted file mode 100644
--- a/doc/bugs/high_cpu_usage_in_cat-file_and_webapp.mdwn
+++ /dev/null
@@ -1,314 +0,0 @@
-### Please describe the problem.
-
-I've been running git-annex in the background for a few weeks now (my laptop is at home, occasionally gets suspended, but not for the past few days), and this morning (around 9:30am), I noticed I could hear its fan. Looking at CPU usage in htop, "git-annex webapp" was using ~18% and "git --git-dir=/home/flowblok/annex/.git --work-tree=/home/flowblok/annex -c core.bare=false cat-file --batch" was using ~46%.
-
-The repository is in direct mode.
-It has one remote which it copies to over the network with "annex-rsync-upload-options = --bwlimit 10".
-The last fsck ran at 4am, and finished (with one failure, which I can easily recover from) by 4:30am (I guess I should find out why it didn't notify me in any way).
-
-### What steps will reproduce the problem?
-
-Not a clue!
-Though hopefully I've given enough information below for you to figure out what went wrong: let me know if you need anything else.
-
-### What version of git-annex are you using? On what operating system?
-
-Debian Jessie
-
-$ uname -a
-Linux moash 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux
-
-$ git-annex version
-git-annex version: 5.20141125
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-
-### Please provide any additional information below.
-
-[[!format sh """
-# strace -p $PIDOF_GIT_CATFILE
-open("/home/flowblok/annex/.git/objects/04/13fe78e4f9b37348b5fd03cbe5eabdbcaec068", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=683, ...}) = 0
-mmap(NULL, 683, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 683)             = 0
-open("/home/flowblok/annex/.git/objects/c0/4c0a1d5b43f82c50cf095e42d28d74f0cfc494", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=132, ...}) = 0
-mmap(NULL, 132, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 132)             = 0
-brk(0x1b5b000)                          = 0x1b5b000
-open("/home/flowblok/annex/.git/objects/25/21eb645b1fcac7b6b55551114fe2d69e095896", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=70, ...}) = 0
-mmap(NULL, 70, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 70)              = 0
-write(1, "2521eb645b1fcac7b6b55551114fe2d6"..., 49) = 49
-open("/home/flowblok/annex/.git/objects/25/21eb645b1fcac7b6b55551114fe2d69e095896", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=70, ...}) = 0
-mmap(NULL, 70, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 70)              = 0
-open("/home/flowblok/annex/.git/objects/25/21eb645b1fcac7b6b55551114fe2d69e095896", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=70, ...}) = 0
-mmap(NULL, 70, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-write(1, "1435997202.486434s 0 5c33e13f-ed"..., 58) = 58
-munmap(0x7f9ead5a0000, 70)              = 0
-write(1, "\n", 1)                       = 1
-read(0, "refs/heads/git-annex:eec/e95/SHA"..., 4096) = 116
-lstat("/home/flowblok/annex/.git/refs/heads/git-annex", {st_mode=S_IFREG|0600, st_size=41, ...}) = 0
-open("/home/flowblok/annex/.git/refs/heads/git-annex", O_RDONLY) = 3
-read(3, "f9d2dc8d54151d01a27c7989a1fc7983"..., 255) = 41
-read(3, "", 214)                        = 0
-close(3)                                = 0
-lstat("/home/flowblok/annex/.git/refs/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/tags/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/heads/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex/HEAD", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-open("/home/flowblok/annex/.git/objects/f9/d2dc8d54151d01a27c7989a1fc798320034a69", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=207, ...}) = 0
-mmap(NULL, 207, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 207)             = 0
-open("/home/flowblok/annex/.git/objects/65/dd2889161d7002f1d5f94587ab9bd0746d6f61", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=98827, ...}) = 0
-mmap(NULL, 98827, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ea4c03000
-close(3)                                = 0
-brk(0x1b81000)                          = 0x1b81000
-munmap(0x7f9ea4c03000, 98827)           = 0
-open("/home/flowblok/annex/.git/objects/d7/bc8b27aad64c59effa77eae026778582761fae", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=550, ...}) = 0
-mmap(NULL, 550, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 550)             = 0
-open("/home/flowblok/annex/.git/objects/d8/00f4d59828022b9ee556b6f3758832da6bfb71", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=131, ...}) = 0
-mmap(NULL, 131, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 131)             = 0
-brk(0x1b5b000)                          = 0x1b5b000
-open("/home/flowblok/annex/.git/objects/ac/9ee326d36283143f9b3b38687870df6a888938", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=71, ...}) = 0
-mmap(NULL, 71, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 71)              = 0
-write(1, "ac9ee326d36283143f9b3b38687870df"..., 49) = 49
-open("/home/flowblok/annex/.git/objects/ac/9ee326d36283143f9b3b38687870df6a888938", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=71, ...}) = 0
-mmap(NULL, 71, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 71)              = 0
-open("/home/flowblok/annex/.git/objects/ac/9ee326d36283143f9b3b38687870df6a888938", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=71, ...}) = 0
-mmap(NULL, 71, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-write(1, "1435997292.091244s 0 5c33e13f-ed"..., 58) = 58
-munmap(0x7f9ead5a0000, 71)              = 0
-write(1, "\n", 1)                       = 1
-read(0, "refs/heads/git-annex:c54/719/SHA"..., 4096) = 116
-lstat("/home/flowblok/annex/.git/refs/heads/git-annex", {st_mode=S_IFREG|0600, st_size=41, ...}) = 0
-open("/home/flowblok/annex/.git/refs/heads/git-annex", O_RDONLY) = 3
-read(3, "f9d2dc8d54151d01a27c7989a1fc7983"..., 255) = 41
-read(3, "", 214)                        = 0
-close(3)                                = 0
-lstat("/home/flowblok/annex/.git/refs/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/tags/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/heads/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex/HEAD", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-open("/home/flowblok/annex/.git/objects/f9/d2dc8d54151d01a27c7989a1fc798320034a69", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=207, ...}) = 0
-mmap(NULL, 207, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 207)             = 0
-open("/home/flowblok/annex/.git/objects/65/dd2889161d7002f1d5f94587ab9bd0746d6f61", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=98827, ...}) = 0
-mmap(NULL, 98827, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ea4c03000
-close(3)                                = 0
-brk(0x1b81000)                          = 0x1b81000
-munmap(0x7f9ea4c03000, 98827)           = 0
-open("/home/flowblok/annex/.git/objects/04/13fe78e4f9b37348b5fd03cbe5eabdbcaec068", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=683, ...}) = 0
-mmap(NULL, 683, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 683)             = 0
-open("/home/flowblok/annex/.git/objects/c0/4c0a1d5b43f82c50cf095e42d28d74f0cfc494", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=132, ...}) = 0
-mmap(NULL, 132, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 132)             = 0
-brk(0x1b5b000)                          = 0x1b5b000
-open("/home/flowblok/annex/.git/objects/25/21eb645b1fcac7b6b55551114fe2d69e095896", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=70, ...}) = 0
-mmap(NULL, 70, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 70)              = 0
-write(1, "2521eb645b1fcac7b6b55551114fe2d6"..., 49) = 49
-open("/home/flowblok/annex/.git/objects/25/21eb645b1fcac7b6b55551114fe2d69e095896", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=70, ...}) = 0
-mmap(NULL, 70, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 70)              = 0
-open("/home/flowblok/annex/.git/objects/25/21eb645b1fcac7b6b55551114fe2d69e095896", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=70, ...}) = 0
-mmap(NULL, 70, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-write(1, "1435997202.486434s 0 5c33e13f-ed"..., 58) = 58
-munmap(0x7f9ead5a0000, 70)              = 0
-write(1, "\n", 1)                       = 1
-read(0, "refs/heads/git-annex:eec/e95/SHA"..., 4096) = 116
-lstat("/home/flowblok/annex/.git/refs/heads/git-annex", {st_mode=S_IFREG|0600, st_size=41, ...}) = 0
-open("/home/flowblok/annex/.git/refs/heads/git-annex", O_RDONLY) = 3
-read(3, "f9d2dc8d54151d01a27c7989a1fc7983"..., 255) = 41
-read(3, "", 214)                        = 0
-close(3)                                = 0
-lstat("/home/flowblok/annex/.git/refs/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/tags/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/heads/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex/HEAD", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-open("/home/flowblok/annex/.git/objects/f9/d2dc8d54151d01a27c7989a1fc798320034a69", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=207, ...}) = 0
-mmap(NULL, 207, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 207)             = 0
-open("/home/flowblok/annex/.git/objects/65/dd2889161d7002f1d5f94587ab9bd0746d6f61", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=98827, ...}) = 0
-mmap(NULL, 98827, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ea4c03000
-close(3)                                = 0
-brk(0x1b81000)                          = 0x1b81000
-munmap(0x7f9ea4c03000, 98827)           = 0
-open("/home/flowblok/annex/.git/objects/d7/bc8b27aad64c59effa77eae026778582761fae", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=550, ...}) = 0
-mmap(NULL, 550, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 550)             = 0
-open("/home/flowblok/annex/.git/objects/d8/00f4d59828022b9ee556b6f3758832da6bfb71", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=131, ...}) = 0
-mmap(NULL, 131, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 131)             = 0
-brk(0x1b5b000)                          = 0x1b5b000
-open("/home/flowblok/annex/.git/objects/ac/9ee326d36283143f9b3b38687870df6a888938", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=71, ...}) = 0
-mmap(NULL, 71, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 71)              = 0
-write(1, "ac9ee326d36283143f9b3b38687870df"..., 49) = 49
-open("/home/flowblok/annex/.git/objects/ac/9ee326d36283143f9b3b38687870df6a888938", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=71, ...}) = 0
-mmap(NULL, 71, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 71)              = 0
-open("/home/flowblok/annex/.git/objects/ac/9ee326d36283143f9b3b38687870df6a888938", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=71, ...}) = 0
-mmap(NULL, 71, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-write(1, "1435997292.091244s 0 5c33e13f-ed"..., 58) = 58
-munmap(0x7f9ead5a0000, 71)              = 0
-write(1, "\n", 1)                       = 1
-read(0, "refs/heads/git-annex:c54/719/SHA"..., 4096) = 116
-lstat("/home/flowblok/annex/.git/refs/heads/git-annex", {st_mode=S_IFREG|0600, st_size=41, ...}) = 0
-open("/home/flowblok/annex/.git/refs/heads/git-annex", O_RDONLY) = 3
-read(3, "f9d2dc8d54151d01a27c7989a1fc7983"..., 255) = 41
-read(3, "", 214)                        = 0
-close(3)                                = 0
-lstat("/home/flowblok/annex/.git/refs/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/tags/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/heads/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-lstat("/home/flowblok/annex/.git/refs/remotes/refs/heads/git-annex/HEAD", 0x7ffc82e9e580) = -1 ENOENT (No such file or directory)
-stat("/home/flowblok/annex/.git/packed-refs", {st_mode=S_IFREG|0600, st_size=1049, ...}) = 0
-open("/home/flowblok/annex/.git/objects/f9/d2dc8d54151d01a27c7989a1fc798320034a69", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=207, ...}) = 0
-mmap(NULL, 207, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ead5a0000
-close(3)                                = 0
-munmap(0x7f9ead5a0000, 207)             = 0
-open("/home/flowblok/annex/.git/objects/65/dd2889161d7002f1d5f94587ab9bd0746d6f61", O_RDONLY|O_NOATIME) = 3
-fstat(3, {st_mode=S_IFREG|0400, st_size=98827, ...}) = 0
-mmap(NULL, 98827, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9ea4c03000
-close(3)                                = 0
-brk(0x1b81000)                          = 0x1b81000
-munmap(0x7f9ea4c03000, 98827)           = 0
-# (truncated, since it just repeats over and over for a total of 613759 lines)
-
-# strace -p $PIDOF_GITANNEX_WEBAPP
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-futex(0x417c1dc, FUTEX_WAIT_PRIVATE, 65, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
---- SIGVTALRM {si_signo=SIGVTALRM, si_code=SI_TIMER, si_timerid=0, si_overrun=0, si_value={int=0, ptr=0}} ---
-rt_sigreturn()                          = 202
-# (ands lots more of the same)
-"""]]
diff --git a/doc/bugs/info_--json_lists_backend_usage_stats_as_a_list_of_lists.mdwn b/doc/bugs/info_--json_lists_backend_usage_stats_as_a_list_of_lists.mdwn
deleted file mode 100644
--- a/doc/bugs/info_--json_lists_backend_usage_stats_as_a_list_of_lists.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-### What version of git-annex are you using? On what operating system?
-
-5.20151116+gitg5416a1a-1~ndall+1
-
-### Please provide any additional information below.
-
-[[!format sh """
-    "backend usage": [
-        [
-            "MD5E",
-            2
-        ],
-        [
-            "SHA256E",
-            2
-        ]
-    ],
-"""]]
-
-instead of more logical
-
-[[!format sh """
-
-    "backend usage": {
-         "MD5E": 2,
-         "SHA256E": 2
-    }
-"""]]
-
-also it seems it just doubles them since I have only 2 files, 1 for each backend (as reported also by info "local annex keys": 2). 
-
-[[!meta author=yoh]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/keeps_demanding_ssh_key_even_if_all_sync__39__s_turned_down.mdwn b/doc/bugs/keeps_demanding_ssh_key_even_if_all_sync__39__s_turned_down.mdwn
deleted file mode 100644
--- a/doc/bugs/keeps_demanding_ssh_key_even_if_all_sync__39__s_turned_down.mdwn
+++ /dev/null
@@ -1,60 +0,0 @@
-### Please describe the problem.
-
-May be I was simply wrong to assume that if I disable all sync'ing for all the repos, assistant wouldn't try to contact those remote hosts. But it still does
-
-In the logs, since no time stamp per each line, hard to say either recent ones just continuation of previous entries, or new ones:
-
-[[
-
-[2015-05-18 10:29:39 EDT] Watcher: Performing startup scan
-(started...) ssh: connect to host vagus.cns.dartmouth.edu port 22: No route to host^M
-ssh: connect to host vagus.cns.dartmouth.edu port 22: No route to host^M
-ssh: connect to host vagus.cns.dartmouth.edu port 22: No route to host^M
-ssh: connect to host vagus.cns.dartmouth.edu port 22: No route to host^M
-ssh: connect to host vagus.cns.dartmouth.edu port 22: No route to host^M
-ssh: connect to host vagus.cns.dartmouth.edu port 22: No route to host^M
-...
-]]
-
-and in another
-
-[[
-fsck xppaut_6.11b+1.dfsg.orig.tar.gz ok
-fsck xserver-xorg-input-synaptics_1.6.2+git44-ge28575b.orig.tar.gz ok
-fsck xserver-xorg-video-intel_2.99.917.orig.tar.gz (checksum...)
-ok
-(recording state in git...)
-  ** No known copies exist of python-mne_0.8.3+dfsg.orig.tar.gz
-git-annex: fsck: 1 failed
-
-(process:3954): Gtk-WARNING **: Locale not supported by C library.
-    Using the fallback 'C' locale.
-Write failed: Broken pipe^M
-
-(process:20140): Gtk-WARNING **: Locale not supported by C library.
-    Using the fallback 'C' locale.
-
-(process:20178): Gtk-WARNING **: Locale not supported by C library.
-    Using the fallback 'C' locale.
-git-annex: Daemon is already running.
-
-(process:29035): Gtk-WARNING **: Locale not supported by C library.
-    Using the fallback 'C' locale.
-
-(process:29184): Gtk-WARNING **: Locale not supported by C library.
-    Using the fallback 'C' locale.
-
-(process:30127): Gtk-WARNING **: Locale not supported by C library.
-    Using the fallback 'C' locale.
-
-(process:30817): Gtk-WARNING **: Locale not supported by C library.
-    Using the fallback 'C' locale.
-Write failed: Broken pipe^M
-]]
-
-that host (vagus) is RIP (need to remove from syncs)
-btw which are falling into daemon.log.1 not .log
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150509+gitga10e45d-1~ndall+1
diff --git a/doc/bugs/largefiles_not_working_when_set_in_.gitattributes.mdwn b/doc/bugs/largefiles_not_working_when_set_in_.gitattributes.mdwn
deleted file mode 100644
--- a/doc/bugs/largefiles_not_working_when_set_in_.gitattributes.mdwn
+++ /dev/null
@@ -1,77 +0,0 @@
-### Please describe the problem.
-annex.largefiles saved in .gitattributes does not work when running 'git annex add' from a subdirectory
-
-I set annex.largefiles to include any files larger than 50k or any files that are executable. This works if I'm adding a files from top level directory. But if I'm adding files from a sub-directory it does not work.
-
-### What steps will reproduce the problem?
-see log below
-
-### What version of git-annex are you using? On what operating system?
-ubuntu 15.10
-
-git-annex version: 6.20160318-gd594fc0
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-
-
-### 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
-
-vagrant@u240:/tmp/annex/$ git init
-Initialized empty Git repository in /tmp/annex/.git/
-vagrant@u240:/tmp/annex/$ git annex init
-init  ok
-(recording state in git...)
-vagrant@u240:/tmp/annex/$ mkdir sub-dir
-vagrant@u240:/tmp/annex/$ cp /bin/tempfile .
-‘/bin/tempfile’ -> ‘./tempfile’
-vagrant@u240:/tmp/annex/$ cp /bin/tempfile sub-dir/
-‘/bin/tempfile’ -> ‘sub-dir/tempfile’
-vagrant@u240:/tmp/annex/$ file --mime-type tempfile 
-tempfile: application/x-executable
-vagrant@u240:/tmp/annex/$ cat .gitattributes 
-* annex.largefiles=((largerthan=50kb)or(mimetype=application/x-executable))
-vagrant@u240:/tmp/annex/$ ls -l tempfile
--rwxr-xr-x 1 vagrant vagrant 10352 Apr  6 15:19 tempfile
-# the file is 10k in size and I can annex it from top level directory
-vagrant@u240:/tmp/annex/$ git annex add tempfile sub-dir/tempfile
-add tempfile ok
-add sub-dir/tempfile ok
-(recording state in git...)
-vagrant@u240:/tmp/annex/$ cp /bin/tempfile tempfile2
-‘/bin/tempfile’ -> ‘tempfile2’
-vagrant@u240:/tmp/annex/$ cp /bin/tempfile sub-dir/tempfile2
-‘/bin/tempfile’ -> ‘sub-dir/tempfile2’
-vagrant@u240:/tmp/annex/$ cd sub-dir/
-# same file but I can not annex it if running from a sub-directory
-vagrant@u240:/tmp/annex/sub-dir/$ git annex add ../tempfile2 tempfile2
-add ../tempfile2 ok
-add tempfile2 (non-large file; adding content to git repository) ok
-(recording state in git...)
-vagrant@u240:/tmp/annex/sub-dir/$ cd ..
-vagrant@u240:/tmp/annex/$ ls -lR
-.:
-total 12
-drwxrwxr-x 2 vagrant vagrant 4096 Apr  6 15:21 sub-dir/
-lrwxrwxrwx 1 vagrant vagrant  186 Apr  6 15:19 tempfile -> .git/annex/objects/xj/kJ/SHA256E-s10352--93a1f74ec1714ef2107989076140b4eaae220f7b2cde834c16a7ad654d12b0f5/SHA256E-s10352--93a1f74ec1714ef2107989076140b4eaae220f7b2cde834c16a7ad654d12b0f5
-lrwxrwxrwx 1 vagrant vagrant  186 Apr  6 15:20 tempfile2 -> .git/annex/objects/xj/kJ/SHA256E-s10352--93a1f74ec1714ef2107989076140b4eaae220f7b2cde834c16a7ad654d12b0f5/SHA256E-s10352--93a1f74ec1714ef2107989076140b4eaae220f7b2cde834c16a7ad654d12b0f5
-
-./sub-dir:
-total 16
-lrwxrwxrwx 1 vagrant vagrant   189 Apr  6 15:20 tempfile -> ../.git/annex/objects/xj/kJ/SHA256E-s10352--93a1f74ec1714ef2107989076140b4eaae220f7b2cde834c16a7ad654d12b0f5/SHA256E-s10352--93a1f74ec1714ef2107989076140b4eaae220f7b2cde834c16a7ad654d12b0f5
--rwxr-xr-x 1 vagrant vagrant 10352 Apr  6 15:21 tempfile2
-
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
-> Thanks for reporting. This was a dumb bug; it used the wrong path to the
-> file for mimetype=, which was relative to the top of the repository.
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/make_install_doesn__39__t_create_git-annex-shell.mdwn b/doc/bugs/make_install_doesn__39__t_create_git-annex-shell.mdwn
deleted file mode 100644
--- a/doc/bugs/make_install_doesn__39__t_create_git-annex-shell.mdwn
+++ /dev/null
@@ -1,62 +0,0 @@
-### Please describe the problem.
-There is no git-annex-shell command in path and thus sync with ssh server fails. If I symlink /usr/bin/git-annex-shell -> /usr/bin/git-annex, it complains that key is already present in annex and errors out. There is executable git-annex-shell in server's ~/.ssh/
-
-### What steps will reproduce the problem?
-Start webapp to sync local repo with ssh server.
-
-### What version of git-annex are you using? On what operating system?
-git-annex 4.20130627 on Gentoo
-
-### 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
-
-[2013-07-08 17:28:48 EEST] main: starting assistant version 4.20130627
-[2013-07-08 17:28:49 EEST] TransferScanner: Syncing with netbook_Lit, sigma_Lit 
-
-  dbus failed; falling back to mtab polling (SocketError {socketErrorMessage = "connect: does not exist (Connection refused)", socketErrorFatal = True, socketErrorAddress = Just (Address "unix:abstract=/tmp/dbus-HBxh6EyMJ3,guid=adc3101676daede2a128013351daa535")})
-Already up-to-date.
-
-(scanning...) [2013-07-08 17:28:49 EEST] Watcher: Performing startup scan
-Already up-to-date.
-Already up-to-date.
-
-
-(started...) Everything up-to-date
-Everything up-to-date
-bash: git-annex-shell: command not found
-rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-rsync error: remote command not found (code 127) at io.c(605) [sender=3.0.9]
-bash: git-annex-shell: command not found
-rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-rsync error: remote command not found (code 127) at io.c(605) [sender=3.0.9]
-
-
-[2013-07-08 17:50:23 EEST] main: starting assistant version 4.20130627
-[2013-07-08 17:50:23 EEST] TransferScanner: Syncing with netbook_Lit, sigma_Lit 
-
-  dbus failed; falling back to mtab polling (SocketError {socketErrorMessage = "connect: does not exist (Connection refused)", socketErrorFatal = True, socketErrorAddress = Just (Address "unix:abstract=/tmp/dbus-HBxh6EyMJ3,guid=adc3101676daede2a128013351daa535")})
-Already up-to-date.
-
-(scanning...) [2013-07-08 17:50:23 EEST] Watcher: Performing startup scan
-Already up-to-date.
-Already up-to-date.
-
-
-(started...) Everything up-to-date
-Everything up-to-date
-git-annex-shell: key is already present in annex
-rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
-git-annex-shell: key is already present in annex
-rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
-
-
-
-# End of transcript or log.
-"""]]
-
-[[!tag done]]
diff --git a/doc/bugs/merge_causes_out_of_memory_on_large_repos.mdwn b/doc/bugs/merge_causes_out_of_memory_on_large_repos.mdwn
deleted file mode 100644
--- a/doc/bugs/merge_causes_out_of_memory_on_large_repos.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-### Please describe the problem.
-
-`git annex merge` goes out of memory on a large repo.
-
-
-### What steps will reproduce the problem?
-
-    $ git annex merge
-    merge git-annex git-annex: out of memory (requested 1048576 bytes)
-
-### What version of git-annex are you using? On what operating system?
-
-    git-annex version: 4.20130827
-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS
-
-On debian wheezy i386
-
-### Please provide any additional information below.
-
-The repository contains a lot of files:
-
-    $ cd .git/objects
-    $ find . -type f | wc -l 
-    1091548
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/metadata_view_does_not_vpop_to_original_view.mdwn b/doc/bugs/metadata_view_does_not_vpop_to_original_view.mdwn
deleted file mode 100644
--- a/doc/bugs/metadata_view_does_not_vpop_to_original_view.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-### Please describe the problem.
-
-I added some metadata to my music repository and tried a metadata-driven view. 
-
-    git annex view composer=* performer=
-
-When I wanted to return to the original list of directories and files, that fails. I now only see a list of directories that contain files which are actually on my laptop, and the generated views.
-
-When I did git annex vpop, I got the following:
-
-    frederik@freo:~/Music$ git annex vpop
-    vpop 1 
-    error: Your local changes to the following files would be overwritten by checkout:
-      Mozart, Wolfgang Amadeus/Academy of St. Martin in the Fields/01. Wolfgang Amadeus Mozart - Serenade No. 10 in B-flat major, KV 361 _Gran Partita_ - Ia. Largo_%Wolfgang Amadeus Mozart - Serenade No. 10 in B-flat major, KV 361 _Gran Partita_ (Academy of St. Martin in the Fields feat. conductor - Sir Neville Marriner)%.flac
-        Mozart, Wolfgang Amadeus/Academy of St. Martin in the Fields/02. Wolfgang Amadeus Mozart - Serenade No. 10 in B-flat major, KV 361 _Gran Partita_ - Ib. Allegro molto_%Wolfgang Amadeus Mozart - Serenade No. 10 in B-flat major, KV 361 _Gran Partita_ (Academy of St. Martin in the Fields feat. conductor - Sir Neville Marriner)%.flac
-
-I had not actually altered any of these files. I merely cd'd into the directory and did an ls to see what it looked like.
-
-The view is also not generated correctly, as re-running 
-
-    git annex view composer=* performer=
-
-gives me a list of directories with several directories that should not be present in the view.
-
-So far, I'm unable to go back to the original state.
-
-
-
-### What version of git-annex are you using? On what operating system?
-
-Debian/Jessie
-
-git-annex version: 5.20141125
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-
-
diff --git a/doc/bugs/migrate_and_move_duplicates_data.mdwn b/doc/bugs/migrate_and_move_duplicates_data.mdwn
deleted file mode 100644
--- a/doc/bugs/migrate_and_move_duplicates_data.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-### Please describe the problem.
-
-I have a main annex with ~2TB of data. In the past is was using SHA256 then I migrated to SHA256E . Recently it was becoming quite full so I took some spare HD and cloned it and moved data from the main to the spares. To my surprise, the main annex disk usage did not go down a bit.
-
-It took me some time to understand why . The problem is exemplified by the  shell script  <http://mennucc1.debian.net/git-annex/git-annex-no-dedup.sh> .
-
-In short, if a annex is migrated to a new backend and afterwards files are moved, then the hardlinks are broken, and disk usage doubles.
-
-### What steps will reproduce the problem?
-
-run above script
-
-### What version of git-annex are you using? On what operating system?
-
- 5.20141125  on Debian Jessie amd64
-
-### Please provide any additional information below.
-
-Of course a simple solution would be to drop all unused files. This is ugly , though, because it does not distinguish between
-(1) unused files that are previous copies of files I care about (2) unused files that are due to the problem described in the example, and that I do not care about.
-
-A more complex but more elegant solution would be:
-
-(a) when a file is migrated , the old and new objects in the annex are hardlinked; moreover two symlinks should be creates, so that git-annex knows at a glance which two files are hardlinked (see <http://mennucc1.debian.net/git-annex/cross_links.txt> for example)
-
-(b) when moving of copying files, all hardlinked versions whould be move/copied
-
-(c) when dropping , an option may be used to specify if all hardlinked versions should be dropped alltogether
-
-### bye
-
-and thanks, A.
-
-### ps
-
-I tried to attach two files to this bug report but failed
diff --git a/doc/bugs/migrated_files_not_showing_up_in_unused_list.mdwn b/doc/bugs/migrated_files_not_showing_up_in_unused_list.mdwn
deleted file mode 100644
--- a/doc/bugs/migrated_files_not_showing_up_in_unused_list.mdwn
+++ /dev/null
@@ -1,62 +0,0 @@
-Word summary: After migrating from SHA256 to SHA256E I still have a ton of SHA256 files around that aren't being found by unused.
-
-Command outputs (see, specifically, the output of status showing number of SHA256 and SHA256E files):
-
-
-    greg@eeepc:/mnt/blackbox/Media/Pictures/Photos$ less .gitattributes
-    * annex.backend=SHA256E
-
-    greg@eeepc:/mnt/blackbox/Media/Pictures/Photos$ git-annex migrate .
-    (Recording state in git...)
-
-    greg@eeepc:/mnt/blackbox/Media/Pictures/Photos$ git-annex unused
-    unused . (checking for unused data...) (checking master...) (checking rose/master...) (checking x200s/master...)
-      Some partially transferred data exists in temporary files:
-        NUMBER  KEY
-        1       SHA256E-s15766010--8132a02a8b245eb9842e89c5e696df4e9c82d676f8dec3c6bb96892c19f99d51.jpg
-
-      To remove unwanted data: git-annex dropunused NUMBER
-
-    ok
-    (Recording state in git...)
-
-    greg@eeepc:/mnt/blackbox/Media/Pictures/Photos$ git-annex status
-    supported backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
-    supported remote types: git S3 bup directory rsync web hook
-    trusted repositories: 1
-            c0e4106e-2631-11e2-9749-1bfa37a61069 -- rose
-    semitrusted repositories: 3
-            00000000-0000-0000-0000-000000000001 -- web
-            9bd4077e-196c-11e2-9cc9-9faafb3e34ee -- x200s
-            c69d6fcc-18d1-11e2-9487-2fe6dbf0516b -- here (photos on eeepc)
-    untrusted repositories: 0
-    dead repositories: 1
-            3ebd5ac2-2092-11e2-856a-bb0203cce179 -- Photos on Rose
-    transfers in progress: 
-            downloading 2011/06/30/IMG_8180.jpg
-     from rose
-    available local disk space: 2 terabytes (+1 megabyte reserved)
-    temporary directory size: 9 megabytes (clean up with git-annex unused)
-    local annex keys: 36210
-    local annex size: 136 gigabytes
-    known annex keys: 23388
-    known annex size: 102 gigabytes
-    bloom filter size: 16 mebibytes (7.2% full)
-    backend usage: 
-            SHA256E: 37453
-            SHA256: 22145
-    (Recording state in git...)
-
-    greg@eeepc:/mnt/blackbox/Media/Pictures/Photos$ apt-cache policy git-annex
-    git-annex:
-      Installed: 3.20121017
-      Candidate: 3.20121017
-      Version table:
-     *** 3.20121017 0
-            600 http://ftp.us.debian.org/debian/ unstable/main i386 Packages
-            100 /var/lib/dpkg/status
-         3.20120629 0
-            650 http://ftp.us.debian.org/debian/ wheezy/main i386 Packages
-
-
-As Joey predicted, this took care of itself over time. Marking as [[bugs/done]].
diff --git a/doc/bugs/moreinfo.mdwn b/doc/bugs/moreinfo.mdwn
deleted file mode 100644
--- a/doc/bugs/moreinfo.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-This tags is for bugs needing more information from their submitter.
-Please respond to the bug and provide the requested information.
diff --git a/doc/bugs/no_git-annex_shell_on_Windows.mdwn b/doc/bugs/no_git-annex_shell_on_Windows.mdwn
deleted file mode 100644
--- a/doc/bugs/no_git-annex_shell_on_Windows.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-### Please describe the problem.
-
-git annex installer on Windows only installs git-annex-licenses.txt  git-annex-uninstall.exe  git-annex.exe
-
-This makes git-annex unusable over ssh (Windows box runs cygwin sshd).
-
-### What steps will reproduce the problem?
-
-
-### What version of git-annex are you using? On what operating system?
-
-Windows 7 64bit
-
-git annex version
-git-annex version: 5.20140421-g78d6aa1
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-
-### 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.
-"""]]
diff --git a/doc/bugs/on_encfs__44___.fuse__95__hiddenXXXXX_files_left_behind.mdwn b/doc/bugs/on_encfs__44___.fuse__95__hiddenXXXXX_files_left_behind.mdwn
deleted file mode 100644
--- a/doc/bugs/on_encfs__44___.fuse__95__hiddenXXXXX_files_left_behind.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-### Please describe the problem.
-
-When git annex is used on a encfs mount, ``.fuse_hiddenXXXX`` files are left behind in ``.git/annex/objects/*/*/`` when I ``git annex move`` files off the encfs
-
-### What steps will reproduce the problem?
-
-    mkdir normal plain enc
-    encfs -o kernel_cache "$(realpath enc)" "$(realpath plain)"
-
-    cd normal
-    git init
-    git annex init normal
-
-    cd ../plain
-    git init
-    git annex init enc
-    dd if=/dev/urandom bs=1M count=11 of=11m
-    git annex add 11m
-    git remote add normal "$(realpath ../normal)"
-    du -hscL *
-        << 11MB-ish >>
-    du -hsc .git/annex/objects
-        << 11MB-ish >>
-    git annex move --to=normal 11m
-    du -hscL *
-        << 0 >>
-    du -hsc .git/annex/objects
-        << 11MB-ish but should be 0-ish >>
-    tree -a .git/annex/objects
-        << ??/??/SHA1-*/.fuse_hidden??????? >>
-    lsof .git/annex/objects/??/??/SHA*/.fuse_hidden*
-        << shows no programs have this file open >>
-
-
-### What version of git-annex are you using? On what operating system?
-
-5.20131221 on debian unstable (installed by aptitude from debian/main)
-
-### Please provide any additional information below.
-
-I did a couple quick internet searches on these .fuse_hidden files, and (if a random person on the internet is correct) they are created by enfs (or maybe fuse itself) when a file is unlinked while open. It is supposed to be deleted when the file is closed.
-
-Possibilities come to mind:
-
-*    There's a bug in encfs/fuse
-*    git annex fails to close the file, and whatever cleanup happens when the linux kernel closes git annex fails to trigger encfs/fuse's real unlinking/cleanup thing
-
-
-
-I'm happy to help with further testing, experimenting, etc. I'm good at git, the commandline, programming, etc but I don't know Haskell.
-
-- Jason <jason@jasonwoof.com>
diff --git a/doc/bugs/present_files__47__directories_are_dropped_after_a_sync.mdwn b/doc/bugs/present_files__47__directories_are_dropped_after_a_sync.mdwn
deleted file mode 100644
--- a/doc/bugs/present_files__47__directories_are_dropped_after_a_sync.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-### Please describe the problem.
-
-This is a followup from the discussion on <https://git-annex.branchable.com/forum/Standard_groups__47__preferred_contents/> where I unfortunately did not get a complete answer.
-I don't know if it is really a bug but at least it does not work as I would expect and the documentation provides no clear discussion on that.
-
-Now to the problem:
-My annex is in "manual" mode (or equivalently "exclude="*" and present" or an expression which contains "present".
-Then I get a file using "git annex get file".
-I would expect that this file is now synced because it is "present".
-But it is not. When I change the file it is synced to the remotes. This is what it should be.
-However, when a remote changes that file, the content is NOT synced, the file is silently dropped.
-
-Similarly, when I get a complete directory tree in manual mode, I would expect that it is synced. That means, when a remote adds a file or changes a file in that directory, it is also synced to the local machine. But it is not. If it is changed, it is silently dropped (as written above). If a file is added, only the metadata is added but the content is not synced.
-
-### What steps will reproduce the problem?
-
- - Create a file 'file' on the server, git annex add/sync etc.
- - On the client: git annex wanted here 'exclude="*" and present'
- - On the client: git annex get file . The file is now present on the client
- - Change the file on the server, git annex sync
- - git annex sync --content on the client
- - Result: File is dropped again on client
-
-Similarly for directories:
-
- - Create a (sub-)directory 'subdir' with files and sync everything
- - On the client: git annex get subdir . The subdirectory is now present, all files under it downloaded.
- - On the server create a new file in 'subdir' and git annex add; git annex sync --content
- - git annex sync --content on the client
- - Result: Content of the files is not synced to client
-
-### What version of git-annex are you using? On what operating system?
-
-    git-annex version: 5.20140717-g5a7d4ff
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-
-
-[[!meta title="manual mode preferred content expression does not want newer versions of present files"]]
-[[!tag confirmed]]
diff --git a/doc/bugs/problem_commit_normal_links.mdwn b/doc/bugs/problem_commit_normal_links.mdwn
deleted file mode 100644
--- a/doc/bugs/problem_commit_normal_links.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-Dear All,
-
-thank you for this wonderful tool!
-
-I am having an issue when I try to commit a normal link
-
-diokletian*194-> mkdir test
-
-diokletian*195-> cd test
-
-diokletian*196-> git init
-
-Initialized empty Git repository in /home/henrus/test/.git/
-
-diokletian*197-> git annex init new
-
-init new [master (root-commit) 49f5f91] git-annex setup
-
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
- create mode 100644 .gitattributes
-
-[master 76496ff] git annex init
-
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
- create mode 100644 .git-annex/uuid.log
-
-ok
-
-diokletian*198-> mkdir subdir
-
-diokletian*199-> ln -s subdir link
-
-diokletian*200-> git add link
-
-diokletian*201-> git commit -m "ok"
-
-[master f12f62d] ok
-
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
- create mode 120000 link
-
-diokletian*202-> ln -s subdir/ link2
-
-diokletian*203-> git add link2
-
-diokletian*204-> git commit -m "not ok"
-
-git-annex: Prelude.head: empty list
-
-The trailing slash seems to make a difference!
-
-Best Regards,
-
-Henrik
-
-> Thanks for the bug report. This is fixed in 0.17. --[[Joey]]  [[!tag done]]
diff --git a/doc/bugs/problem_with_upgrade_v2_-__62___v3.mdwn b/doc/bugs/problem_with_upgrade_v2_-__62___v3.mdwn
deleted file mode 100644
--- a/doc/bugs/problem_with_upgrade_v2_-__62___v3.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-On several of my repos, the upgrade to v3 seemed to take forever. A Crl-C followed by another "git annex upgrade" "solved" the problem in some cases. Sometimes, I had to also delete the .git/annex/journal dir to have the upgrade. I didn't notice anything special about the non-working repos to help diagnose the problem.
-
-[[!tag done]]
diff --git a/doc/bugs/problems_with_android_and_gpg.mdwn b/doc/bugs/problems_with_android_and_gpg.mdwn
deleted file mode 100644
--- a/doc/bugs/problems_with_android_and_gpg.mdwn
+++ /dev/null
@@ -1,73 +0,0 @@
-### Please describe the problem.
-When my android phone tries to decode files downloaded from a ssh remote using shared encryption, gpg errors occur.
-
-### What steps will reproduce the problem?
-Setup is very similar to my other bug report in <https://git-annex.branchable.com/bugs/problems_with_android_and_xmpp/>.
-Only difference is the location of the annex on the android side.
-I have put it on the /data mount which uses ext4 to avoid the /sdcard fuse mount, which does not handle symlinks.
-
-1) setup git annex via webapp on laptop:
-
-* local annex
-
-* remote annex via ssh with shared encryption (tried two different servers, one with and one without git-annex installed)
-
-* share with my devices using jabber.me account
-
-2) setup git annex via webapp on android:
-
-* local annex in /data/data/ga.androidterm/annex (ext filesystem)
-
-* share with my devices using jabber.me account
-
-* ssh remote is automatically added via XMPP
-
-3) add file to annex on linux, which gets uploaded to the ssh remote
-
-4) symlink for file is created on phone and data downloaded, but never decrypted (see logs below)
-
-### What version of git-annex are you using? On what operating system?
-Ubunut Linux 12.04 with git-annex version:
-
-* 5.20140127.1 (from PPA)
-
-Android 4.2 (rooted) with git-annex version:
-
-* 5.20140211-g556cfeb (from autobuilds)
-
-### Please provide any additional information below.
-full logs:
-
-* linux: <http://pastebin.ca/2639929>
-
-* android: <http://pastebin.ca/2639945>
-
-most interesting parts:
-[[!format sh """
-#
-# android:
-#
-gpg: can't open `/usr/local/share/gnupg/options.skel': No such file or directory
-gpg: DBG: locking for `/sdcard/git-annex.home/.gnupg/secring.gpg.lock' done via O_EXCL
-gpg: DBG: locking for `/sdcard/git-annex.home/.gnupg/pubring.gpg.lock' done via O_EXCL
-gpg: decryption failed: bad key
-
-# followed by just the last line for all further attemps
-gpg: decryption failed: bad key
-
-# gpg it self seems to be fine
-root@android:/data/data/ga.androidterm # ./bin/gpg --version -v                
-gpg (GnuPG) 1.4.15
-Copyright (C) 2013 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-
-Home: ~/.gnupg
-Supported algorithms:
-Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
-Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
-        CAMELLIA128, CAMELLIA192, CAMELLIA256
-Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
-Compression: Uncompressed, ZIP, ZLIB
-"""]]
diff --git a/doc/bugs/problems_with_android_and_xmpp.mdwn b/doc/bugs/problems_with_android_and_xmpp.mdwn
deleted file mode 100644
--- a/doc/bugs/problems_with_android_and_xmpp.mdwn
+++ /dev/null
@@ -1,82 +0,0 @@
-### Please describe the problem.
-When trying to sync my android phone with my linux laptop using the git annex assistant and XMPP no files are transferred.
-
-### What steps will reproduce the problem?
-1) setup git annex via webapp on laptop:
-
-* local annex
-
-* remote annex via ssh with shared encryption (tried two different servers, one with and one without git-annex installed)
-
-* share with my devices using jabber.me account
-
-2) setup git annex via webapp on android:
-
-* local annex in /sdcard/annex (fuse filesystem without symlink support)
-
-* share with my devices using jabber.me account
-
-* ssh remote is automatically added via XMPP
-
-3) add files to annex on linux, they get uploaded to the ssh remote
-
-4) wait forever for any files from linux to download to phone
-
-5) add files to annex on phone, they get uploaded to the ssh remote
-
-4) wait forever for any files from phone to download to linux
-
-### What version of git-annex are you using? On what operating system?
-Ubunut Linux 12.04 with git-annex version:
-
-* 5.20140127.1 (from PPA)
-
-Android 4.2 (rooted) tried with git-annex versions:
-
-* 5.20140209 (from http://downloads.kitenet.net/git-annex/android/current/4.0/)
-
-* 5.20140211-g556cfeb (from autobuilds)
-
-### Please provide any additional information below.
-full logs:
-
-(these do not show the uploads to the ssh remote, because I restarted to get clean and short logs, but the files are on the server and can be dropped and restored on the linux side manually) 
-
-* linux: <http://pastebin.ca/2639948>
-
-* android: <http://pastebin.ca/2639952>
-
-most interesting parts:
-[[!format sh """
-#
-# linux:
-#
-
-[2014-02-13 13:11:27 CET] XMPPClient: Pairing with dorian in progress
-[2014-02-13 13:11:28 CET] XMPPSendPack: Syncing with dorian 
-To xmpp::dorian@jabber.me
- * [new branch]      git-annex -> refs/synced/4ce7576f-6f02-4657-bab5-2f4c4a564ee7/ZG9yaWFuQGphYmJlci5tZQ==/git-annex
- * [new branch]      annex/direct/master -> refs/synced/4ce7576f-6f02-4657-bab5-2f4c4a564ee7/ZG9yaWFuQGphYmJlci5tZQ==/annex/direct/master
-[2014-02-13 13:11:29 CET] XMPPSendPack: Syncing with dorian 
-Everything up-to-date
-[2014-02-13 13:12:21 CET] XMPPSendPack: Syncing with dorian 
-Everything up-to-date
-[2014-02-13 13:12:21 CET] XMPPSendPack: Syncing with dorian 
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-
-#
-# android:
-#
-[2014-02-13 13:16:25 CET] XMPPClient: sending: Pushing "d29" (ReceivePackOutput 2 "<elided>")
-[2014-02-13 13:16:25 CET] XMPPClient: to client: d6/tigase-14134
-[2014-02-13 13:18:22 CET] XMPPClient: received: ["Unknown message"]
-[2014-02-13 13:18:25 CET] XMPPReceivePack: timeout waiting for git send-pack output via XMPP
-fatal: The remote end hung up unexpectedly
-[2014-02-13 13:18:25 CET] XMPPReceivePack: finished running push Pushing "d29" (StartingPush (UUID "4ce7576f-6f02-4657-bab5-2f4c4a564ee7")) True
-[2014-02-13 13:18:25 CET] XMPPClient: sending: Pushing "d29" (ReceivePackDone (ExitFailure 128))
-[2014-02-13 13:18:25 CET] XMPPClient: to client: d6/tigase-14134
-
-"""]]
diff --git a/doc/bugs/put_gpg_last_in_OSX_dmg_PATH.mdwn b/doc/bugs/put_gpg_last_in_OSX_dmg_PATH.mdwn
deleted file mode 100644
--- a/doc/bugs/put_gpg_last_in_OSX_dmg_PATH.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-git-annex bundles gpg on OSX, but this bundled one is not integrated with
-gpg-agent. So, if gpg is installed system-wide, it's probably better to use
-that one (barring any versioning issues).
-
-A solution might be to move the gpg binary to a different directory and put
-it at the end of PATH, not the front. So system one is used if available.
-
-This should also be considered for the linux standalone builds.
-
-> [[done]] for both OSX and linux. --[[Joey]]
diff --git a/doc/bugs/ran_once_then_stopped_running_opensuse_13.1.mdwn b/doc/bugs/ran_once_then_stopped_running_opensuse_13.1.mdwn
deleted file mode 100644
--- a/doc/bugs/ran_once_then_stopped_running_opensuse_13.1.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Installed stand-alone tarball amd64.
-I was able to launch webapp. (on laptop)
-Created a repository to local home directory.
-Then ceated another repository to invite local desktop pc.(this one had all the files i wanted to sync) 
-Went to dektop and accepted invitation.  But both machines never stopped synching?  and nothing really happened.
-so I removed repository on laptop to start fresh.
-But now webapp does nothing.  I removed and re-installed a few times but still nothing.
-Only as superuser will the webapp attempt to load but fails because it is super user running.
-As far as version of git-annex...  it prompted to upgrade and i think i saw a 5 in there somewhere.
-
-and since it won't load anymore i guess there is no log.
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/random_files_vanishing_when_assistant_gets_restarted.mdwn b/doc/bugs/random_files_vanishing_when_assistant_gets_restarted.mdwn
deleted file mode 100644
--- a/doc/bugs/random_files_vanishing_when_assistant_gets_restarted.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-#What steps will reproduce the problem?
-
-Running assistant in foreground on one repository that is paired to another repository, than killing it using CTRL-C and restarting it
-
-
-#What is the expected output? What do you see instead?
-
-I get messages like:
-
-    (Recording state in git...)
-    # Auf Zweig master
-    # Änderungen, die nicht zum Eintragen bereitgestellt sind:
-    #   (benutze "git add/rm <Datei>..." zum Bereitstellen)
-    #   (benutze "git checkout -- <Datei>..." um die Änderungen im Arbeitsverzeichnis zu verwerfen)
-    #
-    #       gelöscht:    "path/to/file"
-    #
-    keine Änderungen zum Eintragen hinzugefügt (benutze "git add" und/oder "git commit -a")
-    Total 0 (delta 0), reused 0 (delta 0)
-    To ssh://stormking@git-annex-volyova-stormking/data/repository/
-       4e2c631..911b80c  git-annex -> synced/git-annex
-    
-    Already up-to-date.
-
-Sorry for the german language, I'll try to reproduce it in english, later.
-After that, the symlinks for the file in the repository are gone. I can get
-them back by reverting the commit but things like that make me very nervous.
-
-
-#What version of git-annex are you using? On what operating system?
-
-3.20130102 on Arch Linux x64
-
-[[!tag /design/assistant moreinfo]]
diff --git a/doc/bugs/regression__58___behavior_when_files_to_add_do_not_exist.mdwn b/doc/bugs/regression__58___behavior_when_files_to_add_do_not_exist.mdwn
deleted file mode 100644
--- a/doc/bugs/regression__58___behavior_when_files_to_add_do_not_exist.mdwn
+++ /dev/null
@@ -1,103 +0,0 @@
-### Please describe the problem.
-
-When adding a list of files, where some exist and some don't, annex claims to add some of the files until it encounters the first missing file. Then it bails out, leaving files hashed but not added.
-
-### What steps will reproduce the problem?
-
-Create a file, ask annex to add the file and a non-existant file
-
-Expected and historic behavior: annex adds the file
-
-Actual behavior: annex hashes but does not add the file
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20150420-gb0ebb23
-standalone linux amd64
-
-### 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
-
-$ git annex version
-git-annex version: 5.20150420-gb0ebb23
-[ . . . ]
-
-$ git init asdf
-Initialized empty Git repository in /tmp/asdf/.git/
-
-$ cd asdf
-
-$ git annex init
-init  ok
-(recording state in git...)
-
-$ touch asdf
-
-$ git add asdf qwer
-fatal: pathspec 'qwer' did not match any files
-
-$ git annex add asdf qwer
-add asdf ok
-git-annex: qwer not found
-
-$ file * | sed -e 's/`.*//'
-asdf: symbolic link to 
-
-$ git status
-On branch master
-
-Initial commit
-
-Untracked files:
-  (use "git add <file>..." to include in what will be committed)
-
-	asdf
-
-nothing added to commit but untracked files present (use "git add" to track)
-
-
-# End of transcript or log.
-"""]]
-
-Older version of git-annex:
-
-[[!format sh """
-
-$ git annex version
-git-annex version: 5.20140412ubuntu1
-[ . . . ]
-
-$ git init asdf
-Initialized empty Git repository in /tmp/asdf/.git/
-
-$ cd asdf
-
-$ git annex init asdf
-init asdf ok
-(Recording state in git...)
-
-$ touch asdf
-
-$ git annex add asdf qwer
-add asdf ok
-git-annex: qwer not found
-(Recording state in git...)
-
-$ file * | sed -e 's/`.*//'
-asdf: symbolic link to 
-
-$ git status
-On branch master
-
-Initial commit
-
-Changes to be committed:
-  (use "git rm --cached <file>..." to unstage)
-
-	new file:   asdf
-"""]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/regression_with_S3_creds_not_used.mdwn b/doc/bugs/regression_with_S3_creds_not_used.mdwn
deleted file mode 100644
--- a/doc/bugs/regression_with_S3_creds_not_used.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-### Please describe the problem.
-
-I am having a problem on Windows in which the AWS access credentials are stored but not used. When I have the ```AWS_ACCESS_KEY_ID``` and ```AWS_SECRET_ACCESS_KEY``` variables are set, everything works correctly. However if I open a new window that doesn't have envs set, git annex sync --content fails with a Forbidden message. Looking in the creds directory, I see plaintext creds stored.
-
-### What steps will reproduce the problem?
-
-```
-# set AWS_ACCESS_KEY_ID=thing1
-# set AWS_SECRET_ACCESS_KEY=thing2
-# git init test
-# cd test
-# git annex init
-# git annex initremote s3cloud type=S3 encryption=pubkey keyid=key embedcreds=yes
- ... everything works, annex-uuid is created, etc ...
-
-# now open a new window, navigate to proper repo
-
-# git annex sync --content
-
-... forbidden messages
-
-# Reset the env vars
-... sync works as normal ...
-```
-
-Note that this fails *silently* when using the webapp. The app shows percentage of upload, and the uploads "complete" but the log shows:
-
-```
-  S3Error {s3StatusCode = Status {statusCode = 403, statusMessage = "Forbidden"}, s3ErrorCode = "InvalidAccessKeyId", s3ErrorMessage = "The AWS Access Key Id you provided does not exist in our records.", s3ErrorResource = Nothing, s3ErrorHostId = Just "/MfOhrvmoi1uTsuJDaV2c+3jxqt+/cAC8KBvGkbE+os1BAPAw/bLeNHiUF8kbSJ+2cMuNO+0mzQ=", s3ErrorAccessKeyId = Just "redacted", s3ErrorStringToSign = Nothing, s3ErrorBucket = Nothing, s3ErrorEndpointRaw = Nothing, s3ErrorEndpoint = Nothing}
-```
-
-### What version of git-annex are you using? On what operating system?
-
-I'm on Windows:
-
-```
-git-annex version: 5.20151019-gcc50c00
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feed
-s Quvi TDFA TorrentParser Database
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384
-SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEI
-N256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glac
-ier ddar hook external
-```
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-I have successfully used git annex on linux and mac, and it is great!
diff --git a/doc/bugs/remote_not_showing_up_in_webapp.mdwn b/doc/bugs/remote_not_showing_up_in_webapp.mdwn
deleted file mode 100644
--- a/doc/bugs/remote_not_showing_up_in_webapp.mdwn
+++ /dev/null
@@ -1,100 +0,0 @@
-### Please describe the problem.
-
-This is a followup on [[bugs/internal_server_error:_unknown_UUID_on_webapp]]. In that issue, webapps previous to 20130929 would crash with `internal server error: unknown UUID`. This was fixed at that date, but some problems remain, namely that the remote that is recognized on the commandline doesn't show up in the webapp.
-
-`markov` is able to push to `marcos`, but not the reverse because `markov` is hidden behind a NAT. `git annex sync` seems to do the right thing accordingly on both ends (which is: `marcos` doesn't try to push to `markov` but `markov` pushes to `marcos`).
-
-### What steps will reproduce the problem?
-
-See [[bugs/internal_server_error:_unknown_UUID_on_webapp]]. I didn't do any further changes other than upgrade `git-annex` on both ends.
-
-### What version of git-annex are you using? On what operating system?
-
-`marcos` is now running `Version: 4.20131105-g8efdc1a Build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS Feeds Quvi TDFA CryptoHash`
-
-`markov` is now running the wheezy backport, `4.20131002~bpo70+1`.
-
-### Please provide any additional information below.
-
-#### On `marcos`
-
-Here's the output of `git annex status` on `marcos`:
-
-[[!format sh """
-anarcat@marcos:books$ git annex status
-repository mode: direct
-trusted repositories: 0
-semitrusted repositories: 3
-        00000000-0000-0000-0000-000000000001 -- web
-        a75cbbf7-e055-423e-b375-443e0552c9e2 -- here (anarcat@marcos:/srv/books)
-        aa500f29-42d9-4777-ae02-4a2c3d47db44 -- anarcat@markov:~/books
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 7.04 gigabytes (+1 megabyte reserved)
-local annex keys: 736
-local annex size: 3.92 gigabytes
-annexed files in working tree: 721
-size of annexed files in working tree: 3.92 gigabytes
-bloom filter size: 16 mebibytes (0.1% full)
-backend usage:
-        SHA256E: 1457
-# End of transcript or log.
-"""]]
-
-Here's a screenshot of the idle webapp on marcos:
-
-<img src="http://i.imgur.com/3HFgj3w.png" />
-
-You can clearly see that the webapp doesn't see the `markov` remote.
-
-When `markov` transfers stuff, `marcos` sees the transfers happening, but marks it as going to the `unknown` remote:
-
-<img src="http://i.imgur.com/YOu9GbA.png" />
-
-Clicking on that link is what was previously triggering [[bugs/internal_server_error:_unknown_UUID_on_webapp]] but now yields a "Unknown remote" error.
-
-<img src="http://i.imgur.com/y7JxULi.png" />
-
-#### On `markov`:
-
-Here is a screenshot from `markov` that shows *it* knows about both repositories and seem to behave properly:
-
-<img src="http://i.imgur.com/fTMslVT.png" />
-
-And here's the output of `git annex status` on markov:
-
-[[!format sh """
-anarcat@desktop008:books$ git annex status
-repository mode: indirect
-trusted repositories: 0
-semitrusted repositories: 3
-        00000000-0000-0000-0000-000000000001 -- web
-        a75cbbf7-e055-423e-b375-443e0552c9e2 -- origin (anarcat@marcos:/srv/books)
-        aa500f29-42d9-4777-ae02-4a2c3d47db44 -- here (anarcat@markov:~/books)
-untrusted repositories: 0
-transfers in progress:
-        downloading Patrick K. O'Brien/Philip's Atlas of World History, Concise Edition (115)/Philip's Atlas of World History, Concise Edition - Patrick K. O'Brien.pdf from origin
-available local disk space: 93.25 gigabytes (+1 megabyte reserved)
-temporary directory size: 50.07 megabytes (clean up with git-annex unused)
-local annex keys: 708
-local annex size: 3.81 gigabytes
-known annex keys: 721
-known annex size: 3.92 gigabytes
-bloom filter size: 16 mebibytes (0.1% full)
-backend usage:
-        SHA256E: 1429
-"""]]
-
-Finally, note that you sometimes see `desktop008` above: it turns out I am running `git annex` from my workstation, which NFS-mounts the `/home` directory of `markov` into `/srv/musique`.  --[[anarcat]]
-
-Yesterday, I made the webapp register ssh remotes it creates. 
-They then show up in the webapp when run in a repository where that ssh
-remote is not enabled.
-
-You can also manually register a ssh remote. First set up the git remote
-as usual. Then run `git annex initremote type=git name=foo
-location=$url`.
-
-[[!meta title="webapp shows transfer from 'unknown' when no remote is configured for a system that is downloading files"]]
-
-[[!tag confirmed]]
diff --git a/doc/bugs/remote_repo_marked_as___34__here__34__.mdwn b/doc/bugs/remote_repo_marked_as___34__here__34__.mdwn
deleted file mode 100644
--- a/doc/bugs/remote_repo_marked_as___34__here__34__.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-### Please describe the problem.
-
-``git annex info`` shows a local repo as "not here" (withou the ``[here]`` tag), and shows a remote repo with the ``[here]`` tag.
-
-I had to manually edit `.git/config` to set my local repo's UUID to the correct one.
-
-> Well, git-annex can only display information that you've told it. 
-> In this case you seem to have done something wrong with UUIDs, and so it
-> displayed [here] next to the UUID of the local repo, as it's supposed to.
-> There's no bug here I think. [[done]] --[[Joey]]
-
-### What steps will reproduce the problem?
-
-I just ``git annex dead`` an old repo, and ``git annex semitrust`` a new repo by the same name as the old repo.
-
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150731-1build1
-
-Lubuntu 15.10
-
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Yes, lots of luck (need more skill).
-
-git-annex may need more error catches to prevent a wrong order of commands from corrupting a repo. But still, git annex works great.
diff --git a/doc/bugs/remotes_disappeared.mdwn b/doc/bugs/remotes_disappeared.mdwn
deleted file mode 100644
--- a/doc/bugs/remotes_disappeared.mdwn
+++ /dev/null
@@ -1,300 +0,0 @@
-### Please describe the problem.
-
-Some remotes disappeared from `git annex info` after synchronising with a new repo.
-
-### What steps will reproduce the problem?
-
-1. have a nice repository full of remotes and special remotes
-2. create a new repository with `git init; git annex init; git reinit <some UUID from a previously lost repository>`
-3. sync the two repositories
-
-Expected the result: restore the lost repository the its previous state.
-
-Actual result: previous state available, but lost track of other repositories.
-
-I suspect there may be a relation to an old "forget history" transition at play here, as the last commit on the git-annex branch is:
-
-```
-commit 266099a48af81eab71d27741b43776372aa519c4
-Merge: 13ed0a6 05681b9
-Author: Antoine Beaupré <anarcat@debian.org>
-Date:   Wed Mar 30 12:49:55 2016 -0400
-
-    continuing transition ["forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget dead remotes"]
-```
-
-So in short, some remotes that i never marked as dead seem to be caught in the whirlpool of `forget` transitions.
-
-### What version of git-annex are you using? On what operating system?
-
- 5.20151208-1~bpo8+1 on debian jessie.
-
-### Please provide any additional information below.
-
-So here's what i could salvage from my terminal history. Note that window resizing may have truncated some lines. Apologies for the mess...
-
-    [1077]anarcat@angela:cb39412b-d221-4846-a9dd-cdbabd9958f1$ sudo mkdir Music
-    [1078]anarcat@angela:cb39412b-d221-4846-a9dd-cdbabd9958f1$ sudo chown anarcat Music
-    [1079]anarcat@angela:cb39412b-d221-4846-a9dd-cdbabd9958f1$ cd Music/
-    [1082]anarcat@angela:Music$ git init
-    Dépôt Git vide initialisé dans /media/anarcat/cb39412b-d221-4846-a9dd-cdbabd9958f1/Music/.gi
-    [1083]anarcat@angela:Music$ git annex init
-    init  ok
-    (recording state in git...)
-    [1084]anarcat@angela:Music130$ git annex reinit 6f812272-18c8-4346-b68a-f57ae50f657e
-    reinit 6f812272-18c8-4346-b68a-f57ae50f657e ok
-    [1086]anarcat@angela:Music$ git remote add origin ~/mp3
-    [1087]anarcat@angela:Music$ git remote update # 12:44
-    Récupération de origin
-    warning: no common commits
-    remote: Décompte des objets: 819312, fait.
-    remote: Compression des objets: 100% (368189/368189), fait.
-    Réception d'objets: 100% (819312/819312), 64.97 MiB | 5.19 MiB/s, fait.
-    remote: Total 819312 (delta 653024), reused 588679 (delta 449859)
-    Depuis /home/anarcat/mp3
-     * [nouvelle branche] git-annex  -> origin/git-annex
-     * [nouvelle branche] master     -> origin/master
-     * [nouvelle branche] synced/git-annex -> origin/synced/git-annex
-     * [nouvelle branche] synced/master -> origin/synced/master
-     * [nouvelle étiquette] bak        -> bak
-    [1089]anarcat@angela:Music$ git annex merge
-    merge git-annex (merging origin/git-annex origin/synced/git-annex into git-annex...)
-    (recording state in git...)
-    [1092]anarcat@angela:Music$ git co master
-    Extraction des fichiers: 100% (22187/22187), fait.
-    La branche master est paramétrée pour suivre la branche distante master depuis origin.
-    Déjà sur 'master'
-    [1099]anarcat@angela:Music130$ date; time git annex get --quiet --in here; date
-    mercredi 30 mars 2016, 12:53:29 (UTC-0400)
-    sha256sum: .git/annex/tmp/SHA256E-s4476433--bb954dfe81f3d0906a18e53d02040d1d8f8e78917552e0033b056bbf885710d9.mp3: Aucun fichier ou dossier de ce type
-      sha256sum failed
-    git-annex: .git/annex/tmp/SHA256E-s4476433--bb954dfe81f3d0906a18e53d02040d1d8f8e78917552e0033b056bbf885710d9.mp3: openBinaryFile: does not exist (No such file or directory)
-    git-annex: get: 1 failed
-    Command exited with non-zero status 1
-    156.09user 39.26system 36:44.62elapsed 8%CPU (0avgtext+0avgdata 44900maxresident)k
-    8775224inputs+5811728outputs (51major+281689minor)pagefaults 0swaps
-    mercredi 30 mars 2016, 13:30:36 (UTC-0400)
-
-... in the last step, the external device disappeared and the transfer failed.
-
-After reconnecting the device, I tried to synchronise its content with the content of another device, but that device is gone!
-
-[[!format sh """
-[1013]anarcat@angela:Music1$ git annex info --fast # first notice how the remotes are not the same on the two repositories
-repository mode: indirect
-trusted repositories: 0
-semitrusted repositories: 5
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        0f9185ea-8462-4230-8cae-462a1ad0df36 -- origin
-        45124790-dbb7-4e2e-bc0a-acfb618a01e0 -- anarcat@angela:/media/anarcat/cb39412b-d221-4846-a9dd-cdbabd9958f1/Music
-        6f812272-18c8-4346-b68a-f57ae50f657e -- here
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 4.68 gigabytes (+1 megabyte reserved)
-[1014]anarcat@angela:Music$ cd ~/mp3
-[1015]anarcat@angela:mp3$ git annex info --fast # here there is a lot more remotes!
-repository mode: indirect
-trusted repositories: 4
-        22921df6-ff75-491c-b5d9-5a2aab33a689 -- anarcat@marcos:/media/anarcat/79884590-6445-4a6f-ae12-050b9a7c1912/mp3
-        b7802161-c984-4c9f-8d05-787a29c41cfe -- anarcat@marcos:/srv/mp3 [marcos]
-        c2ca4a13-9a5f-461b-a44b-53255ed3e2f9 -- anarcat@desktop008:/srv/musique/anarcat/mp3 [markov]
-        f8818d12-9882-4ca5-bc0f-04e987888a8d -- anarcat@marcos:/media/anarcat/green_crypt/mp3/
-semitrusted repositories: 8
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        0f9185ea-8462-4230-8cae-462a1ad0df36 -- anarcat@angela:~/mp3 [here]
-        3f6d8082-6f4b-4faa-a3d9-bd5db1891077 -- anarcat@lab-sc.no-ip.org:mp3
-        4249a4ea-343a-43a8-9bba-457d2ff87c7d -- rachel@topcrapn:~/Musique/MUSIC/anarcat
-        487dda55-d164-4bf1-9d85-66caaa9c0743 -- 300GB hard drive labeled VHS [VHS]
-        6f812272-18c8-4346-b68a-f57ae50f657e -- htcones
-        f867da6f-78cb-49be-a0db-d1c8e5f53664 -- n900
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 13.51 gigabytes (+1 megabyte reserved)
-[1016]anarcat@angela:mp3$ cd -
-/media/anarcat/cb39412b-d221-4846-a9dd-cdbabd9958f1/Music
-[1017]anarcat@angela:Music$ git annex find --in f867da6f-78cb-49be-a0db-d1c8e5f53664 --not --in here # trying to sync with the n900 remote
-git-annex: there is no available git remote named "f867da6f-78cb-49be-a0db-d1c8e5f53664"
-[1018]anarcat@angela:Music1$ git annex sync # maybe some data is missing?
-commit  ok
-pull origin
-ok
-push origin
-Décompte des objets: 6368, fait.
-Delta compression using up to 2 threads.
-Compression des objets: 100% (6361/6361), fait.
-Écriture des objets: 100% (6368/6368), 693.21 KiB | 565.00 KiB/s, fait.
-Total 6368 (delta 5030), reused 11 (delta 3)
-To /home/anarcat/mp3
-   05681b9..266099a  git-annex -> synced/git-annex
-ok
-[1019]anarcat@angela:Music$ git annex find --in f867da6f-78cb-49be-a0db-d1c8e5f53664 --not --in here # trying again
-git-annex: there is no available git remote named "f867da6f-78cb-49be-a0db-d1c8e5f53664"
-[1020]anarcat@angela:Music1$ git annex find --in n900 --not --in here # of course, n900 is not a git remote locally
-git-annex: there is no available git remote named "n900"
-[1021]anarcat@angela:Music1$ git annex info --fast # and it's still not there
-repository mode: indirect
-trusted repositories: 0
-semitrusted repositories: 5
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        0f9185ea-8462-4230-8cae-462a1ad0df36 -- origin
-        45124790-dbb7-4e2e-bc0a-acfb618a01e0 -- anarcat@angela:/media/anarcat/cb39412b-d221-
-        6f812272-18c8-4346-b68a-f57ae50f657e -- here
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 4.68 gigabytes (+1 megabyte reserved)
-[1022]anarcat@angela:Music$ cd -
-/home/anarcat/mp3
-[1023]anarcat@angela:mp3$ git annex info --fast # worse: it's gone from my main repo!!
-repository mode: indirect
-trusted repositories: 2
-        b7802161-c984-4c9f-8d05-787a29c41cfe -- marcos
-        c2ca4a13-9a5f-461b-a44b-53255ed3e2f9 -- markov
-semitrusted repositories: 6
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        0f9185ea-8462-4230-8cae-462a1ad0df36 -- here
-        45124790-dbb7-4e2e-bc0a-acfb618a01e0 -- anarcat@angela:/media/anarcat/cb39412b-d221-4846-a9dd-cdbabd9958f1/Music
-        487dda55-d164-4bf1-9d85-66caaa9c0743 -- VHS
-        6f812272-18c8-4346-b68a-f57ae50f657e -- htcones
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 13.74 gigabytes (+1 megabyte rese
-"""]]
-
-In my opinion, git-annex shouldn't have lost the following repositories:
-
-        22921df6-ff75-491c-b5d9-5a2aab33a689 -- anarcat@marcos:/media/anarcat/79884590-6445-4a6f-ae12-050b9a7c1912/mp3
-        f8818d12-9882-4ca5-bc0f-04e987888a8d -- anarcat@marcos:/media/anarcat/green_crypt/mp3/
-        3f6d8082-6f4b-4faa-a3d9-bd5db1891077 -- anarcat@lab-sc.no-ip.org:mp3
-        4249a4ea-343a-43a8-9bba-457d2ff87c7d -- rachel@topcrapn:~/Musique/MUSIC/anarcat
-        f867da6f-78cb-49be-a0db-d1c8e5f53664 -- n900
-
-Those are repositories that are in the git-annex history, but that don't have git remotes associated with them, for various reasons. I do *not* believe I have marked any of those as "dead" except maybe 3f6d8082-6f4b-4faa-a3d9-bd5db1891077. f8818d12-9882-4ca5-bc0f-04e987888a8d was used during the weekend to do my backups, so it's definitely not dead.
-
-It is also interesting to note that even though `git annex info` doesn't know about the remotes, there is still tracking information about all of them (except the 3f one):
-
-[[!format txt """
-$ git cat-file -p git-annex:001/694/SHA256E-s6732474--e084001bc23a90bfd65d9a3fa20b7bf878be6a49fce7e5a9846efeeba8815516.mp3.log
-1376877225.866849s 1 b7802161-c984-4c9f-8d05-787a29c41cfe
-1378838314.653241s 1 c2ca4a13-9a5f-461b-a44b-53255ed3e2f9
-1379790798.215871s 1 0f9185ea-8462-4230-8cae-462a1ad0df36
-1391065040.28672s 1 22921df6-ff75-491c-b5d9-5a2aab33a689
-1397893686.079999s 1 487dda55-d164-4bf1-9d85-66caaa9c0743
-1398657510.376249s 1 4249a4ea-343a-43a8-9bba-457d2ff87c7d
-1407479149.838437s 1 f8818d12-9882-4ca5-bc0f-04e987888a8d
-1407479149.929843s 1 f8818d12-9882-4ca5-bc0f-04e987888a8d
-1407510928.457047s 1 487dda55-d164-4bf1-9d85-66caaa9c0743
-1424134721.290026s 1 b7802161-c984-4c9f-8d05-787a29c41cfe
-1424227570.153123s 1 487dda55-d164-4bf1-9d85-66caaa9c0743
-1445468844.056214s 1 f867da6f-78cb-49be-a0db-d1c8e5f53664
-1458775384.454193s 0 6f812272-18c8-4346-b68a-f57ae50f657e
-"""]]
-
-it's a mystery to me why that stuff disappeared from `git-annex info`. it's especially confusing since some commands seem to recognize there *was* a remote there:
-
-    $ git annex enableremote f867da6f-78cb-49be-a0db-d1c8e5f53664
-    git-annex: Unknown special remote.
-            f867da6f-78cb-49be-a0db-d1c8e5f53664 -- n900
-
-Notice how `n900` was shown here: that metadata obviously *is* somewhere! The uuid.log file is obviously damaged:
-
-    [1036]anarcat@angela:mp31$ git cat-file -p git-annex:uuid.log
-    45124790-dbb7-4e2e-bc0a-acfb618a01e0 anarcat@angela:/media/anarcat/cb39412b-d221-4846-a9dd-cdbabd9958f1/Music timestamp=1459356223.537195s
-
-... and it clearly looks like the file was damaged on that new repo:
-
-[[!format txt """
-*   266099a N (synced/git-annex, git-annex) continuing transition ["forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget dead remotes"] (il y a 75 minutes) <Antoine Beaupré>
-|\
-* | 298cc10 N (htcones/synced/git-annex) continuing transition ["forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget dead remotes","forget git history","forget dead remotes"] (il y a 13 jours) <Antoine Beaupré>| |
-| | diff --git a/uuid.log b/uuid.log
-| | index 656b369..a730ad0 100644
-| | --- a/uuid.log
-| | +++ b/uuid.log
-| | @@ -1,14 +1,9 @@
-| |  0f9185ea-8462-4230-8cae-462a1ad0df36 anarcat@angela:~/mp3 timestamp=1376882226.164478s
-| |  22921df6-ff75-491c-b5d9-5a2aab33a689 anarcat@marcos:/media/anarcat/79884590-6445-4a6f-ae12-050b9a7c1912/mp3 timestamp=1397741440.125973s
-| | -2fec390f-f21b-4293-be50-f219be10ea02 anarcat@marcos:/media/anarcat/Nokia N900/.sounds/mp3-test timestamp=1444709804.587901s
-| |  3f6d8082-6f4b-4faa-a3d9-bd5db1891077 anarcat@lab-sc.no-ip.org:mp3 timestamp=1397882243.602438s
-| | -3f6d8082-6f4b-4faa-a3d9-bd5db1891077 anarcat@serveur-maison:~/mp3 timestamp=1397870776.162703s
-| |  4249a4ea-343a-43a8-9bba-457d2ff87c7d rachel@topcrapn:~/Musique/MUSIC/anarcat timestamp=1398631775.545666s
-| |  487dda55-d164-4bf1-9d85-66caaa9c0743 300GB hard drive labeled VHS timestamp=1397880144.616515s
-| | -509d1cd7-ecd1-4e2f-803d-575d9c56a5bc anarcat@angela:/media/anarcat/Nokia N900/.sounds/mp3 timestamp=1444483581.960103s
-| |  b7802161-c984-4c9f-8d05-787a29c41cfe anarcat@marcos:/srv/mp3 timestamp=1376874943.951103s
-| |  c2ca4a13-9a5f-461b-a44b-53255ed3e2f9 anarcat@desktop008:/srv/musique/anarcat/mp3 timestamp=1410989161.237514s
-| | -c2ca4a13-9a5f-461b-a44b-53255ed3e2f9 anarcat@desktop008:/srv/musique/anarcat/musique/mp3 timestamp=1384884883.106166s
-| | -f641e18f-7cb1-49ba-abe1-7544b435b67f anarcat@marcos:/media/anarcat/Nokia N900/.sounds/mp3-init timestamp=1444708760.468268s
-| |  f867da6f-78cb-49be-a0db-d1c8e5f53664 n900 timestamp=1445438785.796624s
-| |  f8818d12-9882-4ca5-bc0f-04e987888a8d anarcat@marcos:/media/anarcat/green_crypt/mp3/ timestamp=1407470841.967597s
-"""]]
-
-So i guess i could manually edit that uuid.log file to restore my metadata, but i'm puzzled as to where my data went or how!
-
-### Workaround
-
-The workaround is to, of course, restore a known sane `uuid.log`:
-
-[[!format sh """
-[1048]anarcat@angela:~128$ git clone -b git-annex mp3 mp3.annex
-Clonage dans 'mp3.annex'...
-fait.
-Extraction des fichiers: 100% (32234/32234), fait.
-[1049]anarcat@angela:~$ cd mp3.annex/
-[1067]anarcat@angela:mp3.annex$ git co dfe1b77 uuid.log
-[1068]anarcat@angela:mp3.annex$ git status
-Sur la branche git-annex
-Votre branche est à jour avec 'origin/git-annex'.
-Modifications qui seront validées :
-  (utilisez "git reset HEAD <fichier>..." pour désindexer)
-
-        modifié :         uuid.log
-
-[1069]anarcat@angela:mp3.annex$ git commit -m"restore broken uuid.log"
-[git-annex 9628f3b] restore broken uuid.log
- 1 file changed, 14 insertions(+), 1 deletion(-)
- rewrite uuid.log (100%)
-[1070]anarcat@angela:mp3.annex$ git push
-Décompte des objets: 2, fait.
-Delta compression using up to 2 threads.
-Compression des objets: 100% (2/2), fait.
-Écriture des objets: 100% (2/2), 262 bytes | 0 bytes/s, fait.
-Total 2 (delta 1), reused 0 (delta 0)
-To /home/anarcat/mp3
-   266099a..9628f3b  git-annex -> git-annex
-[1071]anarcat@angela:mp3.annex$ cd -
-/home/anarcat
-[1072]anarcat@angela:~$ git ^C
-[1072]anarcat@angela:~130$ cd -
-/home/anarcat/mp3.annex
-[1072]anarcat@angela:mp3.annex$ cd ../mp3
-[1073]anarcat@angela:mp3$ git annex merge
-merge git-annex ok
-[1074]anarcat@angela:mp3$ git annex info --fast
-repository mode: indirect
-trusted repositories: 4
-        22921df6-ff75-491c-b5d9-5a2aab33a689 -- anarcat@marcos:/media/anarcat/79884590-6445-4a6f-ae12-050b9a7c1912/mp3
-        b7802161-c984-4c9f-8d05-787a29c41cfe -- anarcat@marcos:/srv/mp3 [marcos]
-        c2ca4a13-9a5f-461b-a44b-53255ed3e2f9 -- anarcat@desktop008:/srv/musique/anarcat/mp3 [markov]
-        f8818d12-9882-4ca5-bc0f-04e987888a8d -- anarcat@marcos:/media/anarcat/green_crypt/mp3/
-semitrusted repositories: 8
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        0f9185ea-8462-4230-8cae-462a1ad0df36 -- anarcat@angela:~/mp3 [here]
-        3f6d8082-6f4b-4faa-a3d9-bd5db1891077 -- anarcat@lab-sc.no-ip.org:mp3
-        4249a4ea-343a-43a8-9bba-457d2ff87c7d -- rachel@topcrapn:~/Musique/MUSIC/anarcat
-        487dda55-d164-4bf1-9d85-66caaa9c0743 -- 300GB hard drive labeled VHS [VHS]
-        6f812272-18c8-4346-b68a-f57ae50f657e -- htcones
-        f867da6f-78cb-49be-a0db-d1c8e5f53664 -- n900
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 13.44 gigabytes (+1 megabyte reserved)
-"""]]
-
-But it seems to me there is a weird interaction between transitions and fresh new git repo syncs... that could be fixed...
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Yes! Git-annex works generally well and, even though i often report bugs here, i am still quite happy with it. :) --[[anarcat]]
diff --git a/doc/bugs/removeDirectoryRecursive.mdwn b/doc/bugs/removeDirectoryRecursive.mdwn
deleted file mode 100644
--- a/doc/bugs/removeDirectoryRecursive.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-### Please describe the problem.
-Can't remove repositories
-
-### What steps will reproduce the problem?
-In repo view, click Actions and select Delete. Then enter "Yes, please do as I say!" in text field and click Delete this repo. Error! Internal Server Error: git [Param "config",Param "annex.autocommit",Param "false"] failed
-
-### What version of git-annex are you using? On what operating system?
-6.20160114-g6be9ee0 
-
-Mac OS X
-
-### Please provide any additional information below.
-
-I can't enable logging. When I do, I receive a similar error message
-
-"git [Param "config",Param "annex.diskreserve",Param "1 megabyte"] failed"
-
-I just downloaded and installed Git Annex. This problem was there from day 1.
-
-[[!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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-> Fixed it to properly delete the repo. [[done]] --[[Joey]]
diff --git a/doc/bugs/rsync__58___protocol_version_mismatch.mdwn b/doc/bugs/rsync__58___protocol_version_mismatch.mdwn
deleted file mode 100644
--- a/doc/bugs/rsync__58___protocol_version_mismatch.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-### Please describe the problem.
-This is a weird one. I'm getting rsync `protocol version mismatch -- is your shell clean?` on a particular file.
-
-I have tried to reproduce it but not been able.
-
- * First time it happened, I went to the problem repo and did a `get`, which worked, destroying the evidence. "Luckily", this happened again a few days later.
- * I thought maybe it was because there was a partial transfer in `.git/annex/tmp` with some specific characteristics. Nope, if I remove the file in `tmp` the problem remains.
- * I made another clone think it was the problem repo, transferred the file to that repo, no problem. Dropped it, pointed everything back to the original bad repo. Still bad.
- * Both sides are running `rsync  version 3.1.0  protocol version 31`.
-
-
-### What steps will reproduce the problem?
-
-Working on it. But I want to put the preliminaries here, in case someone else has seen this.
-
-### What version of git-annex are you using? On what operating system?
-
-Both sides are running `git-annex version: 5.20150508-g883d57f`, on Ubuntu 14.04.2 LTS.
-
-
-### 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
-$ git annex copy --to acozed claes/colt/20150511_174818.jpg 
-copy claes/colt/20150511_174818.jpg (checking acozed...) (to acozed...) 
-protocol version mismatch -- is your shell clean?
-(see the rsync man page for an explanation)
-rsync error: protocol incompatibility (code 2) at compat.c(176) [sender=3.1.1]
-
-  rsync failed -- run git annex again to resume file transfer
-failed
-git-annex: copy: 1 failed
-
-
-# End of transcript or log.
-"""]]
diff --git a/doc/bugs/rsync_fails_with_sync_error__58___syntax_or_usage_error_.mdwn b/doc/bugs/rsync_fails_with_sync_error__58___syntax_or_usage_error_.mdwn
deleted file mode 100644
--- a/doc/bugs/rsync_fails_with_sync_error__58___syntax_or_usage_error_.mdwn
+++ /dev/null
@@ -1,85 +0,0 @@
-### Please describe the problem.
-
-i tried to sync my home music annex to a server. Half the files worked nicely, but on the rest it fails with rsync errors.
-
-### What steps will reproduce the problem?
-
-git annex -d sync --content
-
-### What version of git-annex are you using? On what operating system?
-
-Client:
-
-ubuntu trusty
-Version: 5.20140517.4
-
-Server:
-
-ubuntu trusty
-Version: 5.20140412ubuntu1
-
-
-### Please provide any additional information below.
-
-[[!format sh """
-dirus-dom:/music$ git annex -d sync --content
-[2014-10-28 19:18:28 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","git-annex"]
-[2014-10-28 19:18:28 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","--hash","refs/heads/git-annex"]
-[2014-10-28 19:18:29 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/git-annex..1599d29eba7a0ec50217c2b4a3f4cc1ecc8b2116","--oneline","-n1"]
-[2014-10-28 19:18:29 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/git-annex..27b47301dcb5007705d1dcd5a414df964b840467","--oneline","-n1"]
-[2014-10-28 19:18:29 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/git-annex..a95ca0282fefcd774ec8a00b6f33c11f08f789d8","--oneline","-n1"]
-[2014-10-28 19:18:29 CET] chat: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","cat-file","--batch"]
-commit  [2014-10-28 19:18:29 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","commit","-a","-m","git-annex automatic sync"]
-ok
-[2014-10-28 19:18:31 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","symbolic-ref","HEAD"]
-[2014-10-28 19:18:31 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","refs/heads/master"]
-[2014-10-28 19:18:31 CET] call: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","--verify","-q","refs/heads/synced/master"]
-[2014-10-28 19:18:31 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/master..refs/heads/synced/master","--oneline","-n1"]
-pull sync.poelzi.org__music
-[2014-10-28 19:18:31 CET] read: ssh ["-O","stop","-S","poelzigit@sync.poelzi.org","-o","ControlMaster=auto","-o","ControlPersist=yes","localhost"]
-[2014-10-28 19:18:31 CET] call: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","fetch","sync.poelzi.org__music"]
-[2014-10-28 19:18:33 CET] call: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","--verify","-q","refs/remotes/sync.poelzi.org__music/master"]
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/master..refs/remotes/sync.poelzi.org__music/master","--oneline","-n1"]
-[2014-10-28 19:18:33 CET] call: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","--verify","-q","refs/remotes/sync.poelzi.org__music/synced/master"]
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/synced/master..refs/remotes/sync.poelzi.org__music/synced/master","--oneline","-n1"]
-ok
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","git-annex"]
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","show-ref","--hash","refs/heads/git-annex"]
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/git-annex..1599d29eba7a0ec50217c2b4a3f4cc1ecc8b2116","--oneline","-n1"]
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/git-annex..27b47301dcb5007705d1dcd5a414df964b840467","--oneline","-n1"]
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","log","refs/heads/git-annex..a95ca0282fefcd774ec8a00b6f33c11f08f789d8","--oneline","-n1"]
-[2014-10-28 19:18:33 CET] read: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","ls-files","--cached","-z","--"]
-[2014-10-28 19:18:33 CET] chat: git ["--git-dir=/exports/music/.git","--work-tree=/exports/music","check-attr","-z","--stdin","annex.backend","annex.numcopies","--"]
-copy Alan Parsons Project/Eye In The Sky/.07 - Psychobabble.mood copy Alan Parsons Project/Eye In The Sky/.07 - Psychobabble.mood (checking sync.poelzi.org__music...) [2014-10-28 19:18:43 CET] call: ssh ["-S",".git/annex/ssh/poelzigit@sync.poelzi.org","-o","ControlMaster=auto","-o","ControlPersist=yes","-T","poelzigit@sync.poelzi.org","git-annex-shell 'inannex' '/music/' 'SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood' --uuid 35a89672-4ff5-4d9a-9bf2-cedb272bb7cb"]
-(to sync.poelzi.org__music...)
-[2014-10-28 19:18:43 CET] read: rsync ["--progress","--inplace","--perms","-e","'ssh' '-S' '.git/annex/ssh/poelzigit@sync.poelzi.org' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=yes' '-T' 'poelzigit@sync.poelzi.org' 'git-annex-shell ''recvkey'' ''/music/'' ''SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood'' --uuid 35a89672-4ff5-4d9a-9bf2-cedb272bb7cb ''--'' ''remoteuuid=97a3cd71-ee6c-4437-8740-253cde0d32ae'' ''direct='' ''associatedfile=Alan Parsons Project/Eye In The Sky/.07 - Psychobabble.mood'' ''--'''","--","/exports/music/.git/annex/objects/20/Z4/SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood/SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood","dummy:"]
-rsync error: syntax or usage error (code 1) at main.c(1183) [sender=3.1.1]
-
-  rsync failed -- run git annex again to resume file transfer
-failed
-copy Alessandro Scarlatti/Motets - Gérard Lesne, Veronique Gens (1993) [300]/06 - Infirmata, Vulnerata - VI Semper Gratus.ogg copy Alessandro Scarlatti/Motets - Gérard Lesne, Veronique Gens (1993) [300]/06 - Infirmata, Vulnerata - VI Semper Gratus.ogg (checking sync.poelzi.org__music...) [2014-10-28 19:18:48 CET] call: ssh ["-S",".git/annex/ssh/poelzigit@sync.poelzi.org","-o","ControlMaster=auto","-o","ControlPersist=yes","-T","poelzigit@sync.poelzi.org","git-annex-shell 'inannex' '/music/' 'SHA256E-s3847396--05c5498f08c727645ba84270cb8d82da69a3c9bede35520aa3128b938d003a3d.ogg' --uuid 35a89672-4ff5-4d9a-9bf2-cedb272bb7cb"]
-(to sync.poelzi.org__music...)
-[2014-10-28 19:18:48 CET] read: rsync ["--progress","--inplace","--perms","-e","'ssh' '-S' '.git/annex/ssh/poelzigit@sync.poelzi.org' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=yes' '-T' 'poelzigit@sync.poelzi.org' 'git-annex-shell ''recvkey'' ''/music/'' ''SHA256E-s3847396--05c5498f08c727645ba84270cb8d82da69a3c9bede35520aa3128b938d003a3d.ogg'' --uuid 35a89672-4ff5-4d9a-9bf2-cedb272bb7cb ''--'' ''remoteuuid=97a3cd71-ee6c-4437-8740-253cde0d32ae'' ''direct='' ''associatedfile=Alessandro Scarlatti/Motets - G\233rard Lesne, Veronique Gens (1993) [300]/06 - Infirmata, Vulnerata - VI Semper Gratus.ogg'' ''--'''","--","/exports/music/.git/annex/objects/XJ/f9/SHA256E-s3847396--05c5498f08c727645ba84270cb8d82da69a3c9bede35520aa3128b938d003a3d.ogg/SHA256E-s3847396--05c5498f08c727645ba84270cb8d82da69a3c9bede35520aa3128b938d003a3d.ogg","dummy:"]
-rsync error: syntax or usage error (code 1) at main.c(1183) [sender=3.1.1]
-
-  rsync failed -- run git annex again to resume file transfer
-failed
-^C
-
-
-Calling this through python gives:
-
-In [5]: subprocess.call(["rsync", "--debug=all", "--progress","--inplace","--perms","-e","'ssh' '-S' '.git/annex/ssh/poelzigit@sync.poelzi.org' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=yes' '-T' 'poelzigit@sync.poelzi.org' 'git-annex-shell ''recvkey'' ''/music/'' ''SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood'' --uuid 35a89672-4ff5-4d9a-9bf2-cedb272bb7cb ''--'' ''remoteuuid=97a3cd71-ee6c-4437-8740-253cde0d32ae'' ''direct='' ''associatedfile=Alan Parsons Project/Eye In The Sky/.07 - Psychobabble.mood'' ''--'''","--","/exports/music/.git/annex/objects/20/Z4/SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood/SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood","dummy:"])
-opening connection using: ssh -S .git/annex/ssh/poelzigit@sync.poelzi.org -o ControlMaster=auto -o ControlPersist=yes -T poelzigit@sync.poelzi.org "git-annex-shell 'recvkey' '/music/' 'SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood' --uuid 35a89672-4ff5-4d9a-9bf2-cedb272bb7cb '--' 'remoteuuid=97a3cd71-ee6c-4437-8740-253cde0d32ae' 'direct=' 'associatedfile=Alan Parsons Project/Eye In The Sky/.07 - Psychobabble.mood' '--'" dummy rsync --server -pe.Lsfx --log-format=X --debug=ALL --inplace . .  (19 args)
-(Client) Protocol versions: remote=31, negotiated=31
-[sender] change_dir(/exports/music/.git/annex/objects/20/Z4/SHA256E-s3000--da8a3336a484a171a438c99660260cc35cbd37c339dd2c18447cd025064bc00b.mood)
-send_files starting
-send_files phase=1
-send_files phase=2
-send files finished
-total: matches=0  hash_hits=0  false_alarms=0 data=0
-rsync error: syntax or usage error (code 1) at main.c(1183) [sender=3.1.1]
-[sender] _exit_cleanup(code=1, file=main.c, line=1183): about to call exit(1)
-
-
-"""]]
diff --git a/doc/bugs/rsync_transport__58___username_not_respected.mdwn b/doc/bugs/rsync_transport__58___username_not_respected.mdwn
deleted file mode 100644
--- a/doc/bugs/rsync_transport__58___username_not_respected.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-### Please describe the problem.
-
-I created an encrypted rsync remote with a username (user@host). The rsync command issued by git-annex doesn't contain the username. I solved the problem using .ssh/config.
-
-### What steps will reproduce the problem?
-
-
-[[!format sh """
-# Add remote like that
-git-annex initremote encrsync type=rsync rsyncurl=user@xxx.rsync.net:rsync/X keyid=0xXXX
-# Sync it
-git-annex sync --content
-
-
-# You'll see
-$> ps ax | grep rsync
-30652 pts/3    S+     0:00 /home/ganwell/bin/git-annex.linux//lib64/ld-linux-x86-64.so.2 --library-path /home/ganwell/bin/git-annex.linux//etc/ld.so.conf.d:/home/ganwell/bin/git-annex.linux//usr/lib/x86_64-linux-gnu/gconv:/home/ganwell/bin/git-annex.linux//usr/lib/x86_64-linux-gnu/libc:/home/ganwell/bin/git-annex.linux//usr/lib:/home/ganwell/bin/git-annex.linux//usr/lib/x86_64-linux-gnu:/home/ganwell/bin/git-annex.linux//lib64:/home/ganwell/bin/git-annex.linux//lib/x86_64-linux-gnu: /home/ganwell/bin/git-annex.linux/shimmed/rsync/rsync xxx.rsync.net:rsync/X/9fa/634/'GPGHMACSHA1--X/GPGHMACSHA1--X
-"""]]
-
-
-
-### What version of git-annex are you using? On what operating system?
-
-OS: Linux
-
-Ver: git-annex version: 5.20140210-g1e0a3ad
-
-Type: prebuilt
-
-### 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.
-"""]]
-
-> Argh! How did that break? I know it used to work.
-> I have fixed it, unfortunately the fix was too late for today's release,
-> but it will be available in autobuilds shortly.
-> [[fixed|done]] --[[Joey]] 
diff --git a/doc/bugs/s3_InternalIOException__63__.mdwn b/doc/bugs/s3_InternalIOException__63__.mdwn
deleted file mode 100644
--- a/doc/bugs/s3_InternalIOException__63__.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-### Please describe the problem.
-
-I got the following errors from the assistant, in `.git/annex/daemon.log`:
-
-    InternalIOException send: resource vanished (Broken pipe)
-
-Then subsequent transfers seem to fail with:
-
-    InternalIOException send: resource vanished (Connection reset by peer)
-
-Workaround: restart the assistant.
-
-### What steps will reproduce the problem?
-
-It's unclear. The assistant is trying to sync a lot of stuff to S3 right now, as files are regularly added into the repository and the assistant migrates them all there. The repository is setup as a "source" repository to make sure it doesn't keep files and send them all to s3.
-
-### What version of git-annex are you using? On what operating system?
-
-standalone tarball `5.20150508-g883d57f` on Ubuntu Precise.
-
-### Please provide any additional information below.
-
-here are the two latest log files, but all previous logfiles available are similar...
-
-http://paste.ubuntu.com/11721025/
-http://paste.ubuntu.com/11721028/
-
--- [[anarcat]]
diff --git a/doc/bugs/should_be_possible_to_use_ssh_hosts_from_.ssh__47__config.mdwn b/doc/bugs/should_be_possible_to_use_ssh_hosts_from_.ssh__47__config.mdwn
deleted file mode 100644
--- a/doc/bugs/should_be_possible_to_use_ssh_hosts_from_.ssh__47__config.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-### Please describe the problem.
-
-I am using a ssh-host configured in .ssh/config in a corporate-environment like this:
-
-[[!format sh """
-  Host home
-        Hostname 1.2.3.4
-        Port 443
-        ProxyCommand corkscrew proxy.fqdn 8080 %h %p ~/.authfile
-        # http://www.agroman.net/corkscrew/
-"""]]
-
-I now want to be able to add this host as a remote repository, but don't have the ability to add it. A tunnel to localhost would be possible but then I would have to setup this portforwarding for git-annex separately every time it is started.
-
-### What steps will reproduce the problem?
-
-Add a remote host that is only reachable through a proxy.
-
-### What version of git-annex are you using? On what operating system?
-
-gentoo
-git-annex-5.20141125 {+assistant +cryptohash +dbus +desktop-notify +dns +feed +inotify +pairing +production +quvi +s3 +tahoe +tdfa +testsuite +webapp +webapp-secure +webdav +xmpp}
-
-
-
-Is it possible to use this predefined host, or add the possibility to configure git-annex like above?
diff --git a/doc/bugs/shouldn__39__t_keep_permissions_of_the_ssh_remote__63__.mdwn b/doc/bugs/shouldn__39__t_keep_permissions_of_the_ssh_remote__63__.mdwn
deleted file mode 100644
--- a/doc/bugs/shouldn__39__t_keep_permissions_of_the_ssh_remote__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-### Please describe the problem.
-
-Initially generated an annex while having a restrictive umask 077.  Then cloned that repository to another host for public consumption so directory had proper/good permissions set allowing group to access.  And everything is accessible but not the load which I 'annex get'ed.  Key directories were readable but not the content.  I guess there is somewhere 'preserve permissions' setting for rsync/scp which imho shouldn't be there and content should inherit local/environment settings
-
-### What version of git-annex are you using? On what operating system?
-
-6.20160208+gitg1ac9034-1~ndall+1
-
-[[!meta author=yoh]]
diff --git a/doc/bugs/signal_weirdness.mdwn b/doc/bugs/signal_weirdness.mdwn
deleted file mode 100644
--- a/doc/bugs/signal_weirdness.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-For the record, there is a slight weirdness with how git-annex
-handles a signal like ctrl-c.
-
-For example:
-
-	joey@gnu:~/tmp/b>git annex copy a b --to origin
-	copy a (checking origin...) (to origin...) 
-	SHA256-s104857600--20492a4d0d84f8beb1767f6616229f85d44c2827b64bdbfb260ee12fa1109e0e
-	        3272   0%    0.00kB/s    0:00:00  ^C
-	zsh: interrupt  git annex copy a --to origin
-	joey@gnu:~/tmp/b>
-	rsync error: unexplained error (code 130) at rsync.c(549) [sender=3.0.9]
-
-Here git-annex exits before rsync has fully exited. Not a large problem
-but sorta weird.
-
-The culprit is `CmdLine.startup` in Utility.SafeCommand, which installs
-a default signal handler for SIGINT, which causes it to immediatly
-terminate git-annex. rsync, in turn, has its own SIGINT handler, which 
-prints the message, typically later.
-
-(Why it prints that message and not its more usual message about having
-received a signal, I'm not sure?)
-
-It's more usual for a `system` like thing to block SIGINT, letting the child
-catch it and exit, and then detecting the child's exit status and terminating. 
-However, since rsync *is* trapping SIGINT, and exiting nonzero explicitly,
-git-annex can't tell that rsync failed due to a SIGINT by examining the
-`waitpid` result.
-And, git-annex typically doesn't stop when a single child fails. In the
-example above, it would go on to copy `b` after a ctrl-c!
-
-A further complication is that git-annex is itself a child process
-of git, which does not block SIGINT either. So if git-annex blocks SIGINT,
-it will be left running in the background after git exits, and continuing
-with further actions too. (Perhaps its SIGINT handling is a bug in git.)
-
-Now, rsync does have a documented exit code it uses after a SIGINT.
-But other programs git-annex runs generally do not. So it would be possible
-to special case in support for rsync, blocking SIGINT while running it,
-noticing it exited with 20, and git-annex then stopping. But this is
-ugly and failure prone if rsync's code 20 changes. And it only
-would fix the rsync case, not helping with other commands like wget, unless
-it assumes they never trap SIGINT on their own.
-
-Which is why the current behavior of not blocking SIGINT was chosen,
-as a less bad alternative. Still, I'd like to find a better one.
---[[Joey]] 
-
-[[!tag confirmed]]
diff --git a/doc/bugs/slash_in_metadata_breaks_field__61____42___view.mdwn b/doc/bugs/slash_in_metadata_breaks_field__61____42___view.mdwn
deleted file mode 100644
--- a/doc/bugs/slash_in_metadata_breaks_field__61____42___view.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-### Please describe the problem.
-
-When using the metadata driven view fields values that contain a slash break the view field=* functionality
-
-### What steps will reproduce the problem?
-
-    $ git annex metadata --set test=a/b file.tex
-    $ git annex view test=*    
-    view  (searching...) 
-    git-annex: fd:13: commitBuffer: invalid argument (invalid character)
-    failed
-    git-annex: view: 1 failed
-
-    
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20151218-g5008846 on ArchLinux
-
-
-### Please provide any additional information below.
-
-To me it seems like this is only occuring during a field=* view.
-Everywhere else the field value behaves normally, For example its possible to directly address the field value in a view without issue.
-
-    $ git annex view test=a/b
-    view  (searching...) 
-    Switched to branch 'views/(test=a/b)'
-    ok
-
-
-I dont have any issues with non latin characters so this doesnt seem related to the locale issues in [https://git-annex.branchable.com/bugs/view_fails_with___34__invalid_character__34__/](https://git-annex.branchable.com/bugs/view_fails_with___34__invalid_character__34__/)
-
-I was trying out the metadata extraction via libextractor and for the mimetype there often are slashes involved.
-
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-Apart from this git-annex is working very well for me. I mostly use it as an archive, distributing numerous copies on various hard drives and cloud providers and keeping track of what is where.Its an amazing tool for that.
-
-
-> [[done]] --[[Joey]] 
diff --git a/doc/bugs/some_tests_fail_while_running_under_NFS.mdwn b/doc/bugs/some_tests_fail_while_running_under_NFS.mdwn
deleted file mode 100644
--- a/doc/bugs/some_tests_fail_while_running_under_NFS.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-### Please describe the problem.
-
-4 out of 269 tests failed (4468.00s)
-
-hard to assess how critical they are... 
-
-### What steps will reproduce the problem?
-
-run git annex test
-
-### What version of git-annex are you using? On what operating system?
-
-6.20160307+gitgb095561-1~ndall+1
-
-### Please provide any additional information below.
-
-[Full log](http://www.onerussian.com/tmp/git-annex-tests-6.20160307+gitgb095561-1~ndall+1.log)
-
-[[!format sh """
-smaug:/mnt/nfs/scrap/datalad/test_annex
-$> grep -B5 FAIL git-annex-tests-6.20160307+gitgb095561-1~ndall+1.log
-    crypto:                                               OK (50.57s)
-    preferred content:                                    OK (20.36s)
-    add subdirs:                                          OK (8.97s)
-    addurl:                                               .t/tmprepo73/.git/annex/keys: removeDirectoryRecursive: unsatisfied constraints (Directory not empty)
-sleeping 10 seconds and will retry directory cleanup
-FAIL
---
-   293ed4c..c16b350  git-annex -> synced/git-annex
-   dd272eb..ffe1721  master -> synced/master
-OK (11.64s)
-    addurl:                                               .t/tmprepo73/.git/annex/keys/.nfs0000000009a305870000020e: removeDirectoryRecursive: resource busy (Device or resource busy)
-sleeping 10 seconds and will retry directory cleanup
-FAIL
---
-   0993b09..c09ddc4  git-annex -> synced/git-annex
-   a823824..520f58c  master -> synced/master
-OK (13.67s)
-    addurl:                                               .t/tmprepo73/.git/annex/keys/.nfs0000000009a305870000020e: removeDirectoryRecursive: resource busy (Device or resource busy)
-sleeping 10 seconds and will retry directory cleanup
-FAIL
---
-OK (14.59s)
-    addurl:                                               On branch master
-nothing to commit, working directory clean
-.t/tmprepo73/.git/annex/keys/.nfs0000000009a305870000020e: removeDirectoryRecursive: resource busy (Device or resource busy)
-sleeping 10 seconds and will retry directory cleanup
-FAIL
-
-
-# End of transcript or log.
-"""]]
-
-[[!meta author=yoh]]
diff --git a/doc/bugs/ssh__58___unprotected_private_key_file.mdwn b/doc/bugs/ssh__58___unprotected_private_key_file.mdwn
deleted file mode 100644
--- a/doc/bugs/ssh__58___unprotected_private_key_file.mdwn
+++ /dev/null
@@ -1,62 +0,0 @@
-### Please describe the problem.
-
-When pairing two machines with git-annex assistant, the assistant kept asking for the ssh password.  Checking the git-annex daemon logs, I saw that ssh was refusing to use the key the assistant had created because it was group readable (see below for the log extract).
-
-### What steps will reproduce the problem?
-
-The assistant was installed from the ubuntu precise ppa backport on an up-to-date copy of ubuntu precise.
-It was started using "git-annex webapp --listen=XYZ".
-This was done on two machines on the same network.
-Created a repository using the web-app, the same on both machines.
-Did a pair request.  This initially worked fine, until it got to the point of using ssh, when it started asking for the password many many  times.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20140306
-build flags: Assistant Webapp Pairing S3 WebDAV Inotify DBus XMPP Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-local repository version: 5
-supported repository version: 5
-upgrade supported from repository versions: 0 1 2 4
-
-Ubuntu 12.04.4 LTS
-
-### 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
-
-(started...) Generating public/private rsa key pair.
-Your identification has been saved in /tmp/git-annex-keygen.0/key.
-Your public key has been saved in /tmp/git-annex-keygen.0/key.pub.
-The key fingerprint is:
-2b:f4:28:35:72:2c:9e:5b:d3:1d:d1:a1:b7:c7:a5:34 ABC@XYZ
-The key's randomart image is:
-+--[ RSA 2048]----+
-|            .    |
-|           o .   |
-|          o o E .|
-|     .     o + + |
-|    o * S . . +  |
-|   . B = o . .   |
-|    + = + .      |
-|     + o         |
-|    .            |
-+-----------------+
-[2014-03-14 13:35:45 GMT] main: Pairing in progress
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-Permissions 0620 for 'ABC/.ssh/git-annex/key.git-annex-XYZ_annex' are too open.
-It is required that your private key files are NOT accessible by others.
-This private key will be ignored.
-bad permissions: ignore key: ABC/.ssh/git-annex/key.git-annex-XYZ_annex
-(merging XYZ_annex/git-annex into git-annex...)
-
-# End of transcript or log.
-"""]]
-
-> [[Fixed|done]]; the code made sure the file did not have any group or
-> world read bits, but did not clear write bits. --[[Joey]]
diff --git a/doc/bugs/stack_build_Setup.hs_dependencies.mdwn b/doc/bugs/stack_build_Setup.hs_dependencies.mdwn
deleted file mode 100644
--- a/doc/bugs/stack_build_Setup.hs_dependencies.mdwn
+++ /dev/null
@@ -1,78 +0,0 @@
-### Please describe the problem.
-
-`stack build` on a fresh clone of git-annex at e029eb8b fails with
-
-    git-annex-6.20160229: configure
-
-    Utility/FileSystemEncoding.hs:30:18:
-        Could not find module ‘Data.Hash.MD5’
-        Use -v to see a list of the files searched for.
-
-    Utility/FileSystemEncoding.hs:32:8:
-        Could not find module ‘Data.Bits.Utils’
-        Perhaps you meant
-          Data.BitUtil
-          Data.Bits.Lens (from lens-4.13@lens_IUJoiaRWYAQ6ieqgqTJZ5D)
-        Use -v to see a list of the files searched for.
-
-    Utility/FileSystemEncoding.hs:34:8:
-        Could not find module ‘Data.List.Utils’
-        Perhaps you meant
-          Data.BitUtil
-          Data.List.Lens (from lens-4.13@lens_IUJoiaRWYAQ6ieqgqTJZ5D)
-          Data.List.Split (from split-0.2.3@split_CDzOynTh4l8Ahg1HaWUL4Z)
-        Use -v to see a list of the files searched for.
-
-    Utility/Process.hs:53:8:
-        Could not find module ‘System.Log.Logger’
-        Perhaps you meant
-          System.Log.FastLogger (from fast-logger-2.4.1@fastl_1adi3bwIxvVE3Gyx2Jy1k0)
-        Use -v to see a list of the files searched for.
-
-    Utility/SafeCommand.hs:14:8:
-        Could not find module ‘Data.String.Utils’
-        Perhaps you meant
-          Data.String.UTF8 (from utf8-string-1.0.1.1@utf8s_L8eKHa7Iv9q7FVKUYW6u4b)
-        Use -v to see a list of the files searched for.
-
-### What steps will reproduce the problem?
-
-`stack build`
-
-### What version of git-annex are you using? On what operating system?
-
-e029eb8b, OS X 10.10.5.
-
-### Please provide any additional information below.
-
-These are apparently dependencies of `Setup.hs`. Adding
-
-    explicit-setup-deps:
-      "*": true
-
-to `stack.yaml` [(as described here)](https://github.com/commercialhaskell/stack/blob/a59997d5db963bba403119843340688ee25e2c6f/doc/yaml_configuration.md#explicit-setup-deps)
-fixes the error and builds git-annex successfully.
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-> I tried enabling this, and it broke build on my i386ancient autobuilder,
-> which uses stack 1.0.4.2. Strange build failure
-> both building git-annex and also its dependencies (eg, process):
-
-	/usr/bin/ld: cannot find -ltinfo
-
-> Which seems to be libtinfo, part of the ncurses library. Which is weird,
-> AFAIK git-annex does not use ncurses at all.
-> 
-> I tried weakening the setting from `*` to  `git-annex: true`, which
-> lets the build deps get built, but building git-annex still fails with
-> above error.
-> 
-> --[[Joey]]
-
-> > I've filed a bug on stack about this,
-> > <https://github.com/commercialhaskell/stack/issues/2093> --[[Joey]] 
-
-> > > Gone ahead and added it to stack.yaml, despite it causing some build
-> > > failures, as it's certianly needed on many systems. [[done]]
-> > > --[[Joey]]
diff --git a/doc/bugs/startup_scan_extremely_slow.mdwn b/doc/bugs/startup_scan_extremely_slow.mdwn
deleted file mode 100644
--- a/doc/bugs/startup_scan_extremely_slow.mdwn
+++ /dev/null
@@ -1,69 +0,0 @@
-### Please describe the problem.
-
-When the assistant starts it takes several hours to do the startup scan, even when there are no files to add.
-
-The repo contains many small files but it is configured to add the smaller ones via gitattributes. In particular there are: 91949 files added to git repo and 1029 annexed.
-This is my gitattributes
-
-    * annex.largefiles=(largerthan=500kb)
-
-annex.addunlocked is set to true
-
-### What steps will reproduce the problem?
-
-Create a repo with ~90000 files smaller than 500k and ~1000 files larger (in my case ranging from 500k to 32M). Set addunlocked to true and annex.largefiles to largerthan=500kb. Start the assistant and let it finish adding the files. Restart the assistant.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 6.20160318
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 6
-
-I'm running it on Arch Linux (packaged version)
-
-### Please provide any additional information below.
-
-[[!format sh """
-
-[2016-03-29 22:08:26.356586] main: starting assistant version 6.20160318
-
-  No known network monitor available through dbus; falling back to polling
-(scanning...) [2016-03-29 22:08:41.426049] Watcher: Performing startup scan
-[2016-03-29 23:05:40.533113] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 00:10:07.085051] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 01:23:29.784236] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 02:43:02.048312] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 03:37:53.273057] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 04:04:56.875573] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 04:31:14.370618] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 04:56:12.467889] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 05:21:09.021728] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 05:43:11.111616] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 06:14:38.096425] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 06:49:54.730879] Committer: Committing changes to git
-(recording state in git...)
-[2016-03-30 07:26:47.721929] Committer: Committing changes to git
-(recording state in git...)
-
-
-# End of transcript or log.
-"""]]
-
-At this point I stopped the assistant that was still doing the startup scan...
-
-### Have you had any luck using git-annex before?
-
-Sure!
diff --git a/doc/bugs/symlinks_to_absent_files_remain_upon_switching_to_direct_mode2.mdwn b/doc/bugs/symlinks_to_absent_files_remain_upon_switching_to_direct_mode2.mdwn
deleted file mode 100644
--- a/doc/bugs/symlinks_to_absent_files_remain_upon_switching_to_direct_mode2.mdwn
+++ /dev/null
@@ -1,94 +0,0 @@
-### Please describe the problem.
-
-subject + what was described  in https://git-annex.branchable.com/forum/some_symlinks_left_in_direct_mode/ some time ago I guess
-
-### What steps will reproduce the problem?
-
-clone git annex repo, switch immediately to direct mode and observe files being left as dangling symlinks, get some content -- they get into normal files, drop them -- broken symlinks again.  I thought (and I believe that it was like that) that in direct mode -- no symlinks to .git/annex regardless of the state (present/absent).
-
-full example /transcript is below
-
-### What version of git-annex are you using? On what operating system?
-
-Debian sid 5.20150710-2
-
-### 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
-
-$> git clone git://github.com/datalad/testrepo--basic--r1
-Cloning into 'testrepo--basic--r1'...
-remote: Counting objects: 23, done.
-remote: Total 23 (delta 0), reused 0 (delta 0), pack-reused 23
-Receiving objects: 100% (23/23), done.
-Resolving deltas: 100% (3/3), done.
-Checking connectivity... done.
-2 22606.....................................:Tue 28 Jul 2015 04:11:23 PM EDT:.
-hopa:/tmp
-$> cd testrepo--basic--r1
-INFO.txt  test-annex.dat@  test.dat
-2 22607.....................................:Tue 28 Jul 2015 04:11:30 PM EDT:.
-(git)hopa:/tmp/testrepo--basic--r1[master]
-$> ls -l
-total 12
--rw------- 1 yoh yoh  53 Jul 28 16:11 INFO.txt
-lrwxrwxrwx 1 yoh yoh 186 Jul 28 16:11 test-annex.dat -> .git/annex/objects/zk/71/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat
--rw------- 1 yoh yoh   4 Jul 28 16:11 test.dat
-2 22608.....................................:Tue 28 Jul 2015 04:11:31 PM EDT:.
-(git)hopa:/tmp/testrepo--basic--r1[master]
-$> git annex direct
-(merging origin/git-annex into git-annex...)
-(recording state in git...)
-commit  
-(recording state in git...)
-On branch master
-Your branch is up-to-date with 'origin/master'.
-nothing to commit, working directory clean
-ok
-direct  ok
-2 22609.....................................:Tue 28 Jul 2015 04:11:36 PM EDT:.
-(git)hopa:/tmp/testrepo--basic--r1[master]
-$> ls -l 
-total 12
--rw------- 1 yoh yoh  53 Jul 28 16:11 INFO.txt
-lrwxrwxrwx 1 yoh yoh 186 Jul 28 16:11 test-annex.dat -> .git/annex/objects/zk/71/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat
--rw------- 1 yoh yoh   4 Jul 28 16:11 test.dat
-2 22610.....................................:Tue 28 Jul 2015 04:11:38 PM EDT:.
-(git)hopa:/tmp/testrepo--basic--r1[master]
-$> git annex get test-annex.dat
-get test-annex.dat (from web...) 
-/tmp/testrepo--basic--r1/.git/annex/tmp/SHA256E-s4--1 100%[===========================================================================================================================>]       4  --.-KB/s   in 0s     
-ok
-(recording state in git...)
-2 22611.....................................:Tue 28 Jul 2015 04:11:45 PM EDT:.
-(git)hopa:/tmp/testrepo--basic--r1[master]
-$> ls -lta
-total 12
-drwxrwxrwt 126 root root 4020 Jul 28 16:11 ../
-drwx------   3 yoh  yoh   120 Jul 28 16:11 ./
--rw-------   1 yoh  yoh     4 Jul 28 16:11 test-annex.dat
-drwx------   9 yoh  yoh   300 Jul 28 16:11 .git/
--rw-------   1 yoh  yoh    53 Jul 28 16:11 INFO.txt
--rw-------   1 yoh  yoh     4 Jul 28 16:11 test.dat
-2 22612.....................................:Tue 28 Jul 2015 04:11:49 PM EDT:.
-(git)hopa:/tmp/testrepo--basic--r1[master]
-$> git annex drop test-annex.dat
-drop test-annex.dat (checking https://raw.githubusercontent.com/datalad/testrepo--basic--r1/master/test.dat...) ok
-(recording state in git...)
-2 22613.....................................:Tue 28 Jul 2015 04:11:57 PM EDT:.
-(git)hopa:/tmp/testrepo--basic--r1[master]
-$> ls -l 
-total 12
--rw------- 1 yoh yoh  53 Jul 28 16:11 INFO.txt
-lrwxrwxrwx 1 yoh yoh 186 Jul 28 16:11 test-annex.dat -> .git/annex/objects/zk/71/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat/SHA256E-s4--181210f8f9c779c26da1d9b2075bde0127302ee0e3fca38c9a83f5b1dd8e5d3b.dat
--rw------- 1 yoh yoh   4 Jul 28 16:11 test.dat
-
-
-# End of transcript or log.
-"""]]
-
-> Closing as I think we're in agreement this is the right behavior.
-> But, see <http://git-annex.branchable.com/todo/hide_missing_files/>.
-> [[done]] --[[Joey]] 
diff --git a/doc/bugs/sync-git-annex_branch_not_syncing_in_the_assistant.mdwn b/doc/bugs/sync-git-annex_branch_not_syncing_in_the_assistant.mdwn
deleted file mode 100644
--- a/doc/bugs/sync-git-annex_branch_not_syncing_in_the_assistant.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-### Please describe the problem.
-
-It seems that the `synced/git-annex` branch (which I am a little confused about in the first place), doesn't get synced automatically by the assistant.
-
-I was expecting the assistant to regularly do the equivalent of `git annex sync`. However, after a client pushed changes to the `git-annex` branch, I had to manually do a `git annex sync` for the changes of the `synced/git-annex` branch to be merged down into the local `git-annex`.
-
-### What steps will reproduce the problem?
-
-I have 3 machines in this setup (to simplify: there are more, but those are sufficient). Let's call them foo, bar and quux. foo and quuex are connected to bar through password-less SSH connexions.
-
-foo commits a file to git-annex. the assistant syncs that to bar in the `synced/git-annex` branch.
-
-quux syncs with bar, and seems to ignore the `synced/git-annex` branch.
-
-git-annex sync on quux syncs the `synced/git-annex` branch into the local `git-annex`, working around the issue.
-
-### What version of git-annex are you using? On what operating system?
-
-foo is 5.20150610+gitg608172f-1~ndall+1 on Debian 7.8 (wheezy).
-
-bar and quux are 5.20150409+git126-ga29f683-1~ndall+1 and 5.20150610+gitg608172f-1~ndall+1 (respectively) on Ubuntu 12.04 (precise) .
-
-### Please provide any additional information below.
-
-I guess a more general question is how and how often do those branches get merged by the assistant... it's still unclear to me how this works.
-
-[[!format sh """
-$ sudo -u www-data -H git annex sync
-(merging origin/synced/git-annex into git-annex...)
-(recording state in git...)
-commit  ok
-pull origin
-Auto packing the repository in background for optimum performance.
-See "git help gc" for manual housekeeping.
-
-Already up-to-date.
-ok
-push origin
-Counting objects: 373637, done.
-# End of transcript or log.
-"""]]
-
-This was started at 20:23 UTC. Note that the sync had run previously under the assistant:
-
-<pre>
-[2015-07-22 20:09:06 UTC] RemoteControl: Syncing with origin
-</pre>
-
-Available, as usual, for further debugging. :) -- [[anarcat]]
diff --git a/doc/bugs/tahoe_remote_has_no_repair.mdwn b/doc/bugs/tahoe_remote_has_no_repair.mdwn
deleted file mode 100644
--- a/doc/bugs/tahoe_remote_has_no_repair.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-### Please describe the problem.
-
-The tahoe-lafs remote has no built-in way to perform the repair operation.
-This results to data loss if expiration is enabled on the Tahoe grid.
-
-For the current tahoe-lafs release (1.10.0), the only way storage space is freed
-is via garbage collection. Garbage collection removes shares whose lease has expired.
-Data loss will occur if leases are not periodically renewed via
-"tahoe repair --add-lease WRITECAP".
-
-The current implementation of the Tahoe remote in git-annex does not offer a way to
-run lease renewal, and cannot be used on grids where GC is enabled. (GC is not enabled
-in the default configuration, but on private grids it is a sensible option.)
-
-One way renewal could be made easier to do is to add the uploaded files to a directory
-in Tahoe, so that the leases could be easily updated if the directory writecap is known,
-without needing to go through the full list of writecaps for each file stored.
-
-### What steps will reproduce the problem?
-
-1. Use tahoe remote on a tahoe grid where GC is enabled.
-
-2. After GC expiration period, data loss ensues.
-
-### What version of git-annex are you using? On what operating system?
-
-Seems to affect current git master (as of 2014-08-24).
diff --git a/doc/bugs/thread_blocked_indefinitely_in_an_MVar_operation_durin_fsck.mdwn b/doc/bugs/thread_blocked_indefinitely_in_an_MVar_operation_durin_fsck.mdwn
deleted file mode 100644
--- a/doc/bugs/thread_blocked_indefinitely_in_an_MVar_operation_durin_fsck.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-### Please describe the problem.
-I try to fsck my movies repo, but run in to a failure message. Running the same command on another repo on the same computer works (both being run with sudo and the same user.)
-
-### What steps will reproduce the problem?
-    $ sudo -u time_machine_carl git annex fsck --incremental-schedule 182d --time-limit 1h 
-
-    sqlite worker thread crashed: SQLite3 returned ErrorCan'tOpen while attempting to perform prepare "SELECT null from fscked limit 1": unable to open database file
-    git-annex: thread blocked indefinitely in an MVar operation
-
-I guess I might just have created a fsck database using another user and this db is somehow locked?
-
-### What version of git-annex are you using? On what operating system?
-
-    $ git annex version
-    git-annex version: 5.20150731-1
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA Database
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    
-It runs on Raspbian Testing
-    $ uname -a
-    Linux pi 4.1.6+ #810 PREEMPT Tue Aug 18 15:19:58 BST 2015 armv6l GNU/Linux
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-Of course, The movie archive seems to be filling up nicely I just have some problems automating the checks.
-
-> [[done]]
diff --git a/doc/bugs/too_many_ssh_connections_during_sync_of_gcrypt_remotes.mdwn b/doc/bugs/too_many_ssh_connections_during_sync_of_gcrypt_remotes.mdwn
deleted file mode 100644
--- a/doc/bugs/too_many_ssh_connections_during_sync_of_gcrypt_remotes.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-### Please describe the problem.
-`git-annex sync gcryptremote` makes too many ssh connections one after another for each sub-task involved, potentially triggering firewall rate-limits on the SSH server.
-
-### What steps will reproduce the problem?
-sync with gcrypt remote while watching sshd logs on the server (I was getting >=5 connections per single sync in quick succession)
-
-### What version of git-annex are you using? On what operating system?
-Fedora 19, installed through cabal (without s3 and webapp support as the deps were failing to build)
-
-    $ git annex version
-    git-annex version: 5.20150205
-    build flags: Assistant Pairing WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA TorrentParser
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-    remote types: git gcrypt bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-### 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.
-"""]]
diff --git a/doc/bugs/touch.hsc_has_problems_on_non-linux_based_systems.mdwn b/doc/bugs/touch.hsc_has_problems_on_non-linux_based_systems.mdwn
deleted file mode 100644
--- a/doc/bugs/touch.hsc_has_problems_on_non-linux_based_systems.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-It seems that commit bc5c54c987f548505a3877e8a0e460abe0b2a081 introduced some linux specific things...
-
-<pre>
-hsc2hs Touch.hsc
-Touch.hsc: In function ‘main’:
-Touch.hsc:46: error: ‘UTIME_OMIT’ undeclared (first use in this function)
-Touch.hsc:46: error: (Each undeclared identifier is reported only once
-Touch.hsc:46: error: for each function it appears in.)
-Touch.hsc:48: error: ‘UTIME_NOW’ undeclared (first use in this function)
-Touch.hsc:67: error: ‘AT_FDCWD’ undeclared (first use in this function)
-Touch.hsc:68: error: ‘AT_SYMLINK_NOFOLLOW’ undeclared (first use in this function)
-compiling Touch_hsc_make.c failed
-command was: /usr/bin/gcc -c -m32 -I/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.3/include/ Touch_hsc_make.c -o Touch_hsc_make.o
-make: *** [Touch.hs] Error 1
-</pre>
-
-I dug around the OSX documentation and fcntl.h header file and it seems that UTIME_OMIT, UTIME_NOW, AT_FDCWD and AT_SYMLINK_NOFOLLOW aren't defined (at least on OSX). I suspect the BSD's in general will have problems compiling git-annex.
-
-[[!meta title="annexed symlink mtime matching code is disabled on non-linux systems; needs testing"]]
-[[!tag confirmed]]
diff --git a/doc/bugs/unannexed_files_are_immediately_re-annexed_by_assistant.mdwn b/doc/bugs/unannexed_files_are_immediately_re-annexed_by_assistant.mdwn
deleted file mode 100644
--- a/doc/bugs/unannexed_files_are_immediately_re-annexed_by_assistant.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-### Please describe the problem.
-When using “git annex unlock”, the assistant is clever enough not to immediately re-add the corresponding files. When using “git annex unannex”, however, the assistant goes on to re-add the files right away. It would be convenient if this case were also handled likewise.
-
-git-annex 5.20150508
-
-> [[done]]; cannot be implemented. --[[Joey]]
diff --git a/doc/bugs/use_of_annex_in_submodule_replaces_.git_with_incorrect_symlink.mdwn b/doc/bugs/use_of_annex_in_submodule_replaces_.git_with_incorrect_symlink.mdwn
deleted file mode 100644
--- a/doc/bugs/use_of_annex_in_submodule_replaces_.git_with_incorrect_symlink.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-### Please describe the problem.
-
-Created a temp repository with a submodule under 3rd/visloc referring to another annex via ssh
-
-[[!format sh """
-
-# I have removed some output/wrong cmd calls, hopefully without side-effects
-
-hopa:/tmp/test
-$> cat 3rd/visloc/.git
-gitdir: ../../.git/modules/3rd/visloc
-
-$> git commit -m 'RF: ...' -a                                
-[master (root-commit) fc37b4f] RF: ...
- 2 files changed, 4 insertions(+)
- create mode 100644 .gitmodules
- create mode 160000 3rd/visloc
-
-$> ls -l 3rd/visloc/.git                                                                            
--rw------- 1 yoh yoh 38 Feb  8 10:26 3rd/visloc/.git
-
-$> cat 3rd/visloc/.git
-gitdir: ../../.git/modules/3rd/visloc
-
-$> cd 3rd/visloc/sub-01/rois 
-
-$> git annex get *
-fatal: Not a git repository: '../../.git'
-git-annex: First run: git-annex init
-
-$> cd -
-/tmp/test
-
-$> ls -l 3rd/visloc/.git    
-lrwxrwxrwx 1 yoh yoh 41 Feb  8 10:43 3rd/visloc/.git -> ../../../../../../.git/modules/3rd/visloc
-
-$> git annex version
-git-annex version: 6.20160126+gitg65f4442-1~ndall+1
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput DNS TDFA TorrentParser Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 5
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-"""]]
-
-[[!meta author=yoh]]
-
-> [[fixed|done]]
diff --git a/doc/bugs/using_old_remote_format_generates_irritating_output.mdwn b/doc/bugs/using_old_remote_format_generates_irritating_output.mdwn
deleted file mode 100644
--- a/doc/bugs/using_old_remote_format_generates_irritating_output.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-a special remote (encrypted rsync) that got copied to long ago (not sure when, there are old files that already have sizes in their unencrypted file names) seems to use the aa/bb/GPGHMACSHA1-- format instead of aaa/bbb/GPGHMACSHA1-. ``git annex fsck`` over such files produces very irritating output:
-
-<code>
-fsck L1100423.JPG (gpg) (checking …remote…...) 
-rsync: change_dir "…somewhere…/0a0/8cd/GPGHMACSHA1--91234b770b34eeff811d09c97ce94bb2398b3d72" failed: No such file or directory (2)
-
-sent 8 bytes  received 12 bytes  40.00 bytes/sec
-total size is 0  speedup is 0.00
-rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1536) [Receiver=3.0.9]
-
-  rsync failed -- run git annex again to resume file transfer
-
-GPGHMACSHA1--91234b770b34eeff811d09c97ce94bb2398b3d72
-     3922730 100%  623.81kB/s    0:00:06 (xfer#1, to-check=0/1)
-
-sent 30 bytes  received 3923328 bytes  523114.40 bytes/sec
-total size is 3922730  speedup is 1.00
-(checksum...) ok
-</code>
-
-(observed with debian's git-annex 3.20121017).
-
-while this does output an "ok" at th end and a zero exit status, having such messages in an fsck is highly irritating.
-
-i see two ways to enhance the situation:
-
-* silence the "not found" error when the file is found in another location
-* a way to rename the files in the remote (i guess the aaa/bbb part can be derived from the file name; in that case, that could even be done w/o network interaction).
-
-[[!tag confirmed]]
diff --git a/doc/bugs/using_regular_magic_file__warning_pollutes_stderr.mdwn b/doc/bugs/using_regular_magic_file__warning_pollutes_stderr.mdwn
deleted file mode 100644
--- a/doc/bugs/using_regular_magic_file__warning_pollutes_stderr.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-### Please describe the problem.
-
-Although probably not an annex issue but thought to let you know since you might see
-a quick resolution on your end
-
-Here is the log from datalad:
-
-[[!format sh """
-2016-02-25 22:53:32,886 [DEBUG] Running: ['git', '-c', 'receive.autogc=false', '-c', 'annex.alwayscommit=false', 'annex', 'add', '--debug', '--json', '-c', 'annex.largefiles=exclude=CHANGES* and exclude=README* and exclude=*.[mc] and exclude=dataset*.json and (exclude=*.txt or include=*/*.txt)  and (exclude=*.json or include=*/*.json) and (exclude=*.tsv or include=*/*.tsv)', 'README.txt'] (cmd.py:351)
-2016-02-25 22:53:32,979 [ERROR] stderr| /etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic' (cmd.py:351)
-
-
-or outside (file is already under annex)
-
-$> git annex --debug add -c 'annex.largefiles=exclude=CHANGES* and exclude=README*' README.txt
-/etc/magic, 4: Warning: using regular magic file `/usr/share/misc/magic'
-
-"""]]
-
-annex is up to date: 6.20160225+gitg229db26-1~ndall+1
-
-edit1: that is happening on jessie with file 1:5.22+15-2+deb8u1 if that is relevant
-[[!meta author=yoh]]
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/bugs/v6_repo_can_not_restore_files_with_executable_permission.mdwn b/doc/bugs/v6_repo_can_not_restore_files_with_executable_permission.mdwn
deleted file mode 100644
--- a/doc/bugs/v6_repo_can_not_restore_files_with_executable_permission.mdwn
+++ /dev/null
@@ -1,93 +0,0 @@
-### Please describe the problem.
-If a file is executable, the content of the file remains to be an SHA hash in a newly cloned repository. Neither 'git annex sync --content' or 'git annex get' can bring the file back.
-The only way to bring the file back is to remove the file and do a 'git checkout' or 'git reset HEAD --hard'
-
-If the file is not an executable (a tarball for example), it works as expected.
-
-If I did not clone the repo but created a new repo and then manually added a remote it also worked as expected.
-
-### What steps will reproduce the problem?
-See log below.
-
-### What version of git-annex are you using? On what operating system?
-6.20160318-gd594fc0 on Ubuntu 15.10
-
-### 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
-
-vagrant@vm:/tmp/$ cd annex/
-vagrant@vm:/tmp/annex/$ mkdir repo1
-vagrant@vm:/tmp/annex/$ cd repo1/
-vagrant@vm:/tmp/annex/repo1/$ git init
-Initialized empty Git repository in /tmp/annex/repo1/.git/
-vagrant@vm:/tmp/annex/repo1/$ git annex init --version=6
-init  ok
-(recording state in git...)
-vagrant@vm:/tmp/annex/repo1/$ cp /bin/ls .
-‘/bin/ls’ -> ‘./ls’
-vagrant@vm:/tmp/annex/repo1/$ git add ls
-vagrant@vm:/tmp/annex/repo1/$ git ci -am 'added ls binary'
-(recording state in git...)
-[master (root-commit) 7889519] added ls binary
- 1 file changed, 1 insertion(+)
- create mode 100755 ls
-vagrant@vm:/tmp/annex/repo1/$ ls -l
-total 116
--rwxr-xr-x 1 vagrant vagrant 118272 Apr  1 12:56 ls
-vagrant@vm:/tmp/annex/repo1/$ cd ..
-vagrant@vm:/tmp/annex/$ git clone repo1 repo2
-Cloning into 'repo2'...
-done.
-vagrant@vm:/tmp/annex/$ cd repo2
-vagrant@vm:/tmp/annex/repo2/$ git annex init --version=6
-init  (merging origin/git-annex into git-annex...)
-(recording state in git...)
-(scanning for unlocked files...)
-ok
-(recording state in git...)
-vagrant@vm:/tmp/annex/repo2/$ ls -l
-total 4
--rwxrwxr-x 1 vagrant vagrant 97 Apr  1 12:57 ls
-vagrant@vm:/tmp/annex/repo2/$ git annex sync --content
-commit  ok
-pull origin 
-ok
-get ls (from origin...) (checksum...) ok
-pull origin 
-ok
-(recording state in git...)
-push origin 
-Counting objects: 11, done.
-Delta compression using up to 8 threads.
-Compressing objects: 100% (9/9), done.
-Writing objects: 100% (11/11), 1.10 KiB | 0 bytes/s, done.
-Total 11 (delta 1), reused 0 (delta 0)
-To /tmp/annex/repo1
- * [new branch]      git-annex -> synced/git-annex
- * [new branch]      master -> synced/master
-ok
-vagrant@vm:/tmp/annex/repo2/$ ls -l
-total 4
--rwxrwxr-x 1 vagrant vagrant 97 Apr  1 12:57 ls
-vagrant@vm:/tmp/annex/repo2/$ cat ls
-/annex/objects/SHA256E-s118272--0b786b336b0391b56dabb7b078a23ec4295115628cfd4b635f4d8ae5ae0cfafc
-vagrant@vm:/tmp/annex/repo2/$ git annex get ls
-vagrant@vm:/tmp/annex/repo2/$ cat ls
-/annex/objects/SHA256E-s118272--0b786b336b0391b56dabb7b078a23ec4295115628cfd4b635f4d8ae5ae0cfafc
-vagrant@vm:/tmp/annex/repo2/$ rm ls
-vagrant@vm:/tmp/annex/repo2/$ git checkout ls
-vagrant@vm:/tmp/annex/repo2/$ ls -l 
-total 116
--rwxrwxr-x 1 vagrant vagrant 118272 Apr  1 12:59 ls
-
-
-# End of transcript or log.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
-> [[fixed|done]]
diff --git a/doc/bugs/vicfg_and_description_often_not_propagated.mdwn b/doc/bugs/vicfg_and_description_often_not_propagated.mdwn
deleted file mode 100644
--- a/doc/bugs/vicfg_and_description_often_not_propagated.mdwn
+++ /dev/null
@@ -1,154 +0,0 @@
-### Please describe the problem.
-
-I can change the settings in one repo and sync it everywhere. Just to be surprised that one repo starts syncing to the transfer, every time it turns out that this repo lost its vicfg settings. Especially the Repository preferred contents are all back on standard. It was even once that it had the current settings and after the change and sync it goes back to some older state instead of the new one.
-
-### What steps will reproduce the problem?
-
-Well that is very hard. I have 8 repos and it happens randomly to some of them. I recreated all of them recently because I thought they are corrupt, that didn't help, just took me one week of time. It is also very hard to find a way to reproduce this because every vicfg causes a merge which takes minutes to hours.
-
-### What version of git-annex are you using? On what operating system?
-
-Linux: git-annex version: 5.20140412ubuntu1
-
-Mac OS: git-annex version: 5.20140717
-
-### Please provide any additional information below.
-
-Layout:
-
-transfer on rsync.net, conntented to that:
-
- - Two OS X Clients
-
- - Two Linux Archives
-
-My settings:
-
-
-
-[[!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
-
-# git-annex configuration
-# 
-# Changes saved to this file will be recorded in the git-annex branch.
-# 
-# Lines in this file have the format:
-#   setting field = value
-
-# Repository trust configuration
-# (Valid trust levels: trusted semitrusted untrusted dead)
-# (for Music bei Pirmin)
-trust 0734498b-817c-419f-a0c0-660854dc7cbe = trusted
-# (for Music bei Jean (Willikins) [willikins])
-trust 20e9d2e5-9563-4507-82d5-bf8e23be29a5 = trusted
-# (for Music bei Jean (Willikins Clone))
-trust 6e3431e9-8ec2-404a-9c35-b967db63147d = trusted
-# (for Music bei Jean (Watson))
-trust a6febfa0-9fe5-4a65-95bb-dc255d87c2e2 = trusted
-# (for )
-trust dafe9a64-2480-40e2-9688-9f783577ef72 = dead
-# (for web)
-#trust 00000000-0000-0000-0000-000000000001 = semitrusted
-# (for music transfer via rsync.net [music_rsync])
-#trust 83c42610-42ad-459d-92a4-1aca2dfb97e1 = semitrusted
-
-# Repository groups
-# (Standard groups: client transfer backup incrementalbackup smallarchive archive source manual public unwanted)
-# (Separate group names with spaces)
-# (for Music bei Jean (Willikins) [willikins])
-group 20e9d2e5-9563-4507-82d5-bf8e23be29a5 = archive
-# (for Music bei Jean (Willikins Clone))
-group 6e3431e9-8ec2-404a-9c35-b967db63147d = archive
-# (for )
-group 26d38f31-cb6c-412c-84ef-597d7959a680 = backup
-# (for Music bei Pirmin)
-group 0734498b-817c-419f-a0c0-660854dc7cbe = client
-# (for Music bei Jean (Watson))
-group a6febfa0-9fe5-4a65-95bb-dc255d87c2e2 = client
-# (for music transfer via rsync.net [music_rsync])
-group 83c42610-42ad-459d-92a4-1aca2dfb97e1 = transfer
-# (for )
-group dafe9a64-2480-40e2-9688-9f783577ef72 = unwanted
-# (for web)
-#group 00000000-0000-0000-0000-000000000001 = 
-
-# Repository preferred contents
-# (Set to "standard" to use a repository's group's preferred contents)
-# (for Music bei Jean (Willikins) [willikins])
-wanted 20e9d2e5-9563-4507-82d5-bf8e23be29a5 = (not (copies=archive:2 or copies=smallarchive:2)) or approxlackingcopies=2
-# (for Music bei Jean (Willikins Clone))
-wanted 6e3431e9-8ec2-404a-9c35-b967db63147d = (not (copies=archive:2 or copies=smallarchive:2)) or approxlackingcopies=2
-# (for music transfer via rsync.net [music_rsync])
-wanted 83c42610-42ad-459d-92a4-1aca2dfb97e1 = not (inallgroup=client and copies=archive:2 and copies=client:2) and ((((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) and not unused) or approxlackingcopies=1)
-# (for Music bei Pirmin)
-wanted 0734498b-817c-419f-a0c0-660854dc7cbe = standard
-# (for )
-wanted 26d38f31-cb6c-412c-84ef-597d7959a680 = standard
-# (for )
-wanted dafe9a64-2480-40e2-9688-9f783577ef72 = standard
-# (for web)
-#wanted 00000000-0000-0000-0000-000000000001 = 
-# (for Music bei Jean (Watson))
-wanted a6febfa0-9fe5-4a65-95bb-dc255d87c2e2 = standard
-
-# Group preferred contents
-# (Used by repositories with "groupwanted" in their preferred contents)
-#groupwanted archive = 
-#groupwanted backup = 
-#groupwanted client = 
-#groupwanted incrementalbackup = 
-#groupwanted manual = 
-#groupwanted public = 
-#groupwanted smallarchive = 
-#groupwanted source = 
-#groupwanted transfer = 
-#groupwanted unwanted = 
-
-# Standard preferred contents
-# (Used by wanted or groupwanted expressions containing "standard")
-# (For reference only; built-in and cannot be changed!)
-# standard client = (((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) and not unused) or approxlackingcopies=1
-# standard transfer = (not (inallgroup=client and copies=client:2) and ((((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) and not unused) or approxlackingcopies=1)) or approxlackingcopies=1
-# standard backup = include=* or unused
-# standard incrementalbackup = ((include=* or unused) and (not copies=incrementalbackup:1)) or approxlackingcopies=1
-# standard smallarchive = ((include=*/archive/* or include=archive/*) and ((not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1)) or approxlackingcopies=1
-# standard archive = (not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1
-# standard source = not (copies=1)
-# standard manual = present and ((((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) and not unused) or approxlackingcopies=1)
-# standard public = inpreferreddir
-# standard unwanted = exclude=*
-
-# Repository required contents
-# (for web)
-#required 00000000-0000-0000-0000-000000000001 = 
-# (for Music bei Pirmin)
-#required 0734498b-817c-419f-a0c0-660854dc7cbe = 
-# (for Music bei Jean (Willikins) [willikins])
-#required 20e9d2e5-9563-4507-82d5-bf8e23be29a5 = 
-# (for Music bei Jean (Willikins Clone))
-#required 6e3431e9-8ec2-404a-9c35-b967db63147d = 
-# (for music transfer via rsync.net [music_rsync])
-#required 83c42610-42ad-459d-92a4-1aca2dfb97e1 = 
-# (for Music bei Jean (Watson))
-#required a6febfa0-9fe5-4a65-95bb-dc255d87c2e2 = 
-
-# Scheduled activities
-# (Separate multiple activities with "; ")
-# (for web)
-#schedule 00000000-0000-0000-0000-000000000001 = 
-# (for Music bei Pirmin)
-#schedule 0734498b-817c-419f-a0c0-660854dc7cbe = 
-# (for Music bei Jean (Willikins) [willikins])
-#schedule 20e9d2e5-9563-4507-82d5-bf8e23be29a5 = 
-# (for Music bei Jean (Willikins Clone))
-#schedule 6e3431e9-8ec2-404a-9c35-b967db63147d = 
-# (for music transfer via rsync.net [music_rsync])
-#schedule 83c42610-42ad-459d-92a4-1aca2dfb97e1 = 
-# (for Music bei Jean (Watson))
-#schedule a6febfa0-9fe5-4a65-95bb-dc255d87c2e2 =
-# End of transcript or log.
-"""]]
-
-[[!tag moreinfo]]
diff --git a/doc/bugs/webapp__58___difficult_to_abort_adding_a_repository.mdwn b/doc/bugs/webapp__58___difficult_to_abort_adding_a_repository.mdwn
deleted file mode 100644
--- a/doc/bugs/webapp__58___difficult_to_abort_adding_a_repository.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-### Please describe the problem.
-I could not find a way to abort the addition of a new remote repository.
-
-### What steps will reproduce the problem?
-- start adding a remote repository (unencrypted, with git-annex installed);
-- forget to create the folder on the remote host;
-- navigate away from the repository page;
-- the dashboard says the repository is partially set-up, and the only thing one can do is look at the log (which says the folder is missing).
-
-I was able to solve it by creating another repository with the exact same data.
-
-### What version of git-annex are you using? On what operating system?
-
-Version: 4.20131002-gf25991c on OS X 10.8.5
-
-### 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.
-"""]]
diff --git a/doc/bugs/webapp_missing_in_20150522_release.mdwn b/doc/bugs/webapp_missing_in_20150522_release.mdwn
deleted file mode 100644
--- a/doc/bugs/webapp_missing_in_20150522_release.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-### Please describe the problem.
-
-Using the prebuilt linux tarball, version 20150522 fails to start the webapp.
-
-Doing it manually from the console, just gives me the help text. 
-
-Trying out an older version shows me the webapp option below "watch" in the help, but this is missing in 20150522 version.
-
-git-annex version gives me:
-
-    git-annex version: 5.20150522-gb199d65
-    build flags: Assistant Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-
-### What steps will reproduce the problem?
-
-Use 20150522 version of git annex
-
-### What version of git-annex are you using? On what operating system?
-
-linux tarball, version 20150522
-
-Arch linux
-
-### 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.
-"""]]
-
-> Unfortunate I didn't notice this. I've fixed it in git and will make a
-> release tomorrow. [[done]] --[[Joey]] 
diff --git a/doc/bugs/webdav_fails___40__server__58___radicale_0.9-1__41__.mdwn b/doc/bugs/webdav_fails___40__server__58___radicale_0.9-1__41__.mdwn
deleted file mode 100644
--- a/doc/bugs/webdav_fails___40__server__58___radicale_0.9-1__41__.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-The current command fails (git-annex 5.20141125, debian sid, DAV server: radicale 0.9-1):
-
-    $ WEBDAV_USERNAME=user WEBDAV_PASSWORD=password git annex --debug initremote dav.example.com type=webdav url=https://dav.example.com encryption=none
-    [2014-11-28 16:53:29 CET] read: git ["--git-dir=/home/user/test-annex/.git","--work-tree=/home/user/test-annex","show-ref","git-annex"]
-    [2014-11-28 16:53:29 CET] read: git ["--git-dir=/home/user/test-annex/.git","--work-tree=/home/user/test-annex","show-ref","--hash","refs/heads/git-annex"]
-    [2014-11-28 16:53:29 CET] read: git ["--git-dir=/home/user/test-annex/.git","--work-tree=/home/user/test-annex","log","refs/heads/git-annex..f60365a0d5333e1aefe80a3fe747e2cb3d5c8162","-n1","--pretty=%H"]
-    [2014-11-28 16:53:29 CET] chat: git ["--git-dir=/home/user/test-annex/.git","--work-tree=/home/user/test-annex","cat-file","--batch"]
-    initremote dav.example.com (testing WebDAV server...)
-
-    git-annex: WebDAV test failed: StatusCodeException (Status {statusCode = 500, statusMessage = "Internal Server Error"}) [("Server","nginx/1.2.1"),("Date","Fri, 28 Nov 2014 15:53:37 GMT"),("Content-Type","text/plain"),("Content-Length","59"),("Connection","keep-alive"),("Keep-Alive","timeout=75"),("X-Response-Body-Start","A server error occurred. Please contact the administrator."),("X-Request-URL","MKCOL https://dav.example.com:443/tmp")] (CJ {expose = []}): user error
-    failed
-    git-annex: initremote: 1 failed
-
-server log:
-
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:53:17 +0100] "MKCOL / HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:53:18 +0100] "PROPFIND /tmp HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:53:21 +0100] "MKCOL /tmp HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:53:32 +0100] "MKCOL / HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:53:34 +0100] "PROPFIND /tmp HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:53:37 +0100] "MKCOL /tmp HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:58:31 +0100] "PROPFIND / HTTP/1.1" 207 1035 "-" "cadaver/0.23.3 neon/0.30.1"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:59:19 +0100] "MKCOL / HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:59:21 +0100] "PROPFIND /tmp HTTP/1.1" 500 59 "-" "hDav-using application"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:16:59:23 +0100] "MKCOL /tmp HTTP/1.1" 500 59 "-" "hDav-using application"
-
-
-cadaver works:
-
-    $ cadaver https://dav.example.com
-    Authentication required for Radicale - Password Required on server `dav.example.com':
-    Username: user
-    Password: 
-    dav:/> ls
-    Listing collection `/': succeeded.
-    Coll:   user                                  0  Jan  1  1970
-
-server log:
-
-    ::ffff:192.168.1.6 - - [28/Nov/2014:17:01:31 +0100] "OPTIONS / HTTP/1.1" 200 0 "-" "cadaver/0.23.3 neon/0.30.1"
-    ::ffff:192.168.1.6 - - [28/Nov/2014:17:01:31 +0100] "PROPFIND / HTTP/1.1" 401 0 "-" "cadaver/0.23.3 neon/0.30.1"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:17:01:42 +0100] "PROPFIND / HTTP/1.1" 207 579 "-" "cadaver/0.23.3 neon/0.30.1"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:17:01:42 +0100] "PROPFIND / HTTP/1.1" 207 579 "-" "cadaver/0.23.3 neon/0.30.1"
-    ::ffff:192.168.1.6 - user [28/Nov/2014:17:02:01 +0100] "PROPFIND / HTTP/1.1" 207 1035 "-" "cadaver/0.23.3 neon/0.30.1"
-
diff --git a/doc/bugs/weird_unicode_bug_on_windows.mdwn b/doc/bugs/weird_unicode_bug_on_windows.mdwn
deleted file mode 100644
--- a/doc/bugs/weird_unicode_bug_on_windows.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-### Please describe the problem.
-
-My repo contains more than 1000 files, many are unicode filenames. Now that [this bug](http://git-annex.branchable.com/bugs/fails_to_get_content_from_bare_repo_on_windows/) is resolved, almost all files are fetched, except one file named '移动硬盘 1T Buffalo USB3.0 白色.rtf'. 
-
-### What steps will reproduce the problem?
-
-I reproduced this problem by creating a repo containing only this file with no content. If anyone wants to reproduce this, just create an empty file by copy and paste the above filename in the quote.
-
-I created the repo on mac, synced with a usb drive, then on windows machine try to sync it back.
-
-* When run git-annex webapp in the newly created windows repo, after the usb drive is added as a remote, an error popups up: http://imgur.com/5ZfIeGQ  although the remote is added successfully (http://imgur.com/04O8kaC)
-* On the command line, git annex sync runs successfully, but git annex get . failed: http://imgur.com/bIVrbe2
-* The file is there (http://imgur.com/URGwWWt) with correct filename, just that the content is not there. 
-
-### What version of git-annex are you using? On what operating system?
-
-Latest release of git-annex on both mac and windows. The initial repo on mac is indirect repo, the one on usb drive is a bare repo, the one on windows is direct repo.
diff --git a/doc/bugs/wget_invocation_should_get_timeout_options.mdwn b/doc/bugs/wget_invocation_should_get_timeout_options.mdwn
deleted file mode 100644
--- a/doc/bugs/wget_invocation_should_get_timeout_options.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-### Please describe the problem.
-
-Currently if download stalls the whole 'annex get' stalls -- I have been watching the terminal with 0% for an hour now ;)
-
-You could test that on http://github.com/datalad/mlbooks  annex, just get
-G.James_D.Witten_T.Hastie_R.Tibshirani-An_Introduction_to_Statistical_Learning_with_Applications_in_R.pdf
-
-original url for the file is http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Fourth%20Printing.pdf
-and wgetting works for me on some boxes but not on the other, forgot why so
-
-### What version of git-annex are you using? On what operating system?
-
-5.20150706+gitgefc3bcd-1~ndall+1 and tried in clean debian sid docker with  5.20150812-2
-
-> [[done]] per my comment and no followup --[[Joey]]
diff --git a/doc/bugs/whereis_outputs_no_informaiton_for_unlocked_files.mdwn b/doc/bugs/whereis_outputs_no_informaiton_for_unlocked_files.mdwn
deleted file mode 100644
--- a/doc/bugs/whereis_outputs_no_informaiton_for_unlocked_files.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-What steps will reproduce the problem?
-
-    ...:/tmp$ mkdir repro
-    ...:/tmp$ cd repro/
-    ...:/tmp/repro$ git init
-    Initialized empty Git repository in /tmp/repro/.git/
-    ...:/tmp/repro$ git annex init test
-    init test ok
-    ...:/tmp/repro$ echo "A" > a.txt
-    ...:/tmp/repro$ git annex add a.txt
-    add a.txt (checksum...) ok
-    (Recording state in git...)
-    ...:/tmp/repro$ git commit -m "add file"
-    [master (root-commit) bf53ce2] add file
-     1 file changed, 1 insertion(+)
-     create mode 120000 a.txt
-    ...:/tmp/repro$ git annex whereis a.txt
-    whereis a.txt (1 copy) 
-      	5c028c6a-2c5e-11e2-bb9c-17bd7ce81377 -- here (test)
-    ok
-    ...:/tmp/repro$ git annex unlock a.txt
-    unlock a.txt (copying...) ok
-    ...:/tmp/repro$ git annex whereis a.txt
-
-What is the expected output? What do you see instead?
-
-    I'd expect that whereis executed on an unlocked file would behave like whereis executed on a locked file.
-
-What version of git-annex are you using? On what operating system?
-
-    $ cat /etc/issue
-    Ubuntu 12.04.1 LTS \n \l
-
-    $ git-annex version
-    git-annex version: 3.20120406
-    local repository version: 3
-    default repository version: 3
-    supported repository versions: 3
-    upgrade supported from repository versions: 0 1 2
-
-    $ uname -a
-    Linux ... 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:16:45 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
-
-Please provide any additional information below.
-
-[[!tag confirmed]]
diff --git a/doc/bugs/windows_installer_seems_have_been_broken.mdwn b/doc/bugs/windows_installer_seems_have_been_broken.mdwn
deleted file mode 100644
--- a/doc/bugs/windows_installer_seems_have_been_broken.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-### Please describe the problem.
-
-decided to upgrade git-annex in our test virtualbox windows... upon upgrade (just running installer again with the default location for git), annex is not longer available:  http://www.onerussian.com/tmp/gkrellShoot_09-17-15_105547.png
-Replicated on another similar instance 
-
-### What steps will reproduce the problem?
-
-download exe from  https://downloads.kitenet.net/git-annex/windows/current/  (btw  I think I noted it reduced in size noteably)
-
-> [[done]] per my comment --[[Joey]]
diff --git a/doc/bugs/windows_ssh_webapp_password_entry_broken.mdwn b/doc/bugs/windows_ssh_webapp_password_entry_broken.mdwn
deleted file mode 100644
--- a/doc/bugs/windows_ssh_webapp_password_entry_broken.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Recent changes to ssh on Windows have broken the webapps's support for
-entering a password when adding a ssh remote.
-
-Using ssh on windows with an existing remote does work. So as a workaround,
-set up a passwordless ssh key that can log into the ssh server. --[[Joey]]
-
-> I have a `winprocfix` branch that uses process-1.3 which has been
-> enhanced to allow fixing this. Merging is currently blocked on
-> <https://github.com/pcapriotti/optparse-applicative/issues/153> --[[Joey]]
-> 
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/builds.mdwn b/doc/builds.mdwn
deleted file mode 100644
--- a/doc/builds.mdwn
+++ /dev/null
@@ -1,57 +0,0 @@
-[[!meta title="git-annex autobuild overview"]]
-
-[[!sidebar content="""
-# last uploaded build-versions
-
-<h2>Linux i386</h2>
-<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/i386/build-version">
-</iframe>
-<h2>Linux amd64</h2>
-<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/amd64/build-version">
-</iframe>
-<h2>Linux armel</h2>
-<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/armel/build-version">
-</iframe>
-<h2>Linux i386-ancient</h2>
-<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/build-version">
-</iframe>
-<h2>Android</h2>
-<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/android/4.3/build-version">
-</iframe>
-<h2>OSX Yosemite</h2>
-<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-yosemite/build-version">
-</iframe>
-<h2>Windows</h2>
-<iframe width=1024 height=20em scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/windows/build-version">
-</iframe>
-"""]]
-
-# build logs
-
-<h2>Linux i386</h2>
-<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/i386/">
-</iframe>
-<h2>Linux amd64</h2>
-<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/amd64/">
-</iframe>
-<h2>Linux armel</h2>
-<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/armel/">
-</iframe>
-<h2>Linux i386-ancient</h2>
-<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/">
-</iframe>
-<h2>Android</h2>
-<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/android/">
-</iframe>
-<h2>OSX Yosemite</h2>
-<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-yosemite/">
-</iframe>
-<iframe width=1024 scrolling=no frameborder=0 marginheight=0 marginwidth=0 src="https://downloads.kitenet.net/git-annex/autobuildtest/x86_64-apple-yosemite/testresult/status">
-</iframe>
-<h2><a href="https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/">Windows</a></h2>
-<a href="https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/">here</a>
-<h2><a href="https://buildd.debian.org/status/package.php?p=git-annex&suite=sid">Debian</a></h2>
-<iframe width=1024 scrolling=no height=500px frameborder=0 marginheight=0 marginwidth=0 src="https://buildd.debian.org/status/package.php?p=git-annex&suite=sid">
-</iframe>
-<iframe width=1024 scrolling=yes height=500px frameborder=0 marginheight=0 marginwidth=0 src="http://matrix.hackage.haskell.org/package/git-annex">
-</iframe>
diff --git a/doc/chunking.mdwn b/doc/chunking.mdwn
deleted file mode 100644
--- a/doc/chunking.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-Most [[special_remotes]] have support for breaking large files up into
-chunks that are stored on the remote.
-
-This can be useful to work around limitations on the size of files
-on the remote.
-
-Chunking also allows for resuming interrupted downloads and uploads.
-
-Note that git-annex has to buffer chunks in memory before they are sent to
-a remote. So, using a large chunk size will make it use more memory.
-
-To enable chunking, pass a `chunk=nnMiB` parameter to `git annex
-initremote`, specifying the chunk size. 
-
-Good chunk sizes will depend on the remote, but a good starting place
-is probably `1MiB`. Very large chunks are problematic, both because
-git-annex needs to buffer one chunk in memory when uploading, and because
-a larger chunk will make resuming interrupted transfers less efficient.
-On the other hand, when a file is split into a great many chunks,
-there can be increased overhead of making many requests to the remote.
-
-To disable chunking of a remote that was using chunking,
-pass `chunk=0` to `git annex enableremote`. Any content already stored on
-the remote using chunks will continue to be accessed via chunks, this
-just prevents using chunks when storing new content.
-
-To change the chunk size, pass a `chunk=nnMiB` parameter to
-`git annex enableremote`. This only affects the chunk sized used when
-storing new content.
-
-# old-style chunking
-
-Note that older versions of git-annex used a different chunk method, which
-was configured by passing `chunksize=nnMib` when initializing a remote.
-
-The old-style chunking had a number of problems, including being less
-efficient, and not allowing resumes of encrypted uploads.
-
-It's not possible to change a remote using that old chunking method to the
-new one, but git-annex continues to support the old-style chunking to
-support such remotes.
-
-See also: [[design document|design/assistant/chunks]]
diff --git a/doc/coding_style.mdwn b/doc/coding_style.mdwn
deleted file mode 100644
--- a/doc/coding_style.mdwn
+++ /dev/null
@@ -1,113 +0,0 @@
-If you do nothing else, avoid use of partial functions from the Prelude!
-`import Utility.PartialPrelude` helps avoid this by defining conflicting
-functions for all the common ones. Also avoid `!!`, it's partial too.
-
-Use tabs for indentation. The one exception to this rule are
-the Hamlet format files in `templates/*`. Hamlet, infuriatingly, refuses
-to allow tabs to be used for indentation.
-
-Code should make sense with any tab stop setting, but 8 space tabs are
-the default. With 8 space tabs, code should not exceed 80 characters
-per line. (With larger tabs, it may of course.)
-
-Use spaces for layout. For example, here spaces (indicated with `.`)
-are used after the initial tab to make the third test line up with
-the others.
-
-		when (foo_test || bar_test ||
-		......some_other_long_test)
-			print "hi"
-
-As a special Haskell-specific rule, "where" clauses are indented with two
-spaces, rather than a tab. This makes them stand out from the main body
-of the function, and avoids excessive indentation of the where cause content.
-The definitions within the where clause should be put on separate lines,
-each indented with a tab.
-
-	main = do
-		foo
-		bar
-		foo
-	  where
-		foo = ...
-		bar = ...
-
-Where clauses for instance definitions and modules tend to appear at the end
-of a line, rather than on a separate line.
-
-	module Foo (Foo, mkFoo, unFoo) where
-	instance MonadBaseControl IO Annex where
-
-When a function's type signature needs to be wrapped to another line,
-it's typical to switch to displaying one parameter per line.
-
-	foo :: Bar -> Baz -> (Bar -> Baz) -> IO Baz
-
-	foo'
-		:: Bar
-		-> Baz
-		-> (Bar -> Baz)
-		-> IO Baz
- 
-Note that the "::" then starts its own line. It is not put on the same
-line as the function name because then it would not be guaranteed to line
-up with the "->" at all tab width settings. Similarly, guards are put
-on their own lines:
-
-	splat i
-		| odd i = error "splat!"
-		| otherwise = i
-
-Multiline lists and record syntax are written with leading commas,
-that line up with the open and close punctuation.
-
-	list =
-		[ item1
-		, item2
-		, item3
-		]
-
-	foo = DataStructure
-		{ name = "bar"
-		, address = "baz"
-		}
-
-Similarly, data structures line up the leading `=` with the following `|`
-
-	data Foo
-		= Bar
-		| Baz
-		| Quux Foo
-		deriving (Eq, Ord)
-
-Module imports are separated into two blocks, one for third-party modules,
-and one for modules that are part of git-annex. (Additional blocks can be used
-if it makes sense.)
-
-Using tabs for indentation makes use of `let .. in` particularly tricky.
-There's no really good way to bind multiple names in a let clause with
-tab indentation. Instead, a where clause is typically used. To bind a single
-name in a let clause, this is sometimes used:
-
-	foo = let x = 42
-		in x + (x-1) + x
-
------
-
-If you feel that this coding style leads to excessive amounts of horizontal
-or vertical whitespace around your code, making it hard to fit enough of it
-on the screen, consider finding a better abstraction, so the code that
-does fit on the screen is easily understandable. ;)
-
------
-
-Note for emacs users: You can put the following snippet into a file called 
-`.dir-locals.el` at root of git-annex's source tree to use tabs for indentation:
-
-	((nil . ((indent-tabs-mode . t)
-	         (tab-width . 8)
-	         (fill-column . 80)))
-	 ;; Warn about spaces used for indentation:
-	 (haskell-mode . ((eval . (highlight-regexp "^ *")))))
-
-Also consider [haskell-tab-indent-mode](https://spwhitton.name/tech/code/haskell-tab-indent/).  The standard indentation modes that come with haskell-mode do not work well with tabs for indentation.  This mode works well for hacking on git-annex.
diff --git a/doc/coding_style/comment_1_70521cf79ad06832b1d73fc2c20c68ec._comment b/doc/coding_style/comment_1_70521cf79ad06832b1d73fc2c20c68ec._comment
deleted file mode 100644
--- a/doc/coding_style/comment_1_70521cf79ad06832b1d73fc2c20c68ec._comment
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnq-RfkVpFN15SWvQ2lpSGAi0XpNQuLxKM"
- nickname="Yuval"
- subject="What about safe?"
- date="2014-07-06T10:45:59Z"
- content="""
-https://hackage.haskell.org/package/safe
-
-> A library wrapping Prelude/Data.List functions that can throw exceptions, such as head and !!. Each unsafe function has up to four variants, e.g. with tail:
-> 
->     tail :: [a] -> [a], raises an error on tail [].
-
->     tailMay :: [a] -> Maybe [a], turns errors into Nothing.
-
->     tailDef :: [a] -> [a] -> [a], takes a default to return on errors.
-
->     tailNote :: String -> [a] -> [a], takes an extra argument which supplements the error message.
-
->     tailSafe :: [a] -> [a], returns some sensible default if possible, [] in the case of tail.
-"""]]
diff --git a/doc/coding_style/comment_2_a820b7c8ae7c2290eb000f61bdb5c514._comment b/doc/coding_style/comment_2_a820b7c8ae7c2290eb000f61bdb5c514._comment
deleted file mode 100644
--- a/doc/coding_style/comment_2_a820b7c8ae7c2290eb000f61bdb5c514._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.2"
- subject="comment 2"
- date="2014-07-10T20:24:03Z"
- content="""
-safe does not prevent using the unsafe prelude functions. Utility.PartialPrelude does, and provides a few safe wrappers like lastMaybe. 
-"""]]
diff --git a/doc/coding_style/comment_3_61c178b997dd044f3531303913f8fa91._comment b/doc/coding_style/comment_3_61c178b997dd044f3531303913f8fa91._comment
deleted file mode 100644
--- a/doc/coding_style/comment_3_61c178b997dd044f3531303913f8fa91._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="Don"
- subject="Style for man pages?"
- date="2015-09-28T10:00:45Z"
- content="""
-Could you add some suggestions for editing the .mdwn files?  I'd like to help clean up a few (really minor) things I noticed, but I don't want to make more work for you with the changes I make.  One thing I'm not sure about is where to set my fill column when editing--I can't seem to pick any single value (79? 80?) that doesn't make some paragraphs change when I rewrap them.  Also, it might be helpful to have a quick guide for when you surround commands and other computer-y words with quotes, backticks, or nothing at all.
-   
-"""]]
diff --git a/doc/coding_style/comment_4_433b7ba5e51e746f6b033ebb5c0e50a2._comment b/doc/coding_style/comment_4_433b7ba5e51e746f6b033ebb5c0e50a2._comment
deleted file mode 100644
--- a/doc/coding_style/comment_4_433b7ba5e51e746f6b033ebb5c0e50a2._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""man page style"""
- date="2015-09-29T15:20:10Z"
- content="""
-Well, I don't always word-wrap paras when re-editing them, and several
-people have had their hands on the man page and may have different wrapping
-settings. 
-
-My suggestion would be, if you need to re-wrap, or generally make
-whitespace changes, do it in a separate commit from other changes. 
-Similarly, make spelling corrections in a separate commit from any
-substance changes.
-
-Note that you can push man page commits directly to this site via git://
-protocol, so it's not going to use my time as long as there's a reasonable
-commit message.
-
-Use backticks around any command name or fragment of a command line. 
-Use quotes around program output, or other values that are not command
-names or switch names.
-"""]]
diff --git a/doc/comments.mdwn b/doc/comments.mdwn
deleted file mode 100644
--- a/doc/comments.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!sidebar content="""
-[[!inline pages="comment_pending(*)" feedfile=pendingmoderation
-description="comments pending moderation" show=-1]]
-Comments in the [[!commentmoderation desc="moderation queue"]]:
-[[!pagecount pages="comment_pending(*)"]]
-"""]]
-
-Recent comments posted to this site:
-[[!inline pages="comment(*)" template="comment"]]
diff --git a/doc/contact.mdwn b/doc/contact.mdwn
deleted file mode 100644
--- a/doc/contact.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Joey Hess <id@joeyh.name> is the author of git-annex. If you need to
-talk about something privately, email me.
-
-The [[forum]] is the best place to discuss git-annex.
-
-For realtime chat, use the `#git-annex` channel on irc.oftc.net.
-You can also watch incoming commits there.
-
-The [VCS-home mailing list](http://lists.madduck.net/listinfo/vcs-home)
-is a good mailing list for users who want to use git-annex in the context
-of managing their large personal files.
diff --git a/doc/contact/comment_1_12d60f767d90bea94974e1ff6b206d31._comment b/doc/contact/comment_1_12d60f767d90bea94974e1ff6b206d31._comment
deleted file mode 100644
--- a/doc/contact/comment_1_12d60f767d90bea94974e1ff6b206d31._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlZQcpoRmyZBlsFQ7TMMYlZZdmBG1TxMzA"
- nickname="Felipe"
- subject="translation"
- date="2013-09-10T20:19:53Z"
- content="""
-I would like to translate this content of site, the tutorials, pages, etc, to portuguese. I think that can help many users in my country. How can I build a new pages here with git-annex content in portuguese?  
-"""]]
diff --git a/doc/contact/comment_2_95b6d868b913418de50ba121d71d2390._comment b/doc/contact/comment_2_95b6d868b913418de50ba121d71d2390._comment
deleted file mode 100644
--- a/doc/contact/comment_2_95b6d868b913418de50ba121d71d2390._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.4.51"
- subject="comment 2"
- date="2013-09-12T21:08:16Z"
- content="""
-I welcome translations in theory, but I do not have any infrastructure in place to support it, so that would have to be the first step.
-
-(Also, this page is not a general-purpose discussion forum.)
-"""]]
diff --git a/doc/contact/comment_3_2cf43bd406673294e6cdbd785c4a0d0c._comment b/doc/contact/comment_3_2cf43bd406673294e6cdbd785c4a0d0c._comment
deleted file mode 100644
--- a/doc/contact/comment_3_2cf43bd406673294e6cdbd785c4a0d0c._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlkA6XinbeOdnEDxEGQUWyjqPGh0kdMXr4"
- nickname="Blake"
- subject="Starting git-annex assistant"
- date="2013-10-02T23:57:48Z"
- content="""
-Hi Joey,
-
-I am one of your original funders for git-annex. I think you have done a great job and I am proud to say I helped fund your endeavor.
-
-How do I start the git-annex assistant webapp via command line? I installed the program on my Fedora 19 computer via YUM and it does not come packaged with a desktop icon as you show in your demonstration video. I try running `$ git annex assistant` but I cannot access `http://127.0.0.1:34795/` as you do in the video. Also, the quickstart page (http://git-annex.branchable.com/assistant/quickstart/) seems to have outdated information as it states you can start the webapp via `$ git annex webapp`, however when I try to run this I get the following error: `git-annex: unknown command webapp`.
-
-Regards,
-Blake
-
-"""]]
diff --git a/doc/contact/comment_4_586a506e27379d74fbc0f4b654e89c7d._comment b/doc/contact/comment_4_586a506e27379d74fbc0f4b654e89c7d._comment
deleted file mode 100644
--- a/doc/contact/comment_4_586a506e27379d74fbc0f4b654e89c7d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 4"
- date="2013-10-03T00:06:11Z"
- content="""
-Your fedora build apparently does not include the webapp, since `git annex webapp` is the right command. Install the [[install/Linux_standalone]] build instead.
-
-(Again this page is not a discussion forum. Next person to post here will waste my time since I will have to go configure the site to block comments here..)
-"""]]
diff --git a/doc/contribute.mdwn b/doc/contribute.mdwn
deleted file mode 100644
--- a/doc/contribute.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-Help make git-annex better!
-
-## wiki gardening
-
-This website is a wiki, so you can edit and improve any page.
-
-Or, write a [[new_tip|tips]] explaining how to accomplish something with
-git-annex.
-
-## bug triage
-
-People often file [[bugs]] on git-annex that are easily resolved by helping
-them with a problem, and perhaps writing some documentation.
-
-Many bugs are also filed without enough information
-to reproduce the problem, and need to be tagged moreinfo and a comment
-posted asking the submitter for details.
-
-Joey spends a lot of time dealing with this kind of bug triage. If you can
-take the time to pick a bug that is not marked as "confirmed" or "moreinfo"
-from the list of [[bugs]], try to reproduce it and follow up either
-confirming that the problem exists, or asking the submitter for more info,
-you'll make Joey more productive!
-
-## code contributions
-
-[[download]] the source code, [[build|install/fromsource]] it
-and send patches!
-
-If you know Haskell, git-annex has lots of Haskell code that
-could be improved. See the [[coding_style]] and have at it.
-
-If you don't know Haskell, git-annex has many other coding opportunities.
-You could work to improve the Android port (Java etc) or improve the
-Javascript and CSS of the git-annex webapp, or work on porting libraries
-needed by the Windows port.
-
-To send patches, either include the patch in a bug report (small patch)
-or put up a branch in a git repository containing your changes.
diff --git a/doc/copies.mdwn b/doc/copies.mdwn
deleted file mode 100644
--- a/doc/copies.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-Annexed data is stored inside  your git repository's `.git/annex` directory.
-Some [[special_remotes]] can store annexed data elsewhere.
-
-It's important that data not get lost by an ill-considered `git annex drop`
-command.  So, git-annex can be configured to try
-to keep N copies of a file's content available across all repositories. 
-(Although [[untrusted_repositories|trust]] don't count toward this total.)
-
-By default, N is 1; it is configured by running `git annex numcopies N`.
-This default can be overridden on a per-file-type basis by the annex.numcopies
-setting in `.gitattributes` files. The --numcopies switch allows
-temporarily using a different value.
-
-`git annex drop` attempts to check with other git remotes, to check that N
-copies of the file exist. If enough repositories cannot be verified to have
-it, it will retain the file content to avoid data loss. Note that
-[[trusted_repositories|trust]] are not explicitly checked.
-
-For example, consider three repositories: Server, Laptop, and USB. Both Server
-and USB have a copy of a file, and N=1. If on Laptop, you `git annex get
-$file`, this will transfer it from either Server or USB (depending on which
-is available), and there are now 3 copies of the file.
-
-Suppose you want to free up space on Laptop again, and you `git annex drop` the file
-there. If USB is connected, or Server can be contacted, git-annex can check
-that it still has a copy of the file, and the content is removed from
-Laptop. But if USB is currently disconnected, and Server also cannot be
-contacted, it can't verify that it is safe to drop the file, and will
-refuse to do so.
-
-With N=2, in order to drop the file content from Laptop, it would need access
-to both USB and Server.
-
-For more complicated requirements about which repositories contain which
-content, see [[required_content]].
diff --git a/doc/copies/comment_1_af9bee33777fb8a187b714fc8c5fb11d._comment b/doc/copies/comment_1_af9bee33777fb8a187b714fc8c5fb11d._comment
deleted file mode 100644
--- a/doc/copies/comment_1_af9bee33777fb8a187b714fc8c5fb11d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://olivier.berger.myopenid.com/"
- nickname="obergix"
- subject="See also section on backups in walthroug"
- date="2013-08-25T05:37:04Z"
- content="""
-See also [walthrough/backups](/walkthrough/backups/) for some details about copies. 
-"""]]
diff --git a/doc/design.mdwn b/doc/design.mdwn
deleted file mode 100644
--- a/doc/design.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-git-annex's high-level design is mostly inherent in the data that it
-stores in git, and alongside git. See [[internals]] for details.
-
-Here's the other design documents we have:
-
-[[!map pages="page(design/*) and !design/*/*"]]
diff --git a/doc/design/adjusted_branches.mdwn b/doc/design/adjusted_branches.mdwn
deleted file mode 100644
--- a/doc/design/adjusted_branches.mdwn
+++ /dev/null
@@ -1,316 +0,0 @@
-Consider two use cases:
-
-1. Using a v6 repo with locked files on a crippled filesystem not
-   supporting symlinks. For the files to be usable, they need to be
-   unlocked. But, the user may not want to unlock the files everywhere,
-   just on this one crippled system.
-2. [[todo/hide_missing_files]]
-
-Both of these could be met by making `git-annex sync` maintain an adjusted
-version of the original branch, eg `adjusted/master`.
-
-There would be a adjustment function. For #1 above it would simply convert all
-annex symlinks to annex file pointers. For #2 above it would omit files
-whose content is not currently in the annex. Sometimes, both #1 and #2 would
-be wanted.
-
-[Alternatively, it could stay on the master branch, and only adjust the
-work tree and index. See WORKTREE notes below for how this choice would
-play out.]
-
-[[!toc]]
-
-## adjusting
-
-	master           adjusted/master
-	A
-	|--------------->A'
-	|                |
-
-When generating commit A', reuse the date of A and use a standard author,
-committer, and message. This means that two users with the adjusted branch
-checked out and using the same adjustments will get identical shas for A', and
-so can collaborate on them.
-
-## commit
-
-When committing changes, a commit is made as usual to the adjusted branch.
-So, the user can `git commit` as usual. This does not touch the
-original branch yet. 
-
-Then we need to get from that commit to one with the adjustments reversed,
-which should be the same as if the adjusted branch had not been used.
-This commit gets added onto the original branch.
-
-So, the branches would look like this:
-
-	master           adjusted/master
-	A
-	|--------------->A'
-	|                |
-	|                C (new commit)
-	B < - - - - - - -
-	|                
-	|--------------->B'
-	|                |
-
-Note particularly that B does not have A' or C in its history;
-the adjusted branch is not evident from outside.
-
-Also note that B gets adjusted and the adjusted branch is rebased on top of
-it, so C does not remain in the adjusted branch history either. This will
-make other checkouts that are in the same adjusted branch end up with the
-same B' commit when they pull B.
-
-There may be multiple commits made to the adjusted branch before any get
-applied back to the original branch. This is handled by reverse adjusting
-commits one at a time and rebasing the others on top.
-
-	master           adjusted/master
-	A
-	|--------------->A'
-	|                |
-	|                C1
-	|                |
-	|                C2
-
-
-	master           adjusted/master
-	A
-	|--------------->A'
-	|                |
-	|                C1
-	B1< - - - - - - -
-	|
-	|--------------->B1'
-	|                |
-	|                C2'
-	B2< - - - - - - -
-	|
-	|--------------->B2'
-
-
-[WORKTREE: A pre-commit hook would be needed to update the staged changes, 
-reversing the adjustment before the commit is made. All the other complications
-above are avoided.]
-
-## merge
-
-This would be done by `git annex merge` and `git annex sync`, with the goal
-of merging origin/master into master, and updating adjusted/master.
-
-Note that the adjusted files db needs to be updated to reflect the changes
-that are merged in, for object add/remove to work as described below.
-
-When merging, there should never be any commits present on the
-adjusted/master branch that have not yet been propigated back to the master
-branch. If there are any such commits, just propigate them into master
-before beginning the merge. There may be staged changes, or changes in the
-work tree.
-
-First, merge origin/master into master. This is done in a temp work
-tree and with a temp index, so does not affect the checked out adjusted
-branch.
-
-(Note that the reason this is done, rather than adjusting origin/master
-and merging it into the work tree, is that merge conflicts would be very
-common with the naive approach, because the adjusted branch often changes
-files, and origin/master may change the same files.)
-
-	origin/master  master   adjusted/master
-	A------------->A- - - ->A'
-	|              |
-	B------------->C
-
-While a fast-forward merge is shown here, other merges work the same way.
-There may be merge conflicts; if so they're auto-resolved.
-
-Then, adjust merge commit C, and merge that into adjusted/master.
-	
-	origin/master  master   adjusted/master
-	A------------->A- - - ->A'
-	|              |        |
-	B------------->C- - C'->D'
-
-This merge is done in-worktree, so the work tree gets updated.
-There may be more merge conflicts here; they're also auto-resolved.
-
-Now, D' is a merge commit, between A' and C'. 
-To finish, change that commit so it does not have A' as its parent.
-
-This can be accomplished by propigating the reverse-adjusted D'
-back to master, and then adjusting master to yield the final
-adjusted/master.
-	
-	origin/master  master   adjusted/master
-	A------------->A
-	|              |         
-	B------------->C         
-	               |         
-		       D - - -> D'
-
-Notice how similar this is to the commit graph. Indeed, "fast-forward" 
-merging the same B commit from origin/master will lead to an identical
-sha for B' as the original committer got!
-
-Since the adjusted/master branch is not present on the remote, if the user
-does a `git pull`, it won't merge in changes from origin/master. Which is
-good because the adjustment needs to be applied first.
-
-However, if the user does `git merge origin/master`, they'll get into a
-state where the adjustment has not been applied. The post-merge hook could be
-used to clean up after that. Or, let the user foot-shoot this way; they can
-always reset back once they notice the mistake.
-
-[WORKTREE: `git pull` would update the work tree, and may lead to conflicts
-between the adjusted work tree and pulled changes. A post-merge hook would
-be needed to re-adjust the work tree, and there would be a window where eg,
-not present files would appear in the work tree.]
-
-## annex object add/remove
-
-When objects are added/removed from the annex, the associated file has to
-be looked up, and the adjustment applied to it. So, dropping a file with the
-missing file adjustment would cause it to be removed from the adjusted branch,
-and receiving a file's content would cause it to appear in the adjusted
-branch. TODO
-
-These changes would need to be committed to the adjusted branch, otherwise
-`git diff` would show them.
-
-How to avoid making a new commit each time a single object is
-added/removed? That seems too expensive in both CPU and dangling git
-objects for old versions of the adjusted branch. It would be fine if
-`git annex get` and `git annex drop` only re-adjusted the branch one time
-at the end. OTOH, when should the assistant re-adjust the branch?
-
-Maybe instead of re-adjusting the branch after each file, stage the
-worktree change, and hold off on committing. Then when a commit is
-eventually made, the reverse adjusting to propigate it to master would need
-to make sure to not remove files that were deleted as part of the commit,
-if their content is not present.
-
-[WORKTREE: Simply adjust the work tree (and index) per the adjustment.]
-
-## reverse adjusting commits
-
-A user's commits on the adjusted branch have to be reverse adjusted
-to get changes to apply to the master branch.
-
-This reversal of one adjustment can be done as just another adjustment.
-Since only files touched by the commit will be reverse adjusted, it doesn't
-need to reverse all changes made by the original adjustment.
-
-For example, reversing the unlock adjustment might lock the file. Or, it might
-do nothing, which would make all committed files remain unlocked.
-
-## push
-
-The new master branch can then be pushed out to remotes. The
-adjusted/master branch is not pushed to remotes. `git-annex sync` should
-automatically push master when adjusted/master is checked out.
-
-When push.default is "simple" (the new default), running `git push` when in
-adjusted/master won't push anything. It would with "matching". Pity. (I
-continue to feel git picked the wrong default here.) Users may find that
-surprising. Users of `git-annex sync` won't need to worry about it though.
-
-[WORKTREE: push works as usual]
-
-## acting on filtered-out files
-
-If a file is filtered out due to not existing, there should be a way
-for `git annex get` to get it. Since the filtered out file is not in the
-index, that would not normally work. What to do?
-
-Maybe instead of making a branch where the file is deleted, it would be
-better to delete it from the work tree, but keep the branch as-is. Then
-`git annex get` would see the file, as it's in the index. 
-
-But, not maintaining an adjusted branch complicates other things. See
-WORKTREE notes throughout this page. Overall, the WORKTREE approach seems
-too problimatic.
-
-Ah, but we know that when adjustment #2 is in place, any file that `git annex
-get` could act on is not in the index. So, it could look at the master branch
-instead. (Same for `git annex move --from` and `git annex copy --from` and
-the assistant.)
-
-OTOH, if adjustment #1 is in place and not #2, a file might be renamed in the
-index, and `git annex get $newname` should work. So, it should look at the
-index in that case.
-
-## problems
-
-Using `git checkout` when in an adjusted branch is problimatic, because a
-non-adjusted branch would then be checked out. But, we can just say, if
-you want to get into an adjusted branch, you have to run git annex adjust
-Or, could make a post-checkout hook. This is would mostly be confusing when
-git-annex init switched into the adjusted branch due to lack of symlink
-support.
-
-After a commit to an adjusted branch, `git push` won't do anything. The
-user has to know to git-annex sync. (Even if a pre-commit hook propigated
-the commit back to the master branch, `git push` wouldn't push it with the
-default "matching" push strategy.)
-
-Tags are bit of a problem. If the user tags an ajusted branch, the tag
-includes the local adjustments.  
-[WORKTREE: not a problem]
-
-If the user refers to commit shas (in, eg commit messages), those won't be
-visible to anyone else.  
-[WORKTREE: not a problem]
-
-When a pull modifies a file, its content won't be available, and so it
-would be hidden temporarily by adjustment #2. So the file would seem to vanish,
-and come back later, which could be confusing. Could be fixed as discussed
-in [[todo/deferred_update_mode]]. Arguably, it's just as confusing for the
-file to remain visible but have its content temporarily replaced with a
-annex pointer.
-
-### master push overwrite race (fixed)
-
-There are potentially races in code that assumes a branch like
-master is not being changed by someone else. 
-  
-In particular, if propigateAdjustedCommits rebases the adjusted branch on
-top of master. That is called by sync. The assumption is that any changes
-in master have already been handled by updateAdjustedBranch. But, if
-another remote pushed a new master at just the right time, the adjusted
-branch could be rebased on top of a master that it doesn't incorporate,
-which is wrong.
-
-Best fix seems to be to maintain a basis ref, that is not a branch,
-like refs/adjusted/master(unlocked). Copy master's ref to it when
-entering the view branch. Then, make all adjustments via the basis
-ref, and propigate back to refs/heads/master.
-
-It's fine to overwrite changes that were pushed to master when
-propigating from the adjusted branch. Synced changes also go to
-synced/master so won't be lost. Pushes not made using git-annex sync
-of master are not really desired, just a possibility.
-
-## integration with view branches
-
-Entering a view from an adjusted branch should probably carry the adjusting
-over into the creation/updating of the view branch.
-
-Could go a step further, and implement view branches as another branch
-adjustment, albeit an extreme one. This might improve view branches.
-For example, it's not currently possible to update a view branch with
-changes fetched from a remote, and this could get us there.
-
-This would need the reverse adjust to be able to change metadata,
-so that a commit that moved files in the view updates their metadata.
-
-[WORKTREE: Wouldn't be able to integrate, unless view branches are changed
-into adjusted view worktrees.]
-
-## TODOs
-
-* Interface in webapp to enable adjustments.
-* Honor annex.thin when entering an adjusted branch. git checkout
-  will make copies of the content of annexed files, so this would need
-  to checkout the adjusted branch some other way. Maybe generalize so this
-  more efficient checkout is available as a git-annex command?
diff --git a/doc/design/assistant.mdwn b/doc/design/assistant.mdwn
deleted file mode 100644
--- a/doc/design/assistant.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-These are the design pages for the git-annex [[/assistant]].
-
-Parts of the design is still being fleshed out, still many ideas
-and use cases to add. Feel free to chip in with comments! --[[Joey]]
-
-See [[roadmap]] for current plans, as this list was mostly completed.
-
-## initial development kickstarter year overview (2012-2013)
-
-* Month 1 "like dropbox": [[!traillink inotify]] [[!traillink syncing]]
-* Month 2 "shiny webapp": [[!traillink webapp]] [[!traillink progressbars]]
-* Month 3 "easy setup": [[!traillink configurators]] [[!traillink pairing]]
-* Month 4 "cloud": [[!traillink cloud]] [[!traillink transfer_control]]
-* Month 5 "cloud continued": [[!traillink xmpp]] [[!traillink more_cloud_providers]]
-* Month 6 "9k bonus round": [[!traillink desymlink]]
-* Month 7: user-driven features and polishing;
-  [presentation at LCA2013](http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4)
-* Month 8: [[!traillink Android]]
-* Month 9: [[screencasts|videos]] and polishing
-* Month 10: bugfixing, [[Android]] webapp
-* Month 11: [[!traillink Windows]] porting, finishing touches
-* Month 12: [presentation at SELF2013](http://www.southeastlinuxfest.org/), finishing touches
-
-## porting
-
-* [[OSX]] port is in fairly good shape, but still has some room for improvement
-* [[android]] port is zooming along
-* [[Windows]] port is barely getting started
-
-## not yet on the map:
-
-* [[rate_limiting]]
-* [[partial_content]]
-* [[deltas]]
-* [[leftovers]]
-* [[other todo items|todo]]
-
-## polls
-
-I post [[polls]] occasionally to make decisions. You can vote!
-
-## blog
-
-I'm blogging about my progress in the [[devblog]] on a semi-daily basis.
-Follow along!
diff --git a/doc/design/assistant/OSX.mdwn b/doc/design/assistant/OSX.mdwn
deleted file mode 100644
--- a/doc/design/assistant/OSX.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Misc OSX porting things:
-
-* autostart the assistant on OSX, using launchd **done**
-* icon to start webapp **done**
-* use FSEvents to detect file changes (better than kqueue) **done**
-* Use OSX's "network reachability functionality" to detect when on a network
-  <http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/SystemConfigFrameworks/SC_Intro/SC_Intro.html#//apple_ref/doc/uid/TP40001065>
-* Switch from gpg to <https://gpgtools.org/>. According to a user,
-  this is better because it can show a dialog window for password prompts.
-
-Bugs:
-
-[[!inline pages="tagged(design/assistant/OSX) and !link(bugs/done)" show=0 archive=yes]]
diff --git a/doc/design/assistant/OSX/comment_1_9290f6e6f265e906b08631224392b7bf._comment b/doc/design/assistant/OSX/comment_1_9290f6e6f265e906b08631224392b7bf._comment
deleted file mode 100644
--- a/doc/design/assistant/OSX/comment_1_9290f6e6f265e906b08631224392b7bf._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4"
- nickname="Jörn"
- subject="Mount detection"
- date="2012-09-21T09:23:34Z"
- content="""
-regarding the current mount polling on OSX: why not use the NSNotificationCenter for being notified on mount events on OSX?
-
-Details see:
-
-1. <http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x>
-2. <http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c>
-3. <https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438>
-"""]]
diff --git a/doc/design/assistant/android.mdwn b/doc/design/assistant/android.mdwn
deleted file mode 100644
--- a/doc/design/assistant/android.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-The Android port is just about usable. Still, we have some fun todo items
-to improve it.
-
-## high-priority TODO
-
-* [[bugs/Android_app_permission_denial_on_startup]]
-* S3 doesn't work (at least to Internet Archive: 
-  "connect: does not exist (connection refused)")
-* Get app into Google Play and/or FDroid
-
-## TODO
-
-* Don't make app initially open terminal + webapp, but go to a page that
-  allows opening the webapp or terminal.  
-  Possibly, switch from running inside terminal app to real standalone app.
-  See <https://github.com/neurocyte/android-haskell-activity>
-  and <https://github.com/neurocyte/foreign-jni>.
-
-* I have seen an assistant thread crash with an interrupted system call
-  when the device went to sleep while it was running. Auto-detect and deal with
-  that somehow.
-* Make git stop complaining that "warning: no threads uspport, ignoring --threads"
-* git does not support http remotes. To fix, need to port libcurl and
-  allow git to link to it.
-* getEnvironment is broken on Android <https://github.com/neurocyte/ghc-android/issues/7>
-  and a few places use it. I have some horrible workarounds in place.
-* Get local pairing to work. network-multicast and network-info don't
-  currently install.
-* Get test suite to pass. `git clone` of a local repo fails on android
-  for some reason.
-* Make app autostart on boot, optionally. <http://stackoverflow.com/questions/1056570/how-to-autostart-an-android-application>
-* The app should be aware of power status, and avoid expensive background
-  jobs when low on battery or run flat out when plugged in.
-* The app should be aware of network status, and avoid expensive data
-  transfers when not on wifi. This may need to be configurable.
-* glacier and local pairing are not yet enabled for Android.
-* The "Files" link doesn't start a file browser. Should be possible to do
-  on Android via intents, I suppose?
-* Adding removable drives would work, but the android app is not in the 
-  appropriate group to write to them. `WRITE_MEDIA_STORAGE` permission
-  needed. Added to AndroidManifest, but did not seem to be used.
-  Googleing for it will find a workaround that needs a rooted device.
diff --git a/doc/design/assistant/blog.mdwn b/doc/design/assistant/blog.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-This blog was updated on a semi-daily basis by Joey during the year of work
-concentrating on the git-annex assistant that was funded by his kickstarter
-campaign.
-
-Post-kickstarter work will instead appear on the [[devblog]]. However,
-this page's RSS feed will continue to work, so you don't have to migrate
-your RSS reader.
-
-[[!inline pages="page(devblog/*)" show=-1 feedshow=7]]
-
-[[!inline pages="page(design/assistant/blog/*)" show=0 feeds=no]]
diff --git a/doc/design/assistant/blog/day_100__cursed_clouds.mdwn b/doc/design/assistant/blog/day_100__cursed_clouds.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_100__cursed_clouds.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Preferred content control is wired up to `--auto` and working for `get`,
-`copy`, and `drop`. Note that `drop --from remote --auto` drops files that
-the remote's preferred content settings indicate it doesn't want;
-likewise `copy --to remote --auto` sends content that the remote does want.
-
-Also implemented `smallerthan`, `largerthan`, and `ingroup` limits,
-which should be everything needed for the scenarios described in
-[[transfer_control]].
-
-Dying to hook this up to the assistant, but a cloudy day is forcing me to
-curtail further computer use.
-
-----
-
-Also, last night I developed a patch for the hS3 library, that should let
-git-annex upload large files to S3 without buffering their whole content in
-memory. I have a `s3-memory-leak` in git-annex that uses the new API I
-developed. Hopefully hS3's maintainer will release a new version with that
-soon.
diff --git a/doc/design/assistant/blog/day_102__very_high_level_programming.mdwn b/doc/design/assistant/blog/day_102__very_high_level_programming.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_102__very_high_level_programming.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-## today
-
-Came up with four groups of repositories that it makes sense to
-define standard preferred content expressions for.
-
-[[!format haskell """
-	preferredContent :: StandardGroup -> String
-	preferredContent ClientGroup = "exclude=*/archive/*"
-	preferredContent TransferGroup = "not inallgroup=client and " ++ preferredContent ClientGroup
-	preferredContent ArchiveGroup = "not copies=archive:1"
-	preferredContent BackupGroup = "" -- all content is preferred
-"""]]
-
-[[preferred_content]] has the details about these groups, but
-as I was writing those three preferred content expressions,
-I realized they are some of the highest level programming I've ever done,
-in a way.
-
-Anyway, these make for a very simple repository configuration UI:
-
-[[!img /assistant/repogroups.png alt="form with simple select box"]]
-
-## yesterday (forgot to post this)
-
-Got the assistant honoring preferred content settings. Although so far that
-only determines what it transfers. Additional work will be needed to make
-content be dropped when it stops being preferred.
-
-----
-
-Added a "configure" link next to each repository on the repository config
-page. This will go to a form to allow setting things like repository
-descriptions, groups, and preferred content settings.
-
-----
-
-Cut a release.
diff --git a/doc/design/assistant/blog/day_103__bugfix_day.mdwn b/doc/design/assistant/blog/day_103__bugfix_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_103__bugfix_day.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Bugfixes all day.
-
-The most amusing bug, which I just stumbled over randomly on my own,
-after someone on IRC yesterday was possibly encountering the same issue,
-made `git annex webapp` go into an infinite memory-consuming loop on
-startup if the repository it had been using was no longer a valid git
-repository.
-
-Then there was the place where HOME got unset, with also sometimes amusing
-results.
-
-Also fixed several build problems, including a threaded runtime hang
-in the test suite. Hopefully the next release will build on all Debian
-architectures again.
-
-I'll be cutting that release tomorrow. I also updated the linux
-prebuilt tarballs today.
-
-----
-
-Hmm, not entirely bugfixes after all. Had time (and power) to work
-on the repository configuration form too, and added a check box to it that
-can be unchecked to disable syncing with a repository. 
-Also, made that form be displayed after the webapp creates a new
-repository.
diff --git a/doc/design/assistant/blog/day_104__misc.mdwn b/doc/design/assistant/blog/day_104__misc.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_104__misc.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Switched the OSX standalone app to use `DYLD_ROOT_PATH`.
-This is the third `DYLD_*` variable I've tried; neither
-of the other two worked in all situations. This one may do better.
-If not, I may be stuck modifying the library names in each executable
-using `install_name_tool`
-([good reference for doing that](http://www.mikeash.com/pyblog/friday-qa-2009-11-06-linking-and-install-names.html)).
-As far as I know, every existing dynamic library lookup system is broken
-in some way other other; nothing I've seen about OSX's so far
-disproves that rule.
-
-Fixed a nasty utf-8 encoding crash that could occur when merging the
-git-annex branch. I hope I'm almost done with those.
-
-Made git-annex auto-detect when a git remote is on a sever like github
-that doesn't support git-annex, and automatically set annex-ignore.
-
-Finished the UI for pausing syncing of a remote. Making the syncing
-actually stop still has some glitches to resolve.
diff --git a/doc/design/assistant/blog/day_105__lazy_Sunday.mdwn b/doc/design/assistant/blog/day_105__lazy_Sunday.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_105__lazy_Sunday.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-Did a fair amount of testing and bug fixing today. 
-
-There is still some buggy behavior around pausing syncing to a remote,
-where transfers still happen to it, but I fixed the worst bug there.
-
-Noticed that if a non-bare repo is set up on a removable drive,
-its file tree will not normally be updated as syncs come in -- because the
-assistant is not running on that repo, and so incoming syncs are not
-merged into the local master branch. For now I made it always use bare
-repos on removable drives, but I may want to revisit this.
-
-The repository edit form now has a field for the name of the repo,
-so the ugly names that the assistant comes up with for ssh remotes
-can be edited as you like. `git remote rename` is a very nice thing.
-
-Changed the preferred content expression for transfer repos to this:
-"not (inallgroup=client **and copies=client:2)**". This way, when there's
-just one client, files on it will be synced to transfer repos, even
-though those repos have no other clients to transfer them to. Presumably,
-if a transfer repo is set up, more clients are coming soon, so this avoids
-a wait. Particularly useful with removable drives, as the drive will start
-being filled as soon as it's added, and can then be brought to a client
-elsewhere. The "2" does mean that, once another client is found,
-the data on the transfer repo will be dropped, and so if it's brought
-to yet another new client, it won't have data for it right away.
-I can't see way to generalize this workaround to more than 2 clients;
-the transfer repo has to start dropping apparently unwanted content at
-some point. Still, this will avoid a potentially very confusing behavior
-when getting started.
-
-----
-
-I need to get that dropping of non-preferred content to happen still.
-Yesterday, I did some analysis of all the events that can cause previously
-preferred content to no longer be preferred, so I know all the places
-I have to deal with this.
-
-The one that's giving me some trouble is checking in the transfer scan. If it
-checks for content to drop at the same time as content to transfer, it could
-end up doing a lot of transfers before dropping anything. It'd be nicer to
-first drop as much as it can, before getting more data, so that transfer
-remotes stay as small as possible. But the scan is expensive, and it'd also
-be nice not to need two passes.
diff --git a/doc/design/assistant/blog/day_106__lazy_Monday.mdwn b/doc/design/assistant/blog/day_106__lazy_Monday.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_106__lazy_Monday.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I was mostly working on other things today, but I did do some bug fixing.
-The worst of these is a bug introduced in 3.20121009 that breaks
-`git-annex-shell configlist`. That's pretty bad for using git-annex
-on servers, although you mostly won't notice unless you're just getting
-started using a ssh remote, since that's when it calls configlist.
-I will be releasing a new version as soon as I have bandwidth (tomorrow).
-
-Also made the standalone Linux and OSX binaries build with ssh connection
-caching disabled, since they don't bundle their own ssh and need to work
-with whatever ssh is installed.
diff --git a/doc/design/assistant/blog/day_107__memory_leak.mdwn b/doc/design/assistant/blog/day_107__memory_leak.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_107__memory_leak.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-More bugfixes today. The assistant now seems to have enough users that
-they're turning up interesting bugs, which is good. But does keep me too
-busy to add many more bugs\^Wcode.
-
-The fun one today made it bloat to eat all memory when logging out of a
-Linux desktop. I tracked that back to a bug in the Haskell DBUS library
-when a session connection is open and the session goes away. Developed a
-test case, and even profiled it, and sent it all of to the library's
-author. Hopefully there will be a quick fix, in the meantime today's
-release has DBUS turned off. Which is ok, it just makes it a little bit
-slower to notice some events.
diff --git a/doc/design/assistant/blog/day_108__another_zombie_outbreak.mdwn b/doc/design/assistant/blog/day_108__another_zombie_outbreak.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_108__another_zombie_outbreak.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-I released git-annex an unprecidented two times yesterday, because just
-after the first release, I learned of a another zombie problem. Turns out
-this zombie had existed for a while, but it was masked by zombie reaping
-code that I removed recently, after fixing most of the other zombie
-problems. This one, though, is not directly caused by git-annex. When rsync
-runs ssh, it seems to run two copies, and one is left unwaited on as a
-zombie. Oddly, this only happens when rsync's stdout is piped into
-git-annex, for progress bar handling. I have not source-dived rsync's code
-to get to the bottom of this, but I put in a workaround.
-
-I did get to the bottom of yesterday's runaway dbus library. Got lucky and
-found the cause of the memory leak in that library on the first try, which
-is nice since each try involved logging out of X. I've been corresponding
-with its author, and a fix will be available soon, and then git-annex will
-need some changes to handle dbus reconnection.
-
------
-
-For the first time, I'm starting to use the assistant on my own personal
-git-annex repo. The preferred content and group settings let me configure it
-use the complex system of partial syncing I need. For example, I have this
-configured for my sound files, keeping new podcasts on a server until they land
-somewhere near me. And keeping any sound files that I've manually put on my
-laptop, and syncing new podcasts, but not other stuff.
-
-	# (for my server)
-	preferred-content 87e06c7a-7388-11e0-ba07-03cdf300bd87 = include=podcasts/* and (not copies=nearjoey:1)
-	# (for my laptop)
-	preferred-content 0c443de8-e644-11df-acbf-f7cd7ca6210d = exclude=*/out/* and (in=here or (include=podcasts/*))
-
-Found and fixed a bug in the preferred content matching code, where
-if the assistant was run in a subdirectory of the repo, it failed to
-match files correctly.
diff --git a/doc/design/assistant/blog/day_109__dropping.mdwn b/doc/design/assistant/blog/day_109__dropping.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_109__dropping.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Got unwanted content to be dropped from the local repo, as well as remotes
-when doing the expensive scan. I kept the scan a single pass for now,
-need to revisit that later to drop content before transferring more.
-Also, when content is downloaded or uploaded, this can result in it
-needing to be dropped from somewhere, and the assistant handles that too.
-
-There are some edge cases with hypothetical, very weird preferred
-content expressions, where the assistant won't drop content right away.
-(But will later in the expensive scan.) Other than those, I think I have
-nearly all content dropping sorted out. The only common case I know of where
-unwanted content is not dropped by the assistant right away is when a file
-is renamed (eg, put in a "Trash" directory).
-
-In other words, repositories put into the transfer group will now work as
-described, only retaining content as long as is needed to distribute it to
-clients. Big milestone!
diff --git a/doc/design/assistant/blog/day_10__lsof.mdwn b/doc/design/assistant/blog/day_10__lsof.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_10__lsof.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-A rather frustrating and long day coding went like this:
-
-## 1-3 pm
-
-Wrote a single function, of which all any Haskell programmer needs to know
-is its type signature:
-
-	Lsof.queryDir :: FilePath -> IO [(FilePath, LsofOpenMode, ProcessInfo)]
-
-When I'm spending another hour or two taking a unix utility like lsof and
-parsing its output, which in this case is in a rather complicated
-machine-parsable output format, I often wish unix streams were strongly
-typed, which would avoid this bother.
-
-## 3-9 pm
-
-Six hours spent making it defer annexing files until the commit thread
-wakes up and is about to make a commit. Why did it take so horribly long?
-Well, there were a number of complications, and some really bad bugs
-involving races that were hard to reproduce reliably enough to deal with.
-
-In other words, I was lost in the weeds for a lot of those hours...
-
-At one point, something glorious happened, and it was always making exactly
-one commit for batch mode modifications of a lot of files (like untarring
-them). Unfortunately, I had to lose that gloriousness due to another
-potential race, which, while unlikely, would have made the program deadlock
-if it happened. 
-
-So, it's back to making 2 or 3 commits per batch mode change. I also have a
-buglet that causes sometimes a second empty commit after a file is added.
-I know why (the inotify event for the symlink gets in late,
-after the commit); will try to improve commit frequency later.
-
-## 9-11 pm
-
-Put the capstone on the day's work, by calling lsof on a directory full
-of hardlinks to the files that are about to be annexed, to check if any
-are still open for write.
-
-This works great! Starting up `git annex watch` when processes have files
-open is no longer a problem, and even if you're evil enough to try having
-multiple processes open the same file, it will complain and not annex it
-until all the writers close it.
-
-(Well, someone really evil could turn the write bit back on after git annex
-clears it, and open the file again, but then really evil people can do
-that to files in `.git/annex/objects` too, and they'll get their just
-deserts when `git annex fsck` runs. So, that's ok..)
-
-----
-
-Anyway, will beat on it more tomorrow, and if all is well, this will finally
-go out to the beta testers.
diff --git a/doc/design/assistant/blog/day_110__more_dropping.mdwn b/doc/design/assistant/blog/day_110__more_dropping.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_110__more_dropping.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-Got preferred content checked when files are moved around.
-So, in repositories in the default client group, if you make a
-"archive" directory and move files to it, the assistant will drop
-their content (when possible, ie when it's reached an archive or backup).
-Move a file out of an archive directory, and the assistant will get its
-content again. Magic.
-
-Found an intractable bug, obvious in retrospect, with the git-annex branch
-read cache, and had to remove that cache. I have not fully determined
-if this will slow down git-annex in some use cases; might need to add more
-higher-level caching. It was a very minimal cache anyway, just of one file.
-
-Removed support for "in=" from preferred content expressions. That was
-problimatic in two ways. First, it referred to a remote by name, but
-preferred content expressions can be evaluated elsewhere, where that remote
-doesn't exist, or a different remote has the same name. This name lookup
-code could error out at runtime. Secondly, "in=" seemed pretty useless, and
-indeed counterintuitive in preferred content expressions. "in=here" did not
-cause content to be gotten, but it did let present content be dropped.
-Other uses of "in=" are better handled by using groups.
-
-In place of "in=here", preferred content expressions can now use "present",
-which is useful if you want to disable automatic getting or dropping of
-content in some part of a repository. Had to document that "not present"
-is not a good thing to use -- it's unstable. Still, I find "present" handy
-enough to put up with that wart.
-
-Realized last night that the code I added to the TransferWatcher
-to check preferred content once a transfer is done is subject to a race;
-it will often run before the location log gets updated. Haven't found a good
-solution yet, but this is something I want working now, so I did put in a
-quick delay hack to avoid the race. Delays to avoid races are never a real
-solution, but sometimes you have to TODO it for later.
-
-----
-
-Been thinking about how to make the assistant notice changes to configuration
-in the git-annex branch that are merged in from elsewhere while it's running.
-I'd like to avoid re-reading unchanged configuration files after each merge
-of the branch.
-
-The most efficient way would be to reorganise the git-annex branch, moving
-config files into a configs directory, and logs into a logs directory. Then it
-could `git ls-tree git-annex configs` and check if the sha of the configs
-directory had changed, with git doing minimal work 
-(benchmarked at 0.011 seconds).
-
-Less efficiently, keep the current git-annex branch layout, and 
-use: `git ls-tree git-annex uuid.log remote.log preferred-content.log group.log trust.log`
-(benchmarked at 0.015 seconds)
-
-Leaning toward the less efficient option, with a rate limiter so it
-doesn't try more often than once every minute. Seems reasonable for it to
-take a minute for config changes take effect on remote repos, even
-if the assistant syncs file changes to them more quickly.
diff --git a/doc/design/assistant/blog/day_111__config_monitor.mdwn b/doc/design/assistant/blog/day_111__config_monitor.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_111__config_monitor.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Added yet another thread, the ConfigMonitor. Since that thread needs to run
-code to reload cached config values from the git-annex branch when files
-there change, writing it also let me review where config files are cached,
-and I found that every single config file in the git-annex branch does
-get cached, with the exception of the uuid.log. So, added a cache for that,
-and now I'm more sanguine about yesterday's removal of the lower-level
-cache, because the only thing not being cached is location log information.
-
-The ConfigMonitor thread seems to work, though I have not tested it
-extensively. The assistant should notice and apply config changes
-made locally, as well as any config changes pushed in from remotes.
-So, for example, if you add a S3 repo in the webapp, and are paired with
-another computer, that one's webapp will shortly include the new repo in
-its list. And all the preferred content, groups, etc settings will
-propigate over and be used as well.
-
-Well ... almost. Seems nothing causes git-annex branch changes to be
-pushed, until there's some file change to sync out.
diff --git a/doc/design/assistant/blog/day_113__notifier_work.mdwn b/doc/design/assistant/blog/day_113__notifier_work.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_113__notifier_work.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Built out the XMPP push notifier; around 200 lines of code.
-Haven't tested it yet, but it just might work. It's in the `xmpp` branch
-for now.
-
-I decided to send the UUID of the repo that was pushed to, otherwise
-peers would have to speculatively pull from every repo. A wrinkle in this
-is that not all git repos have a git-annex UUID. So it might notify that
-a push was sent to an unidentified repo, and then peers need to pull from
-every such repo. In the common case, there will only be one or a few such
-repos, at someplace like at github that doesn't support git-annex. I could
-send the URL, but there's no guarantee different clients have the same
-URLs for a git remote, and also sending the URL leaks rather more data than
-does a random UUID.
-
-Had a bit of a scare where it looked like I couldn't use the haskell
-`network-protocol-xmpp` package together with the `mtl` package that
-git-annex already depends on. With help from #haskell I found the way
-to get them co-existing, by using the PackageImports extension. Whew!
-
-Need to add configuration of the XMPP server to use in the webapp, and
-perhaps also a way to create `.git/annex/creds/notify-xmpp` from the
-command line.
diff --git a/doc/design/assistant/blog/day_114__xmpp.mdwn b/doc/design/assistant/blog/day_114__xmpp.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_114__xmpp.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-Had to toss out my XMPP presence hack. Turns out that, at least in Google
-Talk, presence info is not sent to clients that have marked themselves
-unavailable, and that means the assistant would not see notifications, as it
-was nearly always marked unavailable as part of the hack.
-
-I tried writing a test program that uses XMPP personal eventing, only
-to find that Google Talk rejected my messages. I'm not 100% sure my
-messages were right, but I was directly copying the example in the RFC,
-and prosody accepted them. I could not seem to get a list of extensions out
-of Google Talk either, so I don't know if it doesn't support personal
-eventing, or perhaps only supports certian specific types of events.
-
-So, plan C... using XMPP [presence extended content](http://xmpp.org/rfcs/rfc6121.html#presence-extended).
-The assistant generates a presence message tagged "xa" (Extended Away),
-which hopefully will make it not seem present to clients.
-And to that presence message, I add my own XML element:
-
-	<git-annex xmlns='git-annex' push="uuid,uuid" />
-
-This is all entirely legal, and not at all a hack.
-(Aside from this not really being presence info.) Isn't XML fun?
-
-And plan C works, with Google Talk, and prosody. I've successfully gotten
-push notifications flowing over XMPP!
-
-----
-
-Spent some hours dealing with an unusual probolem: git-annex started
-segfaulting intermittently on startup with the new XMPP code. 
-
-Haskell code is not supposed to segfault..
-
-I think this was probably due to not using a bound thread for XMPP,
-so if haskell's runtime system recheduled its green thread onto a different
-OS thread during startup, when it's setting up TLS, it'd make gnuTLS very
-unhappy.
-
-So, fixed it to use a bound thread. Will wait and see if the crash is gone.
-
-----
-
-Re-enabled DBUS support, using a new version of the library that avoids the
-memory leak. Will need further changes to the library to support
-reconnecting to dbus.
-
-----
-
-Next will be a webapp configuration UI for XMPP. Various parts of the
-webapp will direct the user to set up XMPP, when appropriate, especially
-when the user sets up a cloud remote.
-
-To make XMPP sufficiently easy to configure, I need to check SRV records to
-find the XMPP server, which is an unexpected PITA because `getaddrinfo`
-can't do that. There are several haskell DNS libraries that I could use for
-SRV, or I could use the `host` command: 
-`host -t SRV _xmpp-client._tcp.gmail.com`
diff --git a/doc/design/assistant/blog/day_115__my_new_form.mdwn b/doc/design/assistant/blog/day_115__my_new_form.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_115__my_new_form.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Built a SRV lookup library that can use either `host` or ADNS.
-
-Worked on DBUS reconnection some more; found a FD leak in the dbus library,
-and wrote its long-suffering author, John Millikin (also the XMPP library
-author, so I've been bothering him a lot lately), who once again came
-through with a quick fix.
-
-Built a XMPP configuration form, that tests the connection to the server.
-Getting the wording right on this was hard, and it's probably still not
-100% right.
-
-[[!img /assistant/xmpp.png]]
- 
-Pairing over XMPP is something I'm still thinking about. It's
-contingent on tunneling git over XMPP (actually not too hard),
-and getting a really secure XMPP connection (needs library improvements,
-as the library currently accepts any SSL certificate).
diff --git a/doc/design/assistant/blog/day_116__the_segfault.mdwn b/doc/design/assistant/blog/day_116__the_segfault.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_116__the_segfault.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Continuing to flail away at this XMPP segfault, which turned out not to be
-fixed by bound threads. I managed to make a fairly self-contained and small
-reproducible test case for it that does not depend on the network.
-Seems the bug is gonna be either in the Haskell binding for GNUTLS,
-or possibly in GNUTLS itself.
-
-Update: John was able to fix it using my testcase! It was a GNUTLS
-credentials object that went out of scope and got garbage collected.
-I think I was seeing the crash only with the threaded runtime because
-it has a separate garbage collection thread.
-
-----
-
-Arranged for the XMPP thread to restart when network connections
-change, as well as when the webapp configures it.
-
-Added an alert to nudge users to enable XMPP. It's displayed after adding a
-remote in the cloud.
-
-[[!img /assistant/xmppnudge.png]]
-
-----
-
-So, the first stage of XMPP is done. But so far all it does is push
-notification. Much more work to do here.
diff --git a/doc/design/assistant/blog/day_117__new_topologies.mdwn b/doc/design/assistant/blog/day_117__new_topologies.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_117__new_topologies.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-Back in [[day_85__more_foundation_work]], I wrote:
-
-> I suspect, but have not proven,
-> that the assistant is able to keep repos arranged in any shape of graph in
-> sync, as long as it's connected (of course) and each connection is
-> bi-directional. [And each node is running the assistant.]
-
-After today's work, many more graph topologies can be kept in sync -- the
-assistant now can keep repos in sync that are not directly connected, but
-must go through a central transfer point, which does not run the assistant
-at all. Major milestone!
-
-To get that working, as well as using XMPP push notifications, it turned
-out to need to be more agressive about pushing out changed location log
-information. And, it seems, that was the last piece that was missing.
-Although I narrowly avoided going down a blind alley involving sending
-transfer notifications over XMPP. Luckily, I came to my senses.
-
-----
-
-This month's focus was the cloud, and the month is almost done. And now
-the assistant can, indeed be used to sync over the cloud! I would have
-liked to have gotten on to implementing Amazon Glacier or Google Drive
-support, but at least the cloud fundamentals are there.
-
-Now that I have XMPP support, I'm tending toward going ahead and adding
-XMPP pairing, and git push over XMPP. This will open up lots of excellent
-use cases.
-
-So, how to tunnel git pushes over XMPP? Well, `GIT_SHELL` can be set to
-something that intercepts the output of `git-send-pack` and
-`git-receive-pack`, and that data can be tunneled through XMPP to connect
-them. Probably using XMPP ping.
-(XEP-0047: In-Band Bytestreams would be the right way ...
-but of course Google Talk doesn't support that extension.)
-
-XMPP requires ugly encoding that will bloat the data, but the data
-quantities are fairly small to sync up a few added or moved files
-(of course, we'll not be sending file contents over XMPP). Pairing with
-an large git repository over XMPP will need rather more bandwidth,
-of course.
diff --git a/doc/design/assistant/blog/day_118__monadic_discontinuity.mdwn b/doc/design/assistant/blog/day_118__monadic_discontinuity.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_118__monadic_discontinuity.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Spent most of the past day moving the assistant into a monad of its own
-that encapsulates all the communications channels for its threads. This
-involved modifiying nearly every line of code in the whole assistant.
-
-Typical change:
-
-[[!format haskell """
-handleConnection threadname st dstatus scanremotes pushnotifier = do
-        reconnectRemotes threadname st dstatus scanremotes (Just pushnotifier)
-                =<< networkRemotes st
-
-handleConnection = reconnectRemotes True =<< networkRemotes
-"""]]
-
-So, it's getting more readable..
diff --git a/doc/design/assistant/blog/day_119__time_for_testing.mdwn b/doc/design/assistant/blog/day_119__time_for_testing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_119__time_for_testing.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Finished working the new assistant monad into all the assistant's code.
-I've changed 1870 lines of code in the past two days. It feels like more.
-While the total number of lines of code has gone up by around 100, the
-actual code size has gone *down*; the monad allowed dropping 3.4 kilobytes
-of manual variable threading complications. Or around 1% of a novel edited
-away, in other words.
-
-I don't seem to have broken anything, but I'm started an extensive test
-of all the assistant and webapp. So far, the bugs I've found were not
-introduced by my monadic changes. Fixed several bugs around adding
-removable drives, and a few other minor bugs. Plan to continue testing
-tomorrow.
diff --git a/doc/design/assistant/blog/day_11__freebsd.mdwn b/doc/design/assistant/blog/day_11__freebsd.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_11__freebsd.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-I've been investigating how to make `git annex watch` work on
-FreeBSD, and by extension, OSX.
-
-One option is kqueue, which works on both operating systems, and allows
-very basic monitoring of file changes. There's also an OSX specific
-hfsevents interface.
-
-Kqueue is far from optimal for `git annex watch`, because it provides even
-less information than inotify (which didn't really provide everything I
-needed, thus the lsof hack). Kqueue doesn't have events for files being
-closed, only an event when a file is created. So it will be difficult for
-`git annex watch` to know when a file is done being written to and can be
-annexed. git annex will probably need to run lsof periodically to check when
-recently added files are complete. (hsevents shares this limitation)
-
-Kqueue also doesn't provide specific events when a file or directory is
-moved. Indeed, it doesn't provide specific events about what changed at
-all. All you get with kqueue is a generic "oh hey, the directory you're
-watching changed in some way", and it's up to you to scan it to work out
-how. So git annex will probably need to run `git ls-tree --others`
-to find changes in the directory tree. This could be expensive with large
-trees. (hsevents has per-file events on current versions of OSX)
-
-Despite these warts, I want to try kqueue first, since it's more portable
-than hfsevents, and will surely be easier for me to develop support for,
-since I don't have direct access to OSX.
-
-So I went to a handy Debian kFreeBSD porter box, and tried some kqueue
-stuff to get a feel for it. I got a python program that does basic
-directory monitoring with kqueue to work, so I know it's usable there.
-
-Next step was getting kqueue working from Haskell. Should be easy, there's
-a Haskell library already. I spent a while trying to get it to work on
-Debian kFreeBSD, but ran into a
-[problem](https://github.com/hesselink/kqueue/issues/1) that could be
-caused by the Debian kFreeBSD being different, or just a bug in the Haskell
-library. I didn't want to spend too long shaving this yak; I might install
-"real" FreeBSD on a spare laptop and try to get it working there instead.
-
-But for now, I've dropped down to C instead, and have a simple C program
-that can monitor a directory with kqueue. Next I'll turn it into a simple
-library, which can easily be linked into my Haskell code. The Haskell code
-will pass it a set of open directory descriptors, and it'll return the
-one that it gets an event on. This is necessary because kqueue doesn't
-recurse into subdirectories on its own.
-
-I've generally had good luck with this approach to adding stuff in Haskell;
-rather than writing a bit-banging and structure packing low level interface
-in Haskell, write it in C, with a simpler interface between C and
-Haskell.
diff --git a/doc/design/assistant/blog/day_120__test_day.mdwn b/doc/design/assistant/blog/day_120__test_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_120__test_day.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Did a lot of testing, found and fixed 4 bugs with repository setup
-configurators. None of them were caused by the recent code reworking.
diff --git a/doc/design/assistant/blog/day_121__buddy_list.mdwn b/doc/design/assistant/blog/day_121__buddy_list.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_121__buddy_list.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Got the XMPP client maintaining a list of buddies, including tracking which
-clients are present and away, and which clients are recognised as other
-git-annex assistant clients. This was fun, it is almost all pure
-functional code, which always makes me happy.
-
-Started building UI for XMPP pairing. So far, I have it showing a list of
-buddies who are also running git-annex (or not). The list even refreshes
-in real time as new buddies come online.
-
-[[!img /assistant/buddylist.png]]
diff --git a/doc/design/assistant/blog/day_122__xmpp_pairing.mdwn b/doc/design/assistant/blog/day_122__xmpp_pairing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_122__xmpp_pairing.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Reworked my XMPP code, which was still specific to push notification, into
-a more generic XMPP client, that's based on a very generic NetMessager
-class, that the rest of the assistant can access without knowing anything
-about XMPP.
-
-Got pair requests flowing via XMPP ping, over Google Talk! And when the
-webapp receives a pair request, it'll pop up an alert to respond. The rest
-of XMPP pairing should be easy to fill in from here.
-
-To finish XMPP pairing, I'll need git pull over XMPP, which is nontrivial,
-but I think I know basically how to do. And I'll need some way to represent
-an XMPP buddy as a git remote, which is all that XMPP pairing will really
-set up.
-
-It could be a git remote using an `xmpp:user@host` URI for the git url, but
-that would confuse regular git to no end (it'd think it was a ssh host),
-and probably need lots of special casing in the parts of git-annex that
-handle git urls too. Or it could be a git remote without an url set, and
-use another config field to represent the XMPP data. But then git wouldn't
-think it was a remote at all, which would prevent using "git pull
-xmppremote" at all, which I'd like to be able to use when implementing git
-pull over XMPP.
-
-Aha! The trick seems to be to leave the url unset in git config,
-but temporarily set it when pulling:
-
-	GIT_SSH=git-annex git git -c remote.xmppremote.url=xmpp:client pull xmppremote
-
-Runs git-annex with "xmpp git-upload-pack 'client'".. Just what I need.
diff --git a/doc/design/assistant/blog/day_123__xmpp_insanity.mdwn b/doc/design/assistant/blog/day_123__xmpp_insanity.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_123__xmpp_insanity.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-Spent about 5 hours the other night in XMPP hell. At every turn Google Talk
-exhibited behavior that may meet the letter of the XMPP spec (or not), but
-varies between highly annoying and insane.
-
-By "insane", I mean this: If a presence message is directed from one client
-to another client belonging to that same user, randomly leaking that message
-out to other users who are subscribed is just a security hole waiting to
-happen. 
-
-Anyway, I came out of that with a collection of hacks that worked, but I
-didn't like. I was using directed presence for buddy-to-buddy pairing, and
-an IQ message hack for client-to-client pairing. 
-
-Today I got chat messages working instead, for both sorts of pairing. These
-chat messages have an empty body, which *should* prevent clients from
-displaying them, but they're sent directed to only git-annex clients
-anyway.
-
-----
-
-And XMPP pairing 100% works now! Of course, it doesn't know how to git pull
-over XMPP yet, but everything else works.
-
-Here's a real `.git/config` generated by the assistant after XMPP pairing.
-
-	[remote "joey"]
-	        url = 
-	        fetch = +refs/heads/*:refs/remotes/joey/*
-	        annex-uuid = 14f5e93e-1ed0-11e2-aa1c-f7a45e662d39
-	        annex-xmppaddress = joey@kitenet.net 
-
-----
-
-Fixed a typo that led to an infinite loop when adding a ssh git repo with the
-assistant. Only occurred when an absolute directory was specified, which 
-is why I didn't notice it before.
-
-----
-
-Security fix: Added a `GIT_ANNEX_SHELL_DIRECTORY` environment variable that
-locks down git-annex-shell to operating in only a single directory. The
-assistant sets that in ssh `authorized_keys` lines it creates. This
-prevents someone you pair with from being able to access any other git or
-git-annex repositories you may have.
-
-----
-
-Next up, more craziness. But tomorrow is Nov 6th, so you in the US already
-knew that..
diff --git a/doc/design/assistant/blog/day_124__git_push_over_xmpp_groundwork.mdwn b/doc/design/assistant/blog/day_124__git_push_over_xmpp_groundwork.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_124__git_push_over_xmpp_groundwork.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Laying the groundwork for git push over XMPP. BTW, the motivation for doing
-this now is that if the assistant can push git data peer-to-peer, users
-who are entirely using the cloud don't need to set up a git repo in the
-cloud somewhere. Instead, a single special remote in the cloud will be all
-they need. So this is a keystone in the assistant's cloud support.
-
-I'm building the following pipeline:
-
-	git push <--> git-annex xmppgit <--> xmppPush <-------> xmpp
-	                                                         |
-	git receive-pack <--> xmppReceivePack <---------------> xmpp
-
-A tricky part of this is `git-annex xmppgit`, which is run by `git push`
-rather than the usual `ssh`. Rather than speak XMPP itself, that feeds the
-data through the assistant daemon, using some special FDs that are set
-up by the assistant when it runs `git push`, and communicated via
-environment variables. I hoped to set up a pipe and not need it to do any
-work on its own, but short of using the linux-specific `splice(2)`, that
-doesn't seem possible. It also will receive the exit status of
-`git receive-pack` and propigate it to `git push`.
-
-Also built the IO sides of `xmppPush` and `xmppReceivePack` although these
-are not tested. The XMPP sides of them come next.
-
-----
-
-Stuffing lots of git-annex branded USB keys into envelopes tonight, while
-watching the election coverage.
diff --git a/doc/design/assistant/blog/day_125__xmpp_push_continues.mdwn b/doc/design/assistant/blog/day_125__xmpp_push_continues.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_125__xmpp_push_continues.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I've finished building the XMMP side of git push over XMPP. Now I only
-have to add code to trigger these pushes. And of course, fix all the bugs,
-since none of this has been tested at all.
-
-Had to deal with some complications, like handling multiple clients that
-all want to push at the same time. Only one push is handled at a time;
-messages for others are queued. Another complication I don't deal with yet
-is what to do if a client stops responding in the middle of a push. It
-currently will wait forever for a message from the client; instead it
-should time out.
-
-----
-
-Jimmy got the OSX builder working again, despite my best attempts to add
-dependencies and break it.
diff --git a/doc/design/assistant/blog/day_126__mr_watson_come_here.mdwn b/doc/design/assistant/blog/day_126__mr_watson_come_here.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_126__mr_watson_come_here.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-I'm stunned and stoked to have gotten git push over XMPP working today.
-And am nearly out of steam, it was a wild ride..
-
-	To xmpp::joey@kitenet.net
-	  * [new branch]      master -> refs/xmpp/newmaster
-
-The surprising part is how close my initial implementation came to just
-working on the first try. It had around 3 bugs, which took hours of staring
-at debugging output to find:
-
-1. The git push action was run in the same thread as the XMPP
-   client, which prevented the client from continuing to run and relaying
-   messages.
-2. The git-receive-pack side waited on the wrong thread, so didn't
-   notice when the program was done.
-3. I accidentially used the wrong attribute name when sending a ReceivePackDone
-   message.
-
-But all in all, it just worked.
-
-Here's a sample of the actual data sent when one file is added to the
-repository (also includes the corresponding update to the git-annex branch):
-
-	MDA4NjhhMmNmOGZjMWE3MTlkOGVjOWVmOWZiMGZiNjVlODc2NjQ1NDAyMTAgODIwNTZjMDM4
-	ZjU2YzE1ODdjYzllOWRhNzQzMzU0YjE4NzNjZWJlOSByZWZzL3htcHAvbmV3bWFzdGVyACBy
-	ZXBvcnQtc3RhdHVzIHNpZGUtYmFuZC02NGswMDAw
-
-	UEFDSwAAAAIAAAADnAx4nJXLTQ4CIQxA4T2n4AKaAqVAYoxL4y2gU+Jo5iczdeHtnSu4eMm3
-	ebqJ2NwgSCLmNkTBlKFCYwwhoHOtQ+scqZCwWesms9pcPffc2dXkypCFi/TSG/RGUXIiwojg
-	HZj60eey2cciX3uXfbeX18Hbe1SZRc9HV+tC9FgyJW9PgACGl2kaVeXfz/wArHQ81qMGeJwz
-	NDIAAoVUI4ZZB9RW1E8NtXp5t77/fn3hw41cl2MNIbIZqTk5+Qwerw+aJX2INjsffYndtdCz
-	5mZWLDdUQV5qeVpmDtCQnx/3/6s40+Q4P/7O+Y4ShS+1Ad83AwC6CirftAt4nK3MsRGDMAwF
-	0IkcSVgSdpkidzRUmcDWBy4pSAEFl+mzRN4A77a9Tmr7vlz06e8lzoPmmb5Mz+k+mD/SkTkl
-	eFHPq9eqQ+nSzFsWaDFnFmCMCEOvHgLrCrQxS7AWdvUVhv9uPwHxMbfumlvWdco1RLL4wSQF
-	g0uFFOKu3Q==
-
-Git said this push took 385 bytes; after base64 encoding to transport it over
-XMPP as shown above, it needs 701 bytes, and the XMPP envelope and encryption
-adds more overhead (although the XMPP connection may also be compressed?)
-
-Not the most efficient git transport, but still a practical one!
-
-----
-
-Big thanks by the way to meep, who posted a comment reminding me about
-`git-remote-helpers`. This was the right thing to use for XMPP over git,
-it lets the git remote be configured with `url = xmpp::user@host`.
-
-----
-
-Next, I need to get the assistant to use this for syncing. Currently, it only
-pushes a test branch.
diff --git a/doc/design/assistant/blog/day_127__xmpp_syncs.mdwn b/doc/design/assistant/blog/day_127__xmpp_syncs.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_127__xmpp_syncs.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-I got full-on git-annex assistant syncing going over XMPP today!
-
-How well does it work? Well, I'm at the cabin behind a dialup modem. I have
-two repos that can only communicate over XMPP. One uses my own XMPP server,
-and the other uses a Google Talk account. I make a file in one repo, and
-switch windows to the other, and type `ls`, and the file (not its content
-tho..) has often already shown up. So, it's about as fast as syncing over
-ssh, although YMMV.
-
-----
-
-Refactored the git push over XMPP code rather severely. It's quite a
-lot cleaner now.
-
-----
-
-Set XMPP presence priority to a negative value, which will hopefully
-prevent git-annex clients that share a XMPP account with other clients from
-intercepting chat messages. Had to change my XMPP protocol some to deal
-with this.
-
-----
-
-Some webapp UI work. When showing the buddy list, indicate which buddies
-are already paired with. 
-
-After XMPP pairing, it now encourages setting up a shared cloud repository.
-
-[[!img /assistant/xmpppairingend.png]]
-
-I still need to do more with the UI after XMPP pairing, to help the paired
-users configure a shared cloud transfer remote. Perhaps the thing to do is
-for the ConfigMonitor to notice when a git push adds a new remote,
-and pop up an alert suggesting the user enable it. Then one user
-can create the repository, and the other one enable it.
diff --git a/doc/design/assistant/blog/day_128__last_xmpp_day.mdwn b/doc/design/assistant/blog/day_128__last_xmpp_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_128__last_xmpp_day.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-I hope I'm nearly at the end of this XMPP stuff after today. Planning a new
-release tomorrow.
-
-----
-
-Split up the local pairing and XMPP pairing UIs, and wrote a
-[[/assistant/share_with_a_friend_walkthrough]].
-
-----
-
-Got the XMPP push code to time out if expected data doesn't arrive within
-2 minutes, rather than potentially blocking other XMPP push forever if 
-the other end went away. 
-
-I pulled in the Haskell
-[async](http://hackage.haskell.org/package/async) library for this,
-which is yes, yet another library, but one that's now in the haskell platform.
-It's worth it, because of how nicely it let me implement IO actions that
-time out.
-
-[[!format haskell """
-runTimeout :: Seconds -> IO a -> IO (Either SomeException a)
-runTimeout secs a = do
-        runner <- async a
-        controller <- async $ do
-                threadDelaySeconds secs
-                cancel runner
-        cancel controller `after` waitCatch runner
-"""]]
-
-This would have been 20-50 lines of gnarly code without async, and I'm sure
-I'll find more uses for async in the future.
-
-----
-
-Discovered that the XMPP push code could deadlock, if both clients started
-a push to the other at the same time. I decided to fix this by allowing
-each client to run both one push and one receive-pack over XMPP at the same
-time.
-
-----
-
-Prevented the transfer scanner from trying to queue transfers to XMPP remotes.
-
-----
-
-Made XMPP pair requests that come from the same account we've already
-paired with be automatically accepted. So once you pair with one device,
-you can easily add more.
diff --git a/doc/design/assistant/blog/day_129__release.mdwn b/doc/design/assistant/blog/day_129__release.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_129__release.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Cut a new release today. It's been nearly a month since the last one, and a
-large number of improvements.. Be sure to read the
-[[/assistant/release_notes]] if upgrading. All the standalone builds are
-updated already.
diff --git a/doc/design/assistant/blog/day_12__freebsd_redux.mdwn b/doc/design/assistant/blog/day_12__freebsd_redux.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_12__freebsd_redux.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Followed my plan from yesterday, and wrote a simple C library to interface
-to `kqueue`, and Haskell code to use that library. By now I think I
-understand kqueue fairly well -- there are some very tricky parts to the
-interface.
-
-But... it still didn't work. After building all this, my code was
-failing the same way that the
-[haskell kqueue library failed](https://github.com/hesselink/kqueue/issues/1)
-yesterday. I filed a [bug report with a testcase]().
-
-Then I thought to ask on #haskell. Got sorted out in quick order! The
-problem turns out to be that haskell's runtime has a periodic SIGALARM,
-that is interrupting my kevent call. It can be worked around with `+RTS -V0`,
-but I put in a fix to retry to kevent when it's interrupted.
-
-And now `git-annex watch` can detect changes to directories on BSD and OSX!
-
-Note: I said "detect", not "do something useful in response to". Getting
-from the limited kqueue events to actually staging changes in the git repo
-is going to be another day's work. Still, brave FreeBSD or OSX users
-might want to check out the `watch` branch from git and see if 
-`git annex watch` will at least *say* it sees changes you make to your
-repository.
diff --git a/doc/design/assistant/blog/day_130__what_now.mdwn b/doc/design/assistant/blog/day_130__what_now.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_130__what_now.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Dealt with post-release feedback deluge. There are a couple weird bugs that
-I don't understand yet. OSX app is still not working everywhere.
-
-----
-
-Got the list of repositories in the webapp to update automatically when
-repositories are added, including when syncing with a remote causes
-repositories to be discovered.
-
-----
-
-I need a plan for the rest of the month. It feels right to focus on more
-cloud storage support. Particularly because all the cloud providers
-supported so far are ones that, while often being best of breed, also cost
-money. To finish up the cloud story, need support for some free ones.
-
-Looking at the results of the [[polls/prioritizing_special_remotes]]
-poll, I suspect that free storage is a large part of why Google Drive got
-so many votes. Soo, since there is not yet a Haskell library for Google
-Drive, rather than spending a large chunk of time writing one, I hope to
-use a [Haskell WebDAV library](http://hackage.haskell.org/package/DAV)
-that my friend Clint recently wrote. A generic
-WebDAV special remote in git-annex will provide much better support for
-box.com (which has 5 to 50 gb free storage), as well as all the 
-[OwnCloud providers](http://owncloud.org/providers/), at least one of which
-provides 5 gb free storage.
-
-If I have time left this month after doing that, I'd be inclined to do
-Amazon Glacier. People have already gotten that working with git-annex, but
-a proper special remote should be better/easier, and will allow integrating
-support for it into the assistant, which should help deal with its long
-retrieval delays. And since, if you have a lot of data
-archived in Glacier, you will only want to pull out a few files at a time,
-this is another place besides mobile phones where a [[partial_content]]
-retrieval UI is needed. Which is on the roadmap to be worked on next
-month-ish. Synergy, here I come. I hope.
diff --git a/doc/design/assistant/blog/day_131__webdav_groundwork.mdwn b/doc/design/assistant/blog/day_131__webdav_groundwork.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_131__webdav_groundwork.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Read up on WebDAV, and got the haskell library working. Several hours
-were wasted by stumbling over a bug in the library, that requires a
-carefully crafted XML document to prevent. Such a pity about things
-like DAV (and XMPP) being designed back when people were gung-ho about
-XML.. but we're stuck with them now.
-
-Now I'm able to send and receive files to box.com using the library. Trying to
-use an OwnCloud server, though, I get a most strange error message, which
-looks to be coming from deep in the HTTPS library stack: "invalid IV length"
-
-The haskell DAV library didn't have a way to delete files. I've added one
-and sent off a patch.
-
-Roughed in a skeleton of a webdav special remote. Doesn't do anything yet.
-Will soon.
-
-Factored out a Creds module from parts of the S3 special remote and XMPP
-support, that all has to do with credentials storage. Using this for webdav
-creds storage too.
-
-Will also need to factor out the code that's currently in the directory
-special remote, for chunking of files.
-
-----
-
-PS: WebDAV, for all its monstrously complicated feature set, lacks one obvious
-feature: The ability to check how much free space is available to store
-files. Eyeroll.
diff --git a/doc/design/assistant/blog/day_132__webdav_continued.mdwn b/doc/design/assistant/blog/day_132__webdav_continued.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_132__webdav_continued.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Two releases of the Haskell DAV library today. First release had my changes
-from yesterday. Then I realized I'd also need support for making WebDAV
-"collections" (subdirectories), and sent Clint a patch for that too, as
-well as a patch for querying DAV properties, and that was 0.2.
-Got it into Debian unstable as well. Should have everything I'll need now.
-
-The webdav special remote is now working! Still todo:
-Encryption support, progress bars, large file chunking, and webapp
-configurators. But already, it's a lot nicer than the old approach of using
-davfs2, which was really flakey and slow with large data volumes.
-
-I did notice, though, that uploading a 100 mb file made the process use 100
-mb of memory. This is a problem I've struggled with earlier with S3, the
-Haskell http libraries are prevented from streaming data by several parts
-of the protocol that cause the data to be accessed more than once. I guess
-this won't be a problem for DAV though, since it'll probably be chunking
-files anyway.
-
----
-
-Mailed out all my Kickstarter USB key rewards, and ordered
-the T-shirts too.
diff --git a/doc/design/assistant/blog/day_133__webdav_working.mdwn b/doc/design/assistant/blog/day_133__webdav_working.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_133__webdav_working.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Worked on webdav special remotes all day. 
-
-* Got encryption working,
-  after fixing an amusing typo that made `initremote` for webdav throw away the
-  encryption configuration and store files unencrypted.
-* Factored out parts of the directory special remote that had to do with file
-  chunking, and am using that for webdav. This refactoring was painful.
-
-At this point, I feel the webdav special remote works better than the old
-davfs2 + directory special remote hack. While webdav doesn't yet have
-progress info for uploads, that info was pretty busted anyway with
-davfs2 due to how it buffers files. So ... I've merged webdav into master!
-
------
-
-Tomorrow, webapp configurators for Box.com and any other webdav supporting
-sites I can turn up and get to work..
-
------
-
-A while ago I made git-annex not store login credentials in git for special
-remotes, when it's only encrypting them with a shared cipher. The
-rationalle was that you don't want to give everyone who gets ahold of your
-git repo (which includes the encryption key) access to your passwords,
-Amazon S3 account, or whatever. I'm now considering adding a checkbox (or
-command-line flag) that allows storing the login credentials in git,
-if the user wants to. While using public key crypto is the real solution
-(and is fully supported by git-annex (but not yet configurable in the
-webapp)), this seems like a reasonable thing to do in some circumstances,
-like when you have a Box.com account you really do want to share with
-the people who use the git repo.
diff --git a/doc/design/assistant/blog/day_134__box.com_configurator.mdwn b/doc/design/assistant/blog/day_134__box.com_configurator.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_134__box.com_configurator.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I needed an easy day, and I got one. Configurator in the webapp for Box.com
-came together really quickly and easily, and worked on the first try.
-
-Also filed a [bug](https://github.com/vincenthz/hs-cryptocipher/issues/21)
-on the Haskell library that is failing on portknox.com's SSL certificate.
-That site is the only OwnCloud provider currently offering free WebDAV
-storage. Will hold off on adding OwnCloud to the webapp's cloud provider lists
-until that's fixed.
diff --git a/doc/design/assistant/blog/day_135__progress_revisited.mdwn b/doc/design/assistant/blog/day_135__progress_revisited.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_135__progress_revisited.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Unexpectedly today, I got progress displays working for uploads via WebDAV.
-
-The roadblock had been that the interface of for uploading to S3 and WebDAV
-is something like `ByteString -> IO a`. Which doesn't provide any hook to
-update a progress display as the ByteString is consumed.
-
-My solution to this was to create a `hGetContentsObserved`, that's similar
-to `hGetContents`, but after reading each 64kb chunk of data from the
-Handle to populate the ByteString, it runs some observing action. So when
-the ByteString is streamed, as each chunk is consumed, the observer
-runs. I was able to get this to run in constant space, despite not having
-access to some of the ByteString internals that `hGetContents` is built
-with.
-
-So, a little scary, but nice. I am curious if there's not a better way
-to solve this problem hidden in a library somewhere. Perhaps it's another
-thing that conduit solves somehow? Because if there's not, my solution
-probably deserves to be put into a library. Any Haskell folk know?
-
-----
-
-Used above to do progress displays for uploads to S3. Also did progress
-display to console on download from S3. Now very close to being done
-with [[progressbars]]. Finally. Only bup and hook remotes need progress
-work.
-
-----
-
-Reworked the core crypto interface, to better support streaming data through
-gpg. This allowed fixing both the directory and webdav special remotes to
-not buffer whole files in memory when retrieving them as chunks from the
-remote.
-
------
-
-Spent some time dealing with API changes in Yesod and Conduit. Some of them
-annoyingly gratuitous.
diff --git a/doc/design/assistant/blog/day_136__misc.mdwn b/doc/design/assistant/blog/day_136__misc.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_136__misc.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Changed how the directory and webdav special remotes store content.
-The new method uses less system calls, is more robust, and leaves any
-partially transferred key content in a single tmp directory, which
-will make it easier to clean that out later.
-
-Also found & fixed a cute bug in the directory special remote when the
-chunksize is set to a smaller value than the ByteString chunk size, that
-caused it to loop forever creating empty files.
-
-----
-
-Added an embedcreds=yes option when setting up special remotes. 
-Will put UI for it into the webapp later, but rather than work on that
-tomorrow, I plan to work on glacier.
diff --git a/doc/design/assistant/blog/day_137__Glacier.mdwn b/doc/design/assistant/blog/day_137__Glacier.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_137__Glacier.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Got Amazon Glacier working as a full-fledged special remote.
-
-(Well, I think it works... Since it takes 4 hours to get data out,
-which is longer than the time it took me to sign up for Glacier and
-write the special remote ... I've yet to fully test it!)
-
-Thanks to Robie Basak for writing glacier-cli, and developing the intial
-hook remote support. Also thanks to Peter Todd for pointing out that
-Glacier cannot store empty files, which had to be worked around in the
-special remote.
-
-Of course the 4 hour delay on retreval makes Glacier interesting. For now,
-you have to run "git annex get" twice, once to queue the retrieval, and a
-second time in 4 hours to get the file(s). There is a helpful example in
-[[tips/using_Amazon_Glacier]].
-
-The real complication though, is that Glacier's inventories take a long
-time to get, and can be out of date. So glacier-cli caches inventory info.
-I didn't feel comfortable making git-annex trust that information,
-so it'll refuse to trust that Glacier has a copy of a file when dropping
-it. There's a `--trust-glacier` switch to override this default paranoid
-behavior when dropping files.
-
-----
-
-Tomorrow ... er, tomorrow is Thanksgiving trip start.
-
-Next weekend: Webapp configurator for glacier, and maybe something
-to get the assistant to detect when jobs are complete and finish
-retrievals from Glacier, automatically.
diff --git a/doc/design/assistant/blog/day_138__back.mdwn b/doc/design/assistant/blog/day_138__back.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_138__back.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Added a configurator for Glacier repositories to the webapp. That was the last
-cloud repository configurator that was listed in the webapp and wasn't
-done. Indeed, just two more repository configurators remain to be filled in:
-phone and NAS.
-
-By default, Glacier repositories are put in a new "small archive" group.
-This makes only files placed in "archive" directories be sent to Glacier
-(as well as being dropped from clients), unlike the full archive group
-which archives all files. Of course you can change this setting, but
-avoiding syncing all data to Glacier seemed like a good default, especially
-since some are still worried about Glacier's pricing model.
-
-Fixed several bugs in the handling of archive directories, and 
-the webapp makes a toplevel archive directory when an archive remote is
-created, so the user can get on with using it.
-
-Made the assistant able to drop local files immediately after transferring
-them to glacier, despite not being able to trust glacier's inventory.
-This was accomplished by making the transferrer, after a successful upload,
-indicate that it trusts the remote it just uploaded to has the file,
-when it checks if the file should be dropped.
-
-Only thing left to do for glacier is to make the assistant retry failed
-downloads from it after 4 hours, or better, as soon as they become
-available.
diff --git a/doc/design/assistant/blog/day_139__catch_up.mdwn b/doc/design/assistant/blog/day_139__catch_up.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_139__catch_up.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Got progress bars working for glacier. This needed some glacier-cli
-changes, which Robie helpfully made earlier.
-
-Spent some hours getting caught up and responding to bug reports, etc.
-
-Spent a while trying to make git-annex commands that fail to find
-any matching files to act on print a useful warning message,
-rather than the current nothing. Concluded this will be surprisingly
-hard to do, due to the multiple seek passes some commands perform. Update:
-Thought of a non-invasive and not too ugly way to do this while on my
-evening walk, and this wart is gone.
diff --git a/doc/design/assistant/blog/day_13__kqueue_continued.mdwn b/doc/design/assistant/blog/day_13__kqueue_continued.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_13__kqueue_continued.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Good news! My beta testers report that the new kqueue code works on OSX.
-At least "works" as well as it does on Debian kFreeBSD. My crazy
-development strategy of developing on Debian kFreeBSD while targeting Mac
-OSX is vindicated. ;-)
-
-So, I've been beating the kqueue code into shape for the last 12 hours,
-minus a few hours sleep.
-
-First, I noticed it was seeming to starve the other threads. I'm using
-Haskell's non-threaded runtime, which does cooperative multitasking between
-threads, and my C code was never returning to let the other threads run.
-Changed that around, so the C code runs until SIGALARMed, and then that
-thread calls `yield` before looping back into the C code. Wow, cooperative
-multitasking.. I last dealt with that when programming for Windows 3.1!
-(Should try to use Haskell's -threaded runtime sometime, but git-annex
-doesn't work under it, and I have not tried to figure out why not.)
-
-Then I made a [single commit](http://source.git-annex.branchable.com/?p=source.git;a=commitdiff;h=2bfcc0b09c5dd37c5e0ab65cb089232bfcc31934),
-with no testing, in which I made the kqueue code maintain a cache of what
-it expects in the directory tree, and use that to determine what files
-changed how when a change is detected. Serious code. It worked on the
-first go. If you were wondering why I'm writing in Haskell ... yeah,
-that's why.
-
-And I've continued to hammer on the kqueue code, making lots of little
-fixes, and at this point it seems *almost* able to handle the changes I
-throw at it. It does have one big remaining problem; kqueue doesn't tell me
-when a writer closes a file, so it will sometimes miss adding files. To fix
-this, I'm going to need to make it maintain a queue of new files, and
-periodically check them, with `lsof`, to see when they're done being
-written to, and add them to the annex. So while a file is being written
-to, `git annex watch` will have to wake up every second or so, and run
-`lsof` ... and it'll take it at least 1 second to notice a file's complete.
-Not ideal, but the best that can be managed with kqueue.
diff --git a/doc/design/assistant/blog/day_140__release_monday.mdwn b/doc/design/assistant/blog/day_140__release_monday.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_140__release_monday.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-New release today, the main improvements in this one being WebDAV,
-Box.com, and Amazon glacier support. [[/assistant/release_notes]]
-
-Collected together all the OSX problem reports into one place
-at [[/assistant/OSX]], to make it easier to get an overview of them.
-
-Did some testing of the OSX standalone app and found that it was missing
-some libraries. It seems some new libraries it's using themselves depend on
-other libraries, and `otool -L` doesn't recursively resolve this. 
-
-So I converted the simplistic shell script it was using to install
-libraries into a haskell progream that recursively adds libraries until
-there are no more to add. It's pulling in quite a lot more libraries now.
-This may fix some of the problems that have been reported with the
-standalone app; I don't really know since I can only do very limited
-testing on OSX.
-
-Still working on getting the standalone builds for this release done,
-should be done by the end of today.
-
-Also found a real stinker of a bug in `dirContentsRecursive`, which was
-just completely broken, apparently since day 1. Fixing that has certainly
-fixed buggy behavior of `git annex import`. It seems that the other
-user of it, the transfer log code, luckily avoided the deep directory
-trees that triggered the bug.
diff --git a/doc/design/assistant/blog/day_141__release_tuesday.mdwn b/doc/design/assistant/blog/day_141__release_tuesday.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_141__release_tuesday.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-I had planned to do nothing today; I can't remember the last time I did
-that. Twas not to be; instead I had to make a new release to fix
-a utterly stupid typo in the rsync special remote. I'm also seeing
-some slightly encouraging signs of the OSX app being closer to working
-and this release has a further fix toward that end; unsetting all the
-environment variables before running the system's web browser.
diff --git a/doc/design/assistant/blog/day_142__filling_in.mdwn b/doc/design/assistant/blog/day_142__filling_in.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_142__filling_in.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Just filling in a few remaining bits and pieces from this month's work.
-
-* Made the assistant periodically check glacier-cli for archives that are
-  ready, and queue downloads of them.
-* The box.com configurator defaults to embedding the account info, allowing
-  one-click enabling of the repository. There's a check box to control this.
-* Fix some bugs with how the standalone images run git-annex.
-* Included ssh in the standalone images.
-* Various other bug fies.
diff --git a/doc/design/assistant/blog/day_143__what_next.mdwn b/doc/design/assistant/blog/day_143__what_next.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_143__what_next.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Yesterday, I woke up and realized I didn't know what I needed to work on in
-git-annex. Added a poll, [[polls/Android]] to help me decide what major
-thing to work on next.
-
-----
-
-More flailing at the OSX monster. (A species of gelatinous cube?)
-Current fun seems to involve git processes spinning if git-annex
-was started without a controlling TTY. I'm befuddled by this.
-
-----
-
-Made the S3 and Glacier configurators have a list of regions, rather than
-requiring a the region's code be entered correctly. I could not find a list of
-regions, or better, an API to get a list, so I'll have to keep updating as
-Amazon adds services in new regions.
-
-----
-
-Spent some time trying to get WebDAV to work with livedrive.com.
-It doesn't like empty PROPPATCH. I've developed a change to the haskell DAV
-library that will let me avoid this problem.
diff --git a/doc/design/assistant/blog/day_144__webapp_work.mdwn b/doc/design/assistant/blog/day_144__webapp_work.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_144__webapp_work.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Made the webapp show runtime errors on a prettified page that includes version
-info, a bug reporting link, etc.
-
-Dealt with a bad interaction between required fields and the bootstrap modals
-displayed when submitting some configuration forms. This was long, complex,
-and had lots of blind alleys. In the end, I had to derive new password and
-text fields in yesod that don't set the required attribute in the generated
-html.
diff --git a/doc/design/assistant/blog/day_145__more_webapp_work.mdwn b/doc/design/assistant/blog/day_145__more_webapp_work.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_145__more_webapp_work.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-One problem with the current configurators for remotes is they have a lot
-of notes and text to read at the top. I've worked on cut that down somewhat,
-mostly by adding links and help buttons next to fields in the form.
-
-I also made each form have a check box controlling whether encryption is
-enabled. Mostly as a way to declutter the text at the top, which always had
-to say encryption is enabled.
-
----
-
-I have a fairly well worked out design for [[desymlink]]. Will wait a few
-days to work on it to let it jell.
diff --git a/doc/design/assistant/blog/day_146__meanwhile.mdwn b/doc/design/assistant/blog/day_146__meanwhile.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_146__meanwhile.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Biding my time while [[desymlink]] gells in my head..
-
-Fixed a bug in the assistant's local pairing that rejected ssh keys with a
-period in the comment.
-
-Fixed a bug in the assistant that made it try to drop content from remotes
-that didn't have it, and avoided a drop failure crashing a whole assistant
-thread.
-
-Made --auto behave better when preferred content is set.
-
-Looked into making the transfer queue allow running multiple transfers at
-the same time, ie, one per remote. This seems to essentially mean splitting
-the queue into per remote queues. There are some complexities, and I
-decided not to dive into working through it right now, since it'd be
-a distraction from thinking about [[desymlink]]. Will revisit it later.
-
-Allow specifying a port when setting up a ssh remote.
-
-While doing that, noticed that the assistant fails to transfer files to
-sync to a ssh remote that was just added. That got broken while optimising
-reconnecting with a remote; fixed it.
diff --git a/doc/design/assistant/blog/day_147__direct_mode.mdwn b/doc/design/assistant/blog/day_147__direct_mode.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_147__direct_mode.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Started laying the groundwork for [[desymlink]]'s direct mode.
-I got rather far!
-
-A git repo can be configured with `annex.direct` and all actions that
-transfer objects to it will replace the symlinks with regular files.
-Removing objects also works (and puts back a broken symlink),
-as does checking if an object is present, which even detects if a file
-has been modified.
-
-So far, this works best when such a direct mode repository is used as a git
-remote of another repository. It is also possible to run a few git-annex
-commands, like "get" in a direct mode repository, though others, like
-"drop" won't work because they rely on the symlink to map back to the key.
-
-Direct mode relies on map files existing for each key in the repository, that tell
-what file(s) use it. It also relies on cache files, that contain the last
-known mtime, size, and inode of the file. So far, I've been setting these
-files up by hand.
-
-The main thing that's missing is support for transferring objects from
-direct mode repositories. There's no single place I can modify to support
-that (like I could for the stuff mentioned above), and also it's difficult
-to do safely, since files could be modified at any time. 
-
-So it'll need to quarantine files, to prevent a modified version from
-getting sent out. I could either do this by copying the file, or by
-temporarily `git annex lock`ing it. Unsure which choice would be less
-annoying..
-
-----
-
-Also did some investigation with Jimmy of the OSX app git-config hang.
-Seems to be some kind of imcompatability between the 10.7 autobuilder and
-10.8. Next step is probably to try to build on 10.8. Might also
-be worth trying <http://macdylibbundler.sourceforge.net/>, although my
-own scripts do more or less the same thing to build the app.
diff --git a/doc/design/assistant/blog/day_148__direct_mode.mdwn b/doc/design/assistant/blog/day_148__direct_mode.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_148__direct_mode.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-Got object sending working in direct mode. However, I don't yet have a
-reliable way to deal with files being modified while they're being
-transferred. I have code that detects it on the sending side, but the
-receiver is still free to move the wrong content into its annex, and record
-that it has the content. So that's not acceptable, and I'll need to work
-on it some more. However, at this point I can use a direct mode repository
-as a remote and transfer files from and to it.
-
-----
-
-Automated updating of the cached mtime, etc data. Next I need to automate
-generation of the key to filename mapping files. I'm thinking that I'll make
-`git annex sync` do it. Then, once I get committing and 
-merging working in direct mode repositories (which is likely to be a
-good week's worth of work), the workflow for using these repositories
-will be something like this:
-
-	git config annex.direct true
-	git annex sync # pulls any changes, merges, updates maps and caches
-	git annex get
-	# modify files
-	git annex sync # commits and pushes changes
-
-And once I get direct mode repositories working to this degree at the
-command line, I can get on with adding support to the assistant.
-
-----
-
-Also did some more work today on the OSX app. Am in the middle of getting
-it to modify the binaries in the app to change the paths to the libraries they
-depend on. This will avoid the hacky environment variable it is currently
-using, and make runshell a much more usable environment. It's the right way
-to do it. (I can't believe I just said RPATH was the right way to do
-anything.)
-
-In the middle of this, I discovered
-<http://hackage.haskell.org/package/cabal-macosx>, which does the same
-type of thing.
-
-Anyway, I have to do some crazy hacks to work around short library name
-fields in executables that I don't want to have to be specially rebuilt in
-order to build the webapp. Like git.
diff --git a/doc/design/assistant/blog/day_149__rainy_day.mdwn b/doc/design/assistant/blog/day_149__rainy_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_149__rainy_day.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Made `git annex sync` update the file mappings in direct mode.
-To do this efficiently, it uses `git diff-tree` to find files that are
-changed by the sync, and only updates those mappings. I'm rather happy
-with this, as a first step to fully supporting sync in direct mode.
-
-Finished the overhaul of the OSX app's library handling. It seems to work
-well, and will fix a whole class of ways the OSX app could break.
-
-Fixed a bug in the preferred content settings for backup repositories,
-introduced by some changes I made to preferred content handling 4 days ago.
-
-Fixed the Debian package to build with WebDAV support, which I forgot to
-turn on before.
-
-Planning a release tomorrow.
diff --git a/doc/design/assistant/blog/day_14__kqueue_kqueue_kqueue.mdwn b/doc/design/assistant/blog/day_14__kqueue_kqueue_kqueue.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_14__kqueue_kqueue_kqueue.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-... I'm getting tired of kqueue.
-
-But the end of the tunnel is in sight. Today I made git-annex handle files
-that are still open for write after a kqueue creation event is received.
-Unlike with inotify, which has a new event each time a file is closed,
-kqueue only gets one event when a file is first created, and so git-annex
-needs to retry adding files until there are no writers left.
-
-Eventually I found an elegant way to do that. The committer thread already
-wakes up every second as long as there's a pending change to commit. So for
-adds that need to be retried, it can just push them back onto the change
-queue, and the committer thread will wait one second and retry the add. One
-second might be too frequent to check, but it will do for now.
-
-This means that `git annex watch` should now be usable on OSX, FreeBSD, and
-NetBSD! (It'll also work on Debian kFreeBSD once [lsof is ported to it](http://bugs.debian.org/589103).)
-I've meged kqueue support to `master`.
-
-I also think I've squashed the empty commits that were sometimes made.
-
-Incidentally, I'm 50% through my first month, and finishing [[inotify]]
-was the first half of my roadmap for this month. Seem to be right on
-schedule.. Now I need to start thinking about [[syncing]].
diff --git a/doc/design/assistant/blog/day_14__thinking_about_syncing.mdwn b/doc/design/assistant/blog/day_14__thinking_about_syncing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_14__thinking_about_syncing.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-Pondering [[syncing]] today. I will be doing syncing of the git repository
-first, and working on syncing of file data later.
-
-The former seems straightforward enough, since we just want to push all
-changes to everywhere. Indeed, git-annex already has a [[sync]] command
-that uses a smart technique to allow syncing between clones without a
-central bare repository. (Props to Joachim Breitner for that.)
-
-But it's not all easy. Syncing should happen as fast as possible, so
-changes show up without delay. Eventually it'll need to support syncing
-between nodes that cannot directly contact one-another. Syncing needs to
-deal with nodes coming and going; one example of that is a USB drive being
-plugged in, which should immediately be synced, but network can also come
-and go, so it should periodically retry nodes it failed to sync with. To
-start with, I'll be focusing on fast syncing between directly connected
-nodes, but I have to keep this wider problem space in mind.
-
-One problem with `git annex sync` is that it has to be run in both clones
-in order for changes to fully propagate. This is because git doesn't allow
-pushing changes into a non-bare repository; so instead it drops off a new
-branch in `.git/refs/remotes/$foo/synced/master`. Then when it's run locally
-it merges that new branch into `master`. 
-
-So, how to trigger a clone to run `git annex sync` when syncing to it?
-Well, I just realized I have spent two weeks developing something that can
-be repurposed to do that! [[Inotify]] can watch for changes to
-`.git/refs/remotes`, and the instant a change is made, the local sync
-process can be started. This avoids needing to make another ssh connection
-to trigger the sync, so is faster and allows the data to be transferred
-over another protocol than ssh, which may come in handy later.
-
-So, in summary, here's what will happen when a new file is created:
-
-1. inotify event causes the file to be added to the annex, and
-   immediately committed.
-2. new branch is pushed to remotes (probably in parallel)
-3. remotes notice new sync branch and merge it
-4. (data sync, TBD later)
-5. file is fully synced and available
-
-Steps 1, 2, and 3 should all be able to be accomplished in under a second.
-The speed of `git push` making a ssh connection will be the main limit
-to making it fast. (Perhaps I should also reuse git-annex's existing ssh
-connection caching code?)
diff --git a/doc/design/assistant/blog/day_150__12__58__12.mdwn b/doc/design/assistant/blog/day_150__12__58__12.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_150__12__58__12.mdwn
+++ /dev/null
@@ -1,53 +0,0 @@
-Yesterday I cut another release. However, getting an OSX build took until
-12:12 pm today because of a confusion about the location of lsof on OSX. The
-OSX build is now available, and I'm looking forward to hearing if it's working!
-
-----
-
-Today I've been working on making `git annex sync` commit in direct mode.
-
-For this I needed to find all new, modified, and deleted files, and I also
-need the git SHA from the index for all non-new files. There's not really
-an ideal git command to use to query this. For now I'm using
-`git ls-files --others --stage`, which works but lists more files than I
-really need to look at. It might be worth using one of the Haskell libraries
-that can directly read git's index.. but for now I'll stick with `ls-files`.
-
-It has to check all direct mode files whose content is present, which means
-one stat per file (on top of the stat that git already does), as well as one
-retrieval of the key per file (using the single `git cat-file` process that
-git-annex talks to).
-
-This is about as efficient as I can make it, except that unmodified
-annexed files whose content is not present are listed due to --stage,
-and so it has to stat those too, and currently also feeds them into `git add`.
-
-The assistant will be able to avoid all this work, except once at startup.
-
-Anyway, direct mode committing is working!
-
-For now, `git annex sync` in direct mode also adds new files. This because
-`git annex add` doesn't work yet in direct mode.
-
-It's possible for a direct mode file to be changed during a commit,
-which would be a problem since committing involves things like calculating
-the key and caching the mtime/etc, that would be screwed up. I took
-care to handle that case; it checks the mtime/etc cache before and after
-generating a key for the file, and if it detects the file has changed,
-avoids committing anything. It could retry, but if the file is a VM disk
-image or something else that's constantly modified, commit retrying forever
-would not be good.
-
-----
-
-For `git annex sync` to be usable in direct mode, it still needs
-to handle merging. It looks like I may be able to just enhance the automatic
-conflict resolution code to know about typechanged direct mode files.
-
-The other missing piece before this can really be used is that currently
-the key to file mapping is only maintained for files added locally, or
-that come in via `git annex sync`. Something needs to set up that mapping
-for files present when the repo is initally cloned. Maybe the thing
-to do is to have a `git annex directmode` command that enables/disables
-direct mode and can setup the the mapping, as well as any necessary unlocks
-and setting the trust level to untrusted.
diff --git a/doc/design/assistant/blog/day_151__direct_mode_toggle.mdwn b/doc/design/assistant/blog/day_151__direct_mode_toggle.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_151__direct_mode_toggle.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-Built `git annex direct` and `git annex indirect` to toggle back and forth
-between direct mode. Made `git annex status` show if the repository is in
-direct mode. Now *only* merging is needed for direct mode to be basically
-usable. 
-
-I can do a little demo now. Pay attention to the "@" ls shows at the end
-of symlinks.
-
-	joey@gnu:~/tmp/bench/rdirect>ls
-	myfile@  otherfile@
-	joey@gnu:~/tmp/bench/rdirect>git annex find
-	otherfile
-	# So, two files, only one present in this repo.
-
-	joey@gnu:~/tmp/bench/rdirect>git annex direct
-	commit  
-	# On branch master
-	# Your branch is ahead of 'origin/master' by 7 commits.
-	#
-	nothing to commit (working directory clean)
-	ok
-	direct myfile ok
-	direct otherfile ok
-	direct  ok
-
-	joey@gnu:~/tmp/bench/rdirect>ls
-	myfile@  otherfile
-	# myfile is still a broken symlink because we don't have its content
-	joey@gnu:~/tmp/bench/rdirect>git annex get myfile
-	get myfile (from origin...) ok
-	(Recording state in git...)
-	joey@gnu:~/tmp/bench/rdirect>ls
-	myfile  otherfile
-
-	joey@gnu:~/tmp/bench/rdirect>echo "look mom, no symlinks" >> myfile
-	joey@gnu:~/tmp/bench/rdirect>git annex sync
-	add myfile (checksum...) ok
-	commit  
-	(Recording state in git...)
-	[master 0e8de9b] git-annex automatic sync
-	...
-	ok
-
-	joey@gnu:~/tmp/bench/rdirect>git annex indirect
-	commit  ok
-	indirect myfile ok
-	indirect otherfile ok
-	indirect  ok
-	joey@gnu:~/tmp/bench/rdirect>ls
-	myfile@  otherfile@
-
-I'd like `git annex direct` to set the repository to untrusted, but
-I didn't do it. Partly because having `git annex indirect` set it back to
-semitrusted seems possibly wrong -- the user might not trust a repo even in
-indirect mode. Or might fully trust it. The docs will encourage users to
-set direct mode repos to untrusted -- in direct mode you're operating
-without large swathes of git-annex's carefully constructed safety net.
-(When the assistant later uses direct mode, it'll untrust the repository
-automatically.)
diff --git a/doc/design/assistant/blog/day_152__bugfixes.mdwn b/doc/design/assistant/blog/day_152__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_152__bugfixes.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Fixed a bug in the kqueue code that made the assistant not notice when a
-file was renamed into a subdirectory. This turned out to be because the
-symlink got broken, and it was using `stat` on the file. Switching to
-`lstat` fixed that.
-
-Improved installation of programs into standalone bundles. Now it uses
-the programs detected by configure, rather than a separate hardcoded list.
-Also improved handling of lsof, which is not always in PATH.
-
-Made a OSX 10.8.2 build of the app, which is nearly my last gasp attempt
-at finding a way around this crazy `git init` spinning problem with Jimmy's
-daily builds are used with newer OSX versions. Try it here:
-<http://downloads.kitenet.net/tmp/git-annex.dmg.bz2>
-
-----
-
-Mailed out the Kickstarter T-shirt rewards today, to people in the US.
-Have to fill out a bunch of forms before I can mail the non-US ones.
diff --git a/doc/design/assistant/blog/day_153__hibernation.mdwn b/doc/design/assistant/blog/day_153__hibernation.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_153__hibernation.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-As winter clouds set in, I have to ration my solar power and have been less
-active than usual.
-
-It seems that the OSX 10.8.2 `git init` hanging issue has indeed been
-resolved, by building the app on 10.8.2. Very good news!  Autobuilder setup is
-in progress.
-
-----
-
-Finally getting stuck in to direct mode git-merge handling. It's
-not possible to run `git merge` in a direct mode tree, because it'll
-see typechanged files and refuse to do anything.
-
-So the only way to use `git merge`, rather than writing my own merge engine,
-is to use `--work-tree` to make it operate in a temporary work tree directory
-rather than the real one.
-
-When it's run this way, any new, modified, or renamed files will be added
-to the temp dir, and will need to be moved to the real work tree.
-To detect deleted files, need to use `git ls-files --others`, and
-look at the old tree to see if the listed files were in it.
-
-When a merge conflict occurs, the new version of the file will be in the temp
-directory, and the old one in the work tree. The normal automatic merge
-conflict resolution machinery should work, with just some tweaks to handle
-direct mode.
diff --git a/doc/design/assistant/blog/day_154__direct_mode_merging.mdwn b/doc/design/assistant/blog/day_154__direct_mode_merging.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_154__direct_mode_merging.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Got merging working in direct mode!
-
-Basically works as outlined yesterday, although slightly less clumsily.
-Since there was already code that ran `git diff-tree` to update the
-associated files mappings after a merge, I was able to adapt that same code
-to also update the working tree.
-
-An important invariant for direct mode merges is that they should never
-cause annexed objects to be dropped. So if a file is deleted by a merge,
-and was a direct mode file that was the only place in the working copy
-where an object was stored, the object is moved into `.git/annex/objects`.
-This avoids data loss and any need to re-transfer objects after a merge.
-It also makes renames and other move complex tree manipulations always end
-up with direct mode files, when their content was present.
-
-Automatic merge conflict resoltion doesn't quite work right yet in direct
-mode.
-
-Direct mode has landed in the `master` branch, but I still consider it
-experimental, and of course the assistant still needs to be updated to
-support it.
diff --git a/doc/design/assistant/blog/day_155__bugfixes.mdwn b/doc/design/assistant/blog/day_155__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_155__bugfixes.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Finished getting automatic merge conflict resolution working in direct
-mode. Turned out I was almost there yesterday, just a bug in a filename
-comparison needed to be fixed.
-
-Fixed a bug where the assistant dropped a file after transferring it,
-despite the preferred content settings saying it should keep its copy of
-the file. This turned out to be due to it reading the transfer info
-incorrectly, and adding a "\n" to the end of the filename, which caused the
-preferred content check to think it wasn't wanted after all. (Probably
-because it thought 0 copies of the file were wanted, but I didn't look into
-this in detail.)
-
-Worked on my test suite, particularly more QuickCheck tests. I need to
-use QuickCheck more, particularly when I've pairs of functions, like encode
-and decode, that make for easy QuickCheck properties.
diff --git a/doc/design/assistant/blog/day_156_and_157__direct_mode_assistant.mdwn b/doc/design/assistant/blog/day_156_and_157__direct_mode_assistant.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_156_and_157__direct_mode_assistant.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-Over Christmas, I'm working on making the assistant support direct
-mode. I like to have a fairly detailed plan before starting this kind of
-job, but in this case, I don't. (Also I have a cold so planning? Meh.)
-This is a process of seeing what's broken in direct mode and fixing it.
-I don't know if it'll be easy or hard. Let's find out..
-
-* First, got direct mode adding of new files working. This was not hard, all the
-  pieces I needed were there. For now, it uses the same method as in
-  indirect mode to make sure nothing can modify the file while it's being
-  added.
-
-* An unexpected problem is that in its startup scan, the assistant runs
-  `git add --update` to detect and stage any deletions that happened
-  while it was not running. But in direct mode that also stages the full file
-  contents, so can't be used. Had to switch to using git plumbing to only
-  stage deleted files. Happily this also led to fixing a bug; deletions
-  were not always committed at startup when using the old method; with the
-  new method it can tell when there are deletions and trigger a commit.
-
-* Next, got it to commit when direct mode files are modified. The Watcher
-  thread gets a inotify event when this happens, so that was easy. (Although
-  in doing that I had to disable a guard in direct mode that made annexed
-  files co-exist with regular in-git files, so such mixed repositories
-  probably won't work in direct mode yet.)
-
-  However, naughty kqueue is another story, there are no kqueue events for
-  file modifications. So this won't work on OSX or the BSDs yet. I tried
-  setting some more kqueue flags in hope that one would make such events
-  appear, but no luck. Seems I will need to find some other method to detect
-  file modifications, possibly an OSX-specific API.
-
-* Another unexpected problem: When an assistant receives new files from one
-  of its remotes, in direct mode it still sets up symlinks to the content.
-  This was because the Merger thread didn't use the `sync` command's direct
-  mode aware merge code.. so fixed that.
-
-* Finally there was some direct mode bookeeping the assistant has
-  to get right. For example, when a file is modified, the old object has
-  to be looked up, and be marked as not locally present any longer. That
-  lookup relies on the already running `git cat-file --batch`, so it's
-  not as fast as it could be, if I kept a local cache of the mapping
-  between files and objects. But it seems fast enough for now.
-
-At this point the assistant seems to work in direct mode on Linux!
-Needs more testing..
diff --git a/doc/design/assistant/blog/day_158__fsevents.mdwn b/doc/design/assistant/blog/day_158__fsevents.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_158__fsevents.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Investigated using the OSX fsevents API to detect when files are modified,
-so they can be committed when using direct mode. There's a
-[haskell library](http://hackage.haskell.org/package/hfsevents-0.1.3)
-and even a [sample directory watching program](http://hackage.haskell.org/package/hobbes).
-Initial tests look good...
-
-Using fsevents will avoid kqueue's problems with needing enough file
-descriptors to open every subdirectory. kqueue is a rather poor match for
-git-annex's needs, really. It does not seem to provide events for file
-modifications at all, unless every *file* is individually opened. While I
-dislike leaving the BSD's out, they need a better interface to be perfectly
-supported by git-annex, and kqueue will still work for indirect mode
-repositories.
-
-----
-
-Got the assistant to use fsevents. It seems to work well!
-
-The only problem I know of is that it doesn't yet handle whole directory
-renames. That should be easy to fix later.
diff --git a/doc/design/assistant/blog/day_159__fsevents_and_assistant.mdwn b/doc/design/assistant/blog/day_159__fsevents_and_assistant.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_159__fsevents_and_assistant.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Short day today, but I spent it all on testing the new FSEvents code,
-getting it working with the assistant in direct mode. This included fixing
-its handling of renaming, and various other bugs.
-
-The assistant in direct mode now seems to work well on OSX. So I made
-the assistant *default* to making direct mode repositories on OSX.
-
-That'll presumably flush out any bugs. :) More importantly,
-it let me close several OSX-specific bugs to do with interactions between
-git-annex's symlinks and OSX programs that were apparently written under the
-misprehension that it's a user-mode program's job to manually follow symlinks.
-
-Of course, defaulting to direct mode also means users can just modify files
-as they like and the assistant will commit and sync the changed files.
-I'm waiting to see if direct mode becomes popular enough to make it the
-default on all OS's.
diff --git a/doc/design/assistant/blog/day_15__its_aliiive.mdwn b/doc/design/assistant/blog/day_15__its_aliiive.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_15__its_aliiive.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Syncing works! I have two clones, and any file I create in the first
-is immediately visible in the second. Delete that file from the second, and
-it's immediately removed from the first.
-
-Most of my work today felt like stitching existing limbs onto a pre-existing
-monster. Took the committer thread, that waits for changes and commits them,
-and refashioned it into a pusher thread, that waits for commits and pushes
-them. Took the watcher thread, that watches for files being made,
-and refashioned it into a merger thread, that watches for git refs being
-updated. Pulled in bits of the `git annex sync` command to reanimate this.
-
-It may be a shambling hulk, but it works.
-
-Actually, it's not much of a shambling hulk; I refactored my code after
-copying it. ;)
-
-I think I'm up to 11 threads now in the new
-`git annex assistant` command, each with its own job, and each needing
-to avoid stepping on the other's toes. I did see one MVar deadlock error
-today, which I have not managed to reproduce after some changes. I think
-the committer thread was triggering the merger thread, which probably
-then waited on the Annex state MVar the committer thread had held.
-
-Anyway, it even pushes to remotes in parallel, and keeps track of remotes
-it failed to push to, although as of yet it doesn't do any attempt at
-periodically retrying.
-
-One bug I need to deal with is that the push code assumes any change
-made to the remote has already been pushed back to it. When it hasn't, 
-the push will fail due to not being a fast-forward. I need to make it
-detect this case and pull before pushing.
-
-(I've pushed this work out in a new `assistant branch`.)
diff --git a/doc/design/assistant/blog/day_160__finishing_up_direct_mode.mdwn b/doc/design/assistant/blog/day_160__finishing_up_direct_mode.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_160__finishing_up_direct_mode.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-A few final bits and pieces of direct mode. Fixed a few more bugs in the
-assistant. Made all git-annex commands that don't work at
-all, or only partially work in direct mode, refuse to run at all. Also,
-some optimisations.
-
-I'll surely need to revisit direct mode later and make more commands
-support it; `fsck` and `add` especially.
-But the only thing I'd like to deal with before I make a release with direct
-mode is the problem of files being able to be modified while they're
-being transferred, which can result in data loss.
diff --git a/doc/design/assistant/blog/day_161__release_day.mdwn b/doc/design/assistant/blog/day_161__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_161__release_day.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Released the first git-annex with direct mode today. Notably, the assistant
-enables direct mode in repositories it creates. All builds are updated to
-3.20130102 now.
-
-My plan for this month is to fix whatever things currently might be
-preventing you from using the git-annex assistant. So bugfixes and
-whatever other important gaps need to be filled, but no major new
-feature developments.
diff --git a/doc/design/assistant/blog/day_162__UI.mdwn b/doc/design/assistant/blog/day_162__UI.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_162__UI.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-[Installed a generator](http://joeyh.name/blog/entry/overcast/),
-so I'll have more power and less hibernation.
-
-Added UI in the webapp to shut down the daemon. Would like to also have
-restart UI, but that's rather harder to do, seems it'd need to start
-another copy of the webapp (and so, of the assistant), and redirect the
-browser to its new url. ... But running two assistants in the same repo at
-the same time isn't good. Anyway, users can now use the UI to shut it down,
-and then use their native desktop UI to start it back up.
-
-[[!img /assistant/controlmenu.png]]
-
-Spiffed up the control menu. Had to stop listing other local repositories
-in the menu, because there was no way to notice when a new one was added
-(without checking a file on every page load, which is way overkill for this
-minor feature). Instead added a new page that lists local repositories it
-can switch to.
diff --git a/doc/design/assistant/blog/day_163__free_features.mdwn b/doc/design/assistant/blog/day_163__free_features.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_163__free_features.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-There was a typo in cabal file that broke building the assistant on OSX.
-This didn't affect the autobuilds of the app, but several users building by
-hand reported problems. I made a new minor release fixing that typo, and
-also a resouce leak bug.
-
-Got a restart UI working after all. It's a hack though. It
-opens a new tab for the new assistant instance, and as most web browsers
-don't allow javascript to close tabs, the old tab is left open. At some
-point I need to add a proper thread manager to the assistant, which the
-restart code could use to kill the watcher and committer threads, and then
-I could do a clean restart, bringing up the new daemon and redirecting the
-browser to it.
-
-Found a bug in the assistant in direct mode -- the expensive transfer scan
-didn't queue uploads needed to sync to other repos in direct mode, although
-it did queue downloads. Fixing this laid some very useful groundwork for
-making more commands support direct mode, too. Got stuck for a long time
-dealing with some very strange `git-cat-file` behavior while making this
-work. Ended up putting in a workaround.
-
-After that, I found that these commands work in direct mode, without
-needing any futher changes!
-
-* `git annex find`
-* `git annex whereis`
-* `git annex copy`
-* `git annex move`
-* `git annex drop`
-* `git annex log`
-
-Enjoy! The only commands I'd like to add to this are `fsck`, `add`,
-and `addurl`...
diff --git a/doc/design/assistant/blog/day_164__bugfixes.mdwn b/doc/design/assistant/blog/day_164__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_164__bugfixes.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Several bugfixes from user feedback today.
-
-Made the assistant detect misconfigured systems where git will fail to
-commit because it cannot determine the user's name or email address, and
-dummy up enough info to get git working. It makes sense for git and
-git-annex to fail at the command line on such a misconfigured system, so
-the user can fix it, but for the assistant it makes sense to plow on and just
-work.
-
-I found a big gap in direct mode -- all the special remotes expected to find
-content in the indirect mode location when transferring to the remote. It
-was easy to fix once I noticed the problem. This is a big enough bug that
-I will be making a new release in a day or so.
-
-Also, got fsck working in direct mode. It doesn't check as many things
-as in indirect mode, because direct mode files can be modified at any time.
-Still, it's usable, and useful.
diff --git a/doc/design/assistant/blog/day_165__release_day.mdwn b/doc/design/assistant/blog/day_165__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_165__release_day.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-(Posted a day late.) [[!meta date="Mon Jan  7 16:05:13 JEST 2013"]]
-
-Got `git annex add` (and `addurl`) working in direct mode. This allowed me
-to make `git annex sync` in direct mode no longer automatically add new
-files.
-
-It's also now safe to mix direct mode annexed files with regular files in
-git, in the same repository. Might have been safe all along, but I've
-tested it, and it certainly works now. You just have to be careful to not
-use `git commit -a` to commit changes to such files, since that'll also 
-stage the entire content of direct mode files.
-
-Made a minor release for these recent changes and bugfixes. Recommended if
-you're using direct mode. Had to chase down a stupid typo I made yesterday
-that caused fsck to infinite loop if it found a corrupted file. Thank
-goodness for test suites.
diff --git a/doc/design/assistant/blog/day_166__a_short_long_day.mdwn b/doc/design/assistant/blog/day_166__a_short_long_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_166__a_short_long_day.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I was up at the crack of dawn wrestling 100 pound batteries around for 3
-hours and rewiring most of my battery bank, so today is a partial day...
-but a day with power, which is always nice.
-
-Did some design work on finally making transfers of files from direct mode
-repositories safe, even if a file is modified as it's being uploaded.
-This seems easily doable for special remotes; git to git repository
-transfers are harder, but I think I see how to do it without breaking
-backwards compatability. 
-
-(An unresolved problem is that a temp file would be left behind when a
-transfer failed due to a file being changed. What would really be nice to
-do is to use that temp file as the rsync basis when transferring the new
-version of a file. Although this really goes beyond direct mode, and into
-[[deltas]] territory.)
-
-Made fsck work better in direct mode repositories. While it's expected for
-files to change at any time in direct mode, and so fsck cannot complain
-every time there's a checksum mismatch, it is possible for it to detect
-when a file does not *seem* to have changed, then check its checksum,
-and so detect disk corruption or other data problems.
-
-Also dealt with several bug reports. One really weird one involves `git
-cat-file` failing due to some kind of gpg signed data in the git-annex
-branch. I don't understand that at all yet.
diff --git a/doc/design/assistant/blog/day_167__safe_direct_mode_transfers.mdwn b/doc/design/assistant/blog/day_167__safe_direct_mode_transfers.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_167__safe_direct_mode_transfers.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Well underway on making direct mode transfers roll back when the file is
-modified while it's transferred.
-
-As expected, it was easy to do for all the special remotes ... Except for
-bup, which does not allow deleting content. For bup it just removes the git
-ref for the bad content, and relies on bup's use of git delta compression
-to keep space use sane.
-
-The problem is also handled by `git-annex-shell sendkey`.
-But not yet for downloads from other git repositories. Bit stuck on that.
-
-Also: A few minor bug fixes.
diff --git a/doc/design/assistant/blog/day_168__back_to_theme.mdwn b/doc/design/assistant/blog/day_168__back_to_theme.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_168__back_to_theme.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-This month's theme is supposed to be fixing up whatever might prevent users
-from using the assistant. To that end, I've posted an open-ended poll,
-[[polls/what is preventing me from using git-annex assistant]]. Please go
-fill it out so I can get an idea of how many people are using the
-assistant, and what needs to be done to get the rest of you, and your
-friends and family able to use it.
-
-In the meantime, today I fixed several bugs that were recently reported in
-the webapp and assistant. Getting it working as widely as possible, even on
-strange IPv6 only systems, and with browsers that didn't like my generated
-javascript code is important, and fits right into this month's theme. I'm
-happy to see lots of bugs being filed, since it means more users are trying
-the assistant out.
-
-Also continued work on making direct mode transfers safe. All transfers to
-local git remotes (wish I had a better phrase!) are now safe in direct mode.
-Only uploading from a direct mode repository over ssh to another git
-repository is still potentially unsafe.
diff --git a/doc/design/assistant/blog/day_169__direct_mode_is_safe.mdwn b/doc/design/assistant/blog/day_169__direct_mode_is_safe.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_169__direct_mode_is_safe.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-I've finished making direct mode file transfers safe. The last piece of the
-puzzle was making `git-annex-shell recv-key` check data it's received from
-direct mode repositories. This is a bit expensive, but avoids adding
-another round-trip to the protocol. I might revisit this later, this was
-just a quick fix.
-
----
-
-The [[poll|polls/what is preventing me from using git-annex assistant]] was 
-quite useful. Some interesting points:
-
-* 14% have been reading this blog, and rightly don't trust direct mode to
-  be safe. Which is why I went ahead with a quick fix to make it safe.
-* 6% want an Ubuntu PPA. I don't anticipate doing this myself, but
-  if anyone who develops for Ubuntu wants to put together a PPA with a
-  newer version, I can help you pick the newer haskell packages you'll
-  need from Debian, etc.
-* 9% just need me to update the amd64 build in Debian sid. I forgot to
-  include it in the last release, and the Debian buildds cannot currently
-  autobuild git-annex due to some breakage in the versions of haskell
-  libraries in unstable. Hopefully I'll remember to include an amd64 build
-  in my next release.
-
-And lots of other interesting stuff, I have a nice new TODO list now. :)
diff --git a/doc/design/assistant/blog/day_16__more_robust_syncing.mdwn b/doc/design/assistant/blog/day_16__more_robust_syncing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_16__more_robust_syncing.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-I released a version of git-annex over the weekend that includes the `git
-annex watch` command. There's a minor issue installing it from cabal on
-OSX, which I've fixed in my tree. Nice timing: At least the watch command
-should be shipped in the next Debian release, which freezes at the end of
-the month.
-
-Jimmy found out how kqueue [[blows
-up|bugs/Issue_on_OSX_with_some_system_limits]] when there are too many
-directories to keep all open. I'm not surprised this happens, but it's nice
-to see exactly how. Odd that it happened to him at just 512 directories;
-I'd have guessed more. I have plans to fork watcher programs that each
-watch 512 directories (or whatever the ulimit is), to deal with this. What
-a pitiful interface is kqueue.. I have not thought yet about how the watcher
-programs would communicate back to the main program.
-
-----
-
-Back on the assistant front, I've worked today on making git syncing more
-robust. Now when a push fails, it tries a pull, and a merge, and repushes.
-That ensures that the push is, almost always, a fast-forward. Unless
-something else gets in a push first, anyway!
-
-If a push still fails, there's Yet Another Thread, added today, that will
-wake up after 30 minutes and retry the push. It currently keeps retrying
-every 30 minutes until the push finally gets though. This will deal, to
-some degree, with those situations where a remote is only sometimes
-available.
-
-I need to refine the code a bit, to avoid it keeping an ever-growing queue
-of failed pushes, if a remote is just dead. And to clear old failed pushes
-from the queue when a later push succeeds.
-
-I also need to write a git merge driver that handles conflicts in the tree.
-If two conflicting versions of a file `foo` are saved, this would merge
-them, renaming them to `foo.X` and `foo.Y`. Probably X and Y are the
-git-annex keys for the content of the files; this way all clones will
-resolve the conflict in a way that leads to the same tree. It's also
-possible to get a conflict by one repo deleting a file, and another
-modifying it. In this case, renaming the deleted file to `foo.Y` may
-be the right approach, I am not sure.
-
-I glanced through some Haskell dbus bindings today. I belive there are dbus
-events available to detect when drives are mounted, and on Linux this would
-let git-annex notice and sync to usb drives, etc.
diff --git a/doc/design/assistant/blog/day_170__bugfixes_and_release.mdwn b/doc/design/assistant/blog/day_170__bugfixes_and_release.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_170__bugfixes_and_release.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Fixed a goodly amount of bugs today.
-
-The most interesting change was that in direct mode, files using the same
-key are no longer hardlinked, as that could cause a surprising behavior if
-modifying one, where the other would also change.
-
-Made a release, which is almost entirely bug fixes. Debian amd64 build
-included this time. :)
diff --git a/doc/design/assistant/blog/day_171__logs.mdwn b/doc/design/assistant/blog/day_171__logs.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_171__logs.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-I've noticed people have some problems getting me logs when there'a a bug,
-so I worked on improving the logging of the assistant.
-
-While the assistant logged to `.git/annex/daemon.log` when started as a
-daemon, when the webapp ran it didn't log there. It's somewhat tricky to
-make the webapp redirect messages to the log, because it may start a web
-browser that wants to write to the console. Took some file descriptor
-juggling, but I made this work. Now the log is even used when the assistant
-is started for the first time in a newly created repository. So, we have
-total log coverage.
-
-Next, I made a simple page in the webapp to display the accumulated logs.
-It does not currently refresh as new things are logged. But it's easier
-for me to tell users to click on `Current Repository -> View log` than
-ask for them to look for the daemon.log file.
-
-Finally, I made all the webapp's alerts also be written to the log.
-
----
-
-Also did the requisite bug fixes.
-
-[[!img /assistant/logs.png alt="screenshot of logs page"]]
diff --git a/doc/design/assistant/blog/day_172__short_day.mdwn b/doc/design/assistant/blog/day_172__short_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_172__short_day.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Only one bug fix today, but it was a doozie. It seems that gpg2 has an
-incompatability with the gpg 1.x that git-annex was written for, that
-causes large numbers of excess passphrase prompts, when it's supposed to be
-using a remote's symmetric encryption key. Adding the --batch parameter
-fixed this.
-
-I also put together a page listing [[related_software]] to git-annex.
-
-I've also updated [[direct_mode]]'s documentation, about when it's safe to
-use direct mode. The intuition I've developed about direct mode is that if
-you don't need full versioning of files (with the ability to get back old
-versions), direct mode is fine and safe to use. If you want full
-versioning, it's best to not use direct mode. Or a reasonable compromise is
-to `git annex untrust` the direct mode repository and set up a backup remote.
-With this compromise, only if you edit a file twice in a row might the old
-version get lost before it can be backed up.
-
-Of course, it would be possible to make direct mode fully version
-preserving, but it'd have to back up every file in the repository locally
-to do so. Going back to two local copies of every file, which is part of
-git that git-annex happily avoids. Hmm, it might be possible to only back
-up a file locally until it reaches the backup remote..
diff --git a/doc/design/assistant/blog/day_173__snow_day.mdwn b/doc/design/assistant/blog/day_173__snow_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_173__snow_day.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-When I wasn't dealing with the snowstorm today, I was fixing more bugs.
-Rather serious bugs.
-
-One actually involved corruption to git-annex's location tracking info, due
-to a busted three-way merge. Takes an unusual set of circumstances for that
-bug to be triggered, which is why it was not noticed before now. Also,
-since git-annex is designed to not trust its location tracking info, and
-recover from it becoming inconsistent, someone could have experienced the
-bug and not really noticed it. Still it's a serious problem and I'm in debt
-to user a-or-b for developing a good test case that let me reproduce it and
-fix it. (Also added to the test suite.)
-[[This is how to make a perfect bug report|bugs/Annex_thinks_file_exists_afer_being_dropped]]
-
-Another bug made `git add; git commit` cause data loss in direct mode.
-I was able to make that not lose data, although it still does something
-that's unlikely to be desired, unless the goal is to move a file from an
-annexed direct mode file to having its entire contents stored in git.
-
-Also found a bug with sync's automatic resolution of git conflicts. It
-failed when two repositories both renamed a file to different names.
-I had neglected to explicitly `git rm` the old file name, which is
-necessary to resolve such a conflict.
diff --git a/doc/design/assistant/blog/day_174__last_weekend_before_AU.mdwn b/doc/design/assistant/blog/day_174__last_weekend_before_AU.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_174__last_weekend_before_AU.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-On Friday, worked on several bugs in direct mode mapping code. Fixed it
-to not crash on invalid unicode in filenames. Dealt with some bugs when
-mappings were updated in subdirectories of the repository.
-
-Those bugs could result in inconsistent mapping files, so today I
-made `fsck` check mapping files for consistency.
-
-Leaving for Australia tomorrow, but I also hope to get another bugfix
-release out before my flight leaves. Then will be on vacation for several
-days, more or less. Then at Linux Conf Australia, where there will
-be a git-annex presentation on February 1st.
-
-----
-
-BTW, I've lined up my Android development hardware for next month. I will
-be using an [Asus Transformer](http://en.wikipedia.org/wiki/ASUS_Eee_Pad_Transformer),
-kindly lent to me by Mark H. This has the advantage
-of having a real keyboard, and running the (currently) second most widely used
-version of Android, 4.0.x. I have already experienced frustration getting photos
-off the thing and into my photo annex; the file manager is the worst I've
-seen since the 80's. I understand why so many want an Android port!
-
-Interestingly, its main user filesystem is a FUSE mount point on `/sdcard`
-backed by an ext4 filesystem on `/data` that a regular user is not allowed
-to access. Whatever craziness this entails does not support symlinks.
diff --git a/doc/design/assistant/blog/day_175__pacific_features.mdwn b/doc/design/assistant/blog/day_175__pacific_features.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_175__pacific_features.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-15 hours in a plane with in-seat power. Ok, time for some new features!
-
-Added two new repository groups. 
-
-"manual" can be used to avoid the assistant downloading any file contents
-on its own. It'll still upload and otherwise sync data. To download files,
-you can use `git annex get` while the assistant is running. You can also
-drop files using the command line.
-
-"source" is for repositories that are the source of new files, but don't
-need to retain a copy once the file has been moved to another repository.
-A camera would be a good example.
-
-Ok, those were easy features to code; I suck at being productive on planes.
-Release coming up with those, once I find enough bandwidth here in AU.
diff --git a/doc/design/assistant/blog/day_176__thread_management.mdwn b/doc/design/assistant/blog/day_176__thread_management.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_176__thread_management.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Got back to hacking today, and did something I've wanted to do for some
-time. Made all the assistant's threads be managed by a thread manager. This
-allows restarting threads if they crash, by clicking a button in the
-webapp. It also will allow for other features later, like stopping and
-starting the watcher thread, to pause the assistant adding local files.
-
-[[!img /assistant/crashrecovery.png]]
-
-I added the haskell async library as a dependency, which made this pretty
-easy to implement. The only hitch is that async's documentation is not
-clear about how it handles asyncronous exceptions. It took me quite a while
-to work out why the errors I'd inserted into threads to test were crashing
-the whole program rather than being caught!
diff --git a/doc/design/assistant/blog/day_178__bus_hacking.mdwn b/doc/design/assistant/blog/day_178__bus_hacking.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_178__bus_hacking.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hacking on a bus to Canberra for [LCA2013](https://lca2013.linux.org.au/),
-I made the webapp's UI for pausing syncing to a repository also work for
-the local repository. This pauses the watcher thread. (There's also an
-annex.autocommit config setting for this.)
-
-Ironically, this didn't turn out to the use the thread manager I built
-yesterday. I am not sure that a ThreadKilled exception would never be
-masked in the watcher thread. (There is some overly broad exception
-handling in git-annex that dates to back before I quite understood haskell
-exceptions.)
diff --git a/doc/design/assistant/blog/day_179__brief_updates.mdwn b/doc/design/assistant/blog/day_179__brief_updates.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_179__brief_updates.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Not doing significant coding here at LCA2013, but stuff is still happening:
-
-* I'll be giving a talk and demo of git-annex and the assistant tomorrow.
-  Right after a keynote by Tim Berners-Lee! There's no streaming, but
-  a recording will be available later.
-* I've met numerous git-annex users and git-annex curious folk from down
-  under.
-* I had a suggestion that direct mode rename the `.git` directory to
-  something else, to prevent foot-shooting git commands being used.
-  A wrapper around git could be used to run git commands, and limit
-  to safe ones. Under consideration.
-* I finally updated the OSX 10.8.2 build to last week's release.
-  Been having some problems with the autobuilder, but it finally spat out
-  a build. Hopefully this build is good, and it should fix the javascript
-  issues with Safari and the webapp.
-* Ulrik Sverdrup has written <https://github.com/blake2-ppc/git-remote-gcrypt>,
-  which allows using gpg encrypted ssh remotes with git. The same idea
-  could be expanded to other types of remotes, like S3. I'm excited
-  about adding encrypted git remote support to the assistant!
diff --git a/doc/design/assistant/blog/day_17__push_queue_prune.mdwn b/doc/design/assistant/blog/day_17__push_queue_prune.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_17__push_queue_prune.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Not much available time today, only a few hours.
-
-Main thing I did was fixed up the failed push tracking to use a better data
-structure. No need for a queue of failed pushes, all it needs is a map of
-remotes that have an outstanding failed push, and a timestamp. Now it
-won't grow in memory use forever anymore. :)
-
-Finding the right thread mutex type for this turned out to be a bit of a
-challenge. I ended up with a STM TMVar, which is left empty when there are
-no pushes to retry, so the thread using it blocks until there are some. And,
-it can be updated transactionally, without races.
-
-I also fixed a bug outside the git-annex assistant code. It was possible to
-crash git-annex if a local git repository was configured as a remote, and
-the repository was not available on startup. git-annex now ignores such
-remotes. This does impact the assistant, since it is a long running process
-and git repositories will come and go. Now it ignores any that
-were not available when it started up. This will need to be dealt with when
-making it support removable drives.
diff --git a/doc/design/assistant/blog/day_180__back.mdwn b/doc/design/assistant/blog/day_180__back.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_180__back.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Back from Australia. Either later today or tomorrow I'll dig into the
-messages I was not able to get to while traveling, and then the plan is to
-get into the Android port.
-
-Video of my LCA2013 [git-annex talk](http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4)
-is now available. I have not watched it yet, hope it turned out ok despite
-some technical difficulties!
diff --git a/doc/design/assistant/blog/day_181__triage.mdwn b/doc/design/assistant/blog/day_181__triage.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_181__triage.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Got fairly far along in my triage of my backlog, looking through everything
-that happened after January 23rd. Still 39 or so items to look at.
-
-There have been several reports of problems with ssh password prompts.
-I'm beginning to think the assistant may need to prompt for the password
-when setting up a ssh remote. This should be handled by `ssh-askpass` or
-similar, but some Linux users probably don't have it installed, and there
-seems to be no widely used OSX equivalent.
-
----
-
-Fixed several bugs today, all involving (gasp) direct mode.
-
-The tricky one involved renaming or deleting files in direct mode.
-Currently nothing removes the old filename from the direct mode
-mapping, and this could result in the renamed or deleted file
-unexpectedly being put back into the tree when content is downloaded.
-
-To deal with this, it now assumes that direct mode mappings may be out of
-date compared to the tree, and does additional checks to catch
-inconsistencies. While that works well enough for the assistant,
-I'd also like to make the `pre-commit` hook update the mappings for files
-that are changed. That's needed to handle things like `git mv`.
diff --git a/doc/design/assistant/blog/day_182__it_begins.mdwn b/doc/design/assistant/blog/day_182__it_begins.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_182__it_begins.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-I need an Android development environment. I briefly looked into rooting
-the Asus Transformer so I could put a Debian chroot on it and build
-git-annex in there, but this quickly devolved to the typical maze of
-forum posts all containing poor instructions and dead links. Not worth it.
-
-Instead, I'm doing builds on my Sheevaplug, and once I have a static armel
-binary, will see what I need to do to get it running on Android.
-
-Fixed building with the webapp disabled, was broken by recent improvements.
-I'll be building without the webapp on arm initially, because ghci/template
-haskell on arm is still getting sorted out. (I tried ghc 7.6.2 and ghci is
-available, but doesn't quite work.)
-
-From there, I got a binary built pretty quickly (well, it's arm, so not *too*
-quickly). Then tried to make it static by appending 
-`-optl-static -optl-pthread` to the ghc command line.
-This failed with a bunch of errors:
-
-<pre>
-/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../arm-linux-gnueabi/libxml2.a(nanohttp.o): In function `xmlNanoHTTPMethodRedir': (.text+0x2128): undefined reference to `inflateInit2_'
-/usr/lib/gcc/arm-linux-gnueabi/4.6/../../../arm-linux-gnueabi/libxml2.a(xzlib.o): In function `xz_decomp': (.text+0x36c): undefined reference to `lzma_code'
-...
-</pre>
-
-Disabling DBUS and (temporarily) XMPP got around that.
-
-Result!
-
-<pre>
-joey@leech:~/git-annex>ldd tmp/git-annex 
-        not a dynamic executable
-joey@leech:~/git-annex>ls -lha tmp/git-annex 
--rwxr-xr-x 1 joey joey 18M Feb  6 16:23 tmp/git-annex*
-</pre>
-
-Next: Copy binary to Android device, and watch it fail in some interesting way.  
-Repeat.
-
----
-
-Also more bug triage this morning...
-
-Got the pre-commit hook to update direct mode mappings.
-Uses `git diff-index HEAD` to find out what's changed. The only
-tricky part was detecting when `HEAD` doesn't exist yet. Git's
-plumbing is deficient in this area. Anyway, the mappings get updated
-much better now.
-
-Fixed a wacky bug where `git annex uninit` behaved badly on a filesystem
-that does not support hardlinks.
diff --git a/doc/design/assistant/blog/day_183__plan_b.mdwn b/doc/design/assistant/blog/day_183__plan_b.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_183__plan_b.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Have not tried to run my static binary on Android yet, but I'm already
-working on a plan B in case that doesn't work. Yesterday I stumbled upon
-<https://github.com/neurocyte/ghc-android>, a ghc cross-compiler for
-Android that uses the Android native development kit. 
-It first appeared on February 4th. Good timing!
-
-I've gotten it to build and it emits arm executables, that seem to use the
-Android linker. So that's very promising indeed. 
-
-I've also gotten cabal working with it, and have it chewing through
-installing git-annex's build dependencies.
-
-----
-
-Also made a release today, this is another release that's mostly bugfixes,
-and a few minor features. Including one bug fixed at 6 am this morning, urk.
-
-I think I will probably split my days between working on Android porting
-and other git-annex development.
diff --git a/doc/design/assistant/blog/day_184__just_wanna_run_something.mdwn b/doc/design/assistant/blog/day_184__just_wanna_run_something.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_184__just_wanna_run_something.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-Have been working on getting all the haskell libraries git-annex uses
-built with the android cross compiler. Difficulties so far are
-libraries that need tweaks to work with the new version of ghc, and some
-that use cabal in ways that break cross compilation. Haskell's network
-library was the last and most challenging of those.
-
-At this point, I'm able to start trying to build git-annex for android.
-Here's the first try!
-
-<pre>
-joey@gnu:~/src/git-annex>cabal install -w $HOME/.ghc-android-14-arm-linux-androideabi-4.7/bin/arm-unknown-linux-androideabi-ghc --with-ghc-pkg=$HOME/.ghc-android-14-arm-linux-androideabi-4.7/bin/arm-unknown-linux-androideabi-ghc-pkg --with-ld=$HOME/.ghc-android-14-arm-linux-androideabi-4.7/bin/arm-linux-androideabi-ld --flags="-Webapp -WebDAV -XMPP -S3 -Dbus"
-Resolving dependencies...
-Configuring git-annex-3.20130207...
-Building git-annex-3.20130207...
-Preprocessing executable 'git-annex' for git-annex-3.20130207...
-on the commandline: Warning:
-    -package-conf is deprecated: Use -package-db instead
-
-Utility/libdiskfree.c:28:26:
-     fatal error: sys/statvfs.h: No such file or directory
-compilation terminated.
-</pre>
-
-Should not be far from a first android build now..
-
-----
-
-While I already have Android "hello world" executables to try, I have not yet
-been able to run them. Can't seem to find a directory I can write to on the
-Asus Transformer, with a filesystem that supports the +x bit. Do you really
-have to root Android just to run simple binaries? I'm crying inside.
-
-It seems that the blessed Android NDK way would involve making a Java app,
-that pulls in a shared library that contains the native code. For haskell,
-the library will need to contain a C shim that, probably, calls an entry
-point to the Haskell runtime system. Once running, it can use the FFI to
-communicate back to the Java side, probably. The good news is that CJ van
-den Berg, who already saved my bacon once by developing ghc-android, tells
-me he's hard at work on that very thing.
-
-----
-
-In the meantime, downloaded the Android SDK. Have gotten it to build a
-`.apk` package from just javascript code, and managed to do it without
-using eclipse (thank god). Will need this later, but for now want to wash
-my brain out with soap after using it.
diff --git a/doc/design/assistant/blog/day_185__android_liftoff.mdwn b/doc/design/assistant/blog/day_185__android_liftoff.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_185__android_liftoff.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Thanks to hhm, who pointed me at [KBOX](http://kevinboone.net/kbox.html),
-I have verified that I can build haskell programs that work on Android.
-
-After hacking on it all day, I've succeeded in making an initial build of
-git-annex for Android. It links! It runs!
-
-Which is not to say it's usable yet; for one thing I need to get a port
-of git before it can do anything useful. (Some of the other things git-annex
-needs, like ssh and sha256sum, are helpfully provided by KBOX.)
-
-Next step will be to find or built a git port for Android. I know there's
-one in the "Terminal IDE" app. Once I can use git-annex at the command line
-on Android, I'll be able to test it out some (I can also port the test
-suite program and run it on Android), and get a feeling for what is needed
-to get the port to a usable command-line state.
-
-And then on to the webapp, and an Android app, I suppose. So far, the port
-doesn't include the webapp, but does include the assistant. The webapp
-needs ghci/template haskell for arm. A few people have been reporting they
-have that working, but I don't yet.
diff --git a/doc/design/assistant/blog/day_186__Android_success.mdwn b/doc/design/assistant/blog/day_186__Android_success.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_186__Android_success.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-I'm now successfully using git-annex at the command line on Android.
-`git annex watch` works too.
-
-For now, I'm using a git repository under `/data`, which is on a real,
-non-cripped filesystem, so symlinks work there.
-
-There's still the issue of running without any symlinks on `/mnt/sdcard`.
-While direct mode gets most of the way, it still uses symlinks in a few
-places, so some more work will be needed there. Also, git-annex uses hard
-links to lock down files, which won't work on cripped filesystems.
-
-Besides that, there's lots of minor porting, but no big show-stoppers
-currently.. Some of today's porting work:
-
-* Cross-compiled git for Android. While the Terminal IDE app has some git
-  stuff, it's not complete and misses a lot of plumbing commands git-annex
-  uses. My git build needs some tweaks to be relocatable without setting
-  `GIT_EXEC_PATH`, but it works.
-
-* Switched git-annex to use the Haskell glob library, rather than PCRE. This
-  avoids needing libpcre, which simplifies installation on several platforms
-  (including Android).
-
-* Made git-annex's `configure` hardcode some settings when cross-compiling
-  for Android, rather than probing the build system.
-
-* Android's built-in `lsof` doesn't support the -F option to use a
-  machine-readable output format. So wrote a separate lsof output parser for
-  the standard lsof output format. Unfortunatly, Android's lsof does not
-  provide any information about where a file is open for read or write, so
-  for safety, git-annex has to assume any file that's open might be written
-  to, and avoid annexing it. It might be better to provide my own lsof
-  eventually.
diff --git a/doc/design/assistant/blog/day_187__porting_utilities.mdwn b/doc/design/assistant/blog/day_187__porting_utilities.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_187__porting_utilities.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Ported all the utilities git-annex needs to run on Android: 
-git, rsync, gnupg, dropbear (ssh client), busybox. Built a
-Makefile that can download, patch, and cross build these from source.
-
-While all the utilities work, dropbear doesn't allow git-annex to use ssh
-connection caching, which is rather annoying especially since these systems
-tend to be rather slow and take a while to start up ssh connections.
-I'd sort of like to try to get openssh's client working on Android instead.
-Don't know how realistic that is.
-
-Dealt with several parts of git-annex that assumed `/bin/sh` exists,
-so it instead uses `/system/bin/sh` on Android. Also adapted `runshell`
-for Android.
-
-Now I have a 8 mb compressed tarball for Android.
-Uncompressed it's 25 mb. This includes a lot of git and busybox
-commands that won't be used, so it could be trimmed down further.
-16 mb of it is git-annex itself.
-
-[[Instructions for using the Android tarball|install/Android]]  
-This is for users who are rather brave, not afraid of command line and
-keyboard usage. Good first step.
diff --git a/doc/design/assistant/blog/day_188__crippled_filesystem_support.mdwn b/doc/design/assistant/blog/day_188__crippled_filesystem_support.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_188__crippled_filesystem_support.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-There are at least three problems with using git-annex
-on `/sdcard` on Android, or on a FAT filesystem, or on (to a first
-approximation) Windows:
-
-1. symlinks
-2. hard links
-3. unix permissions
-
-So, I've added an `annex.crippledfilesystem` setting. `git annex init` now
-probes to see if all three are supported, and if not, enables that, as well
-as direct mode.
-
-In crippled filesystem mode, all the permissions settings are skipped.
-Most of them are only used to lock down content in the annex in indirect
-mode anyway, so no great loss.
-
-There are several uses of hard links, most of which can be dealt with by
-making copies. The one use of permissions and hard links I absolutely
-needed to deal with was that they're used to lock down a file as it's being
-ingested into the annex. That can't be done on crippled filesystems, so I
-made it instead check the metadata of the file before and after to detect
-if it changed, the same way direct mode detects when files are modified.
-This is likely better than the old method anyway.
-
-The other reason files are hardlinked while they're being ingested is that
-this allows running lsof on a single directory of files that are in the
-process of being added, to detect if anything has them open for write.
-I still need to adjust the lsof check to work in crippled filesystem mode.
-It seems this won't make it much slower to run lsof on the whole repository.
-
-At this point, I can use git-annex with a repository on `/sdcard` or a FAT
-filesystem, and at least `git annex add` works. 
-
-Still several things on the TODO list before crippled filesystem mode is
-complete. The only one I'm scared about is making `git merge` do something
-sane when it wants to merge two trees full of symlinks, and the filesystem
-doesn't let it create a symlink..
diff --git a/doc/design/assistant/blog/day_189__more_crippling.mdwn b/doc/design/assistant/blog/day_189__more_crippling.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_189__more_crippling.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-Finished crippled filesystem support, except for symlink handling.
-This was straightforward, just got lsof working in that mode, made
-`migrate` copy key contents, and adapted the rsync special remote to
-support it. Encrypted rsync special remotes have no more overhead on
-crippled filesystems than normally. Un-encrypted rsync special remotes
-have some added overhead, but less than encrypted remotes. Acceptable
-for now.
-
-I've now successfully run the assistant on a FAT filesystem.
-
-----
-
-Git handles symlinks on crippled filesystems by setting
-`core.symlinks=false` and checking them out as files containing the link
-text. So to finish up crippled filesystem support, git-annex needs to
-do the same whenever it creates a symlink, and needs to read file contents
-when it normally reads a symlink target.
-
-There are rather a lot of calls to `createSymbolicLink`,
-`readSymbolicLink`, `getSymbolicLinkStatus`, `isSymbolicLink`, and `isSymLink`
-in the tree; only ones that are used in direct mode
-need to be converted. This will take a while.
-
-Checking whether something is a symlink, or where it points is especially
-tricky. How to tell if a small file in a git working tree is intended to be
-a symlink or not? Well, it can look at the content and see if it makes
-sense as a link text pointing at a git-annex key. As long as the
-possibility of false positives is ok. It might be possible, in some cases,
-to query git to verify if the object stored for that file is really a
-symlink, but that won't work if the file has been renamed, for example.
-
-Converted some of the most commonly used symlink code to handle this.
-Much more to do, but it basically works; I can `git annex get` and `git
-annex drop` on FAT, and it works.
-
------
-
-Unfortunately, got side-tracked when I discovered that the last release
-introduced a bug in direct mode. Due to the bug, "git annex get file; git annex
-drop file; git annex get file" would end up with the file being an indirect
-mode symlink to the content, rather than a direct mode file. No data loss,
-but not right. So, spent several hours fixing that reversion, which was
-caused by me stupidly fixing another bug at 5 am in the morning last week.. 
-and I'll probably be pushing out another release tomorrow with the fix.
diff --git a/doc/design/assistant/blog/day_18__merging.mdwn b/doc/design/assistant/blog/day_18__merging.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_18__merging.mdwn
+++ /dev/null
@@ -1,82 +0,0 @@
-Worked on automatic merge conflict resolution today. I had expected to be
-able to use git's merge driver interface for this, but that interface is
-not sufficient. There are two problems with it:
-
-1. The merge program is run when git is in the middle of an operation
-   that locks the index. So it cannot delete or stage files. I need to
-   do both as part of my conflict resolution strategy.
-2. The merge program is not run at all when the merge conflict is caused
-   by one side deleting a file, and the other side modifying it. This is
-   an important case to handle.
-
-So, instead, git-annex will use a regular `git merge`, and if it fails, it
-will fix up the conflicts.
-
-That presented its own difficulty, of finding which files in the tree
-conflict. `git ls-files --unmerged` is the way to do that, but its output
-is a quite raw form:
-
-	120000 3594e94c04db171e2767224db355f514b13715c5 1	foo
-	120000 35ec3b9d7586b46c0fd3450ba21e30ef666cfcd6 3	foo
-	100644 1eabec834c255a127e2e835dadc2d7733742ed9a 2	bar
-	100644 36902d4d842a114e8b8912c02d239b2d7059c02b 3	bar
-
-I had to stare at the rather impenetrable documentation for hours and
-write a lot of parsing and processing code to get from that to these mostly
-self explanatory data types:
-
-	data Conflicting v = Conflicting
-	        { valUs :: Maybe v
-	        , valThem :: Maybe v
-	        } deriving (Show)
-
-	data Unmerged = Unmerged
-	        { unmergedFile :: FilePath
-	        , unmergedBlobType :: Conflicting BlobType
-	        , unmergedSha :: Conflicting Sha
-	        } deriving (Show)
-
-Not the first time I've whined here about time spent parsing unix command
-output, is it? :)
-
-From there, it was relatively easy to write the actual conflict cleanup
-code, and make `git annex sync` use it. Here's how it looks:
-
-	$ ls -1
-	foo.png
-	bar.png
-	$ git annex sync
-	commit  
-	# On branch master
-	nothing to commit (working directory clean)
-	ok
-	merge synced/master 
-	CONFLICT (modify/delete): bar.png deleted in refs/heads/synced/master and modified in HEAD. Version HEAD of bar.png left in tree.
-	Automatic merge failed; fix conflicts and then commit the result.
-	bar.png: needs merge
-	(Recording state in git...)
-	[master 0354a67] git-annex automatic merge conflict fix
-	ok
-	$ ls -1
-	foo.png
-	bar.variant-a1fe.png
-	bar.variant-93a1.png
-
-There are very few options for ways for the conflict resolution code to
-name conflicting variants of files. The conflict resolver can only use data
-present in git to generate the names, because the same conflict needs to 
-be resolved the same everywhere.
-
-So I had to choose between using the full key name in the filenames produced
-when resolving a merge, and using a shorter checksum of the key, that would be
-more user-friendly, but could theoretically collide with another key. 
-I chose the checksum, and weakened it horribly by only using 32 bits of it!
-
-Surprisingly, I think this is a safe choice. The worst that can
-happens if such a collision happens is another conflict, and the conflict
-resolution code will work on conflicts produced by the conflict resolution
-code! In such a case, it does fall back to putting the whole key in
-the filename:
-"bar.variant-SHA256-s2550--2c09deac21fa93607be0844fefa870b2878a304a7714684c4cc8f800fda5e16b.png"
-
-Still need to hook this code into `git annex assistant`.
diff --git a/doc/design/assistant/blog/day_190-191__weekend.mdwn b/doc/design/assistant/blog/day_190-191__weekend.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_190-191__weekend.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Pushed out a release yesterday mostly for a bug fix. I have to build
-git-annex 5 times now when releasing. Am wondering if I could get rid of
-the Linux 64 bit standalone build. The 32 bit build should run ok on 64 bit
-Linux systems, since it has all its own 32 bit libraries. What I really
-need to do is set up autobuilders for Linux and Android, like we have for OSX.
-
-Today, dealt with all code that creates or looks at symlinks. Audited every
-bit of it, and converted all relevant parts to use a new abstraction layer
-that handles the pseudolink files git uses when core.symlinks=false.
-This is untested, but I'm quite happy with how it turned out.
-
-----
-
-Where next for Android? I want to spend a while testing command-line
-git-annex. After I'm sure it's really solid, I should try to get the webapp
-working, if possible.
-
-I've heard rumors that Ubuntu's version of ghc somehow supports template
-haskell on arm, so I need to investigate that. If I am unable to get
-template haskell on arm, I would need to either wait for further
-developments, or try to expand yesod's template haskell to regular haskell
-and then build it on arm, or I could of course switch away from hamlet
-(using blaze-html instead is appealing in some ways) and
-use yesod in non-template-haskell mode entirely. One of these will work,
-for sure, only question is how much pain.
-
-After getting the webapp working, there's still the issue of bundling it
-all up in an Android app that regular users can install.
diff --git a/doc/design/assistant/blog/day_192_193__more_porting.mdwn b/doc/design/assistant/blog/day_192_193__more_porting.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_192_193__more_porting.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-Felt spread thin yesterday, as I was working on multiple things
-concurrently & bouncing around as compiles finished. Been working to get
-openssh to build for Android, which is quite a pain, starting with getting
-openssl to build and then dealing with the Cyanogenmod patches, some of
-which are necessary to build on Android and some of which break builds
-outside Cyanogenmod. At the same time was testing git-annex on Android.
-Found and fixed several more portability bugs while doing that. And on the
-back burner I was making some changes to the webapp..
-
-(Forgot to commit my blog post yesterday too..)
-
-Today, that all came together.
-
-* When adding another local repository in the webapp, 
-  it now allows you to choose whether it should be combined with
-  your current repository, or kept separate. Several people had requested
-  a way to add local clones with the webapp, for various reasons, like
-  wanting a backup repository, or wanting to make a repository on a NFS
-  server, and this allows doing that.
-
-[[!img /assistant/combinerepos.png]]
-
-* More porting fun. FAT filesystems and other things used on Android can
-  get all new inode numbers each time mounted. Made git-annex use a
-  sentinal file to detect when this has happened, since in direct mode
-  it compares inodes. (As a bonus this also makes copying direct mode
-  repositories between filesystems work.)
-
-* Got openssh building for Android. Changed it to use $HOME/.ssh rather
-  than trusting pwent.
-
-* Got git-annex's ssh connection caching working on Android. That needs
-  a place where it can create a socket. When the
-  repository is on a crippled filesystem, it instead puts the socket
-  in a temporary directory set up on the filesystem where the git-annex
-  program resides.
-
-With ssh connection caching, transferring multiple files off my Android
-tablet *screams*! I was seeing 6.5 megabytes transferred per second,
-sustained over a whole month's worth of photos.
-
-Next problem: `git annex assistant` on Android is for some reason crashing
-with a segfault on startup. Especially odd since `git annex watch` works.
-I'm so close to snap-photo-and-it-syncs-nirvana, but still so far away...
diff --git a/doc/design/assistant/blog/day_194__nice_moment.mdwn b/doc/design/assistant/blog/day_194__nice_moment.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_194__nice_moment.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-<video controls src="http://downloads.kitenet.net/videos/git-annex-android.ogv" width="100%"></video>
-<a href="http://downloads.kitenet.net/videos/git-annex-android.ogv">video</a>
-
-Today's work:
-
-* Fixed `git annex add` of a modified file in direct mode.
-* Fixed bugs in the inode sentinal file code added yesterday.
-* With some help from Kevin Boone, I now understand how KBOX works and
-  how to use similar techniques to build my own standalone Android app
-  that includes git-annex.
-
-  Kevin is using a cute hack; he ships a tarball and some other stuff
-  as (pseudo-)library files (`libfoo.so`), which are the only files
-  the Android package manager deigns to install. Then the app runs one
-  of these, which installs the programs.
-
-  This avoids needing to write Java code that extracts the programs from
-  one of its assets and writes it to an executable file, which is the
-  canonical way to do this sort of thing. But I noticed it has a benefit too
-  (which KBOX does not yet exploit). Since the pseudo-library file is installed
-  with the X bit set, if it's really a program, such as busybox or git-annex,
-  that program can be run without needing to copy it to an executable file.
-  This can save a lot of disk space. So, I'm planning to include all
-  the binaries needed by git-annex as these pseudo-libraries.
-* Got the Android Terminal Emulator to build. I will be basing my first
-  git-annex Android app on this, since a terminal is needed until there's 
-  a webapp.
-* Wasted several hours fighting with `Android.mk` files to include
-  my pseudo shared library. This abuse of Makefiles by the NDK is what CDBS
-  wants to grow up to be.. or is it the other way around? Anyway, it
-  sucks horribly, and I finally found a way to do it without
-  modifying the file at all. Ugh.
-* At this point, I can build a `git-annex.apk` file containing a
-  `libgit-annex.so`, and a `libbusybox.so`, that can both be directly
-  run. The plan from here is to give git-annex the ability to
-  auto-install itself, and the other pseudo-libraries, when it's run as
-  `libgit-annex.so`.
diff --git a/doc/design/assistant/blog/day_195__real_android_app.mdwn b/doc/design/assistant/blog/day_195__real_android_app.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_195__real_android_app.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Well, it's built. [Real Android app for git-annex](http://downloads.kitenet.net/git-annex/android/current/).
-
-[[!img /android/appinstalled.png]]
-
-When installed, this will open a terminal in which you have access to
-git-annex and all the git commands and busybox commands as well. No webapp
-yet, but command line users should feel right at home.
-
-[[!img /android/terminal.png]]
-
-Please test it out, at least as far as installing it, opening the terminal,
-and checking that you can run `git annex`; I've only been able to test on
-one Android device so far. I'm especially keen to know if it works with
-newer versions of Android than 4.0.3. (I know it only supports arm based
-Android, no x86 etc.) Please comment if you tried it.
-
-----
-
-Building this went mostly as planned, although I had about 12 builds of
-the app in the middle which crashed on startup with no error message ora
-logs. Still, it took only one day to put it all together,
- and I even had time to gimp up a quick icon. (Better icons welcome.)
-
-Kevin thinks that my space-saving hack won't work on all Androiden, and he
-may be right. If the `lib` directory is on a different filesystem on some
-devices, it will fail. But I used it for now anyhow. Thanks to the hack,
-the 7.8 mb compressed .apk file installs to use around 23 mb of disk space.
-
-----
-
-Tomorrow: Why does `git-annex assistant` on Android re-add all existing
-files on startup?
diff --git a/doc/design/assistant/blog/day_196__android_bugfixes.mdwn b/doc/design/assistant/blog/day_196__android_bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_196__android_bugfixes.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-So it seems the Android app works pretty well on a variety of systems.
-Only report of 100% failure so far is on Cyanogenmod 7.2 (Android 2.3.7).
-
-Worked today on some of the obvious bugs.
-
-* Turns out that getEnvironment is broken on Android, returning no
-  environment, which explains the weird git behavior where it complains
-  that it cannot determine the username and email (because it sees no USER
-  or HOST), and suggests setting them in the global git config (which it
-  ignores, because it sees no HOME). Put in a work around for this
-  that makes `git annex init` more pleasant, and opened a bug report on
-  ghc-android.
-* Made the Android app detect when it's been upgraded, and re-link all
-  the commands, etc.
-* Fixed the bug that made `git-annex assistant` on Android re-add all
-  existing files on startup.
-* Enabled a few useful things in busybox. Including vi.
-* Replaced the service notification icon with one with the git-annex logo.
-* Made the terminal not close immediately when the shell exits, which
-  should aid in debugging of certain types of crashes.
-
-I want to set up an autobuilder for Android, but to do that I need to
-install all the haskell libraries on my server. Since getting them built
-for Android involved several days of hacking the first time, this will
-be an opportunity to make sure I can replicate that. Hopefully in less time.
-;)
diff --git a/doc/design/assistant/blog/day_197__template_haskell.mdwn b/doc/design/assistant/blog/day_197__template_haskell.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_197__template_haskell.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Set up an autobuilder for the linux standalone binaries.
-Did not get an Android autobuilder set up yet, but I did update
-the Android app with recent improvements, so [[upgrade|install/Android]].
-
-----
-
-Investigated further down paths to getting the webapp built for Android.
-
-* Since recent ghc versions support ghci and thus template haskell on arm,
-  at least some of the time, I wonder what's keeping the ghc-android build
-  from doing so? It might be due to it being a cross compiler. I tried
-  recompiling it with the stage 2, native compiler enabled. While I was
-  able to use that ghc binary on Android, it refused to run --interactive,
-  claiming it was not built with that enabled. Don't really understand
-  the ghc build system, so might have missed something.
-
-  Maybe I need to recompile ghc using the native ghc running on Android.
-  But that would involve porting gcc and a lot of libraries and toolchain
-  stuff to Android.
-
-* [yesod-pure](http://hackage.haskell.org/package/yesod-pure) is an option,
-  and I would not mind making all the code changes to use it, getting
-  rid of template haskell entirely. (Probably around 1 thousand lines of
-  code would need to be written, but most of it would be trivial
-  conversion of hamlet templates.)
-  
-  Question is, will yesod install at all without template haskell? Not
-  easily. `vector`, `monad-logger`, `aeson`, `shakespeare`,
-  `shakespeare-css`, `shakespeare-js`, `shakespeare-i18n`, `hamlet`
-  all use TH at build time. Hacked them all to just remove the TH parts.
-
-  The hack job on `yesod-core` was especially rough, involving things like
-  404 handlers. Did get it to build tho!
-
-  Still a dozen packages before I can build yesod, and then will try 
-  building [this yesod-pure demo](https://gist.github.com/snoyberg/3870834/raw/212f0164de36524291df3ab35788e2b72d8d1e75/fib.hs).
diff --git a/doc/design/assistant/blog/day_198__bugfixes.mdwn b/doc/design/assistant/blog/day_198__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_198__bugfixes.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Wrote a C shim to get the Android app started. This avoids it relying on
-the Android /system/bin/sh to run its shell script, or indeed relying on
-any unix utilities from Android at all, which may help on some
-systems. Pushed a new build of the Android app.
-
-Tracked down a failure a lot of people are reporting with WebDAV support
-to a backported security fix in the TLS library, and filed an upstream bug
-about it.
-
-Various other misc fixing and stuff.
-My queue of bug reports and stuff only has 47 items in it now. Urk..
diff --git a/doc/design/assistant/blog/day_199__wrapping_up_Android_for_now.mdwn b/doc/design/assistant/blog/day_199__wrapping_up_Android_for_now.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_199__wrapping_up_Android_for_now.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-An Android autobuilder is now set up to run nightly. At this point
-I don't see an immediate way to getting the webapp working on Android, so
-it's best to wait a month or two and see how things develop in Haskell land.
-So I'm moving on to other things.
-
-Today:
-
-* Fixed a nasty regression that made `*` not match files in subdirectories.
-  That broke the preferred content handling, among other things. I will
-  be pushing out a new release soon.
-* As a last Android thing (for now), made the Android app automatically
-  run `git annex assistant --autostart` , so you can manually set up
-  an assistant-driven repository on Android, listing the repository in
-  `.config/git-annex/autostart`
-* Made the webapp display any error message from `git init` if it fails.
-  This was the one remaining gap in the logging.
-  One reason it could fail is if the system has a newer git in use, and
-  `~/.gitconfig` is configured with some options the older git bundled
-  with git-annex doesn't like.
-* Bumped the major version to 4, and annex.version will be set to 4 in
-  new direct mode repositories. (But version 3 is otherwise still used, to
-  avoid any upgrade pain.) This is to prevent old versions that don't
-  understand direct mode from getting confused. I hope direct mode is
-  finally complete, too, after the work to make it work on crippled
-  filesystems this month.
-* Misc other bugfixes etc. Backlog down to 43.
diff --git a/doc/design/assistant/blog/day_19__random_improvements.mdwn b/doc/design/assistant/blog/day_19__random_improvements.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_19__random_improvements.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-Random improvements day..
-
-Got the merge conflict resolution code working in `git annex assistant`.
-
-Did some more fixes to the pushing and pulling code, covering some cases
-I missed earlier. 
-
-Git syncing seems to work well for me now; I've seen it recover
-from a variety of error conditions, including merge conflicts and repos
-that were temporarily unavailable.
-
-----
-
-There is definitely a MVar deadlock if the merger thread's inotify event
-handler tries to run code in the Annex monad. Luckily, it doesn't
-currently seem to need to do that, so I have put off debugging what's going
-on there.
-
-Reworked how the inotify thread runs, to avoid the two inotify threads
-in the assistant now from both needing to wait for program termination,
-in a possibly conflicting manner.
-
-Hmm, that *seems* to have fixed the MVar deadlock problem.
-
-----
-
-Been thinking about how to fix [[bugs/watcher_commits_unlocked_files]].
-Posted some thoughts there.
-
-It's about time to move on to data [[syncing]]. While eventually that will
-need to build a map of the repo network to efficiently sync data over the
-fastest paths, I'm thinking that I'll first write a dumb version. So, two
-more threads:
-
-1. Uploads new data to every configured remote. Triggered by the watcher
-   thread when it adds content. Easy; just use a `TSet` of Keys to send.
-
-2. Downloads new data from the cheapest remote that has it. Could be 
-   triggered by the
-   merger thread, after it merges in a git sync. Rather hard; how does it
-   work out what new keys are in the tree without scanning it all? Scan
-   through the git history to find newly created files? Maybe the watcher
-   triggers this thread instead, when it sees a new symlink, without data,
-   appear.
-
-Both threads will need to be able to be stopped, and restarted, as needed
-to control the data transfer. And a lot of other control smarts will
-eventually be needed, but my first pass will be to do a straightforward
-implementation. Once it's done, the git annex assistant will be basically
-usable.
diff --git a/doc/design/assistant/blog/day_1__inotify.mdwn b/doc/design/assistant/blog/day_1__inotify.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_1__inotify.mdwn
+++ /dev/null
@@ -1,57 +0,0 @@
-First day of [Kickstarter funded work](http://www.kickstarter.com/projects/joeyh/git-annex-assistant-like-dropbox-but-with-your-own/)! 
-
-Worked on [[inotify]] today. The `watch` branch in git now does a pretty
-good job of following changes made to the directory, annexing files
-as they're added and staging other changes into git. Here's a quick
-transcript of it in action:
-
-	joey@gnu:~/tmp>mkdir demo
-	joey@gnu:~/tmp>cd demo
-	joey@gnu:~/tmp/demo>git init
-	Initialized empty Git repository in /home/joey/tmp/demo/.git/
-	joey@gnu:~/tmp/demo>git annex init demo
-	init demo ok
-	(Recording state in git...)
-	joey@gnu:~/tmp/demo>git annex watch &
-	[1] 3284
-	watch . (scanning...) (started)
-	joey@gnu:~/tmp/demo>dd if=/dev/urandom of=bigfile bs=1M count=2
-	add ./bigfile 2+0 records in
-	2+0 records out
-	2097152 bytes (2.1 MB) copied, 0.835976 s, 2.5 MB/s
-	(checksum...) ok
-	(Recording state in git...)
-	joey@gnu:~/tmp/demo>ls -la bigfile
-	lrwxrwxrwx 1 joey joey 188 Jun  4 15:36 bigfile -> .git/annex/objects/Wx/KQ/SHA256-s2097152--e5ced5836a3f9be782e6da14446794a1d22d9694f5c85f3ad7220b035a4b82ee/SHA256-s2097152--e5ced5836a3f9be782e6da14446794a1d22d9694f5c85f3ad7220b035a4b82ee
-	joey@gnu:~/tmp/demo>git status -s
-	A  bigfile
-	joey@gnu:~/tmp/demo>mkdir foo
-	joey@gnu:~/tmp/demo>mv bigfile foo
-	"del ./bigfile"
-	joey@gnu:~/tmp/demo>git status -s
-	AD bigfile
-	A  foo/bigfile
-
-Due to Linux's inotify interface, this is surely some of the most subtle,
-race-heavy code that I'll need to deal with while developing the git annex
-assistant. But I can't start wading, need to jump off the deep end to make
-progress!
-
-The hardest problem today involved the case where a directory is moved
-outside of the tree that's being watched. Inotify will still send events
-for such directories, but it doesn't make sense to continue to handle them.
-
-Ideally I'd stop inotify watching such directories, but a lot of state
-would need to be maintained to know which inotify handle to stop watching.
-(Seems like Haskell's inotify API makes this harder than it needs to be...)
-
-Instead, I put in a hack that will make it detect inotify events from
-directories moved away, and ignore them. This is probably acceptable,
-since this is an unusual edge case.
-
-----
-
-The notable omission in the inotify code, which I'll work on next, is
-staging deleting of files. This is tricky because adding a file to the
-annex happens to cause a deletion event. I need to make sure there are no
-races where that deletion event causes data loss.
diff --git a/doc/design/assistant/blog/day_200__release_day.mdwn b/doc/design/assistant/blog/day_200__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_200__release_day.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-As well as making a new release, I rewrote most of the Makefile, so that it
-uses cabal to build git-annex. This avoids some duplication, and most
-importantly, means that the Makefile can auto-detect available libraries
-rather than needing to juggle build flags manually. Which was becoming a
-real pain.
-
-I had avoided doing this before because cabal is slow for me on my little
-netbook. Adding ten seconds to every rebuild really does matter! But I came
-up with a hack to let me do incremental development builds without the
-cabal overhead, by intercepting and reusing the ghc command that cabal
-runs.
-
-There was also cabal "fun" to get the Android build working with cabal.
-And more fun involving building the test suite. For various reasons, I
-decided to move the test suite into the git-annex binary. So you can run
-`git annex test` at any time, any place, and it self-tests. That's a neat
-trick I've seen one or two other programs do, and probably the nicest thing
-to come out of what was otherwise a pretty yak shaving change that involved
-babysitting builds all day.
diff --git a/doc/design/assistant/blog/day_201__real_Android_wrapup.mdwn b/doc/design/assistant/blog/day_201__real_Android_wrapup.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_201__real_Android_wrapup.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-[[!meta title="day 201  real Android wrapup"]]
-
-I got yesod-pure fully working on Android...
-
-[[!img fib.png size=400x]]
-
-As expected, this involved manually splicing some template haskell. I'm now
-confident I can port the git-annex webapp to Android this way, and that it
-will take about a week. Probably will start on that in a month or so. If
-anyone has some spare Android hardware they'd like to loan me, possibly
-sooner. (Returning loaner Asus Transformer tomorrow; thanks Mark.) Although
-I'm inclined to let the situation develop; we may just get a ghc-android
-that supports TH..
-
-Also:
-
-* Fixed several bugs in the Android installation process.
-* Committed patches for all Haskell libraries I've modified to
-  the git-annex git repo.
-* Ran the test suite on Android. It found a problem; seems `git clone`
-  of a local repository is broken in the Android environment.
-
-Non-Android:
-
-* Made the assistant check every hour if logs have grown larger than a
-  megabyte, and rotate them to avoid using too much disk space.
-* Avoided noise in log about typechanged objects when running
-  git commit in direct mode repositories. Seems `git commit`
-  has no way to shut that up, so I had to /dev/null it.
-* When run with `--debug`, the assistant now logs more information
-  about why it transfers or drops objects.
-* Found and fixed a case where moving a file to an archive directory would
-  not cause its content to be dropped.
-* Working on a bug with the assistant where moving a file out of an 
-  archive directory in direct mode sometimes ends up with a symlink
-  rather than a proper direct mode file. Have not gotten to the bottom
-  of it entirely, but it's a race, and I think the race is between
-  the direct mode mapping being updated, and the file being transferred.
diff --git a/doc/design/assistant/blog/day_201__real_Android_wrapup/fib.png b/doc/design/assistant/blog/day_201__real_Android_wrapup/fib.png
deleted file mode 100644
Binary files a/doc/design/assistant/blog/day_201__real_Android_wrapup/fib.png and /dev/null differ
diff --git a/doc/design/assistant/blog/day_201__working_web_server.mdwn b/doc/design/assistant/blog/day_201__working_web_server.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_201__working_web_server.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Seems I am not done with the Android porting just yet after all. One more
-porting day..
-
-Last night I managed to get all of Yesod to build for Android.
-I even successfully expanded some Template Haskell used in yesod-form. And
-am fairly confident I could manually expand all the TH in there, so it's
-actually useable without TH. Most of the TH is just commented out for now.
-
-However, programs using Yesod didn't link; lots of missing symbols. I have
-been fighting to fix those all day today.
-
-Finally, I managed to build [the yesod-pure demo server](https://gist.github.com/snoyberg/3870834/raw/212f0164de36524291df3ab35788e2b72d8d1e75/fib.hs),
-and I have a working web server on Android! It listens for requests, it logs
-them correctly, and it replies to requests. I did cripple yesod's routing
-code in my hack-n-slash port of it, so it fails to *display* any pages,
-but never has "Internal Server Error" in a web browser been such a sweet
-sight. ;-)
-
-At this point, I estimate about 1 or 2 weeks work to get to an Android
-webapp. I'd need to:
-
-1. More carefully port Yesod, manually expanding all Template Haskell
-   as I went, rather than commenting it all out like I did this time.
-2. Either develop a tool to automatically expand Hamlet TH splices
-   (preferred; seems doable), or convert all the webapp's templates
-   to not use Hamlet.
-
------
-
-I've modified 38 Haskell libraries so far to port them to Android. Mostly
-small hacks, but eep this is a lot of stuff to keep straight.
diff --git a/doc/design/assistant/blog/day_203__procrastination.mdwn b/doc/design/assistant/blog/day_203__procrastination.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_203__procrastination.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Stuck on a bug or two, I instead built a new Preferences page:
-
-[[!img /assistant/preferences.png]]
-
-The main reason I wanted that was to allow enabling debug logging at
-runtime. But I've also wanted to expose annex.diskreserve and
-annex.numcopies settings to the webapp user. Might as well let them control
-whether it auto-starts too.
-
-Had some difficulty deciding where to put this. It could be considered
-additional configuration for the local repository, and so go in the
-local repository edit form. However, this stuff can only be configured for
-local repositories, and not remotes, and that same form is used to edit 
-remotes, which would lead to inconsistent UI and complicate the code.
-Also, it might grow to include things not tied to any repository,
-like choice of key/value backends. So, I put the preferences on their own
-page.
-
----
-
-Also, based on some useful feedback from testing the assistant with a large
-number of files, I made the assistant disable git-gc auto packing in
-repositories it sets up. (Like fsck, git-gc always seems to run exactly
-when you are in a hurry.) Instead, it'll pack at most once a day, and with
-a rather higher threshold for the number of loose objects.
diff --git a/doc/design/assistant/blog/day_204__deprocrastination.mdwn b/doc/design/assistant/blog/day_204__deprocrastination.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_204__deprocrastination.mdwn
+++ /dev/null
@@ -1,62 +0,0 @@
-Tracked down the bug that's been eluding me for days. It was indeed a race, and
-could result in a file being transferred into a direct mode repository and
-ending up in indirect mode. Was easy to fix once understood, just needed to
-update the direct mode mapping before starting the transfer.
-
-While I was in there, I noticed another potential race, also in direct
-mode, where the watcher could decide to rewrite a symlink to fix its
-target, and at just the wrong time direct mode content could arrive in its
-place, and so get deleted. Fixed that too.
-
-Seems likely there are some other direct mode races. I spent quite a while
-hammering on dealing with the indirect mode races with the assistant 
-originally.
-
------
-
-Next on my list is revisiting XMPP.
-
-Verified that git push over XMPP works between multiple repositories that
-are sharing the same XMPP account. It does.
-
-Seeing the XMPP setup process with fresh eyes, I found several places
-wording could be improved. Also, when the user goes in and configures 
-(or reconfigures) an XMPP account, the next step is to do pairing,
-so it now redirects directly to there.
-
-Next I need to make XMPP get back into sync after a network disconnection
-or when the assistant is restarted. This currently doesn't happen until
-a XMPP push is received due to a new change being made.
-
-### back burner: yesod-pure
-
-Last night I made a yesod-pure branch, and did some exploratory conversion
-away from using Hamlet, of the Preferences page I built yesterday.
-
-I was actually finding writing pure Blaze worked *better* than Hamlet,
-at first. Was able to refactor several things into functions that in Hamlet
-are duplicated over and over in my templates, and built some stuff that makes
-rendering type safe urls in pure Blaze not particularly ungainly. For example,
-this makes a submit button and a cancel button that redirects to another page:
-
-[[!format haskell """
-        buttons = toWidget $ \redir ->
-               "Save Preferences" <>|<> redir ConfigurationR []
-"""]]
-
-The catch is how to deal with widgets that need to be nested inside other
-html. It's not possible to do this both cleanly and maximally
-efficiently, with Blaze. For max efficiency, all the html before the widget
-should be emitted, and then the widget run, and then all html after it be
-emitted. To use Blaze, it would have to instead generate the full html,
-then split it around the widget, and then emit the parts, which is less
-efficient, doesn't stream, etc.
-
-I guess that's the core of what Hamlet does; it allows a clean
-representation and due to running TH at build time, can convert this into
-an efficient (but ugly) html emitter.
-
-So, I may give up on this experiment. Or I may make the webapp less than
-maximally fast at generating html and go on with it. After all, these
-sorts of optimisations are mostly aimed at high-volume websites, not local
-webapps.
diff --git a/doc/design/assistant/blog/day_205_206__rainy_day__snow_day.mdwn b/doc/design/assistant/blog/day_205_206__rainy_day__snow_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_205_206__rainy_day__snow_day.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Yesterday was all bug fixes, nothing to write about really.
-
-Today I've been working on getting XMPP remotes to sync more reliably.
-I left some big holes when I stopped work on it in November:
-
-1. The assistant did not sync with XMPP remotes when it started up.
-2. .. Or when it detected a network reconnection.
-3. There was no way to trigger a full scan for transfers
-   after receiving a push from an XMPP remote.
-
-The asynchronous nature of git push over XMPP complicated doing this, but
-I've solved all 3 issues today.
diff --git a/doc/design/assistant/blog/day_207__XMPP.mdwn b/doc/design/assistant/blog/day_207__XMPP.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_207__XMPP.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-More XMPP fixes. The most important change is that it now stores important
-messages, like push requests, and (re)sends them when a buddy's client
-sends XMPP presence. This makes XMPP syncing much more robust, all the
-clients do not need to already be connected when messages are initially
-sent, but can come and go. Also fixed a bug preventing syncing from working
-immediately after XMPP pairing. XMPP seems to be working well now; I only
-know of one minor bug.
diff --git a/doc/design/assistant/blog/day_208__bugfixes.mdwn b/doc/design/assistant/blog/day_208__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_208__bugfixes.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Fixed the last XMPP bug I know of. Turns out it was not specific to XMPP at
-all; the assistant could forget to sync with any repository on startup
-under certain conditions.
-
-Also fixed bugs in `git annex add` and in the glob matching, and some more.
-
-I've been working on some screencasts. More on them later.. But while doing
-them I found a perfect way to reliably reproduce the webapp hang that
-I've been chasing for half a year, and last saw at my presentation in
-Australia. Seems the old joke about bugs only reproducible during
-presentations is literally true here!
-
-I have given this bug its [[own page|bugs/webapp_hang]] at last, and have a
-tcpdump of it happening and everything. Am working on an hypotheses that it
-might be caused by Warp's [slowloris](http://ha.ckers.org/slowloris/)
-attack prevention code being falsely triggered by the repeated hits the web
-browser makes as the webapp's display is updated.
diff --git a/doc/design/assistant/blog/day_209__The_Bug.mdwn b/doc/design/assistant/blog/day_209__The_Bug.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_209__The_Bug.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-> And so we waited. Tick-tock, blink-blink, thirty seconds stretched
-> themselves out one by one, a hole in human experience. -- The Bug
-
-I *think* I've managed to fully track down the [[webapp_hang]]. It is,
-apparently, a bug in the Warp web server's code intended to protect against
-the [Slowloris](http://ha.ckers.org/slowloris/) attack. It assumes,
-incorrectly, that a web browser won't reuse a connection it's left idle for
-30 seconds. Some bad error handling keeps a connection open with no thread
-to service it, leading to the hang.
-<https://github.com/yesodweb/wai/issues/146>
-
-Have put a 30 minute timeout into place as a workaround, and, unless
-a web browser sits on an idle connection for a full 30 minutes and then
-tries to reuse it, this should be sufficient.
-
-I was chasing that bug, quietly, for 6 months. Would see it now and
-then, but not be able to reproduce it or get anywhere with analysis.
-I had nearly given up. If you enjoy stories like that, read Ellen
-Ullman's excellent book The Bug.
-
-> To discover that between the blinks of the machine’s shuttered eye—going
-> on without pause or cease; simulated, imagined, but still not caught—was
-> life.
diff --git a/doc/design/assistant/blog/day_20__data_transfer_design.mdwn b/doc/design/assistant/blog/day_20__data_transfer_design.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_20__data_transfer_design.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Today is a planning day. I have only a few days left before I'm off to
-Nicaragua for [DebConf](http://debconf12.debconf.org/), where I'll only
-have smaller chunks of time without interruptions. So it's important to get
-some well-defined smallish chunks designed that I can work on later. See
-bulleted action items below (now moved to [[syncing]]. Each
-should be around 1-2 hours unless it turns out to be 8 hours... :)
-
-First, worked on writing down a design, and some data types, for data transfer
-tracking (see [[syncing]] page). Found that writing down these simple data
-types before I started slinging code has clarified things a lot for me.
-
-Most importantly, I realized that I will need to modify `git-annex-shell`
-to record on disk what transfers it's doing, so the assistant can get that
-information and use it to both avoid redundant transfers (potentially a big
-problem!), and later to allow the user to control them using the web app.
-
-While eventually the user will be able to use the web app to prioritize
-transfers, stop and start, throttle, etc, it's important to get the default
-behavior right. So I'm thinking about things like how to prioritize uploads
-vs downloads, when it's appropriate to have multiple downloads running at
-once, etc.
-
diff --git a/doc/design/assistant/blog/day_210__spring.mdwn b/doc/design/assistant/blog/day_210__spring.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_210__spring.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Trying to record screencasts demoing the assistant is really helping me
-see things that need to be fixed.
-
-Got the version of the haskell TLS library in Debian fixed, backporting
-some changes to fix a botched security fix that made it reject all
-certificates. So WebDAV special remotes will work again on the next release.
-
-Fixed some more problems around content being dropped when files are
-moved to archive directories, and gotten again when files are
-moved out.
-
-Fixed some problems around USB drives. One was a real jaw-dropping
-bug: "git annex drop --from usbdrive" when the drive was not
-connected still updated the location log to indicate it did not have
-the file anymore! (Thank goodness for fsck..)
-
-I've noticed that moving around files in direct mode repos is inneficient,
-because the assistant re-checksums the "new" file. One way to avoid
-that would be to have a lookup table from (inode, size, mtime) to
-key, but I don't have one, and would like to avoid adding one.
-
-Instead, I have a cunning plan to deal with this heuristically. If the
-assistant can notice a file was removed and another file added at the same
-time, it can compare the (inode, size, mtime) to see if it's a rename, and
-avoid the checksum overhead.
-
-The first step to getting there was to make the assistant better at
-batching together delete+add events into a single rename commit. I'm happy
-to say I've accomplished that, with no perceptable delay to commits.
diff --git a/doc/design/assistant/blog/day_211__zooming_along.mdwn b/doc/design/assistant/blog/day_211__zooming_along.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_211__zooming_along.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Got renaming fully optimised in the assistent in direct mode. I even got it
-to work for whole directory renames. I can drag files around all day in the
-file manager and the assistant often finishes committing the rename before
-the file manager updates. So much better than checksumming every single
-renamed file! Also, this means the assistant makes just 1 commit when a
-whole directory is renamed.
-
-Last night I added a feature to `git annex status`. It can now be asked to
-only show the status of a single directory, rather than the whole annex.
-All the regular file filtering switches work, so some neat commands
-are possible. I like `git annex status . --in foo --not --in bar` to see
-how much data is in one remote but not another.
-
-This morning, an important thought about [[bugs/smarter_flood_filling]],
-that will avoid unnecessary uploads to transfer remotes when all that's
-needed to get the file to its destination is a transfer over the LAN.
-I found an easy way to make that work, at least in simple cases.
-Hoping to implement it soon.
-
-Less fun, direct mode turns out to be somewhat buggy when files with
-duplicate content are in the repository. Nothing fails, but `git annex
-sync` will re-checksum files each time it's run in this situation, and the
-assistant will re-checksum files in certian cases. Need to work on this
-soon too.
diff --git a/doc/design/assistant/blog/day_212__accidental_all_nighter.mdwn b/doc/design/assistant/blog/day_212__accidental_all_nighter.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_212__accidental_all_nighter.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Last night, revamped the web site, including making a [[/videos]]
-page, which includes a new screencast introducing the git-annex assistant.
-
-Worked on improving my Haskell development environment in vim.
-hdevtools is an excellent but tricky thing to get working. Where before
-it took around 30 seconds per compile for me to see type errors,
-I now see them in under a second each time I save, and can also look up
-types of any expression in the file. Since programming in Haskell is
-mostly driven by reacting to type errors ;) this should speed me up a lot,
-although it's not perfect. Unfortunatly, I got really caught up in tuning
-my setup, and only finished doing that at 5:48 am.
-
-Disasterously late this morning, fixed the assistant's
-`~/.ssh/git-annex-shell` wrapper so it will work when the ssh key does
-not force a command to be run. Also made the webapp behave better
-when it's told to create a git repository that already exists.
-
-After entirely too little sleep, I found a puzzling bug where copying files
-to a local repo fails once the inode cache has been invalidated. This
-turned out to involve running a check in the state monad of the wrong
-repository. A failure mode I'd never encountered before.
-
-Only thing I had brains left to do today was to record another screencast,
-which is rendering now...
diff --git a/doc/design/assistant/blog/day_213__costs.mdwn b/doc/design/assistant/blog/day_213__costs.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_213__costs.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Got the assistant to check again, just before starting a transfer, if
-the remote still wants the object. This should be all that's needed to
-handle the case where there is a transfer remote on the internet somewhere,
-and a locally paired client on the LAN. As long as the paired repository
-has a lower cost value, it will be sent any new file first, and if that
-is the only client, the file will not be sent to the transfer remote at
-all.
-
-But.. locally paired repos did not have a lower cost set, at all.
-So I made their cost be set to 175 when they're created. Anyone
-who already did local pairing should make sure the Repositories
-list shows locally paired repositories above transfer remotes.
-
-Which brought me to needing an easy way to reorder that list of remotes,
-which I plan to do by letting the user drag and drop remotes around,
-which will change their cost accordingly. Implementing that has two
-pain points:
-
-1. Often a lot of remotes will have the same default cost value.
-   So how to insert a remote in between two that have cost 100?
-   This would be easy if git-annex didn't have these cost numbers,
-   and instead just had an ordered list of remotes.. but it doesn't.
-   Instead, dragging remotes in the list will sometimes need to change
-   the costs of others, to make room to insert them in. It's BASIC
-   renumbering all over again. So I wrote some code to do this with as
-   little bother as possible.
-
-2. Drag and drop means javascript. I got the basics going quickly with
-   jquery-ui, only to get stuck for over an hour on some CSS issue
-   that made lines from the list display all weird while being dragged.
-   It is always something like this with javascript..
-
-So I've got these 2 peices working, and even have the AJAX call
-firing, but it's not quite wired up just yet. Tomorrow.
diff --git a/doc/design/assistant/blog/day_214__release_day.mdwn b/doc/design/assistant/blog/day_214__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_214__release_day.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Fighting with javascript all day and racing to get a release out. Unstuck
-the OSX and Android autobuilders. Got drag and drop repository list
-reordering working great. Tons of changes in this release!
-
-Also put up a new podcast.
diff --git a/doc/design/assistant/blog/day_215__dashboard_UI_refresh.mdwn b/doc/design/assistant/blog/day_215__dashboard_UI_refresh.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_215__dashboard_UI_refresh.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I've reworked the UI of the webapp's dashboard. Now the repository list is
-included, above the transfers. I found I was spending a lot of time
-switching between the dashboard and repository list, so might as well
-combine them into a single screen. Yesod's type safe urls and widgets
-made this quite easy to do, despite it being a thousand line commit.
-Liking the result ... Even though it does make all my screencasts dated.
-
-[[!img /assistant/dashboard.png]]
-
-----
-
-Rest of my time was spent on XMPP pairing UI. Using the same pages for both
-pairing with a friend and for self-pairing was confusing, so now the two
-options are split.
-
-Now every time an XMPP git push is received or sent, it checks if there's
-a cloud repository configured, which is needed to send the contents of
-files. If not, it'll display this alert. Hopefully this
-will be enough to get users fully set up.
-
-[[!img /assistant/cloudnudge.png]]
-
-At this point I'm finally happy enough with the XMPP pairing + cloud
-repository setup process to film a screencast of it. As soon as I have
-some time & bandwidth someplace quiet. Expect one by the end of the month.
diff --git a/doc/design/assistant/blog/day_216__more_bugfixes.mdwn b/doc/design/assistant/blog/day_216__more_bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_216__more_bugfixes.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-A long time ago I made Remote be an instance of the Ord typeclass, with an
-implementation that compared the costs of Remotes. That seemed like a good
-idea at the time, as it saved typing.. But at the time I was still making
-custom Read and Show instances too. I've since learned that this is *not* a
-good idea, and neither is making custom Ord instances, without deep thought
-about the possible sets of values in a type.
-
-This Ord instance came around and bit me when I put Remotes into a Set,
-because now remotes with the same cost appeared to be in the Set even if 
-they were not. Also affected putting Remotes into a Map. I noticed this
-when the webapp got confused about which Remotes were paused.
-
-Rarely does a bug go this deep. I've fixed it comprehensively, first
-removing the Ord instance entirely, and fixing the places that wanted to
-order remotes by cost to do it explicitly. Then adding back an Ord instance
-that is much more sane. Also by checking the rest of the Ord (and Eq) 
-instances in the code base (which were all ok).
-
-While doing that, I found lots of places that kept remotes in Maps and
-Sets. All of it was probably subtly broken in one way or another before
-this fix, but it would be hard to say exactly how the bugs would
-manifest.
-
------
-
-Also fought some with Google Talk today. Seem to be missing presence
-messages sometimes. Ugh. May have fixed it, but I've thought that before..
-
-Made --debug include a sanitized dump of the XMPP protocol.
-
-Made UI changes to encourage user to install git-annex on the server when
-adding a ssh server, rather than just funneling them through to rsync.
-
-Fixed UI glitches in XMPP username/password prompt.
-
-Switched all forms in the webapp to use POST, to avoid sensitive
-information leaking on the url bar.
-
-----
-
-Added an incremental backup group. Repositories in this group only want
-files that have not been backed up somewhere else yet.
diff --git a/doc/design/assistant/blog/day_217__nothing.mdwn b/doc/design/assistant/blog/day_217__nothing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_217__nothing.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Is what I planned to do on git-annex today. Instead I fixed several bugs,
-but I'm drawing the line at blogging. Oops.
diff --git a/doc/design/assistant/blog/day_219__bug_triage.mdwn b/doc/design/assistant/blog/day_219__bug_triage.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_219__bug_triage.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Triaged some of the older bugs and was able to close a lot of them.
-
------
-
-Should mention that I will be in Boston this weekend, attending
-[LibrePlanet 2013](http://libreplanet.org/wiki/LibrePlanet:Conference/2013).
-Drop by and find me, I'll have git-annex stickers! ;)
-
------
-
-Did some UI work on the webapp. Minor stuff, but stuff that needed to be
-fixed up. Like inserting zero-width spaces into filenames displayed in it
-so very long filenames always get reasonably wrapped by the browser.
-(Perhaps there's a better way to do that with CSS?)
diff --git a/doc/design/assistant/blog/day_21__transfer_tracking.mdwn b/doc/design/assistant/blog/day_21__transfer_tracking.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_21__transfer_tracking.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Worked today on two action items from my last blog post:
-
-* on-disk transfers in progress information files (read/write/enumerate)
-* locking for the files, so redundant transfer races can be detected,
-  and failed transfers noticed
-
-That's all done, and used by the `get`, `copy`, and `move` subcommands.
-
-Also, I made `git-annex status` use that information to display any
-file transfers that are currently in progress:
-
-	joey@gnu:~/lib/sound/misc>git annex status
-	[...]
-	transfers in progress: 
-		downloading Vic-303.mp3 from leech
-
-(Webapp, here we come!)
-
-However... Files being sent or received by `git-annex-shell` don't yet
-have this transfer info recorded. The problem is that to do so,
-`git-annex-shell` will need to be run with a `--remote=` parameter. But
-old versions will of course fail when run with such an unknown parameter.
-
-This is a problem I last faced in December 2011 when adding the `--uuid=`
-parameter. That time I punted and required the remote `git-annex-shell` be
-updated to a new enough version to accept it. But as git-annex gets more widely
-used and packaged, that's becoming less an option. I need to find a real
-solution to this problem.
diff --git a/doc/design/assistant/blog/day_220__performance.mdwn b/doc/design/assistant/blog/day_220__performance.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_220__performance.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-I've been running some large transfers with the assistant, and looking at
-ways to improve performance. (I also found and fixed a zombie process
-leak.)
-
-----
-
-One thing I noticed is that the assistant pushes changes to the git-annex
-location log quite frequently during a batch transfer. If the files being
-transferred are reasonably sized, it'll be pushing once per file transfer. 
-It would be good to reduce the number of pushes, but the pushes are
-important in some network topologies to inform other nodes
-when a file gets near to them, so they can get the file too.
-
-Need to see if I can find a smart way to avoid some of the pushes.
-For example, if we've just downloaded a file, and are queuing uploads
-of the file to a remote, we probably don't need to push the git-annex
-branch to the remote.
-
-----
-
-Another performance problem is that having the webapp open while transfers
-are running uses significant CPU just for the browser to update the progress
-bar. Unsurprising, since the webapp is sending the browser a new `<div>`
-each time. Updating the DOM instead from javascript would avoid that;
-the webapp just needs to send the javascript either a full `<div>` or a
-changed percentage and quantity complete to update a single progress bar.
-
-I'd prefer to wait on doing that until I'm able to use Fay to generate
-Javascript from Haskell, because it would be much more pleasant.. will see.
-
-----
-
-Also a performance problem when performing lots of transfers, particularly
-of small files, is that the assistant forks off a `git annex transferkey`
-for each transfer, and that has to in turn start up several git commands.
-
-Today I have been working to change that, so the assistant maintains a
-pool of transfer processes, and dispatches each transfer it wants to make
-to a process from the pool. I just got all that to build, although untested
-so far, in the `transferpools` branch.
diff --git a/doc/design/assistant/blog/day_221__this_and_that.mdwn b/doc/design/assistant/blog/day_221__this_and_that.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_221__this_and_that.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Was unsure yesterday if my transferrer pools code would just work, or
-would be horribly broken and need a lot of work to get going. It was a
-complex change involving both high-level STM code and low-level pipes and
-fds. Well, it almost worked 100% first time, I just had a minor issue in
-my fd setup to fix. Everything else seems to work perfectly.
-Very happy how that went!
-
-----
-
-Improved support and documentation for using the OSX app and Linux
-standalone tarball at the command line. Now it's sufficient to just put
-their directory into `PATH`, rather than using `runshell`.
-
-----
-
-The webapp's form for adding a removable drive now allows specifying the
-directory to use within the drive (default "annex").
-
-When the drive's repository already exists, and it's not a repository
-that git-annex knows about, it confirms that the user wants
-to combine its contents into their repository.
-
-
-(Should probably implement this same check when adding a ssh remote.)
-
-----
-
-Off to Boston!
diff --git a/doc/design/assistant/blog/day_222__back.mdwn b/doc/design/assistant/blog/day_222__back.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_222__back.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Back from my trip. Spent today getting caught up.
-
-Didn't do much while I was away. Pushed out a new release on Saturday.
-Made `git annex` usage display nicer.
-
-Fixed some minor webapp bugs today. The interesting bug was a
-race that sometimes caused alerts or other notifications to be
-missed and not be immediately displayed if they occurred while
-a page was loading. You sometimes had to hit reload to see them,
-but not anymore!
-
-Checked if the `push.default=simple` change in upcoming git release will
-affect git-annex. It shouldn't affect the assistant, or `git annex sync`,
-since they always list all branches to push explicitly. But if you `git push`
-manually, when the default changes that won't include the git-annex branch
-in the push any longer.
diff --git a/doc/design/assistant/blog/day_223__progress_revisited.mdwn b/doc/design/assistant/blog/day_223__progress_revisited.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_223__progress_revisited.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Went out and tried for the second time to record a screencast demoing
-setting up syncing between two computers using just Jabber and a cloud
-remote. I can't record this one at home, or viewers would think git-annex
-was crazy slow, when it's just my dialup. ;) But once again I encountered
-bugs, and so I found myself working on progress bars today, unexpectedly.
-
-Seems there was confusion in different parts of the progress bar code
-about whether an update contained the total number of bytes transferred, or
-the delta of bytes transferred since the last update. One way this bug
-showed up was progress bars that seemed to stick at 0% for a long time.
-Happened for most special remotes, although not for rsync or git remotes.
-In order to fix it comprehensively, I added a new BytesProcessed data type,
-that is explicitly a total quantity of bytes, not a delta. And checked and
-fixed all the places that used a delta as that type was knitted into
-the code.
-
-(Note that this doesn't necessarily fix every problem with progress bars.
-Particularly, buffering can now cause progress bars to seem to run ahead
-of transfers, reaching 100% when data is still being uploaded. Still,
-they should be a lot better than before.)
-
-I've just successfully run through the Jabber + Cloud remote setup process
-again, and it seems to be working great now. Maybe I'll still get the
-screencast recorded by the end of March.
diff --git a/doc/design/assistant/blog/day_224__annex.largefiles.mdwn b/doc/design/assistant/blog/day_224__annex.largefiles.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_224__annex.largefiles.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Built a feature for power users today. `annex.largefiles` can be
-configured to specify what files `git annex add` and the assistant should
-put into the annex. It uses the same syntax as [[/preferred_content]],
-so arbitrarily complex expressions can be built.
-
-For example, a game written in C with some large data files could
-include only 100kb or larger files, that are not C code:
-
-	annex.largefiles = largerthan=100kb and not (include=*.c or include=*.h) 
-
-The assistant will commit small files to git directly!
-`git annex add`, being a lower level tool, skips small files
-and leaves it up to you to `git add` them as desired.
-
-It's even possible to tell the assistant that no file is too large to be
-committed directly to git. `git config annex.largefiles 'exclude=*'`
-The result should be much like using SparkleShare or dvcs-autosync.
-
------
-
-Also today, made the remote ssh server checking code in the webapp
-deal with servers where the default shell is csh or some other non-POSIX
-shell.
diff --git a/doc/design/assistant/blog/day_225__back_from_the_dead.mdwn b/doc/design/assistant/blog/day_225__back_from_the_dead.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_225__back_from_the_dead.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-I've posted a poll: [[polls/goals_for_April]]
-
-----
-
-Today added UI to the webapp to delete repositories, which many
-users have requested. It can delete the local repository,
-with appropriate cautions and sanity checks:
-
-[[!img /assistant/deleterepository.png]]
-
-More likely, you'll use it to remove a remote, which is done with no muss
-and no fuss, since that doesn't delete any data and the remote can always
-be added back if you change your mind.
-
-It also has an option to fully delete the data on a remote. This doesn't
-actually delete the remote right away. All it does is marks the remote
-as untrusted[1], and configures it to not want any content.
-This causes all the content on it to be sucked off to whatever
-other repositories can hold it.
-
-I had to adjust the preferred content expressions to make that work. For
-example, when deleting an archive drive, your local (client) repository
-does not normally want to hold all the data it has in "archive"
-directories. With the adjusted preferred content expressions, any data on
-an untrusted or dead repository is wanted. An interesting result is that
-once a client repository has moved content from an untrusted remote, it
-will decide it doesn't want it anymore, and shove it out to any other
-remote that will accept it. Which is just the behavior we want. All it took
-to get all this behavior is adding "or (not copies=semitrusted:1)" to the
-preferred content expressions!
-
-For most special remotes, just sucking the data from them is sufficient to
-pretty well delete them. You'd want to delete an Amazon bucket or glacier
-once it's empty, and git repositories need to be fully deleted. Since this
-would need unique code for each type of special remote, and it would be
-code that a) deletes possibly large quantities of data with no real way to
-sanity check it and b) doesn't get run and tested very often; it's not
-something I'm thrilled about fully automating. However, I would like to
-make the assistant detect when all the content has been sucked out of a
-remote, and pop up at least a message prompting to finish the deletion.
-Future work.
-
------
-
-[1] I really, really wanted to mark it dead, but letting puns drive code
-is probably a bad idea. I had no idea I'd get here when I started
-developing this feature this morning.. Honest!
diff --git a/doc/design/assistant/blog/day_226__poll_results.mdwn b/doc/design/assistant/blog/day_226__poll_results.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_226__poll_results.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Both the assistant and `git annex drop --auto` refused to drop files from
-untrusted repositories. Got that fixed.
-
-Finally recorded the xmpp pairing screencast. In one perfect take, which
-somehow `recordmydesktop` lost the last 3 minutes of.
-Argh! Anyway I'm editing it now, so, look for that screencast soon.
-
-The [[polls/goals_for_April]] poll results are in. 
-
-* There have been no votes at all for working on
-  cloud remotes. Seems that git-annex supports enough cloud remotes already.
-* A lot of people want the Android webapp port to be done, so I will
-  probably spend some time on that this month.
-* Interest in other various features is split. I am surprised how many 
-  want git-remote-gcrypt, compared to the features that would make
-  syncing use less bandwidth. Doesn't git push over xmpp cover most
-  of the use cases where git-remote-gcrypt would need to be used with the
-  assistant?
-* Nearly as many people as want features, want me to work on bug
-  fixing and polishing what's already there.
-  So I should probably continue to make screencasts, since they often force
-  me to look at things with fresh eyes and see and fix problems. And of course,
-  continue working on bugs as they're reported.
-* I'm not sure what to make of the 10% who want me to add direct mode support.
-  Since direct mode is already used by default, perhaps they want
-  me to take time off? :) (I certainly need to fix the
-  [[bugs/Direct_mode_keeps_re-checksuming_duplicated_files]] bug, and one other
-  direct mode bug I discovered yesterday.)
diff --git a/doc/design/assistant/blog/day_227__bigfixing_all_day_today.mdwn b/doc/design/assistant/blog/day_227__bigfixing_all_day_today.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_227__bigfixing_all_day_today.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-The [[xmpp screencast|videos/git-annex_assistant_remote_sharing]]
-is at long last done!
-
-----
-
-Fixed a bug that could cause the assistant to unstage files
-from git sometimes. This happened because of a bad optimisation; adding a
-file when it's already present and unchanged was optimised to do nothing.
-But if the file had just been removed, and was put back, this resulted
-in the removal being staged, and the add not being staged. Ugly bug,
-although the assistant's daily sanity check automatically restaged the
-files.
-
-Underlying that bug was a more important problem: git-annex does not always
-update working tree files atomically. So a crash at just the wrong instant
-could cause a file to be deleted from the working tree. I fixed that too;
-all changes to files in the working tree should now be staged in a temp
-file, which is renamed into place atomically.
-
-Also made a bunch of improvements to the dashboard's transfer display, and
-to the handling of the underlying transfer queue.
diff --git a/doc/design/assistant/blog/day_228__more_work_on_repository_removals.mdwn b/doc/design/assistant/blog/day_228__more_work_on_repository_removals.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_228__more_work_on_repository_removals.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Getting back to the repository removal handling from Sunday, I made the
-assistant detect when a repository that has been marked as unwanted becomes
-empty, and finish the removal process.
-
-I was able to add this to the expensive transfer scan without making it any
-more expensive than it already was, since that scan already looks at the
-location of all keys. Although when a remote is detected as empty, it then
-does one more check, equivilant to `git annex unused`, to find any
-remaining objects on the remote, and force them off.
-
-I think this should work pretty well, but it needs some testing and
-probably some UI work.
-
-----
-
-Andy spotted a bug in the preferred content expressions I was using to
-handle untrusted remotes. So he saved me several hours dealing with an ugly
-bug at some point down the line. I had misread my own preferred content
-expression documentation, and `copies=semitrusted:1` was not doing what I
-thought it was. Added a new syntax that does what I need,
-`copies=semitrusted+:1`
-
-----
-
-The 64 bit linux standalone builds are back. Apparently the 32 bit builds
-have stopped working on recent Fedora, for reasons that are unclear. I set
-up an autobuilder to produce the 64 bit builds.
diff --git a/doc/design/assistant/blog/day_229__rainy_day_bugfixes.mdwn b/doc/design/assistant/blog/day_229__rainy_day_bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_229__rainy_day_bugfixes.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Got caught up on bug reports and made some bug fixes.
-
-The one bug I was really worried about, a strange file corruption problem
-on Android, turned out not to be a bug in git-annex. (Nor is it a bug that
-will affect regular users.)
-
-The only interesting bug fixed was a mixed case hash directory name
-collision when a repository is put on a VFAT filesystem (or other
-filesystem with similar semantics). I was able to fix that nicely; since
-such a repository will be in crippled filesystem mode due to other
-limitations of the filesystem, and so won't be using symlinks,
-it doesn't need to use the mixed case hash directory names.
-
-Last night, finished up the repository removal code, and associated UI
-tweaks. It works very well.
-
-Will probably make a release tomorrow.
diff --git a/doc/design/assistant/blog/day_22__horrible_option_parsing_hack.mdwn b/doc/design/assistant/blog/day_22__horrible_option_parsing_hack.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_22__horrible_option_parsing_hack.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Well, sometimes you just have to go for the hack. Trying to find a way
-to add additional options to git-annex-shell without breaking backwards
-compatibility, I noticed that it ignores all options after `--`, because
-those tend to be random rsync options due to the way rsync runs it.
-
-So, I've added a new class of options, that come in between, like
-`-- opt=val opt=val ... --`
-
-The parser for these will not choke on unknown options, unlike normal
-getopt. So this let me add the additional info I needed to
-pass to git-annex-shell to make it record transfer information. And
-if I need to pass more info in the future, that's covered too.
-
-It's ugly, but since only git-annex runs git-annex-shell, this is an
-ugliness only I (and now you, dear reader) have to put up with.
-
-Note to self: Command-line programs are sometimes an API, particularly
-if designed to be called remotely, and so it makes sense consider
-whether they are, and design expandability into them from day 1.
-
----
-
-Anyway, we now have full transfer tracking in git-annex! Both sides of
-a transfer know what's being transferred, and from where, and have
-the info necessary to interrupt the transfer.
-
----
-
-Also did some basic groundwork, adding a queue of transfers to perform,
-and adding to the daemon's status information a map of currently running
-transfers. 
-
-Next up: The daemon will use inotify to notice new and deleted transfer
-info files, and update its status info.
diff --git a/doc/design/assistant/blog/day_230__Mom.mdwn b/doc/design/assistant/blog/day_230__Mom.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_230__Mom.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-Made a release today. Releasing has sure gotten easier with all the
-autobuilds to use!
-
-I am now using git-annex to share files with my mom. Here's how the webapp
-looks for our family's repository. Soon several of us will be using this
-repository.
-
-[[!img assistant/example.png]]
-
-We're using XMPP and rsync.net, so pretty standard setup much like
-shown in my last screencast.
-
-Real-world deployments help find bugs, and I found a few:
-
-* If you're running the webapp in `w3m` on a remote computer to set it up,
-  some forms are lacking submit buttons. This must be a issue with
-  Bootstrap, or HTML5, I guess. I switched to `lynx` and it offers a
-  way to submit forms that lack an explicit button.
-
-* Progress bars for downloads from encrypted rsync repos don't update
-  during the actual download, but only when gpg is decrypting the
-  downloaded file.
-
-* XMPP pushes sometimes fail still. Especially when your mom's computer
-  is saturating its limited outgoing network connection uploading hundreds of
-  photos. I have not yet determined if this is a packet loss/corruption issue,
-  or if the XMPP messages are getting out of order. My gut feeling is it's
-  the latter, in which can I can fix this pretty easily by adding sequence
-  numbers and some buffering for out of order packets. Or perhaps just
-  make it retry failed pushes when this happens.
-  
-  Anyway, I found it was useful to set up a regular git repository on a
-  server to suppliment the git pushes over XMPP. It's helpful to have
-  such a git repository anyway, so that clients can push to there when the
-  other client(s) are not online to be pushed to directly over XMPP.
diff --git a/doc/design/assistant/blog/day_231__insert_title.mdwn b/doc/design/assistant/blog/day_231__insert_title.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_231__insert_title.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Finally fixed the bug causing repeated checksumming when a direct mode file
-contains duplicate files. I may need to add some cleaning of stale inode
-caches eventually.
-
-Meanwhile, Guilhem made `git annex initremote` use higher quality entropy,
-with `--fast` getting back to the old behavior of urandom quality entropy.
-The assistant doesn't use high quality entropy since I have no way to
-prompt when the user would need to generate more. I did have a fun idea to
-deal with this: Make a javascript game, that the user can play while
-waiting, which would generate enropy nicely. Maybe one day.. ;)
-
-Also made a small but significant change to [[archive directory handling|todo/assistant_smarter_archive_directory_handling]].
-Now the assistant syncs files that are in `archive` directories like any
-other file, until they reach an archive repository. Then they get dropped
-from all the clients. This way, users who don't set up archive repositories
-don't need to know about this special case, and users who do want to use
-them can, with no extra configuration.
-
-After recent changes, the preferred content expression for transfer
-repositories is becoming a bit unweidly, at 212 characters. Probably
-time to add support for macros..
-
-`(not (inallgroup=client and copies=client:2) and (((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) or (not copies=semitrusted+:1))) or (not copies=semitrusted+:1)`
-
-Still, it's pretty great how much this little language lets me express, so
-easily.
diff --git a/doc/design/assistant/blog/day_232__headless_webapp.mdwn b/doc/design/assistant/blog/day_232__headless_webapp.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_232__headless_webapp.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Developed a way to run the webapp on a remote or headless computer.
-
-The webapp can now be started on a remote or headless computer, just
-specify `--listen=address` to make it listen on an address other than
-localhost. It'll print out the URL to open to access it.
-
-This doesn't use HTTPS yet, because it'd need to generate a
-certificate, and even if it generated a self-signed SSL certificate,
-there'd be no easy way for the browser to verify it and avoid a MITM.
-
-So `--listen` is a less secure but easier option; using ssh to forward
-the webapp's port to the remote computer is more secure.
-
-(I do have an idea for a way to do this entirely securely, making
-the webapp set up the ssh port forwarding, which I have written down
-in [[webapp]].. but it would be rather complicated to implement.)
-
-----
-
-Made the webapp rescan for transfers after it's been used to change a
-repository's group. Would have been easy, but I had to chase down a
-cache invalidation bug.
diff --git a/doc/design/assistant/blog/day_233__taxes.mdwn b/doc/design/assistant/blog/day_233__taxes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_233__taxes.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Did my taxes today. Not very pretty. Planning to run them by a professional.
-
-Reproduced a bug that prevents git-annex from authenticating to the ejabberd
-server, and passed the buck upstream with a test case to the author of the
-haskell XMPP library.
-
-Added some animations to the webapp to show when it's busy doing things.
-
-Made `git annex webapp --listen=address:port` work.
-
-Added a `annex.web-download-command` setting.
diff --git a/doc/design/assistant/blog/day_234__clean_shutdown.mdwn b/doc/design/assistant/blog/day_234__clean_shutdown.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_234__clean_shutdown.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Short day because I spent 3 hours this morning explaining free software
-and kickstarter to an accountant. And was away until 3 pm, so how did I get
-all this done‽
-
-Eliot pointed out that shutting down the assistant could leave transfers
-running. This happened because `git annex transferkeys` is a separate
-process, and so it was left to finish up any transfer that was in
-process. I've made shutdown stop all transfers that the
-assistant started. (Other paired computers could still be connecting to
-make transfers even when the assistant is not running, and those are not
-affected.)
-
-Added sequence numbers to the XMPP messages used for git pushes. While
-these numbers are not used yet, they're available for debugging, and will
-help me determine if packets are lost or come out of order. So if you have
-experienced problems with XMPP syncing sometimes failing, run tonight's
-build of the assistant with `--debug` (or turn on debugging in the webapp
-configuration screen), and send me a log by email to
-<debuglogs201204@joeyh.name>
-
-Changed the way that autobuilds and manual builds report their version
-number. It now includes the date of the last commit, and the abbreviated
-commit ID, rather than being some random date after the last release.
-
-Frederik found a bug using the assistant on a FAT filesystem. It didn't
-properly handle the files that git uses to stand-in for symlinks in that
-situation, and annexed those files. I've fixed this, and even moving
-around symlink stand-in files on a FAT filesystem now results in correct
-changes to symlinks being committed.
diff --git a/doc/design/assistant/blog/day_235__birthday.mdwn b/doc/design/assistant/blog/day_235__birthday.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_235__birthday.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Felt like spending my birthday working on git-annex. Thanks again to
-everyone who makes it possible for me to work on something I care about
-every day.
-
-----
-
-Did some work on `git annex addurl` today. It had gotten broken in direct
-mode (I think by an otherwise good and important bugfix). After fixing
-that, I made it interoperate with the webapp. So if you have the webapp
-open, it will display progress bars for downloads being run by `git annex
-addurl`.
-
-This enhancement meshes nicely with a FlashGot script Andy
-contributed, which lets you queue up downloads into your annex from a web
-browser. Andy described how to set it up in
-[[this_tip|tips/Using_Git-annex_as_a_web_browsing_assistant]].
-
-(I also looked briefly into ways to intercept a drag and drop of a link
-into the webapp and make it lauch a download for you. It doesn't seem that
-browsers allow javascript to override their standard behavior of loading
-links that are dropped into them. Probably good to prevent misuse, but it
-would be nice here...)
-
-----
-
-Also, I think I have fixed the progress bars displayed when downloading
-a file from an encrypted remote. I did this by hooking up existing
-download progress metering (that was only being used to display
-a download percentage in the console) into the location log, so the
-webapp can use it. So that was a *lot* easier than it could have been,
-but still a pretty large patch (500+ lines). Haven't tested this; should work.
diff --git a/doc/design/assistant/blog/day_236__evil_splicer.mdwn b/doc/design/assistant/blog/day_236__evil_splicer.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_236__evil_splicer.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Spent today bulding the Evil Splicer, a program that parses `ghc -ddump-splices`
-output, and uses it to expand Template Haskell splices in source code.
-I hope to use this crazy hack to get the webapp working on Android.
-
-This was a good opportunity to use the
-[Parsec](http://hackage.haskell.org/package/parsec) library for parsing the
-ghc output. I've never really used it before, but found it quite nice to
-work with. The learning curve, if you already know monads and applicatives,
-is about 5 minutes. And instead of ugly regular expressions, you can work
-with nice code that's easily composable and refactorable. Even the ugly
-bits come out well:
-
-[[!format haskell """
-	{- All lines of the splice result will start with the same
-	- indent, which is stripped. Any other indentation is preserved. -}
-	i <- lookAhead indent
-	result <- unlines <$> many1 (string i >> restOfLine)
-"""]]
-
-Anyway, it works.. sorta. The parser works great! The splices that ghc
-outputs are put into the right places in the source files, and formatted in
-a way that ghc is able to build. Often though, they contain code that
-doesn't actually build as-is. I'm working to fix up the code to get closer
-to buildable.
-
-----
-
-Meanwhile, guilhem has made ssh connection caching work for rsync special
-remotes! It's very nice to have another developer working on git-annex. :)
diff --git a/doc/design/assistant/blog/day_237__gnome-keyring_craziness.mdwn b/doc/design/assistant/blog/day_237__gnome-keyring_craziness.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_237__gnome-keyring_craziness.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Fixed a bug where the locked down ssh key that the assistant sets up to
-access the annex on a remote server was being used by ssh *by default* for
-all logins to that server.
-
-That should not have happened. The locked down key is written to a filename
-that ssh won't use at all, by default. But, I found code in gnome-keyring
-that watches for `~/.ssh/*.pub` to appear, and automatically adds all such
-keys to the keyring. In at least some cases, probably when it has no other
-key, it then tells ssh to go ahead and use that key. Astounding.
-
-To avoid this, the assistant will store its keys in <s>`~/.ssh/annex/`</s>
-`~/.ssh/git-annex/` instead. gnome-keyring does not look there (verified in
-the source). If you use gnome-keyring and have set up a repository on a
-remote server with the assistant, I'd recommend moving the keys it set up
-and editing `~/.ssh/config` to point to their new location.
-
-gnome-keyring is not the only piece of software that has a bad
-interaction with git-annex. I've been working on a bug that makes git-annex
-fail to authenticate to ejabberd. ejabberd 2.1.10 got support for
-SCRAM-SHA-1, but its code violates the RFC, and chokes on an address
-attribute that the haskell XMPP library provides. I hope to get this fixed
-in ejabberd.
-
-
-Also did some more work on the Evil Splicer today, integrating it into the
-build of the Android app, and making it support incremental building.
-Improved its code generation, and am at the milestone where it creates
-valid haskell code for the entire `Assistant/WebApp/Types.hs` file,
-where Template Haskell expands 2 lines into 2300 lines of code!
diff --git a/doc/design/assistant/blog/day_238__back_to_Android.mdwn b/doc/design/assistant/blog/day_238__back_to_Android.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_238__back_to_Android.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Back to really working toward an Android webapp now. I have been improving
-the EvilSplicer, and the build machinery, and build environment all day.
-Slow but steady progress.
-
-First milestone of the day was when I got `yesod-form` to build with all
-Template Haskell automatically expanded by the EvilSplicer. (With a few
-manual fixups where it's buggy.)
-
-At this point the Android build with the webapp enabled successfully
-builds several files containing Yesod code.. And I suspect I am very close
-to getting a first webapp build for Android.
diff --git a/doc/design/assistant/blog/day_239__bugfixes_and_frustration.mdwn b/doc/design/assistant/blog/day_239__bugfixes_and_frustration.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_239__bugfixes_and_frustration.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Several bug fixes today, and got mostly caught up on recent messages.
-Still have a backlog of two known bugs that I cannot reproduce well enough
-to have worked on, but I am thinking I will make a release tomorrow. There
-have been a lot of changes in the 10 days since the last release.
-
-----
-
-I am, frustratingly, stuck building the webapp on Android with no forward
-progress today (and last night) after such a productive day yesterday.
-
-The expanded Template Haskell code of the webapp fails to compile,
-whereever type safe urls are used.
-
-<pre>
-Assistant/WebApp/Types.hs:95:63:
-    Couldn't match expected type `Route WebApp -> t2'
-                with actual type `Text'
-    The function `urender_a1qcK' is applied to three arguments,
-    but its type `Route WebApp -> [(Text, Text)] -> Text' has only two
-    In the expression: urender_a1qcK u_a1qcL [] LogR
-    In the first argument of `toHtml', namely
-      `(\ u_a1qcL -> urender_a1qcK u_a1qcL [] LogR)'
-</pre>
-
-My best guess is this is a mismatch between the versions of yesod (or other
-libraries) used for the native and cross compiled ghc's. So I've been
-slowly trying to get a fully matched set of versions in between working on
-bugs.
diff --git a/doc/design/assistant/blog/day_23__transfer_watching.mdwn b/doc/design/assistant/blog/day_23__transfer_watching.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_23__transfer_watching.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Starting to travel, so limited time today.
-
-Yet Another Thread added to the assistant, all it does is watch for changes
-to transfer information files, and update the assistant's map of transfers
-currently in progress. Now the assistant will know if some other repository
-has connected to the local repo and is sending or receiving a file's
-content.
-
-This seemed really simple to write, it's just 78 lines of code. It worked
-100% correctly the first time. :) But it's only so easy because I've got
-this shiny new inotify hammer that I keep finding places to use in the
-assistant.
-
-Also, the new thread does some things that caused a similar thread (the
-merger thread) to go into a MVar deadlock. Luckily, I spent much of 
-[day 19](day_19__random_improvements) investigating and fixing that
-deadlock, even though it was not a problem at the time.
-
-So, good.. I'm doing things right and getting to a place where rather
-nontrivial features can be added easily.
-
---
-
-Next up: Enough nonsense with tracking transfers... Time to start actually
-transferring content around!
diff --git a/doc/design/assistant/blog/day_240__it_builds.mdwn b/doc/design/assistant/blog/day_240__it_builds.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_240__it_builds.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Late last night, I successfully built the full webapp for Android!
-
-That was with several manual modifications to the generated code, which I
-still need to automate. And I need to set up the autobuilder properly
-still. And I need to find a way to make the webapp open Android's web browser
-to URL. So it'll be a while yet until a package is available
-to try. But what a milestone!
-
-The point I was stuck on all day yesterday was generated code that
-looked like this:
-
-[[!format haskell """
-(toHtml
-  (\ u_a2ehE -> urender_a2ehD u_a2ehE []
-    (CloseAlert aid)))));
-"""]]
-
-That just couldn't type check at all. Most puzzling. My best guess is that
-`u_a2ehE` is the dictionary GHC passes internally to make a typeclass work,
-which somehow leaked out and became visible. Although
-I can't rule out that I may have messed something up in my build environment.
-The EvilSplicer has a hack in it that finds such code and converts it to
-something like this:
-
-[[!format haskell """
-(toHtml
-  (flip urender_a2ehD []
-    (CloseAlert aid)))));
-"""]]
-
-I wrote some more about the process of the Android port in my personal blog:
-[Template Haskell on impossible architectures](http://joeyh.name/blog/entry/Template_Haskell_on_impossible_architectures/)
-
-----
-
-Release day today. The OSX builds are both not available yet for this
-release, hopefully will come out soon.
diff --git a/doc/design/assistant/blog/day_241__cleanup.mdwn b/doc/design/assistant/blog/day_241__cleanup.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_241__cleanup.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Finished the last EvilSplicer tweak and other fixes to make the 
-Android webapp build without any hand-holding.
-
-Currently setting up the Android autobuilder to include the webapp in its
-builds. To make this work I had to set up a new chroot with all the right
-stuff installed.
-
-Investigated how to make the Android webapp open a web browser when run.
-As far as I can tell (without access to an Android device right now), 
-`am start -a android.intent.action.VIEW -d http://localhost/etc` should do
-it.
-
-Seems that git 1.8.2 broke the assistant. I've put in a fix but have not
-yet tested it.
diff --git a/doc/design/assistant/blog/day_242__more_porting.mdwn b/doc/design/assistant/blog/day_242__more_porting.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_242__more_porting.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Got WebDAV enabled in the Android build. Had to deal with some system calls
-not available in Android's libc.
-
-New poll: [[polls/Android_default_directory]]
diff --git a/doc/design/assistant/blog/day_243__in_the_field.mdwn b/doc/design/assistant/blog/day_243__in_the_field.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_243__in_the_field.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Today was not a work day for me, but I did get a chance to install
-git-annex in real life while visiting. Was happy to download the standalone
-Linux tarball and see that it could be unpacked, and git-annex webapp
-started just by clicking around in the GUI. And in very short order got it
-set up.
-
-I was especially pleased to see my laptop noticed this new repository
-had appeared on the network via XMPP push, and started immediately
-uploading files to my rsync.net transfer repository so the new
-repository could get them.
-
-Did notice that the standalone tarball neglected to install a
-FDO menu file. Fixed that, and some other minor issues I noticed.
-
-
-I also got a brief chance to try the Android webapp. It fails to start;
-apparently `getaddrinfo` doesn't like the flags passed to it and is
-failing. As failure modes go, this isn't at all bad. I can certainly work
-around it with some hardcoded port numbers, but I want to fix it the right
-way. Have ordered a replacement battery for my dead phone so I can use it
-for Android testing.
diff --git a/doc/design/assistant/blog/day_244__android_porting.mdwn b/doc/design/assistant/blog/day_244__android_porting.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_244__android_porting.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Ported all the C libraries needed for XMPP to Android. (gnutls,
-libgcrypt, libgpg-error, nettle, xml2, gsasl, etc). Finally
-got it all to link. What a pain.
-
-Bonus: Local pairing support builds for Android now, seems recent changes to
-the network library for WebDAV also fixed it.
diff --git a/doc/design/assistant/blog/day_245__misc.mdwn b/doc/design/assistant/blog/day_245__misc.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_245__misc.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Got the OSX autobuilder back running, and finally got a OSX build up for
-the 4.20130417 release. Also fixed the OSX app build machinery to handle
-rpath.
-
-Made the assistant (and `git annex sync`) sync with git remotes that have
-`annex-ignore` set. So, `annex-ignore` is only used to prevent using
-the annex of a remote, not syncing with it. The benefit of this change
-is that it'll make the assistant sync the local git repository with
-a git remote that is on a server that does not have git-annex installed.
-It can even sync to github.
-
-Worked around more breakage on misconfigured systems that don't have GECOS
-information.
-
-... And other bug fixes and bug triage.
diff --git a/doc/design/assistant/blog/day_246__bug_treadmill.mdwn b/doc/design/assistant/blog/day_246__bug_treadmill.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_246__bug_treadmill.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-There seem to be a steady state of enough bug reports coming in that I can
-work on them whenever I'm not working on anything else. As I did all day
-today.
-
-This doesn't bother me if the bug reports are of real bugs that I can
-reproduce and fix, but I'm spending a lot of time currently following up to
-messages and asking simple questions like "what version number" and "can I
-please see the whole log file". And just trying to guess what a vague
-problem report means and read people's minds to get to a definite bug
-with a test case that I can then fix.
-
-I've noticed the overall quality of bug reports nosedive over the past
-several months. My guess is this means that git-annex has found a less
-technical audience. I need to find something to do about this.
-
-With that whining out of the way ...
-I fixed a pretty ugly bug on FAT/Android today, and
-I am 100% caught up on messages right now!
diff --git a/doc/design/assistant/blog/day_247__performance_tuning.mdwn b/doc/design/assistant/blog/day_247__performance_tuning.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_247__performance_tuning.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Working on assistant's performance when it has to add a whole lot of files
-(10k to 100k). 
-
-Improved behavior in several ways, including fixing display
-of the alert in the webapp when the default inotify limit of 8192
-directories is exceeded.
-
-Created a new TList data type, a transactional DList. Much nicer
-implementation than the TChan based thing it was using to keep track of the
-changes, although it only improved runtime and memory usage a little bit.
-The way that this is internally storing a function in STM and modifying
-that function to add items to the list is way cool.
-
-Other tuning seems to have decreased the time it would take to import 100k
-files from somewhere in the range of a full day (too long to wait to see),
-to around 3.5 hours. I don't know if that's good, but it's certainly better.
diff --git a/doc/design/assistant/blog/day_248__Internet_Archive.mdwn b/doc/design/assistant/blog/day_248__Internet_Archive.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_248__Internet_Archive.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Very productive & long day today, spent adding a new feature to the 
-webapp: Internet Archive support!
-
-[[!img /assistant/iaitem.png]]
-
-git-annex already supported using archive.org via its S3 special remotes,
-so this is just a nice UI around that.
-
-How does it decide which files to publish on archive.org? Well,
-the item has a unique name, which is based on the description
-field. Any files located in a directory with that name will be uploaded
-to that item. (This is done via a new preferred content expression I added.)
-
-So, you can have one repository with multiple IA items attached, and
-sort files between them however you like.
-I plan to make a screencast eventually demoing that. 
-
-Another interesting use case, once the Android webapp is done, would be add
-a repository on the DCIM directory, set the archive.org repository to
-prefer all content, and *bam*, you have a phone or tablet that
-auto-publishes and archives every picture it takes.
-
-Another nice little feature added today is that whenever a file is uploaded
-to the Internet Archive, its public url is automatically recorded, same
-as if you'd ran `git annex addurl`. So any users who can clone your
-repository can download the files from archive.org, without needing any
-login or password info. This makes the Internet Archive a nice way to
-publish the large files associated with a public git repository.
diff --git a/doc/design/assistant/blog/day_249__quiet_day.mdwn b/doc/design/assistant/blog/day_249__quiet_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_249__quiet_day.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Quiet day. Only did minor things, like adding webapp UI for changing the
-directory used by Internet Archive remotes, and splitting out an
-`enableremote` command from `initremote`.
-
-My Android development environment is set up and ready to go on my Motorola
-Droid. The current Android build of git-annex fails to link at run time, so
-my work is cut out for me. Probably broke something while enabling XMPP?
diff --git a/doc/design/assistant/blog/day_24__airport_digressions.mdwn b/doc/design/assistant/blog/day_24__airport_digressions.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_24__airport_digressions.mdwn
+++ /dev/null
@@ -1,99 +0,0 @@
-In a series of airport layovers all day. Since I woke up at 3:45 am, 
-didn't feel up to doing serious new work, so instead I worked through some
-OSX support backlog.
-
-git-annex will now use Haskell's SHA library if the `sha256sum`
-command is not available. That library is slow, but it's guaranteed to be
-available; git-annex already depended on it to calculate HMACs.
-
-Then I decided to see if it makes sense to use the SHA library
-when adding smaller files. At some point, its slower implementation should
-win over needing to fork and parse the output of `sha256sum`. This was 
-the first time I tried out Haskell's 
-[Criterion](http://hackage.haskell.org/package/criterion) benchmarker,
-and I built this simple benchmark in short order.
-
-[[!format haskell """
-import Data.Digest.Pure.SHA
-import Data.ByteString.Lazy as L
-import Criterion.Main
-import Common
-
-testfile :: FilePath
-testfile = "/tmp/bar" -- on ram disk
-
-main = defaultMain
-        [ bgroup "sha256"
-                [ bench "internal" $ whnfIO internal
-                , bench "external" $ whnfIO external
-                ]
-        ]
-
-internal :: IO String
-internal = showDigest . sha256 <$> L.readFile testfile
-
-external :: IO String
-external = pOpen ReadFromPipe "sha256sum" [testfile] $ \h ->
-        fst . separate (== ' ') <$> hGetLine h
-"""]]
-
-The nice thing about benchmarking in Airports is when you're running a
-benchmark locally, you don't want to do anything else with the computer,
-so can alternate people watching, spacing out, and analizing results.
-
-100 kb file:
-
-	benchmarking sha256/internal
-	mean: 15.64729 ms, lb 15.29590 ms, ub 16.10119 ms, ci 0.950
-	std dev: 2.032476 ms, lb 1.638016 ms, ub 2.527089 ms, ci 0.950
-
-	benchmarking sha256/external
-	mean: 8.217700 ms, lb 7.931324 ms, ub 8.568805 ms, ci 0.950
-	std dev: 1.614786 ms, lb 1.357791 ms, ub 2.009682 ms, ci 0.950
-
-75 kb file:
-
-	benchmarking sha256/internal
-	mean: 12.16099 ms, lb 11.89566 ms, ub 12.50317 ms, ci 0.950
-	std dev: 1.531108 ms, lb 1.232353 ms, ub 1.929141 ms, ci 0.950
-
-	benchmarking sha256/external
-	mean: 8.818731 ms, lb 8.425744 ms, ub 9.269550 ms, ci 0.950
-	std dev: 2.158530 ms, lb 1.916067 ms, ub 2.487242 ms, ci 0.950
-
-50 kb file:
-
-	benchmarking sha256/internal
-	mean: 7.699274 ms, lb 7.560254 ms, ub 7.876605 ms, ci 0.950
-	std dev: 801.5292 us, lb 655.3344 us, ub 990.4117 us, ci 0.950
-
-	benchmarking sha256/external
-	mean: 8.715779 ms, lb 8.330540 ms, ub 9.102232 ms, ci 0.950
-	std dev: 1.988089 ms, lb 1.821582 ms, ub 2.181676 ms, ci 0.950
-
-10 kb file:
-
-	benchmarking sha256/internal
-	mean: 1.586105 ms, lb 1.574512 ms, ub 1.604922 ms, ci 0.950
-	std dev: 74.07235 us, lb 51.71688 us, ub 108.1348 us, ci 0.950
-
-	benchmarking sha256/external
-	mean: 6.873742 ms, lb 6.582765 ms, ub 7.252911 ms, ci 0.950
-	std dev: 1.689662 ms, lb 1.346310 ms, ub 2.640399 ms, ci 0.950
-
-It's possible to get nice graphical reports out of Criterion, but 
-this is clear enough, so I stopped here. 50 kb seems a reasonable
-cutoff point.
-
-I also used this to benchmark the SHA256 in Haskell's Crypto package.
-Surprisingly, it's a *lot* slower than even the Pure.SHA code.
-On a 50 kb file:
-
-	benchmarking sha256/Crypto
-	collecting 100 samples, 1 iterations each, in estimated 6.073809 s
-	mean: 69.89037 ms, lb 69.15831 ms, ub 70.71845 ms, ci 0.950
-	std dev: 3.995397 ms, lb 3.435775 ms, ub 4.721952 ms, ci 0.950
-
-
-There's another Haskell library, [SHA2](http://hackage.haskell.org/package/SHA2),
-which I should try some time.
diff --git a/doc/design/assistant/blog/day_250__stymied.mdwn b/doc/design/assistant/blog/day_250__stymied.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_250__stymied.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Turns out my old Droid has such an old version of Android (2.2) that
-it doesn't work with any binaries produced by my haskell cross-compiler. I
-think it's using a symbol not in its version of libc. Since upgrading this
-particular phone is a ugly process and the hardware is dying anyway (bad
-USB power connecter), I have given up on using it, and ordered an Android
-tablet instead to use for testing. Until that arrives, no Android. Bah.
-Wanted to get the Android app working in April.
-
-Instead, today I worked on making the webapp require less redundant
-password entry when adding multiple repositories using the same cloud
-provider. This is especially needed for the Internet Archive, since users
-will often want to have quite a few repositories, for different IA items.
-Implemented it for box.com, and Amazon too.
-
-Francois Marier has built an Ubuntu PPA for git-annex, containing the
-current version, with the assistant and webapp. It's targeted at Precise,
-but I think will probably also work with newer releases.
-<https://launchpad.net/~fmarier/+archive/ppa>
-
-Probably while I'm waiting to work on Android again, I will try to
-improve the situation with using a single XMPP account for multiple
-repositories. Spent a while today thinking through ways to improve the
-design, and have some ideas.
diff --git a/doc/design/assistant/blog/day_251__xmpp_improvements.mdwn b/doc/design/assistant/blog/day_251__xmpp_improvements.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_251__xmpp_improvements.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Took 2 days in a row off, because I noticed I have forgotten to do that
-since February, or possibly earlier, not counting trips. Whoops!
-
-Also, I was feeling overwhelmed with the complexity of fixing XMPP to not
-be buggy when there are multiple separate repos using the same XMPP
-account. Let my subconscious work on that, and last night it served up the
-solution, in detail. Built it today.
-
-It's only a partial solution, really. If you want to use the same XMPP
-account for multiple separate repositories, you cannot use the "Share with
-your other devices" option to pair your devices. That's because XMPP
-pairing assumes all your devices are using the same XMPP account, in order
-to avoid needing to confirm on every device each time you add a new device.
-The UI is clear about that, and it avoids complexity, so I'm ok with that.
-
-But, if you want to instead use "Share with a friend", you now can use the
-same XMPP account for as many separate repositories as you like. The
-assistant now ignores pushes from repositories it doesn't know about.
-Before, it would merge them all together without warning.
-
-----
-
-While I was testing that, I think I found out the real reason why XMPP
-pushes have seemed a little unreliable. It turns out to not be an XMPP
-issue at all! Instead, the merger was simply not always
-noticing when `git receive-pack` updated a ref, and not merging it into
-master. That was easily fixed.
-
-----
-
-Adam Spiers has been getting a `.gitignore` query interface suitable for
-the assistant to use into `git`, and he tells me it's landed in `next`.
-I should soon check that out and get the assistant using it. But first,
-Android app!
diff --git a/doc/design/assistant/blog/day_252__release_day.mdwn b/doc/design/assistant/blog/day_252__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_252__release_day.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Pushed out a release today. Looking back over April, I'm happy with it as a
-bug fix and stabilization month. Wish I'd finished the Android app in April,
-but let's see what happens tomorrow.
-
-Recorded part of a screencast on using Archive.org, but `recordmydesktop`
-lost the second part. Grr. Will work on that later.
diff --git a/doc/design/assistant/blog/day_253__OMG.mdwn b/doc/design/assistant/blog/day_253__OMG.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_253__OMG.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!img /android/webapp.png alt="git-annex webapp on Android"]]
-
-I fixed what I thought was keeping the webapp from working on Android, but
-then it started segfaulting every time it was started. Eventually I
-determined this segfault happened whenever haskell code called
-`getaddrinfo`. I don't know why. This is particularly weird since I had
-a demo web server that used `getaddrinfo` working way back in
-[[day_201__real_Android_wrapup]]. Anyway, I worked around it by not using
-`getaddrinfo` on Android.
-
-Then I spent 3 hours stuck, because the webapp seemed to run, but
-nothing could connect to the port it was on. Was it a firewall? Was
-the Haskell threaded runtime's use of `accept()` broken? I went all the way
-down to the raw system calls, and back, only to finally notice I had `netstat`
-available on my Android. Which showed it was not listening to the port I
-thought it was!
-
-Seems that `ntohs` and `htons` are broken somehow. To get the
-screenshot, I fixed up the port manually. Have a build running that
-should work around the issue.
-
-Anyway, the webapp works on Android!
diff --git a/doc/design/assistant/blog/day_254__Android_app_polishing.mdwn b/doc/design/assistant/blog/day_254__Android_app_polishing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_254__Android_app_polishing.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-There's a new page [[/Android]] that documents using git-annex on Android
-in detail.
-
-The Android app now opens the webapp when a terminal window is opened.
-This is good enough for trying it out easily, but far from ideal.
-
-Fixed an EvilSplicer bug that corrupted newlines in 
-the static files served by the webapp. Now the icons in the webapp
-display properly, and the javascript works.
-
-Made the startup screen default to `/sdcard/annex` for the repository
-location, and also have a button to set up a camera repository. The camera
-repository is put in the "source" preferred content group, so it will only
-hang onto photos and videos until they're uploaded off the Android device.
-
-Quite a lot of other small fixes on Android. At this point I've tested the
-following works:
-
-* Starting webapp.
-* Making a repository, adding files.
-* All the basic webapp UI.
-
-However, I was not able to add any remote repository using only the webapp,
-due to some more problems with the network stack.
-
-* Jabber and Webdav don't quite work ("getProtocolByname: does not exist (no
-  such protocol name: tcp)").
-* SSH server fails.
-  ("Network/Socket/Types.hsc:(881,3)-(897,61): Non-exhaustive patterns in case")
-  I suspect it will work if I disable the DNS expansion code.
-
-So, that's the next thing that needs to be tackled.
-
-If you'd like to play with it in its current state, I've updated the
-Android builds to incorporate all my work so far.
diff --git a/doc/design/assistant/blog/day_255__Debian_release_day.mdwn b/doc/design/assistant/blog/day_255__Debian_release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_255__Debian_release_day.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Created a backport of the latest git-annex release for Debian 7.0 wheezy.
-Needed to backport a dozen haskell dependencies, but not too bad.
-This will be available in the backports repository once Debian
-starts accepting new packages again. I plan to keep the backport up-to-date
-as I make new releases.
-
-The cheap Android tablet I bought to do this last Android push with came
-pre-rooted from the factory. This may be why I have not seen this bug:
-[[bugs/Android_app_permission_denial_on_startup]]. If you have Android
-4.2.2 or a similar version, your testing would be helpful for me to know if
-this is a widespread problem. I have an idea about a way to work around the
-problem, but it involves writing Java code, and probably polling a file,
-ugh.
-
-Got S3 support to build for Android. Probably fails to work 
-due to the same network stack problems affecting WebDAV and Jabber.
-
-Got removable media mount detection working on Android. Bionic has an
-amusing stub for `getmntent` that prints out "FIX ME! implement
-getmntent()". But, `/proc/mounts` is there, so I just parse it.
-Also enabled the app's `WRITE_MEDIA_STORAGE` permission to allow
-access to removable media. However, this didn't seem to do anything. :(
-
-Several fixes to make the Android webapp be able to set up repositories on
-remote ssh servers. However, it fails at the last hurdle with what
-looks like a `git-annex-shell` communication problem. Almost there..
diff --git a/doc/design/assistant/blog/day_256__8bit.mdwn b/doc/design/assistant/blog/day_256__8bit.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_256__8bit.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-This seems a very auspicious day to have finally gotten the Android app
-doing something useful! I've fixed the last bugs with using it to set up a
-remote ssh server, which is all I need to make my Android tablet
-sync photos I take with a repository on my laptop.
-
-[[!img /android/DCIM.png alt="git-annex webapp running on Android"]]
-
-I set this up entirely in the GUI, except for needing to switch to the
-terminal twice to enter my laptop's password.
-
-How fast is it? Even several minute long videos transfer before I can
-switch from the camera app to the webapp. To get this screenshot with it in
-the process of syncing, I had to take a dozen pictures in a minute. Nice
-problem to have. ;)
-
-Have fun trying this out for yourself after tonight's autobuilds. But a
-warning: One of the bugs I fixed today had to be fixed in `git-annex-shell`,
-as run on the ssh server that the Android connects to. So the Android app
-will only work with ssh servers running a new enough version of git-annex.
-
-----
-
-Worked on geting git-annex into Debian testing, which is needed before
-the wheezy backport can go in. Think I've worked around most of the issues
-that were keeping it from building on various architectures.
-
-Caught up on some bug reports and fixed some of them.
diff --git a/doc/design/assistant/blog/day_257__rainy_day.mdwn b/doc/design/assistant/blog/day_257__rainy_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_257__rainy_day.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Put in a fix for `getprotobyname` apparently not returning anything for
-"tcp" on Android. This might fix all the special remotes there, but I don't
-know yet, because I have to rebuild a lot of Haskell libraries to try it.
-
-So, I spent most of today writing a script to build all the Haskell
-libraries for Android from scratch, with all my patches.
diff --git a/doc/design/assistant/blog/day_258__beginning_of_the_end.mdwn b/doc/design/assistant/blog/day_258__beginning_of_the_end.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_258__beginning_of_the_end.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Fixed a nasty bug that affects at least some FreeBSD systems. It misparsed
-the output of `sha256`, and thought every file had a SHA256 of "SHA256".
-Added multiple layers of protection against checksum programs not having
-the expected output format.
-
-Lots more building and rebuilding today of Android libs than I wanted to do.
-Finally have a completly clean build, which might be able to open TCP
-connections. Will test tomorrow.
-
-In the meantime, I fired up the evil twin of my development laptop.
-It's identical, except it runs Windows.
-
-I installed the Haskell Platform for Windows on it, and removed
-some of the bloatware to free up disk space and memory for development.
-While a rather disgusting experience, I certainly have a usable Haskell
-development environment on this OS a lot faster than I did on Android!
-Cabal is happily installing some stuff, and other stuff wants me to install
-Cygwin.
-
-So, the clock on my month of working on a Windows port starts now. Since
-I've already done rather a lot of ground work that was necessary for a
-Windows port (direct mode, crippled filesystem support), and for general
-sanity and to keep everything else from screeching to a halt, I plan to
-only spend half my time messing with Windows over the next 30 days.
diff --git a/doc/design/assistant/blog/day_259__Android_dominos_toppling.mdwn b/doc/design/assistant/blog/day_259__Android_dominos_toppling.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_259__Android_dominos_toppling.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-It all came together for Android today. Went from a sort of working app
-to a fully working app!
-
-* rsync.net works.
-* Box.com appears to work -- at least it's failing with the same
-  timeout I get on my linux box here behind the firewall of dialup doom.
-* XMPP is working too!
-
-These all needed various little fixes. Like loading TLS certificates from
-where they're stored on Android, and ensuring that totally crazy file
-permissions from Android (----rwxr-x for files?!) don't leak out into rsync
-repositories. Mostly though, it all just fell into place today.
-Wonderful..
-
-The Android autobuild is updated with all of today's work, so try it out.
diff --git a/doc/design/assistant/blog/day_25__transfer_queueing.mdwn b/doc/design/assistant/blog/day_25__transfer_queueing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_25__transfer_queueing.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-So as not to bury the lead, I've been hard at work on my first day in
-Nicaragua, and ** the git-annex assistant fully syncs files (including
-their contents) between remotes now !! **
-
-Details follow..
-
-Made the committer thread queue Upload Transfers when new files
-are added to the annex. Currently it tries to transfer the new content
-to *every* remote; this inefficiency needs to be addressed later.
-
-Made the watcher thread queue Download Transfers when new symlinks
-appear that point to content we don't have. Typically, that will happen
-after an automatic merge from a remote. This needs to be improved as it
-currently adds Transfers from every remote, not just those that have the
-content.
-
-This was the second place that needed an ordered list of remotes
-to talk to. So I cached such a list in the DaemonStatus state info.
-This will also be handy later on, when the webapp is used to add new
-remotes, so the assistant can know about them immediately.
-
-Added YAT (Yet Another Thread), number 15 or so, the transferrer thread
-that waits for transfers to be queued and runs them. Currently a naive
-implementation, it runs one transfer at a time, and does not do anything
-to recover when a transfer fails.
-
-Actually transferring content requires YAT, so that the transfer
-action can run in a copy of the Annex monad, without blocking
-all the assistant's other threads from entering that monad while a transfer
-is running. This is also necessary to allow multiple concurrent transfers
-to run in the future.
-
-This is a very tricky piece of code, because that thread will modify the
-git-annex branch, and its parent thread has to invalidate its cache in
-order to see any changes the child thread made. Hopefully that's the extent
-of the complication of doing this. The only reason this was possible at all
-is that git-annex already support multiple concurrent processes running
-and all making independent changes to the git-annex branch, etc.
-
-After all my groundwork this week, file content transferring is now
-fully working!
diff --git a/doc/design/assistant/blog/day_260__Windows_dev_environment.mdwn b/doc/design/assistant/blog/day_260__Windows_dev_environment.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_260__Windows_dev_environment.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-Set up my Windows development environment. For future reference, I've
-installed:
-
-* haskell platform for windows
-* cygwin
-* gcc and a full C toolchain in cygwin
-* git from upstream (probably git-annex will use this)
-* git in cygwin (the other git was not visible inside cygwin)
-* vim in cygwin
-* vim from upstream, as the cygwin vim is not very pleasant to use
-* openssh in cygwin (seems to be missing a ssh server)
-* rsync in cygwin
-* Everything that `cabal install git-annex` is able to install successfully.  
-  This includes all the libraries needed to build regular git-annex,
-  but not the webapp. Good start though.
-
-Result basically feels like a linux system that can't decide which way
-slashes in paths go. :P I've never used Cygwin before (I last used a
-Windows machine in 2003 for that matter), and it's a fairly impressive hack.
-
-----
-
-Fixed up git-annex's configure program to run on Windows (or, at least, in
-Cygwin), and have started getting git-annex to build.
-
-For now, I'm mostly stubbing out functions that use unix stuff. Gotten the
-first 44 of 300 source files to build this way.
-
-Once I get it to build, if only with stubs, I'll have a good
-idea about all the things I need to find Windows equivilants of.
-Hopefully most of it will be provided by
-<http://hackage.haskell.org/package/unix-compat-0.3.0.1>.
-
-----
-
-So that's the plan. There is a possible shortcut, rather than doing a full
-port. It seems like it would probably not be too hard to rebuild ghc inside
-Cygwin, and the resulting ghc would probably have a full POSIX emulation
-layer going through cygwin. From ghc's documentation, it looks like that's
-how ghc used to be built at some point in the past, so it would probably
-not be too hard to build it that way. With such a cygwin ghc, git-annex
-would probably build with little or no changes. However, it would be a
-git-annex targeting Cygwin, and not really a native Windows port. So
-it'd see Cygwin's emulated POSIX filesystem paths, etc. That
-seems probably not ideal for most windows users.. but if I get really stuck
-I may go back and try this method.
diff --git a/doc/design/assistant/blog/day_261__Windows_first_stage_complete.mdwn b/doc/design/assistant/blog/day_261__Windows_first_stage_complete.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_261__Windows_first_stage_complete.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-After working on it all day, git-annex now builds on Windows!
-
-Even better, `git annex init` works. So does `git annex status`, and
-probably more. Not `git annex add` yet, so I wasn't able to try much more.
-
-I didn't have to add many stubs today, either. Many of the missing Windows
-features were only used in code paths that made git-annex faster, but I
-could fall back to a slower code path on Windows.
-
-The things that are most problimatic so far:
-
-* POSIX file locking. This is used in git-annex in several places to 
-  make it safe when multiple git-annex processes are running. I put in
-  really horrible dotfile type locking in the Windows code paths, but I
-  don't trust it at all of course.
-* There is, apparently, no way to set an environment variable in Windows
-  from Haskell. It is only possible to set up a new process' environment
-  before starting it. Luckily most of the really crucial environment
-  variable stuff in git-annex is of this latter sort, but there were
-  a few places I had to stub out code that tries to manipulate git-annex's
-  own environment.
-
-The `windows` branch has a diff of 2089 lines. It add 88 ifdefs to the code
-base. Only 12 functions are stubbed out on Windows. This could be so much
-worse.
-
-Next step: Get the test suite to build. Currently ifdefed out because it
-uses some stuff like `setEnv` and `changeWorkingDirectory` that I don't know
-how to do in Windows yet.
diff --git a/doc/design/assistant/blog/day_262__DOS_path_separators.mdwn b/doc/design/assistant/blog/day_262__DOS_path_separators.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_262__DOS_path_separators.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-It's remarkable that a bad decision made in 1982 can cause me to waste an
-entire day in 2013. Yes, `/` vs `\` fun time. Even though I long ago
-converted git-annex to use the haskell `</>` operator wherever it builds
-up paths (which transparently handles either type of separator), I still
-spent most of today dealing with it. Including some libraries I use that
-get it wrong. Adding to the fun is that git uses `/` internally, even on
-Windows, so Windows separated paths have to be converted when being fed
-into git.
-
-Anyway, `git annex add` now works on Windows. So does `git annex find`,
-and `git annex whereis`, and probably most query stuff.
-
-Today was very un-fun and left me with a splitting headache, so I will
-certainly *not* be working on the Windows port tomorrow.
diff --git a/doc/design/assistant/blog/day_263_catching_up.mdwn b/doc/design/assistant/blog/day_263_catching_up.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_263_catching_up.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Spent some time today to get caught up on bug reports and website traffic.
-Fixed a few things.
-
-Did end up working on Windows for a while too. I got `git annex drop`
-working. But nothing that moves content quite works yet..
-
-I've run into a stumbling block with `rsync`. It thinks that
-`C:\repo` is a path on a ssh server named "C". Seems I will need to translate
-native windows paths to unix-style paths when running rsync.
-
-[[!meta date="13 May 2013"]]
diff --git a/doc/design/assistant/blog/day_264__Windows_second_stage_complete.mdwn b/doc/design/assistant/blog/day_264__Windows_second_stage_complete.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_264__Windows_second_stage_complete.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-The Windows port can now do everything in the [[walkthrough]]. It can use
-both local and remote git repositories. Some special remotes work
-(directory at least; probably rsync; likely any other special remote that
-can have its dependencies built). Missing features include most special
-remotes, gpg encryption, and of course, the assistant.
-
-Also built a NullSoft installer for git-annex today. This was made very
-easy when I found the Haskell ncis library, which provides a DSL embedding
-the language used to write NullSoft installers into Haskell. So I didn't
-need to learn a new language, yay! And could pull in all my helpful
-Haskell utility libraries in the program that builds the installer.
-
-The only tricky part was: How to get git-annex onto PATH? The standard way
-to do this seems to be to use a multiple-hundred line include file. Of
-course, that file does not have any declared license..  Instead of that,
-I used a hack. The git installer for Windows adds itself to PATH, and is
-a pre-requisite for git-annex. So the git-annex installer just installs
-it into the same directory as git.
-
-So.. I'll be including this first stage Windows port, with installer in
-the next release. Anyone want to run a Windows autobuilder?
diff --git a/doc/design/assistant/blog/day_265__correctness.mdwn b/doc/design/assistant/blog/day_265__correctness.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_265__correctness.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Laid some groundwork for porting the test suite to Windows, and getting it
-working in direct mode. That's not complete, but even starting to run the
-test suite in direct mode and looking at all the failures (many of them
-benign, like files not being symlinks) highlighted something
-I have been meaning to look into for quite a while: Why, in direct mode,
-`git-annex` doesn't operate on data staged in the index, but requires you
-commit changes to files before it'll see them. That's an annoying
-difference between direct and indirect modes.
-
-It turned out that I introduced this behavior back on
-[[January 5th|day_163__free_features]], working around a nasty
-bug I didn't understand. Bad Joey, should have root caused the bug at the
-time! But the commit says I was stuck on it for hours, and it was
-presenting as if it was a bug in `git cat-file` itself, so ok. Anyway,
-I quickly got to the bottom of it today, fixed the underlying bug (which 
-was in git-annex, not git itself), and got rid of the workaround and its
-undesired consequences. Much better.
-
-The test suite is turning up some other minor problems with direct mode.
-Should have found time to port it earlier.
-
-Also, may have fixed the issue that was preventing GTalk from working on
-Android. (Missing DNS library so it didn't do SRV lookups right.)
diff --git a/doc/design/assistant/blog/day_266__release_day.mdwn b/doc/design/assistant/blog/day_266__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_266__release_day.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Made a release.
-
-I am firming up some ideas for post-kickstarter. More on that later.
-
-In the process of setting up a Windows autobuilder, using the same
-jenkins installation that is used to autobuild msysgit.
diff --git a/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn b/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-git-annex is now autobuilt for Windows on the same Jenkins farm that
-builds msysgit. Thanks for Yury V. Zaytsev for providing that! Spent about
-half of today setting up the build.
-
-Got the test suite to pass in direct mode, and indeed in direct mode
-on a FAT file system. Had to fix one corner case in direct mode `git annex
-add`. Unfortunately it still doesn't work on Android; somehow `git clone` 
-of a local repository is broken there. Also got the test suite to build,
-and run on Windows, though it fails pretty miserably.
diff --git a/doc/design/assistant/blog/day_268__core_monad_change.mdwn b/doc/design/assistant/blog/day_268__core_monad_change.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_268__core_monad_change.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Today I had to change the implementation of the Annex monad. The old one
-turned out to be buggy around exception handling -- changes to state
-recorded by code that ran in an exception handler were discarded when it
-threw an exception. Changed from a StateT monad to a ReaderT with
-a MVar. Really deep-level change, but it went off without a
-hitch!
-
-Other than that it was a bug catch up day. Almost entirely caught up once
-more.
diff --git a/doc/design/assistant/blog/day_269__bugfixes.mdwn b/doc/design/assistant/blog/day_269__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_269__bugfixes.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Worked on several important bug fixes today. One affects automatic merge
-confict resolution, and can case data loss in direct mode, so I will be
-making a release with the fix tomorrow.
-
-Practiced TDD today, and good thing too. The new improved test suite
-turned up a really subtle bug involving the git-annex branch vector
-clocks-ish code, which I also fixed.
-
-Also, fixes to the OSX autobuilds. One of them had a broken gpg, which is
-now fixed. The other one is successfully building again. And, I'm switching
-the Linux autobuilds to build against Debian stable, since testing has a
-new version of libc now, which would make the autobuilds not work on older
-systems. Getting an amd64 chroot into shape is needing rather a lot
-of backporting of build dependencies, which I already did for i386.
diff --git a/doc/design/assistant/blog/day_26__dying_drives.mdwn b/doc/design/assistant/blog/day_26__dying_drives.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_26__dying_drives.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-My laptop's SSD died this morning. I had some work from yesterday
-committed to the git repo on it, but not pushed as it didn't build.
-Luckily I was able to get that off the SSD, which is now a read-only
-drive -- even mounting it fails with fsck write errors.
-
-Wish I'd realized the SSD was dying before the day before my trip to
-Nicaragua..
-Getting back to a useful laptop used most of my time and energy today.
-
-I did manage to fix transfers to not block the rest of the assistant's
-threads. Problem was that, without Haskell's threaded runtime, waiting
-on something like a rsync command blocks all threads. To fix this,
-transfers now are run in separate processes.
-
-Also added code to allow multiple transfers to run at once. Each transfer
-takes up a slot, with the number of free slots tracked by a `QSemN`.
-This allows the transfer starting thread to block until a slot frees up,
-and then run the transfer.
-
-This needs to be extended to be aware of transfers initiated by remotes.
-The transfer watcher thread should detect those starting and stopping 
-and update the `QSemN` accordingly. It would also be nice if transfers
-initiated by remotes would be delayed when there are no free slots for them
-... but I have not thought of a good way to do that.
-
-There's a bug somewhere in the new transfer code, when two transfers are
-queued close together, the second one is lost and doesn't happen.
-Would debug this, but I'm spent for the day.
diff --git a/doc/design/assistant/blog/day_270__release_and_xmpp.mdwn b/doc/design/assistant/blog/day_270__release_and_xmpp.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_270__release_and_xmpp.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-Got the bugfix release out.
-
-Tobias contributed [[tips/megaannex]], which allows using mega.co.nz as a
-special remote. Someone should do this with Flickr, using
-[filr](https://github.com/ricardobeat/filr). I have improved the
-[[special_remotes/hook]] special remote to make it easier to create
-and use reusable programs like megaannex.
-
-But, I am too busy rewriting lots of the XMPP code to join in the
-special remote fun. Spent all last night staring at protocol traces and
-tests, and came to the conclusion that it's working well at the basic
-communication level, but there are a lot of bugs above that level. This
-mostly shows up as one side refusing to push changes made to its tree,
-although it will happily merge in changes sent from the other side.
-
-The NetMessanger code, which handles routing messages to git commands and
-queuing other messages, seems to be just wrong. This is code I wrote in the
-fall, and have basically not touched since. And it shows. Spent 4 hours
-this morning rewriting it. Went all Erlang and implemented message inboxes
-using STM. I'm much more confident it won't drop messages on the
-floor, which the old code certainly did do sometimes.
-
-Added a check to avoid unnecessary pushes over XMPP. Unfortunately, this
-required changing the protocol in a way that will make previous versions of
-git-annex refuse to accept any pushes advertised by this version. Could not
-find a way around that, but there were so many unnecessary pushes happening
-(and possibly contributing to other problems) that it seemed worth the
-upgrade pain.
-
-Will be beating on XMPP a bit more. There is one problem I was seeing
-last night that I cannot reproduce now. It may have been masked or even
-fixed by these changes, but I need to verify that, or put in a workaround.
-It seemed that sometimes this code in `runPush` would run the setup
-and the action, but either the action blocked forever, or an exception
-got through and caused the cleanup not to be run.
-
-[[!format haskell """
-        r <- E.bracket_ setup cleanup <~> a
-"""]]
diff --git a/doc/design/assistant/blog/day_271__more_xmpp.mdwn b/doc/design/assistant/blog/day_271__more_xmpp.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_271__more_xmpp.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Tobias has been busy again today, creating a [[/tips/flickrannex]]
-special remote! Meanwhile, I'm thinking about providing a
-[[more complete interface|/todo/support_for_writing_external_special_remotes]]
-so that special remote programs not written in Haskell can do some of the
-things the hook special remote's simplicity doesn't allow.
-
-Finally realized last night that the main problem with the XMPP push code
-was an inversion of control. Reworked it so now there are two new threads,
-XMPPSendpack and XMPPReceivePack, each with their own queue of push
-initiation requests, that run the pushes. This is a lot easier to
-understand, probably less buggy, and lets it apply some smarts to squash
-duplicate actions and pick the best request to handle next.
-
-Also made the XMPP client send pings to detect when it has been disconnected
-from the server. Currently every 120 seconds, though that may change. Testing
-showed that without this, it did not notice (for at least 20 minutes) when 
-it lost routing to the server. Not sure why -- I'd think the TCP connections
-should break and this throw an error -- but this will also handle any idle
-disconnection problems that some XMPP servers might have.
-
-While writing that, I found myself writing this jem using
-[async](http://hackage.haskell.org/package/async), which has a comment
-much longer than the code, but basically we get 4 threads that are all
-linked, so when any dies, all do.
-
-[[!format haskell """
-pinger `concurrently` sender `concurrently` receiver
-"""]]
-
-Anyway, I need to run some long-running XMPP push tests to see if I've
-really ironed out all the bugs.
diff --git a/doc/design/assistant/blog/day_272__fuzz_tester.mdwn b/doc/design/assistant/blog/day_272__fuzz_tester.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_272__fuzz_tester.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-The Android app should work on some more devices now, where hard linking to
-busybox didn't work. Now it installs itself using symlinks.
-
-Pushed a point release so `cabal install git-annex` works again. And,
-I'm really happy to see that the 4.20130521 release has autobuilt on all
-Debian architectures, and will soon be replacing the old 3.20120629 version
-in testing. (Well, once a libffi transition completes..)
-
-TobiasTheMachine has done it again: [[tips/googledriveannex]]  
-
------
-
-I spent most of today building a fuzz tester for the assistant. `git annex
-fuzztest` will (once you find the special runes to allow it to run) create
-random files in the repository, move them around, delete them, move
-directory trees around, etc. The plan is to use this to run some long
-duration tests with eg, XMPP, to make sure the assistant keeps things
-in shape after a lot of activity. It logs in machine-readable format, 
-so if it turns up a bug I may even be able to use it to reproduce the same
-bug (fingers crossed).
-
-I was able to use QuickCheck to generate random data for some parts of the fuzz
-tester. (Though the actual file names it uses are not generated using
-QuickCheck.) Liked this part:
-
-[[!format haskell """
-instance Arbitrary FuzzAction where
-        arbitrary = frequency
-                [ (100, FuzzAdd <$> arbitrary)
-                , (10, FuzzDelete <$> arbitrary)
-                , (10, FuzzMove <$> arbitrary <*> arbitrary)
-                , (10, FuzzModify <$> arbitrary)
-                , (10, FuzzDeleteDir <$> arbitrary)
-                , (10, FuzzMoveDir <$> arbitrary <*> arbitrary)
-                , (10, FuzzPause <$> arbitrary)
-                ]
-"""]]
diff --git a/doc/design/assistant/blog/day_273-274__fun.mdwn b/doc/design/assistant/blog/day_273-274__fun.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_273-274__fun.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Got caught up on some bug reports yesterday. The main one was odd behavior
-of the assistant when the repository was in manual mode. A recent change to
-the preferred content expression caused it. But the expression was not
-broken. The problem was in the parser, which got the parentheses wrong
-in this case. I had to mostly rewrite the parser, unfortunately. I've tested
-the new one fairly extensively -- on the other hand this bug lurked in the
-old parser for several years (this same code is used for matching files
-with command-line parameters).
-
-Just as I finished with that, I noticed another bug. Turns out git-cat-file
-doesn't reload the index after it's started. So last week's changes to make
-git-annex check the state of files in the index won't work when using the
-assistant. Luckily there was an easy workaround for this.
-
-Today I finished up some robustness fixes, and added to the test suite
-checks for preferred content expressions, manual mode, etc.
-
-I've started a stress test, syncing 2 repositories over XMPP, with the fuzz
-tester running in each to create lots of changes to keep in sync.
diff --git a/doc/design/assistant/blog/day_275__working_hard_or.mdwn b/doc/design/assistant/blog/day_275__working_hard_or.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_275__working_hard_or.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Fuzz tester has found several interesting bugs that I've now fixed. It's
-even found a bug in my fixes. Most of the problems the fuzz testing has
-found have had to do with direct mode merges, and automatic merge conflict
-resoltion. Turns out the second level of automatic merge conflict
-resolution (where the changes made to resolve a merge conflict themselves
-turn out conflict in a later merge) was buggy, for example.
-
-So, didn't really work a lot today -- was not intending to work at all
-actually -- but have still accomplished a lot.
-
-(Also, Tobias contributed [[tips/dropboxannex]] .. I'll be curious to see
-what the use case for that is, if any!)
diff --git a/doc/design/assistant/blog/day_276__fuzzing_continues.mdwn b/doc/design/assistant/blog/day_276__fuzzing_continues.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_276__fuzzing_continues.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-The fuzz testing found a file descriptor leak in the XMPP git push code.
-The assistant seems to hold up under fuzzing for quite a while now.
-
-Have started trying to work around some versions of Android not letting 
-the `am` command be used by regular users to open a web browser on an URL.
-Here is my current crazy plan: Hack the terminal emulator's title setting
-code, to get a new escape sequence that requests an URL be opened. This
-assumes I can just use `startActivity()` from inside the app and it will
-work. This may sound a little weird, but it avoids me needing to set up a
-new communications channel from the assistant to the Java app. Best of all,
-I have to write very little Java code. I last wrote Java code in 1995, so
-writing much more is probably a good thing to avoid.
diff --git a/doc/design/assistant/blog/day_277__private_static_protected_void.mdwn b/doc/design/assistant/blog/day_277__private_static_protected_void.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_277__private_static_protected_void.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Yeah, Java hacking today. I have something that I think should deal with
-the [[bugs/Android_app_permission_denial_on_startup]] problem. Added a "Open
-WebApp" item to the terminal's menu, which should behave as advertised.
-This is available in the Android daily build now, if your device has that
-problem.
-
-I was not able to get the escape sequence hack to work. I had no difficulty
-modifying the terminal to send an intent to open an url when it received a
-custom escape sequence. But sending the intent just seemed to lock up the
-terminal for a minute without doing anything. No idea why. I had to propigate a
-context object in to the terminal emulator through several layers of objects.
-Perhaps that doesn't really work despite what I [read on stackoverflow](http://stackoverflow.com/questions/9051849/opening-a-link-in-the-browser/9052208#9052208).
-
-Anyway, that's all I have time to do. It would be nice if I, or some other
-interested developer who is more comfortable with Java, could write a custom
-Android frontend app, that embedded a web browser widget for the webapp,
-rather than abusing the terminal this way. OTOH, this way does provide the
-bonus of a pretty good terminal and git shell environment for Android to go
-with git-annex.
diff --git a/doc/design/assistant/blog/day_278__winding_down.mdwn b/doc/design/assistant/blog/day_278__winding_down.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_278__winding_down.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Winding down work for now, as I prepare for a week at the beach starting in
-2 days. That will be followed by a talk about git-annex at
-[SELF2013](http://www.southeastlinuxfest.org/) in Charlotte NC on June 9th.
-
-Bits & pieces today.
-
-Want to get a release out RSN, but I'm waiting for the previous release
-to finally reach Debian testing, which should happen on Saturday. Luckily I
-hear the beach house has wifi, so I will probably end up cutting the
-release from there. Only other thing I might work on next week is updating
-to yesod 1.2.
diff --git a/doc/design/assistant/blog/day_279__final_release_prep.mdwn b/doc/design/assistant/blog/day_279__final_release_prep.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_279__final_release_prep.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Landed two final changes before the release..
-
-First, made git-annex detect if any of the several long-running git process
-it talks to have died, and, if yes, restart them. My stress test is reliably
-able to get at least `git cat-file` to crash, and while I don't know why (and
-obviously should follow up by getting a core dump and stack trace of it),
-the assistant needs to deal with this to be robust.
-
-Secondly, wrote rather a lot of Java code to better open the web browser
-when the Android app is started. A thread listens for URLs to be written to
-a FIFO. Creating a FIFO from fortran&#94;Wjava code is .. interesting. Glad to
-see the back of the `am` command; it did me no favors.
-
-AFK
diff --git a/doc/design/assistant/blog/day_27__robust_transfers.mdwn b/doc/design/assistant/blog/day_27__robust_transfers.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_27__robust_transfers.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Spent most of the day making file content transfers robust. There were lots
-of bugs, hopefully I've fixed most of them. It seems to work well now,
-even when I throw a lot of files at it.
-
-One of the changes also sped up transfers; it no longer roundtrips to the
-remote to verify it has a file. The idea here is that when the assistant is
-running, repos should typically be fairly tightly synced to their remotes
-by it, so some of the extra checks that the `move` command does are
-unnecessary.
-
-Also spent some time trying to use ghc's threaded runtime, but continue to
-be baffled by the random hangs when using it. This needs fixing eventually;
-all the assistant's threads can potentially be blocked when it's waiting on
-an external command it has run.
-
-Also changed how transfer info files are locked. The lock file is now
-separate from the info file, which allows the TransferWatcher thread to
-notice when an info file is created, and thus actually track transfers
-initiated by remotes.
-
----
-
-I'm fairly close now to merging the `assistant` branch into `master`.
-The data syncing code is very brute-force, but it will work well enough
-for a first cut.
-
-Next I can either add some repository network mapping, and use graph
-analysis to reduce the number of data transfers, or I can move on to the
-[[webapp]]. Not sure yet which I'll do. It's likely that since DebConf
-begins tomorrow I'll put off either of those big things until after the
-conference.
diff --git a/doc/design/assistant/blog/day_28-35__threaded_runtime_tarpit.mdwn b/doc/design/assistant/blog/day_28-35__threaded_runtime_tarpit.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_28-35__threaded_runtime_tarpit.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-I didn't plan to work on git-annex much while at DebConf, because the conference
-always prevents the kind of concentration I need. But I unexpectedly also had to deal
-with [three dead drives](http://joeyh.name/blog/entry/I_am_become_Joey_destroyer_of_drives/)
-and illness this week. 
-
-That said, I have been trying to debug a problem with git-annex and Haskell's threaded
-runtime all week. It just hangs, randomly. No luck so far isolating why, although I now
-have a branch that hangs fairly reliably, and in which I am trying to whittle the entire
-git-annex code base (all 18 thousand lines!) into a nice test case.
-
-This threaded runtime problem doesn't affect the assistant yet, but if I want to use
-Yesod in developing the webapp, I'll need the threaded runtime, and using the threaded
-runtime in the assistant generally would make it more responsive and less hacky.
-
-Since this is a task I can work on without much concentration, I'll probably keep beating
-on it until I return home. Then I need to spend some quality thinking time on where
-to go next in the assistant.
diff --git a/doc/design/assistant/blog/day_280__yesod.mdwn b/doc/design/assistant/blog/day_280__yesod.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_280__yesod.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Today marks 1 year since I started working on the git-annex assistant. 280
-solid days of work!
-
-As a background task here at the beach I've been porting git-annex to yesod
-1.2. Finished it today, earlier than expected, and also managed to keep it
-building with older versions. Some tricks kept the number of
-ifdefs reasonably low.
diff --git a/doc/design/assistant/blog/day_281__back.mdwn b/doc/design/assistant/blog/day_281__back.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_281__back.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Slowly getting through the bugs that were opened while I was on vacation and
-then I'll try to get to all the comments. 60+ messages to go.
-
-Got git-annex working better on encfs, which does not support hard links in
-paranoid mode. Now git-annex can be used in indirect mode, it doesn't force
-direct mode when hard links are not supported.
-
-Made the Android repository setup special case generate a .gitignore file
-to ignore thumbnails. Which will only start working once the assistant
-gets .gitignore support.
-
------
-
-Been thinking today about encrypting XMPP traffic, particularly git push
-data. Of course, XMPP is already encrypted, but that doesn't hide it from
-those entities who have access to the XMPP server or its encryption key.
-So adding client-to-client encryption has been on the TODO list all along.
-
-OTR would be a great way to do it. But I worry that the confirmation steps
-OTR uses to authenticate the recipient would make the XMPP pairing UI harder
-to get through.
-
-Particularly when pairing your own devices over XMPP, with several devices
-involved, you'd need to do a lot of cross-confirmations. It would be better
-there, I think, to just use a shared secret for authentication. (The need
-to enter such a secret on each of your devices before pairing them would
-also provide a way to use different repositories with the same XMPP
-account, so 2birds1stone.)
-
-Maybe OTR confirmations would be ok when setting up sharing with a friend.
-If OTR was not used there, and it just did a Diffie-Hellman key exchange
-during the pairing process, it could be attacked by an active MITM spoofing
-attack. The attacker would then know the keys, and could decrypt future
-pushes. How likely is such an attack? This goes far beyond what we're
-hearing about. Might be best to put in some basic encryption now, so
-we don't have to worry about pushes being passively recorded on the
-server. Comments appreciated.
diff --git a/doc/design/assistant/blog/day_282-283__caught_up.mdwn b/doc/design/assistant/blog/day_282-283__caught_up.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_282-283__caught_up.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Got caught up on my backlog yesterday.
-
-Part of adding files in direct mode involved removing write permission from
-them temporarily. That turned out to cause problems with some programs that
-open a file repeatedly, and was generally against the principle that direct
-mode files are always directly available. Happily, I was able to get rid of
-that without sacrificing any safety.
-
-Improved syncing to bare repositories. Normally syncing pushes to a
-synced/master branch, which is good for non-bare repositories since git
-does not allow pushing to the currently checked out branch. But for bare
-repositories, this could leave them without a master branch, so cloning
-from them wouldn't work. A funny thing is that git does not really have any
-way to tell if a remote repository is bare or not. Anyway, I did put in a
-fix, at the expense of pushing twice (but the git data should only be
-transferred once anyway).
-
-
diff --git a/doc/design/assistant/blog/day_284__porting.mdwn b/doc/design/assistant/blog/day_284__porting.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_284__porting.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Today I got to deal with bugs on Android (busted use of `cp` among other
-problems), Windows (fixed a strange hang when adding several files), and
-Linux (`.desktop` files suck and Wine ships a particularly nasty one).
-Pretty diverse!
-
-Did quite a lot of research and thinking on XMPP encryption yesterday, but
-have not run any code yet (except for trying out a D-H exchange in `ghci`).
-I have listed several options on the [[XMPP]] page.
-
-Planning to take a look at
-[[bugs/Handling_of_files_inside_and_outside_archive_directory_at_the_same_time]]
-tomorrow; maybe I can come up with a workaround to avoid it behaving so
-badly in that case.
diff --git a/doc/design/assistant/blog/day_285__fixed_the_archive_directory_loop.mdwn b/doc/design/assistant/blog/day_285__fixed_the_archive_directory_loop.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_285__fixed_the_archive_directory_loop.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Yay, I fixed the
-[[bugs/Handling_of_files_inside_and_outside_archive_directory_at_the_same_time]]
-bug!
-At least in direct mode, which thanks to its associated files tracking
-knows when a given file has another file in the repository with the same
-content. Had not realized the behavior in direct mode was so bad, or the
-fix so relatively easy. Pity I can't do the same for indirect mode, but
-the problem is much less serious there.
-
-That was this weekend. Today, I nearly put out a new release (been 2 weeks
-since the last one..), but ran out of time in the end, and need to get the
-OSX autobuilder fixed first, so have deferred it until Friday.
-
-However, I did make some improvements today.
-Added an `annex.debug` git config setting, so debugging can
-be turned on persistently. People seem to expect that to happen when
-checking the checkbox in the webapp, so now it does.
-
-Fixed 3 or 4 bugs in the Windows port. Which actually, has users now, or
-at least one user. It's very handy to actually get real world testing of
-that port.
-
-[[!meta date="Mon, 17 Jun 2013 17:14:04 -0400"]]
diff --git a/doc/design/assistant/blog/day_286__Windows_test_suite.mdwn b/doc/design/assistant/blog/day_286__Windows_test_suite.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_286__Windows_test_suite.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-One of my Windows fixes yesterday got the test suite close to sort of
-working on Windows, and I spent all day today pounding on it. Fixed
-numerous bugs, and worked around some weird Windows behaviors -- like
-recursively deleting a directory sometimes fails with a permission denied
-error about a file in it, and leaves behind an empty directory. (What!?)
-The most important bug I fixed caused CR to leak into files in the
-git-annex branch from Windows, during a union merge, which was not a good
-thing at all.
-
-At the end of the day, I only have 6 remaining failing test cases on
-Windows. Half of them are some problem where running `git annex sync`
-from the test suite stomps on PATH somehow and prevents xargs from working.
-The rest are probably real bugs in the directory (again something to do
-with recursive directory deletion, hmmm..), hook, and rsync
-special remotes on Windows. I'm punting on those 6 for now, they'll be
-skipped on Windows.
-
-Should be worth today's pain to know in the future when I break
-something that I've oh-so-painfully gotten working on Windows.
diff --git a/doc/design/assistant/blog/day_287__niceness.mdwn b/doc/design/assistant/blog/day_287__niceness.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_287__niceness.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Pushed out a release today. While I've somewhat ramped down activity this
-month with the Kickstarter period over and summer trips and events ongoing,
-looking over the changelog I still see a ton of improvements in the 20 days
-since the last release.
-
-Been doing some work to make the assistant daemon be more `nice`. I don't
-want to nice the whole program, because that could make the web interface
-unresponsive. What I am able to do, thanks to Linux violating POSIX, is to
-`nice` certain expensive operations, including the startup scan and the daily
-sanity check. Also, I put in a call to `ionice` (when it's available) 
-when `git annex assistant --autostart` is run, so the daemon's
-disk IO will be prioritized below other IO. Hope this keeps it out of your
-way while it does its job.
diff --git a/doc/design/assistant/blog/day_288__success_stories.mdwn b/doc/design/assistant/blog/day_288__success_stories.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_288__success_stories.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Got caught up on a big queue of messages today. Mostly I hear from people
-when git-annex is not working for them, or they have a question about using
-it. From time to time someone does mention that it's working for them.
-
-> We have 4 or so machines all synching with each other via the local
-> network thing. I'm always amazed when it doesn't just explode :)
-
-Due to the nature of git-annex, a lot of people can be using it without
-anyone knowing about it. Which is great. But these little success stories
-can make all the difference. It motivates me to keep pounding out the
-development hours, it encourages other people to try it, and it'd be a good
-thing to be able to point at if I tried to raise more funding now that I'm
-out of Kickstarter money.
-
-I'm posting my own success story to my main blog:
-[git annex and my mom](http://joeyh.name/blog/entry/git_annex_and_my_mom)
-
-If you have a success story to share, why not blog about it, microblog it,
-or just post a comment here, or even send me a private message. Just a
-quick note is fine. Thanks!
-
-----
-
-Going through the bug reports and questions today, I ended up fixing
-three separate bugs that could break setting up a repo on a remote ssh
-server from the webapp.
-
-Also developed a minimal test case for some gnucash behavior that prevents
-the watcher from seeing files it writes out. I understand the problem,
-but don't have a fix for that yet. Will have to think about it. (A year ago
-today, my blog featured the
-[[first_release_of_the_watcher|day_16__more_robust_syncing]].)
diff --git a/doc/design/assistant/blog/day_289__back_in_the_swing.mdwn b/doc/design/assistant/blog/day_289__back_in_the_swing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_289__back_in_the_swing.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Came up with a fix for the gnucash hard linked file problem that makes the
-assistant notice the files gnucash writes. This is not full hard link support;
-hard linked files still don't cleanly sync around. But new hard links to
-files are noticed and added, which is enough to support gnucash.
-
-Spent around 4 hours on reproducing and trying to debug
-[[bugs/Hanging_on_install_on_Mountain_lion]]. It seems that recent upgrades
-of the OSX build machine led to this problem. And indeed, building with an
-older version of Yesod and Warp seems to have worked around the problem. So
-I updated the OSX build for the last release. I will have to re-install the
-new Yesod on my laptop and investigate further -- is this an OSX specific
-problem, or does it affect Linux? Urgh, this is the second hang I've
-encountered involving Warp..
-
-Got several nice [[success stories|day_288__success_stories]], but I don't
-think I've seen *yours* yet. ;) Please post!
diff --git a/doc/design/assistant/blog/day_290__https_release.mdwn b/doc/design/assistant/blog/day_290__https_release.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_290__https_release.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Spent too many hours last night tracking down a bug that caused the webapp
-to hang when it got built with the new yesod 1.2 release. Much of that time
-was spent figuring out that yesod 1.2 was causing the problem. It turned out to
-be a stupid typo in my yesod compatability layer. `liftH = liftH` in
-Haskell is an infinite loop, not the stack overflow you get in most
-languages. ;)
-
-Even though it's only been a week since the last release,
-that was worth pushing a release out for, which I've just done.
-This release is essentially all bug fixes (aside from the automatic 
-ionice and nicing of the daemon).
-
-This website is now available over https. Perhaps more importantly, all the
-links to download git-annex builds are https by default.
-
-The [[success_stories|day_288__success_stories]] list is getting really
-nice. Only way it could possibly be nicer is if you added your story! Hint. ;)
diff --git a/doc/design/assistant/blog/day_291__--all.mdwn b/doc/design/assistant/blog/day_291__--all.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_291__--all.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-I've felt for a while that git-annex needed better support for managing
-the contents of past versions of files that are stored in the annex. I know
-some people get confused about whether git-annex even supports old versions
-of files (it does, but you should use indirect mode; direct mode doesn't
-guarantee old versions of files will be preserved).
-
-So today I've worked on adding command-line power for managing past
-versions: a new `--all` option.
-
-So, if you want to copy every version of every file in your repository to
-an archive, you can run `git annex copy --all --to archive`.
-Or if you've got a repository on a drive that's dying, you can run
-`git annex copy --all --to newdrive`, and then on the new drive, run `git
-annex fsck --all` to check all the data.
-
-In a bare repository, `--all` is default, so you can run `git annex get`
-inside a bare repository and it will try to get every version of every file
-that it can from the remotes.
-
-The tricky thing about `--all` is that since it's operating on objects and
-not files, it can't check `.gitattributes` settings, which are tied to the
-file name. I worried for a long time that adding `--all` would make
-annex.numcopies settings in those files not be honored, and that this would
-be a Bad Thing. The solution turns out to be simple: I just didn't
-implement `git annex drop --all`! Dropping is the only action that needs to
-check numcopies (move can also reduce the number of copies, but explicitly
-bypasses numcopies settings).
-
-I also added an `--unused` option. So if you have a repository that has
-been accumulating history, and you'd like to move all file contents not
-currently in use to a central server, you can run `git annex unused; git
-annex move --unused --to origin`
diff --git a/doc/design/assistant/blog/day_292__bugfixes.mdwn b/doc/design/assistant/blog/day_292__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_292__bugfixes.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Actually spread out over several days..
-
-I think I have finally comprehensively dealt with all the wacky system
-misconfigurations that can make `git commit` complain and refuse to commit.
-The last of these is [a system with a FQDN that doesn't have a dot in it](http://git-annex.branchable.com/bugs/view_logs_fails:_Internal_Server_Error__internal_liftAnnex/). 
-I personally think git should just use the hostname as-is in the email
-address for commits here -- it's better to be robust. Indeed, I think it
-would make more sense if `git commit` never failed, unless it ran out of
-disk or the repo is corrupt. But anyway, `git-annex
-init` will now detect when the commit fails because of this and put a
-workaround in place.
-
-Fixed a bug in `git annex addurl --pathdepth` when the url's path was
-shorter than the amount requested to remove from it.
-
-Tracked down a bug that prevents git-annex from working on a system with an
-old linux kernel. Probably the root cause is that the kernel was built
-without EVENTFD support. Found a workaround to get a usable git-annex on
-such a system is to build it without the webapp, since that disables the
-threaded runtime which triggered the problem.
-
-Dealt with a lot of Windows bugs. Very happy that it's working well enough
-that some users are reporting bugs on it in Windows, and with enough detail
-that I have not needed to boot Windows to fix them so far. ;)
diff --git a/doc/design/assistant/blog/day_293__gpg_builds.mdwn b/doc/design/assistant/blog/day_293__gpg_builds.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_293__gpg_builds.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Two gpg fixes today. The OSX Mtn Lion builds were pulling in a build of gpg
-that wanted a gpg-agent to be installed in /usr/local or it wouldn't work.
-I had to build my own gpg on OSX to work around this. I am pondering making
-the OSX dmg builds pull down the gpg source and build their own binary,
-so issues on the build system can't affect it. But would really rather not,
-since maintaining your own version of every dependency on every
-OS is hard (pity about there still being so many OS's without sane package
-management).
-
-On Android, which I have not needed to touch for a month, gpg was built
-with --enable-minimal, which turned out to not be necessary and was
-limiting the encryption algorythms included, and led to
-interoperability problems for some. Fixed that gpg build too.
-
-Also fixed an ugly bug in the webapp when setting up a rsync repository.
-It would configure `~/.ssh/authorized_keys` on the server to force
-git-annex-shell to be run. Which doesn't work for rsync. I didn't notice
-this before because it doesn't affect ssh servers that already have a ssh
-setup that allows accessing them w/o a password.
-
-Spent a while working on a bug that can occur in a non-utf8 locale
-when using special characters in the directory name of a ssh remote.
-I was able to reproduce it, but have not worked out how to fix it; encoding
-issues like this are always tricky.
-
-Added something to the walkthrough to help convince people that yes, you
-can use tags and branches with git-annex just like with regular git. One of
-those things that is so obvious to the developer writing the docs 
-that it's hard to realize it will be a point of concern.
-
-Seems like there is a release worth of changes already, so I plan to push
-it out tomorrow.
diff --git a/doc/design/assistant/blog/day_294__release_day.mdwn b/doc/design/assistant/blog/day_294__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_294__release_day.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Got the release out, after fixing test suite and windows build breakage.
-This release has all the features on the command line side (--all,
---unused, etc), but several bugfixes on the assistant side, and a lot
-of Windows bug fixes.
-
-I've spent this evening adding icons to git-annex on Linux.
-Even got the Linux standalone tarball to automatically install icons.
diff --git a/doc/design/assistant/blog/day_295__balls_in_the_air.mdwn b/doc/design/assistant/blog/day_295__balls_in_the_air.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_295__balls_in_the_air.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Been keeping several non-coding balls in the air recently, two of which
-landed today.
-
-First, Rsync.net is [offering a discount to all git-annex users](http://www.rsync.net/products/git-annex-pricing.html),
-at one third their normal price.
-"People using git-annex are clueful and won't be a big support burden for us,
-so it's a win-win."
-The web app will be updated offer the discount when setting up a rsync.net
-repository.
-
-Secondly, I've recorded an interview today for the Git Minutes podcast,
-about git-annex. Went well, looking forward to it going up, probably on
-Monday.
diff --git a/doc/design/assistant/blog/day_296__new_crowdfunding_campaign.mdwn b/doc/design/assistant/blog/day_296__new_crowdfunding_campaign.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_296__new_crowdfunding_campaign.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-Surprise! I'm running a new crowdfunding campaign, which I hope will fund
-several more months of git-annex development.
-
-<https://campaign.joeyh.name/>
-
-Please don't feel you have to give, but if you do decide to, give
-generously. ;) I'm accepting both Paypal and Bitcoin (via CoinBase.com),
-and have some rewards that you might enjoy.
-
-----
-
-I came up with two lists of things I hope this campaign will fund.
-These are by no means complete lists. First, some general features and
-development things:
-
-* Integrate better with Android.
-* Get the assistant and webapp ported to Windows.
-* Refine the automated stress testing tools to find and fix more problems
-  before users ever see them.
-* Automatic recovery. Cosmic ray flipped a bit in a file? 
-  USB drive corrupted itself? The assistant should notice these problems,
-  and fix them.
-* Encourage more contributions from others. For example, improve the
-  special remote plugin interface so it can do everything the native Haskell
-  interface can do. Eight new cloud storage services were added this year
-  as plugins, but we can do better!
-* Use deltas to reduce bandwidth needed to transfer modified versions of files.
-
-Secondly, some things to improve security:
-
-* Add easy support for encrypted git repositories
-  using [git-remote-gcrypt](https://github.com/blake2-ppc/git-remote-gcrypt),
-  so you can safely push to a repository on a server you don't control.
-* Add support for setting up and using GPG keys in the webapp.
-* Add protection to the XMPP protocol to guard against man in the middle
-  attacks if the XMPP server is compromised. Ie, Google should not be able to
-  learn about your git-annex repository even if you're using their servers.
-* To avoid leaking even the size of your encrypted files to
-  cloud storage providers, add a mode that stores fixed size chunks.
-
-It will also, of course, fund ongoing bugfixing, support, etc.
diff --git a/doc/design/assistant/blog/day_297__back_to_work.mdwn b/doc/design/assistant/blog/day_297__back_to_work.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_297__back_to_work.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-It looks like I'm funded for at least the next 9 months! It would still be
-nice to get to a year. ;) <https://campaign.joeyh.name/>
-
-Working to get caught up on recent bug reports..
-
-Made `git annex uninit` not nuke anything that's left over in
-`.git/annex/objects` after unannexing all the files. After all, that could
-be important old versions of files or deleted file, and just because the
-user wants to stop using git-annex, doesn't mean git-annex shouldn't try to
-protect that data with its dying breath. So it prints out some suggestions
-in this case, and leaves it up to the user to decide what to do with the
-data.
-
-Fixed the Android autobuilder, which had stopped including the webapp.
-
-Looks like another autobuilder will be needed for OSX 10.9.
diff --git a/doc/design/assistant/blog/day_298__exceptional.mdwn b/doc/design/assistant/blog/day_298__exceptional.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_298__exceptional.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Theme today seems to be fun with exceptions. 
-
-Fixed an uncaught exception that could crash the assistant's Watcher thread
-if just the right race occurred.
-
-Also fixed it to not throw an exception if another process is
-already transferring a file. What this means is that if you run multiple 
-`git annex get` processes on the same files, they'll cooperate in each
-picking their own files to get and download in parallel. (Also works for
-copy, etc.) Especially useful when downloading from an encrypted remote,
-since often one process will be decrypting a file while the other is
-downloading the next file. There is still room for improvement here; 
-a -jN option could better handle ensuring N downloads ran concurrently, and
-decouple decryption from downloading. But it would need the output layer to
-be redone to avoid scrambled output. (All the other stuff to make parallel
-git-annex transfers etc work was already in place for a long time.)
-
-----
-
-Campaign update: Now funded for nearly 10 months, and aiming for a year.
-<https://campaign.joeyh.name/>
diff --git a/doc/design/assistant/blog/day_299__bugfixing.mdwn b/doc/design/assistant/blog/day_299__bugfixing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_299__bugfixing.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Succeeded fixing a few bugs today, and followed up on a lot of other ones..
-
-Fixed checking when content is present in a non-bare repository accessed via
-http.
-
-My changes a few days ago turned out to make uninit leave hard links behind
-in .git/annex. Luckily the test suite caught this bug, and it was easily
-fixed by making uninit delete objects with 2 or more hard links at the end.
diff --git a/doc/design/assistant/blog/day_2__races.mdwn b/doc/design/assistant/blog/day_2__races.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_2__races.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-Last night I got `git annex watch` to also handle deletion of files.
-This was not as tricky as feared; the key is using `git rm --ignore-unmatch`,
-which avoids most problematic situations (such as a just deleted file
-being added back before git is run).
-
-Also fixed some races when `git annex watch` is doing its startup scan of
-the tree, which might be changed as it's being traversed. Now only one
-thread performs actions at a time, so inotify events are queued up during
-the scan, and dealt with once it completes. It's worth noting that inotify
-can only buffer so many events .. Which might have been a problem except
-for a very nice feature of Haskell's inotify interface: It has a thread
-that drains the limited inotify buffer and does its own buffering.
-
-----
-
-Right now, `git annex watch` is not as fast as it could be when doing
-something like adding a lot of files, or deleting a lot of files.
-For each file, it currently runs a git command that updates the index.
-I did some work toward coalescing these into one command (which `git annex`
-already does normally). It's not quite ready to be turned on yet,
-because of some races involving `git add` that become much worse
-if it's delayed by event coalescing.
-
-----
-
-And races were the theme of today. Spent most of the day really
-getting to grips with all the fun races that can occur between
-modification happening to files, and `git annex watch`. The [[inotify]]
-page now has a long list of known races, some benign, and several,
-all involving adding files, that are quite nasty.
-
-I fixed one of those races this evening. The rest will probably involve
-moving away from using `git add`, which necessarily examines the file
-on disk, to directly shoving the symlink into git's index.
-
-BTW, it turns out that `dvcs-autosync` has grappled with some of these same
-races: <http://comments.gmane.org/gmane.comp.version-control.home-dir/665>
-I hope that `git annex watch` will be in a better place to deal with them,
-since it's only dealing with git, and with a restricted portion of it
-relevant to git-annex.
-
-It's important that `git annex watch` be rock solid. It's the foundation
-of the git annex assistant. Users should not need to worry about races
-when using it. Most users won't know what race conditions are. If only I
-could be so lucky!
diff --git a/doc/design/assistant/blog/day_300__new_logo.mdwn b/doc/design/assistant/blog/day_300__new_logo.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_300__new_logo.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-git-annex has a new nicer versions of its [[logo]], thanks to John Lawrence.
-
-Finally tracked down a week-old bug about the watcher crashing. It turned
-out to crash when it encountered a directory containing a character that's
-invalid in the current locale. I've noticed that 'ü' is often the character I
-get bug reports about. After reproducing the bug I quickly tracked it down
-to code in the haskell hinotify library, and sent in a patch.
-
-Also uploaded a fixed hinotify to Debian, and deployed it to all 3 of the
-autobuilder chroots. That took much more time than actually fixing the bug.
-Quite a lot of yak shaving went on actually. Oh well. The Linux
-autobuilders are updated to use Debian unstable again, which is nice.
-
-Fixed a bug that prevented annex.diskreserve to be honored when storing
-files encrypted in a directory special remote.
-
-Taught the webapp the difference between initializing a new special remote
-and enabling an existing special remote, which fixed some bad behavior when
-it got confused.
-
-----
-
-And then for the really fun bug of the day! A user sent me a large file
-which badly breaks git annex add. Adding the file causes a symlink to be
-set up, but the file's content is not stored in the annex. Indeed, it's
-deleted. This is the first data loss bug since January 2012.
-
-Turns out it was caused by the code that handles the dummy files git uses
-in place of symlinks on FAT etc filesystems. Code that had no business
-running when `core.symlinks=true`. Code that was prone to false positives
-when looking at a tarball of a git-annex repository. So I put in multiple
-fixes for this bug. I'll be making a release on Monday.
-
-----
-
-Today's work was sponsored by Mikhail Barabanov. Thanks, Mikhail!
diff --git a/doc/design/assistant/blog/day_301__direct_unannex.mdwn b/doc/design/assistant/blog/day_301__direct_unannex.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_301__direct_unannex.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-No release today after all. Unexpected bandwidth failure. Maybe in a few
-days..
-
-Got unannex and uninit working in direct mode. This is one of the more
-subtle parts of git-annex, and took some doing to get it right.
-Surprisingly, unannex in direct mode actually turns out to be faster than
-in indirect mode. In direct mode it doesn't have to immediately commit the
-unannexing, it can just stage it to be committed later.
-
-Also worked on the ssh connection caching code. The perrennial problem with
-that code is that the fifo used to communicate with ssh has a small limit
-on its path, somewhere around 100 characters. This had caused problems when
-the hostname was rather long. I found a way to avoid needing to be able to
-reverse back from the fifo name to the hostname, and this let me take the
-md5sum of long hostnames, and use that shorter string for the fifo.
-
-Also various other bug followups.
-
-----
-
-[Campaign](https://campaign.joeyh.name/) is almost to 1 year!
diff --git a/doc/design/assistant/blog/day_302_release_day.mdwn b/doc/design/assistant/blog/day_302_release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_302_release_day.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Got the release out.
-
-I've been working on fleshing out 
-the [[timeline|/design/assistant]] for the next year.
-Including a fairly detailed set of things I want to do around
-[[/design/assistant/disaster_recovery]] in the assistant.
diff --git a/doc/design/assistant/blog/day_303__oops.mdwn b/doc/design/assistant/blog/day_303__oops.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_303__oops.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Seems I forgot why I was using debian stable chroots to make the
-autobuilds: Lots of people still using old glibc version. Had to rebuild
-the stable chroots that I had upgraded to unstable. Wasted several hours..
-I was able to catch up on recent traffic in between.
-
-Was able to reproduce a bug where `git annex initremote` hung with some
-encrypted special remotes. Turns out to be a deadlock when it's not built
-with the threaded GHC runtime. So I've forced that runtime to be used.
diff --git a/doc/design/assistant/blog/day_304__dropunused_safety.mdwn b/doc/design/assistant/blog/day_304__dropunused_safety.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_304__dropunused_safety.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-The big news: Important behavior change in `git annex dropunused`. Now it
-checks, just like `git annex drop`, that it's not dropping the last copy of
-the file. So to lose data, you have to use `--force`. This continues the
-recent theme of making git-annex hold on more tenaciously to old data, and
-AFAIK it was the last place data could be removed without `--force`.
-
-Also a nice little fix to `git annex unused` so it doesn't identify
-temporary files as unused if they're being used to download a file.
-Fixing it was easy thanks to all the transfer logs and locking
-infrastucture built for the assistant.
-
-Fixed a bug in the assistant where even though syncing to a network
-remote was disabled, it would still sync with it every hour, or whenever
-a network connection was detected.
-
-Working on some direct mode scalability problems when thousands of the
-identical files are added. Fixing this may involvie replacing the current
-simple map files with something more scalable like a sqllite database.
-
-While tracking that down, I also found a bug with adding a ton of files
-in indirect mode, that could make the assistant stall.
-Turned out to be a laziness problem. (Worst kind of Haskell bug.) Fixed.
-
-----
-
-Today's sponsor is my sister, Anna Hess, who incidentially just put
-the manuscript of her latest ebook in the family's annex prior to its
-publication on Amazon this weekend.
diff --git a/doc/design/assistant/blog/day_305__interesting_bugs.mdwn b/doc/design/assistant/blog/day_305__interesting_bugs.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_305__interesting_bugs.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Worked on 3 interesting bugs today. One I noticed myself while doing tests
-with adding many thousands of files yesterday. Assistant was delaying
-making a last commit of the batch of files, and would only wake up and
-commit them after a further change was made. Turns out this bug was
-introduced in April while improving commit batching when making very large
-commits. I seem to remember someone mentioning this problem at some point,
-but I have not been able to find a bug report to close.
-
-Also tried to reproduce [[this_bug|bugs/utf8]]. Frustrating, because I'm
-quite sure I have made changes that will avoid it happening again,
-but since I still don't know what the root cause was, I can't let it go.
-
-The last bug is
-[[non-repos_in_repositories_list___40__+_other_weird_output__41___from_git_annex_status]]
-and is a most strange thing. Still trying to get a handle on multiple
-aspects of it.
-
-Also various other bug triage. Down to only 10 messages in my git-annex
-folder.  That included merging about a dozen bugs about
-local pairing, that all seem to involve git-annex-shell not being found in
-path. Something is up with that..
diff --git a/doc/design/assistant/blog/day_306__offtopic.mdwn b/doc/design/assistant/blog/day_306__offtopic.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_306__offtopic.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Technically offtopic, but did a fun side project today:
-<http://joeyh.name/blog/entry/git-annex_as_a_podcatcher/>
diff --git a/doc/design/assistant/blog/day_307__buuuugs.mdwn b/doc/design/assistant/blog/day_307__buuuugs.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_307__buuuugs.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Back to bug squashing. Fixed several, including a long-standing problem on
-OSX that made the app icon seem to "bounce" or not work. Followed up on a
-bunch more.
-
-The 4.20130723 git-annex release turns out to have broken support for
-running on crippled filesystems (Android, Windows). `git annex sync` will
-add dummy symlinks to the annex as if they were regular files, which is
-not good!
-[Recovery instructions](http://git-annex.branchable.com/bugs/regression_in_direct_mode_on_windows_:_weird___96__git_annex_sync__96___behavior/#comment-5d80649f9da85ac2fb505445a41207f5)
-I've updated the Android and Windows builds and recommend an immediate upgrade.
-Will make a formal release on Friday. 
-
-Spent some time improving the test suite on Windows, to catch this bug,
-and fix a bug that was preventing it from testing `git annex sync` on
-Windows.
-
-----
-
-I am getting very frustrated with this "unknown UUID" problem that a dozen
-people have reported. So far nobody has given me enough information to
-reproduce the problem. It seems to have something to do with
-`git-annex-shell` not being found on the remote system that has been either
-local paired with or is being used as a ssh server, but I don't yet
-understand what. I have spent hours today trying various scenarios to break
-git-annex and get this problem to happen.
-
-I certainly can improve the webapp's behavior when a repository's UUID is
-not known. The easiest fix would be to simply not display such
-repositories. Or there could be a UI to try to get the UUID.
-But I'm more interested in fixing the core problem than putting
-in a UI bandaid.
diff --git a/doc/design/assistant/blog/day_308__ssh-agent.mdwn b/doc/design/assistant/blog/day_308__ssh-agent.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_308__ssh-agent.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Turns out ssh-agent is the cause of the unknown UUID bug! I got a tip
-about this from a user, and was quickly able to reproduce the bug that had
-eluded me so long. Anyone who has run `ssh-add` and is using ssh-agent
-would see the bug.
-
-It was easy enough to fix as it turns out. Just need to set IdentitiesOnly
-in .ssh/config where git-annex has set up its own IdentityFile to ensure
-that its special purpose ssh key is used rather than whatever key the
-ssh-agent has loaded into it. I do wonder why ssh behaves this way -- why
-would I set an IdentityFile for a host if I didn't want ssh to use it?
-
-Spent the rest of the day cleaning up after the bug. Since this affects so
-many people, I automated the clean up process. The webapp will
-detect repositories with this problem, and the user just has to click to
-clean up. It'll then correct their .ssh/config and re-enable the
-repository.
diff --git a/doc/design/assistant/blog/day_309__filenames.mdwn b/doc/design/assistant/blog/day_309__filenames.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_309__filenames.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Today was a nice reminder that there are no end of bugs lurking in filename
-handling code. 
-
-First, fixed a bug that prevented git-annex from adding
-filenames starting with ":", because that is a special character to git.
-
-Second, discovered that git 1.8.4 rc0 has changed `git-cat-file --batch` in
-a way that makes it impossible to operate on filenames containing spaces.
-This is, IMHO, a reversion, so hopefully my
-[bug report](http://bugs.debian.org/718517) will get it fixed.
-
-Put in a workaround for that, although using the broken version of git
-with a direct mode repository with lots of spaces in file or directory
-names is going to really slow down git-annex, since it often has to fork a
-new git cat-file process for each file.
-
-Release day tomorrow..
diff --git a/doc/design/assistant/blog/day_310__release_day.mdwn b/doc/design/assistant/blog/day_310__release_day.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_310__release_day.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Got the release out, with rather a lot of fiddling to fix broken builds on
-various platforms.
-
-Also released a backport to Debian stable. This backport has the assistant,
-although without WebDAV support. Unfortunately it's an old version from
-May, since ghc transitions and issues have kept newer versions out of
-testing so far. Hope that will clear up soon (probably by dropping haskell
-support for s390x), and I can update it to a newer version. 
-If nothing else it allows using direct mode with Debian stable.
-
-Pleased that the git-cat-files bug was quickly fixed by Peff and has
-already been pulled into Junio's release tree!
-
-----
-
-This evening, I've added an interface around the new improved 
-`git check-ignore` in git 1.8.4. The assistant can finally honor `.gitignore`
-files!
diff --git a/doc/design/assistant/blog/day_311__Windows_porting.mdwn b/doc/design/assistant/blog/day_311__Windows_porting.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_311__Windows_porting.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Made two big improvements to the Windows port, in just a few hours.
-First, got gpg working, and encrypted special remotes work on Windows.
-Next, fixed a permissions problem that was breaking removing files
-from directory special remotes on Windows.
-(Also cleaned up a lot of compiler warnings on Windows.)
-
-I think I'm almost ready to move the Windows port from alpha to beta
-status. The only really bad problem that I know of with using it is that
-due to a lack of locking, it's not safe to run multiple git-annex
-commands at the same time in Windows.
diff --git a/doc/design/assistant/blog/day_312__DebConf_midpoint.mdwn b/doc/design/assistant/blog/day_312__DebConf_midpoint.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_312__DebConf_midpoint.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Wow, 11 days off! I was busy with first dentistry and then DebConf.
-
-Yesterday I [visited CERN](http://joeyh.name/blog/entry/words_fail_me/) and
-got to talk with some of their IT guys about how they manage their tens of
-petabytes of data. Interested to hear they also have the equivilant of a
-per-subdirectory annex.numcopies setting. OTOH, they have half a billion
-more files than git's index file is likely to be able to scale to support. ;)
-
-Pushed a release out today despite not having many queued changes. 
-Also, I got git-annex migrated to Debian testing, and so was also
-able to update the wheezy backport to a just 2 week old version.
-
-Today is also the last day of the [campaign](https://campaign.joeyh.name/)!
-
-----
-
-There has been a ton of discussion about git-annex here at DebConf,
-including 3 BoF sessions that mostly focused on it, among other git stuff.
-Also, RichiH will be presenting his
-"[Gitify Your Life](http://penta.debconf.org/dc13_schedule/events/1025.en.html)"
-talk on Friday; you can catch it on the [live stream](http://blog.debconf.org/blog/2013/08/14#hl_dc13_recordings).
-
-I've also had a continual stream of in-person bug and feature requests.
-(Mostly features.)
-These have been added to the wiki and I look forward to working on that
-backlog when I get home.
-
-As for coding, I am doing little here, but I do have a branch cooking that
-adds some options to `git annex import` to control handling of duplicate
-files.
diff --git a/doc/design/assistant/blog/day_313__back.mdwn b/doc/design/assistant/blog/day_313__back.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_313__back.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Back home. I have some 170 messages of backlog to attend to. Rather than
-digging into that on my first day back, I spent some time implementing some
-new features.
-
-`git annex import` has grown three options that help managing importing of
-duplicate files in different ways. I started work on that last week, but
-didn't have time to find a way to avoid the `--deduplicate` option
-checksumming each imported file twice. Unfortunately, I have still not
-found a way I'm happy with, so it works but is not as efficient as it could
-be.
-
-`git annex mirror` is a new command suggested to me by someone at DebConf
-(they don't seem to have filed the requested todo). It arranges for two
-repositories to contain the same set of files, as much as possible (when
-numcopies allows). So for example, `git annex mirror --to otherdrive`
-will make the otherdrive remote have the same files present and not present
-as the local repository.
-
-I am thinking about expanding `git annex sync` with an option to also sync
-data. I know some find it confusing that it only syncs the git metadata
-and not the file contents. That still seems to me to be the best and most
-flexible behavior, and not one I want to change in any case since
-it would be most unexpected if `git annex sync` downloaded a lot of stuff
-you don't want. But I can see making `git annex sync --data` download
-all the file contents it can, as well as uploading all available file
-contents to each remote it syncs with. And `git annex sync --data --auto`
-limit that to only the preferred content. Although perhaps
-these command lines are too long to be usable?
-
-----
-
-With the campaign more or less over, I only have a little over a week
-before it's time to dive into the first big item on the roadmap. Hope
-to be through the backlog by then.
diff --git a/doc/design/assistant/blog/day_314__quvi.mdwn b/doc/design/assistant/blog/day_314__quvi.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_314__quvi.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Made some good progress on the backlog today. Fixed some bugs, applied some
-patches. Noticing that without me around, things still get followed up
-on, to a point, for example incomplete test cases for bugs get corrected so
-they work. This is a very good thing. Community!
-
-I had to stop going through the backlog when I got to one message from
-Anarcat mentioning [quvi](http://quvi.sourceforge.net/). That turns
-out to be just what is needed to implement the often-requested feature
-of `git-annex addurl` supporting YouTube and other similar sites. So I
-spent the rest of the day making that work. For example:
-
-<pre>
-% git annex addurl --fast 'http://www.youtube.com/watch?v=1mxPFHBCfuU&list=PL4F80C7D2DC8D9B6C&index=1'
-addurl Star_Wars_X_Wing__Seth_Green__Clare_Grant__and_Mike_Lamond_Join_Wil_on_TableTop_SE2E09.webm ok
-</pre>
-
-Yes, that got the video title and used it as the filename, and yes,
-I can commit this file and run `git annex get` later, and it will be
-able to go download the video! I can even use `git annex fsck --fast`
-to make sure YouTube still has my videos. Awesome.
-
-The great thing about quvi is it takes the url to a video webpage, and
-returns an url that can be used to download the actual video file. So it
-simplifies ugly flash videos as far out of existence as is possible.
-However, since the direct url to the video file may not keep working for long.
-addurl actually records the page's url, with an added indication that quvi
-should be used to get it.
diff --git a/doc/design/assistant/blog/day_315__backlog.mdwn b/doc/design/assistant/blog/day_315__backlog.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_315__backlog.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-After a couple days plowing through it, my backlog is down to 30 messages
-from 150. And most of what's left is legitimate bugs and todo items.
-
-Spent a while today on an ugly file descriptor leak in the assistant's
-local pairing listener. This was an upstream bug in the network-multicast
-library, so while I've written a patch to fix it, the fix isn't quite 
-deployed yet. The file descriptor leak happens when the assistant is
-running and there is no network interface that supports multicast.
-I was able to reproduce it by just disconnecting from wifi.
-
-Meanwhile, guilhem has been working on patches that promise to massively
-speed up `git annex unused`! I will be reviewing them tonight.
diff --git a/doc/design/assistant/blog/day_316__day_off.mdwn b/doc/design/assistant/blog/day_316__day_off.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_316__day_off.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Today was a day off, really. However, I have a job running to try to
-build get a version of ghc-android that works on newer Android releases.
-
-Also, guilhem's `git annex unused` speedup patch landed. The results are
-extrordinary -- speedups on the order of 50 to 100 times faster should
-not be uncommon. Best of all (for me), it still runs in constant memory!
diff --git a/doc/design/assistant/blog/day_317__misc.mdwn b/doc/design/assistant/blog/day_317__misc.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_317__misc.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Spent a while tracking down a bug that causes a crash on OSX when setting
-up an XMPP account. I managed to find a small test case that reliably
-crashes, and sent it off to the author of the haskell-gnutls bindings,
-which had one similar segfault bug fixed before with a similar test case.
-Fingers crossed..
-
-Just finished tracking down a bug in the Android app that caused its
-terminal to spin and consume most CPU (and presumably a lot of battery).
-I introduced this bug when adding the code to open urls written to a fifo,
-due to misunderstanding how java objects are created, basically. This bug
-is bad enough to do a semi-immediate release for; luckily it's just about
-time for a release anyway with other improvements, so in the next few
-days..
-
-Have not managed to get a recent ghc-android to build so far.
-
-Guilhem fixed some bugs in `git annex unused`.
diff --git a/doc/design/assistant/blog/day_36__minimal_test_case.mdwn b/doc/design/assistant/blog/day_36__minimal_test_case.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_36__minimal_test_case.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Managed to find a minimal, 20 line test case for at least one of the ways
-git-annex was hanging with GHC's threaded runtime. Sent it off to
-haskell-cafe for analysis.
-[thread](http://thread.gmane.org/gmane.comp.lang.haskell.cafe/99334)
-
-Further managed to narrow the bug down to MissingH's use of logging code,
-that git-annex doesn't use. [bug report](http://bugs.debian.org/681621).
-So, I can at least get around this problem with a modified version of
-MissingH. Hopefully that was the only thing causing the hangs I was seeing!
diff --git a/doc/design/assistant/blog/day_37__back.mdwn b/doc/design/assistant/blog/day_37__back.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_37__back.mdwn
+++ /dev/null
@@ -1,64 +0,0 @@
-Back home and laptop is fixed.. back to work.
-
-Warmup exercises:
-
-* Went in to make it queue transfers when a broken symlink is received,
-  only to find I'd already written code to do that, and forgotten about it.
-  Heh. Did check that the git-annex branch is always sent first,
-  which will ensure that code always knows where to transfer a key from.
-  I had probably not considered this wrinkle when first writing the code;
-  it worked by accident.
-
-* Made the assistant check that a remote is known to have a key before
-  queueing a download from it.
-
-* Fixed a bad interaction between the `git annex map` command and the
-  assistant.
-
-----
-
-Tried using a modified version of `MissingH` that doesn't use `HSLogger`
-to make git-annex work with the threaded GHC runtime. Unfortunatly,
-I am still seeing hangs in at least 3 separate code paths when
-running the test suite. I may have managed to fix one of the hangs,
-but have not grokked what's causing the others.
-
-----
-
-I now have access to a Mac OSX system, thanks to Kevin M. I've fixed
-some portability problems in git-annex with it before, but today I tested
-the assistant on it:
-
-* Found a problem with the kqueue code that prevents incoming pushes from
-  being noticed.
-
-  The problem was that the newly added git ref file does not trigger an add
-  event. The kqueue code saw a generic change event for the refs directory,
-  but since the old file was being deleted and replaced by the new file,
-  the kqueue code, which already had the old file in its cache, did not notice
-  the file had been replaced.
-
-  I fixed that by making the kqueue code also track the inode of each file.
-  Currently that adds the overhead of a stat of each file, which could be
-  avoided if haskell exposed the inode returned by `readdir`. Room to
-  optimise this later...
-
-* Also noticed that the kqueue code was not separating out file deletions
-  from directory deletions. IIRC Jimmy had once mentioned a problem with file
-  deletions not being noticed by the assistant, and this could be responsible
-  for that, although the directory deletion code seems to handle them ok
-  normally. It was making the transfer watching thread not notice when
-  any transfers finished, for sure. I fixed this oversight, looking in the
-  cache to see if there used to be a file or a directory, and running the
-  appropriate hook.
-
-Even with these fixes, the assistant does not yet reliably transfer file
-contents on OSX. I think the problem is that with kqueue we're not
-guaranteed to get an add event, and a deletion event for a transfer
-info file -- if it's created and quickly deleted, the code that
-synthensizes those events doesn't run in time to know it existed.
-Since the transfer code relies on deletion events to tell when transfers
-are complete, it stops sending files after the first transfer, if the
-transfer ran so quickly it doesn't get the expected events. 
-
-So, will need to work on OSX support some more...
diff --git a/doc/design/assistant/blog/day_39__twice_is_enemy_action.mdwn b/doc/design/assistant/blog/day_39__twice_is_enemy_action.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_39__twice_is_enemy_action.mdwn
+++ /dev/null
@@ -1,66 +0,0 @@
-Beating my head against the threaded runtime some more. I can reproduce
-one of the hangs consistently by running 1000 git annex add commands
-in a loop. It hangs around 1% of the time, reading from `git cat-file`.
-
-Interestingly, `git cat-file` is not yet running at this point -- 
-git-annex has forked a child process, but the child has not yet exec'd it.
-Stracing the child git-annex, I see it stuck in a futex. Adding tracing,
-I see the child never manages to run any code at all.
-
-This really looks like the problem is once again in MissingH, which uses
-`forkProcess`. Which happens to come with a big warning about being very
-unsafe, in very subtle ways. Looking at the C code that the newer `process`
-library uses when sparning a pipe to a process, it messes around with lots of
-things; blocking signals, stopping a timer, etc. Hundreds of lines of C
-code to safely start a child process, all doing things that MissingH omits.
-
-That's the second time I've seemingly isolated a hang in the GHC threaded
-runtime to MissingH.
-
-And so I've started converting git-annex to use the new `process` library,
-for running all its external commands. John Goerzen had mentioned `process`
-to me once before when I found a nasty bug in MissingH, as the cool new
-thing that would probably eliminate the `System.Cmd.Utils` part of MissingH,
-but I'd not otherwise heard much about it. (It also seems to have the
-benefit of supporting Windows.)
-
-This is a big change and it's early days, but each time I see a hang, I'm
-converting the code to use `process`, and so far the hangs have just gone
-away when I do that.
-
----
-
-Hours later... I've converted *all* of git-annex to use `process`.
-
-In the er, process, the `--debug` switch stopped printing all the commands
-it runs. I may try to restore that later.
-
-I've not tested everything, but the test suite passes, even when
-using the threaded runtime. **MILESTONE**
-
-Looking forward to getting out of these weeds and back to useful work..
-
----
-
-Hours later yet.... The `assistant` branch in git now uses the threaded
-runtime. It works beautifully, using proper threads to run file transfers
-in.
-
-That should fix the problem I was seeing on OSX yesterday. Too tired to
-test it now.
-
---
-
-Amazingly, all the assistant's own dozen or so threads and thread
-synch variables etc all work great under the threaded runtime. I had
-assumed I'd see yet more concurrency problems there when switching to it,
-but it all looks good. (Or whatever problems there are are subtle ones?)
-
-I'm very relieved. The threaded logjam is broken! I had been getting
-increasingly worried that not having the threaded runtime available would
-make it very difficult to make the assistant perform really well, and cause
-problems with the webapp, perhaps preventing me from using Yesod.
-
-Now it looks like smooth sailing ahead. Still some hard problems, but
-it feels like with inotify and kqueue and the threaded runtime all
-dealt with, the really hard infrastructure-level problems are behind me.
diff --git a/doc/design/assistant/blog/day_3__more_races.mdwn b/doc/design/assistant/blog/day_3__more_races.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_3__more_races.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Today I worked on the race conditions, and fixed two of them. Both
-were fixed by avoiding using `git add`, which looks at the files currently
-on disk. Instead, `git annex watch` injects symlinks directly into git's
-index, using `git update-index`.
-
-There is one bad race condition remaining. If multiple processes have a
-file open for write, one can close it, and it will be added to the annex.
-But then the other can still write to it.
-
-----
-
-Getting away from race conditions for a while, I made `git annex watch`
-not annex `.gitignore` and `.gitattributes` files.
-
-And, I made it handle running out of inotify descriptors. By default,
-`/proc/sys/fs/inotify/max_user_watches` is 8192, and that's how many
-directories inotify can watch. Now when it needs more, it will print
-a nice message showing how to increase it with `sysctl`.
-
-FWIW, DropBox also uses inotify and has the same limit. It seems to not
-tell the user how to fix it when it goes over. Here's what `git annex
-watch` will say:
-
-	Too many directories to watch! (Not watching ./dir4299)
-	Increase the limit by running:
-	  echo fs.inotify.max_user_watches=81920 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p
diff --git a/doc/design/assistant/blog/day_40__dbus.mdwn b/doc/design/assistant/blog/day_40__dbus.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_40__dbus.mdwn
+++ /dev/null
@@ -1,100 +0,0 @@
-Really productive day today, now that I'm out of the threaded runtime
-tarpit!
-
-First, brought back `--debug` logging, better than before! As part of that, I
-wrote some 250 lines of code to provide a IMHO more pleasant interface to
-`System.Process` (itself only 650 lines of code) that avoids all the
-low-level setup, cleanup, and tuple unpacking. Now I can do things like
-write to a pipe to a process, and ensure it exits nonzero, this easily:
-
-	withHandle StdinHandle createProcessSuccess (proc "git" ["hash-object", "--stdin"]) $ \h ->
-		hHutStr h objectdata
-
-My interface also makes it easy to run nasty background processes,
-reading their output lazily.
-
-	lazystring <- withHandle StdoutHandle createBackgroundProcess (proc "find" ["/"]) hGetContents
-
-Any true Haskellers are shuddering here, I really should be using
-conduits or pipes, or something. One day..
-
-----
-
-The assistant needs to detect when removable drives are attached, and
-sync with them. This is a reasonable thing to be working on at this point,
-because it'll make the currently incomplete data transfer code fully usable
-for the sneakernet use case, and firming that up will probably be a good
-step toward handing other use cases involving data transfer over the
-network, including cases where network remotes are transientely available.
-
-So I've been playing with using dbus to detect mount events.
-There's a very nice Haskell library to use dbus.
-
-This simple program will detect removable drives being mounted, and
-works on Xfce (as long as you have automounting enabled in its
-configuration), and should also work on Gnome, and, probably, KDE:
-
-[[!format haskell """
-{-# LANGUAGE OverloadedStrings #-}
-
-import Data.List (sort)
-import DBus
-import DBus.Client
-import Control.Monad
-
-main = do
-	client <- connectSession
-    
-	listen client mountadded $ \s ->
-		putStrLn (show s)
-
-	forever $ getLine -- let listener thread run forever
-
-	where
-		mountadded = matchAny
-			{ matchInterface = Just "org.gtk.Private.RemoteVolumeMonitor"
-			, matchMember = Just "MountAdded"
-			}
-"""]]
-
-(Yeah... "org.gtk.Private.RemoteVolumeMonitor". There are so
-many things wrong with that string. What does gtk have to do with
-mounting a drive? Why is it Private? Bleagh. Should I only match
-the "MountAdded" member and not the interface? Seems everyone who does
-this relies on google to find other people who have cargo-culted it,
-or just runs `dbus-monitor` and picks out things.
-There seems to be no canonical list of events. Bleagh.)
-
-----
-
-Spent a while shaving a yak of needing a `getmntent` interface in Haskell.
-Found one in a hsshellscript library; since that library is not packaged
-in Debian, and I don't really want to depend on it, I extracted just
-the mtab and fstab parts of it into a little library in git-annex.
-
-----
-
-I've started putting together a MountWatcher thread. On systems without
-dbus (do OSX or the BSDs have dbus?), or if dbus is not running, it polls
-`/etc/mtab` every 10 seconds for new mounts. When dbus is available,
-it doesn't need the polling, and should notice mounts more quickly.
-
-Open question: Should it still poll even when dbus is available? Some of us
-like to mount our own drives, by hand and may have automounting disabled. It'd
-be good if the assistant supported that. This might need a
-`annex.no-dbus` setting, but I'd rather avoid needing such manual
-configuration.
-
-One idea is to do polling in addition to dbus, if `/etc/fstab` contains
-mount points that seem to be removable drives, on which git remotes lives.
-Or it could always do polling in addition to dbus, which is just some extra
-work. Or, it could try to introspect dbus to see if mount events will
-be generated.
-
-The MountWatcher so far only detects new mounts and prints out what
-happened. Next up: Do something in response to them. 
-
-This will involve manipulating the Annex state to belatedly add the Remote
-on the mount point.. tricky. And then, for Git Remotes, it should pull/push
-the Remote to sync git data. Finally, for all remotes, it will need to
-queue Transfers of file contents from/to the newly available Remote.
diff --git a/doc/design/assistant/blog/day_41__foo.mdwn b/doc/design/assistant/blog/day_41__foo.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_41__foo.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-I made the MountWatcher only use dbus if it sees a client connected to dbus
-that it knows will send mount events, or if it can start up such a client
-via dbus. (Fancy!) Otherwise it falls back to polling. This should be enough
-to support users who manually mount things -- if they have gvfs
-installed, it'll be used to detect their manual mounts, even when a desktop
-is not running, and if they don't have gvfs, they get polling.
-
-Also, I got the MountWatcher to work with KDE. Found a dbus event that's
-emitted when KDE mounts a drive, and this is also used. If anyone with
-some other desktop environment wants me to add support for it, and it uses
-dbus, it should be easy: Run `dbus-monitor`, plug in a drive, get
-it mounted, and send me a transcript.
-
-Of course, it'd also be nice to support anything similar on OSX that can
-provide mount event notifications. Not a priority though, since the polling
-code will work.
-
----
-
-Some OS X fixes today..
-
-* Jimmy pointed out that my `getmntent` code broke the build on OSX again.
-  Sorry about that.. I keep thinking Unix portability nightmares are a 80's
-  thing, not a 2010's thing. Anyway, adapted a lot of hackish C code
-  to emulate `getmntent` on BSD systems, and it seems to work. (I actually
-  think the BSD interface to this is saner than Linux's, but I'd rather have
-  either one than both, sigh..)
-* Kqueue was blocking all the threads on OSX. This is fixed, and the
-  assistant seems to be working on OSX again.
-
-----
-
-I put together a preliminary page thanking everyone who contributed to the
-git-annex Kickstarter. [[/assistant/thanks]] The wall-o-names is scary crazy humbling.
-
-----
-
-Improved `--debug` mode for the assistant, now every thread says whenever
-it's doing anything interesting, and also there are timestamps.
-
-----
-
-Had been meaning to get on with syncing to drives when they're mounted, but
-got sidetracked with the above. Maybe tomorrow. I did think through it
-in some detail as I was waking up this morning, and think I have a pretty
-good handle on it.
diff --git a/doc/design/assistant/blog/day_42__the_answer.mdwn b/doc/design/assistant/blog/day_42__the_answer.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_42__the_answer.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Made the MountWatcher update state for remotes located in a drive that
-gets mounted. This was tricky code. First I had to make remotes declare
-when they're located in a local directory. Then it has to rescan git
-configs of git remotes (because the git repo mounted at a mount point may
-change), and update all the state that a newly available remote can affect.
-
-And it works: I plug in a drive containing one of my git remotes, and the
-assistant automatically notices it and syncs the git repositories.
-
----
-
-But, data isn't transferred yet. When a disconnected remote becomes
-connected, keys should be transferred in both directions to get back into
-sync.
-
-To that end, added Yet Another Thread; the TransferScanner thread
-will scan newly available remotes to find keys, and queue low priority
-transfers to get them fully in sync.
-
-(Later, this will probably also be used for network remotes that become
-available when moving between networks. I think network-manager sends
-dbus events it could use..)
-
-This new thread is missing a crucial peice, it doesn't yet have a way to
-find the keys that need to be transferred. Doing that efficiently (without
-scanning the whole git working copy) is Hard. I'm considering design
-possibilities..
diff --git a/doc/design/assistant/blog/day_43__simple_scanner.mdwn b/doc/design/assistant/blog/day_43__simple_scanner.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_43__simple_scanner.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Milestone: I can run `git annex assistant`, plug in a USB drive, and it
-automatically transfers files to get the USB drive and current repo back in
-sync.
-
-I decided to implement the naive scan, to find files needing to be
-transferred. So it walks through `git ls-files` and checks each file
-in turn. I've deferred less expensive, more sophisticated approaches to later.
-
-I did some work on the TransferQueue, which now keeps track of the length
-of the queue, and can block attempts to add Transfers to it if it gets too
-long. This was a nice use of STM, which let me implement that without using
-any locking.
-
-[[!format haskell """
-atomically $ do
-        sz <- readTVar (queuesize q)
-        if sz <= wantsz
-                then enqueue schedule q t (stubInfo f remote)
-                else retry -- blocks until queuesize changes
-"""]]
-
-Anyway, the point was that, as the scan finds Transfers to do,
-it doesn't build up a really long TransferQueue, but instead is blocked
-from running further until some of the files get transferred. The resulting
-interleaving of the scan thread with transfer threads means that transfers
-start fairly quickly upon a USB drive being plugged in, and kind of hides
-the innefficiencies of the scanner, which will most of the time be
-swamped out by the IO bound large data transfers.
-
----
-
-At this point, the assistant should do a good job of keeping repositories
-in sync, as long as they're all interconnected, or on removable media
-like USB drives. There's lots more work to be done to handle use cases
-where repositories are not well-connected, but since the assistant's
-[[syncing]] now covers at least a couple of use cases, I'm ready to move
-on to the next phase. [[Webapp]], here we come!
diff --git a/doc/design/assistant/blog/day_44__webapp_basics.mdwn b/doc/design/assistant/blog/day_44__webapp_basics.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_44__webapp_basics.mdwn
+++ /dev/null
@@ -1,83 +0,0 @@
-After an all-nighter, I have `git annex webapp` launching a WebApp!
-
-It doesn't do anything useful yet, just uses Yesod to display a couple of
-hyperlinked pages and a favicon, securely.
-
-The binary size grew rather alarmingly, BTW. :) Indeed, it's been growing
-for months..
-
-	-rwxr-xr-x 1 root root 9.4M Jul 21 16:59 git-annex-no-assistant-stripped
-	-rwxr-xr-x 1 joey joey  12M Jul 25 20:54 git-annex-no-webapp-stripped
-	-rwxr-xr-x 1 joey joey  17M Jul 25 20:52 git-annex-with-webapp-stripped
-
-----
-
-Along the way, some Not Invented Here occurred:
-
-I didn't use the yesod scaffolded site, because it's a lot of what
-seems mostly to be cruft in this use case. And because I don't like
-code generated from templates that people are then expected to edit. Ugh.
-That's my least favorite part of Yesod. This added some pain, since
-I had to do everything the hard way.
-
-I didn't use [wai-handler-launch](http://hackage.haskell.org/package/wai-handler-launch)
-because:
-
-  * It seems broken on IPv6 capable machines (it always opens
-    `http://127.0.0.1:port/` even though it apparently doesn't always
-    listen there.. I think it was listening on my machine's ipv6 address
-    instead. I know, I know; I should file a bug about this..)
-  * It always uses port 4587, which is **insane**. What if you have two
-    webapps?
-  * It requires javascript in the web browser, which
-    is used to ping the server, and shut it down when the web browser closes
-    (which behavior is wrong for git-annex anyway, since the daemon should
-    stay running across browser closes).
-  * It opens the webapp on web server startup, which is wrong for git-annex; 
-    instead the command `git annex webapp` will open the webapp,
-    after `git annex assistant` started the web server.
-
-Instead, I rolled my own WAI webapp laucher, that binds to any free port
-on localhost, It does use `xdg-open` to launch the web browser, 
-like wai-handler-launch (or just `open` on OS X).
-
-Also, I wrote my own WAI logger, which logs using System.Log.Logger,
-instead of to stdout, like `runDebug` does.
-
-----
-
-The webapp only listens for connections from localhost, but that's
-not sufficient "security". Instead, I added a secret token to
-every url in the webapp, that only `git annex webapp` knows about.
-
-But, if that token is passed to `xdg-open` on its command line,
-it will be briefly visible to local attackers in the parameters of
-`xdg-open`.. And if the web browser's not already running, it'll run
-with it as a parameter, and be *very* visible.
-
-So instead, I used a nasty hack. On startup, the assistant
-will create a html file, readably only by the user, that redirects
-the user to the real site url. Then `git annex webapp` will run
-xdg-open on that file.
-
-----
-
-Making Yesod check the `auth=` parameter (to verify that the secret token
-is right) is when using Yesod started to pay off. Yesod has a simple
-`isAuthorized` method that can be overridden to do your own authentication
-like this.
-
-But Yesod really started to shine when I went to add the `auth=` parameter
-to every url in the webapp. There's a `joinPath` method can can be used
-to override the default url builder. And every type-safe url in the
-application goes through there, so it's perfect for this.
-
-I just had to be careful to make it not add `auth=` to the url for the
-favicon, which is included in the "Permission Denied" error page. That'd be
-an amusing security hole..
-
-----
-
-Next up: Doing some AJAX to get a dynamic view of the state of the daemon,
-including currently running transfers, in the webapp. AKA stuff I've never
-done before, and that, unlike all this heavy Haskell Yesod, scares me. :)
diff --git a/doc/design/assistant/blog/day_45__long_polling.mdwn b/doc/design/assistant/blog/day_45__long_polling.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_45__long_polling.mdwn
+++ /dev/null
@@ -1,66 +0,0 @@
-The webapp now displays actual progress bars, for the actual transfers
-that the assistant is making! And it's seriously shiny.
-
-[[!img full.png]]
-
-Yes, I used Bootstrap. I can see why so many people are using it,
-that the common complaint is everything looks the same. I spent a few hours
-mocking up the transfer display part of the WebApp using Bootstrap, and
-arrived at something that doesn't entirely suck remarkably quickly.
-
-The really sweet thing about Bootstrap is that when I resized my browser to
-the shape of a cell phone, it magically redrew the WebApp like so:
-
-[[!img phone.png]]
-
----
-
-To update the display, the WebApp uses two techniques. On noscript
-browsers, it just uses a meta refresh, which is about the best I can do. I
-welcome feedback; it might be better to just have an "Update" button in
-this case.
-
-With javascript enabled, it uses long polling, done over AJAX. There are
-some other options I considered, including websockets, and server-sent
-events. Websockets seem too new, and while there's a WAI module supporting
-server-sent events, and even an example of them in the Yesod book, the
-module is not packaged for Debian yet. Anyway, long polling is the most
-widely supported, so a good starting place. It seems to work fine too, I
-don't really anticipate needing the more sophisticated methods.
-
-(Incidentially, this's the first time I've ever written code that uses AJAX.)
-
-Currently the status display is rendered in html by the web server, and
-just updated into place by javascript. I like this approach since it
-keeps the javascript code to a minimum and the pure haskell code to a
-maximum. But who knows, I may have to switch to JSON that gets rendered by
-javascript, for some reason, later on.
-
----
-
-I was very happy with Yesod when I managed to factor out a
-general purpose widget that adds long-polling and meta-refresh to any
-other widget. I was less happy with Yesod when I tried to include
-jquery on my static site and it kept serving up a truncated version of it.
-Eventually worked around what's seemingly a bug in the default WAI
-middleware, by disabling that middleware.
-
-----
-
-Also yesterday I realized there were about 30 comments stuck in moderation on
-this website. I thought I had a feed of those, but obviously I didn't. I've
-posted them all, and also read them all.
-
-----
-
-Next up is probably some cleanup of bugs and minor todos. Including
-figuring out why `watch` has started to segfault on OSX when it was
-working fine before.
-
-After that, I need to build a way to block the long polling request
-until the DaemonStatus and/or TransferQueue change from the version
-previously displayed by the WebApp. An interesting concurrency problem..
-
-Once I have that working, I can reduce the current 3 second delay between
-refreshes to a very short delay, and the WebApp will update in
-near-realtime as changes come in.
diff --git a/doc/design/assistant/blog/day_45__long_polling/full.png b/doc/design/assistant/blog/day_45__long_polling/full.png
deleted file mode 100644
Binary files a/doc/design/assistant/blog/day_45__long_polling/full.png and /dev/null differ
diff --git a/doc/design/assistant/blog/day_45__long_polling/phone.png b/doc/design/assistant/blog/day_45__long_polling/phone.png
deleted file mode 100644
Binary files a/doc/design/assistant/blog/day_45__long_polling/phone.png and /dev/null differ
diff --git a/doc/design/assistant/blog/day_46__notification_pools.mdwn b/doc/design/assistant/blog/day_46__notification_pools.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_46__notification_pools.mdwn
+++ /dev/null
@@ -1,68 +0,0 @@
-Focus today was writing a notification broadcaster library. This is a way to
-send a notification to a set of clients, any of which can be blocked
-waiting for a new notification to arrive. A complication is that any number
-of clients may be be dead, and we don't want stale notifications for those
-clients to pile up and leak memory.
-
-It took me 3 tries to find the solution, which turns out to be head-smackingly
-simple: An array of SampleVars, one per client.
-
-Using SampleVars means that clients only see the most recent notification,
-but when the notification is just "the assistant's state changed somehow;
-display a refreshed rendering of it", that's sufficient.
-
-----
-
-First use of that was to make the thread that woke up every 10 minutes
-and checkpointed the daemon status to disk also wait for a notification
-that it changed. So that'll be more current, and use less IO.
-
-----
-
-Second use, of course, was to make the WebApp block long polling clients
-until there is really a change since the last time the client polled.
-
-To do that, I made one change to my Yesod routes:
-
-[[!format diff """
-	-/status StatusR GET
-	+/status/#NotificationId StatusR GET
-"""]]
-
-Now I find another reason to love Yesod, because after doing that,
-I hit "make".. and fixed the type error. And hit make.. and fixed
-the type error. And then it just freaking worked! Html was generated with
-all urls to /status including a `NotificationId`, and the handler for
-that route got it and was able to use it:
-
-[[!format haskell """
-	{- Block until there is an updated status to display. -}
-	b <- liftIO $ getNotificationBroadcaster webapp
-	liftIO $ waitNotification $ notificationHandleFromId b nid
-"""]]
-
-And now the WebApp is able to display transfers in realtime!
-When I have both the WebApp and `git annex get` running on the same screen,
-the WebApp displays files that git-annex is transferring about as fast
-as the terminal updates.
-
-The [[progressbars]] still need to be sorted out, but otherwise
-the WebApp is a nice live view of file transfers.
-
----
-
-I also had some fun with Software Transactional Memory. Now when the
-assistant moves a transfer from its queue of transfers to do, to its map of
-transfers that are currently running, it does so in an atomic transaction.
-This will avoid the transfer seeming to go missing (or be listed twice) if
-the webapp refreshes at just the wrong point in time. I'm really starting
-to get into STM.
-
-----
-
-Next up, I will be making the WebApp maintain a list of notices, displayed
-on its sidebar, scrolling new notices into view, and removing ones the user
-closes, and ones that expire. This will be used for displaying errors, as
-well as other communication with the user (such as displaying a notice
-while a git sync is in progress with a remote, etc). Seems worth doing now,
-so the basic UI of the WebApp is complete with no placeholders.
diff --git a/doc/design/assistant/blog/day_47__alert_messages.mdwn b/doc/design/assistant/blog/day_47__alert_messages.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_47__alert_messages.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Some days I spend 2 hours chasing red herrings (like "perhaps my JSON ajax
-calls arn't running asynchronoously?") that turn out to be a simple
-one-word typo. This was one of them.
-
-However, I did get the sidebar displaying alert messages, which can be
-easily sent to the user from any part of the assistant. This includes
-transient alerts of things it's doing, which disappear once the action
-finishes, and long-term alerts that are displayed until the user closes
-them. It even supports rendering arbitrary Yesod widgets as alerts, so
-they can also be used for asking questions, etc.
-
-Time for a screencast!
-
-<video controls src="http://joeyh.name/screencasts/git-annex-webapp.ogg"></video>
diff --git a/doc/design/assistant/blog/day_48__intro.mdwn b/doc/design/assistant/blog/day_48__intro.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_48__intro.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Lots of WebApp UI improvements, mostly around the behavior when
-displaying alert messages. Trying to make the alerts informative
-without being intrusively annoying, think I've mostly succeeded now.
-
-Also, added an intro display. Shown is the display with only one repo;
-if there are more repos it also lists them all.
-
-[[!img screenshot/intro.png]]
diff --git a/doc/design/assistant/blog/day_49__first_run_experience.mdwn b/doc/design/assistant/blog/day_49__first_run_experience.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_49__first_run_experience.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-Started work on the interface displayed when the webapp is started 
-with no existing git-annex repository. All this needs to do is walk the user
-through setting up a repository, as simply as possible.
-
-A tricky part of this is that most of git-annex runs in the Annex monad,
-which requires a git-annex repository. Luckily, much of the webapp
-does not run in Annex, and it was pretty easy to work around the parts that
-do. Dodged a bullet there.
-
-There will, however, be a tricky transition from this first run webapp,
-to a normally fully running git-annex assistant and webapp. I think the
-first webapp will have to start up all the normal threads once it makes the
-repository, and then redirect the user's web browser to the full webapp.
-
-Anyway, the UI I've made is very simple: A single prompt, for the
-directory where the repository should go. With, eventually, tab completion,
-sanity checking (putting the repository in "/" is not good, and making it
-all of "$HOME" is probably unwise).
-
-[[!img screenshot/firstrun.png]]
-
-Ideally most users will accept the default, which will be something
-like `/home/username/Desktop/Annex`, and be through this step in seconds.
-
-Suggestions for a good default directory name appreciated.. Putting it on a
-folder that will appear on the desktop seems like a good idea, when there's
-a Desktop directory. I'm unsure if I should name it something specific like
-"GitAnnex", or something generic like "Synced".
-
-Time for the first of probably many polls!
-
-What should the default directory name used by the git-annex assistant be?
-
-[[!poll open=no 19 "Annex" 7 "GitAnnex" 1 "~/git-annex/" 10 "Synced" 0 "AutoSynced" 1 "Shared" 10 "something lowercase!" 1 "CowboyNeal" 1 "Annexbox"]]
-
-(Note: This is a wiki. You can edit this page to add your own
-[[ikiwiki/directive/poll]] options!)
-
-[[!tag polls]]
diff --git a/doc/design/assistant/blog/day_4__speed.mdwn b/doc/design/assistant/blog/day_4__speed.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_4__speed.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-Only had a few hours to work today, but my current focus is speed, and I
-have indeed sped up parts of `git annex watch`.
-
-One thing folks don't realize about git is that despite a rep for being
-fast, it can be rather slow in one area: Writing the index. You don't
-notice it until you have a lot of files, and the index gets big. So I've
-put a lot of effort into git-annex in the past to avoid writing the index
-repeatedly, and queue up big index changes that can happen all at once. The
-new `git annex watch` was not able to use that queue. Today I reworked the
-queue machinery to support the types of direct index writes it needs, and
-now repeated index writes are eliminated.
-
-... Eliminated too far, it turns out, since it doesn't yet *ever* flush
-that queue until shutdown! So the next step here will be to have a worker
-thread that wakes up periodically, flushes the queue, and autocommits.
-(This will, in fact, be the start of the [[syncing]] phase of my roadmap!)
-There's lots of room here for smart behavior. Like, if a lot of changes are
-being made close together, wait for them to die down before committing. Or,
-if it's been idle and a single file appears, commit it immediately, since
-this is probably something the user wants synced out right away. I'll start
-with something stupid and then add the smarts.
-
-(BTW, in all my years of programming, I have avoided threads like the nasty
-bug-prone plague they are. Here I already have three threads, and am going to
-add probably 4 or 5 more before I'm done with the git annex assistant. So
-far, it's working well -- I give credit to Haskell for making it easy to
-manage state in ways that make it possible to reason about how the threads
-will interact.)
-
-What about the races I've been stressing over? Well, I have an ulterior
-motive in speeding up `git annex watch`, and that's to also be able to
-**slow it down**. Running in slow-mo makes it easy to try things that might
-cause a race and watch how it reacts. I'll be using this technique when
-I circle back around to dealing with the races.
-
-Another tricky speed problem came up today that I also need to fix. On
-startup, `git annex watch` scans the whole tree to find files that have
-been added or moved etc while it was not running, and take care of them.
-Currently, this scan involves re-staging every symlink in the tree. That's
-slow! I need to find a way to avoid re-staging symlinks; I may use `git
-cat-file` to check if the currently staged symlink is correct, or I may
-come up with some better and faster solution. Sleeping on this problem.
-
-----
-
-Oh yeah, I also found one more race bug today. It only happens at startup
-and could only make it miss staging file deletions.
diff --git a/doc/design/assistant/blog/day_50__directory_name.mdwn b/doc/design/assistant/blog/day_50__directory_name.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_50__directory_name.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Based on the results of yesterday's poll, the WebApp defaults to
-`~/Desktop/annex` when run in the home directory. If there's no `Desktop`
-directory, it uses just `~/annex`. And if run from some other place than
-the home directory, it assumes you want to use cwd. Of course, you can
-change this default, but I think it's a good one for most use cases.
-
-----
-
-My work today has all been on making **one second** of the total lifetime
-of the WebApp work. It's the very tricky second in between clicking on
-"Make repository" and being redirected to a WebApp running in your new
-repository. The trickiness involves threads, and MVars, and
-multiple web servers, and I don't want to go into details here.
-I'd rather forget. ;-)
-
-Anyway, it works; you can run "git annex webapp" and be walked right
-through to having a usable repository! Now I need to see about adding
-that to the desktop menus, and making "git annex webapp", when run a second
-time, remembering where your repository is. I'll use
-`~/.config/git-annex/repository` for storing that.
diff --git a/doc/design/assistant/blog/day_51__desktop.mdwn b/doc/design/assistant/blog/day_51__desktop.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_51__desktop.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Now installing git-annex automatically generates a freedesktop.org .desktop
-file, and installs it, either system-wide (root) or locally (user). So
-`Menu -> Internet -> Git Annex` will start up the web app.
-
-(I don't entirely like putting it on the Internet menu, but the
-Accessories menu is not any better (and much more crowded here), 
-and there's really no menu where it entirely fits.)
-
-I generated that file by writing a generic library to deal with
-freedesktop.org desktop files and locations. Which seemed like overkill at
-the time, but then I found myself continuing to use that library. Funny how
-that happens.
-
-So, there's also another .desktop file that's used to autostart the
-`git-annex assistant` daemon when the user logs into the desktop.
-
-This even works when git-annex is installed to the ugly non-PATH location
-`.cabal/bin/git-annex` by Cabal! To make that work, it records the path
-the binary is at to a freedesktop.org data file, at install time.
-
----
-
-That should all work in Gnome, KDE, XFCE, etc. Not Mac OSX I'm guessing...
-
----
-
-Also today, I added a sidebar notification when the assistant notices new
-files. To make that work well, I implemented merging of related sidebar
-action notifications, so the effect is that there's one notification that
-collectes a list of recently added files, and transient notifications that
-show up if a really big file is taking a while to checksum.
-
-I'm pleased that the notification interface is at a point where I was able
-to  implement all that, entirely in pure functional code.
diff --git a/doc/design/assistant/blog/day_52__file_browser.mdwn b/doc/design/assistant/blog/day_52__file_browser.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_52__file_browser.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Today I added a "Files" link in the navbar of the WebApp. It looks like a
-regular hyperlink, but clicking on it opens up your desktop's native file
-manager, to manage the files in the repository!
-
-Quite fun to be able to do this kind of thing from a web page. :)
-
----
-
-Made `git annex init` (and the WebApp) automatically generate a description
-of the repo when none is provided.
-
----
-
-Also worked on the configuration pages some. I don't want to get ahead
-of myself by diving into the full configuration stage yet, but I am at
-least going to add a configuration screen to clone the repo to a removable
-drive.
-
-After that, the list of transfers on the dashboard needs some love.
-I'll probably start by adding UI to cancel running transfers, and then
-try to get drag and drop reordering of transfers working.
diff --git a/doc/design/assistant/blog/day_54__adding_removable_drives.mdwn b/doc/design/assistant/blog/day_54__adding_removable_drives.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_54__adding_removable_drives.mdwn
+++ /dev/null
@@ -1,99 +0,0 @@
-Spent yesterday and today making the WebApp handle adding removable drives.
-
-While it needs more testing, I think that it's now possible to use the WebApp
-for a complete sneakernet usage scenario.
-
-* Start up the webapp, let it make a local repo.
-* Add some files, by clicking to open the file manager, and dragging them in.
-* Plug in a drive, and tell the webapp to add it.
-* Wait while files sync..
-* Take the drive to another computer, and repeat the process there.
-
-No command-line needed, and files will automatically be synced between
-two or more computers using the drive.
-
-Sneakernet is only one usage scenario for the git-annex assistant, but I'm
-really happy to have one scenario 100% working!
-
-Indeed, since the assistant and webapp can now actually do something
-useful, I'll probably be merging them into `master` soon.
-
-Details follow..
-
----
-
-So, yesterday's part of this was building the configuration page to add
-a removable drive. That needs to be as simple as possible, and it currently
-consists of a list of things git-annex thinks might be mount points of
-removable drives, along with how much free space they have. Pick a drive,
-click the pretty button, and away it goes..
-
-(I decided to make the page so simple it doesn't even ask where you want
-to put the directory on the removable drive. It always puts it in
-a "annex" directory. I might add an expert screen later, but experts can
-always set this up themselves at the command line too.)
-
-I also fought with Yesod and Bootstrap rather a lot to make the form look good.
-Didn't entirely succeed, and had to file a bug on Yesod about its handling of
-check boxes. (Bootstrap also has a bug, IMHO; its drop down lists are not
-always sized wide enough for their contents.)
-
-Ideally this configuration page would listen for mount events, and refresh
-its list. I may add that eventually; I didn't have a handy channel it
-could use to do that, so defferred it. Another idea is to have the mount
-event listener detect removable drives that don't have an annex on them yet,
-and pop up an alert with a link to this configuration page.
-
-----
-
-Making the form led to a somewhat interesting problem: How to tell if a mounted
-filesystem is a removable drive, or some random thing like `/proc` or
-a fuse filesystem. My answer, besides checking that the user can
-write to it, was various heuristics, which seem to work ok, at least here..
-
-[[!format haskell """
-               sane Mntent { mnt_dir = dir, mnt_fsname = dev }
-                        {- We want real disks like /dev/foo, not
-                         - dummy mount points like proc or tmpfs or
-                         - gvfs-fuse-daemon. -}
-                        | not ('/' `elem` dev) = False
-                        {- Just in case: These mount points are surely not
-                         - removable disks. -}
-                        | dir == "/" = False
-                        | dir == "/tmp" = False
-                        | dir == "/run/shm" = False
-                        | dir == "/run/lock" = False
-"""]]
-
-----
-
-Today I did all the gritty coding to make it create a git repository on the
-removable drive, and tell the Annex monad about it, and ensure it gets synced.
-
-As part of that, it detects when the removable drive's filesystem doesn't
-support symlinks, and makes a bare repository in that case. Another expert
-level config option that's left out for now is to always make a bare
-repository, or even to make a directory special remote rather than a git
-repository at all. (But directory special remotes cannot support the
-sneakernet use case by themselves...)
-
-----
-
-Another somewhat interesting problem was what to call the git remotes
-that it sets up on the removable drive and the local repository.
-Again this could have an expert-level configuration, but the defaults
-I chose are to use the hostname as the remote name on the removable drive,
-and to use the basename of the mount point of the removable drive as the 
-remote name in the local annex.
-
-----
-
-Originally, I had thought of this as cloning the repository to the drive.
-But, partly due to luck, I started out just doing a `git init` to make
-the repository (I had a function lying around to do that..).
-
-And as I worked on it some more, I realized this is not as simple as a
-clone. It's a bi-directional sync/merge, and indeed the removable drive may
-have all the data already in it, and the local repository have just been
-created. Handling all the edge cases of that (like, the local repository
-may not have a "master" branch yet..) was fun!
diff --git a/doc/design/assistant/blog/day_55__alerts.mdwn b/doc/design/assistant/blog/day_55__alerts.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_55__alerts.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Nothing flashy today; I was up all night trying to download photos taken 
-by a robot lowered onto Mars by a skycrane.
-
-Some work on alerts. Added an alert when a file transfer succeeds or fails.
-Improved the alert combining code so it handles those alerts, and
-simplified it a lot, and made it more efficient.
-
-Also made the text of action alerts change from present to past tense when
-the action finishes. To support that I wrote a fun data type, a `TenseString`
-that can be rendered in either tense.
diff --git a/doc/design/assistant/blog/day_56__transfer_control.mdwn b/doc/design/assistant/blog/day_56__transfer_control.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_56__transfer_control.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-A bit under the weather, but got into building buttons to control running
-and queued transfers today. The html and javascript side is done, with
-each transfer now having a cancel button, as well as a pause/start button.
-
-Canceling queued transfers works. Canceling running transfers will
-need some more work, because killing a thread doesn't kill the processes
-being run by that thread. So I'll have to make the assistant run separate
-git-annex processes for transfers, that can be individually sent signals.
diff --git a/doc/design/assistant/blog/day_57__afk.mdwn b/doc/design/assistant/blog/day_57__afk.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_57__afk.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Probably won't be doing any big coding on the git-annex assistant in the
-upcoming week, as I'll be traveling and/or slightly ill enough that I can't
-fully get into <a href="http://en.wikipedia.org/wiki/Flow_(psychology)">flow</a>.
-
----
-
-There was a new Yesod release this week, which required minor changes to
-make the webapp build with it. I managed to keep the old version of Yesod
-also supported, and plan to keep that working so it can be built with the
-version of Yesod available in, eg, Linux distributions. TBD how much pain
-that will involve going forward.
-
----
-
-I'm mulling over how to support stopping/pausing transfers. The problem
-is that if the assistant is running a transfer in one thread, and the
-webapp is used to cancel it, killing that thread won't necessarily stop the
-transfer, because, at least in Haskell's thread model, killing a thread
-does not kill processes started by the thread (like rsync).
-
-So one option is to have the transfer thread run a separate git-annex
-process, which will run the actual transfer. And killing that process will
-stop the transfer nicely. However, using a separate git-annex process means
-a little startup overhead for each file transferred (I don't know if it'd
-be enough to matter). Also, there's the problem that git-annex is sometimes
-not installed in PATH (wish I understood why cabal does that), which
-makes it kind of hard for it to run itself. (It can't simply fork, sadly.
-See past horrible pain with forking and threads.)
-
-The other option is to change the API for git-annex remotes, so that
-their `storeKey` and `retrieveKeyFile` methods return a pid of the program
-that they run. When they *do* run a program.. not all remotes do. This
-seems like it'd make the code in the remotes hairier, and it is also asking
-for bugs, when a remote's implementation changes. Or I could go
-lower-level, and make every place in the utility libraries that forks a
-process record its pid in a per-thread MVar. Still seems to be asking for
-bugs.
-
-Oh well, at least git-annex is already crash-safe, so once I figure out
-how to kill a transfer process, I can kill it safely. :)
diff --git a/doc/design/assistant/blog/day_58__more_transfer_control.mdwn b/doc/design/assistant/blog/day_58__more_transfer_control.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_58__more_transfer_control.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Unexpectedly managed a mostly productive day today. 
-
-Went ahead with making the assistant run separate `git-annex` processes for
-transfers. This will currently fail if git-annex is not installed in PATH.
-(Deferred dealing with that.)
-
-To stop a transfer, the webapp needs to signal not just the git-annex
-process, but all its children. I'm using process groups for this, which is
-working, but I'm not extremely happy with.
-
-Anyway, the webapp's UI can now be used for stopping transfers, and it
-wasn't far from there to also implementing pausing of transfers. 
-
-Pausing a transfer is actually the same as stopping it, except a special
-signal is sent to the transfer control thread, which keeps running, despite
-the git-annex process having been killed, waits for a special resume
-signal, and restarts the transfer. This way a paused transfer continues to
-occupy a transfer slot, which prevents other queued transfers from running.
-This seems to be the behavior that makes sense.
-
-Still need to wire up the webapp's button for starting a transfer. For a
-paused transfer, that will just need to resume it. I have not decided what
-the button should do when used on a transfer that is queued but not running
-yet. Maybe it forces it to run even if all transfer slots are already in
-use? Maybe it stops one of the currently running transfers to free up a
-slot?
diff --git a/doc/design/assistant/blog/day_59__dinner.mdwn b/doc/design/assistant/blog/day_59__dinner.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_59__dinner.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Actually did do some work on the webapp today, just fixing a bug I noticed
-in a spare moment. Also managed a bit in the plane earlier this week,
-implementing resuming of paused transfers. (Still need to test that.)
-
-But the big thing today was dinner with one of my major Kickstarter
-backers, and as it turned out, "half the Haskell community of San
-Francisco" (3 people). Enjoyed talking about git-annex and haskell with
-them.
-
-I'm looking forward to getting back home and back to work on Monday..
diff --git a/doc/design/assistant/blog/day_5__committing.mdwn b/doc/design/assistant/blog/day_5__committing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_5__committing.mdwn
+++ /dev/null
@@ -1,57 +0,0 @@
-After a few days otherwise engaged, back to work today.
-
-My focus was on adding the committing thread mentioned in [[day_4__speed]].
-I got rather further than expected!
-
-First, I implemented a really dumb thread, that woke up once per second,
-checked if any changes had been made, and committed them. Of course, this
-rather sucked. In the middle of a large operation like untarring a tarball,
-or `rm -r` of a large directory tree, it made lots of commits and made
-things slow and ugly. This was not unexpected.
-
-So next, I added some smarts to it. First, I wanted to stop it waking up
-every second when there was nothing to do, and instead blocking wait on a
-change occurring. Secondly, I wanted it to know when past changes happened,
-so it could detect batch mode scenarios, and avoid committing too
-frequently. 
-
-I played around with combinations of various Haskell thread communications
-tools to get that information to the committer thread: `MVar`, `Chan`,
-`QSem`, `QSemN`. Eventually, I realized all I needed was a simple channel
-through which the timestamps of changes could be sent. However, `Chan`
-wasn't quite suitable, and I had to add a dependency on 
-[Software Transactional Memory](http://en.wikipedia.org/wiki/Software_Transactional_Memory),
-and use a `TChan`. Now I'm cooking with gas!
-
-With that data channel available to the committer thread, it quickly got
-some very nice smart behavior. Playing around with it, I find it commits
-*instantly* when I'm making some random change that I'd want the
-git-annex assistant to sync out instantly; and that its batch job detection
-works pretty well too.
-
-There's surely room for improvement, and I made this part of the code
-be an entirely pure function, so it's really easy to change the strategy.
-This part of the committer thread is so nice and clean, that here's the
-current code, for your viewing pleasure:
-
-[[!format haskell """
-{- Decide if now is a good time to make a commit.
- - Note that the list of change times has an undefined order.
- -
- - Current strategy: If there have been 10 commits within the past second,
- - a batch activity is taking place, so wait for later.
- -}
-shouldCommit :: UTCTime -> [UTCTime] -> Bool
-shouldCommit now changetimes
-       | len == 0 = False
-       | len > 4096 = True -- avoid bloating queue too much
-       | length (filter thisSecond changetimes) < 10 = True
-       | otherwise = False -- batch activity
-       where
-               len = length changetimes
-               thisSecond t = now `diffUTCTime` t <= 1
-"""]]
-
-Still some polishing to do to eliminate minor inefficiencies and deal
-with more races, but this part of the git-annex assistant is now very usable,
-and will be going out to my beta testers soon!
diff --git a/doc/design/assistant/blog/day_60__taking_stock.mdwn b/doc/design/assistant/blog/day_60__taking_stock.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_60__taking_stock.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-As I prepare to dive back into development, now is a good time to review
-what I've built so far, and how well I'm keeping up with my planned
-[[roadmap|assistant]].
-
-I started working two and a half months ago, so am nearing the end of
-the three months I originally asked to be funded for on Kickstarter.
-
-I've built much of what I planned to build in the first three months --
-[[inotify]] is done (and kqueue is basically working, but needs scalability
-work), local [[syncing]] is done, the [[webapp]] works, and I've built some
-of the first [[configurators]]. It's all functional in a narrow use case
-involving syncing to removable drives. 
-
-[[progressbars]] still need to be dealt with, and network syncing needs to
-be revisited soon, so that I can start building easy configurators for
-further use cases, like using the cloud, or another machine on the local
-network.
-
-I think I'm a little behind my original schedule, but not too bad,
-and at the same time, I think I've built things rather more solidly than I
-expected them to be at this point. I'm particularly happy with how well
-the inotify code works, no matter what is thrown at it, and how nice
-the UI in the webapp is shaping up to be.
-
-----
-
-I also need to get started on fulfilling my Kickstarter rewards, and
-I was happy to spend some time in the airport working on the main
-blocker toward that, a lack of a scalable git-annex logo, which is needed
-for printing on swag.
-
-Turns out that inkscape has some amazing bitmap tracing capabilities.
-I was able to come up with this scalable logo in short order, it 
-actually took longer to add back the colors, as the tracer generated a
-black and white version.
-
-With that roadblock out of the way, I am moving toward ordering large
-quantities of usb drives, etc.
-
-[[logo.svg]]
diff --git a/doc/design/assistant/blog/day_61__network_connection_detection.mdwn b/doc/design/assistant/blog/day_61__network_connection_detection.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_61__network_connection_detection.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Today, added a thread that deals with recovering when there's been a loss
-of network connectivity. When the network's down, the normal immediate
-syncing of changes of course doesn't work. So this thread detects when the
-network comes back up, and does a pull+push to network remotes, and
-triggers scanning for file content that needs to be transferred.
-
-I used dbus again, to detect events generated by both network-manager and
-wicd when they've sucessfully brought an interface up. Or, if they're not
-available, it polls every 30 minutes.
-
-When the network comes up, in addition to the git pull+push, it also
-currently does a full scan of the repo to find files whose contents
-need to be transferred to get fully back into sync.
-
-I think it'll be ok for some git pulls and pushes to happen when
-moving to a new network, or resuming a laptop (or every 30 minutes when
-resorting to polling). But the transfer scan is currently really too heavy
-to be appropriate to do every time in those situations. I have an idea for
-avoiding that scan when the remote's git-annex branch has not changed. But
-I need to refine it, to handle cases like this:
-
-1. a new remote is added
-2. file contents start being transferred to (or from it)
-3. the network is taken down
-4. all the queued transfers fail
-5. the network comes back up
-6. the transfer scan needs to know the remote was not all in sync
-   before #3, and so should do a full scan despite the git-annex branch
-   not having changed
-
----
-
-Doubled the ram in my netbook, which I use for all development. Yesod needs
-rather a lot of ram to compile and link, and this should make me quite a
-lot more productive. I was struggling with OOM killing bits of chromium
-during my last week of development.
diff --git a/doc/design/assistant/blog/day_62__smarter_syncing.mdwn b/doc/design/assistant/blog/day_62__smarter_syncing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_62__smarter_syncing.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Woke up this morning with most of the design for a smarter approach to
-[[syncing]] in my head. (This is why I sometimes slip up and tell people I
-work on this project 12 hours a day..)
-
-To keep the current `assistant` branch working while I make changes
-that break use cases that are working, I've started 
-developing in a new branch, `assistant-wip`.
-
-In it, I've started getting rid of unnecessary expensive transfer scans.
-
-First optimisation I've done is to detect when a remote that was
-disconnected has diverged its `git-annex` branch from the local branch.
-Only when that's the case does a new transfer scan need to be done, to find
-out what new stuff might be available on that remote, to have caused the
-change to its branch, while it was disconnected.
-
-That broke a lot of stuff. I have a plan to fix it written down in
-[[syncing]]. It'll involve keeping track of whether a transfer scan has
-ever been done (if not, one should be run), and recording logs when
-transfers failed, so those failed transfers can be retried when the
-remote gets reconnected.
diff --git a/doc/design/assistant/blog/day_63__transfer_retries.mdwn b/doc/design/assistant/blog/day_63__transfer_retries.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_63__transfer_retries.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Implemented everything I planned out yesterday: Expensive scans are only
-done once per remote (unless the remote changed while it was disconnected),
-and failed transfers are logged so they can be retried later.
-
-Changed the TransferScanner to prefer to scan low cost remotes first,
-as a crude form of scheduling lower-cost transfers first.
-
-A whole bunch of interesting syncing scenarios should work now. I have not
-tested them all in detail, but to the best of my knowledge, all these
-should work:
-
-* Connect to the network. It starts syncing with a networked remote.
-  Disconnect the network. Reconnect, and it resumes where it left off.
-* Migrate between networks (ie, home to cafe to work). Any transfers
-  that can only happen on one LAN are retried on each new network you
-  visit, until they succeed.
-
-One that is not working, but is soooo close:
-
-* Plug in a removable drive. Some transfers start. Yank the plug.
-  Plug it back in. All necessary transfers resume, and it ends up
-  fully in sync, no matter how many times you yank that cable.
-
-That's not working because of an infelicity in the MountWatcher.
-It doesn't notice when the drive gets unmounted, so it ignores
-the new mount event.
diff --git a/doc/design/assistant/blog/day_64__syncing_robustly.mdwn b/doc/design/assistant/blog/day_64__syncing_robustly.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_64__syncing_robustly.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Working toward getting the data syncing to happen robustly,
-so a bunch of improvements.
-
-* Got unmount events to be noticed, so unplugging and replugging
-  a removable drive will resume the syncing to it. There's really no
-  good unmount event available on dbus in kde, so it uses a heuristic
-  there.
-* Avoid requeuing a download from a remote that no longer has a key.
-* Run a full scan on startup, for multiple reasons, including dealing with
-  crashes.
-
-Ran into a strange issue: Occasionally the assistant will run `git-annex
-copy` and it will not transfer the requested file. It seems that
-when the copy command runs `git ls-files`, it does not see the file
-it's supposed to act on in its output.
-
-Eventually I figured out what's going on: When updating the git-annex
-branch, it sets `GIT_INDEX_FILE`, and of course environment settings are
-not thread-safe! So there's a race between threads that access
-the git-annex branch, and the Transferrer thread, or any other thread
-that might expect to look at the normal git index.
-
-Unfortunatly, I don't have a fix for this yet.. Git's only interface for
-using a different index file is `GIT_INDEX_FILE`. It seems I have a lot of
-code to tear apart, to push back the setenv until after forking every git
-command. :(
-
-Before I figured out the root problem, I developed a workaround for the
-symptom I was seeing. I added a `git-annex transferkey`, which is
-optimised to be run by the assistant, and avoids running `git ls-files`, so
-avoids the problem. While I plan to fix this environment variable problem
-properly, `transferkey` turns out to be so much faster than how it was
-using `copy` that I'm going to keep it.
diff --git a/doc/design/assistant/blog/day_65__transfer_polish.mdwn b/doc/design/assistant/blog/day_65__transfer_polish.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_65__transfer_polish.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Almost done with the data transfer code.. Today I filled in some bits and
-peices.
-
-Made the expensive transfer scan handle multiple remotes in one pass.
-So on startup, it only runs once, not N times. And when reconnecting to the
-network, when a remote has changed, it scans all network remotes in one
-pass, rather than making M redundant passes.
-
-Got syncing with special remotes all working. Pretty easy actually. Just
-had to avoid doing any git repo push/pull with them, while still queueing
-data transfers.
-
-It'll even download anything it can from the web special remote. To support
-that, I added generic support for readonly remotes; it'll only download from
-those and not try to upload to them.
-
-(Oh, and I properly fixed the nasty `GIT_INDEX_FILE` environment variable
-problem I had the other day.)
-
-I feel I'm very close to being able to merge the assistant branch into
-master now. I'm reasonably confident the data transfer code will work
-well now, and manage to get things in sync eventually in all circumstances.
-(Unless there are bugs.) All the other core functionality of the assistant
-and webapp is working. The only think I might delay because of is the
-missing [[progressbars]] in the webapp .. but that's a silly thing to
-block the merge on. 
-
-Still, I might spend a day and get a dumb implementation of progress bars
-for downloads working first (progress bars for uploads are probably rather
-harder). I'd spend longer on progress bars, but there are so many more
-exciting things I'm now ready to develop, like automatic configurators
-for using your git annex with Amazon S3, rsync.net, and the computer across
-the room..!
diff --git a/doc/design/assistant/blog/day_66__the_merge.mdwn b/doc/design/assistant/blog/day_66__the_merge.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_66__the_merge.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-It's done! The assistant branch is merged into master.
-
-Updated the [[assistant]] page with some screenshots and instructions for
-using it.
-
-Made some cosmetic fixes to the webapp.
-
-Fixed the transferrer to use `~/.config/git-annex/program`
-to find the path to git-annex when running it. (There are ways to find the
-path of the currently running program in unux, but they all suck, so I'm
-avoiding them this way.)
-
-Read some OSX launchd documentation, and it seems it'd be pretty easy to
-get the assistant to autostart on login on OSX. If someone would like to
-test launchd files for me, get in touch.
-
------
-
-AKA: Procrastinating really hard on those progress bars. ;)
diff --git a/doc/design/assistant/blog/day_67__progress_bars.mdwn b/doc/design/assistant/blog/day_67__progress_bars.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_67__progress_bars.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Got the webapp's progress bars updating for downloads. Updated
-[[progressbars]] with all the options for ways to get progress info. For
-downloads, it currently uses the easy, and not very expensive, approach of
-periodically polling the sizes of files that are being downloaded.
-
-For uploads, something more sophisticated will be called for..
-
----
-
-The webapp really feels alive now that it has progress bars!
diff --git a/doc/design/assistant/blog/day_68__transfers.mdwn b/doc/design/assistant/blog/day_68__transfers.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_68__transfers.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-More work on the display and control of transfers.
-
-* Hide redundant downloads from the transfer display. It seemed simplest
-  to keep the behavior of queuing downloads from every remote that has a
-  file, rather than going to some other data structure, but it's clutter
-  to display those to the user, especially when you often have 7 copies
-  of each file, like I do.
-* When canceling a download, cancel all other queued downloads of that
-  key too.
-* Fixed unsettting of the paused flag when resuming a paused transfer.
-* Implemented starting queued transfers by clicking on the start button.
-* Spent a long time debugging why pausing, then resuming, and then pausing
-  a transfer doesn't successfully pause it the second time. I see where
-  the code is seemingly locking up in a `throwTo`, but I don't understand
-  why that blocks forever. Urgh..
diff --git a/doc/design/assistant/blog/day_69__build_fixes.mdwn b/doc/design/assistant/blog/day_69__build_fixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_69__build_fixes.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Short day today.
-
-* Worked on fixing a number of build failures people reported.
-* Solved the problem that was making transfer pause/resume not always work.
-  Although there is another bug where pausing a transfer sometimes lets
-  another queued transfer start running. 
-* Worked on getting the assistant to start on login on OSX.
diff --git a/doc/design/assistant/blog/day_6__polish.mdwn b/doc/design/assistant/blog/day_6__polish.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_6__polish.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-Since my last blog, I've been polishing the `git annex watch` command.
-
-First, I fixed the double commits problem. There's still some extra
-committing going on in the `git-annex` branch that I don't understand. It
-seems like a shutdown event is somehow being triggered whenever
-a git command is run by the commit thread.
-
-I also made `git annex watch` run as a proper daemon, with locking to
-prevent multiple copies running, and a pid file, and everything.
-I made `git annex watch --stop` stop it.
-
----
-
-Then I managed to greatly increase its startup speed. At startup, it
-generates "add" events for every symlink in the tree. This is necessary
-because it doesn't really know if a symlink is already added, or was
-manually added before it starter, or indeed was added while it started up.
-Problem was that these events were causing a lot of work staging the
-symlinks -- most of which were already correctly staged.
-
-You'd think it could just check if the same symlink was in the index.
-But it can't, because the index is in a constant state of flux. The
-symlinks might have just been deleted and re-added, or changed, and
-the index still have the old value.
-
-Instead, I got creative. :) We can't trust what the index says about the
-symlink, but if the index happens to contain a symlink that looks right,
-we can trust that the SHA1 of its blob is the right SHA1, and reuse it
-when re-staging the symlink. Wham! Massive speedup!
-
----
-
-Then I started running `git annex watch` on my own real git annex repos,
-and noticed some problems.. Like it turns normal files already checked into
-git into symlinks. And it leaks memory scanning a big tree. Oops..
-
----
-
-I put together a quick screencast demoing `git annex watch`.
-
-<video controls src="http://joeyh.name/screencasts/git-annex-watch.ogg"></video>
-
-While making the screencast, I noticed that `git-annex watch` was spinning
-in strace, which is bad news for powertop and battery usage. This seems to
-be a [GHC bug](http://bugs.debian.org/677096) also affecting Xmonad. I
-tried switching to GHC's threaded runtime, which solves that problem, but
-causes git-annex to hang under heavy load. Tried to debug that for quite a
-while, but didn't get far. Will need to investigate this further.. 
-Am seeing indications that this problem only affects ghc 7.4.1; in
-particular 7.4.2 does not seem to have the problem.
diff --git a/doc/design/assistant/blog/day_70__adding_ssh_remotes.mdwn b/doc/design/assistant/blog/day_70__adding_ssh_remotes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_70__adding_ssh_remotes.mdwn
+++ /dev/null
@@ -1,66 +0,0 @@
-Today I built the UI in the webapp to set up a ssh or rsync remote.
-
-This is the most generic type of remote, and so it's surely got the most
-complex description. I've tried to word it as clearly as I can; suggestions
-most appreciated. Perhaps I should put in a diagram?
-
-[[!img /assistant/addsshserver.png]]
-
-The idea is that this will probe the server, using ssh. If `git-annex-shell`
-is available there, it'll go on to set up a full git remote. If not, it'll
-fall back to setting up a rsync special remote. It'll even fall all the way
-back to using `rsync://` protocol if it can't connect by ssh. So the user
-can just point it at a server and let it take care of the details,
-generally.
-
-The trickiest part of this will be authentication, of course. I'm relying
-on ssh using `ssh-askpass` to prompt for any passwords, etc, when there's
-no controlling terminal. But beyond passwords, this has to deal with ssh
-keys.
-
-I'm planning to make it check if you have a ssh key configured already. If
-you do, it doesn't touch your ssh configuration. I don't want to get in the
-way of people who have a manual configuration or are using MonkeySphere.
-
-But for a user who has never set up a ssh key, it will prompt asking if
-they'd like a key to be set up. If so, it'll generate a key and configure
-ssh to only use it with the server.. and as part of its ssh probe, that key
-will be added to `authorized_keys`.
-
-(Obviously, advanced users can skip this entirely; `git remote add
-ssh://...` still works..)
-
-----
-
-Also today, fixed more UI glitches in the transfer display. I think
-I have them all fixed now, except for the one that needs lots of javascript
-to be written to fix it.
-
-Amusingly, while I was working on UI glitches, it turned out that all the
-fixes involved 100% pure code that has nothing to do with UI. The UI was
-actually just exposing bugs.
-
-For example, closing a running transfer
-had a bug that weirdly reordered the queue. This turned out to be
-due to the transfer queue actually maintaining two versions of the queue,
-one in a TChan and one a list. Some unknown bugs caused these to get out of
-sync. That was fixed very handily by deleting the TChan, so there's only
-one copy of the data.
-
-I had only been using that TChan because I wanted a way to block while the
-queue was empty. But now that I'm more comfortable with STM, I know how
-to do that easily using a list:
-
-[[!format haskell """
-	getQueuedTransfer q = atomically $ do
-		sz <- readTVar (queuesize q)
-		if sz < 1
-			then retry -- blocks until size changes
-			else ...
-"""]]
-
-Ah, the times before [STM](http://en.wikipedia.org/wiki/Software_transactional_memory)
-were dark times indeed. I'm writing more and more STM code lately, building
-up more and more complicated and useful transactions. If you use threads and
-don't know about STM, it's a great thing to learn, to get out of the dark ages
-of dealing with priority inversions, deadlocks, and races.
diff --git a/doc/design/assistant/blog/day_71__ssh_probing.mdwn b/doc/design/assistant/blog/day_71__ssh_probing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_71__ssh_probing.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Got ssh probing implemented. It checks if it can connect to the server, and
-probes the server to see how it should be used. 
-
-Turned out to need two ssh probes. The first uses the system's existing ssh
-configuration, but disables password prompts. If that's able to get in
-without prompting for a password, then the user must have set that up,
-and doesn't want to be bothered with password prompts, and it'll respect
-that configuration.
-
-Otherwise, it sets up a per-host ssh key, and configures a hostname alias
-in `~/.ssh/config` to use that key, and probes using that. 
-Configuring ssh this way is nice because it avoids changing ssh's
-behavior except when git-annex uses it, and it does not open up the server
-to arbitrary commands being run without password.
-
---
-
-Next up will be creating the repositories. When there's a per-host key,
-this will also involve setting up `authorized_keys`, locking down the ssh
-key to only allow running git-annex-shell or rsync.
-
-I decided to keep that separate from the ssh probing, even though it means
-the user will be prompted twice for their ssh password. It's cleaner and
-allows the probing to do other checks -- maybe it'll later check the amount
-of free disk space -- and the user should be able to decide after the probe
-whether or not to proceed with making the repository.
diff --git a/doc/design/assistant/blog/day_73__rsync.net_configurator.mdwn b/doc/design/assistant/blog/day_73__rsync.net_configurator.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_73__rsync.net_configurator.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Now finished building a special configurator for rsync.net. While
-this is just a rsync remote to git-annex, there are some tricky bits to
-setting up the ssh key using rsync.net's restricted shell. The configurator
-automates that nicely. It took about 3 hours of work, and 49 lines of
-rsync.net specific code to build this.
-
-[[!img /assistant/rsync.net.png]]
-
-Thanks to rsync.net who heard of my Kickstarter and gave me a really
-nice free lifetime account. BTW guys, I wish your restricted shell
-supported '&&' in between commands, and returned a nonzero exit status when
-the command fails. This would make my error handling work better.
-
-I've also reworked the repository management page. Nice to see those
-configurators start to fill in!
-
-[[!img /assistant/repositories.png]]
diff --git a/doc/design/assistant/blog/day_74__bits_and_peices.mdwn b/doc/design/assistant/blog/day_74__bits_and_peices.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_74__bits_and_peices.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-* On OSX, install a launcher plist file, to run the assistant on login,
-  and a `git-annex-webapp.command` file in the desktop. This is not tested
-  yet.
-* Made the webapp display alerts when the inotify/kqueue layer has a
-  warning message.
-* Handle any crashes of each of the 15 or so named threads by displaying
-  an alert. (Of course, this should never happen.)
diff --git a/doc/design/assistant/blog/day_75__zeromq_and_pairing.mdwn b/doc/design/assistant/blog/day_75__zeromq_and_pairing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_75__zeromq_and_pairing.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-Started reading about ZeroMQ with the hope that it could do some firewall
-traversal thing, to connect mutually-unroutable nodes. Well, it could, but
-it'd need a proxy to run on a server both can contact, and lots of
-users won't have a server to run that on. The XMPP approach used by
-dvcs-autosync is looking like the likeliest way for git-annex to handle
-that use case.
-
-However, ZeroMQ did point in promising directions to handle another use
-case I need to support: Local [[pairing]]. In fairly short order, I got
-ZeroMQ working over IP Multicast (PGM), with multiple publishers sending
-messages that were all seen by multiple clients on the LAN (actually the
-WAN; works over OpenVPN too). I had been thinking about using
-Avahi/ZeroConf for discovery of systems to pair with, but ZeroMQ is rather
-more portable and easy to work with.
-
-Unfortunatly, I wasn't able to get ZeroMQ to behave reliably enough.
-It seems to have some timeout issues the way I'm trying to use it,
-or perhaps its haskell bindings are buggy? Anyway, it's really overkill
-to use PGM when all I need for git-annex pairing discovery is lossy
-UDP Multicast. Haskell has a simple `network-multicast` library for that,
-and it works great.
-
-With discovery out of the way (theoretically), the hard part about
-[[pairing]] is going to be verifying that the desired repository is being
-paired with, and not some imposter. My plan to deal with this involves a
-shared secret, that can be communicated out of band, and HMAC. The webapp
-will prompt both parties to enter the same agreed upon secret (which could
-be any phrase, ideally with 64 bytes of entropy), and will then use it as
-the key for HMAC on the ssh public key. The digest will be sent over the
-wire, along with the ssh public key, and the other side can use the shared
-secret to verifiy the key is correct.
-
-The other hard part about [[pairing]] will be finding the best address to
-use for git, etc to connect to the other host. If MDNS is available, it's
-ideal, but if not the pair may have to rely on local DNS, or even
-hard-coded IPs, which will be much less robust. Or, the assistant could
-broadcast queries for a peer's current IP address itself, as a poor man's
-MDNS.
-
-All right then! That looks like a good week's worth of work to embark on.
-
----
-
-Slight detour to package the haskell network-multicast library and upload
-to Debian unstable.
-
-Roughed out a data type that models the whole pairing conversation,
-and can be serialized to implement it. And a state machine to run
-that conversation. Not yet hooked up to any transport such as multicast
-UDP.
diff --git a/doc/design/assistant/blog/day_76__pairing.mdwn b/doc/design/assistant/blog/day_76__pairing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_76__pairing.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-About half way done with implementing [[pairing]]. The webapp's interface
-to prompt for a secret and start pairing is done; the protocol is
-implemented; broadcasting of pairing requests is working; added Yet Another
-Thread to listen for incoming pairing traffic.
-
-Very happy with how this came together; starting with defining the protocol
-with data types let me rapidly iterate until I had designed a simple, clean,
-robust protocol. The implementation works well too; it's even possible to
-start pairing, and only then bring up the network interface to the machine
-you intended to pair with, and it'll detect the new interface and start
-sending requests to it.
-
-Next, I need to make alerts have a button that performs a stored
-IO action. So that the incoming pair request alert can have a button to
-respond to the pair request. And then I need to write the code to actually
-perform the pairing, including ssh key setup.
diff --git a/doc/design/assistant/blog/day_77_alert_buttons.mdwn b/doc/design/assistant/blog/day_77_alert_buttons.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_77_alert_buttons.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Alerts can now have buttons, that go to some url when clicked. Yay.
-
-Implementing that was a PITA, because Yesod really only wants its type-safe
-urls to be rendered from within its Handler monad. Which most things that
-create alerts are not. I managed to work around Yesod's insistence on this
-only by using a MVar to store the pure function that Yesod uses internally.
-That function can only be obtained once the webapp is running.
-
-----
-
-Fixed a nasty bug where using gpg would cause hangs. I introduced this back
-when I was reworking all the code in git-annex that runs processes, so it
-would work with threading. In the process a place that had forked a process
-to feed input to gpg was lost. Fixed it by spawning a thread to feed gpg.
-Luckily I have never released a version of git-annex with that bug, but
-the many users who are building from the master branch should update.
-
-----
-
-Made alerts be displayed while pairing is going on, with buttons to cancel
-pairing or respond to a pairing request.
diff --git a/doc/design/assistant/blog/day_78__pairing_continued.mdwn b/doc/design/assistant/blog/day_78__pairing_continued.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_78__pairing_continued.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Worked on [[pairing]] all day. It's complicated and I was close to being in
-the weeds at times. I think it probably works now, but I have not tested it
-at all. Tomorrow, testing, and cleaning up known problems.
-
-----
-
-Also ordered 1.5 terabytes of USB keys and a thousand git-annex stickers
-today.
diff --git a/doc/design/assistant/blog/day_79__pairing_finished.mdwn b/doc/design/assistant/blog/day_79__pairing_finished.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_79__pairing_finished.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Tons of pairing work, which culminated today in pairing fully working for
-the very first time. And it works great! Type something like "my
-hovercraft is full of eels" into two git annex webapps on the same LAN
-and the two will find each other, automatically set up ssh keys, and sync
-up, like magic. Magic based on math.
-
-* Revert changes made to `authorized_keys` when the user cancels
-  a pairing response. Which could happen if the machine that sent the
-  pairing request originally is no longer on the network.
-* Some fixes to handle lossy UDP better. Particularly tricky at the end
-  of the conversation -- how do both sides reliably know when a
-  conversation is over when it's over a lossy wire? My solution is just
-  to remember some conversatons we think are over, and keep saying
-  "this conversation is over" if we see messages in that conversation.
-  Works.
-* Added a UUID that must be the same in related pairing messages.
-  This has a nice security feature: It allows detection of brute-force
-  attacks to guess the shared secret, after the first wrong guess! 
-  In which case the pairing is canceled and a warning printed.
-* That led to a thorough security overview, which I've added to
-  the [[pairing]] page. Added some guards against unusual attacks,
-  like console poisioning attacks. I feel happy with the security
-  of pairing now, with the caveats that only I have reviewed it (and
-  reviewing your own security designs is never ideal), and that the
-  out-of-band shared secret communication between users is only as good
-  as they make it.
-* Found [a bug](https://github.com/yesodweb/yesod/issues/421) 
-  in Yesod's type safe urls. At least, I think it's a bug. Worked around it.
-* Got very stuck trying to close the sockets that are opened to send
-  multicast pairing messages. Nothing works, down to and including calling
-  C `close()`. At the moment I have a socket leak. :(
-  I need to understand the details of multicast sockets better to fix this.
-  Emailed the author of the library I'm using for help.
diff --git a/doc/design/assistant/blog/day_7__bugfixes.mdwn b/doc/design/assistant/blog/day_7__bugfixes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_7__bugfixes.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-Kickstarter is over. Yay!
-
-Today I worked on the bug where `git annex watch` turned regular files
-that were already checked into git into symlinks. So I made it check
-if a file is already in git before trying to add it to the annex.
-
-The tricky part was doing this check quickly. Unless I want to write my
-own git index parser (or use one from Hackage), this check requires running
-`git ls-files`, once per file to be added. That won't fly if a huge
-tree of files is being moved or unpacked into the watched directory.
-
-Instead, I made it only do the check during `git annex watch`'s initial
-scan of the tree. This should be OK, because once it's running, you
-won't be adding new  files to git anyway, since it'll automatically annex
-new files. This is good enough for now, but there are at least two problems
-with it:
-
-* Someone might `git merge` in a branch that has some regular files,
-  and it would add the merged in files to the annex.
-* Once `git annex watch` is running, if you modify a file that was
-  checked into git as a regular file, the new version will be added
-  to the annex.
-
-I'll probably come back to this issue, and may well find myself directly
-querying git's index.
-
----
-
-I've started work to fix the memory leak I see when running `git annex
-watch` in a large repository (40 thousand files). As always with a Haskell
-memory leak, I crack open [Real World Haskell's chapter on profiling](http://book.realworldhaskell.org/read/profiling-and-optimization.html).
-
-Eventually this yields a nice graph of the problem:
-
-[[!img profile.png alt="memory profile"]]
-
-So, looks like a few minor memory leaks, and one huge leak. Stared
-at this for a while and trying a few things, and got a much better result:
-
-[[!img profile2.png alt="memory profile"]]
-
-I may come back later and try to improve this further, but it's not bad memory
-usage. But, it's still rather slow to start up in such a large repository,
-and its initial scan is still doing too much work. I need to optimize
-more..
diff --git a/doc/design/assistant/blog/day_7__bugfixes/profile.png b/doc/design/assistant/blog/day_7__bugfixes/profile.png
deleted file mode 100644
Binary files a/doc/design/assistant/blog/day_7__bugfixes/profile.png and /dev/null differ
diff --git a/doc/design/assistant/blog/day_7__bugfixes/profile2.png b/doc/design/assistant/blog/day_7__bugfixes/profile2.png
deleted file mode 100644
Binary files a/doc/design/assistant/blog/day_7__bugfixes/profile2.png and /dev/null differ
diff --git a/doc/design/assistant/blog/day_80__default_backend.mdwn b/doc/design/assistant/blog/day_80__default_backend.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_80__default_backend.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I've changed the default backend used by git-annex from SHA256 to SHA256E.
-Including the filename extension in the key is known to make repositories
-more usable on things like MP3 players, and I've recently learned it also
-avoids [[forum/Weird_behavior_with_OS_X_Finder_and_Preview.app]]. 
-
-I thought about only changing the default in repositories set up by the
-assistant, but it seemed simpler to change the main default. The old
-backend is really only better if you might have multiple copies of files
-with the same content that have different extensions.
-
-Fixed the socket leak in pairing that eluded me earlier.
-
-I've made a new [[polls]] page, and posted a poll:
-[[polls/prioritizing_special_remotes]]
diff --git a/doc/design/assistant/blog/day_81__enabling_pre-existing_special_remotes.mdwn b/doc/design/assistant/blog/day_81__enabling_pre-existing_special_remotes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_81__enabling_pre-existing_special_remotes.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-It's possible for one git annex repository to configure a special remote
-that it makes sense for other repositories to also be able to use. Today I
-added the UI to support that; in the list of repositories, such
-repositories have a "enable" link.
-
-To enable pre-existing rsync special remotes, the webapp has to do the same
-probing and ssh key setup that it does when initially creating them.
-Rsync.net is also handled as a special case in that code. There was one
-ugly part to this.. When a rsync remote is configured in the webapp,
-it uses a mangled hostname like "git-annex-example.com-user", to
-make ssh use the key it sets up. That gets stored in the `remote.log`, and so
-the enabling code has to unmangle it to get back to the real hostname.
-
----
-
-Based on the still-running [[prioritizing_special_remotes]] poll, a lot
-of people want special remote support for their phone or mp3 player.
-(As opposed to running git-annex on an Android phone, which comes later..)
-It'd be easy enough to make the webapp set up a directory special remote
-on such a device, but that makes consuming some types of content on the
-phone difficult (mp3 players seem to handle them ok based on what people tell
-me). I need to think more about some of the ideas mentioned in [[android]]
-for more suitable ways of storing files.
-
-One thing's for sure: You won't want the assistant to sync all your files
-to your phone! So I also need to start coming up with partial syncing
-controls. One idea is for each remote to have a configurable matcher for files
-it likes to receive. That could be only mp3 files, or all files inside a
-given subdirectory, or all files *not* in a given subdirectory. That means
-that when the assistant detects a file has been moved, it'll need to add
-(or remove) a queued transfer. Lots of other things could be matched on,
-like file size, number of copies, etc. Oh look, I have a
-[beautiful library I wrote earlier](http://joeyh.name/blog/entry/happy_haskell_hacker)
-that I can reuse!
diff --git a/doc/design/assistant/blog/day_82__git-annex_branch_work.mdwn b/doc/design/assistant/blog/day_82__git-annex_branch_work.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_82__git-annex_branch_work.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Started today doing testing of [[syncing]], and found some bugs and things
-it needs to do better. But was quickly sidetracked when I noticed that
-`transferkey` was making a commit to the git-annex branch for every file it
-transferred, which is too slow and bloats history too much.
-
-To fix that actually involved fixing a long-standing annoyance; that
-read-only git-annex commands like `whereis` sometimes start off with
-"(Recording state in git)", when the journal contains some not yet
-committed changes to the git-annex branch. I had to carefully think
-through the cases to avoid those commits.
-
-As I was working on that, I found a real nasty lurking bug in the git-annex
-branch handling. It's unlikely to happen unless `annex.autocommit=false` is
-set, but it could occur when two git-annex processes race one another just
-right too. The root of the bug is that `git cat-file --batch` does not
-always show changes made to the index after it started. I think it does
-in enough cases to have tricked me before, but in general it can't be
-trusted to report the current state of the index, but only some past state.
-
-I was able to fix the bug, by ensuring that changes being made to the
-branch are always visible in either the journal or the branch -- never in
-the index alone.
-
-----
-
-Hopefully something less low-level tomorrow..!
diff --git a/doc/design/assistant/blog/day_83__3-way.mdwn b/doc/design/assistant/blog/day_83__3-way.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_83__3-way.mdwn
+++ /dev/null
@@ -1,73 +0,0 @@
-Syncing works well when the graph of repositories is strongly connected.
-Now I'm working on making it work reliably with less connected graphs.
-
-I've been focusing on and testing a doubly-connected list of repositories,
-such as: `A <-> B <-> C`
-
-----
-
-I was seeing a lot of git-annex branch push failures occuring in
-this line of repositories topology. Sometimes was is able to recover from
-these, but when two repositories were trying to push to one-another at the
-same time, and both failed, both would pull and merge, which actually keeps
-the git-annex branch still diverged. (The two merge commits differ.)
-
-A large part of the problem was that it pushed directly into the git-annex
-branch on the remote; the same branch the remote modifies. I changed it to
-push to `synced/git-annex` on the remote, which avoids most push failures.
-Only when A and C are both trying to push into `B/synced/git-annex` at the
-same time would one fail, and need to pull, merge, and retry.
-
------
-
-With that change, git syncing always succeeded in my tests, and without
-needing any retries. But with more complex sets of repositories, or more
-traffic, it could still fail.
-
-I want to avoid repeated retries, exponential backoffs, and that kind of
-thing. It'd probably be good enough, but I'm not happy with it because
-it could take arbitrarily long to get git in sync.
-
-I've settled on letting it retry once to push to the synced/git-annex
-and synced/master branches. If the retry fails, it enters a fallback mode,
-which is guaranteed to succeed, as long as the remote is accessible.
-
-The problem with the fallback mode is it uses really ugly branch names.
-Which is why Joachim Breitner and I originally decided on making `git annex
-sync` use the single `synced/master` branch, despite the potential for
-failed syncs. But in the assistant, the requirements are different,
-and I'm ok with the uglier names.
-
-It does seem to make sense to only use the uglier names as a fallback,
-rather than by default. This preserves compatability with `git annex sync`,
-and it allows the assistant to delete fallback sync branches after it's
-merged them, so the ugliness is temporary.
-
----
-
-Also worked some today on a bug that prevents C from receiving files
-added to A.
-
-The problem is that file contents and git metadata sync independantly. So C
-will probably receive the git metadata from B before B has finished
-downloading the file from A. C would normally queue a download of the
-content when it sees the file appear, but at this point it has nowhere to
-get it from.
-
-My first stab at this was a failure. I made each download of a file result
-in uploads of the file being queued to every remote that doesn't have it
-yet. So rather than C downloading from B, B uploads to C. Which works fine,
-but then C sees this download from B has finished, and proceeds to try to
-re-upload to B. Which rejects it, but notices that this download has
-finished, so re-uploads it to C...
-
-The problem with that approach is that I don't have an event when a download
-succeeds, just an event when a download ends.  Of course, C could skip
-uploading back to the same place it just downloaded from, but loops are
-still possible with other network topologies (ie, if D is connected to both
-B and C, there would be an upload loop 'B -> C -> D -> B`). So unless I can
-find a better event to hook into, this idea is doomed.
-
-I do have another idea to fix the same problem. C could certainly remember
-that it saw a file and didn't know where to get the content from, and then
-when it receives a git push of a git-annex branch, try again.
diff --git a/doc/design/assistant/blog/day_84__deferred_downloads.mdwn b/doc/design/assistant/blog/day_84__deferred_downloads.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_84__deferred_downloads.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Implemented deferred downloads. So my example from yesterday of three
-repositories in a line keep fully in sync now!
-
-I punted on one problem while doing it. It might be possible to get a really
-big list of deferred downloads in some situation. That all lives in memory.
-I aim for git-annex to always have a constant upper bound on memory use,
-so that's not really acceptable. I have TODOed a reminder to do something
-about limiting the size of this list.
-
-----
-
-I also ran into a nasty crash while implementing this, where two threads
-were trying to do things to git HEAD at the same time, and so one crashed,
-and in a way I don't entirely understand, that crash took down another
-thread with a BlockedIndefinitelyOnSTM exception. I think I've fixed
-this, but it's bothersome that this is the second time that modifications
-to the Merger thread have led to a concurrency related crash that I
-have not fully understood. 
-
-My guess is that STM can get confused when it's
-retrying, and the thread that was preventing it from completing a
-transaction crashes, because it suddenly does not see any other
-references to the TVar(s) involved in the transaction. Any GHC STM gurus
-out there?
-
----
-
-Still work to be done on making data transfers to keep fully in sync in all
-circumstances. One case I've realized needs work occurs when a USB drive is
-plugged in. Files are downloaded from it to keep the repo in sync, but the
-repo neglects to queue uploads of those files it just got out to other
-repositories it's in contact with. Seems I still need to do something to
-detecting when a successful download is done, and queue uploads.
diff --git a/doc/design/assistant/blog/day_85__more_foundation_work.mdwn b/doc/design/assistant/blog/day_85__more_foundation_work.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_85__more_foundation_work.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Turns out I was able to easily avoid the potential upload loops that would
-occur if each time a repo receives a download, it queues uploads to the
-repos it's connected to. With that done. I suspect, but have not proven,
-that the assistant is able to keep repos arranged in any shape of graph in
-sync, as long as it's connected (of course) and each connection is
-bi-directional. That's a good start .. or at least a nice improvement from
-only strongly connected graphs being kept in sync.
-
-Eliminated some empty commits that would be made sometimes, which is a nice
-optimisation.
-
-------
-
-I wanted to get back to some UI work after this week's deep dive into the
-internals. So I filled in a missing piece, the repository switcher in the
-upper right corner. Now the webapp's UI allows setting up different
-repositories for different purposes, and switching between them.
diff --git a/doc/design/assistant/blog/day_86__towards_the_beta.mdwn b/doc/design/assistant/blog/day_86__towards_the_beta.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_86__towards_the_beta.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Putting together a shortlist of things I want to sort out before the beta.
-
-* [[Progress bars|progressbars]] for file uploads.
-* No mocked up parts in the webapp's UI. Think I implemented the last of
-  those yesterday, although there are some unlinked repository configuration
-  options.
-* The basic watching functionality, should work reliably.
-  There are some known scalability issues with eg,
-  [[kqueue on OSX|bugs/Issue_on_OSX_with_some_system_limits]] that
-  need to be dealt with, but needn't block a beta.
-* Should keep any configuration of repositories that can be set up using
-  the webapp in sync whenever it's possible to do so. I think that'll work
-  after the past few days work.
-* Should be easy to install and get running. Of course part of the point
-  of the beta release is to get it out there, on Hackage, in Debian
-  unstable, and in the other places that git-annex packagers put it.
-  As to getting it running, the autostart files and menu items look good
-  on Linux. The OSX equivilants still need work and testing.
-* No howlingly bad bugs. [[This bug|bugs/pasting_into_annex_on_OSX]] is
-  the one I'm most concerned with currently. OTOH, 
-  [[bugs/watcher_commits_unlocked_files]] can be listed in the errata.
-
-----
-
-So I worked on progress bars for uploads today. Wrote a nice little
-parser for rsync's progress output, that parses arbitrary size chunks,
-returning any unparsable part. Added a ProgressCallback parameter to
-all the backends' upload methods. Wrote a nasty thing that intercepts
-rsync's output, currently a character at a time (horrible, but rsync
-doesn't output that much, so surprisingly acceptable), and outputs it and
-parses it. Hooked all this up, and got it working for uploads to
-git remotes. That's 1/10th of the total ways uploads can happen that
-have working progress bars. It'll take a while to fill in the rest..
diff --git a/doc/design/assistant/blog/day_87__more_progress_progress.mdwn b/doc/design/assistant/blog/day_87__more_progress_progress.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_87__more_progress_progress.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Worked more on upload progress tracking. I'm fairly happy with its state
-now:
-
-* It's fully implemented for rsync special remotes.
-
-* Git remotes also fully support it, with the
-  notable exception of file uploads run by `git-annex-shell recvkey`. That
-  runs `rsync --server --sender`, and in that mode, rsync refuses to output
-  progress info. Not sure what to do about this case. Maybe I should
-  write a parser for the rsync wire protocol that can tell what chunk of the
-  file is being sent, and shim it in front of the rsync server? That's
-  rather hardcore, but it seems the best of a bad grab bag of options that
-  include things like `LD_PRELOAD` hacks.
-
-* Also optimised the rsync progress bar reader to read whole
-  chunks of data rather than one byte at a time.
-
-* Also got progress bars to actually update in the webapp for uploads.
-
-  This turned out to be tricky because kqueue cannot be used to detect when
-  existing files have been modified. (One of kqueue's worst shortcomings vs
-  inotify.) Currently on kqueue systems it has to poll.
-
-I will probably upload add progress tracking to the directory special remote,
-which should be very easy (it already implements its own progress bars),
-and leave the other special remotes for later. I can add upload progress
-tracking to each special remote when I add support for configuring it in
-the webapp.
diff --git a/doc/design/assistant/blog/day_88__progressbars_still_progressing.mdwn b/doc/design/assistant/blog/day_88__progressbars_still_progressing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_88__progressbars_still_progressing.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Short day today, but I again worked only on progress bars.
-
-* Added upload progress tracking for the directory special remote.
-* Some optimisations.
-* Added a `git annex-shell transferkey` command. This isn't used yet,
-  but the plan is to use it to feed back information about how much
-  of a file has been sent when downloading it. So that the uploader
-  can display a progress bar. This method avoids needing to parse the rsync
-  protocol, which is approximately impossible without copying half of rsync.
-  Happily, git-annex's automatic ssh connection caching will make the small
-  amount of data this needs to send be efficiently pipelined over the same
-  ssh connection that rsync is using.
-
-I probably have less than 10 lines of code to write to finish up
-[[progressbars]] for now. Looking forward to getting that behind me, and on
-to something more interesting. Even doing mail merge to print labels to
-mail out Kickstarter rewards is more interesting than progress bars at this
-point. :)
diff --git a/doc/design/assistant/blog/day_89__final_polish.mdwn b/doc/design/assistant/blog/day_89__final_polish.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_89__final_polish.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Finally wrapped up progress bars; upload progress is now reported in all
-situations. 
-
-After all that, I was pleased to find a use for the progress info, beyond
-displaying it to the user. Now the assistant uses it to decide whether it
-makes sense to immediately retry a failed transfer. This should make it
-work nicely, or at least better, with flaky network or drives.
-
-The webapp crashed on startup when there was no `~/.gitconfig`.
-Guess all of us who have tried it so far are actual git users,
-but I'm glad I caught this before releasing the beta.
-
-Jimmy Tang kindly took on making a OS X .app directory for git-annex.
-So it now has an icon that will launch the webapp. 
-[[!img /assistant/osx-app.png]]
-
-I'm getting lots of contributors to git-annex all of a sudden. I've had 3
-patches this weekend, and 2 of them have been to Haskell code.
-Justin Azoff is working on [[todo/incremental_fsck]], and Robie Basak
-has [gotten Amazon Glacier working](https://github.com/basak/glacier-cli)
-using the hook special remote.
-
-Started doing some design for [[transfer_control]]. I will start
-work on this after releasing the first beta.
diff --git a/doc/design/assistant/blog/day_8__speed.mdwn b/doc/design/assistant/blog/day_8__speed.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_8__speed.mdwn
+++ /dev/null
@@ -1,67 +0,0 @@
-Since last post, I've worked on speeding up `git annex watch`'s startup time
-in a large repository.
-
-The problem was that its initial scan was naively staging every symlink in
-the repository, even though most of them are, presumably, staged correctly
-already. This was done in case the user copied or moved some symlinks
-around while `git annex watch` was not running -- we want to notice and
-commit such changes at startup.
-
-Since I already had the `stat` info for the symlink, it can look at the
-`ctime` to see if the symlink was made recently, and only stage it if so.
-This sped up startup in my big repo from longer than I cared to wait (10+
-minutes, or half an hour while profiling) to a minute or so. Of course,
-inotify events are already serviced during startup, so making it scan
-quickly is really only important so people don't think it's a resource hog.
-First impressions are important. :)
-
-But what does "made recently" mean exactly? Well, my answer is possibly
-over engineered, but most of it is really groundwork for things I'll need
-later anyway. I added a new data structure for tracking the status of the
-daemon, which is periodically written to disk by another thread (thread #6!)
-to `.git/annex/daemon.status` Currently it looks like this; I anticipate
-adding lots more info as I move into the [[syncing]] stage:
-
-	lastRunning:1339610482.47928s
-	scanComplete:True
-
-So, only symlinks made after the daemon was last running need to be
-expensively staged on startup. Although, as RichiH pointed out,
-this fails if the clock is changed. But I have been planning to have a
-cleanup thread anyway, that will handle this, and other
-potential problems, so I think that's ok.
-
-Stracing its startup scan, it's fairly tight now. There are some repeated 
-`getcwd` syscalls that could be optimised out for a minor speedup.
-
-----
-
-Added the sanity check thread. Thread #7! It currently only does one sanity
-check per day, but the sanity check is a fairly lightweight job,
-so I may make it run more frequently. OTOH, it may never ever find a
-problem, so once per day seems a good compromise. 
-
-Currently it's only checking that all files in the tree are properly staged
-in git. I might make it `git annex fsck` later, but fscking the whole tree
-once per day is a bit much. Perhaps it should only fsck a few files per
-day? TBD
-
-Currently any problems found in the sanity check are just fixed and logged.
-It would be good to do something about getting problems that might indicate
-bugs fed back to me, in a privacy-respecting way. TBD
-
-----
-
-I also refactored the code, which was getting far too large to all be in
-one module. 
-
-I have been thinking about renaming `git annex watch` to `git annex assistant`,
-but I think I'll leave the command name as-is. Some users might
-want a simple watcher and stager, without the assistant's other features
-like syncing and the webapp. So the next stage of the
-[[roadmap|design/assistant]] will be a different command that also runs
-`watch`.
-
-At this point, I feel I'm done with the first phase of [[inotify]].
-It has a couple known bugs, but it's ready for brave beta testers to try.
-I trust it enough to be running it on my live data.
diff --git a/doc/design/assistant/blog/day_90__beta.mdwn b/doc/design/assistant/blog/day_90__beta.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_90__beta.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Just released git-annex 3.20120924, which includes beta versions of
-the assistant and webapp. Read the [[/assistant/errata]], then give it a
-try!
-
-I've uploaded it to Haskell's cabal, and to Debian unstable, and hope my
-helpers for other distributions will update them soon. (Although the
-additional dependencies to build the webapp may take a while on some.)
-I also hope something can be done to make a prebuilt version available on
-OSX soonish.
-
-I've decided to license the webapp under the
-[AGPL](http://www.gnu.org/licenses/agpl-3.0.html). This should not impact
-normal users of it, and git-annex can be built without the webapp as a pure
-GPL licensed program. This is just insurance to prevent someone turning the
-webapp into a propritary web-only service, by requiring that anyone who
-does so provide the source of the webapp.
diff --git a/doc/design/assistant/blog/day_91__break.mdwn b/doc/design/assistant/blog/day_91__break.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_91__break.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Mostly took a break from working on the assistant today. Instead worked
-on adding incremental fsck to git-annex. Well, that will be something
-that assistant will use, eventually, probably.
-
-Jimmy and I have been working on a self-contained OSX app for using the
-assistant, that doesn't depend on installing git, etc. More on that
-once we have something that works.
diff --git a/doc/design/assistant/blog/day_92__S3.mdwn b/doc/design/assistant/blog/day_92__S3.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_92__S3.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Amazon S3 was the second most popular choice in the
-[[polls/prioritizing_special_remotes]] poll, and since I'm not sure how
-I want to support phone/mp3 players, I did it first.
-
-So I added a configurator today to easily set up an Amazon S3 repository.
-That was straightforward and didn't take long since git-annex already
-supported S3.
-
-The hard part, of course, is key distribution. Since the webapp so far
-can only configure the shared encryption method, and not fullblown gpg keys,
-I didn't feel it would be secure to store the S3 keys in the git repository.
-Anyone with access to that git repo would have full access to S3 ... just not
-acceptable. Instead, the webapp stores the keys in a 600 mode file locally,
-and they're not distributed at all.
-
-When the same S3 repository is enabled on another computer, it prompts for
-keys then too. I did add a hint about using the IAM Management Console in
-this case -- it should be possible to set up users in IAM who can only
-access a single bucket, although I have not tried to set that up.
-
----
-
-Also, more work on the standalone OSX app.
diff --git a/doc/design/assistant/blog/day_93__OSX_standalone_app.mdwn b/doc/design/assistant/blog/day_93__OSX_standalone_app.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_93__OSX_standalone_app.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Various bug fixes, and work on the OSX app today:
-
-* Avoid crashing when ssh-keygen fails due to not being able to parse
-  `authorized_keys`.. seems a lot of people have crufty unparsable
-  `authorized_keys` files.
-* On OSX, for some reason the webapp was failing to start sometimes due
-  to bind failing with EINVAL. I don't understand why, as that should
-  only happen if the socket is already bound, which it should not as
-  it's just been created. I was able to work around this by retrying
-  with a new socket when bind fails.
-* When setting up `authorized_keys` to let `git-annex-shell` be run,
-  it had been inserting a perl oneliner into it. I changed that
-  to instead call a `~/.ssh/git-annex-shell` wrapper script that it sets
-  up. The benefits are it no longer needs perl, and it's less ugly,
-  and the standalone OSX app can modify the wrapper script to point to
-  wherever it's installed today (people like to move these things around I
-  guess).
-* Made the standalone OSX app set up autostarting when it's first run.
-* Spent rather a long time collecting the licenses of all the software that
-  will be bundled with the standalone OSX app. Ended up with a file
-  containing 3954 lines of legalese. Happily, all the software appears
-  redistributable, and free software; even the couple of OSX system libraries
-  we're bundling are licensed under the APSL.
diff --git a/doc/design/assistant/blog/day_93__easy_install.mdwn b/doc/design/assistant/blog/day_93__easy_install.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_93__easy_install.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-I hear that people want the git-annex assistant to be easy to install
-without messing about building it from source..
-
-## on OSX
-
-So Jimmy and I have been working all week on making an easily installed OSX
-app of the assistant. This is a .dmz file that bundles all the dependencies
-(git, etc) in, so it can be installed with one click.
-
-It seems to basically work. You can get it [[here|install/OSX]].
-
-Unfortunatly, the [[bugs/pasting_into_annex_on_OSX]] bug resurfaced while
-testing this.. So I can't really recommend using it on real data yet.
-
-Still, any testing you can do is gonna be really helpful. I'm squashing OSX
-bugs right and left.
-
-## on Linux
-
-First of all, the git-annex assistant is now available in Debian unstable,
-and in Arch Linux's AUR. Proper packages.
-
-For all the other Linux distributions, I have a workaround. It's
-a big hack, but it seems to work.. at least on Debian stable.
-
-I've just put up a [[install/linux_standalone]] tarball, which has **no
-library dependencies** apart from glibc, and doesn't even need git to be
-installed on your system.
-
-## on FreeBSD
-
-The FreeBSD port has been updated to include the git-annex assistant too..
-
-[[!meta title="day 94 easy install"]]
diff --git a/doc/design/assistant/blog/day_95__repository_groups.mdwn b/doc/design/assistant/blog/day_95__repository_groups.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_95__repository_groups.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Spent a lot of time this weekend thinking about/stuck on the [[cloud]]
-notification problem. Currently IRC is looking like the best way for
-repositories to notify one-another when changes are made, but I'm not sure
-about using that, and not ready to start on it.
-
-Instead, laid some groundwork for [[transfer_control]] today. Added 
-some simple commands to manage groups of repositories, and find files
-that are present in repositories in a group. I'm not completely happy
-with the syntax for that, and need to think up some good syntax to specify
-files that are present in *all* repositories in a group.
-
-The plan is to have the assistant automatically guess at groups to put new
-repositories it makes in (it should be able to make good guesses),
-as well as have an interface to change them, and an interface to configure
-transfer control using these groups (and other ways of matching files).
-And, probably, some canned transfer control recipes for common setups.
-
----
-
-Collected up the past week's work and made a release today. I'm probably
-back to making regular releases every week or two.
diff --git a/doc/design/assistant/blog/day_96__revisiting_file_adds.mdwn b/doc/design/assistant/blog/day_96__revisiting_file_adds.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_96__revisiting_file_adds.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Today I revisited something from way back in [[day_7__bugfixes]].
-Back then, it wasn't practical to run `git ls-files` on every
-file the watcher noticed, to check if it was already in git. Revisiting
-this, I found I could efficiently do that check at the same point it checks
-`lsof`. When there's a lot of files being added, they're batched up at that
-point, so it won't be calling `git ls-files` repeatedly.
-
-Result: It's safe to mix use of the assistant with files stored in git
-in the normal way. And it's safe to mix use of `git annex unlock` with
-the assistant; it won't immediately re-lock files. Yay!
-
-----
-
-Also fixed a crash in the committer, and made `git annex status` display
-repository groups.
-
-----
-
-Been thinking through where to store the [[transfer_control]] expressions.
-Since repositories need to know about the transfer controls of other
-remotes, storing them in `.git/config` isn't right. I thought it might be
-nice to configure the expressions in `.gitattributes`, but it seems the
-file format doesn't allow complicated multi-word attributes. Instead,
-they'll be stored in the git-annex branch.
diff --git a/doc/design/assistant/blog/day_97__stuffing.mdwn b/doc/design/assistant/blog/day_97__stuffing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_97__stuffing.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Not a lot of programming today; I spent most of the day stuffing hundreds
-of envelopes for this Kickstarter thing you may have heard of. Some post
-office is going to be very surprised with all the international mail soon.
-
-----
-
-That said, I did write 184 lines of code. (Actually rather a lot, but it
-was mostly pure functional code, so easy to write.) That
-pops up your text editor on a file with the the trust and group
-configurations of repositories, that's stored in the git-annex branch.
-Handy for both viewing that stuff all in one place, and changing it.
-
-The real reason for doing that is to provide a nice interface for editing
-transfer control expressions, which I'll be adding next.
diff --git a/doc/design/assistant/blog/day_98__preferred_content.mdwn b/doc/design/assistant/blog/day_98__preferred_content.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_98__preferred_content.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-Started implementing [[transfer_control]]. Although I'm currently calling
-the configuration for it "preferred content expressions". (What a mouthful!)
-
-I was mostly able to reuse the Limit code (used to handle parameters like
---not --in otherrepo), so it can already build Matchers for preferred content
-expressions in my little Domain Specific Language.
-
-Preferred content expressions can be edited with `git annex vicfg`, which
-checks that they parse properly. 
-
-The plan is that the first place to use them is not going to be inside the
-assistant, but in commands that use the `--auto` parameter, which will use
-them as an additional constraint, in addition to the numcopies setting
-already used. Once I get it working there, I'll add it to the assistant.
-
-Let's say a repo has a preferred content setting of
-"(not copies=trusted:2) and (not in=usbdrive)"
-
-* `git annex get --auto` will get files that have less than 2 trusted
-  copies, and are not in the usb drive.
-* `git annex drop --auto` will drop files that have 2 or more trusted
-  copies, and are not in the usb drive (assuming numcopies allows dropping
-  them of course).
-* `git annex copy --auto --to thatrepo` run from another repo
-  will only copy files that have less than 2 trusted copies. (And if that
-  was run on the usb drive, it'd never copy anything!)
-
-There is a complication here.. What if the repo with that preferred content
-setting is itself trusted? Then when it gets a file, its number of
-trusted copies increases, which will make it be dropped again. :-/
-
-This is a nuance that the numcopies code already deals with, but it's
-much harder to deal with it in these complicated expressions. I need to think
-about this; the three ideas I'm working on are:
-
-1. Leave it to whoever/whatever writes these expressions to write ones
-   that avoid such problems. Which is ok if I'm the only one writing
-   pre-canned ones, in practice..
-2. Transform expressions into ones that avoid such problems. (For example,
-   replace "not copies=trusted:2" with "not (copies=trusted:2 or (in=here and
-   trusted=here and copies=trusted:3))"
-3. Have some of the commands (mostly drop I think) pretend the drop
-   has already happened, and check if it'd then want to get the file back
-   again.
diff --git a/doc/design/assistant/blog/day_99_shotgun.mdwn b/doc/design/assistant/blog/day_99_shotgun.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_99_shotgun.mdwn
+++ /dev/null
@@ -1,70 +0,0 @@
-Fixed the assistant to wait on all the zombie processes that would sometimes
-pile up. I didn't realize this was as bad as it was.
-
-Zombies and git-annex have been a problem since I started developing it,
-because back then I made some rather poor choices, due to barely knowing
-how to write Haskell. So parts of the code that stream input from git commands
-don't clean up after them properly. Not normally a problem, because
-git-annex reaps the zombies after each file it processes. But this reaping
-is not thread-safe; it cannot be used in the assistant.
-
-If I were starting git-annex today, I'd use one of the new Haskell things like
-Conduits, that allow for very clean control over finalization of resources.
-But switching it to Conduits now would probably take weeks of work; I've not
-yet felt it was worthwhile. (Also it's not clear Conduits are the last,
-best thing.)
-
-For now, it keeps track of the pids it needs to wait on, and all the code
-run by the assistant is zombie-free. However, some code for fsck and unused
-that I anticipate the assistant using eventually still has some lurking
-zombies.
-
-----
-
-Solved the issue with preferred content expressions and dropping that
-I mentioned yesterday. My solution was to add a parameter to specify a set
-of repositories where content should be assumed not to be present. When
-deciding whether to drop, it can put the current repository in, and then
-if the expression fails to match, the content can be dropped.
-
-Using yesterday's example "(not copies=trusted:2) and (not in=usbdrive)",
-when the local repo is one of the 2 trusted copies, the drop check will
-see only 1 trusted copy, so the expression matches, and so the content will
-not be dropped.
-
-I've not tested my solution, but it type checks. :P I'll wire it up to
-`get/drop/move --auto` tomorrow and see how it performs.
-
-----
-
-Would preferred content expressions be more readble if they were inverted
-(becoming content filtering expressions)?
-
-1. "(not copies=trusted:2) and (not in=usbdrive)" becomes
-   "copies=trusted:2 or in=usbdrive"
-2. "smallerthan=10mb and include=*.mp3 and exclude=junk/*" becomes
-   "largerthan=10mb or exclude=*.mp3" or include=junk/*"
-3. "(not group=archival) and (not copies=archival:1)" becomes
-   "group=archival or copies=archival:1"
-
-1 and 3 are improved, but 2, less so. It's a trifle weird for "include"
-to mean "include in excluded content".
-
-The other reason not to do this is that currently the expressions
-can be fed into `git annex find` on the command line, and it'll come
-back with the files that would be kept.
-
-Perhaps a middle groud is to make "dontwant" be an alias for "not".
-Then we can write "dontwant (copies=trusted:2 or in=usbdrive)"
-
-----
-
-A user told me this:
-
-> I can confirm that the assistant does what it is supposed to do really well. I
-> just hooked up my notebook to the network and it starts syncing from notebook to
-> fileserver and the assistant on the fileserver also immediately starts syncing
-> to the [..] backup
-
-That makes me happy, it's the first quite so real-world success report I've
-heard.
diff --git a/doc/design/assistant/blog/day_9__correctness.mdwn b/doc/design/assistant/blog/day_9__correctness.mdwn
deleted file mode 100644
--- a/doc/design/assistant/blog/day_9__correctness.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-	git merge watch_
-
-My cursor has been mentally poised here all day, but I've been reluctant to
-merge watch into master. It seems solid, but is it correct? I was able to
-think up a lot of races it'd be subject to, and deal with them, but did I
-find them all?
-
-Perhaps I need to do some automated fuzz testing to reassure myself.
-I looked into using [genbackupdata](http://liw.fi/genbackupdata/) to that
-end. It's not quite what I need, but could be
-[moved in that direction](http://bugs.debian.org/677542). Or I could write
-my own fuzz tester, but it seems better to use someone else's, because 
-a) laziness and b) they're less likely to have the same blind spots I do.
-
-My reluctance to merge isn't helped by the known bugs with files that are
-either already open before `git annex watch` starts, or are opened by two
-processes at once, and confuse it into annexing the still-open file when one
-process closes it.
-
-I've been thinking about just running `lsof` on every file as it's being
-annexed to check for that, but in the end, `lsof` is too slow. Since its
-check involves trawling through all of /proc, it takes it a good half a
-second to check a file, and adding 25 seconds to the time it takes to
-process 100 files is just not acceptable.
-
-But an option that could work is to run `lsof` after a bunch of new files
-have been annexed. It can check a lot of files nearly as fast as a single
-one. In the rare case that an annexed file is indeed still open, it could
-be moved back out of the annex. Then when its remaining writer finally
-closes it, another inotify event would re-annex it.
diff --git a/doc/design/assistant/chunks.mdwn b/doc/design/assistant/chunks.mdwn
deleted file mode 100644
--- a/doc/design/assistant/chunks.mdwn
+++ /dev/null
@@ -1,271 +0,0 @@
-To avoid leaking even the size of your encrypted files to cloud storage
-providers, add a mode that stores fixed size chunks.
-
-May be a useful starting point for [[deltas]].
-
-May also allow for downloading different chunks of a file concurrently from
-multiple remotes.
-
-Also, can allow resuming of interrupted uploads and downloads.
-
-# legacy chunking
-
-Supported by only the webdav and directory special remotes.
-
-Filenames are used for the chunks that make it easy to see which chunks
-belong together, even when encryption is used. There is also a chunkcount
-file, that similarly leaks information.
-
-It is not possible to enable chunking on a non-chunked remote.
-
-Problem: Two uploads of the same key from repos with different chunk sizes
-could lead to data loss. For example, suppose A is 10 mb chunksize, and B
-is 20 mb, and the upload speed is the same. If B starts first, when A will
-overwrite the file it is uploading for the 1st chunk. Then A uploads the
-second chunk, and once A is done, B finishes the 1st chunk and uploads its
-second. We now have [chunk 1(from A), chunk 2(from B)].
-
-# new requirements
-
-Every special remote should support chunking. (It does not make sense
-to support it for git remotes, but gcrypt remotes should support it.)
-
-S3 remotes should chunk by default, because the current S3 backend fails
-for files past a certian size. See [[bugs/Truncated_file_transferred_via_S3]].
-
-The size of chunks, as well as whether any chunking is done, should be
-configurable on the fly without invalidating data already stored in the
-remote. This seems important for usability (eg, so users can turn chunking
-on in the webapp when configuring an existing remote).
-
-Two concurrent uploaders of the same object to a remote should be safe,
-even if they're using different chunk sizes.
-
-The legacy chunk method needs to be supported for back-compat, so
-keep the chunksize= setting to enable that mode, and add a new chunk=
-setting for the new mode.
-
-# obscuring file sizes
-
-To hide from a remote any information about the sizes of files could be
-another goal of chunking. At least two things are needed for this:
-
-1. The filenames used on the remote don't indicate which chunks belong
-   together.
-
-2. The final short chunk needs to be padded with random data,
-   so that a remote sees only encrypted files with uniform sizes
-   and cannot make guesses about the kinds of data being stored.
-
-Note that padding cannot completely hide all information from an attacker
-who is logging puts or gets. An attacker could, for example, look at the
-times of puts, and guess at when git-annex has moved on to
-encrypting/decrypting the next object, and so guess at the approximate
-sizes of objects. (Concurrent uploads/downloads or random delays could be
-added to prevent these kinds of attacks.)
-
-And, obviously, if someone stores 10 tb of data in a remote, they probably
-have around 10 tb of files, so it's probably not a collection of recipes..
-
-Given its inneficiencies and lack of fully obscuring file sizes,
-padding may not be worth adding, but is considered in the designs below.
-
-# design 1
-
-Add an optional chunk field to Key. It is only present for chunk
-2 and above. Ie, SHA256-s12345--xxxxxxx is the first chunk (or whole
-object), while SHA256-s12345-c2--xxxxxxx is the second chunk.
-
-On an encrypted remote, Keys are generated with the chunk field, and then
-HMAC enrypted.
-
-Note that only using it for chunks 2+ means that git-annex can start by
-requesting the regular key, so an observer sees the same request whether
-chunked or not, and does not see eg, a pattern of failed requests for 
-a non-chunked key, followed by successful requests for the chunked keys.
-(Both more efficient and perhaps more secure.)
-
-Problem: This makes putting chunks easy. But there is a problem when getting 
-an object that has been chunked. If the key size is not known, we
-cannot tell when we've gotten the last chunk. (Also, we cannot strip
-padding.) Note that `addurl` sometimes generates keys w/o size info
-(particularly, it does so by design when using quvi).
-
-Problem: Also, this makes `checkPresent` hard to implement: How can it know if
-all the chunks are present, if the key size is not known?
-
-Problem: Also, this makes it difficult to download encrypted keys, because
-we only know the decrypted size, not the encrypted size, so we can't
-be sure how many chunks to get, and all chunks need to be downloaded before
-we can decrypt any of them. (Assuming we encrypt first; chunking first
-avoids this problem.)
-
-Problem: Does not solve concurrent uploads with different chunk sizes.
-
-# design 2
-
-When chunking is enabled, always put a chunk number in the Key,
-along with the chunk size.
-So, SHA256-1048576-c1--xxxxxxx for the first chunk of 1 megabyte.
-
-Before any chunks are stored, write a chunkcount file, eg
-SHA256-s12345-c0--xxxxxxx. Note that this key is the same as the original
-object's key, except with chunk number set to 0. This file contains both
-the number of chunks, and also the chunk size used. `checkPresent` downloads this
-file, and then verifies that each chunk is present, looking for keys with
-the expected chunk numbers and chunk size.
-
-This avoids problems with multiple writers using different chunk sizes,
-since they will be uploading to different files.
-
-Problem: In such a situation, some duplicate data might be stored, not
-referenced by the last chunkcount file to be written. It would not be
-dropped when the key was removed from the remote.
-
-Note: This design lets an attacker with logs tell the (appoximate) size of
-objects, by finding the small files that contain a chunk count, and
-correlating when that is written/read and when other files are
-written/read. That could be solved by padding the chunkcount key up to the
-size of the rest of the keys, but that's very innefficient; `checkPresent` is not
-designed to need to download large files.
-
-# design 3
-
-Like design 1, but add an encrypted chunk count prefix to the first object.
-This needs to be done in a way that does not let an attacker tell if the
-object has an encrypted chunk count prefix or not. 
-
-This seems difficult; attacker could probably tell where the first encrypted
-part stops and the next encrypted part starts by looking for gpg headers,
-and so tell which files are the first chunks.
-
-Also, `checkPresent` would need to download some or all of the first file.
-If all, that's a lot more expensive. If only some is downloaded, an
-attacker can guess that the file that was partially downloaded is the
-first chunk in a series, and wait for a time when it's fully downloaded to
-determine which are the other chunks.
-
-Problem: Two uploads of the same key from repos with different chunk sizes
-could lead to data loss. (Same as in design 2.)
-
-# design 4
-
-Use key SHA256-s12345-S1048576-C1--xxxxxxx for the first chunk of 1 megabyte.
-
-Note that keeping the 's'ize field unchanged is necessary because it 
-disambiguates eg, WORM keys. So a 'S'ize field is used to hold the chunk
-size.
-
-Instead of storing the chunk count in the special remote, store it in 
-the git-annex branch. 
-
-The location log does not record locations of individual chunk keys
-(too space-inneficient). Instead, look at a chunk log in the
-git-annex branch to get the chunk count and size for a key.
-
-`checkPresent` would check if any of the logged sets of chunks is 
-present on the remote. It would also check if the non-chunked key is
-present, as a fallback.
-
-When dropping a key from the remote, drop all logged chunk sizes.
-(Also drop any non-chunked key.)
-
-As long as the location log and the chunk log are committed atomically,
-this guarantees that no orphaned chunks end up on a remote
-(except any that might be left by interrupted uploads).
-
-This has the best security of the designs so far, because the special 
-remote doesn't know anything about chunk sizes. It uses a little more
-data in the git-annex branch, although with care (using the same timestamp
-as the location log), it can compress pretty well.
-
-## chunk log
-
-Stored in the git-annex branch, this provides a mapping `Key -> [[Key]]`.
-
-Note that a given remote uuid might have multiple sets of chunks (with
-different sizes) logged, if a key was stored on it twice using different
-chunk sizes. Also note that even when the log indicates a key is chunked,
-the object may be stored non-chunked on the remote too.
-
-For fixed size chunks, there's no need to store the list of chunk keys,
-instead the log only records the number of chunks (needed because the size
-of the parent Key may not be known), and the chunk size.
-
-Example:
-
-	1287290776.765152s e605dca6-446a-11e0-8b2a-002170d25c55:10240 9
-
-Later, might want to support other kinds of chunks, for example ones made
-using a rsync-style rolling checksum. It would probably not make sense to
-store the full [Key] list for such chunks in the log. Instead, it might be
-stored in a file on the remote.
-
-To support such future developments, when updating the chunk log, 
-git-annex should preserve unparsable values (the part after the colon).
-
-## chunk then encrypt
-
-Rather than encrypting the whole object 1st and then chunking, chunk and
-then encrypt.
-
-Reasons:
-
-1. If 2 repos are uploading the same key to a remote concurrently,
-   this allows some chunks to come from one and some from another,
-   and be reassembled without problems.
-
-2. Also allows chunks of the same object to be downloaded from different
-   remotes, perhaps concurrently, and again be reassembled without
-   problems.
-
-3. Prevents an attacker from re-assembling the chunked file using details
-   of the gpg output. Which would expose approximate
-   file size even if padding is being used to obscure it.
-
-Note that this means that the chunks won't exactly match the configured
-chunk size. gpg does compression, which might make them a
-lot smaller. Or gpg overhead could make them slightly larger. So `checkPresent`
-cannot check exact file sizes.
-
-If padding is enabled, gpg compression should be disabled, to not leak
-clues about how well the files compress and so what kind of file it is.
-
-## chunk key hashing
-
-A chunk key should hash into the same directory structure as its parent
-key. This will avoid lots of extra hash directories when using chunking
-with non-encrypted keys.
-
-Won't happen when the key is encrypted, but that is good; hashing to the
-same bucket then would allow statistical correlation.
-
-## resuming interupted transfers
-
-Resuming interrupted downloads, and uploads are both possible.
-
-Downloads: If the tmp file for a key exists, round it to the chunk size,
-and skip forward to the next needed chunk. Easy.
-
-Uploads: Check if the 1st chunk is present. If so, check the second chunk,
-etc. Once the first missing chunk is found, start uploading from there.
-
-That adds one extra checkPresent call per upload. Probably a win in most cases.
-Can be improved by making special remotes open a persistent
-connection that is used for transferring all chunks, as well as for
-checking checkPresent.
-
-Note that this is safe to do only as long as the Key being transferred
-cannot possibly have 2 different contents in different repos. Notably not
-necessarily the case for the URL keys generated for quvi.
-
-Both **done**.
-
-## parallel
-
-If 2 remotes both support chunking, uploading could upload different chunks
-to them in parallel. However, the chunk log does not currently allow
-representing the state where some chunks are on one remote and others on
-another remote.
-
-Parallel downloading of chunks from different remotes is a bit more doable.
diff --git a/doc/design/assistant/cloud.mdwn b/doc/design/assistant/cloud.mdwn
deleted file mode 100644
--- a/doc/design/assistant/cloud.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-The [[syncing]] design assumes the network is connected. But it's often
-not in these pre-IPV6 days, so the cloud needs to be used to bridge between
-LANS.
-
-## The cloud notification problem (**done**)
-
-Alice and Bob have repos, and there is a cloud remote they both share.
-Alice adds a file; the assistant transfers it to the cloud remote.
-How does Bob find out about it?
-
-There are two parts to this problem. Bob needs to find out that there's
-been a change to Alice's git repo. Then he needs to pull from Alice's git repo,
-or some other repo in the cloud she pushed to. Once both steps are done,
-the assistant will transfer the file from the cloud to Bob.
-
-* dvcs-autosync uses xmppp; all repos need to have the same xmpp account
-  configured, and send self-messages. An alternative would be to have
-  different accounts that join a channel or message each other. Still needs
-  account configuration.
-* irc could be used. With a default irc network, and an agreed-upon channel,
-  no configuration should be needed. IRC might be harder to get through
-  some firewalls, and is prone to netsplits, etc. IRC networks have reasons
-  to be wary of bots using them. Only basic notifications could be done over
-  irc, as it has little security.
-* When there's a ssh server involved, code could be run on it to notify
-  logged-in clients. But this is not a general solution to this problem.
-* pubsubhubbub does not seem like an option; its hubs want to pull down
-  a feed over http.
-
-See [[xmpp]] for design of git-annex's use of xmpp for push notifications.
-
-## storing git repos in the cloud **done for XMPP**
-
-Of course, one option is to just use github etc to store the git repo.
-
-Two things can store git repos in Amazon S3:
-* <http://gabrito.com/post/storing-git-repositories-in-amazon-s3-for-high-availability>
-* <http://wiki.cs.pdx.edu/oss2009/index/projects/gits3.html>
-
-Another option is to not store the git repo in the cloud, but push/pull
-peer-to-peer. When peers cannot directly talk to one-another, this could be
-bounced through something like XMPP. This is **done** for [[xmpp]]!
-
-Another option: Use <https://github.com/blake2-ppc/git-remote-gcrypt> to store
-git repo encrypted on cloud storage.
diff --git a/doc/design/assistant/comment_10_f2233fad55c20686cf299bf6788f1f23._comment b/doc/design/assistant/comment_10_f2233fad55c20686cf299bf6788f1f23._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_10_f2233fad55c20686cf299bf6788f1f23._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://www.klomp.eu/"
- ip="95.91.241.82"
- subject="Watch also possible with git?"
- date="2012-06-15T17:25:30Z"
- content="""
-Hi,
-
-it seems that you put a lot of efforts in handling race conditions. Thats great. I wonder if the watch can also be used with git (i.e. changes are commited into git and not as annex)? I know that other projects follow this idea but why using different tools if the git-annex assistant could handle both...
-"""]]
diff --git a/doc/design/assistant/comment_11_a38f0f21c2346e65b786d791b6829f9b._comment b/doc/design/assistant/comment_11_a38f0f21c2346e65b786d791b6829f9b._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_11_a38f0f21c2346e65b786d791b6829f9b._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawneJXwhacIb0YvvdYFxhlNVpz6Wpg6V7AA"
- nickname="Shayne"
- subject="comment 11"
- date="2012-08-13T00:37:35Z"
- content="""
-Yeah definately go with homebrew rather than macports if possible. macports and fink, whilst great systems, have a tendency to sort of create their own alternative-dimension of files within the system that just dont always feel particularly well integrated. As a result \"brew\" has become increasingly more popular to the point its almost ubuquitous now.
-
-Plus its brew-doctor thing is awesome. 
-
-The best approach though thats agnostic to distro systems is to simply go for a generic installer.
-"""]]
diff --git a/doc/design/assistant/comment_12_5e991177d6577384f39a36ae02f5f574._comment b/doc/design/assistant/comment_12_5e991177d6577384f39a36ae02f5f574._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_12_5e991177d6577384f39a36ae02f5f574._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4"
- nickname="Jörn"
- subject="Multiple annexes?"
- date="2012-09-20T16:10:29Z"
- content="""
-Thank you for this great piece of software which is now becoming even better with the assistant.
-
-Just one question: will one instance of the assistant be able to track multiple git annex repositories each building up their own network of annexes OR would I need to run multiple instances of the assistant?
-
-Thanks,
-Jörn
-"""]]
diff --git a/doc/design/assistant/comment_13_f8625c6f43b58847840df338a73b7972._comment b/doc/design/assistant/comment_13_f8625c6f43b58847840df338a73b7972._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_13_f8625c6f43b58847840df338a73b7972._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 13"
- date="2012-09-20T16:21:11Z"
- content="""
-@Jörn, two days ago I added support in the webapp for multiple independent repositories. So you can create independent repos using it, and switch between them from a menu. Under the hood there are multiple git-annex assistant daemons running, but this is an implementation detail; it's not like these use any more memory or other resources than would a single daemon that managed multiple repositories.
-"""]]
diff --git a/doc/design/assistant/comment_14_c37ef5931b0f5c1f808083e0d636a208._comment b/doc/design/assistant/comment_14_c37ef5931b0f5c1f808083e0d636a208._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_14_c37ef5931b0f5c1f808083e0d636a208._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- subject="you rock! & roadmap update?"
- date="2012-09-21T04:25:58Z"
- content="""
-joey, you rock. I just want to push on that point - it doesn't seem like there's that many tools that do what git-annex is trying to do out there, and you seem to be doing an incredible job at doing it, so this is great, keep going!
-
-i was wondering - i am glad to see the progress, but it is unclear to me where you actually are in the roadmap. are things going according to plan? are we at month 3? 4? or 1-4? :) just little updates on that roadmap section above would be quite useful!
-
-thanks again!
-"""]]
diff --git a/doc/design/assistant/comment_15_68c98a27083567f20c2e6bc2a760991b._comment b/doc/design/assistant/comment_15_68c98a27083567f20c2e6bc2a760991b._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_15_68c98a27083567f20c2e6bc2a760991b._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 15"
- date="2012-09-21T05:25:53Z"
- content="""
-We're on month 4 of work, and most of months 1-3 is done well enough for a first pass. Very little of what's listed in month 4 has happened yet, due to my being maybe 2 weeks behind schedule, but bits of [[cloud]] are being planned.
-
-I've made a small adjustment, I think it'll make sense to spend a month on user-driven features before getting into Android.
-"""]]
diff --git a/doc/design/assistant/comment_16_8e6788c817c60371d2a2f158e1a65f87._comment b/doc/design/assistant/comment_16_8e6788c817c60371d2a2f158e1a65f87._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_16_8e6788c817c60371d2a2f158e1a65f87._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://launchpad.net/~gdr-go2"
- nickname="gdr-go2"
- subject="Maybe a DEB?2"
- date="2012-09-27T09:44:14Z"
- content="""
-Month 3 was all about easy setup, so I kind of expected to download a deb package and just install it, not to download a whole bunch of haskell libraries. Is there a chance that you will release some packages?
-"""]]
diff --git a/doc/design/assistant/comment_17_97bdfacac5ac492281c9454ee4c0228e._comment b/doc/design/assistant/comment_17_97bdfacac5ac492281c9454ee4c0228e._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_17_97bdfacac5ac492281c9454ee4c0228e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.14.141"
- subject="comment 17"
- date="2012-09-27T18:44:11Z"
- content="""
-@gdr A package with the assistant is available in Debian unstable.
-"""]]
diff --git a/doc/design/assistant/comment_18_53137b2df4913496c0afb2d895aa4ee2._comment b/doc/design/assistant/comment_18_53137b2df4913496c0afb2d895aa4ee2._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_18_53137b2df4913496c0afb2d895aa4ee2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm7AuSfii_tCkLyspL6Mr0ATlO6OxLNYOo"
- nickname="Georg"
- subject="for OSX, package managers (homebrew and macports) are really second-class"
- date="2013-07-24T07:24:49Z"
- content="""
-at least with regards to wide spread use. I agree with Wichert, the average OSX user won't use them. I myself would go with homebrew (because it is far less of a pain than macports), but actually static built binaries that are just dragged from a DMG to your programs folder is the way to go if you can't go osx app store. It's just how most Apple users are wired. PKG would be fine, too, since most will know them, but those are really only needed if you need to place stuff in /Library/Frameworks or things like that. If it can be done as a all-inclusive OSX .app, do it that way and just pack it up in a .DMG.
-"""]]
diff --git a/doc/design/assistant/comment_19_ff1b0ba57e22ed757ec3fc5400b5e43e._comment b/doc/design/assistant/comment_19_ff1b0ba57e22ed757ec3fc5400b5e43e._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_19_ff1b0ba57e22ed757ec3fc5400b5e43e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlnoH5btjn_BLib3_IhES5uMhrzuOiwCYo"
- nickname="András"
- subject="windows port"
- date="2013-07-25T07:50:19Z"
- content="""
-I'd love to use the Windows port of the assistant by Christmas. Keep up the good work! :)
-"""]]
diff --git a/doc/design/assistant/comment_1_a48fcfbf97f0a373ea375cd8f07f0fc8._comment b/doc/design/assistant/comment_1_a48fcfbf97f0a373ea375cd8f07f0fc8._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_1_a48fcfbf97f0a373ea375cd8f07f0fc8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
- nickname="Jimmy"
- subject="comment 1"
- date="2012-06-02T12:06:37Z"
- content="""
-Will statically linked binaries be provided for say Linux, OSX and *BSD?  I think having some statically linked binaries will certainly help and appeal to a lot of users.
-"""]]
diff --git a/doc/design/assistant/comment_20_099da245e3276fa84f5e14312d186621._comment b/doc/design/assistant/comment_20_099da245e3276fa84f5e14312d186621._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_20_099da245e3276fa84f5e14312d186621._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="2001:4978:f:21a::2"
- subject="comment 20"
- date="2013-07-25T18:22:51Z"
- content="""
-@Georg, DMG have been built for OSX for a long time. See [[install/OSX]]
-"""]]
diff --git a/doc/design/assistant/comment_2_6d3552414fdcc2ed3244567e6c67989d._comment b/doc/design/assistant/comment_2_6d3552414fdcc2ed3244567e6c67989d._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_2_6d3552414fdcc2ed3244567e6c67989d._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 2"
- date="2012-06-04T19:45:00Z"
- content="""
-Jimmy, I hope to make it as easy as possible to install. I've been focusing on getting it directly into popular Linux distributions, rather than shipping my own binary. The OSX binary is static, and while I lack a OSX machine, I would like to get it easier to distribute to OSX users.
-"""]]
diff --git a/doc/design/assistant/comment_3_05223be50c889b2ed6bc4abf74116450._comment b/doc/design/assistant/comment_3_05223be50c889b2ed6bc4abf74116450._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_3_05223be50c889b2ed6bc4abf74116450._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
- nickname="Jimmy"
- subject="comment 3"
- date="2012-06-07T20:22:55Z"
- content="""
-I'd agree getting it into the main distros is the way to go, if you need OSX binaries, I could volunteer to setup an autobuilder to generate binaries for OSX users, however it would rely on users to have macports with the correct ports installed to use it (things like coreutils etc...)
-
-"""]]
diff --git a/doc/design/assistant/comment_4_fbbd93b55803ae21e6ba4b6568c2fafd._comment b/doc/design/assistant/comment_4_fbbd93b55803ae21e6ba4b6568c2fafd._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_4_fbbd93b55803ae21e6ba4b6568c2fafd._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 4"
- date="2012-06-08T01:56:52Z"
- content="""
-I always appreciate your OSX work Jimmy...
-
-Could it be put into macports?
-"""]]
diff --git a/doc/design/assistant/comment_5_f4e9af3fed6c27e8ff39badb9794064d._comment b/doc/design/assistant/comment_5_f4e9af3fed6c27e8ff39badb9794064d._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_5_f4e9af3fed6c27e8ff39badb9794064d._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
- nickname="Jimmy"
- subject="comment 5"
- date="2012-06-08T07:22:34Z"
- content="""
-In relation to macports, I often found that haskell in macports are often behind other distros, and I'm not willing to put much effort into maintaining or updating those ports. I found that to build git-annex, installing macports manually and then installing haskell-platform from the upstream to be the best way to get the most up to date dependancies for git-annex.
-
-fyi in macports ghc is at version 6.10.4 and haskell platform is at version 2009.2, so there are a significant number of ports to update.
-
-I was thinking about this a bit more and I reckon it might be easier to try and build a self contained .pkg package and have all the needed binaries in a .app styled package, that would work well when the webapp comes along. I will take a look at it in a week or two (currently moving house so I dont have much time)
-"""]]
diff --git a/doc/design/assistant/comment_6_c7ad07cade1f44f9a8b61f92225bb9c5._comment b/doc/design/assistant/comment_6_c7ad07cade1f44f9a8b61f92225bb9c5._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_6_c7ad07cade1f44f9a8b61f92225bb9c5._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
- nickname="Jimmy"
- subject="comment 6"
- date="2012-06-08T15:21:18Z"
- content="""
-It's not much for now... but see <http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0/> I'm ignoring the debian-stable and pristine-tar branches for now, as I am just building and testing on osx 10.7.
-
-Hope the autobuilder will help you develop the OSX side of things without having direct access to an osx machine! I will try and get gitbuilder to spit out appropriately named tarballs of the compiled binaries in a few days when I have more time.
-"""]]
diff --git a/doc/design/assistant/comment_7_609d38e993267195a80fecd84c93d1e2._comment b/doc/design/assistant/comment_7_609d38e993267195a80fecd84c93d1e2._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_7_609d38e993267195a80fecd84c93d1e2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.8.126"
- subject="comment 7"
- date="2012-06-09T18:07:51Z"
- content="""
-Thanks, that's already been useful to me. You might as well skip the debian-specific \"bpo\" tags too.
-"""]]
diff --git a/doc/design/assistant/comment_8_22b818e1a2a825efb78139271a14f944._comment b/doc/design/assistant/comment_8_22b818e1a2a825efb78139271a14f944._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_8_22b818e1a2a825efb78139271a14f944._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawldKnauegZulM7X6JoHJs7Gd5PnDjcgx-E"
- nickname="Matt"
- subject="Homebrew instead of MacPorts"
- date="2012-06-22T04:26:02Z"
- content="""
-[Homebrew] is a much better package manager than MacPorts IMO.
-
-[Homebrew]: http://mxcl.github.com/homebrew/
-"""]]
diff --git a/doc/design/assistant/comment_9_d052e2142da8b4838fb1edf791ea23ae._comment b/doc/design/assistant/comment_9_d052e2142da8b4838fb1edf791ea23ae._comment
deleted file mode 100644
--- a/doc/design/assistant/comment_9_d052e2142da8b4838fb1edf791ea23ae._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://wiggy.net/"
- nickname="Wichert"
- subject="macports"
- date="2012-06-12T13:00:34Z"
- content="""
-The average OSX user has a) no idea what macports is, and b) will not be able to install it. Anything that requires a user to do anything with a commandline (or really anything other than using a GUI installer) is effectively a dealbreaker. For our use cases OSX is definitely a requirement, but it must only use standard OSX installation methods in order to be usable. Being in the appstore would be ideal, but standard dmg/pkg installers are still common enough that they are also acceptable.
-
-FWIW this is the same reason many git GUIs were not usable for our OSX users: they required separate installation of the git commandline tools.
-"""]]
diff --git a/doc/design/assistant/configurators.mdwn b/doc/design/assistant/configurators.mdwn
deleted file mode 100644
--- a/doc/design/assistant/configurators.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Add to the [[webapp]] some configuration of git-annex.
-
-There are some basic settings that pass through to `git config`, things
-like how much disk space to leave free, how many copies to ensure are kept
-of files, etc.
-
-The meat of the configuration will be in configuration assistants that walk
-through setting up common use cases.
-
-* Create a repository (run when the web app is started without a configured
-  repository too). **done**
-* Clone this repo to a USB drive or other removable drive. **done**
-* Make a bare repo on a remote ssh server **done**
-* Clone this repo to another host. (Needs [[pairing]]) **done**
-* Set up Amazon S3. **done**
-* Set up encrypted rsync remote. **done**
-* Rsync.net special case **done**
-* Set up gpg encryption key; gpg key distribution.
-* I lost my USB drive!
-* etc -- many more possibilities
diff --git a/doc/design/assistant/deltas.mdwn b/doc/design/assistant/deltas.mdwn
deleted file mode 100644
--- a/doc/design/assistant/deltas.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Speed up syncing of modified versions of existing files. 
-
-One simple way is to find the key of the old version of a file that's
-being transferred, so it can be used as the basis for rsync, or any
-other similar transfer protocol.
-
-For remotes that don't use rsync, use a rolling checksum based chunker,
-such as BuzHash. This will produce [[chunks]], which can be stored on the
-remote as regular Keys -- where unlike the fixed size chunk keys, the
-SHA256 part of these keys is the checksum of the chunk they contain.
-
-Once that's done, it's easy to avoid uploading chunks that have been sent
-to the remote before.
-
-When retriving a new version of a file, there would need to be a way to get
-the list of chunk keys that constitute the new version. Probably best to
-store this list on the remote. Then there needs to be a way to find which
-of those chunks are available in locally present files, so that the locally
-available chunks can be extracted, and combined with the chunks that need
-to be downloaded, to reconstitute the file.
-
-To find which chucks are locally available, here are 2 ideas:
-
-1. Use a single basis file, eg an old version of the file. Re-chunk it, and
-   use its chunks.  Slow, but simple.
-2. Some kind of database of locally available chunks. Would need to be kept
-   up-to-date as files are added, and as files are downloaded.
diff --git a/doc/design/assistant/desymlink.mdwn b/doc/design/assistant/desymlink.mdwn
deleted file mode 100644
--- a/doc/design/assistant/desymlink.mdwn
+++ /dev/null
@@ -1,145 +0,0 @@
-While dropbox allows modifying files in the folder, git-annex freezes
-them upon creation, using symlinks.
-
-This is a core design simplification of git-annex.
-But it is problematic too:
-
-* To allow directly editing files in its folder, something like [[todo/smudge]] is
-  needed, to get rid of the symlinks that stand in for the files.
-* OSX seems to have a [[lot_of_problems|bugs/OSX_alias_permissions_and_versions_problem]]
-  with stupid programs that follow symlinks and present the git-annex
-  hash filename to the user.
-* FAT sucks and doesn't support symlinks at all, so [[Android]] can't
-  have regular repos on it.
-
-One approach for this would be to hide the git repo away somewhere,
-and have the git-annex assistant watch a regular directory, with
-regular files.
-
-There would have to be a mapping from files to git-annex objects.
-And some intelligent way to determine when a file has been changed
-and no longer corresponds to its object. (Not expensive hashing every time,
-plz.)
-
-Since this leaves every file open to modification, any such repository
-probably needs to be considered untrusted by git-annex. So it doesn't
-leave its only copy of a file in such a repository, but instead
-syncs it to a proper git-annex repository.
-
-The assistant would make git commits still, of symlinks. It can already do
-that with without actual symlinks existing on disk. More difficult is
-handling merging; git merge wants a real repository with files it can
-really operate on. The assistant would need to calculate merges on its own,
-and update the regular directory to reflect changes made in the merge.
-
-Another massive problem with this idea is that it doesn't allow for
-[[partial_content]]. The symlinks that everyone loves to hate on are what
-make it possible for the contents of some files to not be present on
-disk, while the files are still in git and can be retreived as desired.
-With real files, some other standin for a missing file would be needed.
-Perhaps a 0 length, unreadable, unwritable file? On systems that
-support symlinks it could be a broken symlink like is used now, that
-is converted to a real file when it becomes present.
-
-## concrete design
-
-* Enable with annex.direct
-* Use .git/ for the git repo, but `.git/annex/objects` won't be used
-  for object storage.
-* `git status` and similar will show all files as type changed, and
-  `git commit` would be a very bad idea. Just don't support users running
-  git commands that affect the repository in this mode. Probably.
-* However, `git status` and similar also will show deleted and new files,
-  which will be helpful for the assistant to use when starting up.
-* Cache the mtime, size etc of files, and use this to detect when they've been
-  modified when the assistant was not running. This would only need to be
-  checked at startup, probably.
-* Use dangling symlinks for standins for missing content, as now.
-  This allows just cloning one of these repositories normally, and then
-  as the files are synced in, they become real files.
-* Maintain a local mapping from keys to files in the tree. This is needed
-  when sending/receiving/dropping keys to know what file to access.
-  Note that a key can map to multiple files. And that when a file is
-  deleted or moved, the mapping needs to be updated.
-* May need a reverse mapping, from files in the tree to keys? TBD
-  (Currently, getting by looking up symlinks using `git cat-file`)
-  (Needed to make things like `git annex drop` that want to map from the
-  file back to the key work.)
-* The existing watch code detects when a file gets closed, and in this
-  mode, it could be a new file, or a modified file, or an unchanged file.
-  For a modified file, can compare mtime, size, etc, to see if it needs
-  to be re-added.
-* The inotify/kqueue interface does not tell us when a file is renamed.
-  So a rename has to be treated as a delete and an add, so can have a lot
-  of overhead, to re-hash the file.
-* Note that this could be used without the assistant, as a git remote
-  that content is transferred to and from. Without the assistant, changes
-  to files in this remote would not be noticed and committed, unless
-  a git-annex command were added to do so.
-  Getting it basically working as a remote would be a good 1st step.
-* It could also be used without the assistant as a repository that
-  the user uses directly. Would need some git-annex commands
-  to merge changes into the repo, update caches, and commit changes.
-  This could all be done by "git annex sync".
-
-## TODO
-
-* kqueue does not deliver an event when an existing file is modified.
-  This doesn't affect OSX, which uses FSEvents now, but it makes direct
-  mode assistant not 100% on other BSD's.
-
-## done
-
-* `git annex sync` updates the key to files mappings for files changed,
-  but needs much other work to handle direct mode:
-  * Generate git commit, without running `git commit`, because it will
-    want to stage the full files. **done**
-  * Update location logs for any files deleted by a commit. **done**
-  * Generate a git merge, without running `git merge` (or possibly running
-    it in a scratch repo?), because it will stumble over the direct files.
-    **done**
-  * Drop contents of files deleted by a merge (including updating the
-    location log), or if we cannot drop,
-    move their contents to `.git/annex/objects/`.  **no**  .. instead, 
-    avoid ever losing file contents in a direct mode merge. If the file is
-    deleted, its content is moved back to .git/annex/objects, if necessary.
-  * When a merge adds a symlink pointing at a key that is present in the
-    repo, replace the symlink with the direct file (either moving out
-    of `.git/annex/objects/` or hard-linking if the same key is present
-    elsewhere in the tree. **done**
-  * handle merge conflicts on direct mode files **done**
-* support direct mode in the assistant (many little fixes)
-
-* Deal with files changing as they're being transferred from a direct mode
-  repository to another git repository. The remote repo currently will 
-  accept the bad data and update the location log to say it has the key.
-
-  This affects both special remotes and git remotes. 
-
-  For special remotes,
-  it seems the best that could be done is to have an error unwind action
-  passed to `sendAnnex` that is called if the file is modified as it's
-  transferred. That would then remove the probably corrupted file from the
-  remote. (The full transfer would still run, unless there was also a way
-  to cancel an in progress transfer.) **done**
-
-  (With the above, there is some potential for the bad content being
-  downloaded from the special remote into another repo. This would only
-  happen if the other repo for some reason thinks the special remote 
-  has the content. Since the location log would not be updated until the
-  transfer is successful, this should not happen.)
-
-  For local git remotes, need to check the direct mode file after it's
-  copied and before it's put into place as a key's content. **done**
-  (untested)
-
-  `git-annex-shell sendkey` needs to do something if it sent bad
-  data. This seems to not need protocol changes; it can just detect 
-  the problem and exit nonzero. Would need to do something to clean up
-  the temp file, which is probably corrupt. (Could in future use it as a
-  basis for transferring the new key..) **done**
-
-  For git remotes, added a flag to `git-annex-shell recvkey` (using a field
-  after the "--" to remain back-compat). With this flag, after receiving
-  the data, the remote fscks the data. This is not optimal, but avoids
-  needing another round-trip, or a protocol change.
diff --git a/doc/design/assistant/disaster_recovery.mdwn b/doc/design/assistant/disaster_recovery.mdwn
deleted file mode 100644
--- a/doc/design/assistant/disaster_recovery.mdwn
+++ /dev/null
@@ -1,185 +0,0 @@
-The assistant should help the user recover their repository when things go
-wrong.
-
-[[!toc ]]
-
-## dangling lock files
-
-There are a few ways a git repository can get broken that are easily fixed.
-One is left over index.lck files. When a commit to a repository fails,
-check that nothing else is using it, fix the problem, and redo the commit.
-
-* **done** for .git/annex/index.lock, can be handled safely and automatically.
-* **done** for .git/index.lock, only when the assistant is starting up.
-* What about local remotes, eg removable drives? git-annex does attempt
-  to commit to the git-annex branch of those. It will use the automatic
-  fix if any are dangling. It does not commit to the master branch; indeed
-  a removable drive typically has a bare repository.
-  However, it does a scan for broken locks anyway if there's a problem
-  syncing. **done**
-* What about git-annex-shell? If the ssh remote has the assistant running,
-  it can take care of it, and if not, it's a server, and perhaps the user
-  should be required to fix up if it crashes during a commit. This should
-  not affect the assistant anyway.
-* **done** Seems that refs can also have stale lock files, for example
-  '/storage/emulated/legacy/DCIM/.git/refs/remotes/flick_phonecamera/synced/git-annex.lock'
-  All git lock files are now handled (except gc lock files).
-
-## incremental fsck
-
-Add webapp UI to enable incremental fsck **done**
-
-Of course, incremental fsck will run as an niced (and ioniced) background
-job. There will need to be a button in the webapp to stop it, in case it's
-annoying. **done**
-
-When fsck finds a damanged file, queue a download of the file from a
-remote. **done**
-
-Detect when a removable drive is connected in the Cronner, and check
-and try to run its remote fsck jobs. **done** (Same mechanism will work for
-network remotes becoming connected.)
-
-TODO: If no accessible remote has a file that fsck reported missing,
-prompt the user to eg, connect a drive containing it. Or perhaps this is a
-special case of a general problem, and the webapp should prompt the user
-when any desired file is available on a remote that's not mounted?
-
-## git-annex-shell remote fsck
-
-TODO: git-annex-shell fsck support, which would allow cheap fast fscks
-of ssh remotes.
-
-Would be nice; otherwise remote fsck is too expensive (downloads
-everything) to have the assistant do.
-
-Note that Remote.Git already tries to use this, but the assistant does not
-call it for non-local remotes.
-
-## git fsck and repair
-
-Add git fsck to scheduled self fsck **done**
-
-TODO: git fsck on ssh remotes? Probably not worth the complexity..
-
-TODO: If committing to the repository fails, after resolving any dangling
-lock files (see above), it should git fsck. This is difficult, because
-git commit will also fail if the commit turns out to be empty, or due to
-other transient problems.. So commit failures are currently ignored by the
-assistant.
-
-If git fsck finds problems, launch git repository repair. **done**
-
-git annex fsck --fast at end of repository repair to ensure
-git-annex branch is accurate. **done**
-
-If syncing with a local repository fails, try to repair it. **done**
-
-TODO: "Repair" gcrypt remotes, by removing all refs and objects,
-and re-pushing. (Since the objects are encrypted data, there is no way
-to pull missing ones from anywhere..) 
-Need to preserve gcrypt-id while doing this!
-
-TODO: along with displaying alert when there is a problem detected
-by consistency check, send an email alert. (Using system MTA?)
-
-## nudge user to schedule fscks
-
-Make the webapp encourage users to schedule fscks of their
-local repositories. The goal here was that it should not be obnoxious about
-repeatedly pestering the user to set that up, but should still encourage
-anyone who cares to set it up.
-
-Maybe: Display a message only once per week, and only after the repository
-has existed for at least one full day. But, this will require storing
-quite a lot of state.
-
-Or: Display a message whenever a removable drive is detected to have been
-connected. I like this, but what about nudging the main repo? Could do it
-every webapp startup, perhaps? **done**
-
-There should be a "No thanks" button that prevents it nudging again for a
-repo. **done**
-
-## git repository repair
-
-There are several ways git repositories can get damanged. 
-
-The most common is empty files in .git/annex/objects and commits that refer
-to those objects. When the objects have not yet been pushed anywhere.
-I've several times recovered from this manually by
-removing the bad files and resetting to before the commits that referred to
-them. Then re-staging any divergence in the working tree. This could
-perhaps be automated.
-
-As long as the git repository has at least one remote, another method is to
-clone the remote, sync from all other remotes, move over .git/config and
-.git/annex/objects, and tar up the old broken git repo and `git annex add`
-it. This should be automatable and get the user back on their feet. User
-could just click a button and have this be done.
-
-This is useful outside git-annex as well, so make it a
-git-recover-repository command.
-
-### detailed design
-
-Run `git fsck` and parse output to find bad objects. **done** Note that
-fsck may fall over and fail to print out all bad objects, when
-files are corrupt. So if the fsck exits nonzero, need to collect all
-bad objects it did find, and:
-
-1. If the local repository contains packs, the packs may be corrupt.
-   So, start by using `git unpack-objects` to unpack all
-   packs it can handle (which may include parts of corrupt packs) 
-   back to loose objects. And delete all packs. **done**
-2. Delete all loose corrupt objects. **done**
-
-Repeat until fsck finds no new problems. **done**
-
-Check if there's a remote. If so, and if the bad objects are all
-present on it, can simply get all bad objects from the remote,
-and inject them back into .git/objects to recover:
-
-3. Make a new (bare) clone from the remote.
-   (Note: git does not seem to provide a way to fetch specific missing
-   objects from the remote. Also, cannot use `--reference` against
-   a repository with missing refs. So this seems unavoidably
-   network-expensive.) **done**
-5. Rsync objects over. (Turned out to work better than git-cat-file, 
-   because we don't have to walk the graph to add missing objects.)
-   **done**
-6. If each bad object was able to be repaired this way, we're done!
-   (If not, can reuse the clone for getting objects from the next remote.)
-   **done**
-
-If some missing objects cannot be recovered from remotes, find commits in each
-local branch that are broken by all remaining missing objects. Some of this can
-be parsed from git fsck output, but for eg blobs, the commits need to
-be walked to walk the trees, to find trees that refer to the blobs. **done**
-
-For each branch that is affected, look in the reflog and/or `git log
-$branch` to find the last good commit that predates all broken commits. (If
-the head commit of a branch is broken, git log is not going to show
-anything useful, but the reflog can be used to find past refs for the
-branch -- have to first delete the .git/HEAD file if it points to the
-broken ref.) **done**
-
-The basic idea then is to reset the branch to the last good commit
-that was found for it.
-
-* For the HEAD branch, can just reset it. (If no last good commit was found
-  for the HEAD branch, reset it to a dummy empty commit.) This will
-  leave git showing any changes made since then as staged in the index and
-  uncommitted. Or if the index is missing/corrupt, any files in the tree will
-  show as modified and uncommitted. User (or git-annex assistant) can then
-  commit as appropriate. Print appropriate warning message. **done**
-* Special handling for git-annex branch and index. **done**
-* Remote tracking branches can just be removed, and then `git fetch`
-  from the remote, which will re-download missing objects from it and
-  reinstate the tracking branch. **done**
-* For other branches, reset them to last good commit, or delete
-  if none was found. **done**
-* (Decided not to touch tags.)
-
-The index file can still refer to objects that were missing.
-Rewrite to remove them. **done**
diff --git a/doc/design/assistant/encrypted_git_remotes.mdwn b/doc/design/assistant/encrypted_git_remotes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/encrypted_git_remotes.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Encrypted git remotes are now possible 
-using [git-remote-gcrypt](https://github.com/joeyh/git-remote-gcrypt).
-
-There are at least two use cases for this in the assistant:
-
-* Storing an encrypted git repository on a local drive. **done**
-* Or on a remote server. This could even allow using github. But more
-  likely would be a shell server that has git-annex-shell on it so can
-  also store file contents, and which is not trusted with unencrypted data.
-  **done**
-
-git-remote-gcrypt is already usable with git-annex. What's needed is
-to make sure it's installed (ie, get it packaged into distros or embedded
-into git-annex), and make it easy to set up from the webapp. **done**
-
-Hmm, this will need gpg key creation, so would also be a good opportunity
-to make the webapp allow using that for special remotes too.
-
-One change is needed in git-annex core.. It currently does not support
-storing encrypted files on git remotes, only on special remotes. Perhaps
-the way to deal with this is to make it consider git-remote-grypt remotes
-to be a special remote type? **done**
diff --git a/doc/design/assistant/gpgkeys.mdwn b/doc/design/assistant/gpgkeys.mdwn
deleted file mode 100644
--- a/doc/design/assistant/gpgkeys.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Currently the assistant sets up a shared encryption key, which is checked
-into git, so anyone who gets the repository can decrypt files that are
-stored encrypted on special remotes.
-
-To support using gpg keys in the assistant, we need some things:
-
-1. Help user set up a gpg key if they don't have one. This could be a
-   special-purpose key dedicated to being used by git-annex. It might be
-   nice to leave the user with a securely set up general purpose key,
-   but that would certainly preclude prompting for its password in the
-   webapp. Indeed, the password prompt is the main problem here.
-   Best solution would be to get gpg agent working on all supported 
-   platforms.
-
-   Update: For now, git-annex only assists in generating gpg keys that are
-   intended to only be used to encrypt a repo.
-
-2. After generating a gpg key, back it up. It might be the only way
-   some data is accessible.
-
-   One way I'm considering is generating a QR code
-   of the key, which could be printed to paper. Preliminary results
-   are good; a 4096 bit secret key fits in a QR code (a secret key
-   with many subkeys may not). Debian has command-line utilities that
-   can generate and read such a QR code.
-
-   Another way would be to use shamir secret sharing to split the key into
-   N peices and send each one to one of the user's repos.
-
-3. Help user learn the gpg keys of people they want to share their repo
-   with, and give them access. If the public key was recorded in the git-annex
-   branch, this could be easily determined when sharing repositories with
-   friends. Or, use MonkeySphere, or Monkeysign..
-
------
-
-Another gpg key security thing is that currently git-annex stores
-crypto creds in memory while it's running. Should use locked memory. See
-<https://github.com/vincenthz/hs-securemem> and
-<https://github.com/vincenthz/hs-securemem/issues/1>
diff --git a/doc/design/assistant/inotify.mdwn b/doc/design/assistant/inotify.mdwn
deleted file mode 100644
--- a/doc/design/assistant/inotify.mdwn
+++ /dev/null
@@ -1,234 +0,0 @@
-"git annex watch" command, which runs, in the background, watching via
-inotify for changes, and automatically annexing new files, etc. Now
-available!
-
-[[!toc]]
-
-## known bugs
-
-* Kqueue has to open every directory it watches, so too many directories
-  will run it out of the max number of open files (typically 1024), and fail.
-  I may need to fork off multiple watcher processes to handle this.
-  See [[bug|bugs/Issue_on_OSX_with_some_system_limits]]. (Does not affect
-  OSX any longer, only other BSDs).
-
-## beyond Linux
-
-I'd also like to support OSX and if possible the BSDs.
-
-* kqueue ([haskell bindings](http://hackage.haskell.org/package/kqueue))
-  is supported by FreeBSD, OSX, and other BSDs.
-
-  In kqueue, to watch for changes to a file, you have to have an open file
-  descriptor to the file. This wouldn't scale. 
-
-  Apparently, a directory can be watched, and events are generated when
-  files are added/removed from it. You then have to scan to find which
-  files changed. [example](https://developer.apple.com/library/mac/#samplecode/FileNotification/Listings/Main_c.html#//apple_ref/doc/uid/DTS10003143-Main_c-DontLinkElementID_3)
-
-  Gamin does the best it can with just kqueue, supplimented by polling.
-  The source file `server/gam_kqueue.c` makes for interesting reading.
-  Using gamin to do the heavy lifting is one option. 
-  ([haskell bindings](http://hackage.haskell.org/package/hlibfam) for FAM;
-  gamin shares the API)
-
-  kqueue does not seem to provide a way to tell when a file gets closed,
-  only when it's initially created. Poses problems..
-
-  * [man page](http://www.freebsd.org/cgi/man.cgi?query=kqueue&apropos=0&sektion=0&format=html)
-  * <https://github.com/gorakhargosh/watchdog/blob/master/src/watchdog/observers/kqueue.py> (good example program)
-
-  *kqueue is now supported*
-
-* hfsevents ([haskell bindings](http://hackage.haskell.org/package/hfsevents))
-  is OSX specific.
-
-  Originally it was only directory level, and you were only told a
-  directory had changed and not which file. Based on the haskell
-  binding's code, from OSX 10.7.0, file level events were added.
-
-  This will be harder for me to develop for, since I don't have access to
-  OSX machines..
-
-  hfsevents does not seem to provide a way to tell when a file gets closed,
-  only when it's initially created. Poses problems..
-
-  * <https://developer.apple.com/library/mac/#documentation/Darwin/Conceptual/FSEvents_ProgGuide/Introduction/Introduction.html>
-  * <http://pypi.python.org/pypi/MacFSEvents/0.2.8> (good example program)
-  * <https://github.com/gorakhargosh/watchdog/blob/master/src/watchdog/observers/fsevents.py> (good example program)
-
-  *hfsevents is now supported*
-
-* Windows has a Win32 ReadDirectoryChangesW, and perhaps other things.
-
-  It was easy to get watching to work in windows. But there is no lsof,
-  to check if a file can safely be added. So, need to carefully consider
-  how to make adding a file safe in windows.
-
-  Without lsof, an InodeCache is generated in "lockdown" (which doesn't
-  do anything to prevent new writers), and is compared with the stat of the
-  file after it's ingested (and checksummed). This will detect many changes
-  to files, which change the size or mtime.
-
-  So, we have 2 cases to worry about. 
-
-  1. A process has the file open for write as it's added, does not change
-     it until the add is done.
-
-     As long as an event is generated once the file does get closed, this
-     is fine -- the modified version will be re-added. And such events are
-     indeed generated on windows.
-
-  2. A process has the file open for write as it's added, and changes it 
-     in some way that does not affect size or mtime.
-
-     If an event is generated when the file does get closed, this is the
-     same as a scenario where a process opens the file after it's added,
-     makes such a change, and closes it. In either case, a file closed
-     event is generated, and the Watcher will not detect any change
-     using the inode cache, so will not re-add the file.
-
-     So, this scenario is a potential problem, but it seems at least
-     unlikely that a program would modify a file without affecting its
-     mtime. Note that this same scenario can happen even with lsof, and
-     even on linux (although on linux the InodeCache includes an actual
-     inode, which might detect the change too).
-
-  Conclusion: It's probably ok to run without lsof on Windows.
-
-  Corrolary: lsof might not generally be needed in direct mode, on
-  systems that do generate file close events (but not when
-  eventsCoalesce).
-  The same arguments given above seem to apply to !Windows. Note that lsof
-  is needed in indirect mode, as discussed below.
-
-  **windows is now supported**
-
-## the races
-
-Many races need to be dealt with by this code. Here are some of them.
-
-* File is added and then removed before the add event starts.
-
-  Not a problem; The add event does nothing since the file is not present.
-
-* File is added and then removed before the add event has finished
-  processing it.
-  
-  **Minor problem**; When the add's processing of the file (checksum and so
-  on) fails due to it going away, there is an ugly error message, but
-  things are otherwise ok.
-
-* File is added and then replaced with another file before the annex add
-  moves its content into the annex.
-
-  Fixed this problem; Now it hard links the file to a temp directory and
-  operates on the hard link, which is also made unwritable.
-
-* File is added and then replaced with another file before the annex add
-  makes its symlink.
-
-  **Minor problem**; The annex add will fail creating its symlink since
-  the file exists. There is an ugly error message, but the second add
-  event will add the new file.
-
-* File is added and then replaced with another file before the annex add
-  stages the symlink in git.
-
-  Now fixed; `git annex watch` avoids running `git add` because of this
-  race. Instead, it stages symlinks directly into the index, without
-  looking at what's currently on disk.
-
-* Link is moved, fixed link is written by fix event, but then that is
-  removed by the user and replaced with a file before the event finishes.
-
-  Now fixed; same fix as previous race above.
-
-* File is removed and then re-added before the removal event starts.
-
-  Not a problem; The removal event does nothing since the file exists,
-  and the add event replaces it in git with the new one.
-
-* File is removed and then re-added before the removal event finishes.
-
-  Not a problem; The removal event removes the old file from the index, and
-  the add event adds the new one.
-
-* Symlink appears, but is then deleted before it can be processed.
-
-  Leads to an ugly message, otherwise no problem:
-
-	./me: readSymbolicLink: does not exist (No such file or directory)
-
-  Here `me` is a file that was in a conflicted merge, which got
-  removed as part of the resolution. This is probably coming from the watcher
-  thread, which sees the newly added symlink (created by the git merge),
-  but finds it deleted (by the conflict resolver) by the time it processes it.
-
-## done
-
-- on startup, add any files that have appeared since last run **done**
-- on startup, fix the symlinks for any renamed links **done**
-- on startup, stage any files that have been deleted since last run
-  (seems to require a `git commit -a` on startup, or at least a
-  `git add --update`, which will notice deleted files) **done**
-- notice new files, and git annex add **done**
-- notice renamed files, auto-fix the symlink, and stage the new file location
-  **done**
-- handle cases where directories are moved outside the repo, and stop
-  watching them **done**
-- when a whole directory is deleted or moved, stage removal of its
-  contents from the index **done**
-- notice deleted files and stage the deletion
-  (tricky; there's a race with add since it replaces the file with a symlink..)
-  **done**
-- Gracefully handle when the default limit of 8192 inotified directories
-  is exceeded. This can be tuned by root, so help the user fix it.
-  **done**
-- periodically auto-commit staged changes (avoid autocommitting when
-  lots of changes are coming in) **done**
-- coleasce related add/rm events for speed and less disk IO **done**
-- don't annex `.gitignore` and `.gitattributes` files **done**
-- run as a daemon **done**
-- A process has a file open for write, another one closes it,
-  and so it's added. Then the first process modifies it.
-
-  Or, a process has a file open for write when `git annex watch` starts
-  up, it will be added to the annex. If the process later continues
-  writing, it will change content in the annex.
-
-  This changes content in the annex, and fsck will later catch
-  the inconsistency.
-
-  Possible fixes: 
-
-  * Somehow track or detect if a file is open for write by any processes.
-    `lsof` could be used, although it would be a little slow.
-
-    Here's one way to avoid the slowdown: When a file is being added,
-    set it read-only, and hard-link it into a quarantine directory,
-    remembering both filenames.
-    Then use the batch change mode code to detect batch adds and bundle
-    them together.
-    Just before committing, lsof the quarantine directory. Any files in
-    it that are still open for write can just have their write bit turned
-    back on and be deleted from quarantine, to be handled when their writer
-    closes. Files that pass quarantine get added as usual. This avoids
-    repeated lsof calls slowing down adds, but does add a constant factor
-    overhead (0.25 seconds lsof call) before any add gets committed. **done**
-
-  * Or, when possible, making a copy on write copy before adding the file
-    would avoid this.
-  * Or, as a last resort, make an expensive copy of the file and add that.
-  * Tracking file opens and closes with inotify could tell if any other
-    processes have the file open. But there are problems.. It doesn't
-    seem to differentiate between files opened for read and for write.
-    And there would still be a race after the last close and before it's
-    injected into the annex, where it could be opened for write again.
-    Would need to detect that and undo the annex injection or something.
-
-- If a file is checked into git as a normal file and gets modified
-  (or merged, etc), it will be converted into an annexed file.
-  See [[blog/day_7__bugfixes]]. **done**; we always check ls-files now
-- When you `git annex unlock` a file, it will immediately be re-locked.
-  See [[bugs/watcher_commits_unlocked_files]]. Seems fixed now?
diff --git a/doc/design/assistant/leftovers.mdwn b/doc/design/assistant/leftovers.mdwn
deleted file mode 100644
--- a/doc/design/assistant/leftovers.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Things that don't fit anywhere else:
-
-* Automatically start daemon on boot or when user logs in, using
-  freedesktop autostart file. **done**
-* Somehow get content that is unavailable. This is problematic with inotify,
-  since we only get an event once the user has tried (and failed) to read
-  from the file. This is only needed if all the files in the directory 
-  are not kept synced, but in some situations (ie, low disk space phones),
-  that is likely.
-* Drop files that have not been used lately, or meet some other criteria
-  (as long as there's a copy elsewhere). **done** (via preferred content;
-  eg archive directories)
-* Perhaps automatically dropunused files that have been deleted,
-  although I cannot see a way to do that, since by the time the inotify
-  deletion event arrives, the file is deleted, and we cannot see what
-  its symlink pointed to! Alternatively, perhaps automatically
-  do an expensive unused/dropunused cleanup process.
diff --git a/doc/design/assistant/more_cloud_providers.mdwn b/doc/design/assistant/more_cloud_providers.mdwn
deleted file mode 100644
--- a/doc/design/assistant/more_cloud_providers.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Git-annex already supports storing large files in 
-several cloud providers via [[special_remotes]].
-More should be added, such as:
-
-* Google drive (attractive because it's free, only 5 gb tho)
-* Owncloud (has several [providers](http://owncloud.org/providers/);
-  at least one provides 5 gb free; open DAV based API)
-* OpenStack Swift (teh future)
-* Box.com (it's free, and current method is hard to set up and a sorta
-  shakey; a better method would be to use its API) **done**
-* Dropbox? That would be ironic.. Via its API, presumably.
-* [[Amazon Glacier|todo/special_remote_for_amazon_glacier]] **done**
-* Internet Archive **done**
-* [nimbus.io](https://nimbus.io/) Fairly low prices ($0.06/GB);
-  REST API; free software
-* Mediafire provides 50gb free and has a REST API.
-* Flickr provides 1 tb (!!!!) to free accounts, and can store at least
-  photos and videos. <https://github.com/ricardobeat/filr> is a hack
-  to allow storing any type of file on Flickr.
-* mega.co.nz. Already supported via [[tips/megaannex]], would just need
-  webapp modifications to configure it. May want to use megaannex as-is to
-  build a non-hook special remote in haskell.
-
-See poll at [[polls/prioritizing_special_remotes]].
diff --git a/doc/design/assistant/pairing.mdwn b/doc/design/assistant/pairing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/pairing.mdwn
+++ /dev/null
@@ -1,83 +0,0 @@
-For git-annex to be able to clone its repo to another host, it'd be good to
-have some way of pairing devices.
-
-## security
-
-Pairing uses its own network protocol, built on top of multicast UDP.
-
-It's important that pairing securely verifies that the right host is being
-paired with. This is accomplied by having a shared secret be entered on
-both the hosts that will be paired. Hopefully that secret is communicated
-securely out of band. 
-
-(In practice, the security of that communication will vary. To guard against
-interception, each pairing session pairs exactly two hosts and then forgets
-the shared secret. So an attacker who tries to reuse an intercepted secret
-will not succeed in pairing. This does not guard against an intercepted
-secret that is used before the legitimate parties finish pairing.)
-
-Each host can construct messages that the other host can verify using the
-shared secret, and so know that, for example, the ssh public key it
-received belongs to the right host and has not been altered by a man in the
-middle.
-
-The verification works like this: Take a HMAC SHA1 checksum of the message,
-using the shared secret as the HMAC key. Include this checksum after the
-message. The other host can then do the same calculation and verify the
-checksum.
-
-Additionally, a UUID is included in the message. Messages that are part of
-the same pairing session all share a UUID. And all such messages should
-be verifiable as described above. If a message has the same UUID but is
-not verifiable, then someone on the network is up to no good. Perhaps
-they are trying to brute-force the shared secret. When this is detected,
-the pairing session is shut down. (Which would still let an attacker
-DOS pairing, but that's not a very interesting attack.)
-
-The protocol used for pairing consists of 3 messages, a PairReq, and
-PairAck, and a PairDone. Let's consider what an attacker could accomplish
-by replaying these:
-
-* PairReq: This would make the webapp pop up an alert about an incoming
-  pair request. If the user thought it was real and for some reason
-  entered the right shared secret used in the real one earlier, the
-  ssh key inside the PairReq would be added to `authorized_keys`. Which
-  allows the host that originally sent the PairReq to access its git
-  repository, but doesn't seem to do the attacker any good.
-* PairAck:  If the host that originally sent
-  the PairReq is still pairing, it'll add the ssh key from the PairAck,
-  and start syncing, which again does the attacker no good.
-* PairDone: If the host that sent the PairAck is still syncing, it'll
-  add the ssh key from the PairDone, and start syncing, and stop
-  sending PairAcks. But probably, it's not syncing, because it would have
-  seen the original PairDone.. and anyway, this seems to do the attacker no
-  good.
-
-So replay attacks don't seem to be a problem.
-
-So far I've considered security from a third-party attacker, but either the
-first or second parties in pairing could also be attackers. Presumably they
-trust each other with access to their files as mediated by
-[[git-annex-shell]]. However, one could try to get shell access to the
-other's computer by sending malicious data in a pairing message. So the
-pairing code always checks every data field's content, for example the ssh
-public key is rejected if it looks at all unusual. Any control characters
-in the pairing message cause it to be rejected, to guard against console
-poisoning attacks. Furthermore, git-annex is careful not to expose data to
-the shell, and the webapp uses Yesod's type safety to ensure all user input
-is escaped before going to the browser.
-
-## TODO
-
-* pairing over IPV6 only networks does not work. Haskell's
-  `network-multicast` library complains "inet_addr: Malformed address: ff02::1"
-  .. seems it just doesn't support IPv6. The pairing code in git-annex
-  does support ipv6, apart from this, it's just broadcasting the messages
-  that fails. (Pairing over mixed networks is fine.)
-* If there are three assistants on the network, and 2 pair, the third is
-  left displaying a "Pair request from foo" alert, until it's close. 
-  Or, if the user clicks the button to pair, it'll get to the 
-  "Pairing in progress" alert, which will show forever (until canceled).
-
-  It should be possible for third parties to tell when pairing is done,
-  but it's actually rather hard since they don't necessarily share the secret.
diff --git a/doc/design/assistant/partial_content.mdwn b/doc/design/assistant/partial_content.mdwn
deleted file mode 100644
--- a/doc/design/assistant/partial_content.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-On a regular system, a reasonable simplifying assumption is that all the
-files in the folder will be synced to the system. A user might want to
-disable syncing of some subdirectories, for eg, archived files. But in
-general, things are simpler to understand and implement if all files sync.
-
-But, an Android gadget probably cannot hold all a user's files. Indeed,
-it's likely that old files will be aggressively dropped from the Android
-after syncing to elsewhere, in order to keep enough free space on it for
-new files. 
-
-There needs to be a way for the user to browse files not on the gadget and
-request they be transferred to it. This could be done as a browser in the
-web app, or using a subdirectory full of placeholder files (not symlinks;
-see [[Android]]) that start transfer of the real file when accessed.
-
-----
-
-Currently, Android uses the "source" repository type in some
-configurations. This makes files be removed as soon as they are sent
-somewhere else.
-
-A compromise that avoids needing UI might be to change "source" so it
-retained files for a while after they were created, even after they were
-uploaded elsewhere. For example, it could hold onto them for a day. This
-would allow the user time to do things with new files before they are
-removed from the android device.
-
-One way to implement that would be a new preferred content expression like
-"age(1 day)". But this would need at least a daily full transfer scan to be
-run. 
-
-Another way would be to have a way to make drops of files be deferred
-for a period of time. This approach would not need to be specific to the
-"source" repository type. And seems easy enough to do, just have a
-configuration setting for the time interval, and an ordered drop queue
-and a thread that waits as needed before dropping.
diff --git a/doc/design/assistant/polls.mdwn b/doc/design/assistant/polls.mdwn
deleted file mode 100644
--- a/doc/design/assistant/polls.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-[[!inline pages="(page(design/assistant/blog/*) and tagged(design/assistant/polls)) or page(design/assistant/polls/*)" show=0]]
diff --git a/doc/design/assistant/polls/2013_user_survey.mdwn b/doc/design/assistant/polls/2013_user_survey.mdwn
deleted file mode 100644
--- a/doc/design/assistant/polls/2013_user_survey.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-The 2013 git-annex user survey is in progress [[here|/polls/2013]].
diff --git a/doc/design/assistant/polls/Android.mdwn b/doc/design/assistant/polls/Android.mdwn
deleted file mode 100644
--- a/doc/design/assistant/polls/Android.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Help me choose a goal for the month of December. The last poll showed 
-a lot of interest in using the git-annex assistant with phones, etc.
-
-Background: git-annex uses symbolic links in its repositories. This makes it
-hard to use with filesystems, such as FAT, that do not support symbolic links.
-FAT filesystems are the main storage available on some Android devices that
-have a micro-SD card. Other, newer Android devices don't have a SD card and so
-avoid this problem.
-
-I can either work on the idea described in
-[[design/assistant/desymlink]], which could solve the symlink problem and
-also could lead to a nicer workflow to editing files that are stored in
-git-annex.
-
-Or, I can work on [[Android_porting|design/assistant/android]], and try to
-get the assistant working on Android's built-in storage.
-
-[[!poll open=no 81 "solve the symlink problem first" 17 "port to Android first" 1 "other"]]
diff --git a/doc/design/assistant/polls/Android_default_directory.mdwn b/doc/design/assistant/polls/Android_default_directory.mdwn
deleted file mode 100644
--- a/doc/design/assistant/polls/Android_default_directory.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-What directory should the Android webapp default to creating an annex in?
-
-Same as the desktop webapp, users will be able to enter a directory they
-want the first time they run it, but to save typing on android, anything
-that gets enough votes will be included in a list of choices as well.
-
-[[!poll open=yes expandable=yes 73 "/sdcard/annex" 6 "Whole /sdcard" 8 "DCIM directory (photos and videos only)" 3 "Same as for regular git-annex. ~/annex/"]]
diff --git a/doc/design/assistant/polls/goals_for_April.mdwn b/doc/design/assistant/polls/goals_for_April.mdwn
deleted file mode 100644
--- a/doc/design/assistant/polls/goals_for_April.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-What should I work on in April? I expect I could get perhaps two of these
-features done in a month if I'm lucky. I have only 3 more funded months,
-and parts of one will be spent working on porting to Windows, so choose wisely!
---[[Joey]]
-
-[[!poll open=yes expandable=yes 4 "upload and download rate limiting" 15 "get webapp working on Android" 5 "deltas: speed up syncing modified versions of existing files" 8 "encrypted git remotes using git-remote-gcrypt" 0 "add support for more cloud storage remotes" 19 "don't work on features, work on making it easier to install and use" 2 "Handle duplicate files" 6 "direct mode (aka real files instead of symlinks) [already done --joey]" 3 "start windows port now"]]
-
-References:
-
-* [[rate_limiting]]
-* [[Android]]
-* [[deltas]] to speed up syncing modified files (at least for remotes using rsync)
-* [[encrypted_git_remotes]]
-* [[more_cloud_providers]] (OpenStack Swift, Owncloud, Google drive,
-  Dropbox, Mediafire, nimbus.io, Mega, etc.)
-* [[old poll on "what is preventing me from using git-annex assistant"|what_is_preventing_me_from_using_git-annex_assistant]]
-  (many of the items on it should be fixed now, but I have plenty of bug reports to chew on still)
diff --git a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn b/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
deleted file mode 100644
--- a/doc/design/assistant/polls/prioritizing_special_remotes.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Background: git-annex supports storing data in various [[special remotes]].
-The git-annex assistant will make it easy to configure these, and easy
-configurators have already been built for a few: removable drives, rsync.net,
-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)" 13 "Amazon Glacier (done)" 10 "Box.com (done)" 77 "My phone (or MP3 player)" 29 "Tahoe-LAFS" 16 "OpenStack SWIFT" 37 "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
-only need an easy configurator. The ones at the bottom are likely to need
-significant work. See [[cloud]] for detailed discussion.
-
-Have another idea? Absolutely need two or more? Post comments..
diff --git a/doc/design/assistant/progressbars.mdwn b/doc/design/assistant/progressbars.mdwn
deleted file mode 100644
--- a/doc/design/assistant/progressbars.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-Currently, git-annex takes a very lazy approch to displaying
-progress into. It just lets rsync or whatever display the progress
-for it, in the terminal.
-
-Something better is needed for the [[webapp]]. There needs to be a
-way for the web app to know what the current progress is of all transfers.
-
-This is one of those potentially hidden but time consuming problems.
-
-## downloads
-
-* Watch temp file as it's coming in and use its size.
-  Can either poll every .5 seconds or so to check file size, or
-  could use inotify. **done**
-* When easily available, remotes call the MeterUpdate callback as downloads
-  progress. **done**
-* S3: TODO  
-  While it has a download progress bar, `getObject` probably buffers the whole
-  download in memory before returning. Leaving the progress bar to only
-  display progress for writing the file out of memory. Fixing this would
-  involve making hS3 stream better (also avoids it wasting memory).
-
-## uploads
-
-Each individual remote type needs to implement its own support for calling
-the MeterUpdate callback as the upload progresses.
-
-* git: **done**
-* rsync: **done**
-* directory: **done**
-* web: Not applicable; does not upload 
-* webdav: **done**
-* S3: **done**
-* glacier: **done**
-* bup: **done**
-* hook: Would require the hook interface to somehow do this, which seems
-  too complicated. So skipping.
-
-## communication
-
-It may be worth using a better communication channel than files on disk for
-the transfer progress. Shared memory could be used, or http posts to the
-webapp.
diff --git a/doc/design/assistant/rate_limiting.mdwn b/doc/design/assistant/rate_limiting.mdwn
deleted file mode 100644
--- a/doc/design/assistant/rate_limiting.mdwn
+++ /dev/null
@@ -1,57 +0,0 @@
-Webapp needs a simple speed control knob, especially to avoid saturating 
-bandwidth on uploads.
-
-We have basic throttling support in git-annex for rsync,
-but none for any special remotes. A good first step would be to expose
-this in the webapp, and ensure that `git-annex-shell` also honors it when
-sending/receiving data.
-
-We actually need two speed controls, one for upload and one for download.
-
-It is probably not necessary to throttle git push/pull operations, as the
-data transfers tend to be small. Only throttling file transfers is
-essential.
-
-## possibility: trickle
-
-Since `git-annex transferkeys` is a separate process, one easy option would
-be to run it inside `trickle`. If the user changes the bandwidth limits,
-it could kill the transfer and restart it with different trickle options.
-
-Problem: Not all special remotes support resuming transfers, so this is
-suboptimal. (So too are the pause/resume buttons, when using those
-remotes!)
-
-`trickle` is available for OSX as well as Linux and BSDs.
-<http://hints.macworld.com/comment.php?mode=view&cid=65362>
-<http://mac.softpedia.com/get/Network-Admin/Trickle.shtml>
-It is probably not easily available for Android, as it uses `LD_PRELOAD`.
-
-## possibility: built in IO limiting
-
-A cleaner method would be to do the limiting inside git-annex. We already
-have metered file IO. It should be possible to make the meter not only report
-on the transfer speed, but detect when it's going too fast, and delay. This
-will delay the file streaming through the special remote's transfer code,
-so should work for a variety of special remotes. (Not for rsync or bup
-or git-annex-shell though, so those need to be handled separately.)
-
-Should work well for uploads at least. I don't know how well it would work
-for throttling downloads; the sender may just keep sending data and the
-data buffer before it gets to the IO meter. Maybe once the buffers fill the
-OS would have the TCP throttled down. Needs investigation; trickle claims
-to throttle downloads.
-
-## communications channels
-
-There would need to be a communication channel for the assistant to tell
-`git annex transferkeys` when the rate limit has changed. It could for
-example send it a SIGUSR1, and then leave it up to the process to reload
-the git config. Inside the IO meter, we could have an MVar that contains
-the current throttle value, so the IO meter could check it each time it's
-called and adjust its throttling appropriately.
-
-Ideally, the assistant could also communicate in the same way with
-`git-annex-shell` to tell it when the limit has changed. Since
-`git-annex-shell` uses rsync, it would need to abort the transfer, and rely
-on the other side retrying to start it up with the new limit.
diff --git a/doc/design/assistant/screenshot/firstrun.png b/doc/design/assistant/screenshot/firstrun.png
deleted file mode 100644
Binary files a/doc/design/assistant/screenshot/firstrun.png and /dev/null differ
diff --git a/doc/design/assistant/screenshot/intro.png b/doc/design/assistant/screenshot/intro.png
deleted file mode 100644
Binary files a/doc/design/assistant/screenshot/intro.png and /dev/null differ
diff --git a/doc/design/assistant/sshpassword.mdwn b/doc/design/assistant/sshpassword.mdwn
deleted file mode 100644
--- a/doc/design/assistant/sshpassword.mdwn
+++ /dev/null
@@ -1,65 +0,0 @@
-Currently the assistant sets up dedicated ssh keys, that can just use
-git-annex. This is ok. The problem is that the initial 2 connections to the
-ssh server when setting up these keys involve a password prompt, which is
-done at the console unless the system happens to have a working ssh agent
-that can pop up a dialog. That can be confusing.
-
-It would be nice to have the webapp prompt for the password. Can it be done
-securely?
-
-This might come down to a simple change to the webapp to prompt for the
-password, and then rather a lot of pain to make the webapp use HTTPS so we
-can be pretty sure noone is sniffing the (localhost) connection.
-
-## ssh-askpass approach
-
-* If ssh-askpass is in PATH, or `SSH_ASKPASS` is set, do nothing.
-  (Unless webapp is run remotely.)  
-  XXX not currently done; the UI would need to omit the password entry
-  fields in this case.
-* Otherwise, have the assistant set `SSH_ASKPASS` to a command that will
-  cause the webapp to read the password and forward it on. Also, set
-  DISPLAY to ensure that ssh runs the program. **done**
-
-Looking at ssh.exe, I think this will even work on Windows; it contains the
-code to run ssh-askpass. (It does work on Windows!)
-
-### securely handling the password
-
-* Maybe force upgrade webapp to https? Locally, the risk would be that
-  root could tcpdump and read password, so not large risk. If webapp
-  is being accessed remotely, absolutely: require https.
-* Use hs-securemem to store password.
-* Avoid storing password for long. Erase it after webapp setup of remote
-  is complete. Time out after 10 minutes and erase it. **done**
-* If the user is slow, the cached ssh key can exire before they finish.
-  This results in ssh being given no password, and failing. The UI
-  now detects this and suggests the user retry. **done**
-* Prompt using a html field name that does not trigger web browser password
-  saving if possible.
-
-### ssh-askpass shim, and password forwarding
-
-`SSH_ASKPASS` needs to be set to a program (probably git-annex)
-which gets the password from the webapp, and outputs it to stdout. **done**
-
-Seems to call for the webapp and program to communicate over a local
-socket (locked down so only user can access) or environment.
-Environment is not as secure (easily snooped by root).
-Local socket probably won't work on Windows. Could just use a temp file.
-
-(Currently uses a temp file with locked down perms that it's careful
-to clean up after use.)
-
-Note that the webapp can probe to see if ssh needs a password, and can
-prompt the user for it before running ssh and the ssh-askpass shim.
-This avoids some complexity, and perhaps some attack vectors,
-if the shim cannot requst an arbitrary password prompt.
-(This complexity not needed with the temp file approach..)
-
-### TODO
-
-* test on OSX
-* test on Android
-* remove the vestigial terminal on Windows and Android, since this was the
-  last thing actually using it (not easy!)
diff --git a/doc/design/assistant/syncing.mdwn b/doc/design/assistant/syncing.mdwn
deleted file mode 100644
--- a/doc/design/assistant/syncing.mdwn
+++ /dev/null
@@ -1,220 +0,0 @@
-Once files are added (or removed or moved), need to send those changes to
-all the other git clones, at both the git level and the key/value level.
-
-## misc TODO
-
-* Test MountWatcher on LXDE.
-* Add a hook, so when there's a change to sync, a program can be run
-   and do its own signaling.
-* --debug will show often unnecessary work being done. Optimise.
-* Configurablity, including only enabling git syncing but not data transfer;
-  only uploading new files but not downloading, and only downloading
-  files in some directories and not others. See for use cases:
-  [[forum/Wishlist:_options_for_syncing_meta-data_and_data]]
-* speed up git syncing by using the cached ssh connection for it too
-  Will need to use `GIT_SSH`, which needs to point to a command to run,
-  not a shell command line. Beware that the network connection may have
-  bounced and the cached ssh connection not be usable.
-* Map the network of git repos, and use that map to calculate
-  optimal transfers to keep the data in sync. Currently a naive flood fill
-  is done instead. Maybe use XMPP as a side channel to learn about the
-  network topology?
-* Find a more efficient way for the TransferScanner to find the transfers
-  that need to be done to sync with a remote. Currently it walks the git
-  working copy and checks each file. That probably needs to be done once,
-  but further calls to the TransferScanner could eg, look at the delta
-  between the last scan and the current one in the git-annex branch.
-* [[use multiple transfer slots|todo/Slow_transfer_for_a_lot_of_small_files.]]
-* The TransferQueue's list of deferred downloads could theoretically
-  grow without bounds in memory. Limit it to a given number of entries,
-  and fall back to some other method -- either storing deferred downloads
-  on disk, or perhaps scheduling a TransferScanner run to get back into sync.
-
-## More efficient syncing
-
-See [[syncing/efficiency]]
-
-## TransferScanner efficiency
-
-The TransferScanner thread needs to find keys that need to be Uploaded
-to a remote, or Downloaded from it.
-
-How to find the keys to transfer? I'd like to avoid potentially
-expensive traversals of the whole git working copy if I can.
-(Currently, the TransferScanner does do the naive and possibly expensive
-scan of the git working copy.)
-
-One way would be to do a git diff between the (unmerged) git-annex branches
-of the git repo, and its remote. Parse that for lines that add a key to
-either, and queue transfers. That should work fairly efficiently when the
-remote is a git repository. Indeed, git-annex already does such a diff
-when it's doing a union merge of data into the git-annex branch. It
-might even be possible to have the union merge and scan use the same
-git diff data.
-
-But that approach has several problems:
-
-1. The list of keys it would generate wouldn't have associated git
-   filenames, so the UI couldn't show the user what files were being
-   transferred.
-2. Worse, without filenames, any later features to exclude
-   files/directories from being transferred wouldn't work.
-3. Looking at a git diff of the git-annex branches would find keys
-   that were added to either side while the two repos were disconnected.
-   But if the two repos' keys were not fully in sync before they
-   disconnected (which is quite possible; transfers could be incomplete),
-   the diff would not show those older out of sync keys.
-
-The remote could also be a special remote. In this case, I have to either
-traverse the git working copy, or perhaps traverse the whole git-annex
-branch (which would have the same problems with filesnames not being
-available).
-
-If a traversal is done, should check all remotes, not just
-one. Probably worth handling the case where a remote is connected
-while in the middle of such a scan, so part of the scan needs to be
-redone to check it.
-
-## done
-
-1. Can use `git annex sync`, which already handles bidirectional syncing.
-   When a change is committed, launch the part of `git annex sync` that pushes
-   out changes. **done**; changes are pushed out to all remotes in parallel
-1. Watch `.git/refs/remotes/` for changes (which would be pushed in from
-   another node via `git annex sync`), and run the part of `git annex sync`
-   that merges in received changes, and follow it by the part that pushes out
-   changes (sending them to any other remotes).
-   [The watching can be done with the existing inotify code! This avoids needing
-   any special mechanism to notify a remote that it's been synced to.]  
-   **done**
-1. Periodically retry pushes that failed.  **done** (every half an hour)
-1. Also, detect if a push failed due to not being up-to-date, pull,
-   and repush. **done**
-2. Use a git merge driver that adds both conflicting files,
-   so conflicts never break a sync. **done**
-
-* on-disk transfers in progress information files (read/write/enumerate)
-  **done**
-* locking for the files, so redundant transfer races can be detected,
-  and failed transfers noticed **done**
-* transfer info for git-annex-shell **done**
-* update files as transfers proceed. See [[progressbars]]
-  (updating for downloads is easy; for uploads is hard)
-* add Transfer queue TChan **done**
-* add TransferInfo Map to DaemonStatus for tracking transfers in progress.
-  **done**
-* Poll transfer in progress info files for changes (use inotify again!
-  wow! hammer, meet nail..), and update the TransferInfo Map **done**
-* enqueue Transfers (Uploads) as new files are added to the annex by
-  Watcher. **done**
-* enqueue Tranferrs (Downloads) as new dangling symlinks are noticed by
-  Watcher. **done**
-  (Note: Needs git-annex branch to be merged before the tree is merged,
-  so it knows where to download from. Checked and this is the case.)
-* Write basic Transfer handling thread. Multiple such threads need to be
-  able to be run at once. Each will need its own independant copy of the 
-  Annex state monad. **done**
-* Write transfer control thread, which decides when to launch transfers.
-  **done**
-* Transfer watching has a race on kqueue systems, which makes finished
-  fast transfers not be noticed by the TransferWatcher. Which in turn
-  prevents the transfer slot being freed and any further transfers
-  from happening. So, this approach is too fragile to rely on for
-  maintaining the TransferSlots. Instead, need [[todo/assistant_threaded_runtime]],
-  which would allow running something for sure when a transfer thread
-  finishes. **done**
-* Test MountWatcher on KDE, and add whatever dbus events KDE emits when
-  drives are mounted. **done**
-* It would be nice if, when a USB drive is connected, 
-  syncing starts automatically. Use dbus on Linux? **done**
-* Optimisations in 5c3e14649ee7c404f86a1b82b648d896762cbbc2 temporarily
-  broke content syncing in some situations, which need to be added back.
-  **done**
-
-  Now syncing a disconnected remote only starts a transfer scan if the
-  remote's git-annex branch has diverged, which indicates it probably has
-  new files. But that leaves open the cases where the local repo has
-  new files; and where the two repos git branches are in sync, but the
-  content transfers are lagging behind; and where the transfer scan has
-  never been run.
-
-  Need to track locally whether we're believed to be in sync with a remote.
-  This includes:
-  * All local content has been transferred to it successfully.
-  * The remote has been scanned once for data to transfer from it, and all
-    transfers initiated by that scan succeeded.
-
-  Note the complication that, if it's initiated a transfer, our queued
-  transfer will be thrown out as unnecessary. But if its transfer then
-  fails, that needs to be noticed.
-
-  If we're going to track failed transfers, we could just set a flag,
-  and use that flag later to initiate a new transfer scan. We need a flag
-  in any case, to ensure that a transfer scan is run for each new remote.
-  The flag could be `.git/annex/transfer/scanned/uuid`.
-
-  But, if failed transfers are tracked, we could also record them, in 
-  order to retry them later, without the scan. I'm thinking about a
-  directory like `.git/annex/transfer/failed/{upload,download}/uuid/`,
-  which failed transfer log files could be moved to.
-* A remote may lose content it had before, so when requeuing
-  a failed download, check the location log to see if the remote still has
-  the content, and if not, queue a download from elsewhere. (And, a remote
-  may get content we were uploading from elsewhere, so check the location
-  log when queuing a failed Upload too.) **done**
-* Fix MountWatcher to notice umounts and remounts of drives. **done**
-* Run transfer scan on startup. **done**
-* Often several remotes will be queued for full TransferScanner scans,
-  and the scan does the same thing for each .. so it would be better to
-  combine them into one scan in such a case. **done**
-* The syncing code currently doesn't run for special remotes. While
-  transfering the git info about special remotes could be a complication,
-  if we assume that's synced between existing git remotes, it should be
-  possible for them to do file transfers to/from special remotes.
-  **done**
-
-* The transfer code doesn't always manage to transfer file contents.
-
-  Besides reconnection events, there are two places where transfers get queued:
-
-  1. When the committer commits a file, it queues uploads.
-  2. When the watcher sees a broken symlink be created, it queues downloads.
-
-  Consider a doubly-linked chain of three repositories, A B and C.
-  (C and A do not directly communicate.)
-  
-  * File is added to A.
-  * A uploads its content to B.
-  * At the same time, A git syncs to B.
-  * Once B gets the git sync, it git syncs to C.
-  * When C's watcher sees the file appear, it tries to download it. But if
-    B had not finished receiving the file from A, C doesn't know B has it,
-    and cannot download it from anywhere.
-
-  Possible solution: After B receives content, it could queue uploads of it 
-  to all remotes that it doesn't know have it yet, which would include C. 
-  **done**
-  
-  In practice, this had the problem that when C receives the content,
-  it will queue uploads of it, which can send back to B (or to some other repo
-  that already has the content) and loop, until the git-annex branches catch
-  up and break the cycle.
-
-  To avoid that problem, incoming uploads should not result in a transfer
-  info file being written when the key is already present. **done**
-
-  Possible solution: C could record a deferred download. (Similar to a failed
-  download, but with an unknown source.) When C next receives a git-annex
-  branch push, it could try to queue deferred downloads. **done**
-
-  Note that this solution won't cover use cases the other does. For example,
-  connect a USB drive A; B syncs files from it, and then should pass them to C.
-  If the files are not new, C won't immediatly request them from B.
-
-* Running the assistant in a fresh clone of a repository, it sometimes
-  skips downloading a file, while successfully downloading all the rest.
-  There does not seem to be an error message. This will sometimes reproduce
-  (in a fresh clone each time) several times in a row, but then stops happening,
-  which has prevented me from debugging it.
-  This could possibly have been caused by the bug fixed in 750c4ac6c282d14d19f79e0711f858367da145e4.
-  Provisionally closed.
diff --git a/doc/design/assistant/syncing/efficiency.mdwn b/doc/design/assistant/syncing/efficiency.mdwn
deleted file mode 100644
--- a/doc/design/assistant/syncing/efficiency.mdwn
+++ /dev/null
@@ -1,77 +0,0 @@
-Currently, the git-annex assistant syncs with remotes in a way that is
-dumb, and potentially inneficient:
-
-1. Files are transferred to each reachable remote whose
-   [[preferred_content]] setting indicates it wants the file.
-
-2. After each file transfer (upload or download), a git sync
-   is done to all the remotes, to update location log information.
-
-## unncessary transfers
-
-There are network toplogies where #1 is massively inneficient.
-For example:
-
-<pre>
-  laptopA-----laptopB-----laptopC
-      \         |             /
-       \---cloud based repo--/
-</pre>
-
-When laptopA has a new file, it will first send it to laptopB. It will then
-check if the cloud based transfer repository wants a copy. It will, because
-laptopC has not yet gotten a copy. So laptopA will proceed with a slow
-upload to the cloud, while meanwhile laptopB is sending the file over fast
-LAN to laptopC.
-
-(The more common case with no laptopC happens to work efficiently.
-So does the case where laptopA is paired with laptopC.)
-
-## unncessary syncing
-
-Less importantly, the constant git syncing after each transfer is rather a
-lot of work, and prevents collecting multiple presence changes to the git-annex 
-branch into larger commits, which would save disk space over time.
-
-In many cases, this sync is necessary. For example, when a file is uploaded
-to a transfer remote, the location change needs to be synced out so that
-other clients know to grab it.
-
-Or, when downloading a file from a drive, the sync lets other locally
-paired repositories know we got it, so they can download it from us. 
-OTOH, this is also a case where a sync is sometimes unnecessary, since
-if we're going to upload the file to them after getting it, the sync
-only perhaps lets them start downloading it before our transfer queue
-reaches a point where we'd upload it.
-
-It would be good to find a way to detect when syncing is not immediately
-necessary, and defer it.
-
-## mapping
-
-Mapping the repository network has the potential to get git-annex the
-information it needs to avoid unnecessary transfers and/or unncessary
-syncing.
-
-Mapping the network can reuse code in `git annex map`. Once the map is
-built, we want to find paths through the network that reach all nodes
-eventually, with the least cost. This is a minimum spanning tree problem,
-except with a directed graph, so really a Arborescence problem.
-
-A significant problem in mapping is that nodes are mobile, they can move
-between networks over time. This breaks LAN based paths through the
-network. Mapping would need a way to detect this. Note that individual
-git-annex assistants can tell when they've switched networks by using the
-`networkConnectedNotifier`.
-
-## P2P signaling
-
-Another approach that might help with these problems is if git-annex
-repositories have a non-git out of band signaling mechanism. This could,
-for example, be used by laptopB to tell laptopA that it's trying to send 
-a file directly to laptopC. laptopA could then defer the upload to the
-cloud for a while.
-
-## syncing only requested content
-
-See [[adhoc_routing]]
diff --git a/doc/design/assistant/telehash.mdwn b/doc/design/assistant/telehash.mdwn
deleted file mode 100644
--- a/doc/design/assistant/telehash.mdwn
+++ /dev/null
@@ -1,133 +0,0 @@
-[Telehash](http://telehash.org/) for secure P2P communication between
-git-annex (assistant) repositories.
-
-Or something similar like [Snow](http://www.trustiosity.com/snow/)
-or [cjdns](https://github.com/cjdelisle/cjdns) or tor or i2p.
-
-## telehash implementation status
-
-* node.js version seems almost complete
-* C version currently lacks channel support and seems buggy (13 Jan 2014)
-* No pure haskell implementation of telehash v2. There was one of
-  telehash v1 (even that seems incomplete). I have pinged its author
-  to see if he anticipates updating it.
-* Rapid development, situation may change in a month or 2. (2014)  
-  Not seeing many commits now (2015)
-* Is it secure? A security review should be done by competant people
-  (not Joey). See <https://github.com/telehash/telehash.org/issues/23>
-* **Haskell version** 
-  <https://github.com/alanz/htelehash/tree/v2/src/TeleHash>
-  May support v2; v3 support seems not started yet, and not in active
-  development at the moment, although there has been work on it a year ago.
-* Not very convinced this is going to be usable anytime soon, so would like
-  to find something that is. (2015)
-
-## snow status
-
-* Seems ready to use?
-* NAT punching works per docs; relies on a DHT network for hole punching,
-  and the reliabilty of that network is not known. I notice it has only 1
-  pre-seeded peer in the source tree for the DHT, and that peer was not up
-  when I tried it.
-
-## cjdns status
-
-* Has a network with "hundreds of active nodes"
-* Is not pure P2P; there's a network that does routing
-  of packets. This may be a good thing, or not.
-* Seems to require manual configuration of a "friend"
-  node that's already on the network, with address and password to connect
-  to it, so if you can't find someone you know to connect to their node,
-  you can't use it. Urk.
-
-## tor status
-
-* Awesome.
-* Easy to install, use; very well known.
-* There's been some [haskell packages developed recently](http://www.leonmergen.com/haskell/privacy/2015/05/30/on-anonymous-networking-in-haskell-announcing-tor-and-i2p-for-haskell.html) 
-  to communicate with tor and set up onion addresses for a service.
-  Could be used to make git-annex run as a hidden service.
-
-## i2p status
-
-## implementation basics
-
-* Add a telehash.log that maps between uuid and telehash address.
-  Or let's generalize it a bit; since things like snow work close enough
-  to the same. Make it address.log and map between uuid and (networktype, address)
-* On startup, assistant creates a new telehash keypair if not already
-  present; stores this locally and generates a telehash address from it,
-  stored in address.log.
-  (Or, if using snow, uses dns to look up the encryption public key address
-  of the local snow server, and stores that in address.log.)
-* Use telehash for notifications of changes to the repository
-* Do git push over telehash. (Pretty easy, may need rate limiting in
-  situations involving relays.)
-* Remove git push over XMPP (which has several problems including
-  XMPP being an unreliable transport, requiring a separate XMPP account per
-  repo, and XMPP not being end-to-end encrypted)
-
-## address discovery
-
-The address is a public key, so won't want to type that in. Need discovery.
-
-* Easy way is any set of repos that are already connected can communicate
-  them via address.log.
-* Local pairing can be used for address discovery. Could be made
-  to work without ssh (with content transfer over telehash discussed
-  below).
-* XMPP pairing can also be used for address discovery. (Note that
-  MITM attacks are possible.) Is it worth keeping XMPP in git-annex just
-  for this?
-* Addresses of repositories can be communicated out of band (eg,
-  via an OTR session or gpg signed mail), and pasted into the webapp to
-  initiate a repository pairing that then proceeds entirely over telehash.
-  Once both sides do this, the pairing can proceed automatically.
-
-## content transfer over telehash
-
-* In some circumstances, it would be ok to do annexed content transfer
-  over telehash. 
-  Need to check if there are MTU problems with large data bodies in
-  telehash messages.  
-  Probably not when a bridge is being used, due to required rate
-  limiting in bridging over telehash. Cloud transfer remotes still needed for
-  those situations.  
-  (And it should be fine to do it over snow, maybe more so.)  
-* On a LAN, telehash can be used to determine the current local IP address
-  of another computer on the LAN. The 2 could then determine if either uses
-  ssh and if so use regular git-annex-shell for transfers. Or could do
-  annexed content transfer directly over telehash.  
-  (Snow does not provide this feature AFAIK.)
-
-## generic git-remote-telehash
-
-This might turn out to be easy to split off from git-annex, so `git pull`
-and `git push` can be used at the command line to access telehash remotes.
-Allows using general git entirely decentralized and with end-to-end
-encryption.
-
-## separate daemon?
-
-See [[git-remote-daemon]] for its design.
-
-Advantages:
-
-* `git annex sync` could also use the running daemon
-* `git-remote-telehash` could use the running daemon
-* c-telehash might end up linked to openssl, which has licence combination
-  problems with git-annex. A separate process not using git-annex's code
-  would avoid this.
-* Allows the daemon to be written in some other language if necessary
-  (for example, if c-telehash development stalls and the nodejs version is
-  already usable)
-* Potentially could be generalized to handle other similar protocols.
-  Or even the xmpp code moved into it. There could even be git-annex native
-  exchange protocols implemented in such a daemon to allow SSH-less
-  transfers.
-* Security holes in telehash would not need to compromise the entire
-  git-annex. daemon could be sandboxed in one way or another.
-
-Disadvantages:
-
-* Adds some complexity.
diff --git a/doc/design/assistant/todo.mdwn b/doc/design/assistant/todo.mdwn
deleted file mode 100644
--- a/doc/design/assistant/todo.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a subset of [[/todo]] and [[/bugs]] 
-for items tagged for the assistant.
-
-[[!inline pages="tagged(design/assistant) and !link(bugs/done) and !link(bugs/moreinfo)" show=0 archive=yes]]
diff --git a/doc/design/assistant/transfer_control.mdwn b/doc/design/assistant/transfer_control.mdwn
deleted file mode 100644
--- a/doc/design/assistant/transfer_control.mdwn
+++ /dev/null
@@ -1,123 +0,0 @@
-Some remotes are too small to sync everything to them.
-
-The case of a small remote on a gadget that the user interacts with,
-such as a phone, where they may want to request it get content
-it doesn't currently have, is covered by the [[partial_content]] page.
-
-But often the remote is just a removable drive or a cloud remote,
-that has a limited size. This page is about making the assistant do
-something smart with such remotes.
-
-## TODO
-
-* The expensive scan currently makes one pass, dropping content at the same
-  time more uploads and downloads are queued. It would be better to drop as
-  much content as possible upfront, to keep the total annex size as small
-  as possible. How to do that without making two expensive scans?
-* The TransferWatcher's finishedTransfer function relies on the location
-  log having been updated after a transfer. But there's a race; if the
-  log is not updated in time, it will fail to drop unwanted content.
-  (There's a 10 second sleep there now to avoid the race, but that's hardly
-  a fix.)
-
-### dropping no longer preferred content
-
-When a file is renamed, it might stop being preferred, so
-could be checked and dropped. (If there's multiple links to
-the same content, this gets tricky. Let's assume there are not.)
-
-### analysis of changes that can result in content no longer being preferred
-
-1. The preferred content expression can change, or a new repo is added, or
-   groups change. Generally, some change to global annex state. Only way to deal
-   with this is an expensive scan. (The rest of the items below come from
-   analizing the terminals used in preferred content expressions.) **done**
-2. renaming of a file (ie, moved to `archive/`) **done**
-   (note also that renaming a file can also make it become preferred content
-   again, and should cause it to be transferred in that case) **done**
-3. we get a file (`in`, `copies`) **done**
-4. we sent a file (`in`, `copies`) **done**
-5. some other repository drops the file (`in`, `copies` .. However, it's
-   unlikely that an expression would prefer content when *more* copies
-   exisited, and want to drop it when less do. That's nearly a pathological
-   case.)
-6. `migrate` is used to change a backend (`inbackend`; unlikely)
-
-That's all! Of these, 1-4 are by far the most important.
-
-## specifying what data a remote prefers to contain (**done**)
-
-Imagine a per-remote preferred content setting, that matches things that
-should be stored on the remote.
-
-For example, a MP3 player might use:
-`smallerthan(10mb) and filename(*.mp3) and (not filename(junk/*))`
-
-Adding that as a filter to files sent to a remote should be
-straightforward.
-
-A USB drive that is carried between three laptops and used to sync data
-between them might use: `not (in=laptop1 and in=laptop2 and in=laptop3)`
-
-In this case, transferring data from the usb repo should
-check if preferred content settings rejects the data, and if so, drop it
-from the repo. So once all three laptops have the data, it is
-pruned from the transfer drive.
-
-## repo groups (**done**)
-
-Seems like git-annex needs a way to know the groups of repos. Some
-groups:
-
-* enduser: The user interacts with this repo directly.
-* archival: This repo accumulates stuff, and once it's in enough archives,
-  it tends to get removed from other places.
-* transfer: This repo is used to transfer data between enduser repos,
-  it does not hold data for long periods of time, and tends to have a
-  limited size.
-
-Add a group.log that can assign repos to these or other groups. (**done**)
-
-Some examples of using groups:
-
-* Want to remove content from a repo, if it's not an archival repo,
-  and the content has reached at least one archival repo:
-
-  `(not group=archival) and (not copies=archival:1)`
-
-  That would make send to configure on all repos, or even set
-  a global `annex.accept` to it. **done**
-
-* Make a cloud repo only hold data until all known clients have a copy:
-
-  `not ingroup(enduser)`
-
-## configuration
-
-The above is all well and good for those who enjoy boolean algebra, but
-how to configure these sorts of expressions in the webapp?
-
-Currently, we have a simple drop down list to select between a few
-predefined groups with pre-defined preferred content recipes. Is this good
-enough?
-
-I think so; useful recipes can be developed on the wiki and included in
-git-annex.
-
-## the state change problem (**done**)
-
-Imagine that a trusted repo has setting like `not copies=trusted:2`
-This means that `git annex get --auto` should get files not in 2 trusted
-repos. But once it has, the file is in 3 trusted repos, and so `git annex
-drop --auto` should drop it again!
-
-How to fix? Can it even be fixed? Maybe care has to be taken when
-writing expressions, to avoid this problem. One that avoids it:
-`not (copies=trusted:2 or (in=here and trusted=here and copies=trusted:3))`
-
-Or, expressions could be automatically rewritten to avoid the problem.
-
-Or, perhaps simulation could be used to detect the problem. Before
-dropping, check the expression. Then simulate that the drop has happened.
-Does the expression now make it want to add it? Then don't drop it!
-**done**.. effectively using this approach.
diff --git a/doc/design/assistant/upgrading.mdwn b/doc/design/assistant/upgrading.mdwn
deleted file mode 100644
--- a/doc/design/assistant/upgrading.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-The assistant should support upgrading itself.
-
-## non-distro upgrades
-
-When git-annex was installed from this website, the assistant should poll
-periodically (once a day or so) to see if there is a new version.
-It downloads, over https, a .info file, which contains a serialized data
-type containing upgrade information. The url it's downloaded from is
-configured by setting `UPGRADE_LOCATION` when building git-annex on the
-autobuilders.
-
-When a new version is found, the webapp prompts the user to start the
-upgrade. (annex.autoupgrade can be set to true to upgrade w/o prompting.)
-
-The upgrade process is automatic, and rather tricky. The file is downloaded
-using git-annex (as a regular key!), and is then unpacked into a new
-directory, and the programfile updated to point to it. Then git-annex
-restarts itself.
-
-### manifest files
-
-To clean up the old installation, a git-annex.MANIFEST file is looked for
-in it, and the files listed, as well as empty directories, are deleted.
-I don't want to accidentially delete something I didn't ship!
-
-## restart on upgrade
-
-When git-annex is installed from a proper distribution package, there is no
-need for the above. But, the assistant still needs to notice when git-annex
-get upgraded, and offer to restart (or automatically restart when
-annex.autoupgrade is set).
-
-This is done using the DirWatcher, watching the directory containing the
-git-annex binary. Or, in the case of a non-distro install, watching the
-directory where eg git-annex.linux/ was unpacked.
-
-When an change is detected, restart.
-
-## multi-daemon upgrades
-
-A single system may have multiple assistant daemons running in different
-repositories.
-
-In this case, one daemon should do the non-distro upgrade, and the rest
-should notice the upgrade and restart.
-
-I don't want every daemon trying to download the file at once..
-
-Approach: The first new version is installed into a stable directory, based
-on its version. So, start the upgrade by making this directory. If upgrade
-is already in progress, the directory will already exist. (Remove directory
-if upgrade fails.)
diff --git a/doc/design/assistant/webapp.mdwn b/doc/design/assistant/webapp.mdwn
deleted file mode 100644
--- a/doc/design/assistant/webapp.mdwn
+++ /dev/null
@@ -1,65 +0,0 @@
-The webapp is a web server that displays a shiny interface.
-
-## performance
-
-Having the webapp open while transfers are
-running uses significant CPU just for the browser to update the progress 
-bar. Unsurprising, since the webapp is sending the browser a new `<div>`
-each time. Updating the DOM instead from javascript would avoid that;
-the webapp just needs to send the javascript either a full `<div>` or a 
-changed percentage and quantity complete to update a single progress bar.
-
-(Another reason to do this is it'll cut down on the refreshes, which 
-sometimes make browsers ignore clicks on UI elements like the pause button, 
-if the transfer display refreshes just as the click is made.)
-
-## other features
-
-* there could be a UI to export a file, which would make it be served up
-  over http by the web app
-* there could be a UI (some javascript thing) in the web browser to
-  submit urls to the web app to be added to the annex and downloaded.
-  See: [[todo/wishlist:_an_"assistant"_for_web-browsing_--_tracking_the_sources_of_the_downloads]]
-* Display the `inotify max_user_watches` exceeded message. **done**
-* Display something sane when kqueue runs out of file descriptors.
-* allow removing git remotes **done**
-* allow disabling syncing to here, which should temporarily disable all
-  local syncing. **done**
-
-## better headless support
-
-`--listen` is insecure, and using HTTPS would still not make it 100% secure
-as there would be no way for the browser to verify its certificate.
-
-I do have a better idea, but it'd be hard to implement.
-`git annex webapp --remote user@host:dir` could ssh to the remote host,
-run the webapp there, listening only on localhost, and then send the
-port the webapp chose back over the ssh connection. Then the same
-ssh connection could be reused (using ssh connection caching) to set up
-port forwarding from a port on the local host to the remote webapp.
-
-This would need to handle the first run case too, which would require
-forwarding a second port once the webapp made the repository and
-the second webapp started up.
-
-## first start **done**
-
-* make git repo **done**
-* generate a nice description like "joey@hostname Desktop/annex" **done**
-* record repository that was made, and use it next time run **done**
-* write a pid file, to prevent more than one first-start process running
-  at once **done**
-
-## security **acceptable/done**
-
-* Listen only to localhost. **done**
-* Instruct the user's web browser to open an url that contains a secret
-  token. This guards against other users on the same system. **done**
-  (I would like to avoid passwords or other authentication methods,
-  it's your local system.)
-* Don't pass the url with secret token directly to the web browser,
-  as that exposes it to `ps`. Instead, write a html file only the user can read,
-  that redirects to the webapp. **done**
-* Alternative for Linux at least would be to write a small program using
-  GTK+ Webkit, that runs the webapp, and can know what user ran it, avoiding
-  needing authentication.
diff --git a/doc/design/assistant/windows.mdwn b/doc/design/assistant/windows.mdwn
deleted file mode 100644
--- a/doc/design/assistant/windows.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-See [[todo/windows_support]]..
-
-## symlinks
-
-Apparently new versions of Windows have something very like symlinks.
-(Or really, 3 or so things not entirely unlike symlinks and all different.)
-Stackoverflow has some details.
-
-NTFS supports symbolic links two different ways: an [[!wikipedia NTFS symbolic link]] and an [[!wikipedia NTFS_junction_point]].  The former seems like the closest analogue to POSIX symlinks.
-
-The windows port will not use symlinks. It will only support direct mode.
-
-## POSIX
-
-Lots of ifdefs and pain to deal with POSIX calls in the code base.
-
-Or I could try to use Cygwin.
-
-## Deeper system integration
-
-[NTFS Reparse Points](http://msdn.microsoft.com/en-us/library/aa365503%28v=VS.85%29.aspx) allow a program to define how the OS will interpret a file or directory in arbitrary ways.  This requires writing a file system filter.
-
-## Developement environment
-
-Someone wrote in to say:
-
-> For Windows Development you can easily qualify
-> for Bizspark - http://www.microsoft.com/bizspark/
-> 
-> This will get you 100% free Windows OS licenses and
-> Dev tools, plus a free Azure account for cloud testing.
-> (You can also now deploy Linux VMs to Azure as well)
-> No money required at all.
diff --git a/doc/design/assistant/xmpp.mdwn b/doc/design/assistant/xmpp.mdwn
deleted file mode 100644
--- a/doc/design/assistant/xmpp.mdwn
+++ /dev/null
@@ -1,136 +0,0 @@
-The git-annex assistant uses XMPP to communicate between peers that
-cannot directly talk to one-another. A typical scenario is two users
-who share a repository, that is stored in the [[cloud]].
-
-### TODO
-
-* Do git-annex clients sharing an account with regular clients cause confusing
-  things to happen? 
-  See <http://git-annex.branchable.com/design/assistant/blog/day_114__xmpp/#comment-aaba579f92cb452caf26ac53071a6788>
-* Support registering with XMPP provider from within the webapp, 
-  as clients like pidgin are able to do.
-* At least some XMPP servers are lossy (does XMPP guarantee delivery)?
-  I have seen a log where a push's packet 1 and 3 arrived, but 2 did not.
-  To deal with this, need at least a 1 packet buffer and ACK or resend
-  request implemented over top of XMPP. Essentially, TCP over XMPP. :(
-
-## design goals
-
-1. Avoid user-visible messages. dvcs-autosync uses XMPP similarly, but
-   sends user-visible messages. Avoiding user-visible messages lets
-   the user configure git-annex to use his existing XMPP account
-   (eg, Google Talk).
-
-2. Send notifications to buddies. dvcs-autosync sends only self-messages,
-   but that requires every node have the same XMPP account configured.
-   git-annex should support that mode, but it should also send notifications
-   to a user's buddies. (This will also allow for using XMPP for pairing
-   in the future.)
-
-3. Don't make account appear active. Just because git-annex is being an XMPP
-   client, it doesn't mean that it wants to get chat messages, or make the
-   user appear active when he's not using his chat program.
-
-## protocol
-
-To avoid relying on XMPP extensions, git-annex communicates
-using presence messages, and chat messages (with empty body tags,
-so clients don't display them).
-
-git-annex sets a negative presence priority, to avoid any regular messages
-getting eaten by its clients. It also sets itself extended away.
-Note that this means that chat messages always have to be directed at
-specific git-annex clients.
-
-To the presence and chat messages, it adds its own tag as
-[extended content](http://xmpp.org/rfcs/rfc6121.html#presence-extended).
-The xml namespace is "git-annex" (not an URL because I hate wasting bandwidth).
-
-To indicate it's pushed changes to a git repo with a given UUID, a message
-that is sent to all buddies and other clients using the account (no
-explicit pairing needed), it uses a broadcast presence message containing:
-
-	<git-annex xmlns='git-annex' push="uuid[,uuid...]" />
-
-Multiple UUIDs can be listed when multiple clients were pushed. If the
-git repo does not have a git-annex UUID, an empty string is used.
-
-To query if other git-annex clients are around, a presence message is used,
-containing:
-
-	<git-annex xmlns='git-annex' query="" />
-
-For pairing, a chat message is sent to every known git-annex client,
-containing:
-
-	<git-annex xmlns='git-annex' pairing="PairReq|PairAck|PairDone myuuid" />
-
-### git push over XMPP
-
-To indicate that we could push over XMPP, a chat message is sent,
-to each known client of each XMPP remote.
-
-	<git-annex xmlns='git-annex' canpush="myuuid" shas="sha1 sha1" />
-
-The shas are omitted by old clients. If present, they are the git shas of
-the head and git-annex branches that are available to be pushed. This lets
-the receiver check if it's already got them.
-
-To request that a remote push to us, a chat message can be sent.
-
-	<git-annex xmlns='git-annex' pushrequest="myuuid" />
-
-When replying to an canpush message, this is directed at the specific
-client that indicated it could push. To solicit pushes from all clients,
-the message has to be sent directed individually to each client.
-
-When a peer is ready to send a git push, it sends:
-
-	<git-annex xmlns='git-annex' startingpush="myuuid" />
-
-The receiver runs `git receive-pack`, and sends back its output in
-one or more chat messages, directed to the client that is pushing:
-
-	<git-annex xmlns='git-annex' rp="N">
-	007b27ca394d26a05d9b6beefa1b07da456caa2157d7 refs/heads/git-annex report-status delete-refs side-band-64k quiet ofs-delta
-	</git-annex>
-
-The sender replies with the data from `git push`, in 
-one or more chat messages, directed to the receiver:
-
-	<git-annex xmlns='git-annex' sp="N">
-	data
-	</git-annex>
-
-The value of rp and sp used to be empty, but now it's a sequence number.
-This indicates the sequence of this packet, counting from 1. The receiver
-and sender each have their own sequence numbers.
-
-When `git receive-pack` exits, the receiver indicates its exit
-status with a chat message, directed at the sender:
-
-	<git-annex xmlns='git-annex' rpdone="0" />
-
-### security
-
-Data git-annex sends over XMPP will be visible to the XMPP account's
-buddies, and to the XMPP server (and any attacker who has access to the
-XMPP server). So it's important to consider the security exposure of using
-it.
-
-Even if git-annex sends only a single bit notification, this lets attackers
-know when the user is active and changing files. Although the assistant's other
-syncing activities can somewhat mask this.
-
-As soon as git-annex does anything unlike any other client, an attacker can
-see how many clients are connected for a user, and fingerprint the ones
-running git-annex, and determine how many clients are running git-annex.
-
-An attacker can observe the UUIDs used for pushes and pairing, and determine
-how many different remotes are being used.
-
-An attacker could replay push notification messages, reusing UUIDs it's
-observed. This would make clients pull repeatedly, perhaps as a DOS.
-
-The XMPP server, or an attacker with access to it can reconstruct the git 
-repository from data sent in pushes, in part or in whole.
diff --git a/doc/design/assistant/xmpp_security.mdwn b/doc/design/assistant/xmpp_security.mdwn
deleted file mode 100644
--- a/doc/design/assistant/xmpp_security.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Currently [[xmpp]] relies on the SSL connection to the server for security.
-The server can see git repository data pushed through it. (Also, the SSL
-connection is not pinned or really checked well at all.)
-
-Add an encryption layer that does not rely on trusting the XMPP server's
-security. There are a few options for how to generate the key for eg,
-AES encryption:
-
-  * Do a simple Diffie-Hellman shared key generation when starting each XMPP
-    push session. Would not protect the users from active MITM by the
-    XMPP server, but would prevent passive data gathering attacks from
-    getting useful data. Since the key is ephemeral, would provide
-    Forward Security.
-  * Do D-H key generation, but at pairing, not push time. Allows for an
-    optional confirmation step, using eg, BubbleBabble to compare the
-    keys out of band. ("I see xebeb-dibyb-gycub-kacyb-modib-pudub-sefab-vifuc-bygoc-daguc-gohec-kuxax .. do you too?")
-  * Prompt both users for a passphrase when XMPP pairing, and 
-    use SPEKE (or similar methods like J-PAKE) to generate a shared key.
-    Avoids active MITM attacks. Makes pairing harder, especially pairing
-    between one's own devices, since the passphrase has to be entered on
-    all devices. Also problematic when pairing more than 2 devices,
-    especially when adding a device to the set later, since there
-    would then be multiple different keys in use.
-  * Rely on the user's gpg key, and do gpg key verification during XMPP
-    pairing. Problematic because who wants to put their gpg key on their
-    phone? Also, require the users be in the WOT and be gpg literate.
-
-Update: This seems unlikely to be worth doing. [[Telehash]] is better.
---[[Joey]]
diff --git a/doc/design/balanced_preferred_content.mdwn b/doc/design/balanced_preferred_content.mdwn
deleted file mode 100644
--- a/doc/design/balanced_preferred_content.mdwn
+++ /dev/null
@@ -1,80 +0,0 @@
-Say we have 2 backup drives and want to fill them both evenly with files,
-different files in each drive. Currently, preferred content cannot express
-that entirely:
-
-* One way is to use a-m* and n-z*, but that's unlikely to split filenames evenly. 
-* Or, can let both repos take whatever files, perhaps at random, that the
-  other repo is not know to contain, but then repos will race and both get
-  the same file, or similarly if they are not communicating frequently.
-
-So, let's add a new expression: `balanced_amoung(group)`
-
-This would work by taking the list of uuids of all repositories in the
-group, and sorting them, which yields a list from 0..M-1 repositories.
-
-To decide which repository wants key K, convert K to a number N in some
-stable way and then `N mod M` yields the number of the repository that
-wants it, while all the rest don't.
-
-(Since git-annex keys can be pretty long and not all of them are random
-hashes, let's md5sum the key and then use the md5 as a number.)
-
-This expression is stable as long as the members of the group don't change.
-I think that's stable enough to work as a preferred content expression.
-
-Now, you may want to be able to add a third repo and have the data be
-rebalanced, with some moving to it. And that would happen. However, as this
-scheme stands, it's equally likely that adding repo3 will make repo1 and
-repo2 want to swap files between them. So, we'll want to add some
-precautions to avoid a lof of data moving around in this case:
-
-	((balanced_amoung(backup) and not (copies=backup:1)) or present
-
-So once file lands on a backup drive, it stays there, even if more backup
-drives change the balancing.
-
------
-
-Some limitations:
-
-* The item size is not taken into account. One repo could end up with a
-  much larger item or items and so fill up faster. And the other repo
-  wouldn't then notice it was full and take up some slack.
-* With the complicated expression above, adding a new repo when one 
-  is full would not necessarily result in new files going to one of the 2
-  repos that still have space. Some items would end up going to the full
-  repo.
-
-These can be dealt with by noticing when a repo is full and moving some
-of it's files (any will do) to other repos in its group. I don't see a way
-to make preferred content express that movement though; it would need to be
-a manual/scripted process.
-
------
-
-What if we have 5 backup repos and want each file to land in 3 of them?
-There's a simple change that can support that:
-`balanced_amoung(group:3)`
-
-This works the same as before, but rather than just `N mod M`, take
-`N+I mod M` where I is [0..2] to get the list of 3 repositories that want a
-key.
-
-This does not really avoid the limitations above, but having more repos
-that want each file will reduce the chances that no repo will be able to
-take a given file. In the [[iabackup]] scenario, new clients will just be
-assigned until all the files reach the desired level or replication.
-
-However.. Imagine there are 9 repos, all full, and some files have not
-reached desired level of replication. Seems like adding 1 more repo will make
-only 3 in 10 files be wanted by that new repo. Even if the repo has space
-for all the files, it won't be sufficient, and more repos would need to be
-added.
-
-One way to avoid this problem would be if the preferred content was only
-used for the initial distribution of files to a repo. If the repo has
-gotten all the files it wants, it could make a second pass and
-opportunistically get files it doesn't want but that it has space for
-and that don't have enough copies yet.
-Although this gets back to the original problem of multiple repos racing
-downloads and files getting more than the desired number of copies.
diff --git a/doc/design/caching_database.mdwn b/doc/design/caching_database.mdwn
deleted file mode 100644
--- a/doc/design/caching_database.mdwn
+++ /dev/null
@@ -1,157 +0,0 @@
-* [[metadata]] for views
-* [direct mode mappings scale badly with thousands of identical files](/bugs/__34__Adding_4923_files__34___is_really_slow)
-* [[bugs/incremental_fsck_should_not_use_sticky_bit]]
-* [[todo/wishlist:_pack_metadata_in_direct_mode]]
-* [[todo/cache_key_info]]
-
-What do all these have in common? They could all be improved by
-using some kind of database to locally store the information in an
-efficient way.
-
-The database should only function as a cache. It should be able to be
-generated and updated by looking at the git repository.
-
-* Metadata can be updated by looking at the git-annex branch,
-  either its current state, or the diff between the old and new versions
-* Direct mode mappings can be updated by looking at the current branch,
-  to see which files map to which key. Or the diff between the old
-  and new versions of the branch.
-* Incremental fsck information is not stored in git, but can be
-  "regenerated" by running fsck again.  
-  (Perhaps doesn't quite fit, but let it slide..)
-
-Store in the database the Ref of the branch that was used to construct it.
-(Update in same transaction as cached data.)
-
-## implementation plan
-
-1. Store incremental fsck info in db, on a branch, with sqlite. **done**
-2. Make sure that builds on all platforms, and works reliably. **done**
-3. Use sqlite db for associated files cache. **done** (only for v6 unlocked
-   files)
-4. Also, use associated files db to construct views.
-5. Use sqlite db for metadata cache.
-6. Use sqlite db for list of keys present in local annex.
-
-## sqlite or not?
-
-sqllite seems like the most likely thing to work. But it does involve ugh,
-SQL. And even if that's hidden by a layer like persistent, it's still going
-to involve some technical debt (eg, database migrations).
-
-It would be great if there were some haskell thing like acid-state
-that I could use instead. But, acid-state needs to load the whole
-DB into memory. In the comments of
-[[bugs/incremental_fsck_should_not_use_sticky_bit]] I examined several
-other haskell database-like things, and found them all wanting, except for
-possibly TCache. (And TCache is backed by persistent/sqlite anyway.)
-
-## one db or multiple?
-
-Using a single database will use less space. Eg, each Key will only need to
-appear in it once, with proper normalization.
-
-OTOH, it's more complicated, and harder to recover from problems.
-
-Currently leaning toward one database per purpose.
-
-## case study: persistent with sqllite
-
-Here's a non-normalized database schema in persistent's syntax.
-
-<pre>
-CachedKey
-  key Key
-  associatedFiles [FilePath]
-  lastFscked Int Maybe
-  KeyIndex key
-
-CachedMetaData
-  key Key
-  metaDataField MetaDataField
-  metaDataValue MetaDataValue
-</pre>
-
-Using the above database schema and persistent with sqlite, I made
-a database containing 30k Cache records. This took 5 seconds to create
-and was 7 mb on disk. (Would be rather smaller, if a more packed Key
-show/read instance were used.)
-
-Running 1000 separate queries to get 1000 CachedKeys took 0.688s with warm
-cache. This was more than halved when all 1000 queries were done inside the
-same `runSqlite` call. (Which could be done using a separate thread and some
-MVars.)
-
-(Note that if the database is a cache, there is no need to perform migrations
-when querying it. My benchmarks skip `runMigration`. Instead, if the query
-fails, the database doesn't exist, or uses an incompatable schema, and the
-cache can be rebuilt then. This avoids the problem that persistent's migrations
-can sometimes fail.)
-
-Doubling the db to 60k scaled linearly in disk and cpu and did not affect
-query time.
-
-----
-
-Here's a normalized schema:
-
-<pre>
-CachedKey
-  key Key
-  KeyIndex key
-  deriving Show
-
-AssociatedFiles
-  keyId CachedKeyId Eq
-  associatedFile FilePath
-  KeyIdIndex keyId associatedFile
-  deriving Show
-
-CachedMetaField
-  field MetaField
-  FieldIndex field
-
-CachedMetaData
-  keyId CachedKeyId Eq
-  fieldId CachedMetaFieldId Eq
-  metaValue String
-
-LastFscked
-  keyId CachedKeyId Eq
-  localFscked Int Maybe
-</pre>
-
-With this, running 1000 joins to get the associated files of 1000
-Keys took 5.6s with warm cache. (When done in the same `runSqlite` call.) Ouch!
-
-Update: This performance was fixed by adding `KeyIdOutdex keyId associatedFile`,
-which adds a uniqueness constraint on the tuple of key and associatedFile.
-With this, 1000 queries takes 0.406s. Note that persistent is probably not
-actually doing a join at the SQL level, so this could be sped up using
-eg, esquelito.
-
-Update2: Using esquelito to do a join got this down to 0.109s.
-See `database` branch for code.
-
-Update3: Converting to a single un-normalized table for AssociatedFiles
-avoids the join, and increased lookup speed to 0.087s. Of course, when
-a key has multiple associated files, this will use more disk space, due
-to not normalizing the key.
-
-Compare the above with 1000 calls to `associatedFiles`, which is approximately
-as fast as just opening and reading 1000 files, so will take well under
-0.05s with a **cold** cache.
-
-So, we're looking at maybe 50% slowdown using sqlite and
-persistent for associated files. OTOH, the normalized schema should
-perform better when adding an associated file to a key that already has many.
-
-For metadata, the story is much nicer. Querying for 30000 keys that all
-have a particular tag in their metadata takes 0.65s. So fast enough to be
-used in views.
-
-Update4: Comparing git-annex fsck using the sticky bit to the final sqlite
-implementation:
-
-sticky bit: 4m30.787s  
-sqlite: 4m40.789s  
diff --git a/doc/design/encryption.mdwn b/doc/design/encryption.mdwn
deleted file mode 100644
--- a/doc/design/encryption.mdwn
+++ /dev/null
@@ -1,118 +0,0 @@
-This was the design doc for [[/encryption]] and is preserved for
-the curious. For an example of using git-annex with an encrypted S3 remote,
-see [[tips/using_Amazon_S3]].
-
-[[!toc]]
-
-## encryption key management
-
-[[!template id=note text="""
-The basis of this scheme was originally developed by Lars Wirzenius et al
-[for Obnam](http://liw.fi/obnam/encryption/).
-"""]]
-
-Data is encrypted by GnuPG, using a symmetric cipher. The cipher is
-generated by GnuPG when the special remote is created. By default the
-best entropy pool is used, hence the generation may take a while; One
-can use `initremote` with the `--fast` option
-to speed up things, but at the expense of using random numbers of a
-lower quality. The generated cipher is then checked into your git
-repository, encrypted using one or more OpenPGP public keys. This scheme
-allows new OpenPGP private keys to be given access to content that has
-already been stored in the remote.
-
-Different encrypted remotes need to be able to each use different ciphers.
-Allowing multiple ciphers to be used within a single remote would add a lot
-of complexity, so is not supported.
-Instead, if you want a new cipher, create a new S3 bucket, or whatever.
-There does not seem to be much benefit to using the same cipher for
-two different encrypted remotes.
-
-So, the encrypted cipher is just stored with the rest of a remote's
-configuration in `remotes.log` (see [[internals]]). When `git
-annex intiremote` makes a remote, it generates a random symmetric
-cipher, and encrypt it with the specified gpg key. To allow another gpg
-public key access, update the encrypted cipher to be encrypted to both gpg
-keys.
-
-Note that there's a shared encryption mode where the cipher is not
-encrypted. When this mode is used, any clone of the git repository
-can decrypt files stored in its special remote.
-
-## filename enumeration
-
-If the names of files are encrypted or securely hashed, or whatever is
-chosen, this makes it harder for git-annex (let alone untrusted third parties!)
-to get a list of the files that are stored on a given enrypted remote.
-But, does git-annex really ever need to do such an enumeration?
-
-Apparently not. `git annex unused --from remote` can now check for
-unused data that is stored on a remote, and it does so based only on
-location log data for the remote. This assumes that the location log is
-kept accurately.
-
-What about `git annex fsck --from remote`? Such a command should be able to,
-for each file in the repository, contact the encrypted remote to check
-if it has the file. This can be done without enumeration, although it will
-mean running gpg once per file fscked, to get the encrypted filename.
-
-So, the files stored in the remote should be encrypted. But, it needs to
-be a repeatable encryption, so they cannot just be gpg encrypted, that
-would yeild a new name each time. Instead, HMAC is used. Any hash could
-be used with HMAC. SHA-1 is the default, but [[other_hashes|/encryption]]
-can be chosen for new remotes.
-
-It was suggested that it might not be wise to use the same cipher for both
-gpg and HMAC. Being paranoid, it's best not to tie the security of one
-to the security of the other. So, the encrypted cipher described above is
-actually split in two; the first half is used for HMAC, and the second
-half for gpg.
-
-----
-
-Does the HMAC cipher need to be gpg encrypted? Imagine if it were
-stored in plainext in the git repository. Anyone who can access
-the git repository already knows the actual filenames, and typically also
-the content hashes of annexed content. Having access to the HMAC cipher
-could perhaps be said to only let them verify that data they already
-know.
-
-While this seems a pretty persuasive argument, I'm not 100% convinced, and
-anyway, most times that the HMAC cipher is needed, the gpg cipher is also
-needed. Keeping the HMAC cipher encrypted does slow down two things:
-dropping content from encrypted remotes, and checking if encrypted remotes
-really have content. If it's later determined to be safe to not encrypt the
-HMAC cipher, the current design allows changing that, even for existing
-remotes.
-
-## other use of the symmetric cipher
-
-The symmetric cipher can be used to encrypt other content than the content
-sent to the remote. In particular, it may make sense to encrypt whatever
-access keys are used by the special remote with the cipher, and store that
-in remotes.log. This way anyone whose gpg key has been given access to 
-the cipher can get access to whatever other credentials are needed to
-use the special remote.
-
-For example, the S3 special remote does this if configured with
-embedcreds=yet.
-
-## risks
-
-A risk of this scheme is that, once the symmetric cipher has been
-obtained, it allows full access to all the encrypted content. Indeed
-anyone owning a key that used to be granted access could already have
-decrypted the cipher and stored a copy. While it is in possible to
-remove a key with `keyid-=`, it is designed for a
-[[completely_different_purpose|/encryption]] and does not actually revoke
-access.
-
-If git-annex stores the decrypted symmetric cipher in memory, then there
-is a risk that it could be intercepted from there by an attacker. Gpg
-ameliorates these type of risks by using locked memory. For git-annex, note
-that an attacker with local machine access can tell at least all the
-filenames and metadata of files stored in the encrypted remote anyway,
-and can access whatever content is stored locally.
-
-This design does not address obfuscating the size of files by chunking
-them. However, chunking was later added; see [[design/assistant/chunks]].
diff --git a/doc/design/encryption/comment_1_4715ffafb3c4a9915bc33f2b26aaa9c1._comment b/doc/design/encryption/comment_1_4715ffafb3c4a9915bc33f2b26aaa9c1._comment
deleted file mode 100644
--- a/doc/design/encryption/comment_1_4715ffafb3c4a9915bc33f2b26aaa9c1._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U"
- nickname="Richard"
- subject="comment 1"
- date="2011-04-03T20:03:14Z"
- content="""
-New encryption keys could be used for different directories/files/patterns/times/whatever. One could then encrypt this new key for the public keys of other people/machines and push them out along with the actual data. This would allow some level of access restriction or future revocation. git-annex would need to keep track of which files can be decrypted with which keys. I am undecided if that information needs to be encrypted or not.
-
-Encrypted object files should be checksummed in encrypted form so that it's possible to verify integrity without knowing any keys. Same goes for encrypted keys, etc.
-
-Chunking files in this context seems like needless overkill. This might make sense to store a DVD image on CDs or similar, at some point. But not for encryption, imo. Coming up with sane chunk sizes for all use cases is literally impossible and as you pointed out, correlation by the remote admin is trivial.
-"""]]
diff --git a/doc/design/encryption/comment_2_a610b3d056a059899178859a3a821ea5._comment b/doc/design/encryption/comment_2_a610b3d056a059899178859a3a821ea5._comment
deleted file mode 100644
--- a/doc/design/encryption/comment_2_a610b3d056a059899178859a3a821ea5._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joey.kitenet.net/"
- nickname="joey"
- subject="comment 2"
- date="2011-04-05T18:41:49Z"
- content="""
-I see no use case for verifying encrypted object files w/o access to the encryption key. And possible use cases for not allowing anyone to verify your data.
-
-If there are to be multiple encryption keys usable within a single encrypted remote, than they would need to be given some kind of name (a since symmetric key is used, there is no pubkey to provide a name), and the name encoded in the files stored in the remote. While certainly doable I'm not sold that adding a layer of indirection is worthwhile. It only seems it would be worthwhile if setting up a new encrypted remote was expensive to do. Perhaps that could be the case for some type of remote other than S3 buckets.
-"""]]
diff --git a/doc/design/encryption/comment_3_cca186a9536cd3f6e86994631b14231c._comment b/doc/design/encryption/comment_3_cca186a9536cd3f6e86994631b14231c._comment
deleted file mode 100644
--- a/doc/design/encryption/comment_3_cca186a9536cd3f6e86994631b14231c._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U"
- nickname="Richard"
- subject="comment 3"
- date="2011-04-05T23:24:17Z"
- content="""
-Assuming you're storing your encrypted annex with me and I with you, our regular cron jobs to verify all data will catch corruption in each other's annexes.
-
-Checksums of the encrypted objects could be optional, mitigating any potential attack scenarios.
-
-It's not only about the cost of setting up new remotes. It would also be a way to keep data in one annex while making it accessible only in a subset of them. For example, I might need some private letters at work, but I don't want my work machine to be able to access them all.
-"""]]
diff --git a/doc/design/encryption/comment_4_8f3ba3e504b058791fc6e6f9c38154cf._comment b/doc/design/encryption/comment_4_8f3ba3e504b058791fc6e6f9c38154cf._comment
deleted file mode 100644
--- a/doc/design/encryption/comment_4_8f3ba3e504b058791fc6e6f9c38154cf._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joey.kitenet.net/"
- nickname="joey"
- subject="comment 4"
- date="2011-04-07T19:59:30Z"
- content="""
-@Richard the easy way to deal with that scenario is to set up a remote that work can access, and only put in it files work should be able to see. Needing to specify which key a file should be encrypted to when putting it in a remote that supported multiple keys would add another level of complexity which that avoids.
-
-Of course, the right approach is probably to have a separate repository for work. If you don't trust it with seeing file contents, you probably also don't trust it with the contents of your git repository.
-"""]]
diff --git a/doc/design/encryption/comment_5_520e60aa53217b5ba428d4c05d897dee._comment b/doc/design/encryption/comment_5_520e60aa53217b5ba428d4c05d897dee._comment
deleted file mode 100644
--- a/doc/design/encryption/comment_5_520e60aa53217b5ba428d4c05d897dee._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkS6aFVrEwOrDuQBTMXxtGHtueA69NS_jo"
- nickname="Hans"
- subject="using sshfs + cryptmount is more secure"
- date="2012-08-14T13:41:47Z"
- content="""
-\"For git-annex, note that an attacker with local machine access can tell at least all the filenames and metadata of files stored in the encrypted remote anyway, and can access whatever content is stored locally.\"
-
-Better security is given by sshfs + cryptmount, which I used when I recently setup a git-annex repository on a free shell account from a provider I do not trust.
-
-See http://code.cjb.net/free-secure-online-backup.html for what I did to get a really secure solution.
-
-Kind regards,
-
-Hans Ekbrand
-"""]]
diff --git a/doc/design/encryption/comment_6_d677fead0fe0c543f48f07d85f83f592._comment b/doc/design/encryption/comment_6_d677fead0fe0c543f48f07d85f83f592._comment
deleted file mode 100644
--- a/doc/design/encryption/comment_6_d677fead0fe0c543f48f07d85f83f592._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo"
- nickname="Justin"
- subject="comment 6"
- date="2012-08-14T14:10:40Z"
- content="""
-Hans,
-
-You are misunderstanding how git-annex encryption works.  The \"untrusted host\" and the \"local machine\" are not the same machine.  git-annex only transfers pre-encrypted files to the \"untrusted host\".
-
-You should setup a git-annex encrypted remote and watch how it works so you can see for yourself that it is not insecure.
-
-Your solution does not provide better security, it accomplishes the same thing as git-annex in a more complicated way.  In addition, since you are mounting the image from the client your solution will not work with multiple clients.
-"""]]
diff --git a/doc/design/encryption/comment_7_c1c38a09b1276e29adc3ba564dc0fe4e._comment b/doc/design/encryption/comment_7_c1c38a09b1276e29adc3ba564dc0fe4e._comment
deleted file mode 100644
--- a/doc/design/encryption/comment_7_c1c38a09b1276e29adc3ba564dc0fe4e._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkS6aFVrEwOrDuQBTMXxtGHtueA69NS_jo"
- nickname="Hans"
- subject="comment 7"
- date="2012-08-15T19:16:10Z"
- content="""
-Justin,
-
-thanks for clearing that up. It's great that git-annex has implemented mechanisms to work securely on untrusted hosts. My solution is thus only interesting for files that are impractical to manage with git-annex (e.g. data for/from applications that need rw-access to a large number of files). And, possibly, for providers that do not provide rsync.
-
-Your remark that my solution does not work with more than one client, is not entirely accurate. No more than one client can access the repository at any given time, but as long as access is not simultaneous, any number of clients can access the repository. Still, your point is taken, it's a limitation I should mention.
-
-It would be interesting to compare the performance of individually encrypted files to encrypted image-file. My intuition says that encrypted image-file should be faster, but that's just a guess.
-"""]]
diff --git a/doc/design/external_special_remote_protocol.mdwn b/doc/design/external_special_remote_protocol.mdwn
deleted file mode 100644
--- a/doc/design/external_special_remote_protocol.mdwn
+++ /dev/null
@@ -1,386 +0,0 @@
-Communication between git-annex and a program implementing an external
-special remote uses this protocol.
-
-[[!toc]]
-
-## starting the program
-
-The external special remote program has a name like
-`git-annex-remote-$bar`. When 
-`git annex initremote foo type=external externaltype=$bar` is run,
-git-annex finds the appropriate program in PATH.
-
-The program is started by git-annex when it needs to access the special
-remote, and may be left running for a long period of time. This allows
-it to perform expensive setup tasks, etc. Note that git-annex may choose to
-start multiple instances of the program (eg, when multiple git-annex
-commands are run concurrently in a repository).
-
-## protocol overview
-
-Communication is via stdin and stdout. Therefore, the external special
-remote must avoid doing any prompting, or outputting anything like eg,
-progress to stdout. (Such stuff can be sent to stderr instead.)
-
-The protocol is line based. Messages are sent in either direction, from
-git-annex to the special remote, and from the special remote to git-annex.
-
-In order to avoid confusing interactions, one or the other has control
-at any given time, and is responsible for sending requests, while the other
-only sends replies to the requests.
-
-Each protocol line starts with a command, which is followed by the
-command's parameters (a fixed number per command), each separated by a
-single space. The last parameter may contain spaces. Parameters may be
-empty, but the separating spaces are still required in that case.
-
-## example session
-
-The special remote is responsible for sending the first message, indicating
-the version of the protocol it is using.
-
-	VERSION 1
-
-Once it knows the version, git-annex will generally 
-send a message telling the special remote to start up.
-(Or it might send a INITREMOTE, so don't hardcode this order.)
-
-	PREPARE
-
-The special remote can now ask git-annex for its configuration, as needed,
-and check that it's valid. git-annex responds with the configuration values
-
-	GETCONFIG directory
-	VALUE /media/usbdrive/repo
-	GETCONFIG automount
-	VALUE true
-
-Once the special remote is satisfied with its configuration and is
-ready to go, it tells git-annex.
-
-	PREPARE-SUCCESS
-
-Now git-annex will tell the special remote what to do. Let's suppose
-it wants to store a key. 
-
-	TRANSFER STORE somekey tmpfile
-
-The special remote can continue sending messages to git-annex during this
-transfer. It will typically send progress messages, indicating how many
-bytes have been sent:
-
-	PROGRESS 10240
-	PROGRESS 20480
-
-Once the key has been stored, the special remote tells git-annex the result:
-
-	TRANSFER-SUCCESS STORE somekey
-
-Once git-annex is done with the special remote, it will close its stdin.
-The special remote program can then exit.
-
-## git-annex request messages
-
-These are messages git-annex sends to the special remote program.
-None of these messages require an immediate reply. The special
-remote can send any messages it likes while handling the requests.
-
-Once the special remote has finished performing the request, it should
-send one of the corresponding replies listed in the next section.
-
-The following requests *must* all be supported by the special remote.
-
-* `INITREMOTE`  
-  Requests the remote to initialize itself. This is where any one-time
-  setup tasks can be done, for example creating an Amazon S3 bucket.  
-  Note: This may be run repeatedly over time, as a remote is initialized in
-  different repositories, or as the configuration of a remote is changed.
-  (Both `git annex initremote` and `git-annex enableremote` run this.)
-  So any one-time setup tasks should be done idempotently.
-* `PREPARE`  
-  Tells the remote that it's time to prepare itself to be used.  
-  Only INITREMOTE can come before this.
-* `TRANSFER STORE|RETRIEVE Key File`  
-  Requests the transfer of a key. For STORE, the File is the file to upload;
-  for RETRIEVE the File is where to store the download.  
-  Note that the File should not influence the filename used on the remote.
-  The filename will not contain any whitespace.  
-  Note that it's important that, while a Key is being stored, CHECKPRESENT
-  not indicate it's present until all the data has been transferred.  
-  Multiple transfers might be requested by git-annex, but it's fine for the 
-  program to serialize them and only do one at a time.  
-* `CHECKPRESENT Key`  
-  Requests the remote to check if a key is present in it.
-* `REMOVE Key`  
-  Requests the remote to remove a key's contents.
-
-The following requests can optionally be supported. If not handled,
-replying with `UNSUPPORTED-REQUEST` is acceptable.
-
-* `GETCOST`  
-  Requests the remote to return a use cost. Higher costs are more expensive.
-  (See Config/Cost.hs for some standard costs.)
-* `GETAVAILABILITY`
-  Requests the remote to send back an `AVAILABILITY` reply.
-  If the remote replies with `UNSUPPORTED-REQUEST`, its availability
-  is assumed to be global. So, only remotes that are only reachable
-  locally need to worry about implementing this.
-* `CLAIMURL Url`  
-  Asks the remote if it wishes to claim responsibility for downloading
-  an url. If so, the remote should send back an `CLAIMURL-SUCCESS` reply.
-  If not, it can send `CLAIMURL-FAILURE`.
-* `CHECKURL Url`  
-  Asks the remote to check if the url's content can currently be downloaded
-  (without downloading it). The remote replies with one of `CHECKURL-FAILURE`,
-  `CHECKURL-CONTENTS`, or `CHECKURL-MULTI`.
-* `WHEREIS Key`
-  Asks the remote to provide additional information about ways to access
-  the content of a key stored in it, such as eg, public urls.
-  This will be displayed to the user by eg, `git annex whereis`. The remote
-  replies with `WHEREIS-SUCCESS` or `WHEREIS-FAILURE`.  
-  Note that users expect `git annex whereis` to run fast, without eg,
-  network access.  
-  This is not needed when `SETURIPRESENT` is used, since such uris are
-  automatically displayed by `git annex whereis`.  
-
-More optional requests may be added, without changing the protocol version,
-so if an unknown request is seen, reply with `UNSUPPORTED-REQUEST`.
-
-## special remote replies
-
-These should be sent only in response to the git-annex request messages.
-They do not have to be sent immediately after the request; the special
-remote can send its own requests (listed in the next section below)
-while it's handling a request.
-
-* `PREPARE-SUCCESS`  
-  Sent as a response to PREPARE once the special remote is ready for use.
-* `PREPARE-FAILURE ErrorMsg`
-  Sent as a response to PREPARE if the special remote cannot be used.
-* `TRANSFER-SUCCESS STORE|RETRIEVE Key`  
-  Indicates the transfer completed successfully.
-* `TRANSFER-FAILURE STORE|RETRIEVE Key ErrorMsg`  
-  Indicates the transfer failed.
-* `CHECKPRESENT-SUCCESS Key`  
-  Indicates that a key has been positively verified to be present in the
-  remote.
-* `CHECKPRESENT-FAILURE Key`  
-  Indicates that a key has been positively verified to not be present in the
-  remote.
-* `CHECKPRESENT-UNKNOWN Key ErrorMsg`  
-  Indicates that it is not currently possible to verify if the key is
-  present in the remote. (Perhaps the remote cannot be contacted.)
-* `REMOVE-SUCCESS Key`  
-  Indicates the key has been removed from the remote. May be returned if
-  the remote didn't have the key at the point removal was requested.
-* `REMOVE-FAILURE Key ErrorMsg`  
-  Indicates that the key was unable to be removed from the remote.
-* `COST Int`  
-  Indicates the cost of the remote.
-* `AVAILABILITY GLOBAL|LOCAL`
-  Indicates if the remote is globally or only locally available.
-  (Ie stored in the cloud vs on a local disk.)
-* `INITREMOTE-SUCCESS`  
-  Indicates the INITREMOTE succeeded and the remote is ready to use.
-* `INITREMOTE-FAILURE ErrorMsg`  
-  Indicates that INITREMOTE failed.
-* `CLAIMURL-SUCCESS`  
-  Indicates that the CLAIMURL url will be handled by this remote.
-* `CLAIMURL-FAILURE`  
-  Indicates that the CLAIMURL url wil not be handled by this remote.
-* `CHECKURL-CONTENTS Size|UNKNOWN Filename`  
-  Indicates that the requested url has been verified to exist.  
-  The Size is the size in bytes, or use "UNKNOWN" if the size could not be
-  determined.  
-  The Filename can be empty (in which case a default is used),
-  or can specify a filename that is suggested to be used for this url.
-* `CHECKURL-MULTI Url1 Size1|UNKNOWN Filename1 Url2 Size2|UNKNOWN Filename2 ...`  
-  Indicates that the requested url has been verified to exist,
-  and contains multiple files, which can each be accessed using
-  their own url.  Each triplet of url, size, and filename should be listed,
-  one after the other.
-  Note that since a list is returned, neither the Url nor the Filename
-  can contain spaces.
-* `CHECKURL-FAILURE`  
-  Indicates that the requested url could not be accessed.
-* `WHEREIS-SUCCESS String`  
-  Indicates a location of a key. Typically an url, the string can
-  be anything that it makes sense to display to the user about content
-  stored in the special remote.
-* `WHEREIS-FAILURE`  
-  Indicates that no location is known for a key.
-* `UNSUPPORTED-REQUEST`  
-  Indicates that the special remote does not know how to handle a request.
-
-## special remote messages
-
-These messages may be sent by the special remote at any time that it's
-in control.
-
-* `VERSION Int`  
-  Supported protocol version. Current version is 1. Must be sent first
-  thing at startup, as until it sees this git-annex does not know how to
-  talk with the special remote program!
-* `PROGRESS Int`  
-  Indicates the current progress of the transfer (in bytes). May be repeated
-  any number of times during the transfer process, but it's wasteful to
-  update the progress until at least another 1% of the file has been sent.
-  This is highly recommended for STORE. (It is optional but good for RETRIEVE.)  
-  (git-annex does not send a reply to this message.)
-* `DIRHASH Key`  
-  Gets a two level hash associated with a Key. Something like "aB/Cd".
-  This is always the same for any given Key, so can be used for eg,
-  creating hash directory structures to store Keys in. This is the same
-  directory hash that git-annex uses inside `.git/annex/objects/`  
-  (git-annex replies with VALUE followed by the value.)
-* `DIRHASH-LOWER Key`  
-  Gets a two level hash associated with a Key, using only lower-case.
-  Something like "abc/def".
-  This is always the same for any given Key, so can be used for eg,
-  creating hash directory structures to store Keys in. This is the same
-  directory hash that is used by eg, the directory special remote.  
-  (git-annex replies with VALUE followed by the value.)
-* `SETCONFIG Setting Value`  
-  Sets one of the special remote's configuration settings.  
-  Normally this is sent during INITREMOTE, which allows these settings
-  to be stored in the git-annex branch, so will be available if the same
-  special remote is used elsewhere. (If sent after INITREMOTE, the changed
-  configuration will only be available while the remote is running.)
-* `GETCONFIG Setting`  
-  Gets one of the special remote's configuration settings, which can have
-  been passed by the user when running `git annex initremote`, or
-  can have been set by a previous SETCONFIG. Can be run at any time.  
-  (git-annex replies with VALUE followed by the value. If the setting is
-  not set, the value will be empty.)
-* `SETCREDS Setting User Password`  
-  When some form of user and password is needed to access a special remote,
-  this can be used to securely store them for later use.
-  (Like SETCONFIG, this is normally sent only during INITREMOTE.)  
-  The Setting indicates which value in a remote's configuration can be
-  used to store the creds.  
-  Note that creds are normally only stored in the remote's configuration
-  when it's surely safe to do so; when gpg encryption is used, in which
-  case the creds will be encrypted using it. If creds are not stored in
-  the configuration, they'll only be stored in a local file.  
-  (embedcreds can be set to yes by the user or by SETCONFIG to force
-   the creds to be stored in the remote's configuration).
-* `GETCREDS Setting`  
-  Gets any creds that were previously stored in the remote's configuration
-  or a file.
-  (git-annex replies with "CREDS User Password". If no creds are found,
-  User and Password are both empty.)
-* `GETUUID`  
-  Queries for the UUID of the special remote being used.  
-  (git-annex replies with VALUE followed by the UUID.)
-* `GETGITDIR`  
-  Queries for the path to the git directory of the repository that
-  is using the external special remote.
-  (git-annex replies with VALUE followed by the path.)
-* `SETWANTED PreferredContentExpression`  
-  Can be used to set the preferred content of a repository. Normally
-  this is not configured by a special remote, but it may make sense
-  in some situations to hint at the kind of content that should be stored
-  in the special remote. Note that if a unparsable expression is set,
-  git-annex will ignore it.
-* `GETWANTED`  
-  Gets the current preferred content setting of the repository.
-  (git-annex replies with VALUE followed by the preferred content
-  expression.)
-* `SETSTATE Key Value`  
-  Can be used to store some form of state for a Key. The state stored
-  can be anything this remote needs to store, in any format.
-  It is stored in the git-annex branch. Note that this means that if
-  multiple repositories are using the same special remote, and store
-  different state, whichever one stored the state last will win. Also,
-  it's best to avoid storing much state, since this will bloat the
-  git-annex branch. Most remotes will not need to store any state.
-* `GETSTATE Key`  
-  Gets any state that has been stored for the key.  
-  (git-annex replies with VALUE followed by the state.)
-* `SETURLPRESENT Key Url`  
-  Records an URL where the Key can be downloaded from.  
-  Note that this does not make git-annex think that the url is present on
-  the web special remote.  
-  Keep in mind that this stores the url in the git-annex branch. This can
-  result in bloat to the branch if the url is large and/or does not delta
-  pack well with other information (such as the names of keys) already
-  stored in the branch.
-* `SETURLMISSING Key Url`  
-  Records that the key can no longer be downloaded from the specified
-  URL.
-* `SETURIPRESENT Key Uri`  
-  Records an URI where the Key can be downloaded from.  
-  For example, "ipfs:ADDRESS" is used for the ipfs special remote;
-  its CLAIMURL handler checks for such URIS and claims them.
-* `SETURIMISSING Key Uri`  
-  Records that the key can no longer be downloaded from the specified
-  URI.
-* `GETURLS Key Prefix`  
-  Gets the recorded urls where a Key can be downloaded from.
-  Only urls that start with the Prefix will be returned. The Prefix
-  may be empty to get all urls.
-  (git-annex replies one or more times with VALUE for each url.
-  The final VALUE has an empty value, indicating the end of the url list.)
-* `DEBUG message`
-  Tells git-annex to display the message if --debug is enabled.
-
-## general messages
-
-These messages can be sent at any time by either git-annex or the special
-remote.
-
-* `ERROR ErrorMsg`  
-  Generic error. Can be sent at any time if things get too messed up
-  to continue. When possible, use a more specific reply from the list above.  
-  The special remote program should exit after sending this, as
-  git-annex will not talk to it any further. If the program receives
-  an ERROR from git-annex, it can exit with its own ERROR.
-
-## long running network connections
-
-Since an external special remote is started only when git-annex needs to
-access the remote, and then left running, it's ok to open a network
-connection in the PREPARE stage, and continue to use that network
-connection as requests are made.
-
-If you're unable to open a network connection, or the connection closes,
-perhaps because the network is down, it's ok to fail to perform any
-requests. Or you can try to reconnect when a new request is made.
-
-Note that the external special remote program may be left running for
-quite a long time, especially when the git-annex assistant is using it.
-The assistant will detect when the system connects to a network, and will
-start a new process the next time it needs to use a remote.
-
-## readonly mode
-
-Some storage services allow downloading the content of a file using a
-regular http connection, with no authentication. An external special remote
-for such a storage service can support a readonly mode of operation.
-
-It works like this:
-
-* When a key's content is stored on the remote, use SETURLPRESENT to
-  tell git-annex the public url from which it can be downloaded.
-* When a key's content is removed from the remote, use SETURLMISSING.
-* Document that this external special remote can be used in readonly mode.
-
-  The user doesn't even need to install your external special remote
-  program to use such a remote! All they need to do is run:
-  `git annex enableremote $remotename readonly=true`
-
-* The readonly=true parameter makes git-annex download content from the
-  urls recorded earlier by SETURLPRESENT.
-
-## TODO
-
-* When storing encrypted files stream the file up/down the pipe, rather
-  than using a temp file. Will probably involve less space and disk IO, 
-  and makes the progress display better, since the encryption can happen
-  concurrently with the transfer. Also, no need to use PROGRESS in this
-  scenario, since git-annex can see how much data it has sent/received from
-  the remote. However, \n and probably \0 need to be escaped somehow in the
-  file data, which adds complication.
-* uuid discovery during INITREMOTE.
-* Hook into webapp. Needs a way to provide some kind of prompt to the user
-  in the webapp, etc.
diff --git a/doc/design/gcrypt.mdwn b/doc/design/gcrypt.mdwn
deleted file mode 100644
--- a/doc/design/gcrypt.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-To integrate with git-remote-gcrypt, a key thing is to have a way to map
-from the gcrypt-id of an encrypted repository to a git-annex repository
-uuid.
-
-To do this, we'll make a v5 UUID, feeding in the gcrypt-id.
-The namespace used is itself a v5 UUID, generated using the URL
-namespace and the URL of this page at the time this scheme was
-developed: "http://git-annex.branchable.com/design/gcrypt/"
diff --git a/doc/design/git-remote-daemon.mdwn b/doc/design/git-remote-daemon.mdwn
deleted file mode 100644
--- a/doc/design/git-remote-daemon.mdwn
+++ /dev/null
@@ -1,173 +0,0 @@
-# goals
-
-* be configured like a regular git remote, with an unusual url
-  or other configuration
-* receive notifications when a remote has received new commits,
-  and take some action
-* optionally, do receive-pack and send-pack to a remote that
-  is only accessible over an arbitrary network transport
-  (like assistant does with XMPP)
-* optionally, send/receive git-annex objects to remote
-  over an arbitrary network transport
-
-# difficulties
-
-* authentication & configuration
-* multiple nodes may be accessible over a single network transport,
-  with it desirable to sync with any/all of them. For example, with
-  XMPP, there can be multiple friends synced with. This means that
-  one git remote can map to multiple remote nodes. Specific to git-annex,
-  this means that a set of UUIDs known to be associated with the remote
-  needs to be maintained, while currently each remote can only have one
-  annex-uuid in .git/config.
-
-# payoffs
-
-* support [[assistant/telehash]]!
-* Allow running against a normal ssh git remote. This would run
-  git-annex-shell on the remote, watching for changes, and so be able to
-  notify when a commit was pushed to the remote repo. This would let the
-  assistant immediately notice and pull. So the assistant would be fully
-  usable with a single ssh remote and no other configuration!
-  **do this first**
-* clean up existing XMPP support, make it not a special case, and not
-  tightly tied to the assistant
-* git-remote-daemon could be used independantly of git-annex,
-  in any git repository.
-
-# design
-
-Let git-remote-daemon be the name. Or for git-annex,
-`git annex remotedaemon`.
-
-It runs in one of two ways:
-
-1. Forked to background, using a named pipe for the control protocol.
-2. With --foreground, the control protocol goes over stdio.
-
-Either way, behavior is the same:
-
-* Get a list of remotes to act on by looking at .git/config
-* Automatically notices when a remote has changes to branches
-  matching remote.$name.fetch, and pulls them down to the appropriate
-  location.
-* When the control protocol informs it about a new ref that's available,
-  it offers the ref to any interested remotes.
-
-# control protocol
-
-This is an asynchronous protocol. Ie, either side can send any message
-at any time, and the other side does not send a reply.
-
-It is line based and intended to be low volume and not used for large data.
-
-TODO: Expand with commands for sending/receiving git-annex objects, and
-progress during transfer.
-
-TODO: Will probably need to add something for whatever pairing is done by
-the webapp.
-
-## emitted messages
-
-* `CONNECTED uri`
-
-  Sent when a connection has been made with a remote.
-
-* `DISCONNECTED uri`
-
-  Sent when connection with a remote has been lost.
-
-* `SYNCING uri`
-
-  Indicates that a pull or a push with a remote is in progress.
-  Always followed by DONESYNCING.
-
-* `DONESYNCING uri 1|0`
-
-  Indicates that syncing with a remote is done, and either succeeded
-  (1) or failed (0).
-
-* `WARNING uri string`
-
-  A message to display to the user about a remote.
-
-## consumed messages
-
-* `PAUSE`
-
-  The user has requested a pause.  
-  git-remote-daemon should close connections and idle.
-
-* `LOSTNET`
-
-  The network connection has been lost.  
-  git-remote-daemon should close connections and idle.
-
-* `RESUME`
-
-  Undoes PAUSE or LOSTNET.  
-  Start back up network connections.
-
-* `CHANGED ref ...`
-
-  Indicates that a ref is new or has changed. These can be offered to peers,
-  and peers that are interested in them can pull the content.
-
-* `RELOAD`
-
-  Indicates that configs have changed. Daemon should reload .git/config
-  and/or restart.
-
-  Possible config changes include adding a new remote, removing a remote,
-  or setting `remote.<name>.annex-sync` to configure whether to sync with a
-  particular remote.
-
-* `STOP`
-
-  Shut down git-remote-daemon
-
-  (When using stdio, it also should shutdown when it reaches EOF on 
-  stdin.)
-
-# encryption & authentication
-
-For simplicity, the network transports have to do their own end-to-end
-encryption. Encryption is not part of this design.
-
-(XMPP does not do end-to-end encryption, but might be supported
-transitionally.)
-
-Ditto for authentication that we're talking to who we intend to talk to.
-Any public key data etc used for authentication is part of the remote's
-configuration (or hidden away in a secure chmodded file, if necessary).
-This design does not concern itself with authenticating the remote node,
-it just takes the auth token and uses it.
-
-For example, in telehash, each node has its own keypair, which is used
-or authentication and encryption, and is all that's needed to route
-messages to that node.
-
-# network level protocol
-
-How do peers communicate with one another over the network?
-
-This seems to need to be network-layer dependant. Telehash will need
-one design, and git-annex-shell on a central ssh server has a very different
-(and much simpler) design.
-
-## ssh
-
-`git-annex-shell notifychanges` is run, and speaks a simple protocol
-over stdio to inform when refs on the remote have changed.
-
-No pushing is done for CHANGED, since git handles ssh natively.
-
-This is implemented and seems to work well.
-
-## telehash 
-
-TODO
-
-## xmpp
-
-Reuse [[assistant/xmpp]]
diff --git a/doc/design/iabackup.mdwn b/doc/design/iabackup.mdwn
deleted file mode 100644
--- a/doc/design/iabackup.mdwn
+++ /dev/null
@@ -1,242 +0,0 @@
-This is a fairly detailed design proposal for using git-annex to build
-<http://archiveteam.org/index.php?title=INTERNETARCHIVE.BAK>
-
-[[!toc ]]
-
-## end-user view
-
-What the end user sees is a directory, with a .git subdirectory,
-and 100 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.
-(It will use around 100 mb when empty.)
-
-## sharding to scale
-
-The IA contains some 14 million Items. Inside these Items are 271 million
-files. Around 177 million of those are available for download.
-
-git repositories do not scale well in the 1-10 million file 
-range, and very badly above that. Storing all that in a git repository
-would strain git's scalability badly.
-
-Solution: Create multiple git repositories, and split the files
-amoung them.
-
-* If each git repository holds 100 thousand files, that is 1770
-  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 1
-  terabyte in size, although this will vary considerably.
-
-* Clients are assigned one or more shards, and clone those repositories.
-
-* A client decides which files in its shard to back up, and does
-  so by running "git annex get" on them. This downloads the files
-  over http from the IA.
-
-* A client will typically not back up its entire shard, but maybe
-  only 500 gb or less of it. Also, we want redundancy (LOCKSS)
-  -- say at least 3 copies of each file. So, a given shard will probably
-  have between 3 and 9 clients handling it.
-
-* Add new shards as the IA continues to grow.
-
-Problem: Need to get the checksums for the files, for git-annex
-to use. The census published by the IA only has md5sums in it. While
-git-annex can use md5sums, this allows bad actors to find md5 collisions
-with files from the archive, and upload bogus files that checksum ok
-when restoring.
-
-## creating a shard
-
-This is a simple matter of making a git repository and telling git-annex
-the filenames and urls that belong in it.
-
-A script can do this using the `git annex fromkey` and `git annex
-registerurl` commands. Time to make such a repository with 100k files
-is in the 10 minute range (faster on SSD or randisk).
-
-## 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 shard's git repository (or all the shards).
-3. Client clones its assigned shard git repository,
-   runs `git annex init reinit $UUID`.
-
-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 files to be added.
-
-Note that we may want to enable direct mode in the client's clone, 
-because it lets the user easily delete files to free up space.
-OTOH, direct mode is slow and less safe, so we might prefer to use indirect
-mode, and then the client would need to use `git annex drop` if they
-decided to remove content.
-
-## distributing files
-
-1. Client runs `git annex sync --content`, which downloads as many
-   files from the IA as will fit in their disk's free space
-   (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 file 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 file.
-
-## bad actors
-
-Clients can misbehave in probably many ways. The best defense for many
-misbehaviors is to distribute files 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. Rough estimate is that
-such a hook would be a couple hundred lines of code.
-
-## 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.
-
-(This is now implemented.)
-
-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 files that we'll assume the IA has lost in some disaster.
-2. Look up the shard the file belongs to.
-3. Get the git-annex key of the file, 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 file anymore. The client will then
-   send the file back to the origin repo.
-5. To guard against bad actors, that restored file 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`)
-
-## shard servers
-
-A server at the IA (or otherwise with a fast pipe) is needed to serve
-the shards. One server can probably manage them all.
-Let's consider what this server needs to have on it:
-
-* git and git-annex
-* ssh server
-* The git repository for each shard. A few hundred mb per shard.
-* The git update hook to filter out bad pushes.
-* 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
-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 files around (within the git repository
-directory), modify files, view them, 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 files 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.
-
-Or, rather than doing a lucky dip and getting one or a couple shards,
-a user could clone em all, and pick just which files to get.
-
-The contents of files sometimes changes.
-This can be reflected by updating the file in the git repository.
-Clients will then download the new version of the file. (They will also
-tend to retain the old version, although this can be dealt with by using
-`git annex unused`).
-
-Items sometimes go dark; this could be reflected by deleting the Item's
-files 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
-files are spread out amoung the available clients.
-
-## other potential gotchas
-
-If any single file 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 file into smaller chunks. 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
-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 file 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 file, and presumably
-download some other file. It would be good to avoid this problem,
-perhaps by having a new client initially download a random set of the
-files in their shard that don't yet have enough copies.
-
-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. I have run some test and this fsck overhead delta compresses
-well. With a 10 thousand file repo and 100 clients all updating the
-location log, the monthly fsck only added 1 mb to the repository size
-(after `git gc --aggressive`). Should scale linearly with number of files
-in repo. Note that `git annex forget` could be used to forget old
-historical data if the repo grew too large from fsck updates.
diff --git a/doc/design/iabackup/comment_1_d33c0910973bc37ce81bf434017e11fd._comment b/doc/design/iabackup/comment_1_d33c0910973bc37ce81bf434017e11fd._comment
deleted file mode 100644
--- a/doc/design/iabackup/comment_1_d33c0910973bc37ce81bf434017e11fd._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="great to see such a large scale effort ongoing"
- date="2015-03-06T04:47:30Z"
- content="""
-and I would still maintain my view that removing intermediate directory withing .git/annex/objects whose  current roles is simply to provide read-only protection might half the burden on the underlying file system, either annex repo(s) are multitude or a single one [1]. lean view [2] could also be of good use as well[2].  Similar exercises with simulated annex'es with >5M files also \"helped\" to identify problems with ZOL (ZFS on Linux) caching suggesting that even mere handling of such vast arrays of tiny files (as dead symlinks) might give filesystems a good test, so the leaner impact would be -- the better.
-
-[1] e.g. https://github.com/datalad/datalad/issues/32#issuecomment-70523036
-[2] https://github.com/datalad/datalad/issues/25
-"""]]
diff --git a/doc/design/iabackup/comment_2_c0a59549409faa355a461e85a1c3f908._comment b/doc/design/iabackup/comment_2_c0a59549409faa355a461e85a1c3f908._comment
deleted file mode 100644
--- a/doc/design/iabackup/comment_2_c0a59549409faa355a461e85a1c3f908._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
- nickname="Jimmy"
- subject="comment 2"
- date="2015-03-09T16:48:18Z"
- content="""
-I've tried throwing about ~16 million files at git/git-annex in the past where some files were 1-2kb in size (around 30% of them). git/git-annex doesn't work well at that scale.
-"""]]
diff --git a/doc/design/iabackup/comment_3_560d3f65d543c3af9722ed7e9a11e920._comment b/doc/design/iabackup/comment_3_560d3f65d543c3af9722ed7e9a11e920._comment
deleted file mode 100644
--- a/doc/design/iabackup/comment_3_560d3f65d543c3af9722ed7e9a11e920._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmsy_GIefGlGGD_XJp_R6EsWIRUC4ev9XU"
- nickname="David"
- subject="This is a BIG task"
- date="2015-03-13T20:48:56Z"
- content="""
-If I understand it correctly, 20PB at 2400 shards of 8TB each with 3 copies is 24TB/shard at 1TB/client is 2400*24 = ~60K clients assuming no churn. So it would probably need ~100K clients to cover the churn and have a good chance that each shard had 3 copies at all times. That's 1/3 the size of BOINC's active population.
-
-It would take time to scale to that population. And it would take time to get three copies out of the Archive. During that time, the Archive is growing. The back of my envelope says that doing this in 2.5yrs roughly doubles the Archive's outbound bandwidth if you average it across the 2.5 years. But the population would grow slowly to start with, then faster, so that the bandwidth impact would be back-loaded. And at the end of the 2.5 years, you would need a lot more than the 100K users.
-
-A design that used erasure coding or entanglement would reduce the storage and bandwidth demand considerably while providing adequate reliability.
-
-"""]]
diff --git a/doc/design/iabackup/comment_4_465c0966c96a57d189f678d4fa724aa0._comment b/doc/design/iabackup/comment_4_465c0966c96a57d189f678d4fa724aa0._comment
deleted file mode 100644
--- a/doc/design/iabackup/comment_4_465c0966c96a57d189f678d4fa724aa0._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/idrn495us85k6mwfdMUolYIsyp4-#cf755"
- subject="It's not so bad .. only about 10PB"
- date="2015-04-30T01:19:38Z"
- content="""
-The good news is that web-archive (.ARC) items are not publicly browsable, and that's about half of the archive's content, so you're only looking at about 10PB to backup.
-
-The bad news is that unless you can work something out with archive.org (which seems unlikely; web-archive items are restricted to protect them legally), or use the old waybackup interface (which I don't think works anymore), or use the wayback machine (which last I heard only supported a few hundred connections per second) you'll only be able to back up half their data.
-
-Still, non-web items seem like a nice place to start.
-
-
-"""]]
diff --git a/doc/design/iabackup/comment_5_7e4d1db9c69c63e79ca13db2ad87c384._comment b/doc/design/iabackup/comment_5_7e4d1db9c69c63e79ca13db2ad87c384._comment
deleted file mode 100644
--- a/doc/design/iabackup/comment_5_7e4d1db9c69c63e79ca13db2ad87c384._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="db48x"
- subject="14 of 21PB, actually"
- date="2015-04-30T02:58:05Z"
- content="""
-IA helpfully did a quick count for us: https://archive.org/details/ia-bak-census_20150304
-"""]]
diff --git a/doc/design/metadata.mdwn b/doc/design/metadata.mdwn
deleted file mode 100644
--- a/doc/design/metadata.mdwn
+++ /dev/null
@@ -1,182 +0,0 @@
-[[!toc]]
-
-# metadata
-
-Attach an arbitrary set of metadata to a key. This consists of any number
-of fields. Each field has an unordered set of values. The special field
-"tag" has as its values any tags that are set for the key.
-
-Store in git-annex branch, next to location log files.
-
-Storage needs to support union merging, including removing an old value
-of a field, and adding a new value of a field.
-
-# filtered branches
-
-See [[tips/metadata_driven_views]]
-
-The reason to use specially named filtered branches is because it makes
-self-documenting how the repository is currently filtered.
-
-## unmatched files in filtered branches
-
-TODO Files not matching the view should be able to be included in
-the filtered branch, in a special location, an "other" directory.
-
-For example, it could make a "other" directory containing files
-without a tag when viewing by tag.
-
-It might be nice, if in a two level view, for the other directories
-to nest. For example, `other/2014/file`. However, that leads to a
-performance problem: When adding a level to a view, it has to look at each
-file in the "other" directory and generate a view for it too. With a lot
-of files, that'd be slow.
-
-Instead, why not replicate the parent branch's directory structure inside
-the "other" directory? Then the directory tree only has to be constructed
-once, and can be left alone when refining a view.
-
-## operations while on filtered branch
-
-* If files are removed and git commit called, git-annex should remove the
-  relevant metadata from the files. **done**  
-  (Currently, only metadata used for visible subdirs is added and removed
-  this way.)
-  (Also, this is not usable in direct mode because deleting the
-  file.. actually deletes it...)
-* If a file is moved into a new subdirectory while in a view branch,
-  a tag is added with the subdir name. This allows on the fly tagging.
-  **done**
-* `git annex sync` should avoid pushing out the view branch, but
-  it should check if there are changes to the metadata pulled in, and update
-  the branch to reflect them.
-
-## automatically added metadata
-
-When `annex.genmetadata` is set, git annex add automatically attaches
-some metadata to a file. Currently year and month fields, from its mtime.
-
-There's also a post-commit-annex hook script.
-
-## directory hierarchy metadata
-
-From the original filename used in the master branch, when
-constructing a view, generate fields. For example foo/bar/baz.mp3
-would get /=foo, foo/=bar, foo/bar/=baz, and .=mp3.
-
-Note that dir/=subdir allows a view to use `dir/=*` and only
-match one level of subdirs with the glob. So is better than dir=foo/bar
-as the metadata. (Alternatively, could do special glob matching.)
-
-This allows using whatever directory hierarchy exists to inform the view,
-without locking the view into using it. 
-
-Complication: When refining a view, it only looks at the filenames in
-the view, so it has to map from
-those filenames to derive the same metadata, unless there is persistent
-storage. Luckily, the filenames used in the views currently include the
-subdirs.
-
-# other uses for metadata
-
-Uses are not limited to view branches.
-
-`git annex checkoutmeta year=2014 talk` in a subdir of master could create the
-same tree of files filter would. The user can then commit that if desired.
-Or, they could run additional commands like `git annex fadd` to refine the
-tree of files in the subdir.
-
-Metadata can be used for configuring numcopies. One way would be a
-numcopies=n value attached to a file. But perhaps better would be to make
-the numcopies.log allow configuring numcopies based on which files have
-other metadata.
-
-Other programs could query git-annex for the metadata of files in the work
-tree, and do whatever it wants with it.
-
-# filenames
-
-The hard part of this is actually getting a useful filename to put in the
-view branch, since git-annex only has a key which the user will not
-want to see.
-
-* Could use filename metadata for the key, recorded by git-annex add (which
-  may not correspond to filenames being used in regular git branches like
-  master for the key).
-* Could use the Keys database's associated files. Currently only works for v6
-  unlocked files, and not for locked files.
-* Current approach: Have a reference branch (eg master) and walk it to
-  find filenames and
-  keys. Fine as long as it can be done efficiently. Also allows including
-  the subdirectory a file is in, potentially. cwebber points out that this
-  is essentially a form of tracking branch. Which implies it will need to
-  be updatable when the reference branch changes. Should be doable via
-  diff-tree.
-
-Note that we have to take care to avoid generating conflicting filenames.
-The current approach is to embed the full directory structure inside the
-filename in the view branch.
-
-## union merge properties
-
-While the storage could just list all the current values of a field on a
-line with a timestamp, that's not good enough. Two disconnected
-repositories can make changes to the values of a field (setting and
-unsetting tags for example) and when this is union merged back together,
-the changes need to be able to be replayed in order to determine which
-values we end up with. 
-
-To make that work, we log not only when a field is set to a value, 
-but when a value is unset as well.
-
-For example, here two different remotes added tags, and then later
-a tag was removed:
-
-	1287290776.765152s tag +foo +bar
-	1287290991.152124s tag +baz
-	1291237510.141453s tag -bar
-
-# efficient metadata lookup
-
-Looking up metadata for view generation so far requires traversing all keys
-in the git-annex branch. This is slow. A fast cache is needed.
-
-TODO
-
-# unlocked file issues
-
-View branches can't be used in direct mode repositories.
-
-But, view branches do work with unlocked files in v6 repositories.
-The resulting view branch has all its files locked, although you
-can unlock them again after entering the branch.
-
-# gotchas
-
-* Checking out a view branch can remove the current subdir. May be worth
-  detecting when this happens and help the user.
-  **done**
-
-* Git has a complex set of rules for what is legal in a ref name.
-  View branch names will need to filter out any illegal stuff. **done**
-
-* Metadata should be copied to the new key when adding a modified version
-  of a file. **done**
-
-* Filesystems that are not case sensitive (including case preserving OSX)
-  will cause problems if view branches try to use different cases for 
-  2 directories representing a metadata field.
-  
-  Solution might be to compare fields names case-insensitively, and
-  pick one representation consistently. **done**
-
-* Assistant needs to know about views, so it can update metadata when
-  files are moved around inside them. TODO
-
-* What happens if git annex add or the assistant add a new file while on a
-  view? If the file is not also added to the master branch, it will be lost
-  when exiting the view. TODO
-
-* The filename mangling can result in a filename in a view
-  that is too long for its containing filesystem. Should detect and do
-  something reasonable to avoid. TODO
diff --git a/doc/design/metadata/comment_10_9bc2825b18ce29d2c9b2f085b95aa68c._comment b/doc/design/metadata/comment_10_9bc2825b18ce29d2c9b2f085b95aa68c._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_10_9bc2825b18ce29d2c9b2f085b95aa68c._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlZF5AC-FSxwkiay5ZgEYZwUzN69Wa6PTE"
- nickname="Sunke"
- subject="filename from metadata?"
- date="2015-04-06T18:00:25Z"
- content="""
-Hi everbody,
-is it possible to use a metadata field for the filename in a
-metadata driven view?
-
-I am thinking of the following use case:
-
-git annex metadata --set artist=Led\ Zeppelin --set album=Led\ Zeppelin\ IV --set title=04\ Stairway\ to\ heaven  some/weird/filename.mp3
-git annex view --filename-from title artist=* album=*
-
-result:
-Led Zeppelin/Led Zeppelin IV/04 Stairway to heaven.mp3
-"""]]
diff --git a/doc/design/metadata/comment_11_402d7d3e8e7f2df57eb6685134226642._comment b/doc/design/metadata/comment_11_402d7d3e8e7f2df57eb6685134226642._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_11_402d7d3e8e7f2df57eb6685134226642._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 11"""
- date="2015-04-09T18:31:34Z"
- content="""
-@Sunke, the reason that views make up their own filenames is to
-avoid the problem of having 2 files in a view that have the same
-name.
-
-In your example, that could happen if you used --set title
-with the same title for 2 separate files.
-
-So, I don't think this can be supported reasonably.
-"""]]
diff --git a/doc/design/metadata/comment_1_22ed80bd8eabaa836e9dfc2432531f04._comment b/doc/design/metadata/comment_1_22ed80bd8eabaa836e9dfc2432531f04._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_1_22ed80bd8eabaa836e9dfc2432531f04._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm3vKzS4eOWYpKMoYXqMIjNsIg_nYF-loU"
- nickname="Konubinix"
- subject="Already existing metadata implementation "
- date="2014-02-22T21:45:25Z"
- content="""
-Hi,
-
-I love the idea behing storing metadata.
-
-I suggest to exchange ideas (and maybe code) with projects already implementing metadata systems.
-
-I have tried several implementations and particularly noticed tmsu (http://tmsu.org/). This tool stores tags into a sqlite database and uses also a SHA-256 fingerprint of the file to be aware of file moves. It provides a fuse view of the tags with the ability to change tags by moving files (like in the git annex metadata view).
-
-Paul Ruane is particularly responsive on the mailing list and he already supports git annexed files (with SHAE-256 fingerprint) (see the end of the thread https://groups.google.com/forum/#!topic/tmsu/A5EGpnCcJ2w).
-
-Even if you cannot reuse the project, they are interresting ideas that might be worth looking at like the implications of tags: a file tagged \"film\" being automatically tagged \"video\".
-
-Tagsistant (http://www.tagsistant.net/) may also be a good source of inspirations. I just don't like the fact that it uses a backstore of tagged files.
-
-Thanks for reading.
-"""]]
diff --git a/doc/design/metadata/comment_2_03ae28acedbe1fa45c366b30b58fcf48._comment b/doc/design/metadata/comment_2_03ae28acedbe1fa45c366b30b58fcf48._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_2_03ae28acedbe1fa45c366b30b58fcf48._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
- nickname="Jimmy"
- subject="comment 2"
- date="2014-02-25T09:51:17Z"
- content="""
-Some additional ideas for metadata...
-
-Instead of having a simplistic scheme like 'field=value' it might be advantageous to consider a scheme like 'attribute=XXX, value=YYY, unit=ZZZ' that way you could do intesting things with the metadata like adding counters to things, and allow for doing interesting queries like give me all 'things' tagged with a unit of \"audio_file\", this assumes one had trawled through an entire annex and then tagged all files based on type with the unix file tool or something like that.
-
-The above idea is already in use in irods and its a really nice and powerful way to let users add meta-data and to build up more interesting use cases and tools.
-
-btw, I plan on taking a look at seeing if I can map some of the meta that we have in work into this new git-annex feature to see how well/bad it works. Either way this feature looks cool! +1!!!
-"""]]
diff --git a/doc/design/metadata/comment_3_ee850df7d3fa4c56194f13a6e3890a30._comment b/doc/design/metadata/comment_3_ee850df7d3fa4c56194f13a6e3890a30._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_3_ee850df7d3fa4c56194f13a6e3890a30._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
- nickname="Jimmy"
- subject="comment 3"
- date="2014-02-25T09:57:09Z"
- content="""
-actually in your mp3 example you could have ....
-
-ATTRIBUTE=sample_rate, VALUE=22100, UNIT=Hertz
-
-another example use case is to always be consistent with the AVU order then you could stick in ntriples from RDF to do other cool things by looking up various linked data sources -- see http://www.w3.org/2001/sw/RDFCore/ntriples/ and http://www.freebase.com/, actually this would be quite cool if git-annex examined the mp3's id3 tag, the created an ntriple styled entry can be automatically parsed with the web-based annex gui and automatically pull in additional meta-data from the likes of freebase. I guess the list of ideas can just only get bigger with this potential metadata capability.
-"""]]
diff --git a/doc/design/metadata/comment_4_c32ade1524487e5fdc6f83b2db39f04c._comment b/doc/design/metadata/comment_4_c32ade1524487e5fdc6f83b2db39f04c._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_4_c32ade1524487e5fdc6f83b2db39f04c._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="bremner"
- ip="198.164.160.48"
- subject="convenient way to query metadata?"
- date="2014-03-15T20:58:28Z"
- content="""
-I'd like to be able to do something like \"git annex metadata -q fieldname\" and have that output the value(s) of fieldname.  I see I could parse the json output but that isn't too convenient in a shell script. Or have I missed something that already exists?
-"""]]
diff --git a/doc/design/metadata/comment_5_0ac3132cd7a84f0e170fbe3a6f235fe7._comment b/doc/design/metadata/comment_5_0ac3132cd7a84f0e170fbe3a6f235fe7._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_5_0ac3132cd7a84f0e170fbe3a6f235fe7._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.154"
- subject="comment 5"
- date="2014-03-15T21:30:52Z"
- content="""
-@bremner, you must be up to something interesting.. Added metadata --get for you.
-"""]]
diff --git a/doc/design/metadata/comment_6_fa51ae544b193122334dbae7960ab3d9._comment b/doc/design/metadata/comment_6_fa51ae544b193122334dbae7960ab3d9._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_6_fa51ae544b193122334dbae7960ab3d9._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="tdussa"
- ip="217.84.74.69"
- subject="Why not automatically add the whole date?"
- date="2014-04-30T20:41:20Z"
- content="""
-Hi,
-
-apologies if I am missing something, but from what I understand, git-annex will automatically add the year and the month from a file's mtime to its metadata if instructed to do so.
-
-So... What about the day (or the time, for that matter?)?  What is the reasoning behind the decision not to add those bits automatically?  And, is there a way to get git-annex to add those bits of information automatically as well (besides the obvious way of creating a pre-commit-hook script to that effect)?
-
-THX & Cheers,
-Toby.
-"""]]
diff --git a/doc/design/metadata/comment_7_04cd255a516c8520a7bc1a8fad253533._comment b/doc/design/metadata/comment_7_04cd255a516c8520a7bc1a8fad253533._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_7_04cd255a516c8520a7bc1a8fad253533._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlM_DRhi_5pJrTA0HbApHR25iAgy-NBXTY"
- nickname="Tor Arne"
- subject="comment 7"
- date="2014-10-01T22:43:40Z"
- content="""
-I have the same question as Toby, is there a particular reason the whole timestamp is not stored?
-"""]]
diff --git a/doc/design/metadata/comment_8_0a7e55e7626f72f63966fa1e1d2cf100._comment b/doc/design/metadata/comment_8_0a7e55e7626f72f63966fa1e1d2cf100._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_8_0a7e55e7626f72f63966fa1e1d2cf100._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlM_DRhi_5pJrTA0HbApHR25iAgy-NBXTY"
- nickname="Tor Arne"
- subject="Can tags/metadata be used for preferred content?"
- date="2014-10-01T22:45:36Z"
- content="""
-Would love to be able to \"tag\" something as archived instead of moving it into a special folder. Coupled with a FinderSync extension on OS X Yosemite for right-click menu. This would allow me to also \"view\" the archive and bring things out of there by \"untagging\" it, if I understand the feature correctly?
-"""]]
diff --git a/doc/design/metadata/comment_9_f0bb62c885a925e0da5ae8ce3c5e9003._comment b/doc/design/metadata/comment_9_f0bb62c885a925e0da5ae8ce3c5e9003._comment
deleted file mode 100644
--- a/doc/design/metadata/comment_9_f0bb62c885a925e0da5ae8ce3c5e9003._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlM_DRhi_5pJrTA0HbApHR25iAgy-NBXTY"
- nickname="Tor Arne"
- subject="comment 9"
- date="2014-10-01T23:35:39Z"
- content="""
-Sorry for the noise, I see that tags _can_ be used for preferred content, excellent!
-
-But it seems metadata is tied to a key, not to a specific file/path. If I have 10 different files all with the same content (for some reason, say a simple txt file, Gemspec, or something), and I want to tag one of them as important, it doesn't mean they all are :o
-"""]]
diff --git a/doc/design/new_repo_versions.mdwn b/doc/design/new_repo_versions.mdwn
deleted file mode 100644
--- a/doc/design/new_repo_versions.mdwn
+++ /dev/null
@@ -1,234 +0,0 @@
-This page's purpose is to collect and explore plans for a future
-annex.version.
-
-There are two major possible changes that could go in a new repo
-version that would require a hard migration of git-annex repositories:
-
-1. Changing .git/annex/objects/ paths, as appear in the git-annex symlinks.
-
-2. Changing the layout of the git-annex branch in a substantial way.
-
-## object path changes
-
-Any change in this area requires the user make changes to their master
-branch, any other active branches. Old un-converted tags and other
-historical trees in git would also be broken. This is a pretty bad user
-experience. (And it bloats history with a commit that rewrites everything
-too.
-
-For this reason, any changes in this area have been avoided, going all the
-way back to v2 (2011). 
-
-> git-annex had approximately 3 users at the
-> time of that migration, and as one of them, I can say it was a total PITA.
---[[Joey]] 
-
-So, there would need to be significant payoffs to justify this change.
-
-Note that changing the hash directories might also change where objects are
-stored in special remotes. Because repos can be offline or expensive to
-migrate (or both -- Glacier!) any such changes need to keep looking in the
-old locations for backwards compatability.
-
-Possible reasons to make changes:
-
-* It's annoyingly inconsistent that git-annex uses a different hash
-  directory layout for non-bare repository (on a non-crippled filesystem)
-  than is used for bare repositories and some special remotes.
-
-  Users occasionally stumble over this difference when messing with
-  internals. The code is somewhat complicated by it. In some cases,
-  git-annex checks both locations (eg, a bare repo defaults to xxx/yyy
-  but really old ones might use xX/yY for some keys).
-
-  The mixed case hash directories have caused trouble on case-insensative
-  filesystems, although that has mostly been papered over to avoid
-  problems. One remaining problem users can stuble on occurs
-  when [[moving a repository from OSX to Linux|bugs/OSX_case_insensitive_filesystem]].
-
-* The hash directories, and also the per-key directories
-  can slow down using a repository on a disk (both SSD and spinning).
-  
-  <https://github.com/datalad/datalad/issues/32>
-
-  Initial benchmarks suggest that going from xX/yY/KEY/OBJ to xX/yY/OBJ
-  directories would improve speed 3x.
-
-  Presumably, removing the yY would also speed it up, unless there are too
-  many objects and the filesystem gets slow w/o the hash directories.
-
-* Removing a directory level would also reduce disk usage, see [[forum/scalability_with_lots_of_files/]] for more info.
-
-## git-annex branch changes
-
-This might involve, eg, rethinking the xxx/yyy/ hash directories used
-in the git-annex branch.
-
-Would this require a hard version transition? It might be possible to avoid
-one, but then git-annex would have to look in both the old and the new
-place. And if a un-transitioned repo was merged into a transitioned one,
-git-annex would have to look in *both* places, and union merge the two sets
-of data on the fly. This doubles the git-cat-file overhead of every
-operation involving the git-annex branch. So a hard transition would
-probably be best.
-
-Also, note that w/o a hard transition, there's the risk that a old
-git-annex version gets ahold of a git-annex branch created by a new
-git-annex version, and sees only half of the story (the un-transitioned
-files). This could be a very confusing failure mode. It doesn't help that
-the git-annex branch does not currently have any kind of
-version number embedded in it, so the old version of git-annex doesn't even
-have a way to check if it can handle the branch.
-
-Possible reasons to make changes:
-
-* There is a discussion of some possible changes to the hash directories here
-  <https://github.com/datalad/datalad/issues/17#issuecomment-68558319> with a
-  goal of reducing the overhead of the git-annex branch in the overall size
-  of the git-annex repository. 
-  
-  Removing the second-level hash directories might improve performance.
-  It doesn't save much space when a repository is having incremental changes
-  made to it. However, if millions of annexed objects are being added
-  in a single commit, removing the second-level hash directories does save
-  space; it halves the number of tree
-  objects[1](https://github.com/datalad/datalad/issues/17#issuecomment-68759754).
-
-  Also,
-  <https://github.com/datalad/datalad/issues/17#issuecomment-68569727>
-  suggests using xxx/yyy.log, where one log contains information for
-  multiple keys. This would probably improve performance too due to
-  caching, although in some cases git-annex would have to process extra
-  information to get to the info about the key it wants, which hurts
-  performance. The disk usage change of this method has not yet been
-  quantified.
-
-* Another reason to do it would be improving git-annex to use vector clocks,
-  instead of its current assumption that client's clocks are close enough to
-  accurate. This would presumably change the contents of the files.
-
-* While not a sufficient reason on its own, the best practices for file
-  formats in the git-annex branch has evolved over time, and there are some
-  files that have unusual formats for historical reasons. Other files have
-  modern formats, but their parsers have to cope with old versions that
-  have other formats. A hard transition would provide an opportunity to
-  clean up a lot of that.
-
-## living on the edge
-
-Rather than a hard transition, git-annex could add a mode
-that could be optionally enabled when initing a repo for the first time.
-
-Users who know they need that mode could then turn it one, and get the
-benefits, while everyone else avoids a transition that doesn't benefit them
-much.
-
-There could even be multiple modes, with different tradeoffs depending on
-how the repo will be used, its size, etc. Of course that adds complexity.
-
-But the main problem with this idea is, how to avoid the foot shooting
-result of merging repo A(v5) into repo B(vNG)? This seems like it would be
-all to easy for a user to do. 
-
-As far as git-annex branch changes go, it might be possible for git-annex
-to paper over the problem by handling both versions in the merged git-annex
-branch, as discussed earlier. But for .git/annex/objects/ changes, there
-does not seem to be a reasonable thing for git-annex to do. When it's
-receiving an object into a mixed v5 and vNG repo, it can't know which
-location that repo expects the object file to be located in. Different
-files in the repo might point to the same object in different locations!
-Total mess. Must avoid this.
-
-Currently, annex.version is a per-local-repo setting. git-annex can't tell 
-if two repos that it's merging have different annex.version's. 
-
-It would be possible to add a git-annex:version file, which would work for
-git-annex branch merging. Ie, `git-annex merge` could detect if different
-git-annex branches have different versions, and refuse to merge them (or
-upgrade the old one before merging it).
-
-Also, that file could be used by git-annex, to automatically set
-annex.version when auto-initing a clone of a repo that was initted with
-a newer than default version.
-
-But git-anex:version won't prevent merging B/master into A's master.
-That merge can be done by git; nothing in git-annex can prevent it.
-
-What we could do is have a .annex-version flag file in the root of the
-repo. Then git merge would at least have a merge conflict. Note that this
-means inflicting the file on all git-annex repos, even ones used by people
-with no intention of living on the edge. And, it would take quite a while
-until all such repos get updated to contain such a file.
-
-Or, we could just document that if you initialize a repo with experimental
-annex.version, you're living on the edge and you can screw up your repo
-by merging with a repo from an old version.
-
-git-annex fsck could also fix up any broken links that do result from the
-inevitable cases where users ignore the docs.
-
-## version numbers vs configuration
-
-A particular annex.version like 5 encompasses a number of somewhat distinct
-things
-
-* git-annex branch layout
-* .git/annex/objects/ layout
-* other git stuff (like eg, the name of the HEAD branch in direct mode)
-
-If the user is specifying at `git annex init` time some nonstandard things
-they want to make the default meet their use case better, that is more
-a matter of configuration than of picking a version. 
-
-For example, we could say that the user is opting out of the second-level
-object hash directories. Or we could say the user is choosing to use vNG,
-which is like  v5 except with different object hash directory structure.
-
-	git annex init --config annex.objects.hashdirectories 1 
-		--config annex.objects.hashlower true
-	git annex init --version 6
-
-The former would be more flexible. The latter is simpler. 
-
-The former also lets the user chose *no* hash directories, or 
-choose 2 levels of hash directories while using the (v5 default) mixed
-case hashing.
-
-## concrete design
-
-Make git-annex:difference.log be used by newer git-annex versions than v5,
-and by nonstandard configurations.
-
-The file contents will be "timestamp uuid [value, ..]", where value is a
-serialized data type that describes divergence from v5 (since v5 and older
-don't have the git-annex:difference.log file).
-
-So, for example, "[Version 6]" could indicate that v6 is being used. Or,
-"[ObjectHashLower True, ObjectHashDirectories 1, BranchHashDirectories 1]"
-indicate a nonstandard configuration on top of v5 (this might turn out to
-be identical to v6; just make the compare equal and no problem).
-
-git-annex merge would check if it's merging in a git-annex:difference.log from
-another repo that doesn't match the git-annex:difference.log of the local repo,
-and abort. git-annex sync (and the assistant) would check the same, but
-before merging master branches either, to avoid a bad merge there.
-
-The git-annex:difference.log of a local repo could be changed by an upgrade
-or some sort of transition. When this happens, the new value is written
-for the uuid of the local repo. git-annex merge would then refuse to merge
-with remote repos until they were also transitioned.
-
-(There's perhaps some overlap here with the existing
-git-annex:transitions.log, however the current transitions involve
-forgetting history/dead remotes and so can be done repeatedly on a
-repository. Also, the current transitions can be performed on remote
-branches before merging them in; that wouldn't work well for version
-changes since those require other changes in the remote repo.)
-
-Not covered:
-
-* git-merge of other branches, such as master (can be fixed by `git annex
-  fix` or `fsck`)
-* Old versions of git-annex will ignore the version file of course,
-  and so merging such repos using them can result in pain.
-
diff --git a/doc/design/preferred_content.mdwn b/doc/design/preferred_content.mdwn
deleted file mode 100644
--- a/doc/design/preferred_content.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-The [[preferred_content]] expressions didn't have a design document, but
-it's a small non-turing complete DSL for expressing which objects a
-repository prefers to contain.
-
-One thing that needs to be written down though is the stability analysis
-that must be done of preferred content expressions. 
-
-It's important that when a set of repositories all look at one-another's
-preferred content expressions, and copy/move/drop objects to satisfy them,
-they end up at a steady state. So, a given preferred content expression
-should ideally evaluate to the same answer for each key, from the
-perspective of each repository.
-
-The best way to ensure that is the case is to only use terms in preferred
-content expressions that rely on state that is shared between all
-repositories. So, state in the git-annex branch, or the master branch
-(assuming all repositories have master checked out).
-
-Since git is eventually consistent, there might be disagreements about
-which object belongs where, but once consistency is reached, things will
-settle down.
diff --git a/doc/design/requests_routing.mdwn b/doc/design/requests_routing.mdwn
deleted file mode 100644
--- a/doc/design/requests_routing.mdwn
+++ /dev/null
@@ -1,100 +0,0 @@
-## requesting content
- 
-In some situations, nodes only want particular files, and not everything.
-(Or don't have the bandwidth to get everything.) A way to handle this,
-that should work in a fully ad-hoc, offline distributed network,
-suggested by Vincenzo Tozzi:
-
-* Nodes generate a request for a specific file they want, committed
-  to git somewhere.
-* This request has a TTL (of eg 3 or 4).
-* When syncing, copy the requests that a node has, and decrease their TTL
-  by 1. Requests with a TTL of 0 have timed out and are not copied.
-  (So, requests are stored in git, but on eg, per-node branches.)
-* Only copy content to nodes that have a request for it (either one
-  originating with them, or one they copied from another node).
-* Each request indicates the requesting node, so once no nodes have an
-  active request for a particular file, it's ok to drop it from the
-  transfer nodes (honoring numcopies etc of course).
-
-## simulation
-
-A simulation of a network using this method is in [[simroutes.hs]].
-
-Question: How efficient is this method? Does the network fill with many
-copies that are not needed, before the request is fulfilled?
-
-## storing requests
-
-Requests could be stored in the location tracking file.
-
-Currently:
-
-	time 0|1 uuid1
-	time 0|1 uuid2
-
-* Use negative numbers for the TTL of a request:
-
-	time -3! uuid1
-	time -2 uuid2
-
-  The `!` indicates that the request originated on
-  that node.
-* To propigate a request, set -1 * (TTL+1) in the line
-  for the uuid of the repository that is propigating it.  
-  This should be done as part of the git-annex branch merge,
-  so if a location tracking file is merged, any open requests
-  get propigated to the current repository automatically.
-* When a requested file reaches a node that requested it,
-  the location is set to 1; this automatically clears the
-  request.
-* When a file has no more originating requests, clear all
-  the copied requests:
-
-	time 1 uuid1
-	time -2 uuid2
-
-  Becomes:
-
-	time 1 uuid1
-	time' 0 uuid2
-
-## generating requests
-
-	git annex request [file...]
-
-Indicates that the file is wanted in the current repository.
-
-(git annex get could also do this on failure, or suggest doing this)
-
-## acting on requests
-
-Add a preferred content expression that looks at request data:
-
-	requestedby=N
-
-Matches files that have been requested by at least N nodes.
-
-	requested
-
-Matches files that the current node has requested.
-
-### Example preferred content expressions
-
-For an immobile node that accumulates files it requests, and also
-temporarily stores files requested by other such nodes:
-
-	present or requestedby=1
-
-For a node that only transfers files between the immobile nodes:
-
-	requestedby=1
-
-For an immobile node that only accumulates files it requests, but never
-stores files requested by other nodes:
-
-	present or requested
-
-TODO: Would be nice to be able to prioritize files that more nodes are
-requesting, or that have some urgent flag set. But currently there is no
-way to do that; content is either preferred or not preferred.
diff --git a/doc/design/requests_routing/simroutes.hs b/doc/design/requests_routing/simroutes.hs
deleted file mode 100644
--- a/doc/design/requests_routing/simroutes.hs
+++ /dev/null
@@ -1,402 +0,0 @@
--- Simulation of non-flood syncing of content, across a network of nodes.
-
-module Main where
-
-import System.Random
-import Control.Monad.Random
-import Control.Monad
-import Control.Applicative
-import Data.Ratio
-import Data.Ord
-import Data.List
-import Data.Maybe
-import qualified Data.Set as S
-import qualified Data.Map.Strict as M
-
-{-
- - Tunable values
- -}
-
-totalFiles :: Int
-totalFiles = 100
-
--- How likely is a given file to be wanted by any particular node?
-probabilityFilesWanted :: Probability
-probabilityFilesWanted = 0.10
-
--- How many different locations can each transfer node move between?
--- (Min, Max)
-transferDestinationsRange :: (Int, Int)
-transferDestinationsRange = (2, 3)
-
--- Controls how likely transfer nodes are to move around in a given step
--- of the simulation.
--- (They actually move slightly less because they may start to move and
--- pick the same location they are at.)
--- (Min, Max)
-transferMoveFrequencyRange :: (Probability, Probability)
-transferMoveFrequencyRange = (0.10, 1.00)
-
--- counts both immobile and transfer nodes as hops, so double Vince's
--- theoretical TTL of 3.
--- (30% loss on mocambos network w/o ttl of 4!)
-maxTTL :: TTL
-maxTTL = TTL (4 * 2)
-
-numImmobileNodes :: Int
-numImmobileNodes = 10
-
-numTransferNodes :: Int
-numTransferNodes = 20
-
-numSteps :: Int
-numSteps = 100
-
--- IO code
-main :: IO ()
-main = do
---	initialnetwork <- evalRandIO (seedFiles totalFiles =<< genNetwork)
-	initialnetwork <- evalRandIO (seedFiles totalFiles =<< mocambosNetwork)
-	networks <- evalRandIO (simulate numSteps initialnetwork)
-	let finalnetwork = last networks
-	putStrLn $ summarize initialnetwork finalnetwork
-	putStrLn "location history of file 1:"
-	print $ trace (traceHaveFile (File 1)) networks
-	putStrLn "request history of file 1:"
-	print $ trace (traceWantFile (File 1)) networks
--- Only pure code below :)
-
-data Network = Network (M.Map NodeName ImmobileNode) [TransferNode]
-	deriving (Show, Eq)
-
-data ImmobileNode = ImmobileNode NodeRepo
-	deriving (Show, Eq)
-
-type NodeName = String
-
-type Route = [NodeName]
-
-data TransferNode = TransferNode
-	{ currentlocation :: NodeName
-	, possiblelocations :: [NodeName]
-	, movefrequency :: Probability
-	, transferrepo :: NodeRepo
-	}
-	deriving (Show, Eq)
-
-data NodeRepo = NodeRepo
-	{ wantFiles :: [Request]
-	, haveFiles :: S.Set File
-	, satisfiedRequests :: S.Set Request
-	}
-	deriving (Show, Eq)
-
-data File = File Int
-	deriving (Show, Eq, Ord)
-
-randomFile :: (RandomGen g) => Rand g File
-randomFile = File <$> getRandomR (0, totalFiles)
-
-data Request = Request File TTL
-	deriving (Show, Ord)
-
--- compare ignoring TTL
-instance Eq Request where
-	(Request f1 _) == (Request f2 _) = f1 == f2
-
-requestedFile :: Request -> File
-requestedFile (Request f _) = f
-
-requestTTL :: Request -> TTL
-requestTTL (Request _ ttl) = ttl
-
-data TTL = TTL Int
-	deriving (Show, Eq, Ord)
-
-incTTL :: TTL -> TTL
-incTTL (TTL t) = TTL (t + 1)
-
-decTTL :: TTL -> TTL
-decTTL (TTL t) = TTL (t - 1)
-
-staleTTL :: TTL -> Bool
-staleTTL (TTL t) = t < 1
-
--- Origin of a request starts one higher than max, since the TTL
--- will decrement the first time the Request is transferred to another node.
-originTTL :: TTL
-originTTL = incTTL maxTTL
-
-randomRequest :: (RandomGen g) => Rand g Request
-randomRequest = Request
-	<$> randomFile
-	<*> pure originTTL
-
-type Probability = Float
-
-randomProbability :: (RandomGen g) => Rand g Probability
-randomProbability = getRandomR (0, 1)
-
--- Returns the state of the network at each step of the simulation.
-simulate :: (RandomGen g) => Int -> Network -> Rand g [Network]
-simulate n net = go n [net]
-  where
-	go 0 nets = return (reverse nets)
-	go c (prev:nets) = do
-		new <- step prev
-		go (c - 1) (new:prev:nets)
-
--- Each step of the simulation, check if each TransferNode wants to move,
--- and if so:
---   1. It and its current location exchange their Requests.
---   2. And they exchange any requested files.
---   3. Move it to a new random location.
---
--- Note: This implementation does not exchange requests between two
--- TransferNodes that both arrive at the same location at the same step,
--- and then move away in the next step.
-step :: (RandomGen g) => Network -> Rand g Network
-step (Network immobiles transfers) = go immobiles [] transfers
-  where
-	go is c [] = return (Network is c)
-	go is c (t:ts) = do
-		r <- randomProbability
-		if movefrequency t <= r
-			then case M.lookup (currentlocation t) is of
-				Nothing -> go is (c ++ [t]) ts
-				Just currentloc -> do
-					let (currentloc', t') = merge currentloc t
-					t'' <- move t'
-					go (M.insert (currentlocation t) currentloc' is) (c ++ [t'']) ts
-			else go is (c ++ [t]) ts
-
-merge :: ImmobileNode -> TransferNode -> (ImmobileNode, TransferNode)
-merge (ImmobileNode ir) t@(TransferNode { transferrepo = tr }) =
-	( ImmobileNode (go ir tr)
-	, t { transferrepo = go tr ir }
-	)
-  where
-	go r1 r2 = r1
-		{ wantFiles = wantFiles'
-		, haveFiles = haveFiles'
-		, satisfiedRequests = satisfiedRequests' `S.union` checkSatisfied wantFiles' haveFiles'
-		}
-	  where
-		wantFiles' = foldr addRequest (wantFiles r1) (wantFiles r2)
-		haveFiles' = S.foldr (addFile wantFiles' satisfiedRequests') (haveFiles r1) (haveFiles r2)
-		satisfiedRequests' = satisfiedRequests r1 `S.union` satisfiedRequests r2
-
--- Adds a file to the set, when there's a request for it, and the request
--- has not already been satisfied.
-addFile :: [Request] -> S.Set Request -> File -> S.Set File -> S.Set File
-addFile rs srs f fs
-	| any (\sr -> f == requestedFile sr) (S.toList srs) = fs
-	| any (\r -> f == requestedFile r) rs = S.insert f fs
-	| otherwise = fs
-
--- Checks if any requests have been satisfied, and returns them,
--- to be added to satisfidRequests
-checkSatisfied :: [Request] -> S.Set File -> S.Set Request
-checkSatisfied want have = S.fromList (filter satisfied want)
-  where
-	satisfied r = requestTTL r == originTTL && S.member (requestedFile r) have
-
--- Decrements TTL, and avoids adding request with a stale TTL, or a
--- request for an already added file with the same or a lower TTL.
-addRequest :: Request -> [Request] -> [Request]
-addRequest (Request f ttl) rs
-	| staleTTL ttl' = rs
-	| any (\r -> requestTTL r >= ttl) similar = rs
-	| otherwise = r' : other
-  where
-	ttl' = decTTL ttl
-	r' = Request f ttl'
-	(other, similar) = partition (/= r') rs
-
-move :: (RandomGen g) => TransferNode -> Rand g TransferNode
-move t = do
-	newloc <- randomfrom (possiblelocations t)
-	return $ t { currentlocation = newloc }
-
-genNetwork :: (RandomGen g) => Rand g Network
-genNetwork = do
-	let immobiles = M.fromList (zip (map show [1..]) (replicate numImmobileNodes emptyImmobile))
-	transfers <- sequence (replicate numTransferNodes (mkTransfer $ M.keys immobiles))
-	return $ Network immobiles transfers
-
-emptyImmobile :: ImmobileNode
-emptyImmobile = ImmobileNode (NodeRepo [] S.empty S.empty)
-
-mkTransfer :: (RandomGen g) => [NodeName] -> Rand g TransferNode
-mkTransfer immobiles = do
-	-- Transfer nodes are given random routes. May be simplistic.
-	-- Also, some immobile nodes will not be serviced by any transfer nodes.
-	numpossiblelocs <- getRandomR transferDestinationsRange
-	possiblelocs <- sequence (replicate numpossiblelocs (randomfrom immobiles))
-	mkTransferBetween possiblelocs
-
-mkTransferBetween :: (RandomGen g) => [NodeName] -> Rand g TransferNode
-mkTransferBetween possiblelocs = do
-	currentloc <- randomfrom possiblelocs
-	movefreq <- getRandomR transferMoveFrequencyRange
-	-- transfer nodes start out with no files or requests in their repo
-	let repo = (NodeRepo [] S.empty S.empty)
-	return $ TransferNode currentloc possiblelocs movefreq repo
-
-randomfrom :: (RandomGen g) => [a] -> Rand g a
-randomfrom l = do
-	i <- getRandomR (1, length l)
-	return $ l !! (i - 1)
-
--- Seeds the network with the given number of files. Each file is added to
--- one of the immobile nodes of the network at random. And, one other node,
--- at random, is selected which wants to get the file.
-seedFiles :: (RandomGen g) => Int -> Network -> Rand g Network
-seedFiles 0 network = return network
-seedFiles n network@(Network m t) = do
-	(origink, ImmobileNode originr) <- randnode
-	(destinationk, ImmobileNode destinationr) <- randnode
-	let file = File n
-	let origin = ImmobileNode $ originr
-		{ haveFiles = S.insert file (haveFiles originr) }
-	let destination = ImmobileNode $ destinationr
-		{ wantFiles = Request file originTTL : wantFiles destinationr }
-	let m' = M.insert origink origin $
-		M.insert destinationk destination m
-	seedFiles (n - 1) (Network m' t)
-  where
-	randnode = do
-		k <- randomfrom (M.keys m)
-		return (k, fromJust $ M.lookup k m)
-
-summarize :: Network -> Network -> String
-summarize _initial@(Network origis _) _final@(Network is _ts) = format
-	[ ("Total wanted files",
-		show (sum (overis (length . findoriginreqs . wantFiles . repo))))
-	, ("Wanted files that were not transferred to requesting node",
-		show (sum (overis (S.size . findunsatisfied . repo))))
-	, ("Nodes that failed to get files",
-		show (map withinitiallocs $ filter (not . S.null . snd)
-			(M.toList $ M.map (findunsatisfied . repo) is)))
-	, ("Total number of files on immobile nodes at end",
-		show (overis (S.size . haveFiles . repo)))
-	--, ("Immobile nodes at end", show is)
-	]
-  where
-	findoriginreqs = filter (\r -> requestTTL r == originTTL)
-	findunsatisfied r = 
-		let wantedfs = S.fromList $ map requestedFile (findoriginreqs (wantFiles r))
-		in S.difference wantedfs (haveFiles r)
-	repo (ImmobileNode r) = r
-	overis f = map f $ M.elems is
-	format = unlines . map (\(d, s) -> d ++ ": " ++ s)
-
-	withinitiallocs (name, missingfiles) = (name, S.map addinitialloc missingfiles)
-	addinitialloc f = (f, M.lookup f initiallocs)
-
-	initiallocs = M.fromList $ 
-		concatMap (\(k, v) -> map (\f -> (f, k)) (S.toList $ haveFiles $ repo v)) $
-			M.toList origis
-
-trace :: (Network -> S.Set NodeName) -> [Network] -> String
-trace tracer networks = show $ go [] S.empty $ map tracer networks
-  where
-	go c old [] = reverse c
-	go c old (new:l) = go ((S.toList $ new `S.difference` old):c) new l
-
-traceHaveFile :: File -> Network -> S.Set NodeName
-traceHaveFile f (Network m _) = S.fromList $ M.keys $
-	M.filter (\(ImmobileNode r) -> f `S.member` haveFiles r) m 
-
-traceWantFile :: File -> Network -> S.Set NodeName
-traceWantFile f (Network m _) = S.fromList $ M.keys $
-	M.filter (\(ImmobileNode r) -> any wantf (wantFiles r)) m 
-  where
-	wantf (Request rf _ttl) = rf == f
-
-mocambosNetwork :: (RandomGen g) => Rand g Network
-mocambosNetwork = do
-	let major = map (immobilenamed . fst) communities
-	let minor = map immobilenamed (concatMap snd communities)
-	majortransfer <- mapM mkTransferBetween majorroutes
-	minortransfer <- mapM mkTransferBetween (concatMap minorroutes (concat (replicate 5 communities)))
-	return $ Network
-		(M.fromList (major++minor))
-		(majortransfer ++ minortransfer)
-  where
-	immobilenamed name = (name, emptyImmobile)
-
-	-- As a simplification, this only makes 2 hop routes, between minor
-	-- and major communities; no 3-legged routes.
-	minorroutes :: (NodeName, [NodeName]) -> [Route]
-	minorroutes (major, minors) = map (\n -> [major, n]) minors
-
-communities :: [(NodeName, [NodeName])]
-communities =
-	[ ("Tainá/SP",
-		[ "badtas"
-		, "vauedo ribera"
-		, "cofundo"
-		, "jao"
-		, "fazenda"
-		]
-	  )
-	, ("Odomode/RS",
-		[ "moradadapaz"
-		, "pelotas" 
-		]
-	  )
-	, ("MercadoSul/DF",
-		[ "mesquito"
-		, "kalungos"
-		]
-	  )
-	, ("Coco/PE",
-		[ "xambá"
-		, "alafin"
-		, "terreiaos"
-		]
-	  )
-	, ("Linharinho/ES",
-		[ "monte alegne"
-		]
-	  )
-	, ("Boneco/BA",
-		[ "barroso"
-		, "lagoa santa"
-		, "terravista"
-		]
-	  )
-	, ("Zumbidospalmanes/NA",
-		[ "allantana"
-		]
-	  )
-	, ("Casa Pneta/PA",
-		[ "marajó"
-		]
-	  )
-	, ("Purarue/PA",
-		[ "oriaminá"
-		]
-	  )
-	, ("Madiba/NET", [])
-	]
-
-majorroutes :: [Route]
-majorroutes =
-	-- person's routes
-	[ ["Tainá/SP", "Odomode/RS"]
-	, ["Tainá/SP", "MercadoSul/DF"]
-	, ["MercadoSul/DF", "Boneco/BA"]
-	, ["MercadoSul/DF", "Zumbidospalmanes/NA"]
-	, ["Zumbidospalmanes/NA", "Casa Pneta/PA"]
-	, ["Casa Pneta/PA", "Purarue/PA"]
-	, ["Casa Pneta/PA", "Linharinho/ES"]
-	, ["Boneco/BA", "Coco/PE"]
-	-- internet connections
-	, ["Tainá/SP", "MercadoSul/DF", "Coco/PE", "Purarue/PA", "Odomode/RS", "Madiba/NET"]
-	, ["Tainá/SP", "MercadoSul/DF", "Coco/PE", "Purarue/PA", "Odomode/RS", "Madiba/NET"]
-	, ["Tainá/SP", "MercadoSul/DF", "Coco/PE", "Purarue/PA", "Odomode/RS", "Madiba/NET"]
-	, ["Tainá/SP", "MercadoSul/DF", "Coco/PE", "Purarue/PA", "Odomode/RS", "Madiba/NET"]
-	, ["Tainá/SP", "MercadoSul/DF", "Coco/PE", "Purarue/PA", "Odomode/RS", "Madiba/NET"]
-	]
diff --git a/doc/design/roadmap.mdwn b/doc/design/roadmap.mdwn
deleted file mode 100644
--- a/doc/design/roadmap.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-## ahead
-
-* [[design/caching_database]] for metadata views
-* [[assistant/deltas]]
-* [[assistant/gpgkeys]] management for the assistant
-* [[assistant/telehash]] or similar
-* [[design/requests_routing]]
-* [[design/new_repo_versions]]
-
-## the rearview
-
-* Spring 2016 [[adjusted_branches]]
-* Winter 2015 v6 repo format
-* Mar-Oct 2015 busy busy busy, too busy to update!
-* Feb 2015 user-driven features and polishing, [[design/caching_database]] part 1
-* Jan 2015 Android 5, relative paths, workload [[tuning]]
-* Dec 2014 [[todo/extensible_addurl]], bittorrent special remote
-* Nov 2014 direct mode proxy, undo command, diffdriver
-* Oct 2014 user-driven features and polishing, S3 multipart
-* Sep 2014 vacation
-
-2013-2014 [crowdfunded](https://campaign.joeyh.name/) year
-
-* Aug 2014 user-driven features and polishing
-* Jul 2014 [[!traillink assistant/chunks]]
-* Jun 2014 polish [[assistant/Windows]] port
-* May 2014 Brazil!, [[!traillink assistant/sshpassword]]
-* Apr 2014 [[!traillink git-remote-daemon]]
-* Mar 2014 user-driven features and polishing
-* Feb 2014 get Windows out of beta, [[!traillink design/metadata text="metadata and views"]]
-* Jan 2014 user-driven features and polishing
-* Dec 2013 [[!traillink assistant/windows text="Windows webapp"]], Linux arm, external special remotes
-* Nov 2013 [[!traillink direct_mode]] guard [[!traillink assistant/upgrading]]
-* Oct 2013 [[!traillink assistant/disaster_recovery]]
-* Sep 2013 [[!traillink assistant/encrypted_git_remotes]]
-
-2012-2013 kickstarted year developing [[git-annex assistant|assistant]]
-
-2010-2011 initial git-annex development
diff --git a/doc/devblog.mdwn b/doc/devblog.mdwn
deleted file mode 100644
--- a/doc/devblog.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Joey blogs about his work here on a semi-daily basis.
-
-[[!sidebar content="""
-[[!calendar type="month" pages="page(devblog/*)"]]
-[[!calendar type="month" month="-1" pages="page(devblog/*)"]]
-[[!calendar type="month" month="-2" pages="page(devblog/*)"]]
-"""]]
-
-[[!inline pages="page(devblog/*)" show=0]]
diff --git a/doc/devblog/day_-1__drop_dead.mdwn b/doc/devblog/day_-1__drop_dead.mdwn
deleted file mode 100644
--- a/doc/devblog/day_-1__drop_dead.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Implemented `git annex forget --drop-dead`, which is finally a way to
-remove all references to old repositories that you've marked as dead.
-
-I've still not merged in the `forget` branch, because I developed this
-while slightly ill, and have not tested it very well yet.
diff --git a/doc/devblog/day_-3__.mdwn b/doc/devblog/day_-3__.mdwn
deleted file mode 100644
--- a/doc/devblog/day_-3__.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-John Millikin came through and fixed that haskell-gnutls segfault
-on OSX that I developed a reproducible test case for the other day.
-It's a bit hard to test, since the bug doesn't always happen, but the
-fix is already deployed for Mountain Lion autobuilder.
-
-However, I then found another way to make haskell-gnutls segfault, more
-reliably on OSX, and even sometimes on Linux. Just entering the wrong XMPP
-password in the assistant can trigger this crash. Hopefully John will work
-his magic again.
-
----
-
-Meanwhile, I fixed the sync-after-forget problem. Now sync always forces
-its push of the git-annex branch (as does the assistant). I considered but
-rejected having sync do the kind of uuid-tagged branch push that the
-assistant sometimes falls back to if it's failing to do a normal sync. It's
-ugly, but worse, it wouldn't work in the workflow where multiple clients
-are syncing to a central bare repository, because they'd not pull down the
-hidden uuid-tagged branches, and without the assistant running on the
-repository, nothing would ever merge their data into the git-annex branch.
-Forcing the push of synced/git-annex was easy, once I satisfied myself
-that it was always ok to do so.
-
-Also factored out a module that knows about all the different log files
-stored on the git-annex branch, which is all the support infrastructure
-that will be needed to make `git annex forget --drop-dead` work. Since this
-is basically a routing module, perhaps I'll get around to making it use
-a nice bidirectional routing library like
-[Zwaluw](http://hackage.haskell.org/package/Zwaluw) one day.
diff --git a/doc/devblog/day_-4__forgetting.mdwn b/doc/devblog/day_-4__forgetting.mdwn
deleted file mode 100644
--- a/doc/devblog/day_-4__forgetting.mdwn
+++ /dev/null
@@ -1,80 +0,0 @@
-Yesterday I spent making a release, and shopping for a new laptop, since
-this one is dying. (Soon I'll be able to compile git-annex fast-ish! Yay!)
-And thinking about [[todo/wishlist:_dropping_git-annex_history]].
-
-Today, I added the `git annex forget` command. It's currently been lightly
-tested, seems to work, and is living in the `forget` branch until I gain
-confidence with it. It should be perfectly safe to use, even if it's buggy,
-because you can use `git reflog git-annex` to pull out and revert to an old
-version of your git-annex branch. So if you're been wanting this feature,
-please beta test!
-
-----
-
-I actually implemented something more generic than just forgetting git
-history. There's now a whole mechanism for git-annex doing distributed
-transitions of whatever sort is needed.
-
-There were several subtleties involved in distributed transitions:
-
-First is how to tell when a given transition has already been done on a
-branch. At first I was thinking that the transition log should include the
-sha of the first commit on the old branch that got rewritten. However, that
-would mean that after a single transition had been done, every git-annex
-branch merge would need to look up the first commit of the current branch,
-to see if it's done the transition yet. That's slow! Instead, transitions
-are logged with a timestamp, and as long as a branch contains a transition
-with the same timestamp, it's been done.
-
-A really tricky problem is what to do if the local repository has
-transitioned, but a remote has not, and changes keep being made to the
-remote. What it does so far is incorporate the changes from the remote into
-the index, and re-run the transition code over the whole thing to yeild a
-single new commit. This might not be very efficient (once I write the more
-full-featured transition code), but it lets the local repo keep up with
-what's going on in the remote, without directly merging with it (which
-would revert the transition). And once the remote repository has its
-git-annex upgraded to one that knows about transitions, it will finish up
-the transition on its side automatically, and the two branches will once
-again merge.
-
-Related to the previous problem, we don't want to keep trying to merge
-from a remote branch when it's not yet transitioned. So a blacklist is
-used, of untransitioned commits that have already been integrated.
-
-One really subtle thing is that when the user does a transition more
-complicated than `git annex forget`, like the `git annex forget --dead`
-that I need to implement to forget dead remotes, they're not just telling
-git-annex to forget whatever dead remotes it knows right now. They're
-actually telling git-annex to perform the transition one time on every
-existing clone of the repository, at some point in the future. Repositories
-with unfinished transitions could hang around for years, and at some future
-point when git-annex runs in the repository again, it would merge in the
-current state of the world, and re-do the transition. So you might tell it
-to forget dead remotes today, and then the very repository you ran that in
-later becomes dead, and a long-slumbering repo wakes up and forgets about
-the repo that started the whole process! I hope users don't find this
-massively confusing, but that's how the implementation works right now.
-
-----
-
-I think I have at least two more days of work to do to finish up this
-feature.
-
-* I still need to add some extra features like forgetting about dead remotes,
-  and forgetting about keys that are no longer present on any remote.
-
-* After `git annex forget`, `git annex sync`
-  will fail to push the synced/annex branch to remotes, since the branch
-  is no longer a fast-forward of the old one. I will probably fix this by
-  making `git annex sync` do a fallback push of a unique branch in this case,
-  like the assistant already does. Although I may need to adjust that code
-  to handle this case, too..
-
-* For some reason the automatic transitioning code triggers
-  a "(recovery from race)" commit. This is certainly a bug somewhere,
-  because you can't have a race with only 1 participant.
-
-----
-
-Today's work was sponsored by Richard Hartmann.
diff --git a/doc/devblog/day_100__git-annex_sync_--content.mdwn b/doc/devblog/day_100__git-annex_sync_--content.mdwn
deleted file mode 100644
--- a/doc/devblog/day_100__git-annex_sync_--content.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Spent the day building this new feature, which makes `git annex sync --content`
-do the same synchronization of file contents (to satisfy preferred content
-settings) that the assistant does. The result has not been tested a lot
-yet, but seems to work well.
diff --git a/doc/devblog/day_101__old_mistakes.mdwn b/doc/devblog/day_101__old_mistakes.mdwn
deleted file mode 100644
--- a/doc/devblog/day_101__old_mistakes.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-In order to remove some hackishness in `git annex sync --content`, I
-finally fixed a bad design decision I made back at the very beginning
-(before I really knew haskell) when I built the command seek code, which
-had led to a kind of inversion of control. This took most of a night, but
-it made a lot of code in git-annex clearer, and it makes the command
-seeking code much more flexible in what it can do. Some of the oldest, and
-worst code in git-annex was removed in the process.
-
-Also, I've been reworking the numcopies configuration, to allow for a 
-[[todo/preferred_content_numcopies_check]]. That will let the assistant,
-as well as `git annex sync --content` proactively make copies when
-needed in order to satisfy numcopies. 
-
-As part of this, `git config annex.numcopies` is deprecated, and there's a
-new `git annex numcopies N` command that sets the numcopies value that will
-be used by any clone of a repository.
-
-I got the preferred content checking of numcopies working too. However,
-I am unsure if checking for per-file .gitattributes annex.numcopies
-settings will make preferred content expressions be, so I have left
-that out for now.
-
-Today's work was sponsored by Josh Taylor.
diff --git a/doc/devblog/day_102__cleanups.mdwn b/doc/devblog/day_102__cleanups.mdwn
deleted file mode 100644
--- a/doc/devblog/day_102__cleanups.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Worked on cleaning up and reorganizing all the code that handles numcopies
-settings. Much nicer now. Fixed some bugs.
-
-As expected, making the preferred content numcopies check look at
-.gitattributes slows it down significantly. So, exposed both the slow and
-accurate check and a faster version that ignores .gitattributes.
-
-Also worked on the test suite, removing dependencies between tests.
-This will let tasty-rerun be used later to run only previously failing
-tests.
diff --git a/doc/devblog/day_103__unused.mdwn b/doc/devblog/day_103__unused.mdwn
deleted file mode 100644
--- a/doc/devblog/day_103__unused.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-A big missing peice of the assistant is doing something about the content
-of old versions of files, and deleted files. In direct mode, editing or
-deleting a file necessarily loses its content from the local repository,
-but the content can still hang around in other repositories. So, the
-assistant needs to do something about that to avoid eating up disk space
-unnecessarily.
-
-I built on recent work, that lets preferred content expressions be matched
-against keys with no associated file. This means that I can run unused keys
-through all the machinery in the assistant that handles file transfers, and
-they'll end being moved to whatever repository wants them. To control which
-repositories do want to retain unused files, and which not, I added a
-`unused` keyword to preferred content expressions. Client repositories and
-transfer repositories do not want to retain unused files, but backup etc
-repos do.
-
-One nice thing about this `unused` preferred content implementation is that
-it doesn't slow down normal matching of preferred content expressions at
-all. Can you guess why not? See [[!commit 4b55afe9e92c045d72b78747021e15e8dfc16416]]
-
-So, the assistant will run `git annex unused` on a daily basis, and
-cause unused files to flow to repositories that want them. But what if no
-repositories do? To guard against filling up the local disk, there's
-a `annex.expireunused` configuration setting, that can cause old unused
-files to be deleted by the assistant after a number of days.
-
-I made the assistant check if there seem to be a lot of unused files piling
-up. (1000+, or 10% of disk used by them, or more space taken by unused files
-than is free.) If so, it'll pop up an alert to nudge the user to configure
-annex.expireunused.
-
-Still need to build the UI to configure that, and test all of this.
-
-Today's work was sponsored by Samuel Tardieu.
diff --git a/doc/devblog/day_104__unused_II.mdwn b/doc/devblog/day_104__unused_II.mdwn
deleted file mode 100644
--- a/doc/devblog/day_104__unused_II.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Built the UI to manage unused files.
-
-[[!img assistant/unused.png]]
-
-Testing yesterday's work, I found several problems that prevented the
-assistant from moving unused files around, and fixed them. It seems to be
-working pretty well now.
diff --git a/doc/devblog/day_105__locking.mdwn b/doc/devblog/day_105__locking.mdwn
deleted file mode 100644
--- a/doc/devblog/day_105__locking.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-With yesterday's release, I'm pretty much done with the month's work. Since
-there was no particular goal this month, it's been a grab bag of features
-and bugfixes. Quite a lot of them in this last release.
-
-I'll be away the next couple of days.. But got a start today on the next
-part of the roadmap, which is planned to be all about Windows and Android
-porting. Today, it was all about lock files, mostly on Windows.
-
-Lock files on Windows are horrific. I especially like that programs that
-want to open a file, for any reason, are encouraged in the official
-documentation to retry repeatedly if it fails, because some other
-random program, like a virus checker, might have opened the file first.
-
-Turns out Windows does support a shared file read mode. This was
-just barely enough for me to implement both shared and exclusive
-file locking a-la-flock.
-
-Couldn't avoid a busy wait in a few places that block on a lock.
-Luckily, these are few, and the chances the lock will be taken for a long
-time is small. (I did think about trying to watch the file for close events
-and detect when the lock was released that way, but it seemed much too
-complicated and hard to avoid races.)
-
-Also, Windows only seems to support mandatory locks, while all locking in
-git-annex needs to be advisory locks. Ie, git-annex's locking shouldn't
-prevent a program from opening an annexed file! To work around that,
-I am using dedicated lock files on Windows.
-
-Also switched direct mode's annexed object locking to use dedicated lock
-files. AFAICS, this was pretty well broken in direct mode before.
diff --git a/doc/devblog/day_106__catching_up.mdwn b/doc/devblog/day_106__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_106__catching_up.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-While I've not been blogging over what amounted to a long weekend, looking
-over the changelog, there were quite a few things done. Mostly various
-improvements and fixes to `git annex sync --content`.
-
-Today, got the test suite to pass on Windows 100% again.
diff --git a/doc/devblog/day_107__TDD.mdwn b/doc/devblog/day_107__TDD.mdwn
deleted file mode 100644
--- a/doc/devblog/day_107__TDD.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-A more test driven day than usual. Yesterday I noticed a test case was
-failing on Windows in a way not related to what it was intended to test,
-and fixed the test case to not fail.. But knew I'd need to get to the
-bottom of what broke it eventually.
-
-Digging into that today, I eventually (after rather a long time stuck)
-determined the bug involved automatic conflict resolution, but only
-happened on systems without symlink support. This let me reproduce it on
-FAT outside Windows and do some fast TDD iterations in a much less
-unwieldly environment and fix the bug.
diff --git a/doc/devblog/day_108__new_use_for_location_tracking.mdwn b/doc/devblog/day_108__new_use_for_location_tracking.mdwn
deleted file mode 100644
--- a/doc/devblog/day_108__new_use_for_location_tracking.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Added a new feature that started out with me wanting a way to undo a
-`git-annex drop`, but turned into something rather more powerful. The `--in`
-option can now be told to match files that were in a repository at some
-point in the past. For example, `git annex get --in=here@{yesterday}` will
-get any files that have been dropped over the past day.
-
-While git-annex's location tracking info is stored in git and thus versioned,
-very little of it makes use of past versions of the location tracking info
-(only `git annex log`). I'm happy to have finally found a use for it!
-
-OB Windows porting: Fixed a bug in the symlink calculation code.
-Sounds simple; took 2 hours!
-
-Also various bug triage; updated git version on OSX; forwarded bug about
-DAV-0.6 being broken upstream; fixed a bug with initremote in 
-encryption=pubkey mode. Backlog is 65 messages.
-
----
-
-Today's work was sponsored by Brock Spratlen.
diff --git a/doc/devblog/day_109__elimintating_absNormPath.mdwn b/doc/devblog/day_109__elimintating_absNormPath.mdwn
deleted file mode 100644
--- a/doc/devblog/day_109__elimintating_absNormPath.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-git-annex has been using MissingH's `absNormPath` forever, but that's
-not very maintained and doesn't work on Windows. I've been
-wanting to get rid of it for some time, and finally did today, writing a
-`simplifyPath` that does the things git-annex needs and will work with all
-the Windows filename craziness, and takes advantage of the more modern
-System.FilePath to be quite a simple peice of code. A QuickCheck test found
-no important divergences from absNormPath. A good first step to making
-git-annex not depend on MissingH at all. 
-
-That fixed one last Windows bug that was disabled in the test suite:
-`git annex add ..\subdir\file` will now work.
-
-I am re-installing the Android autobuilder for 2 reasons: I noticed I had
-accidentially lost a patch to make a library use the Android SSL cert directory,
-and also a new version of GHC is very near to release and so it makes sense
-to update.
-
-Down to 38 messages in the backlog.
diff --git a/doc/devblog/day_10__lazy_Sunday.mdwn b/doc/devblog/day_10__lazy_Sunday.mdwn
deleted file mode 100644
--- a/doc/devblog/day_10__lazy_Sunday.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Fixed a typo that broke automatic youtube video support in `addurl`.
-
-----
-
-Now there's an easy way to get an overview of how close your repository
-is to meeting the configured numcopies settings (or when it exceeds them).
-
-<pre>
-# time git annex status . 
-[...]
-numcopies stats: 
-	numcopies +0: 6686
-	numcopies +1: 3793
-	numcopies +3: 3156
-	numcopies +2: 2743
-	numcopies -1: 1242
-	numcopies -4: 1098
-	numcopies -3: 1009
-	numcopies +4: 372
-</pre>
-
-This does make `git annex status` slow when run on a large directory tree,
-so --fast disables that.
diff --git a/doc/devblog/day_110__release_prep.mdwn b/doc/devblog/day_110__release_prep.mdwn
deleted file mode 100644
--- a/doc/devblog/day_110__release_prep.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Last night I tracked down and fixed a bug in the DAV library that has been
-affecting WebDAV remotes. I've been deploying the fix for that today,
-including to the android and arm autobuilders. While I finished a clean
-reinstall of the android autobuilder, I ran into problems getting a clean
-reinstall of the arm autobuilder (some type mismatch error building
-yesod-core), so manually fixed its DAV for now.
-
-The WebDAV fix and other recent fixes makes me want to make a release soon,
-probably Monday.
-
-ObWindows: Fixed git-annex to not crash when run on Windows
-in a git repository that has a remote with a unix-style path 
-like "/foo/bar". Seems that not everything aggrees on whether such a path
-is absolute; even sometimes different parts of the same library disagree!
-
-[[!format haskell """
-import System.FilePath.Windows
-
-prop_windows_is_sane :: Bool
-prop_windows_is_sane = isAbsolute upath || ("C:\\STUFF" </> upath /= upath)
-  where upath = "/foo/bar"
-"""]]
-
-Perhaps more interestingly, I've been helping dxtrish port git-annex to
-OpenBSD and it seems most of the way there.
diff --git a/doc/devblog/day_111__windows_beta_release.mdwn b/doc/devblog/day_111__windows_beta_release.mdwn
deleted file mode 100644
--- a/doc/devblog/day_111__windows_beta_release.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Pushed out the new release. This is the first one where I consider the
-git-annex command line beta quality on Windows.
-
-Did some testing of the webapp on Windows, trying out every part of the UI.
-I now have eleven todo items involving the webapp listed in
-[[todo/windows_support]]. Most of them don't look too bad to fix.
diff --git a/doc/devblog/day_112__metadata_design.mdwn b/doc/devblog/day_112__metadata_design.mdwn
deleted file mode 100644
--- a/doc/devblog/day_112__metadata_design.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-There's a new design document for letting git-annex store arbitrary
-metadata. The really neat thing about this is the user can check out only
-files matching the tags or values they care about, and get an automatically
-structuted file tree layout that can be dynamically filtered. It's going to
-be awesome! [[design/metadata]]
-
-In the meantime, spent most of today working on Windows. Very good
-progress, possibly motivated by wanting to get it over with so I can spend
-some time this month on the above. ;)
-
-* webapp can make box.com and S3 remotes. This just involved fixing a hack
-  where the webapp set environment variables to communicate creds to
-  initremote. Can't change environment on Windows (or I don't know how to).
-* webapp can make repos on removable drives.
-* `git annex assistant --stop` works, although this is not likely to really
-  be useful
-* The source tree now has 0 `func = error "Windows TODO"` type stubbed out
-  functions to trip over.
diff --git a/doc/devblog/day_113__metadata_groundwork.mdwn b/doc/devblog/day_113__metadata_groundwork.mdwn
deleted file mode 100644
--- a/doc/devblog/day_113__metadata_groundwork.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Built the core data types, and log for metadata storage. Making metadata
-union merge well is tricky, but I have a design I'm happy with, that will
-allow distributed changes to metadata.
-
-Finished up the day with a `git annex metadata` command to get/set metadata
-for a file.
-
-This is all the goundwork needed to begin experimenting with generating
-git branches that display different metadata-driven views of annexed files.
diff --git a/doc/devblog/day_114__windows_porting.mdwn b/doc/devblog/day_114__windows_porting.mdwn
deleted file mode 100644
--- a/doc/devblog/day_114__windows_porting.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Windows porting all day. Fixed a lot of issues with the webapp,
-so quite productive. Except for the 2 hours wasted finding a way to kill a
-process by PID from Haskell on Windows.
-
-Last night, made `git annex metadata` able to set metadata on a whole
-directory or list of files if desired. And added a `--metadata field=value`
-switch (and corresponding preferred content terminal) which limits
-git-annex to acting on files with the specified metadata.
diff --git a/doc/devblog/day_115__windows_porting.mdwn b/doc/devblog/day_115__windows_porting.mdwn
deleted file mode 100644
--- a/doc/devblog/day_115__windows_porting.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-More Windows porting.. Seem to be getting near an end of the easy stuff,
-and also the webapp is getting pretty usable on Windows now, the only
-really important thing lacking is XMPP support.
-
-Made git-annex on Windows set HOME when it's not already set. Several of
-the bundled cygwin tools only look at HOME. This was made a lot harder and
-uglier due to there not being any way to modify the environment of the
-running process.. git-annex has to re-run itself with the fixed
-environment.
-
-Got rsync.net working in the webapp. Although with an extra rsync.net
-password prompt on Windows, which I cannot find a way to avoid.
-
-While testing that, I discovered that openssh 6.5p1 has broken support for
-~/.ssh/config Host lines that contain upper case letters! I have filed a
-bug about this and put a quick fix in git-annex, which sometimes generated
-such lines.
diff --git a/doc/devblog/day_116__views.mdwn b/doc/devblog/day_116__views.mdwn
deleted file mode 100644
--- a/doc/devblog/day_116__views.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-Working on building [[design/metadata]] filtered branches.
-
-Spent most of the day on types and pure code. Finally at the end 
-I wrote down two actions that I still need to implement to make
-it all work:
-
-[[!format haskell """
-applyView' :: MkFileView -> View -> Annex Git.Branch
-updateView :: View -> Git.Ref -> Git.Ref -> Annex Git.Branch
-"""]]
-
-I know how to implement these, more or less. And in most cases
-they will be pretty fast.
-
-The more interesting part is already done. That was the issue of how to
-generate filenames in the filter branches. That depends on the `View` being
-used to filter and organize the branch, but also on the original filename used
-in the reference branch. Each filter branch has a reference branch (such as
-"master"), and displays a filtered and metadata-driven reorganized tree
-of files from its reference branch.
-
-[[!format haskell """
-fileViews :: View -> (FilePath -> FileView) -> FilePath -> MetaData -> Maybe [FileView]
-"""]]
-
-So, a view that matches files tagged "haskell" or "git-annex"
-and with an author of "J\*" will generate filenames like 
-"haskell/Joachim/interesting_theoretical_talk.ogg" and
-"git-annex/Joey/mytalk.ogg".
-
-It can also work backwards from these 
-filenames to derive the MetaData that is encoded in them.
-
-[[!format haskell """
-fromView :: View -> FileView -> MetaData
-"""]]
-
-So, copying a file to "haskell/Joey/mytalk.ogg" lets it know that
-it's gained a "haskell" tag. I knew I was on the right track when
-`fromView` turned out to be only 6 lines of code!
-
-The trickiest part of all this, which I spent most of yesterday thinking
-about, is what to do if the master branch has files in subdirectories. It
-probably does not makes sense to retain that hierarchical directory
-structure in the filtered branch, because we instead have a
-non-hierarchical metadata structure to express. (And there would probably
-be a lot of deep directory structures containing only one file.) But
-throwing away the subdirectory information entirely means that two files
-with the same basename and same metadata would have colliding names.
-
-I eventually decided to embed the subdirectory information into the filenames
-used on the filter branch. Currently that is done by converting
-`dir/subdir/file.foo` to `file(dir)(subdir).foo`. We'll see how this works
-out in practice..
diff --git a/doc/devblog/day_117__views_implemented.mdwn b/doc/devblog/day_117__views_implemented.mdwn
deleted file mode 100644
--- a/doc/devblog/day_117__views_implemented.mdwn
+++ /dev/null
@@ -1,76 +0,0 @@
-Today I built `git annex view`, and `git annex vadd` and a few related
-commands. A quick demo:
-
-<pre>
-joey@darkstar:~/lib/talks>ls
-Chaos_Communication_Congress/  FOSDEM/       Linux_Conference_Australia/
-Debian/                        LibrePlanet/  README.md
-joey@darkstar:~/lib/talks>git annex view tag=*
-view  (searching...)
-Switched to branch 'views/_'
-ok
-joey@darkstar:~/lib/talks#_>tree -d
-.
-|-- Debian
-|-- android
-|-- bigpicture
-|-- debhelper
-|-- git
-|-- git-annex
-`-- seen
-
-7 directories
-joey@darkstar:~/lib/talks#_>git annex vadd author=*
-vadd  
-Switched to branch 'views/author=_;_'
-ok
-joey@darkstar:~/lib/talks#author=_;_>tree -d
-.
-|-- Benjamin Mako Hill
-|   `-- bigpicture
-|-- Denis Carikli
-|   `-- android
-|-- Joey Hess
-|   |-- Debian
-|   |-- bigpicture
-|   |-- debhelper
-|   |-- git
-|   `-- git-annex
-|-- Richard Hartmann
-|   |-- git
-|   `-- git-annex
-`-- Stefano Zacchiroli
-    `-- Debian
-
-15 directories
-joey@darkstar:~/lib/talks#author=_;_>git annex vpop
-vpop 1
-Switched to branch 'views/_'
-ok
-joey@darkstar:~/lib/talks#_>git annex vadd tag=git-annex
-vadd  
-Switched to branch 'views/(git-annex)'
-ok
-joey@darkstar:~/lib/talks#(git-annex)>ls
-1025_gitify_your_life_{Debian;2013;DebConf13;high}.ogv@
-git_annex___manage_files_with_git__without_checking_their_contents_into_git_{FOSDEM;2012;lightningtalks}.webm@
-mirror.linux.org.au_linux.conf.au_2013_mp4_gitannex_{Linux_Conference_Australia;2013}.mp4@
-joey@darkstar:~/lib/talks#_>git annex vpop 2
-vpop 2
-Switched to branch 'master'
-ok
-</pre>
-
-Not 100% happy with the speed -- the generation of the view branch is close
-to optimal, and fast enough (unless the branch has very many matching
-files). And `vadd` can be quite fast if the view has already limited the
-total number of files to a smallish amount. But `view` has to look at every
-file's metadata, and this can take a while in a large repository. Needs indexes.
-
-It also needs integration with `git annex sync`, so the view branches
-update when files are added to the master branch, and moving files around
-inside a view and committing them does not yet update their metadata.
-
----
-
-Today's work was sponsored by Daniel Atlas.
diff --git a/doc/devblog/day_118__views_refined.mdwn b/doc/devblog/day_118__views_refined.mdwn
deleted file mode 100644
--- a/doc/devblog/day_118__views_refined.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Still working on views. The most important addition today is that
-`git annex precommit` notices when files have been moved/copied/deleted
-in a view, and updates the metadata to reflect the changes.
-
-Also wrote some walkthrough documentation: [[tips/metadata_driven_views]].  
-And, recorded a screencast demoing views, which I will upload next time
-I have bandwidth.
diff --git a/doc/devblog/day_119__catching_up.mdwn b/doc/devblog/day_119__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_119__catching_up.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Spent the day catching up on the last week or so's traffic. Ended up
-making numerous small big fixes and improvements. Message backlog stands at
-44.
-
-Here's the [[screencast demoing views|videos/git-annex_views_demo]]!
-
-Added to the design today the idea of
-automatically deriving metadata from the location of files in the master
-branch's directory tree. Eg, `git annex view tag=* podcasts/=*` in a
-repository that has a `podcasts/` directory would make a tree like
-"$tag/$podcast". Seems promising. 
-
-So much still to do with views.. I have belatedly added them to
-the roadmap for this month; doing Windows and Android in the same month was
-too much to expect.
diff --git a/doc/devblog/day_11__webapp_encrypted_drives.mdwn b/doc/devblog/day_11__webapp_encrypted_drives.mdwn
deleted file mode 100644
--- a/doc/devblog/day_11__webapp_encrypted_drives.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Now the webapp can set up encrypted repositories on removable drives.
-
-[[assistant/encryptdrive.png]]
-
-This UI needs some work, and the button to create a new key is not wired
-up. Also if you have no gpg agent installed, there will be lots of password
-prompts at the console.
-
-Forked git-remote-gcrypt to fix a bug. Hopefully my patch will be merged;
-for now I recommend installing my worked version.
-
-Today's work was sponsored by Romain Lenglet.
diff --git a/doc/devblog/day_120__more_metadata.mdwn b/doc/devblog/day_120__more_metadata.mdwn
deleted file mode 100644
--- a/doc/devblog/day_120__more_metadata.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-When generating a view, there's now a way to reuse part of the directory
-hierarchy of the parent branch. For example, `git annex view tag=* podcasts/=*`
-makes a view where the first level is the tags, and the second level is
-whatever `podcasts/*` directories the files were in.
-
-Also, year and month metadata can be automatically recorded when
-adding files to the annex. I made this only be done when annex.genmetadata
-is turned on, to avoid polluting repositories that don't want to use metadata.
-
-It would be nice if there was a way to add a hook script that's run
-when files are added, to collect their metadata. I am not sure yet if
-I am going to add that to git-annex though. It's already possible to do via
-the regular git `post-commit` hook. Just make it look at the commit to see
-what files were added, and then run `git annex metadata` to set their
-metadata appropriately. It would be good to at least have an example of
-such a script to eg, extract EXIF or ID3 metadata. Perhaps someone can
-contribute one?
diff --git a/doc/devblog/day_121__special_remote_maintenance.mdwn b/doc/devblog/day_121__special_remote_maintenance.mdwn
deleted file mode 100644
--- a/doc/devblog/day_121__special_remote_maintenance.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Turns out that in the last release I broke making box.com, Amazon S3 and
-Glacier remotes from the webapp. Fixed that.
-
-Also, dealt with changes in the haskell DAV library that broke support for
-box.com, and worked around an exception handling bug in the library.
-
-I think I should try to enhance the test suite so it can run live tests
-on special remotes, which would at least have caught the some of these
-recent problems...
-
-----
-
-Since metadata is tied to a particular key, editing an annexed file,
-which causes the key to change, made the metadata seem to get lost.
-
-I've now fixed this; it copies the metadata from the old version to the new
-one. (Taking care to copy the log file identically, so git can reuse its
-blob.) 
-
-That meant that `git annex add` has to check every file it adds to see if
-there's an old version. Happily, that check is fairly fast; I benchmarked my
-laptop running 2500 such checks a second. So it's not going to slow things
-down appreciably.
diff --git a/doc/devblog/day_122_more_windows_porting.mdwn b/doc/devblog/day_122_more_windows_porting.mdwn
deleted file mode 100644
--- a/doc/devblog/day_122_more_windows_porting.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-More Windows porting. Made the build completely `-Wall` safe on Windows.
-Fixed some DOS path separator bugs that were preventing WebDav from
-working. Have now tested both box.com and Amazon S3 to be completely
-working in the webapp on Windows.
diff --git a/doc/devblog/day_123__stuck.mdwn b/doc/devblog/day_123__stuck.mdwn
deleted file mode 100644
--- a/doc/devblog/day_123__stuck.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Not a lot accomplished today. Some release prep, followed up to a few bug
-reports.
-
-Split git-annex's .git/annex/tmp into two directories. .git/annex/tmp will
-now be used only for partially transferred objects, while
-.git/annex/misctmp will be used for everything else. In particular this
-allows symlinking .git/annex/tmp to a ram disk, if you want to do that.
-(It's not possible for .git/annex/misctmp to be on a different filesystem
-from the rest of the repository for various reasons.)
-
-Beat on Windows XMPP for several more painful hours. Got all the haskell
-bindings installed, except for gnuidn. And patched network-client-xmpp to
-build without gnuidn. Have not managed to get it to link.
diff --git a/doc/devblog/day_124__day_off.mdwn b/doc/devblog/day_124__day_off.mdwn
deleted file mode 100644
--- a/doc/devblog/day_124__day_off.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Did not plan to work on git-annex today..
-
-Unexpectedly ended up making the webapp support HTTPS. Not by default,
-but if a key and certificate are provided, it'll use them. Great for
-using the webapp remotely! See the new tip: [[tips/remote_webapp_setup]].
-
-Also removed support for --listen with a port, which was buggy and not
-necessary with HTTPS.
-
-Also fixed several webapp/assistant bugs, including one that let it be run in
-a bare git repository.
-
-And, made the quvi version be probed at runtime, rather than compile time.
diff --git a/doc/devblog/day_125__metadata_and_views.mdwn b/doc/devblog/day_125__metadata_and_views.mdwn
deleted file mode 100644
--- a/doc/devblog/day_125__metadata_and_views.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Worked on metadata and views. Besides bugfixes, two features of note:
-
-Made git-annex run a hook script, pre-commit-annex. And I wrote a
-sample script that extracts metadata from lots of kinds of files,
-including photos and sound files, using extract(1) to do the heavy lifting.
-See [[tips/automatically_adding_metadata]].
-
-Views can be filtered to not include a tag or a field.
-For example, `git annex view tag=* !old year!=2013`
-
-Today's work was sponsored by Stephan Schulz
diff --git a/doc/devblog/day_128__release_prep.mdwn b/doc/devblog/day_128__release_prep.mdwn
deleted file mode 100644
--- a/doc/devblog/day_128__release_prep.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Preparing for a release (probably tomorrow or Friday).
-
-Part of that was updating the autobuilders. Had to deal with the gnutls
-security hole fix, and upgrading that on the OSX autobuilder turned out to
-be quite complicated due to library version skew. Also, I switched the
-linux autobuilders over to building from Debian unstable, rather than
-stable. That should be ok to do now that the standalone build bundles all
-the libraries it needs... And the arm build has always used unstable, and
-has been reported working on a lot of systems. So I think this will be
-safe, but have backed up the old autobuilder chroots just in case.
-
-Also been catching up on bug reports and traffic and 
-and dealt with quite a lot of things today. Smarter log file
-rotation for the assistant, better webapp behavior when git is not
-installed, and a fix for the webdav 5 second timeout problem.
-
-Perhaps the most interesting change is a new `annex.startupscan` setting,
-which can be disabled to prevent the assistant from doing the expensive
-startup scan. This means it misses noticing any files that changed since it
-last run, but this should be useful for those really big repositories.
-
-(Last night, did more work on the test suite, including even more checking
-of merge conflict resolution.)
-
-----
-
-Today's work was sponsored by Michael Alan Dorman.
diff --git a/doc/devblog/day_12__gpg_key_generation.mdwn b/doc/devblog/day_12__gpg_key_generation.mdwn
deleted file mode 100644
--- a/doc/devblog/day_12__gpg_key_generation.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-I decided to keep gpg key generation very simple for now. So it generates a
-special-purpose key that is only intended to be used by git-annex. It
-hardcodes some key parameters, like RSA and 4096 bits (maximum recommended
-by gpg at this time). And there is no password on the key, although you can
-of course edit it and set one. This is because anyone who can access the
-computer to get the key can also look at the files in your git-annex
-repository. Also because I can't rely on gpg-agent being installed
-everywhere. All these simplifying assumptions may be revisited later, but
-are enough for now for someone who doesn't know about gpg (so doesn't 
-have a key already) and just wants an encrypted repo on a
-removable drive.
-
-Put together a simple UI to deal with gpg taking quite a while to
-generate a key ...
-
-[[assistant/genkey.png]]
-
-[[assistant/repoinfo.png]]
-
-Then I had to patch git-remote-gcrypt again, to have a per-remote
-signingkey setting, so that these special-purpose keys get used for signing
-their repo.
-
-Next, need to add support for adding an existing gcrypt repo as a remote
-(assuming it's encrypted to an available key). Then, gcrypt repos on ssh
-servers..
-
-----
-
-Also dealt with build breakage caused by a new version of the Haskell DNS
-library.
-
-----
-
-Today's work was sponsored by Joseph Liu.
diff --git a/doc/devblog/day_130__post_release.mdwn b/doc/devblog/day_130__post_release.mdwn
deleted file mode 100644
--- a/doc/devblog/day_130__post_release.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Release made yesterday, but only finished up the armel build today. 
-And it turns out the OSX build was missing the webapp, so it's also been
-updated today.
-
-Post release bug triage including:
-
-Added a nice piece of UI to the webapp on user request: A "Sync now" menu
-item in the repository for each repo. (The one for the current repo syncs with
-all its remotes.)
-
-Copying files to a git repository on the same computer turns out to have
-had a resource leak issue, that caused 1 zombie process per file. With
-some tricky monad state caching, fixed that, and also eliminated 8% of the work
-done by git-annex in this case.
-
-Fixed `git annex unused` in direct mode to not think that files that were
-deleted out of the work tree by the user still existed and were unused.
diff --git a/doc/devblog/day_131__more_bug_squashing.mdwn b/doc/devblog/day_131__more_bug_squashing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_131__more_bug_squashing.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Squashed three or four more bugs today. Unanswered message backlog is down
-to 27.
-
-The most interesting problem today is that the git-repair code was using
-too much memory when `git-fsck` output a lot of problems (300 thousand!). I
-managed to half the memory use in the worst case (and reduced it much more
-in more likely cases). But, don't really feel I can close that bug yet,
-since really big, really badly broken repositories can still run it out of
-memory. It would be good to find a way to reorganize the code so that the
-broken objects list streams through git-repair and never has to all be
-buffered in memory at once. But this is not easy.
diff --git a/doc/devblog/day_132__database_musings.mdwn b/doc/devblog/day_132__database_musings.mdwn
deleted file mode 100644
--- a/doc/devblog/day_132__database_musings.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Updated the Debian stable backport to the last release. Also it seems that
-the last release unexpectedly fixed XMPP SIGILL on some OSX machines.
-Apparently when I rebuilt all the libraries recently, it somehow fixed that
-[[old_unsolved_bug|bugs/Share_with_friends_crash_in_osx]].
-
-[RichiH](http://richardhartmann.de/) suggested "wrt ballooning memory on
-repair: can you read in broken
-stuff and simply stop reading once you reach a certain threshold, then
-start repairing, re-run fsck, etc?" .. I had considered that but was
-not sure it would work. I think I've gotten it to work.
-
-Now working on a design for using a [[design/caching_database]]
-for some parts of git-annex. My initial benchmarks using SQLite
-indicate it would slow down associated file lookups by nearly an order of
-magnitude compared with the current ".map files" implementation.
-(But would scale better in edge cases). OTOH, using a SQLite
-database to index metadata for use in views looks very promising.
diff --git a/doc/devblog/day_133__db_and_bugfixes.mdwn b/doc/devblog/day_133__db_and_bugfixes.mdwn
deleted file mode 100644
--- a/doc/devblog/day_133__db_and_bugfixes.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Did some more exploration and perf tuning and thinking on caching
-databases, and am pretty sure I know how I want to implement it. Will be
-several stages, starting with using it for generating views, and ending(?)
-with using it for direct mode file mappings.
-
-Not sure I'm ready to dive into that yet, so instead spent the rest of the
-day working on small bugfixes and improvements. Only two significant ones..
-
-Made the webapp use a constant time string comparison (from `securemem`)
-to check if its auth token is valid. This could help avoid a potential
-timing attack to guess the auth token, although that is theoretical.
-Just best practice to do this.
-
-Seems that openssh 6.5p1 had another hidden surprise (in addition to
-its now-fixed bug in handing hostnames in `.ssh/config`) -- it broke
-the method git-annex was using for stopping a cached ssh connection,
-which led to some timeouts for failing DNS lookups. If git-annex seems
-to stall for a few seconds at startup/shutdown, that may be why
-(--debug will say for sure). I seem to have found a workaround that
-avoids this problem.
diff --git a/doc/devblog/day_134-135__avoiding_the_turing_tarpit.mdwn b/doc/devblog/day_134-135__avoiding_the_turing_tarpit.mdwn
deleted file mode 100644
--- a/doc/devblog/day_134-135__avoiding_the_turing_tarpit.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Added some power and convenience to [[preferred_content]] expressions.
-
-Before, "standard" was a special case. Now it's a first-class keyword,
-so you can do things like "standard or present" to use the standard
-preferred content expression, modified to also want any file that happens
-to be present.
-
-Also added a way to write your own reusable preferred content expressions,
-tied to groups. To make a repository use them, set its preferred 
-content to "groupwanted". Of course, "groupwanted" is also a first-class
-keyword, so "not groupwanted" or something can also be done.
-
-While I was at it, I made `vicfg` show the built-in standard preferred
-content expressions, for reference. This little IDE should be pretty
-self-explanatory, I hope.
-
-So, preferred content is almost its own little programming language now.
-Except I was careful to not allow recursion. ;)
diff --git a/doc/devblog/day_136__frustrating_day.mdwn b/doc/devblog/day_136__frustrating_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_136__frustrating_day.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-The website broke and I spent several hours fixing it, changing the
-configuration to not let it break like this again, cleaning up after it,
-etc.
-
-Did manage to make a few minor bugfixes and improvements, but nothing
-stunning.
-
-----
-
-I'll be attending LibrePlanet at MIT this weekend.
diff --git a/doc/devblog/day_137-138__bug_triage_and_too_much_windows.mdwn b/doc/devblog/day_137-138__bug_triage_and_too_much_windows.mdwn
deleted file mode 100644
--- a/doc/devblog/day_137-138__bug_triage_and_too_much_windows.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Yesterday, worked on cleaning up the todo list. Fixed Windows slash problem
-with rsync remotes. Today, more Windows work; it turns out to have been
-quite buggy in its handling of non-ASCII characters in filenames. Encoding
-stuff is never easy for me, but I eventually managed to find a way to fix
-that, although I think there are other filename encoding problems lurking
-in git-annex on Windows still to be dealt with.
-
-Implemented an interesting metadata feature yesterday. It turns out that
-metadata can have metadata. Particularly, it can be useful to know when a
-field was last set. That was already beeing tracked, internally (to make
-union merging work), so I was able to quite cheaply expose it as
-"$field-lastchanged" metadata that can be used like any other metadata.
-
-I've been thinking about how to implement [[todo/required_content]]
-expressions, and think I have a reasonably good handle on it.
diff --git a/doc/devblog/day_139-140__traveling.mdwn b/doc/devblog/day_139-140__traveling.mdwn
deleted file mode 100644
--- a/doc/devblog/day_139-140__traveling.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Yesterday coded up one nice improvement on the plane -- `git annex unannex`
-(and `uninit`) is now tons faster. Before it did a git commit after every
-file processed, now there's just 1 commit at the end. This required using
-some locking to prevent the `pre-commit` hook from running in a confusing
-state.
-
-Today. LibrePlanet and a surprising amount of development. I've
-added [[tips/file_manager_integration]], only for Nautilus so far.
-The main part of this was adding --notify-start and --notify-finish, which
-use dbus desktop notifications to provide feedback. 
-
-(Made possible thanks to Max Rabkin for updating
-[fdo-notify](http://hackage.haskell.org/package/fdo-notify) to use the
-new dbus library, and ion for developing the initial Nautilus integration
-scripts.)
-
-Today's work and LibrePlanet visit was sponsored by Jürgen Lüters.
diff --git a/doc/devblog/day_13__encrypted_sneakernet_working.mdwn b/doc/devblog/day_13__encrypted_sneakernet_working.mdwn
deleted file mode 100644
--- a/doc/devblog/day_13__encrypted_sneakernet_working.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Spent basically all of today getting the assistant to be able to handle
-gcrypt special remotes that already exist when it's told to add a USB
-drive. This was quite tricky! And I did have to skip handling gcrypt repos
-that are not git-annex special remotes.
-
-Anyway, it's now almost easy to set up an encrypted sneakernet 
-using a USB drive and some computers running the webapp. The only part
-that the assistant doesn't help with is gpg key management.
-
-Plan is to make a release on Friday, and then try to also add support for
-encrypted git repositories on remote servers. Tomorrow I will try to get
-through some of the communications backlog that has been piling up while I
-was head down working on gcrypt.
diff --git a/doc/devblog/day_141__f-droid_sprint.mdwn b/doc/devblog/day_141__f-droid_sprint.mdwn
deleted file mode 100644
--- a/doc/devblog/day_141__f-droid_sprint.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Attended at the f-droid sprint at LibrePlanet, and have been getting a
-handle on how their build server works with an eye toward adding git-annex
-to it. Not entirely successful getting vagrant to build an image yet.
diff --git a/doc/devblog/day_142__digging_out.mdwn b/doc/devblog/day_142__digging_out.mdwn
deleted file mode 100644
--- a/doc/devblog/day_142__digging_out.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Catching up on conference backlog. 36 messages backlog remains.
-
-Fixed `git-annex-shell configlist` to automatically initialize a
-git remote when a git-annex branch had been pushed to it. This is necessary
-for gitolite to be easy to use, and I'm sure it used to work.
-
-Updated the Debian backport and made a Debian package of the
-fdo-notify haskell library used for notifications.
-
-Applied a patch from Alberto Berti to fix support for tahoe-lafs
-1.10.
-
-And various other bug fixes and small improvements.
diff --git a/doc/devblog/day_143__foolish_hiatus.mdwn b/doc/devblog/day_143__foolish_hiatus.mdwn
deleted file mode 100644
--- a/doc/devblog/day_143__foolish_hiatus.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Last week's trip was productive, but I came home more tired than I
-realized. Found myself being snappy & stressed, so I have been on break.
-
-I did do a little git-annex dev in the past 5 days. On Saturday I
-implemented [[todo/preferred_content]] (although without the active checks
-I think it probably ought to have.) Yesterday I had a long conversation
-with the Tahoe developers about improving git-annex's tahoe integration.
-
-Today, I have been wrapping up [building propellor](http://joeyh.name/code/propellor/).
-To test its docker support, I used propellor to build and deploy a
-container that is a git-annex autobuilder. I'll be replacing the old
-autobuilder setup with this shortly, and expect to also publish docker
-images for git-annex autobuilders, so anyone who wants to can run their
-own autobuilder really easily.
-
----
-
-I have April penciled in on the roadmap as the month to do telehash.
-I don't know if telehash-c is ready for me yet, but it has had a lot of
-activity lately, so this schedule may still work out!
diff --git a/doc/devblog/day_144__catching_up.mdwn b/doc/devblog/day_144__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_144__catching_up.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Got caught up on all recent bugs and questions, although I still have a
-backlog of 27 older things that I really should find time for.
-
-Fixed a couple of bugs. One was that the assistant set up ssh
-`authorized_keys` that didn't work with the fish shell.
-
-Also got caught up on the current state of telehash-c. Have not quite
-gotten it to work, but it seems pretty close to being able to see it do
-something useful for the first time.
-
-Pushing out a release this evening with a good number of changes left over
-from March.
diff --git a/doc/devblog/day_145__a_plan.mdwn b/doc/devblog/day_145__a_plan.mdwn
deleted file mode 100644
--- a/doc/devblog/day_145__a_plan.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-I have a plan for this month. While waiting for telehash, I am going to
-build [[design/git-remote-daemon]], which is the infrastructure git-annex
-will need, to use telehash. Since it's generalized to support other protocols,
-I'll be able to start using it before telehash is ready.
-
-In fact, I plan to first make it work with ssh:// remotes, where
-it will talk with git-annex-shell on the remote server. This will let the
-assistant immediately know when the server has received a commit, and that
-will simplify using the assistant with a ssh server -- no more need for
-XMPP in this case! It should also work with git-remote-gcrypt encrypted
-repositories, so also covers the case of an untrusted ssh server where
-everything is end-to-end encrypted.
-
-Building the git-annex-shell part of this should be pretty easy, and
-building enough of the [[design/git-remote-daemon]] design to support it
-also not hard.
diff --git a/doc/devblog/day_146__halfway_to_git-remote-daemon.mdwn b/doc/devblog/day_146__halfway_to_git-remote-daemon.mdwn
deleted file mode 100644
--- a/doc/devblog/day_146__halfway_to_git-remote-daemon.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Added `git-annex-shell notifychanges` command, which uses inotify (etc)
-to detect when git refs have changed, and informs the caller about the
-changes. This was relatively easy to write; I reused the existing inotify
-code, and factored out code for simple line-based protocols from the
-external special remote protocol. Also implemented the git-remote-daemon
-protocol. 200 lines of code total.
-
-Meanwhile, Johan Kiviniemi improved the dbus notifications, making them
-work on Ubuntu and adding icons. Awesome!
-
-There's going to be some fun to get git-annex-shell upgraded so that the
-assistant can use this new notify feaure. While I have not started working
-on the assistant side of this, you can get a jump by installing today's
-upcoming release of git-annex. I had to push this out early because there
-was a bug that prevented the webapp from running on non-gnome systems. Since
-all changes in this release only affected Linux, today's release will be a
-Linux-only release.
diff --git a/doc/devblog/day_147__git-annex_remotedaemon.mdwn b/doc/devblog/day_147__git-annex_remotedaemon.mdwn
deleted file mode 100644
--- a/doc/devblog/day_147__git-annex_remotedaemon.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Built `git-annex remotedaemon` command today. It's buggy, but it already
-works! If you have a new enough git-annex-shell on a remote server, you can
-run "git annex remotedaemon" in a git-annex repository, and it will notice
-any pushes that get made to that remote from any other clone, and pull down
-the changes.
diff --git a/doc/devblog/day_148__too_many_documents.mdwn b/doc/devblog/day_148__too_many_documents.mdwn
deleted file mode 100644
--- a/doc/devblog/day_148__too_many_documents.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Various bug triage today. Was not good for much after shuffling paper for
-the whole first part of the day, but did get a few little things done.
-
-Re <http://heartbleed.com/>, git-annex does not use OpenSSL itself,
-but when using XMPP, the remote server's key could have been intercepted
-using this new technique. Also, the git-annex autobuilds and this website
-are served over https -- working on generating new https certificates now.
-Be safe out there..
diff --git a/doc/devblog/day_149__remote_control_working.mdwn b/doc/devblog/day_149__remote_control_working.mdwn
deleted file mode 100644
--- a/doc/devblog/day_149__remote_control_working.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-[[design/git-remote-daemon]] is tied into the assistant, and working!
-Since it's not really ready yet, this is in the `remotecontrol` branch.
-
-My test case for this is two client repositories, both running
-the assistant. Both have a bare git repository, accessed over ssh,
-set up as their only remote, and no other way to keep in touch with
-one-another. When I change a file in one repository,
-the other one instantly notices the change and syncs.
-
-This is gonna be *awesome*. Much less need for XMPP. Windows will be fully
-usable even without XMPP. Also, most of the work I did today will be fully
-reused when the telehash backend gets built. The telehash-c developer is
-making noises about it being almost ready for use, too!
-
-Today's work was sponsored by Frédéric Schütz.
diff --git a/doc/devblog/day_149__signal.mdwn b/doc/devblog/day_149__signal.mdwn
deleted file mode 100644
--- a/doc/devblog/day_149__signal.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!meta title="day 150 signal"]]
-
-The git-remote-daemon now robustly handles loss of signal, with
-reconnection backoffs. And it detects if the remote ssh server has too
-old a version of git-annex-shell and the webapp will display a warning
-message.
-
-[[!img /assistant/connection.png]]
-
-Also, made the webapp show a network signal bars icon next to both
-ssh and xmpp remotes that it's currently connected with. And, updated the
-webapp's nudging to set up XMPP to now suggest either an XMPP or a ssh remote.
-
-I think that the `remotecontrol` branch is nearly ready for merging!
-
-Today's work was sponsored by Paul Tagliamonte.
diff --git a/doc/devblog/day_14__gcrypt_refinements_and_OOM_fixes.mdwn b/doc/devblog/day_14__gcrypt_refinements_and_OOM_fixes.mdwn
deleted file mode 100644
--- a/doc/devblog/day_14__gcrypt_refinements_and_OOM_fixes.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Spent a few hours improving gcrypt in some minor ways, including adding a
---check option that the assistant can use to find out if a given repo is
-encrypted with dgit, and also tell if the necessary gpg key is available to
-decrypt it. Also merged in a fix to support subkeys, developed by a
-git-annex user who is the first person I've heard from who is using gcrypt.
-I don't want to maintain gcrypt, so I am glad its author has shown up
-again today.
-
-Got mostly caught up on backlog. The main bug I was able to track down
-today is git-annex using a lot of memory in certian repositories. This
-turns out to have happened when a really large file was committed right
-intoo to the git repository (by mistake or on purpose). Some parts of
-git-annex buffer file contents in memory while trying to work out if
-they're git-annex keys. Fixed by making it first check if a file in git is
-marked as a symlink. Which was really hard to do!
-
-At least 4 people ran into this bug, which makes me suspect that lots of
-people are messing up when using direct mode (probably due to not reading
-the documentation, or having `git commit -a` hardwired into their fingers,
-and forcing git to commit large files into their repos, rather than having
-git-annex manage them. Implementing [[todo/direct_mode_guard]] seems more
-urgent now.
-
-----
-
-Today's work was sponsored by Amitai Schlair.
diff --git a/doc/devblog/day_15-17__Android_rebuild.mdwn b/doc/devblog/day_15-17__Android_rebuild.mdwn
deleted file mode 100644
--- a/doc/devblog/day_15-17__Android_rebuild.mdwn
+++ /dev/null
@@ -1,67 +0,0 @@
-Made a release on Friday. But I had to rebuild the OSX and Linux standalone
-builds today to fix a bug in them.
-
-Spent the past **three days** redoing the whole Android build environment.
-I've been progressively moving from my first hacked up Android build env to
-something more reproducible and sane. Finally I am at the point where I can
-run a shell script (well, actually, 3 shell scripts) and get an Android
-build chroot. It's still not immune to breaking when new versions of
-haskell libs are uploaded, but this is much better, and should be
-maintainable going forward. 
-
-This is a good starting point for getting git-annex into the F-Droid app
-store, or for trying to build with a newer version of the Android SDK and
-NDK, to perhaps get it working on Android 4.3. (Eventually. I am so sick
-of building Android stuff right now..)
-
-Friday was all spent struggling to get ghc-android to build. I had not built
-it successfully since February. I finally did,
-on Saturday, and I have made my own fork of it which builds using a
-known-good snapshot of the current development version of ghc. Building
-this in a Debian stable chroot means that there should be no possibility
-that upstream changes will break the build again.
-
-With ghc built, I moved on to building all the haskell libs git-annex
-needs. Unfortunately my build script for these also has stopped working
-since I made it in April. I failed to pin every package at a defined
-version, and things broke.
-
-So, I redid the build script, and updated all the haskell libs to the
-newest versions while I was at it. I have decided not to pin the library
-versions (at least until I find a foolproof way to do it), so this new
-script will break in the future, but it should break in a way I can fix up
-easily by just refreshing a patch.
-
-The new ghc-android build has a nice feature of at least being able to
-compile Template Haskell code (though still not run it at compile time.
-This made the patching needed in the Haskell libs quite a lot less. Offset
-somewhat by me needing to make general fixes to lots of libs to build with
-ghc head. Including some fun with `==#` changing its type from `Bool` to
-`Int#`. In all, I think I removed around 2.5 thousand lines of patches!
-(Only 6 thousand lines to go...)
-
-Today I improved ghc-android some more so it cross builds several C libraries
-that are needed to build several haskell libraries needed for XMPP.
-I had only ever built those once, and done it by hand, and very hackishly.
-Now they all build automatically too.
-
-And, I put together a script that builds the debian stable chroot and
-installs ghc-android.
-
-And, I hacked on the EvilSplicer (which is sadly still needed) to
-work with the new ghc/yesod/etc.
-
-At this point, I have git-annex successfully building, including the APK!
-
-----
-
-In a bored hour waiting for a compile, I also sped up `git annex add`
-on OSX by I think a factor of 10. Using cryptohash for hash calculation
-now, when external hash programs are not available. It's still a few
-percentage points slower than external hash programs, or I'd use it by
-default.
-
-----
-
-This period of important drudgery was sponsored by an unknown bitcoin
-user, and by Bradley Unterrheiner and Andreas Olsson.
diff --git a/doc/devblog/day_151__birthday_bug.mdwn b/doc/devblog/day_151__birthday_bug.mdwn
deleted file mode 100644
--- a/doc/devblog/day_151__birthday_bug.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Pushed out a new release today, fixing two important bugs, followed by a
-second release which fixed the bugs harder.
-
-Automatic upgrading was broken on OSX. The webapp will tell you upgrading
-failed, and you'll need to manually download the .dmg and install it.
-
-With help from Maximiliano Curia, finally tracked down a bug I have been
-chasing for a while where the assistant would start using a lot of CPU
-while not seeming to be busy doing anything. Turned out to be triggered by
-a scheduled fsck that was configured to run once a month with no particular
-day specified.
-
-That bug turned out to affect users who first scheduled such a fsck job
-after the 11th day of the month. So I expedited putting a release out to
-avoid anyone else running into it starting tomorrow.
-
-(Oddly, the 11th day of this month also happens to be my birthday. I did not
-expect to have to cut 2 releases today..)
diff --git a/doc/devblog/day_152__more_ssh_connection_caching.mdwn b/doc/devblog/day_152__more_ssh_connection_caching.mdwn
deleted file mode 100644
--- a/doc/devblog/day_152__more_ssh_connection_caching.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Made ssh connection caching be used in several more places. `git annex
-sync` will use it when pushing/pulling to a remote, as will the assistant.
-And `git-annex remotedaemon` also uses connection caching. So, when
-a push lands on a ssh remote, the assistant will immediately notice it, and
-pull down the change over the same TCP connection used for the
-notifications.
-
-This was a bit of a pain to do. Had to set `GIT_SSH=git-annex` and then
-when git invokes git-annex as ssh, it runs ssh with the connection caching
-parameters.
-
-Also, improved the network-manager and wicd code, so it detects when a
-connection has gone down. That propagates through to the remote-daemon,
-which closes all ssh connections. I need to also find out how to detect
-network connections/disconnections on OSX..
-
-Otherwise, the remote-control branch seems ready to be merged. But I want
-to test it for a while first.
-
-----
-
-Followed up on yesterday's bug with writing some test cases for
-Utility.Scheduled, which led to some more bug fixes. Luckily nothing
-I need to rush out a release over. In the end, the code got a lot
-simpler and clearer.
-
-[[!format haskell """
--- Check if the new Day occurs one month or more past the old Day.
-oneMonthPast :: Day -> Day -> Bool
-new `oneMonthPast` old = fromGregorian y (m+1) d <= new
-  where
-        (y,m,d) = toGregorian old
-"""]]
-
--------
-
-Today's work was sponsored by Asbjørn Sloth Tønnesen.
diff --git a/doc/devblog/day_153__remotedaemon_has_landed.mdwn b/doc/devblog/day_153__remotedaemon_has_landed.mdwn
deleted file mode 100644
--- a/doc/devblog/day_153__remotedaemon_has_landed.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-After fixing a few bugs in the `remotecontrol` branch, It's landed in
-`master`. Try a daily build today, and see if the assistant can keep in
-sync using nothing more than a remote ssh repository!
-
-So, now all the groundwork for telehash is laid too. I only need a
-telehash library to start developing on top of. Development on telehash-c
-is continuing, but I'm more excited that
-[htelehash](https://github.com/alanz/htelehash/tree/v2) 
-has been revived and is being updated to the v2 protocol, seemingly quite
-quickly.
diff --git a/doc/devblog/day_154__catching_up.mdwn b/doc/devblog/day_154__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_154__catching_up.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Worked through message backlog today. Got it down from around 70 to just
-37. Was able to fix some bugs, including making the webapp start up more
-robustly in some misconfigurations.
-
-Added a new `findref` command which may be useful in a git `update` hook to
-deny pushes of refs if the annexed content has not been sent first.
-
-----
-
-BTW, I also added a new `reinit` command a few days ago, which can be
-useful if you're cloning back a deleted repository.
-
-Also a few days ago, I made `uninit` a *lot* faster.
diff --git a/doc/devblog/day_155__missing_bits.mdwn b/doc/devblog/day_155__missing_bits.mdwn
deleted file mode 100644
--- a/doc/devblog/day_155__missing_bits.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Sometimes you don't notice something is missing for a long time until
-it suddenly demands attention. Like today.
-
-Seems the webapp never had a way to stop using XMPP and delete the XMPP
-password. So I added one.
-
-The new support for instantly noticing changes on a ssh remote forgot to
-start up a connection to a new remote after it was created. Fixed that.
-
-(While doing some testing on Android for unrelated reasons, I noticed that
-my android tablet was pushing photos to a ssh server and my laptop
-immediately noticed and downloaded them from tere, which is an excellent
-demo. I will deploy this on my trip in Brazil next week. Yes, I'm spending
-2 weeks in Brazil with git-annex users; more on this later.)
-
-Finally, it turns out that "installing" git-annex from the standalone
-tarball, or DMG, on a server didn't make it usable by the webapp. Because
-git-annex shell is not in PATH on the server, and indeed git and rsync may
-not be in PATH either if they were installed with the git-annex bundle.
-Fixed this by making the bundle install a ~/.ssh/git-annex-wrapper, which 
-the webapp will detect and use.
-
-Also, quite a lot of other bug chasing activity.
-
-----
-
-Today's work was sponsored by Thomas Koch.
diff --git a/doc/devblog/day_156__release_day.mdwn b/doc/devblog/day_156__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_156__release_day.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I hope this will be a really good release. Didn't get all the way to
-[[design/assistant/telehash]] this month, but the remotedaemon is pretty sweet. Updated [[design/roadmap]]
-pushes telehash back again.
-
-The files in this release are now gpg signed, after recently moving the
-downloads site to a dedicated server, which has a dedicated gpg key.
-You can verify the detached signatures as an additional security check
-over trusting SSL. The automatic upgrade code doesn't check the gpg
-signatures yet.
-
-Sören Brunk has ported the webapp to Bootstrap 3.
-<https://github.com/brunksn/git-annex/tree/bootstrap3>  
-The branch is not ready for merging yet (it would break the Debian stable
-backports), but that was a nice surprise.
diff --git a/doc/devblog/day_157__upgrade_checking.mdwn b/doc/devblog/day_157__upgrade_checking.mdwn
deleted file mode 100644
--- a/doc/devblog/day_157__upgrade_checking.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Now git-annex's self-upgrade code will check the gpg signature of a
-new version before using it.
-
-To do this I had to include the gpg public keys into the
-git-annex distribution, and that raised the question of which public keys
-to include. Currently I have both the dedicated git-annex distribution
-signing key, and my own gpg key as a backup in case I somehow misplace the
-former.
-
-Also spent a while looking at the recent logs on the web server. There
-seem to be around 600 users of the assistant with
-upgrade checking enabled. That breaks down to 68% Linux amd64, 20% Linux
-i386, 11% OSX Mavericks, and 0.5% OSX Lion.
-
-Most are upgrading successfully, but there are a few that seem to
-repeatedly fail for some reason. (Not counting the OSX Lion, which will
-probably never find an upgrade available.) I hope that someone who is
-experiencing an upgrade failure gets in touch with some debug logs.
-
-In the same time period, around 450 unique hosts manually downloaded a
-git-anex distribution. Also compare with Debian popcon, which has 1200
-reporting git-annex users.
diff --git a/doc/devblog/day_158__enroute_to_Brazil.mdwn b/doc/devblog/day_158__enroute_to_Brazil.mdwn
deleted file mode 100644
--- a/doc/devblog/day_158__enroute_to_Brazil.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Next month the roadmap has me working on [[design/assistant/sshpassword]].
-That will be a nice UI improvement and I'd be very surprised if it takes
-more than a week, which is great.
-
-Getting a jump on it today, investigating using `SSH_ASKPASS`. It seems this
-will even work on Windows! Preliminary design in [[design/assistant/sshpassword]].
-
-Time to get on a plane to a plane to a plane to Brasilia!
-
-[[!meta date="Fri, 25 Apr 2014 16:32:36 -0400"]]
diff --git a/doc/devblog/day_159__tmp_file_cleanup.mdwn b/doc/devblog/day_159__tmp_file_cleanup.mdwn
deleted file mode 100644
--- a/doc/devblog/day_159__tmp_file_cleanup.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Today was mostly spent driving across Brazil, but I had energy this evening
-for a little work on git-annex.
-
-Made the assistant delete old temporary files on startup. I've had
-scattered reports of a few users whose `.git/annex/tmp` contained many
-files, apparently put there by the assistant when it locks down a file
-prior to annexing it. That seems it could possibly be a bug -- or it could
-just be unclean shutdowns interrupting the assistant. Anyway, this will
-deal with any source of tmp cruft, and I made sure to preserve
-tmp files for partially downloaded content.
-
-[[!meta date="Sun, 27 Apr 2014 22:12:55 -0300"]]
diff --git a/doc/devblog/day_160__.mdwn b/doc/devblog/day_160__.mdwn
deleted file mode 100644
--- a/doc/devblog/day_160__.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Reviewed Sören's updated bootstrap3 patch, which appeared while I was
-[traveling](http://joeyh.name/blog/entry/the_real_Brazil/). Sören
-kindly fixed it to work with Debian stable's old version of Yesod,
-which was quite a lot of work. The new new bootstrap3 UI looks nice,
-found a few minor issues, but expect to be able to merge it soon.
-
-Started on [[design/assistant/sshpassword]] groundwork. Added a simple
-password cache to the assistant, with automatic expiration, and made
-git-annex be able to be run by ssh as the `SSH_ASKPASS` program.
-
-The main difficulty will be changing the webapp's UI to prompt for the ssh
-password when one is needed. There are several code paths in ssh remote
-setup where a password might be needed. Since the cached password expires,
-it may need to be prompted for at any of those points. Since a new page is
-loading, it can't pop up a prompt on the current page; it needs to redirect
-to a password prompt page and then redirect back to the action that needed
-the password. ...At least, that's one way to do it.
-I'm going to sleep on it and hope I dream up a better way.
-
-[[!meta date="Tue, 29 Apr 2014 18:33:53 -0400"]]
diff --git a/doc/devblog/day_161__routing_design.mdwn b/doc/devblog/day_161__routing_design.mdwn
deleted file mode 100644
--- a/doc/devblog/day_161__routing_design.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I've moved out of implementation mode (unable to concentrate enough), and
-into high-level design mode.
-
-[[Syncing efficiency|design/assistant/syncing/efficiency]] has been an open TODO for years,
-to find a way to avoid flood filling the network, and find more efficient
-ways to ensure data only gets to the nodes that want it. Relatedly,
-Android devices  often need a way to mark individual files they want to have.
-Had a [very productive discussion with Vince and Fernao](http://joeyh.name/blog/entry/who_needs_whiteboards_when_you_have_strange_seed_pods_from_the_jungle/)
-and I think we're heading toward a design that will address both these
-needs, as well as some more Brazil-specific use cases, about which more
-later.
-
-Today's work was sponsored by Casa do Boneco.
diff --git a/doc/devblog/day_162__routing_sim_and_massive_contribution_landed.mdwn b/doc/devblog/day_162__routing_sim_and_massive_contribution_landed.mdwn
deleted file mode 100644
--- a/doc/devblog/day_162__routing_sim_and_massive_contribution_landed.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Sören Brunk's massive bootstrap 3 patch has landed! This is a 43 thousand
-line diff, with 2 thousand lines after the javascript and CSS libraries are
-filtered out. Either way, the biggest patch contributed by anyone to
-git-annex so far, and excellent work.
-
-Meanwhile, I built a [[haskell program|design/assistant/syncing/simroutes.hs]] to simulate
-a network of highly distributed git-annex nodes with ad-hoc connections and
-the selective file syncing algorythm now documented at the bottom of
-[[design/assistant/syncing/efficiency]].
-
-Currently around 33% of requested files never get to their destination
-in this simulation, but this is probably because its network is randomly
-generated, and so contains disconnected islands. So next, some data entry,
-from a map that involves an Amazon not in .com, dotted with names of people
-I have recently met... :)
-
-<a href="https://downloads.kitenet.net/git-annex/mapa/mapa.jpg"><img src="https://downloads.kitenet.net/git-annex/mapa/mapa.jpg" width=1024 height=768></a>
diff --git a/doc/devblog/day_163__request_and_routing_design.mdwn b/doc/devblog/day_163__request_and_routing_design.mdwn
deleted file mode 100644
--- a/doc/devblog/day_163__request_and_routing_design.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have a preliminary design for [[design/requests_routing]]. Won't be
-working on it immediately, but simulations show it can work well in a large
-ad-hoc network.
diff --git a/doc/devblog/day_164__back.mdwn b/doc/devblog/day_164__back.mdwn
deleted file mode 100644
--- a/doc/devblog/day_164__back.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-My backlog is massive -- 181 items to answer. Will probably take the rest
-of the month to get caught back up. Rather than digging into that yet,
-spent today working on the webapp's ssh password prompting. 
-
-I simplified it so the password is entered on the same form as the rest
-of the server's information. That made the UI easy to build, but
-means that when a user already has a ssh key they want to use, they need
-to select "existing ssh key"; the webapp no longer probes to automatically
-detect that case.
-
-Got the ssh password prompting in the webapp basically working, and it's a
-*really* nice improvement! I even got it to work on Windows (eventually...).
-It's still only in the `sshpassword` branch, since I need to test it more
-and probably fix some bugs. In particular, when enabling a remote that
-already exists, I think it never prompts for the password yet.
-
-Today's work was sponsored by Nicola Chiapolini.
diff --git a/doc/devblog/day_165__sshpassword_merged.mdwn b/doc/devblog/day_165__sshpassword_merged.mdwn
deleted file mode 100644
--- a/doc/devblog/day_165__sshpassword_merged.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Spent the day testing the sshpasswd branch. A few interesting things:
-
-* I was able to get rid of 10 lines of Windows specific code for
-  rsync.net, which had been necessary for console ssh password prompting to
-  work. Yay!
-* git-remote-gcrypt turned out to be broken when there is no controlling
-  tty. --no-tty has to be passed to gpg to avoid it falling over in this
-  case, even when a gpg agent is available to be used. I fixed this with
-  a new release of git-remote-gcrypt.
-
-Mostly the new branch just worked! And is merged...
-
-Merged a patch from Robie Basak that adds a new special remote that's sort
-of like bup but supports deletion: [[special_remotes/ddar]]
-
-Backlog: 172
-
-Today's work was sponsored by Andrew Cant.
diff --git a/doc/devblog/day_166__catching_up.mdwn b/doc/devblog/day_166__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_166__catching_up.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Powered through the backlog today, and got it down to 67! Probably most of
-the rest is the hard ones though.
-
-A theme today was: It's stupid hard to get git-annex-shell installed into
-PATH. While that should be the simplest thing in the world, I'm pinned
-between two problems:
-
-1. There's no single portable package format, so all the decades of
-   development nice ways to get things into PATH don't work for everybody.
-2. bash provides not a single dotfile that will work in all circumstances
-   to configure PATH. In particular, "ssh $host git-annex-shell" causes bash
-   to helpfully avoid looking at any dotfiles at all.
-
-Today's flailing to work around that inluded:
-
-* Merged a patch from Fraser Tweedale to allow `git config remote.origin.annex-shell /not/in/path/git-annex-shell`
-* Merged a patch from Justin Lebar to allow symlinking the git-annex-shell
-  etc from the standalone tarball to a directory that is in PATH. (Only
-  on Linux, not OSX yet.)
-* Improved the warning message git-annex prints when a remote server does
-  not have git-annex-shell in PATH, suggesting some things the user could
-  do to try to fix it.
-
-I've found out why OSX machines were retrying upgrades repeatedly. The
-version in the .info file did not match the actual git-annex version for
-OSX. I've fixed the info file version, but will need to come up with a
-system to avoid such mismatches.
-
-Made a few other fixes. A notable one is that dragging and dropping
-repositories in the webapp to reorder the list (and configure costs)
-had been broken since November.
-
-git-annex 5.20140421 finally got into Debian testing today, so I updated
-the backport. I recommend upgrading, especially if you're using the
-assistant with a ssh remote, since you'll get all of last month's nice
-features that make XMPP unnecessary in that configuration.
-
-----
-
-Today's work was sponsored by Geoffrey Irving.
diff --git a/doc/devblog/day_167__growing_the_community_of_git-annex_contributors.mdwn b/doc/devblog/day_167__growing_the_community_of_git-annex_contributors.mdwn
deleted file mode 100644
--- a/doc/devblog/day_167__growing_the_community_of_git-annex_contributors.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Released git-annex 5.20140517 today. The changelog for this release
-is very unusual, because it's full of contributions from others! There are
-as many patches from others in this release as git-annex got in the first
-entire two years of its existence.
-
-I'd like to keep that going. Also, I could really use help triaging bug
-reports right now. So I have updated the **[[contribute]]** page with more
-info about easy ways to contribute to git-annex. If you read this devblog,
-you're an ideal contributor, and you don't need to know how to write
-haskell either.. So take a [[look at the page|contribute]] and see if
-you can help out.
diff --git a/doc/devblog/day_168__backlog_continued.mdwn b/doc/devblog/day_168__backlog_continued.mdwn
deleted file mode 100644
--- a/doc/devblog/day_168__backlog_continued.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Worked on triaging several bugs. Fixed an easy one, which involved the
-assistant choosing the wrong path to a repository that has multiple
-remotes. After today, backlog is down to 43, nearly pre-Brazil levels.
-
-It seems that git-remote-gcrypt [[never quite worked on OSX|bugs/remote_gcrypt_based_repos_and_conflicting_uuids]].
-It looked like it did, but a bug prevented anything being pushed to the remote.
-Tracked down and fixed that bug.
-
-This evening, getting back to working on the armel autobuilder setup
-using propellor. The autobuilder will use a pair of docker containers, one
-armel and a companion amd64, and their quite complex setup will be *almost*
-fully automated (except for the haskell library patching part).
-
-----
-
-Today's work was sponsored by Mica Semrick.
diff --git a/doc/devblog/day_169-171__juggling.mdwn b/doc/devblog/day_169-171__juggling.mdwn
deleted file mode 100644
--- a/doc/devblog/day_169-171__juggling.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Keeping lots of things going these past few days..
-
-* Rebootstrapping the armel autobuilder with propellor. 
-  Some qemu instability and the need to update haskell
-  library patches meant this took a lot of hand-holding. Finally got a
-  working setup today.
-* Designing and ordering new git-annex stickers on clear viynl backing;
-  have put off sending those to campaign contributors for too long.
-* Added a new feature to the webapp: It now remembers the ssh remotes
-  that it sets up, and makes it easy to enable them elsewhere, the same
-  as other sorts of remotes. Had a very pleasant surprise building this,
-  when I was able to reuse all the UI code for enabling rsync and gcrypt
-  remotes. I think this will be a useful feature as we transition away
-  from XMPP.
diff --git a/doc/devblog/day_172__.mdwn b/doc/devblog/day_172__.mdwn
deleted file mode 100644
--- a/doc/devblog/day_172__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Working on moving the android autobuilder to Docker & Propellor, which will
-finish containerizing all the autobuilds that I run. Updated
-ghc-android to use the released ghc 7.8.2, which will make it build more
-reliably. 
-
-Also did bug triage. Bugs are now divided into [[bugs/confirmed]]
-and [[bugs/unconfirmed]] categories.
diff --git a/doc/devblog/day_173-174__android_rebootstrap.mdwn b/doc/devblog/day_173-174__android_rebootstrap.mdwn
deleted file mode 100644
--- a/doc/devblog/day_173-174__android_rebootstrap.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-With some help from Sören, have been redoing the android build environment
-for git-annex. This included making propellor put it in a docker container,
-which was easy. But then much struggling with annoying stuff like getting
-the gnutls linking to work, and working around some dependency issues on
-hackage that make cabal's dependency resolver melt down.
-Finally succeeded after much more time than I had wanted to spend on this.
-
-[[!meta date="Mon May 27 16:36:40 JEST 2014"]]
diff --git a/doc/devblog/day_175__encoding_day.mdwn b/doc/devblog/day_175__encoding_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_175__encoding_day.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-These themed days are inaverdent, but it happened again: Nearly everything
-done today had to do with encoding issues.
-
-The big news is that it turned out everything written to files in the
-git-annex branch had unicode characters truncated to 8 bits. Now fixed so
-you should always get out the same thing you put in, no matter what
-encoding you use (but please use utf8). This affected things like storing
-repository descriptions, but worse, it affected metadata. (Also preferred
-content expressions, I suppose.)
-
-With that fixed, there are still 7 source files left that use Char8 libraries.
-There used to be more; nearly every use of those is a bug. I looked over
-the remaining uses of it, and there might be a problem with Creds using it.
-I should probably make a push to stamp out all remaining uses of Char8.
-
-Other encoding bugs were less reproducible.
-
-And just now, Sören made some progress on
-[[bugs/Bootstrap3_icons_missing_on_Android]] ... and my current theory
-is this is actually caused by an encoding issue too.
diff --git a/doc/devblog/day_176__mostly_a_day_off.mdwn b/doc/devblog/day_176__mostly_a_day_off.mdwn
deleted file mode 100644
--- a/doc/devblog/day_176__mostly_a_day_off.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Got a handle on the Android webapp static file problems (no, they were not
-really encoding problems!), and hopefully
-that's all fixed now. Also, only 3 modules use Char8 now. And updated the
-git-annex backport. That's all I did today.
-
-Meanwhile, a complete [[tips/ZSH_completion]] has been contributed by
-Schnouki. And, Ben Gamari sent in a patch moving from the deprecated 
-MonadCatchIO-transformers library to the exceptions library.
diff --git a/doc/devblog/day_177__enabling.mdwn b/doc/devblog/day_177__enabling.mdwn
deleted file mode 100644
--- a/doc/devblog/day_177__enabling.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-After making a release yesterday, I've been fixing some bugs in the
-webapp, all to do with repository configuration stored on the git-annex
-branch. I was led into this by a strange little bug where the webapp stored
-configuration in the wrong repo in one situation. From there, I noticed
-that often when enabling an existing repository, the webapp would stomp on
-its group and preferred content and description, replacing them with
-defaults.
-
-This was a systematic problem, it had to be fixed in several places. And
-some of the fixes were quite tricky. For example, when adding a ssh
-repository, and it turns out there's already a git-annex repository at the
-entered location, it needs to avoid changing its configuration. But also,
-the configuration of that repo won't be known until after the first git
-pull from it. So it doesn't make sense to show the repository edit form
-after enabling such a repository.
-
-Also worked on a couple other bugs, and further cleaned up the [[bugs]]
-page. I think I am finally happy with how the bug list is displayed,
-with confirmed/moreinfo/etc tags.
-
-Today's work was sponsored by François Deppierraz.
diff --git a/doc/devblog/day_178-179__screencast_and_what_next.mdwn b/doc/devblog/day_178-179__screencast_and_what_next.mdwn
deleted file mode 100644
--- a/doc/devblog/day_178-179__screencast_and_what_next.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Yesterday I recorded a new screencast, demoing using the assistant on a
-local network with a small server. [[videos/git-annex_assistant_lan]].
-That's the best screencast yet; having a real framing story was nice;
-recent improvements to git-annex are taken advantage of without being made
-a big deal; and audio and video are improved. (But there are some minor
-encoding glitches which I'd have to re-edit it to fix.)
-
-The [[design/roadmap]] has this month dedicated to improving Android.
-But I think what I'd more like to do is whatever makes the assistant usable
-by the most people. This might mean doing more on Windows, since I hear
-from many who would benefit from that. Or maybe something not related to
-porting?
diff --git a/doc/devblog/day_180__porting.mdwn b/doc/devblog/day_180__porting.mdwn
deleted file mode 100644
--- a/doc/devblog/day_180__porting.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Did work on Windows porting today. First, fixed a reversion in the last
-release, that broke the git-annex branch pretty badly on Windows, causing
-\r to be written to files on that branch that should never have DOS line
-endings. Second, fixed a long-standing bug that prevented getting a file
-from a local bare repository on Windows.
-
-Also refreshed all autobuilders to deal with the gnutls and openssl
-security holes-of-the-week. (git-annex uses gnutls only for XMPP,
-and does not use openssl itself, but a few programs bundled with it,
-like curl, do use openssl.)
-
-A nice piece of news: OSX Homebrew now contains git-annex, so it can be
-easily installed with `brew install git-annex`
diff --git a/doc/devblog/day_181__tricky_merge.mdwn b/doc/devblog/day_181__tricky_merge.mdwn
deleted file mode 100644
--- a/doc/devblog/day_181__tricky_merge.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Spent most of today improving behavior when a sync or merge is
-interrupted in direct mode. It was possible for an interrupt at the wrong
-time to leave the merge committed, but the work tree not yet updated. And
-then the next sync would make a commit that reverted the merged changes!
-
-To fix this I had to avoid making any merge commit or indeed updating the
-index until after the work tree is updated. It looked intractable for a
-while; I'm still surprised I eventually succeeded.
diff --git a/doc/devblog/day_182__service.mdwn b/doc/devblog/day_182__service.mdwn
deleted file mode 100644
--- a/doc/devblog/day_182__service.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Have for the first time gotten git-annex to run as a proper Windows
-service, using nssm.
-([details](http://git-annex.branchable.com/todo/windows_support/#comment-a61be55862ea32e3dc30972f905bb987))
-Not quite ready yet though; doesn't run as the right user.
-
-And a few other windows porting bits.
diff --git a/doc/devblog/day_183__rubbing_sticks_together.mdwn b/doc/devblog/day_183__rubbing_sticks_together.mdwn
deleted file mode 100644
--- a/doc/devblog/day_183__rubbing_sticks_together.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Spent all day on some horrible timestamp issues on legacy systems. 
-
-On FAT, timestamps have a 2s granularity, which is ok, but then Linux adds
-a temporary higher resolution cache, which is lost on unmount. This
-confused git-annex since the mtimes seemed to change and it had to
-re-checksum half the files to get unconfused, which was not good.
-I found a way to use the inode sentinal file to detect when on FAT
-and put in a workaround, without degrading git-annex everywhere else.
-
-On Windows, time zones are a utter disaster; it changes the mtime it reports
-for files after the time zone has changed. Also there's a bug in the
-haskell time library which makes it return old time zone data after a time
-zone change. (I just finished developing a fix for that bug..)
-
-Left with nothing but a few sticks, I rubbed them together, and
-actually found a way to deal with this problem too. Scary details in
-[[bugs/Windows_file_timestamp_timezone_madness]]. While I've implemented
-it, it's stuck on a branch until I find a way to make git-annex notice when
-the timezone changes while it's running.
-
-----
-
-Today's work was sponsored by Svenne Krap.
diff --git a/doc/devblog/day_184__windows_month.mdwn b/doc/devblog/day_184__windows_month.mdwn
deleted file mode 100644
--- a/doc/devblog/day_184__windows_month.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-It's officially a Windows porting month. Now that I'm half way through it
-and with the last week of the month going to be a vacation, this makes
-sense.
-
-Today, finished up dealing with the timezone/timestamp issues on Windows.
-This got stranger and stranger the closer I looked at it. After a timestamp
-change, a program that was already running will see one timestamp, while a
-program that is started after the change will see another one! My approach
-works pretty much no matter how Windows goes insane though, and always
-recovers a true timestamp. Yay.
-
-Also fixed a regression test failure on Windows, which turned out to be
-rooted in a bug in the command queue runner, which neglected to pass
-along environment overrides on Windows.
-
-Then I spent 5 hours tracking down a tricky 
-test suite failure on Windows, which turned out to also
-affect FAT and be a recent reversion that has as it's
-root cause a [fun bug in git itself](http://marc.info/?l=git&m=140262402204212&w=2).
-Put in a not very good workaround. Thank goodness for test suites!
-
-Also got the arm autobuilder unstuck. Release tomorrow.
diff --git a/doc/devblog/day_185__service.mdwn b/doc/devblog/day_185__service.mdwn
deleted file mode 100644
--- a/doc/devblog/day_185__service.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-More work on [[todo/windows_git-annex_service]], but am stuck with a
-permissions problem.
-
-Fixed a bug that prevented two assistants from syncing when there was only
-a uni-directional link between them. Only affected direct mode, and
-was introduced back when I added the direct mode guard.
diff --git a/doc/devblog/day_186__cracked_it.mdwn b/doc/devblog/day_186__cracked_it.mdwn
deleted file mode 100644
--- a/doc/devblog/day_186__cracked_it.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-After despairing of ever solving this yesterday (and for the past 6 months
-really), I've got the webapp running on Windows with no visible DOS box.
-Also have the assistant starting up in the background on login.
-
-It turns out a service was not the way to do. There is a way to write a VB
-Script that runs a "DOS" command in a hidden window, and this is what I
-used. Amazing how hard it was to work this out, probably partly because I
-don't have the Windows vocabulary to know what to look for.
diff --git a/doc/devblog/day_187__release_prep.mdwn b/doc/devblog/day_187__release_prep.mdwn
deleted file mode 100644
--- a/doc/devblog/day_187__release_prep.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Last night, got logging to daemon.log working on Windows. Aside from XMPP
-not working (but it's near to being deprecated anyway), and some possible
-issues with unicode characters in filenames, the Windows port now seems in
-pretty good shape for a beta release.
-
-Today, mostly worked on fixing the release process so the metadata
-accurarely reflects the version from the autobuilder that is included in
-the release. Turns out there was version skew in the last release (now
-manually corrected). This should avoid that happening again, and also
-automates more of my release process.
diff --git a/doc/devblog/day_188__back_sans_laptop.mdwn b/doc/devblog/day_188__back_sans_laptop.mdwn
deleted file mode 100644
--- a/doc/devblog/day_188__back_sans_laptop.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I am back from the beach, but my dev laptop is dead. A replacement is being
-shipped, and I have spent today getting my old netbook into a usable state
-so I can perhaps do some work using it in the meantime.
-
-(Backlog is 95 messages.)
diff --git a/doc/devblog/day_189__finally_working_again.mdwn b/doc/devblog/day_189__finally_working_again.mdwn
deleted file mode 100644
--- a/doc/devblog/day_189__finally_working_again.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Finally back to work with a new laptop!
-
-Did one fairly major feature today: When using git-annex to pull down
-podcasts, metadata from the feed is copied into git-annex's metadata store,
-if annex.genmetadata is set. Should be great for views etc!
-
-Worked through a lot of the backlog, which is down to 47 messages now.
-
-Only other bug fix of note is a fix on Android. A recent change to git made
-it try to chmod files, which tends to fail on the horrible /sdcard
-filesystem. Patched git to avoid that.
-
-For some reason the autobuilder box rebooted while I was away, and 
-somehow the docker containers didn't come back up -- so they got
-automatically rebuilt. But I have to manually finish up building the
-android and armel ones. Will be babysitting that build this evening.
-
-Today's work was sponsored by Ævar Arnfjörð Bjarmason.
diff --git a/doc/devblog/day_190__fun_fixes.mdwn b/doc/devblog/day_190__fun_fixes.mdwn
deleted file mode 100644
--- a/doc/devblog/day_190__fun_fixes.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Spent the morning improving behavior when `commit.gpgsign` is set.
-Now git-annex will let gpg sign commits that are made when eg, manually
-running `git annex sync`, but not commits implicitly made to the git-annex
-branch. And any commits made by the assistant are not gpg signed. This was
-slightly tricky, since lots of different places in git-annex ran `git
-commit`, `git merge` and similar.
-
-Then got back to a test I left running over vacation, that added millions
-of files to a git annex repo. This was able to reproduce a problem where
-`git annex add` blew the stack and crashed at the end. There turned out to
-be two different memory issues, one was in git-annex and the other is in
-Haskell's core `getDirectoryContents`. Was able to entirely fix it,
-eventually.
diff --git a/doc/devblog/day_191__semidistracted.mdwn b/doc/devblog/day_191__semidistracted.mdwn
deleted file mode 100644
--- a/doc/devblog/day_191__semidistracted.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Got a bit distracted improving Haskell's directory listing code.
-
-Only real git-annex work today was fixing [[bugs/Assistant_merge_loop]],
-which was caused by changes in the last release (that made direct mode
-merging crash/interrupt-safe). This is a kind of ugly bug, that can result
-in the assistant making lots of empty commits in direct mode repositories.
-So, I plan to make a new release on Monday.
diff --git a/doc/devblog/day_192__release_day.mdwn b/doc/devblog/day_192__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_192__release_day.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Got the release out. Had to fix various autobuilder issues. The arm autobuilder
-is unfortunatly not working currently.
-
-Updated git-annex to build with a new version of the bloomfilter library.
diff --git a/doc/devblog/day_193-194__ugly_bug.mdwn b/doc/devblog/day_193-194__ugly_bug.mdwn
deleted file mode 100644
--- a/doc/devblog/day_193-194__ugly_bug.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-**Important** A bug [[caused the assistant to sometimes remove all files|bugs/bad_merge_commit_deleting_all_files]] from the git repository.
-You should check if your repository is ok. If the bug hit you, it should be
-possible to revert the bad commit and recover your files with no data loss.
-See the bug report for details. 
-
-This affected git-annex versions since 5.20140613, and only when using the
-assistant in direct mode. It should be fixed in today's release,
-5.20140709.
-
-I'm available <urgent2014@joeyh.name> to help anyone hit by this
-unfortunate bug.
-
-This is another bug in the direct mode merge code. I'm not happy about it.
-It's particularly annoying that I can't fix up after it automatically
-(because there's no way to know if any given commit in the git history that
-deletes all the files is the result of this bug, or a legitimate deletion
-of all files).
-
-The only good thing is that the design of git-annex is pretty robust, and
-in this case, despite stupidly committing the deletion of all the files in
-the repository, git-annex did take care to preserve all their contents and
-so the problem should be able to be resolved without data loss.
-
-Unfortunately, the main autobuilder is down and I've had to spin up
-autobuilders on a different machine (thank goodness that's very automated
-now!), and so I have not been able to build the fixed git-annex for android
-yet. I hope to get that done later this evening.
-
----
-
-Yesterday, I fixed a few (much less bad) bugs, and did some thinking about
-plans for this month. The [[design/roadmap]] suggests working on some of
-[[!traillink design/assistant/chunks]], [[!traillink design/assistant/deltas]] or [[!traillink design/assistant/gpgkeys]].
-I don't know how to do deltas yet really. Chunks is pretty easily done.
-The gpg keys stuff is pretty open ended and needs some more work to define
-some use cases. But, after today, I am more inclined to want to spend
-time on better testing and other means of avoiding this kind of situation.
diff --git a/doc/devblog/day_195-196__catching_up.mdwn b/doc/devblog/day_195-196__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_195-196__catching_up.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Spent past 2 days catching up on backlog and doing bug triage and some
-minor bug fixes and features. Backlog is 27, lowest in quite a while so I
-feel well on top of things.
-
-I was saddened to find [this bug](http://git-annex.branchable.com/bugs/files_lost_during_upgrade/#comment-b265c796b1599d2dde649699cb54fa86)
-where I almost managed to analize the [[ugy_bug|day_193-194__ugly_bug]]'s race
-condition, but not quite (and then went on vacation). BTW, I have not heard
-from anyone else who was hit by that bug so far.
-
-The linux autobuilders are still down; their host server had a disk crash
-in an electrical outage. Might be down for a while. I would not mind
-setting up a redundant autobuilder if anyone else would like to donate a
-linux VM with 4+ gb of ram.
diff --git a/doc/devblog/day_197__autobuilder_rescuscitation.mdwn b/doc/devblog/day_197__autobuilder_rescuscitation.mdwn
deleted file mode 100644
--- a/doc/devblog/day_197__autobuilder_rescuscitation.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Yay, the Linux autobuilder is back! Also fixed the Windows build.
-
-Fixed a reversion that prevented the webapp from starting
-properly on Windows, which was introduced by some bad locking when I put in
-the hack that makes it log to the log file on that platform.
-
-Various other minor fixes here and there. There are almost enough
-to do a release again soon.
-
-I've also been trying to bootstrap ghc 7.8 on arm, for Debian. There's a script
-that's supposed to allow building 7.8 using 7.6.3, dealing with a linker
-problem by using the gold linker. Hopefully that will work since otherwise
-Debian could remain stuck with an old ghc or worse lose the arm ports.
-Neither would be great for git-annex..
diff --git a/doc/devblog/day_198__branching_out.mdwn b/doc/devblog/day_198__branching_out.mdwn
deleted file mode 100644
--- a/doc/devblog/day_198__branching_out.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-I have mostly been thinking about gcrypt today.
-[This issue](https://github.com/blake2-ppc/git-remote-gcrypt/issues/9)
-needs to be dealt with. The question is, does it really make sense to
-try to hide the people a git repository is encrypted for? I have 
-[posted some thoughts](http://git-annex.branchable.com/bugs/using_gpg_encryption_with_multiple_keys_fails/?updated#comment-0c4f679d972c63b0b25b6aa5e851af62)
-and am coming to the viewpoint that obscuring the identities of users
-of a repository is not a problem git-annex should try to solve itself,
-although it also shouldn't get in the way of someone who is able and
-wants to do that (by using tor, etc).
-
-Finally, I decided to go ahead and add a gcrypt.publish-participants
-setting to git-remote-gcrypt, and make git-annex set that by default when
-setting up a gcrypt repository.
-
-Some promising news from the ghc build on arm. I got a working ghc, and
-even ghci works. Which would make the template haskell in the webapp etc
-avaialble on arm without the current horrible hacks. Have not managed to
-build the debian ghc package successfully yet though.
-
-Also, fixed a bug that made `git annex sync` not pull/push with a local
-repository that had not yet been initialized for use with git-annex.
-
-Today's work was sponsored by Stanley Yamane.
diff --git a/doc/devblog/day_199__ten_minute_cycle.mdwn b/doc/devblog/day_199__ten_minute_cycle.mdwn
deleted file mode 100644
--- a/doc/devblog/day_199__ten_minute_cycle.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Spent hours today in a 10-minute build/test cycle, tracking down a bug that
-caused the assistant to crash on Windows after exactly 10 minutes uptime.
-Eventually found the cause; this is fallout from last month's work
-that got it logging to the debug.log on Windows.
-
-There was more, but that was the interesting one..
diff --git a/doc/devblog/day_19__moving_on.mdwn b/doc/devblog/day_19__moving_on.mdwn
deleted file mode 100644
--- a/doc/devblog/day_19__moving_on.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Finished moving the Android autobuilder over to the new clean build
-environment. Tested the Android app, and it still works. Whew!
-
-There's a small chance that the issue with the Android app not working on
-Android 4.3 has been fixed by this rebuild. I doubt it, but perhaps someone
-can download the daily build and give it another try..
-
-----
-
-I have 7 days left in which I'd like to get remote gcrypt repositories
-working in the assistant. I think that should be fairly easy, but a
-prerequisite for it is making git-annex-shell support being run on a gcrypt
-repository. That's needed so that the assistant's normal locked down ssh
-key setup can also be used for gcrypt repositories.
-
-At the same time, not all gcrypt endpoints will have git-annex-shell
-installed, and it *seems* to make sense to leave in the existing support
-for running raw rsync and git push commands against such a repository. So
-that's going to add some complication.
-
-It will also complicate git-annex-shell to support gcrypt repos. Basically,
-everything it does in git-annex repos will need to be reimplemented in
-gcrypt repositories. Generally in a more simple form; for example it
-doesn't need to (and can't) update location logs in a gcrypt repo.
-
-----
-
-I also need to find a good UI to present the three available choices
-(unencrypted git, encrypted git, encrypted rsync) when setting up a repo
-on a ssh server. I don't want to just remove the encrypted rsync option,
-because it's useful when using xmpp to sync the git repo, and is simpler to
-set up since it uses shared encryption rather than gpg public keys.
-
-My current thought is to offer just 2 choices, encrypted and non-encrypted.
-If they choose encrypted, offer a choice of shared encryption or encrypting
-to a specific key. I think I can word this so it's pretty clear what the
-tradeoffs are.
diff --git a/doc/devblog/day_1__inauspicious_beginning.mdwn b/doc/devblog/day_1__inauspicious_beginning.mdwn
deleted file mode 100644
--- a/doc/devblog/day_1__inauspicious_beginning.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I try hard to keep this devblog about git-annex development and not me.
-However, it is a shame that what I wanted to be the beginning of my first
-real month of work funded by the new campaign has been marred by my home's
-internet connection being taken out by a lightning strike, and by illness.
-Nearly back on my feet after that, and waiting for my new laptop to
-finally get here.
-
-Today's work: Finished up the `git annex forget` feature and merged it in.
-Fixed the bug that was causing the commit race detection code to
-incorrectly fire on the commit made by the transition code. Few other bits
-and pieces.
diff --git a/doc/devblog/day_200__one_year_along.mdwn b/doc/devblog/day_200__one_year_along.mdwn
deleted file mode 100644
--- a/doc/devblog/day_200__one_year_along.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Updated the Debian backport. (Also the git-remote-gcrypt backport.)
-
-Made the assistant install a desktop file to integrate with Konqueror.
-
-Improved `git annex repair`, fixing a bug that could cause it to leave
-broken branch refs and yet think that the repair was successful.
-
-----
-
-A bit surprised to see that now been a full year since I started doing
-development funded by my campaign. Not done yet!
-
-Update on campaign rewards: <https://campaign.joeyh.name/blog/stickers_soon/>
-
-----
-
-Today's work was sponsored by Douglas Butts.
diff --git a/doc/devblog/day_201__chunky.mdwn b/doc/devblog/day_201__chunky.mdwn
deleted file mode 100644
--- a/doc/devblog/day_201__chunky.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Working on designs for better [[chunking|design/assistant/chunks]]. Having
-a hard time finding a way to totally obscure file sizes, but otherwise a
-good design seems to be coming together. I particularly like that the new
-design puts the chunk count in the Key (which is then encrypted for special
-remotes, rather than having it be some special extension.
-
-While thinking through chunking, I realized that the current chunking
-method can fail if two repositories have different chunksize settings for
-the same special remote and both upload the same key at the same time.
-Arn't races fun? The new design will eliminate this problem; in the
-meantime updated the docs to recommend never changing a remote's
-chunksize setting.
diff --git a/doc/devblog/day_202__new_chunk_groundwork.mdwn b/doc/devblog/day_202__new_chunk_groundwork.mdwn
deleted file mode 100644
--- a/doc/devblog/day_202__new_chunk_groundwork.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-The design for new style chunks seems done, and I laid the groundwork for it
-today. Added chunk metadata to keys, reorganized the legacy chunking code
-for directory and webdav so it won't get (too badly) in the way, and
-implemented the chunk logs in the git-annex branch.
-
-Today's work was sponsored by LeastAuthority.com.
diff --git a/doc/devblog/day_203__in_the_weeds.mdwn b/doc/devblog/day_203__in_the_weeds.mdwn
deleted file mode 100644
--- a/doc/devblog/day_203__in_the_weeds.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-A lil bit in the weeds on the chunking rewrite right now. I did succeed in
-writing the core chunk generation code, which can be used for every special
-remote. It was pretty hairy (needs to stream large files in constant
-memory, separating into chunks, and get the progress display right
-across operations on chunks, etc). That took most of the day.
-
-Ended up getting stuck in integrating the encryptable remote code, and had
-to revert changes that could have led to rewriting (or perhaps
-eliminating?) most of the per-remote encryption specific code.
-
-Up till now, this has supported both encrypted and non-encrypted remotes;
-it was simply passed encrypted keys for an encrypted remote:
-
-[[!format haskell """
-remove :: Key -> Annex Bool
-"""]]
-
-But with chunked encrypted keys, it seems it needs to be more complicated:
-
-[[!format haskell """
-remove' :: Maybe (Key -> Key) -> ChunkConfig -> Key -> Annex Bool
-"""]]
-
-So that when the remote is configured to use chunking, it can look up
-the chunk keys, and then encrypt them, in order to remove all the encrypted
-chunk keys.
-
-I don't like that complication, so want to find a cleaner
-abstraction. Will sleep on it.
-
-----
-
-While I was looking at the encryptable remote generator, I realized
-the remote cost was being calculated wrongly for special 
-remotes that are not encrypted. Fixed that bug.
-
-----
-
-Today's work was sponsored by bak.
diff --git a/doc/devblog/day_204__mowing.mdwn b/doc/devblog/day_204__mowing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_204__mowing.mdwn
+++ /dev/null
@@ -1,64 +0,0 @@
-Remained frustratingly stuck until 3 pm on the same stuff that puzzled
-me yesterday. However, 6 hours later, I have the directory
-special remote 100% working with both new chunk= and legacy chunksize=
-configuration, both with and without encryption.
-
-----
-
-So, the root of why this is was hard, since I thought about it a lot today
-in between beating my head into the wall: git-annex's internal API for remotes
-is really, really simple. It basically comes down to:
-
-[[!format haskell """
-	Remote
-		{ storeKey :: Key -> AssociatedFile -> MeterUpdate -> Annex Bool
-		, retrieveKeyFile :: Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex Bool
-		, removeKey :: Key -> Annex Bool
-		, hasKey :: Key -> Annex (Either String Bool)
-		}
-"""]]
-
-This simplicity is a Good Thing, because it maps very well to REST-type
-services. And it allows for quite a lot of variety in implementations of
-remotes. Ranging from reguar git remotes, that rsync files around without
-git-annex ever loading them itself, to remotes like webdav that load
-and store files themselves, to remotes like tahoe that intentionally do not
-support git-annex's built-in encryption methods.
-
-However, the simplicity of that API means that lots of complicated stuff,
-like handling chunking, encryption, etc, has to be handled on a per-remote
-basis. Or, more generally, by `Remote -> Remote` transformers that take
-a remote and add some useful feature to it.
-
-One problem is that the API is so simple that a remote transformer that adds
-encryption is not feasible. In fact, every encryptable remote has
-had its own code that loads a file from local disk, encrypts it, and sends
-it to the remote. Because there's no way to make a remote transformer that
-converts a `storeKey` into an encrypted `storeKey`. (Ditto for retrieving
-keys.)
-
-I almost made the API more complicated today. Twice. But both times
-I ended up not, and I think that was the right choice, even though
-it meant I had to write some quite painful code.
-
-----
-
-In the end, I instead wrote a little module that pulls together supporting
-both encryption and chunking. I'm not completely happy because those
-two things should be independent, and so separate. But, 120 lines of
-code that don't keep them separate is not the end of the world.
-
-That module also contains some more powerful, less general APIs, 
-that will work well with the kinds of remotes that will use it.
-
-The really nice result, is that the implementation of the directory
-special remote melts down from 267 lines of code to just 172! (Plus some
-legacy code for the old style chunking, refactored out into a file I can
-delete one day.) It's a lot cleaner too.
-
-With all this done, I expect I can pretty easily add the new style chunking
-to most git-annex remotes, and remove code from them while doing it!
-
-----
-
-Today's work was sponsored by Mark Hepburn.
diff --git a/doc/devblog/day_205__incremental.mdwn b/doc/devblog/day_205__incremental.mdwn
deleted file mode 100644
--- a/doc/devblog/day_205__incremental.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Last night, went over the new chunking interface, tightened up exception
-handling, and improved the API so that things like WebDAV will be able to
-reuse a single connection while all of a key's chunks are being downloaded.
-I am pretty happy with the interface now, and except to convert more
-special remotes to use it soon.
-
-Just finished adding a killer feature: Automatic resuming of interrupted
-downloads from chunked remotes. Sort of a poor man's rsync, that while less
-efficient and awesome, is going to work on *every* remote that gets the new
-chunking interface, from S3 to WebDAV, to all of Tobias's external special
-remotes! Even allows for things like starting a download
-from one remote, interrupting, and resuming from another one, and so on.
-
-I had forgotten about resuming while designing the chunking API. Luckily, I
-got the design right anyway. Implementation was almost trivial, and only
-took about 2 hours! (See [[!commit 9d4a766cd7b8e8b0fc7cd27b08249e4161b5380a]])
-
-I'll later add resuming of interrupted uploads. It's not hard to detect
-such uploads with only one extra query of the remote, but in principle,
-it should be possible to do it with no extra overhead, since git-annex
-already checks if all the chunks are there before starting an upload.
diff --git a/doc/devblog/day_206__zap.mdwn b/doc/devblog/day_206__zap.mdwn
deleted file mode 100644
--- a/doc/devblog/day_206__zap.mdwn
+++ /dev/null
@@ -1,83 +0,0 @@
-Zap! ... My internet gateway was [destroyed by lightning](https://identi.ca/joeyh/note/xogvXTFDR9CZaCPsmKZipA).
-Limping along regardless, and replacement ordered.
-
-Got resuming of uploads to chunked remotes working. Easy!
-
-----
-
-Next I want to convert the external special remotes to have these nice
-new features. But there is a wrinkle: The new chunking interface works
-entirely on ByteStrings containing the content, but the external special
-remote interface passes content around in files.
-
-I could just make it write the ByteString to a temp file, and pass the temp
-file to the external special remote to store. But then, when chunking is
-not being used, it would pointlessly read a file's content, only to write
-it back out to a temp file.
-
-Similarly, when retrieving a key, the external special remote saves it to a
-file. But we want a ByteString. Except, when not doing chunking or
-encryption, letting the external special remote save the content directly
-to a file is optimal.
-
-One approach would be to change the protocol for external special
-remotes, so that the content is sent over the protocol rather than in temp
-files. But I think this would not be ideal for some kinds of external
-special remotes, and it would probably be quite a lot slower and more
-complicated.
-
-Instead, I am playing around with some type class trickery:
-
-[[!format haskell """
-{-# LANGUAGE Rank2Types TypeSynonymInstances FlexibleInstances MultiParamTypeClasses #-}
-
-type Storer p = Key -> p -> MeterUpdate -> IO Bool
-
--- For Storers that want to be provided with a file to store.
-type FileStorer a = Storer (ContentPipe a FilePath)
-
--- For Storers that want to be provided with a ByteString to store
-type ByteStringStorer a = Storer (ContentPipe a L.ByteString)
-
-class ContentPipe src dest where
-        contentPipe :: src -> (dest -> IO a) -> IO a
-
-instance ContentPipe L.ByteString L.ByteString where
-        contentPipe b a = a b
-
--- This feels a lot like I could perhaps use pipes or conduit...
-instance ContentPipe FilePath FilePath where
-        contentPipe f a = a f
-
-instance ContentPipe L.ByteString FilePath where
-        contentPipe b a = withTmpFile "tmpXXXXXX" $ \f h -> do
-                L.hPut h b
-                hClose h
-                a f
-
-instance ContentPipe FilePath L.ByteString where
-        contentPipe f a = a =<< L.readFile f
-"""]]
-
-The external special remote would be a FileStorer, so when a non-chunked,
-non-encrypted file is provided, it just runs on the FilePath with no extra
-work. While when a ByteString is provided, it's swapped out to a temp file
-and the temp file provided. And many other special remotes are ByteStorers,
-so they will just pass the provided ByteStream through, or read in the
-content of a file.
-
-I think that would work. Thoigh it is not optimal for external special
-remotes that are chunked but not encrypted. For that case, it might be worth
-extending the special remote protocol with a way to say "store a chunk of
-this file from byte N to byte M".
-
----
-
-Also, talked with ion about what would be involved in using rolling checksum
-based chunks. That would allow for rsync or zsync like behavior, where
-when a file changed, git-annex uploads only the chunks that changed, and the
-unchanged chunks are reused.
-
-I am not ready to work on that yet, but I made some changes to the parsing
-of the chunk log, so that additional chunking schemes like this can be added
-to git-annex later without breaking backwards compatability.
diff --git a/doc/devblog/day_207__at_last.mdwn b/doc/devblog/day_207__at_last.mdwn
deleted file mode 100644
--- a/doc/devblog/day_207__at_last.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-It took 9 hours, but I finally got to make [[!commit c0dc134cded6078bb2e5fa2d4420b9cc09a292f7]],
-which both removes 35 lines of code, and adds chunking support to all
-external special remotes!
-
-The groundwork for that commit involved taking the type scheme I sketched
-out yesterday, completely failing to make it work with such high-ranked
-types, and falling back to a simpler set of types that both I and GHC seem
-better at getting our heads around.
-
-Then I also had more fun with types, when it turned out I needed to
-run encryption in the Annex monad. So I had to go convert several parts of
-the utility libraries to use MonadIO and exception lifting. Yurk.
-
-The final and most fun stumbling block caused git-annex to crash when
-retriving a file from an external special remote that had neither
-encryption not chunking. Amusingly it was because I had not put in an
-optimation (namely, just renaming the file that was retrieved in this case,
-rather than unnecessarily reading it in and writing it back out). It's
-not often that a lack of an optimisation causes code to crash!
-
-So, fun day, great result, and it should now be very simple to convert
-the bup, ddar, gcrypt, glacier, rsync, S3, and WebDAV special remotes
-to the new system. Fingers crossed.
-
-But first, I will probably take half a day or so and write a 
-`git annex testremote` that can be run in a repository and does live
-testing of a special remote including uploading and downloading files.
-There are quite a lot of cases to test now, and it seems best to get
-that in place before I start changing a lot of remotes without a way to
-test everything.
-
-----
-
-Today's work was sponsored by Daniel Callahan.
diff --git a/doc/devblog/day_208__testremote.mdwn b/doc/devblog/day_208__testremote.mdwn
deleted file mode 100644
--- a/doc/devblog/day_208__testremote.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Built `git annex testremote` today. 
-
-That took a little bit longer than expected, because it actually found
-several fence post bugs in the chunking code.
-
-It also found a bug in the sample external special remote script.
-
-I am very pleased with this command. Being able to run 640 tests against
-any remote, without any possibility of damaging data already stored in the
-remote, is awesome. Should have written it a looong time ago!
diff --git a/doc/devblog/day_209__mass_conversion.mdwn b/doc/devblog/day_209__mass_conversion.mdwn
deleted file mode 100644
--- a/doc/devblog/day_209__mass_conversion.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Have started converting lots of special remotes to the new API. Today, S3
-and hook got chunking support. I also converted several remotes to the new
-API without supporting chunking: bup, ddar, and glacier (which should
-support chunking, but there were complications). 
-
-This removed 110 lines of code while adding features! And,
-I seem to be able to convert them faster than `testremote` can test them. :)
-
-Now that S3 supports chunks, they can be used to work around several
-problems with S3 remotes, including file size limits, and a memory leak in
-the underlying S3 library.
-
-The S3 conversion included caching of the S3 connection when
-storing/retrieving chunks. [Update: Actually, it turns out it didn't;
-the hS3 library doesn't support persistent connections. Another reason I
-need to switch to a better S3 library!] 
-
-But the API doesn't yet support caching
-when removing or checking if chunks are present. I should probably expand
-the API, but got into some type checker messes when using generic enough
-data types to support everything. Should probably switch to `ResourceT`.
-
-Also, I tried, but failed to make `testremote` check that storing a key
-is done atomically. The best I could come up with was a test that stored a
-key and had another thread repeatedly check if the object was present on
-the remote, logging the results and timestamps. It then becomes a
-statistical problem -- somewhere toward the end of the log it's ok if the key
-has become present -- but too early might indicate that it wasn't stored
-atomically. Perhaps it's my poor knowledge of statistics, but I could not
-find a way to analize the log that reliably detected non-atomic storage.
-If someone would like to try to work on this, see the `atomic-store-test`
-branch.
diff --git a/doc/devblog/day_20__gcrypt_and_git-annex-shell.mdwn b/doc/devblog/day_20__gcrypt_and_git-annex-shell.mdwn
deleted file mode 100644
--- a/doc/devblog/day_20__gcrypt_and_git-annex-shell.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Added support for gcrypt remotes to git-annex-shell. Now gcrypt special
-remotes probe when they are set up to see if the remote system has a
-suitable git-annex-shell, and if so all commands are sent to it. Kept the
-direct rsync mode working as a fallback.
-
-It turns out I made a bad decision when first adding gcrypt support to
-git-annex. To make implementation marginally easier, I decided to not
-put objects inside the usual `annex/objects` directory in a gcrypt remote.
-But that lack of consistency would have made adding support to
-git-annex-shell a lot harder. So, I decided to change this. Which 
-means that anyone already using gcrypt with git-annex will need to
-[[manually_move_files_around|upgrades/gcrypt]].
-
-Today's work was sponsored by Tobias Nix.
diff --git a/doc/devblog/day_210__conversion_and_digression.mdwn b/doc/devblog/day_210__conversion_and_digression.mdwn
deleted file mode 100644
--- a/doc/devblog/day_210__conversion_and_digression.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Just finished converting both rsync and gcrypt to the new API,
-and testing them. Still need to fix 2 test suite failures for gcrypt.
-Otherwise, only WebDAV remains unconverted.
-
-Earlier today, I investigated switching from hS3 to
-<http://hackage.haskell.org/package/aws>. Learned its API, which seemed a
-lot easier to comprehend than the other two times I looked at it. Wrote
-some test programs, which are in the `s3-aws` branch. I was able to stream
-in large files to S3, without ever buffering them in memory (which hS3's
-API precludes). And for chunking, it can reuse an http connection.
-This seems very promising. (Also, it might eventually get Glacier support..)
-
-I have uploaded haskell-aws to Debian, and once it gets into testing and
-backports, I plan to switch git-annex over to it.
diff --git a/doc/devblog/day_211__conversion_complete.mdwn b/doc/devblog/day_211__conversion_complete.mdwn
deleted file mode 100644
--- a/doc/devblog/day_211__conversion_complete.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Converted the webdav special remote to the new API. 
-All done with converting everything now!
-
-I also updated the new API to support doing things like
-reusing the same http connection when removing and checking
-the presence of chunks.
-
-I've been working on improving the haskell DAV library, in a
-number of ways that will let me improve the webdav special remote.
-Including making changes that will let me do connection caching, and
-improving its API to support streaming content without buffering a whole
-file in memory.
diff --git a/doc/devblog/day_212__webdav_rewrite.mdwn b/doc/devblog/day_212__webdav_rewrite.mdwn
deleted file mode 100644
--- a/doc/devblog/day_212__webdav_rewrite.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Today was spent reworking so much of the webdav special remote that it was
-essentially rewritten from scratch.
-
-The main improvement is that it now keeps a http connection open and uses
-it to perform multiple actions. Before, one connection was made per action.
-This is even done for operations on chunks. So, now storing a chunked file
-in webdav makes only 2 http connections total. Before, it would take around
-10 connections *per chunk*. So a big win for performance, although there is
-still room for improvement: It would be possible to reduce that down to
-just 1 connection, and indeed keep a persistent connection reused when
-acting on multiple files.
-
-Finished up by making uploading a large (non-chunked) file to webdav not
-buffer the whole file in memory. 
-
-I still need to make downloading a file from webdav not buffer it, and
-test, and then I'll be done with webdav and can move on to making
-similar changes to S3.
diff --git a/doc/devblog/day_213__newchunks_merged.mdwn b/doc/devblog/day_213__newchunks_merged.mdwn
deleted file mode 100644
--- a/doc/devblog/day_213__newchunks_merged.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Finished up webdav, and after running `testremote` for a long time, I'm
-satisfied it's good. The newchunks branch has now been merged into master
-completely.
-
-Spent the rest of the day beginning to rework the S3 special remote to use
-the aws library. This was pretty fiddly; I want to keep all the
-configuration exactly the same, so had to do a lot of mapping from hS3
-configuration to aws configuration. Also there is some hairy stuff
-involving escaping from the ResourceT monad with responses and http
-connection managers intact.
-
-Stopped once `initremote` worked. The rest should be pretty easy, although
-Internet Archive support is blocked by
-<https://github.com/aristidb/aws/issues/119>. This is in the `s3-aws`
-branch until it gets usable.
diff --git a/doc/devblog/day_214-215__wrapping_up_recent_work.mdwn b/doc/devblog/day_214-215__wrapping_up_recent_work.mdwn
deleted file mode 100644
--- a/doc/devblog/day_214-215__wrapping_up_recent_work.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Yesterday, finished converting S3 to use the aws library. Very happy with
-the result (no memory leaks! connection caching!), but s3-aws is not merged
-into master yet. Waiting on a new release of the aws library so as to not
-break Internet Archive S3 support.
-
-Today, spent a few hours adding more tests to `testremote`. The new tests
-take a remote, and construct a modified version that is intentionally
-unavailable. Then they make sure trying to use it fails in appropriate
-ways. This was a very good thing to test; two bugs were immediately found
-and fixed.
-
-And that wraps up several weeks of hacking on the core of git-annex's
-remotes support, which started with reworking chunking and kind of took
-on a life of its own. I plan a release of this new stuff in a week. The
-next week will be spent catching up on 117 messages of backlog that
-accumulated while I was in deep coding mode.
diff --git a/doc/devblog/day_216__various_minor_bugs.mdwn b/doc/devblog/day_216__various_minor_bugs.mdwn
deleted file mode 100644
--- a/doc/devblog/day_216__various_minor_bugs.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Working on getting caught up with backlog. 73 messages remain.
-
-Several minor bugs were fixed today. All edge cases. The most edge case one
-of all, I could not fix: git-annex cannot add a file that has a newline
-in its filename, because `git cat-file --batch`'s interface does not support such
-filenames.
-
-Added a page [[documenting how verify the signatures of git-annex releases|install/verifying_downloads]].
-
-Over the past couple days, all the autobuilders have been updated to new
-dependencies needed by the recent work. Except for Windows, which needs to
-be updated to the new Haskell Platform first, so hopefully soon.
-
-Turns out that upgrading unix-compat means that inode(like) numbers are
-available even on Windows, which will make git-annex more robust there.
-Win win. ;)
diff --git a/doc/devblog/day_217__autobuilders.mdwn b/doc/devblog/day_217__autobuilders.mdwn
deleted file mode 100644
--- a/doc/devblog/day_217__autobuilders.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Over the past couple days, got the arm autobuilder working again. It had
-been down since June with several problems. cabal install tended to crash;
-apparenty this has something to do with threading in user-mode qemu,
-because -j1 avoids that. And strange invalid character problems were fixed
-by downgrading file-embed. Also, with Yury's help I got the Windows
-autobuilder upgraded to the new Haskell Platform and working again.
-
-Today a last few finishing touches, including getting rid of the last
-dependency on the old haskell HTTP library, since http-conduit is being
-used now. Ready for the release!
diff --git a/doc/devblog/day_218__scary_locking.mdwn b/doc/devblog/day_218__scary_locking.mdwn
deleted file mode 100644
--- a/doc/devblog/day_218__scary_locking.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Plan is to be on vacation and/or low activity this week before DebConf.
-However, today I got involved in fixing a bug that caused the assistant to
-keep files open after syncing with repositories on removable media.
-
-Part of that bug involved lock files not being opend close-on-exec, and
-while fixing that I noticed again that the locking code was scattered all
-around and rather repetitive. That led to a lot of refactoring, which is
-always fun when it involves scary locking code. Thanks goodness for
-referential transparency.
-
-Now there's a Utility.LockFile that works on both POSIX and Windows.
-Howver, that module actually exports very different functions for the two.
-While it might be tempting to try to do a portability layer, the
-two locking models are really very different, and there are lots of gotchas
-such a portability layer would face. The only API that's completely the
-same between the two is dropLock.
-
-This refactoring process and the cleaner, more expressive
-code it led to helped me spot a couple of bugs involving locking. See
-[[!commit e386e26ef207db742da6d406183ab851571047ff]]
-and [[!commit 0a4d301051e4933661b7b0a0791afa95bfe9a1d3]]
-Neither bug has ever seemed to cause
-a problem, but it's nice to be able to spot and fix such bugs before they
-do.
diff --git a/doc/devblog/day_219__catching_up_and_looking_back.mdwn b/doc/devblog/day_219__catching_up_and_looking_back.mdwn
deleted file mode 100644
--- a/doc/devblog/day_219__catching_up_and_looking_back.mdwn
+++ /dev/null
@@ -1,109 +0,0 @@
-Yesterday and today were the first good solid days working on git-annex in a
-while. There's a big backlog, currently of 133 messages, so I have been
-concentrating on bug reports first. Happily, not many new bugs have been
-reported lately, and I've made good progress on them, fixing 5 bugs today,
-including a file descriptor leak.
-
-## catching up
-
-In this end of summer rush, I've been too busy to blog for the past 20 days,
-but not entirely too busy to work on git-annex. Two releases have been made
-in that time, and a fair amount of improvements worked on.
-
-Including a new feature: When a local git repository is cloned with `git
-clone --shared`, git-annex detects this and defaults to a special mode
-where file contents get hard linked into the clone. It also makes the cloned
-repository be untrusted, to avoid confusing numcopies counting with the
-hard links. This can be useful for temporary working repositories without
-the overhead of lots of copies of files.
-
-## looking back
-
-I want to look back further, over the crowdfunded year of work covered
-by this devblog. There were a lot of things I wanted to accomplish this
-past year, and I managed to get to most of them. As well as a few surprises.
-
-* Windows support improved more than I guessed in my wildest dreams.  
-  git-annex went from working not too well on the command line to
-  being pretty solid there, as well as having a working
-  and almost polished webapp on Windows.  
-  There are still warts -- it's Windows after all!
-
-* Android didn't get many improvements. Most of the time I had budgeted to
-  Android porting ended up being used on Windows porting instead. I did,
-  however, get the Android build environment cleaned up a lot from the initial
-  hacked together one, and generally kept it building and working on Android.
-
-* The [direct mode guard](http://git-annex.branchable.com/devblog/day_48__direct_mode_guard_design/)
-  was not planned, but the need for it became clear, and
-  it's dramatically reduced the amount of command-line foot-shooting
-  that goes on in direct mode.
-
-* Repository repair was planned, and I've very proud of [git-repair](http://git-repair.branchable.com/).
-  Also pleased with the webapp's UI for scheduling repository consistency
-  checks.  
-  Always room for improvement in this kind of thing, but this brings a new
-  capability to both git and git-annex.
-
-* The [[external_special_remote_interface|special_remotes/external]] came
-  together beautifully. External special remotes are now just as well
-  supported as built-in ones, except the webapp cannot be used to configure
-  them.
-
-* Using git-remote-gcrypt for fully encrypted git repositories, including
-  support in the webapp for setting them (and gpg keys if necessary),
-  happened. Still needs testing/more use/improvements. Avoided doing
-  much in the area of gpg key management, which is probably good to avoid when
-  possible, but is probably needed to make this a really suitable option for
-  end users.
-
-* Telehash is still being built, and it's not clear if they've gotten it
-  to work at all yet. The v2 telehash has recently been superseded by a
-  a new v3. So I am not pleased that I didn't get git-annex working with
-  telehash, but it was outside my control. This is a problem that needs to get
-  solved outside git-annex first, either by telehash or something else.
-  The plan is to keep an eye on everything in this space, including for example,
-  Maidsafe.
-
-* In the meantime, the new notifychanges support in git-annex-shell
-  makes XMPP/telehash/whatever unnecessary in a lot of configurations.
-  git-annex's remotedaemon architecture supports that and is designed
-  to support other notification methods later. And the webapp has a lot of
-  improvements in the area of setting up ssh remotes, so fewer users will
-  be stuck with XMPP.
-
-* I didn't quite get to [[design/assistant/deltas]], but the final month
-  of work on chunking provides a lot of new features and hopefully a
-  foundation that will get to deltas eventually. There is a new haskell
-  library that's being developed with the goal of being used for git-annex
-  deltas.
-
-* I hadn't planned to make git-annex be able to upgrade itself, when installed
-  from this website. But there was a need for that, and so it happened.
-  Even got a gpg key trust path for the distribution of git-annex.
-
-* Metadata driven views was an entirely unplanned feature. The current
-  prototype is very exciting, it opens up entire new use cases. 
-  I had to hold myself back to not work on it too much,
-  especially as it shaded into adding a caching database to git-annex.
-  Had too much other stuff planned to do all I wanted.
-  Clearly this is an area I want to spend more time on!
-
-Those are most of the big features and changes, but probably half
-of my work on git-annex this past year was in smaller things, and general
-maintenance. Lots of others have contributed, some with 
-code (like the large effort to switch to bootstrap3),
-and others with documentation, bug reports, etc.
-
-Perhaps it's best to turn to `git diff --stat` to sum up the activity
-and see just how much both the crowdfunding campaign and
-the previous kickstarter have pushed git-annex into high gear:
- 
-	   campaign: 5410 files changed, 124159 insertions(+), 79395 deletions(-)
-	kickstarter: 4411 files changed, 123262 insertions(+), 13935 deletions(-)
-	year before: 1281 files changed,   7263 insertions(+), 55831 deletions(-)
-
-What's next? The hope is, no more crowdfunded campaigns where I have
-to promise the moon anytime soon. Instead, the goal is to move to a more
-mature and sustainable funding model, and continue to grow the git-annex
-community, and the spaces where it's useful.
diff --git a/doc/devblog/day_21__bugfix_day.mdwn b/doc/devblog/day_21__bugfix_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_21__bugfix_day.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Did various bug fixes and followup today. Amazing how a day can vanish that
-way. Made 4 actual improvements.
-
-I still have 46 messages in unanswered backlog. Although only 8 of
-the are from this month.
diff --git a/doc/devblog/day_220__working_through_backlog.mdwn b/doc/devblog/day_220__working_through_backlog.mdwn
deleted file mode 100644
--- a/doc/devblog/day_220__working_through_backlog.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Made a release yesterday, which was all bugfixes.
-
-Today, a few more bug fixes. Looked into making the webapp
-create non-bare repositories on removable drives, but before I got too far
-into the code, I noticed [there's a big problem with that idea](http://git-annex.branchable.com/forum/usability:_creating_an_archive_on_a_new_external_drive/).
-
-Rest of day was spent getting caught up on forum posts etc. I'm happy to
-read lots of good answers that have been posted while I've been away.
-Here's an excellent example: <http://git-annex.branchable.com/install/fromsource/#comment-5f8ceb060643ae71cd2adc72f0fca3f0>
-
-That led to rewriting the docs for building git-annex from source.
-New page: [[install/fromsource]].
-
-Backlog is now down to 117.
diff --git a/doc/devblog/day_221__another_fine_day_of_bugfixing.mdwn b/doc/devblog/day_221__another_fine_day_of_bugfixing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_221__another_fine_day_of_bugfixing.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Working through the forum posts and bugs. Backlog is down to 95.
-
-Discovered the first known security hole in git-annex!
-Turns out that S3 and Glacier remotes that were configured with embedcreds=yes and encryption=pubkey or encryption=hybrid
-didn't actually encrypt the AWS credentials that get embedded into the git
-repo. This doesn't affect any repos set up by the assistant.
-
-I've fixed the problem and am going to make a release soon.
-If your repo is affected, see 
-[[upgrades/insecure_embedded_creds]] for what to do about it.
diff --git a/doc/devblog/day_222_preparing_for_debian_release.mdwn b/doc/devblog/day_222_preparing_for_debian_release.mdwn
deleted file mode 100644
--- a/doc/devblog/day_222_preparing_for_debian_release.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Made two releases of git-annex, yesterday and today, which turned out to
-contain only Debian changes. So no need for other users to upgrade.
-
-This included fixing building on mips, and arm architectures.
-The mips build was running out of memory, and I was able to work around
-that. Then the arm builds broke today, because of a recent change to the
-version of llvm that has completely trashed ghc. Luckily, I was able
-to work around that too.
-
-Hopefully that will get last week's security fix into Debian testing,
-and otherwise have git-annex in Debian in good shape for the upcoming
-freeze.
diff --git a/doc/devblog/day_223__partial_commit_problem.mdwn b/doc/devblog/day_223__partial_commit_problem.mdwn
deleted file mode 100644
--- a/doc/devblog/day_223__partial_commit_problem.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-`git commit $some_unlocked_file` seems like a reasonably common thing for
-someone to do, so it's surprising to find that it's a [[little bit broken|/bugs/modified_permissions_persist_after_unlock__44___commit]],
-leaving the file staged in the index after (correctly) committing the
-annexed symlink.
-
-This is caused by either a bug in git and/or by git-annex abusing the
-git post-commit hook to do something it shouldn't do, although it's not
-unique in using the post-commit hook this way. I'm talking this over with
-Junio, and the fix will depend on the result of that conversation. It might
-involve git-annex detecting this case and canceling the commit, asking the
-user to `git annex add` the file first. Or it might involve a new git hook,
-although I have not had good luck getting hooks added to git before.
-
-----
-
-Meanwhile, today I did some other bug fixing. Fixed the Internet Archive
-support for embedcreds=yes. Made `git annex map` work for remote repos
-in a directory with an implicit ".git" prefix. And fixed a
-strange problem where the repository repair code caused a `git gc` to run
-and then tripped over its pid file.
-
-I seem to have enough fixes to make another release pretty soon.
-Especially since the current release of git-annex doesn't build with yesod
-1.4.
-
-Backlog: 94 messages
diff --git a/doc/devblog/day_224-226__long_rainy_slog.mdwn b/doc/devblog/day_224-226__long_rainy_slog.mdwn
deleted file mode 100644
--- a/doc/devblog/day_224-226__long_rainy_slog.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-3 days spent redoing the Android autobuilder! The new version of
-yesod-routes generates TH splices that break the EvilSplicer. So after
-updating everything to new versions for the Nth time, I instead went back
-to older versions. The autobuilder now uses Debian jessie, instead of
-wheezy. And all haskell packages are pinned to use the same version
-as in jessie, rather than the newest versions. Since jessie is quite near
-to being frozen, this should make the autobuilder much less prone to
-getting broken by new versions of haskell packages that need patches for
-Android.
-
-I happened to stumble over <http://hackage.haskell.org/package/setenv>
-while doing that. This supports setting and unsetting environment variables
-on Windows, which I had not known a way to do from Haskell. Cleaned up
-several ugly corners of the Windows port using it.
diff --git a/doc/devblog/day_227__info.mdwn b/doc/devblog/day_227__info.mdwn
deleted file mode 100644
--- a/doc/devblog/day_227__info.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Today, I've expanded `git annex info` to also be able to be used on annexed files
-and on remotes. Looking at the info for an individual remote is quite
-useful, especially for answering questions like: Does the remote have
-embedded creds? Are they encrypted? Does it use chunking? Is that old style
-chunking?
-
-<pre>
-remote: rsync.net
-description: rsync.net demo remote
-uuid: 15b42f18-ebf2-11e1-bea1-f71f1515f9f1
-cost: 250.0
-type: rsync
-url: xxx@usw-s002.rsync.net:foo
-encryption: encrypted (to gpg keys: 7321FC22AC211D23 C910D9222512E3C7)
-chunking: 1 MB chunks
-</pre>
-
-<pre>
-remote: ia3
-description: test [ia3]
-uuid: 12817311-a189-4de3-b806-5f339d304230
-cost: 200.0
-type: S3
-creds: embedded in git repository (not encrypted)
-bucket: joeyh-test-17oct-3
-internet archive item: http://archive.org/details/joeyh-test-17oct-3
-encryption: not encrypted
-chunking: none
-</pre>
-
-Should be quite useful info for debugging too..
-
-Yesterday, I fixed a bug that prevented retrieving files from Glacier.
diff --git a/doc/devblog/day_229__S3_multipart.mdwn b/doc/devblog/day_229__S3_multipart.mdwn
deleted file mode 100644
--- a/doc/devblog/day_229__S3_multipart.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Some progress on the [[bugs/S3_upload_not_using_multipart]] bug. The aws
-library now includes the multipart API. However, when I dug into it, it
-looks like the API needs some changes to get the ETAG of each uploaded
-part. Once that's fixed, git-annex should be able to support S3 multipart
-uploads, although I think that git-annex's own chunking is better in most
-situations -- it supports resuming uploads and downloads better. The main
-use case for S3 multipart seems to be using git-annex to publish large
-files.
-
-Also, managed to get the backlog down from 100 to just 65 messages,
-including catching up on quite old parts of backlog.
diff --git a/doc/devblog/day_22__gcrypt_on_rsync.net.mdwn b/doc/devblog/day_22__gcrypt_on_rsync.net.mdwn
deleted file mode 100644
--- a/doc/devblog/day_22__gcrypt_on_rsync.net.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Being still a little unsure of the UI and complexity
-for configuring gcrypt on ssh servers, I thought I'd start today with the
-special case of gcrypt on rsync.net. Since rsync.net allows running some git
-commands, gcrypt can be used to make encrypted git repositories on it.
-
-Here's the UI I came up with. It's complicated a bit by needing to explain
-the tradeoffs between the rsync and gcrypt special remotes.
-
-[[!img /assistant/rsync.net.encryption.png]]
-
-This works fine, but I did not get a chance to add support for enabling
-existing gcrypt repos on rsync.net. Anyway, most of the changes to make
-this work will also make it easier to add general support for gcrypt on ssh
-servers.
-
-Also spent a while fixing a bug in git-remote-gcrypt. Oddly 
-`gpg --list-keys --fast-list --fingerprint` does not show the fingerprints
-of some keys.
-
-Today's work was sponsored by Cloudier - Thomas Djärv.
diff --git a/doc/devblog/day_230__S3_multipart_round_2.mdwn b/doc/devblog/day_230__S3_multipart_round_2.mdwn
deleted file mode 100644
--- a/doc/devblog/day_230__S3_multipart_round_2.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-More work on S3 multipart uploads, since the aws library got fixed today
-to return the ETAGs for the parts. I got multipart uploads fully working,
-including progress display.
-
-The code takes care to stream each part in from the file and out the
-socket, so I'd hoped it would have good memory behavior. However, for
-reasons I have not tracked down, something in the aws library is causing
-each part to be buffered in memory. This is a problem, since I want to
-use 1 gb as the default part size.
diff --git a/doc/devblog/day_231__S3_multipart_wrapped_up.mdwn b/doc/devblog/day_231__S3_multipart_wrapped_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_231__S3_multipart_wrapped_up.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-S3 multipart is finally completely working. I still don't understand the
-memory issue that stumped me yesterday, but rewrote the code to use a
-simpler approach, which avoids the problem. Various other issues, and
-testing it with large files, took all day.
-
-This is now merged into the `s3-aws` branch, so when that branch lands, S3
-support will massively improve, from the current situation of using a buggy
-library that buffers uploaded files in memory, and cannot support very
-large file uploads at all, to being able to support hopefully files of
-arbitrary hugeness (at least up to a few terabytes).
-
-BTW, thanks to Aristid Breitkreuz and Junji Hashimoto for working on the
-multipart support in the `aws` library.
diff --git a/doc/devblog/day_232__OSX_Yosemite.mdwn b/doc/devblog/day_232__OSX_Yosemite.mdwn
deleted file mode 100644
--- a/doc/devblog/day_232__OSX_Yosemite.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-The OSX autobuilder has been updated to OSX 10.10 Yosemite. The 
-[resulting build](https://downloads.kitenet.net/git-annex/OSX/current/10.10_Yosemite/git-annex.dmg)
-might also work on 10.9 Mavericks too, and I'd appreciate help testing that.
-
-Went ahead and fixed the [[partial commit problem|bugs/modified_permissions_persist_after_unlock__44___commit]]
-by making the pre-commit hook detect and block problimatic partial commits.
diff --git a/doc/devblog/day_233__direct_mode_proxy.mdwn b/doc/devblog/day_233__direct_mode_proxy.mdwn
deleted file mode 100644
--- a/doc/devblog/day_233__direct_mode_proxy.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Ever since the direct mode guard was added a year ago, direct mode has been
-a lot safer to use, but very limited in the git commands that could be run
-in a direct mode repository.
-
-The worst limitation was that there was no way to `git revert` unwanted
-changes. But also, there was no way to check out different branches,
-or run commands like `git mv`.
-
-Today I made `git annex proxy`, which allows doing all of those things,
-and more. [documentation here](http://git-annex.branchable.com/direct_mode/#index5h2)
-
-It's so flexible that I'm not sure where the boundries lie yet, but it
-seems it will work for any git command that updates both the work tree and
-the index. Some git commands only update one or the other and not both and
-won't work with the proxy. As an advanced user tool, I think this is a
-great solution. I still want to make a simpler
-[[undo command|todo/direct_mode_undo]] that can nicely integrate into file
-managers.
-
-The implementation of `git annex proxy` is
-[quite simple](http://source.git-annex.branchable.com/?p=source.git;a=blob;f=Command/Proxy.h), because it
-reuses all the complicated work tree update code that was already written
-for `git annex merge`.
-
-----
-
-And here's the lede I buried: I've gotten two years of funding to work
-on git-annex part-time!
-[Details in my personal blog](http://joeyh.name/blog/entry/continuing_to_be_pleasantly_surprised/).
diff --git a/doc/devblog/day_234__undo_undo.mdwn b/doc/devblog/day_234__undo_undo.mdwn
deleted file mode 100644
--- a/doc/devblog/day_234__undo_undo.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Built the `git annex undo` command. This is intended to be a simple
-interface for users who have changed one file, and want to undo the change
-without the complexities of `git revert` or `git annex proxy`. It's simple
-enough that I added undo as an action in the file manager integration.
-
-And yes, you can undo an undo. :)
diff --git a/doc/devblog/day_235__thanksgiving_backlog.mdwn b/doc/devblog/day_235__thanksgiving_backlog.mdwn
deleted file mode 100644
--- a/doc/devblog/day_235__thanksgiving_backlog.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Back from the holiday, catching up on traffic. Backlog stands at 113
-messages.
-
-Here's a nice tip that Giovanni added:
-[[tips/publishing_your_files_to_the_public]] (using a public S3 bucket)
-
-Just before going on break, I added a new feature that I didn't mention
-here. `git annex diffdriver` integrates git-annex with git's external diff
-driver support. So if you have a smart diff program that can diff, say,
-genome sequences, or cat videos, or something in some useful way, it
-can be hooked up to `git diff` and will be able to see the content of
-annexed files.
-
-Also today, I spent a couple hours today updating the license file included
-in the standalone git-annex builds to include the licenses of all the
-haskell libraries git-annex depends on. Which I had for some reason not
-thought to include before, despite them getting built into the git-annex
-binary.
diff --git a/doc/devblog/day_236__release_day.mdwn b/doc/devblog/day_236__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_236__release_day.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Today's release has a month's accumulated changes, including several nice
-new features: `git annex undo`, `git annex proxy`, `git annex diffdriver`,
-and I was able to land the s3-aws branch in this release too, so lots of
-improvements to the S3 support.
-
-Spent several hours getting the autobuilders updated, with the haskell
-`aws` library installed. Android and armel builds are still out of date.
-
-Also fixed two Windows bugs related to the location of the bundled ssh
-program.
diff --git a/doc/devblog/day_237__extending_addurl.mdwn b/doc/devblog/day_237__extending_addurl.mdwn
deleted file mode 100644
--- a/doc/devblog/day_237__extending_addurl.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Worked on [[todo/extensible_addurl]] today. When `git annex addurl` is run,
-remotes will be asked if they claim the url, and whichever remote does will
-be used to download it, and location tracking will indicate that remote
-contains the object. This is a masive 1000 line patch touching 30 files,
-including follow-on changes in `rmurl` and `whereis` and even `rekey`.
-
-It should now be possible to build an external special remote that handles
-*.torrent and magnet: urls and passes them off to a bittorrent client for
-download, for example.
-
-Another use for this would be to make an external special remote that
-uses youtube-dl or some other program than quvi for downloading web videos.
-The builtin quvi support could probably be moved out of the web special
-remote, to a separate remote. I haven't tried to do that yet.
diff --git a/doc/devblog/day_238__extending_addurl_further.mdwn b/doc/devblog/day_238__extending_addurl_further.mdwn
deleted file mode 100644
--- a/doc/devblog/day_238__extending_addurl_further.mdwn
+++ /dev/null
@@ -1,67 +0,0 @@
-Some more work on the interface that lets remotes claim urls for `git annex
-addurl`. Added support for remotes suggesting a filename to use when
-adding an url. Also, added support for urls that result in multiple files
-when downloaded. The obvious use case for that is an url to a torrent that
-contains multiple files.
-
-Then, got `git annex importfeed` to also check if a remote claims an url.
-
-Finally, I put together a quick demo external remote using this new
-interface. [[special_remotes/external/git-annex-remote-torrent]]
-adds support for torrent files to git-annex, using [aria2c](http://aria2.sourceforge.net/) to download them.
-It supports multi-file torrents, but not magnet links. (I'll probably
-rewrite this more robustly and efficiently in haskell sometime soon.)
-
-Here's a demo:
-
-<pre>
-# git annex initremote torrent type=external encryption=none externaltype=torrent
-initremote torrent ok
-(Recording state in git...)
-# ls
-# git annex addurl  --fast file:///home/joey/my.torrent
-  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
-                                 Dload  Upload   Total   Spent    Left  Speed
-100   198  100   198    0     0  3946k      0 --:--:-- --:--:-- --:--:-- 3946k
-addurl _home_joey_my.torrent/bar (using torrent) ok
-addurl _home_joey_my.torrent/baz (using torrent) ok
-addurl _home_joey_my.torrent/foo (using torrent) ok
-(Recording state in git...)
-# ls _home_joey_my.torrent/
-bar@  baz@  foo@
-# git annex get _home_joey_my.torrent/baz
-get _home_joey_my.torrent/baz (from torrent...) 
-  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
-                                 Dload  Upload   Total   Spent    Left  Speed
-  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:-100   198  100   198    0     0  3580k      0 --:--:-- --:--:-- --:--:-- 3580k
-
-12/11 18:14:56 [NOTICE] IPv4 DHT: listening on UDP port 6946
-
-12/11 18:14:56 [NOTICE] IPv4 BitTorrent: listening on TCP port 6961
-
-12/11 18:14:56 [NOTICE] IPv6 BitTorrent: listening on TCP port 6961
-
-12/11 18:14:56 [NOTICE] Seeding is over.
-12/11 18:14:57 [NOTICE] Download complete: /home/joey/tmp/tmp.Le89hJSXyh/tor
-
-12/11 18:14:57 [NOTICE] Your share ratio was 0.0, uploaded/downloaded=0B/0B
-                                                                               
-Download Results:
-gid   |stat|avg speed  |path/URI
-======+====+===========+=======================================================
-71f6b6|OK  |       0B/s|/home/joey/tmp/tmp.Le89hJSXyh/tor/baz
-
-Status Legend:
-(OK):download completed.
-ok                      
-(Recording state in git...)
-# git annex find
-_home_joey_my.torrent/baz
-# git annex whereis _home_joey_my.torrent/baz
-whereis _home_joey_my.torrent/baz (2 copies) 
-  	1878241d-ee49-446d-8cce-041c46442d94 -- [torrent]
-   	52412020-2bb3-4aa4-ae16-0da22ba48875 -- joey@darkstar:~/tmp/repo [here]
-
-  torrent: file:///home/joey/my.torrent#2
-ok
-</pre>
diff --git a/doc/devblog/day_239-240__bittorrent_remote.mdwn b/doc/devblog/day_239-240__bittorrent_remote.mdwn
deleted file mode 100644
--- a/doc/devblog/day_239-240__bittorrent_remote.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Spent a couple days adding a [[bittorrent_special_remote|special_remotes/bittorrent]]
-to git-annex. This is better than the demo external torrent remote I made
-on Friday: It's built into git-annex; it supports magnet links; it even
-parses aria2c's output so the webapp can display progress bars.
-
-Besides needing `aria2` to download torrents, it also currently depends on
-the `btshowmetainfo` command from the original bittorrent client (or
-bittornado). I looked into using
-<http://hackage.haskell.org/package/torrent> instead,
-but that package is out of date and doesn't currently build. I've got a
-patch fixing that, but am waiting to hear back from the library's author.
-
-There is a bit of a behavior change here; while before `git annex addurl` of
-a torrent file would add the torrent file itself to the repository, it now will
-download and add the contents of the torrent. I think/hope this behavior
-change is ok..
diff --git a/doc/devblog/day_23__GNU_day.mdwn b/doc/devblog/day_23__GNU_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_23__GNU_day.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Worked on making the assistant able to merge in existing encrypted
-git repositories from rsync.net.
-
-This had two parts. First, making the webapp UI where you click to enable a
-known special remote work with these encrypted repos. Secondly, handling
-the case where a user knows they have an encrypted repository on rsync.net,
-so enters in its hostname and path, but git-annex doesn't know about that
-special remote. The second case is important, for example, when the
-encrypted repository is a backup and you're restoring from it. It wouldn't
-do for the assistant, in that case, to make a *new* encrypted repo and
-push it over top of your backup!
-
-Handling that was a neat trick. It has to do quite a lot of probing, including
-downloading the whole encrypted git repo so it can decrypt it and merge it,
-to find out about the special remote configuration used for it. This all
-works with just 2 ssh connections, and only 1 ssh password prompt max.
-
-Next, on to generalizing this rsync.net specific code to work with
-arbitrary ssh servers!
-
-----
-
-Today's work was made possible by [RMS's vision 30 years ago](http://article.olduse.net/771@mit-eddie.UUCP).
diff --git a/doc/devblog/day_241-242__end_of_year_cleanup.mdwn b/doc/devblog/day_241-242__end_of_year_cleanup.mdwn
deleted file mode 100644
--- a/doc/devblog/day_241-242__end_of_year_cleanup.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Took a holiday week off from git-annex development, and started a new side
-project building [shell-monad](http://joeyh.name/code/shell-monad/), which
-might eventually be used in some parts of git-annex that generate shell
-scripts.
-
-Message backlog is 165 and I have not dove back into it, but I have started
-spinning back up the development engines in preparation for new year
-takeoff. 
-
-Yesterday, added some minor new features -- `git annex sync` now
-supports git remote groups, and I added a new plumbing command
-`setpresentkey` for those times when you really need to mess with
-git-annex's internal bookkeeping. Also cleaned up a lot of build warning
-messages on OSX and Windows.
-
-Today, first some improvements to make `addurl` more robust.
-Then the rest of the day was spent on Windows. Fixed (again)
-the Windows port's problem with rsync hating DOS style filenames. Got
-the rsync special remote fully working on Windows for the first time.
-
-Best of all, got the Windows autobuilder to run the test
-suite successfully, and fixed a couple test suite failures on Windows.
diff --git a/doc/devblog/day_243__android_5.mdwn b/doc/devblog/day_243__android_5.mdwn
deleted file mode 100644
--- a/doc/devblog/day_243__android_5.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-I've finally been clued into why [git-annex isn't working on Android 5](http://git-annex.branchable.com/bugs/__91__Android__93___5.0_needs_PIE_executables___40__git_annex_does_not_work_on_android_5.0__41__/), and
-it seems fixing it is as easy as pie.. That is, passing -pie -FPIE to the
-linker. I've added a 5.0 build to the Android autobuilder. It is currently
-untested, so I hope to get feedback from someone with an Android 5 device;
-a [test build](http://downloads.kitenet.net/git-annex/autobuild/android/5.0/git-annex.apk) is now available.
-
-I've been working through the backlog of messages today, and gotten down
-from 170 to 128. Mostly answered a lot of interesting questions, 
-such as "[Where to start reading the source code?](http://git-annex.branchable.com/install/fromsource/#comment-cb68f2aa0a598d0150db852834ea07da)"
-
-Also did some work to make git-annex check git versions at runtime more
-often, instead of assuming the git version it was built against. 
-It turns out this could be done pretty inexpensively in 2 of 4 cases,
-and one of the 2 fixed was the git check-attr behavior change, 
-which could lead to git-annex add hanging if used with an old version of
-git.
diff --git a/doc/devblog/day_244__relative_paths.mdwn b/doc/devblog/day_244__relative_paths.mdwn
deleted file mode 100644
--- a/doc/devblog/day_244__relative_paths.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-git-annex internally uses all absolute paths all the time.
-For a couple of reasons, I'd like it to use relative paths.
-The best reason is, it would let a repository be moved while git-annex was
-running, without breaking. A lesser reason is that Windows has some
-crazy small limit on the length of a path (260 bytes?!), and using relative
-paths would avoid hitting it so often.
-
-I tried to do this today, in a `relativepaths` branch. I eventually got the
-test suite to pass, but I am very unsure about this change. A lot of random
-assumptions broke, and the test suite won't catch them all. In a few
-places, git-annex commands do change the current directory, and that
-will break with relative paths.
-
-A frustrating day.
diff --git a/doc/devblog/day_245__yak_shaving.mdwn b/doc/devblog/day_245__yak_shaving.mdwn
deleted file mode 100644
--- a/doc/devblog/day_245__yak_shaving.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Worked more on the `relativepaths` branch last night, and I am actually
-fairly happy with it now, and plan to merge it after I've run it for a bit
-longer myself.
-
-It seems that I did manage to get a git-annex executable that is built PIE
-so it will work on Android 5.0. But all the C programs like busybox
-included in the Android app also have to be built that way. Arranging for
-everything to get built twice and with the right options took up most of
-today.
diff --git a/doc/devblog/day_246__old_todos.mdwn b/doc/devblog/day_246__old_todos.mdwn
deleted file mode 100644
--- a/doc/devblog/day_246__old_todos.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Got a release out today.
-
-I'm feeling a little under the weather, so wanted something easy to do in
-the rest of the day that would be nice and constructive. Ended up going
-over the todo list. Old todos come in three groups; hard problems, already
-solved, and easy changes that never got done. I left the first group alone,
-closed many todos in the second group, and implemented a few easy changes.
-Including `git annex sync -m` and adding some more info to `git annex info
-remote`.
diff --git a/doc/devblog/day_247__hooks_and_large_files_on_windows.mdwn b/doc/devblog/day_247__hooks_and_large_files_on_windows.mdwn
deleted file mode 100644
--- a/doc/devblog/day_247__hooks_and_large_files_on_windows.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Today I got The pre-commit-annex hook working on Windows. It turns out that
-msysgit runs hook scripts even when they're not executable, and it parses
-the #! line itself. Now git-annex does too, on Windows.
-
-Also, added a new chapter to the walkthrough,
-[[walkthrough/using_special_remotes]]. They clearly needed to be mentioned,
-especially to show the workflow of running initremote in one repository,
-then syncing another repository and running enableremote to enable the same
-special remote there.
-
-Then more fun Windows porting! Turns out git-annex on Windows didn't handle
-files > 2 gb correctly; the way it was getting file size 
-[uses a too small data type on Windows](https://github.com/jystic/unix-compat/issues/16).
-Luckily git-annex itself treats all file sizes as unbounded Integers,
-so I was easily able to swap in a `getFileSize` that returns correct
-values for large files.
-
-While I haven't blogged since the 13th and have not been too active until
-today, there are still a number of little improvements that have been done
-here and there.
-
-Including a fix for an interesting bug where the assistant would tell
-the remotedaemon that the network connection has been lost, twice in a row,
-and this would make the remotedeamon fail to reconnect to the remote when
-the network came up. I'm not sure what situation triggers this bug (Maybe
-machines with 2 interfaces? Or maybe a double disconnection event for 1
-interface?), but I was able to reproduce it by sending messages to the
-remotedaemon, and so fixed it.
-
-Backlog is down to 118 messages.
diff --git a/doc/devblog/day_248__workload_tuning.mdwn b/doc/devblog/day_248__workload_tuning.mdwn
deleted file mode 100644
--- a/doc/devblog/day_248__workload_tuning.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-Today I put together a lot of things I've been thinking about:
-
-* There's some evidence that git-annex needs tuning to handle some unusual
-  repositories. In particular very big repositories might benefit from
-  different object hashing.
-* It's really hard to handle [[upgrades]] that change the fundamentals of
-  how git-annex repositories work. Such an upgrade would need every
-  git-annex user to upgrade their repository, and would be very painful.
-  It's hard to imagine a change that is worth that amount of pain.
-* There are other changes some would like to see (like lower-case object
-  hash directory names) that are certianly not enough to warrant a flag
-  day repo format upgrade.
-* It would be nice to let people who want to have some flexability to play
-  around with changes, in their own repos, as long as they don't a)
-  make git-annex a lot more complicated, or b) negatively impact others.
-  (Without having to fork git-annex.)
-
-This is discussed in more depth in [[design/new_repo_versions]].
-
-The solution, which I've built today, is support for
-[[tuning]] settings, when a new repository is first created. The resulting
-repository will be different in some significant way from a default
-git-annex repository, but git-annex will support it just fine. 
-
-The main limitations are:
-
-* You can't change the tuning of an existing repository
-  (unless a tool gets written to transition it).
-* You absolutely don't want to merge repo B, which has been tuned in
-  nonstandard ways, into repo A which has not. Or A into B. (Unless you like
-  watching slow motion car crashes.)
-
-I built all the infrastructure for this today. Basically, the git-annex
-branch gets a record of all tunings that have been applied, and they're
-automatically propigated to new clones of a repository.
-
-And I implemented the first tunable setting:
-
-	git -c annex.tune.objecthashlower=true annex init
-
-This is definitely an experimental feature for now.
-`git-annex merge` and similar commands will detect attempts to merge
-between incompatably tuned repositories, and error out. But, there are a
-lot of ways to shoot yourself in the foot if you use this feature:
-
-* Nothing stops `git merge` from merging two incompatable repositories.
-* Nothing stops any version of git-annex older from today from merging
-  either.
-
-Now that the groundwork is laid, I can pretty easily, and inexpensively,
-add more tunable settings. The next two I plan to add are already
-documented, `annex.tune.objecthashdirectories` and 
-`annex.tune.branchhashdirectories`. Most new tunables should take about 4
-lines of code to add to git-annex.
diff --git a/doc/devblog/day_249_onward.mdwn b/doc/devblog/day_249_onward.mdwn
deleted file mode 100644
--- a/doc/devblog/day_249_onward.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Made a release yesterday, and caught up on most recent messages
-earlier this week. Backlog stands at 128 messages.
-
-Had to deal with an ugly problem with /usr/bin/glacier today. Seems that
-there are multiple programs all using that name, some of them shipping in
-some linux distributions, and the one from boto fails to fail when passed
-parameters it doesn't understand. Yugh! I had to make git-annex probe to
-make sure the right glacier program is installed.
-
-I'm planning to deprecate the glacier special remote at some point.
-Instead, I'd like to make the S3 special remote support the S3-glacier
-lifecycle, so objects can be uploaded to S3, set to transition to
-glacier, and then if necessary pulled back from glacier to S3. That should
-be much simpler and less prone to break.
-
-But not yet; [haskell-aws needs glacier support added](https://github.com/aristidb/aws/issues/81).
-Or I could use the new amazonka library, but I'd rather stick with
-haskell-aws.
-
-Some other minor improvements today included adding `git annex
-groupwanted`, which makes for easier examples than using vicfg, and
-making `git annex import` support options like --include and --exclude.
-
-Also I moved a many file matching options to only be accepted by
-the commands that actually use them. Of the remaining common
-options, most of them make sense for every command to accept (eg, --force
-and --debug). It would make sense to move --backend, --notify-start/finish,
-and perhaps --user-agent. Eventually.
diff --git a/doc/devblog/day_24__nearly_done_with_gcrypt.mdwn b/doc/devblog/day_24__nearly_done_with_gcrypt.mdwn
deleted file mode 100644
--- a/doc/devblog/day_24__nearly_done_with_gcrypt.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-So close to being done with gcrypt support.. But still not quite there.
-
-Today I made the UI changes to support gcrypt when setting up a repository
-on a ssh server, and improved the probing and data types so it can tell
-which options the server supports. Fairly happy with how that is turning
-out.
-
-Have not yet hooked up the new buttons to make gcrypt repos. While I was
-testing that my changes didn't break other stuff, I found a bug in the
-webapp that caused it to sometimes fail to transfer one file to/from a
-remote that was just added, because the transferrer process didn't know
-about the new remote yet, and crashed (and was restarted knowing about it,
-so successfully sent any other files). So got sidetracked on fixing that.
-
-Also did some work to make the gpg bundled with git-annex on OSX be
-compatable with the config files written by MacGPG. At first I was going to
-hack it to not crash on the options it didn't support, but it turned out
-that upgrading to version 1.4.14 actually fixed the problem that was making
-it build without support for DNS.
-
-----
-
-Today's work was sponsored by Thomas Hochstein.
diff --git a/doc/devblog/day_250__backog_bugfixing.mdwn b/doc/devblog/day_250__backog_bugfixing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_250__backog_bugfixing.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Plowing through the backlog today, and fixing quite a few bugs! Got the
-backlog down to 87 messages from ~140. And some of the things I got to were
-old and/or hard.
-
-About a third of the day was spent revisiting
-[[bugs/git-annex_branch_shows_commit_with_looong_commitlog]].
-I still don't understand how that behavior can happen, but I have a
-donated repository where it did happen. Made several changes to try to make
-the problem less likely to occur, and not as annoying when it does occur,
-and maybe get me more info if it does happen to someone again.
diff --git a/doc/devblog/day_251-252__dusting_off_the_roadmap.mdwn b/doc/devblog/day_251-252__dusting_off_the_roadmap.mdwn
deleted file mode 100644
--- a/doc/devblog/day_251-252__dusting_off_the_roadmap.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Many more little improvements made yesterday and part of today. While
-it's only been a week since the last release, it feels almost time
-to make another one, after so many recent bug fixes and small improvements.
-
-I've updated the [[design/roadmap]]. I have been operating without a
-roadmap for half a year, and it would be nice to have some plans.
-Keeping up with bug reports and requests as they come in is a fine mode
-of work, but it can feel a little aimless. It's good to have a planned out
-course, or at least some longer term goals.
-
-After the next release, I've penciled in the second half of this month to
-work on the [[design/caching_database]].
diff --git a/doc/devblog/day_253__sqlite_for_incremental_fsck.mdwn b/doc/devblog/day_253__sqlite_for_incremental_fsck.mdwn
deleted file mode 100644
--- a/doc/devblog/day_253__sqlite_for_incremental_fsck.mdwn
+++ /dev/null
@@ -1,58 +0,0 @@
-[[!meta title="day 254  sqlite for incremental fsck"]]
-
-Yesterday I did a little more investigation of key/value stores.
-I'd love a pure haskell key/value store that didn't buffer everything in
-memory, and that allowed concurrent readers, and was ACID, and production
-quality. But so far, I have not found anything that meets all those
-criteria. It seems that sqlite is the best choice for now.
-
-Started working on the `database` branch today. The plan is to use
-sqlite for incremental fsck first, and if that works well, do the rest
-of what's planned in [[design/caching_database]].
-
-At least for now, I'm going to use a dedicated database file for each
-different thing. (This may not be as space-efficient due to lacking
-normalization, but it keeps things simple.) 
-
-So, .git/annex/fsck.db will be used by incremental fsck, and it has
-a super simple Persistent database schema:
-
-[[!format haskell """
-Fscked
-  key SKey
-  UniqueKey key
-"""]]
-
-It was pretty easy to implement this and make incremental fsck use it. The
-hard part is making it both fast and robust.
-
-At first, I was doing everything inside a single `runSqlite` action.
-Including creating the table. But, it turns out that runs as a single
-transaction, and if it was interrupted, this left the database in a
-state where it exists, but has no tables. Hard to recover from.
-
-So, I separated out creating the database, made that be done in a separate
-transation and fully atomically. Now `fsck --incremental` could be crtl-c'd
-and resumed with `fsck --more`, but it would lose the transaction and so
-not remember anything had been checked.
-
-To fix that, I tried making a separate transation per file fscked. That
-worked, and it resumes nicely where it left off, but all those transactions
-made it much slower.
-
-To fix the speed, I made it commit just one transaction per minute. This
-seems like an ok balance. Having fsck re-do one minute's work when restarting
-an interrupted incremental fsck is perfectly reasonable, and now the speed,
-using the sqlite database, is nearly as fast as the old sticky bit hack was.
-(Specifically, 6m7s old vs 6m27s new, fscking 37000 files from cold cache
-in --fast mode.)
-
-There is still a problem with multiple concurrent `fsck --more`
-failing. Probably a concurrent writer problem? And, some porting will be
-required to get sqlite and persistent working on Windows and Android.
-So the branch isn't ready to merge yet, but it seems promising.
-
-In retrospect, while incremental fsck has the simplest database schema, it
-might be one of the harder things listed in [[design/caching_database]], 
-just because it involves so many writes to the database. The other use
-cases are more read heavy.
diff --git a/doc/devblog/day_253__ssh-options.mdwn b/doc/devblog/day_253__ssh-options.mdwn
deleted file mode 100644
--- a/doc/devblog/day_253__ssh-options.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Spent a couple hours to make the ssh-options git config setting be used
-in more places. Now it's used everywhere that git-annex supports ssh
-caching, including the `git pull` and `git push` done by `sync` and by the
-assistant. Also the `remotedaemon` and the gcrypt, rsync, and ddar
-special remotes.
diff --git a/doc/devblog/day_255__sqlite_concurrent_writers_problem.mdwn b/doc/devblog/day_255__sqlite_concurrent_writers_problem.mdwn
deleted file mode 100644
--- a/doc/devblog/day_255__sqlite_concurrent_writers_problem.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Worked today on making incremental fsck's use of sqlite be safe with
-multiple concurrent fsck processes.
-
-The first problem was that having `fsck --incremental` running and starting a
-new `fsck --incremental` caused it to crash. And with good reason, since
-starting a new incremental fsck deletes the old database, the old process
-was left writing to a database that had been deleted and recreated out from
-underneath it. Fixed with some locking.
-
-Next problem is harder. Sqlite doesn't support multiple concurrent writers
-at all. One of them will fail to write. It's not even possible to have two
-processes building up separate transactions at the same time. Before using
-sqlite, incremental fsck could work perfectly well with multiple fsck
-processes running concurrently. I'd like to keep that working.
-
-My partial solution, so far, is to make git-annex buffer writes, and every
-so often send them all to sqlite at once, in a transaction. So most of the
-time, nothing is writing to the database. (And if it gets unlucky and
-a write fails due to a collision with another writer, it can just wait and
-retry the write later.) This lets multiple processes write to the database
-successfully.
-
-But, for the purposes of concurrent, incremental fsck, it's not ideal.
-Each process doesn't immediately learn of files that another process has
-checked. So they'll tend to do redundant work. Only way I can see to
-improve this is to use some other mechanism for short-term IPC between the
-fsck processes.
-
-----
-
-Also, I made `git annex fsck --from remote --incremental` use a different
-database per remote. This is a real improvement over the sticky bits;
-multiple incremental fscks can be in progress at once, 
-checking different remotes.
diff --git a/doc/devblog/day_256__sqlite_concurrency_argh.mdwn b/doc/devblog/day_256__sqlite_concurrency_argh.mdwn
deleted file mode 100644
--- a/doc/devblog/day_256__sqlite_concurrency_argh.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Breaking news: gitlab.com repositories now support git-annex!
-
-* [GitLab Annex solves the problem of versioning large binaries with git](https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/)
-* [freely licensed source code](https://gitlab.com/gitlab-org/gitlab-shell)
-
-A very nice surprise! More git hosters should do this..
-
-----
-
-Back to sqlite concurrency, I thought I had it dealt with, but more testing
-today has turned up a lot more problems with sqlite and concurrent writers
-(and readers).
-
-First, I noticed that a process can be happily writing changes to the
-database, but if a second process starts reading from the database, this
-will make the writier start failing with BUSY, and keep failing until the
-second process goes idle. It turns out the solution to this is to use WAL 
-mode, which prevents readers from blocking writers.
-
-After several hours (persistent doesn't make it easy to enable WAL mode),
-it seemed pretty robust with concurrent fsck.
-
-But then I saw SELECT fail with BUSY. I don't understand why a reader would
-fail in WAL mode; that's counter to the documentation. My best guess is
-that this happens when a checkpoint is being made.
-
-This seems to be a real bug in sqlite. It may only affect the older
-versions bundled with persistent.
diff --git a/doc/devblog/day_257__release_day.mdwn b/doc/devblog/day_257__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_257__release_day.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Today's release doesn't have the database branch merged of course, but it
-still has a significant amount of changes.
-
-Developed a test case for the sqlite problem, that
-reliably reproduces it, and sent it to the sqlite mailing list. It seems
-that under heavy write load, when a new connection is made to the database,
-SELECT can fail for a little while. Once one SELECT succeeds, that database
-connection becomes solid, and won't fail any more (apparently). This makes
-me think there might be some connection initialization steps that don't end
-up finishing before the SELECT goes through in this situation. I should be
-able to work around this problem by probing new connections for stability,
-and probably will have to, since it'll be years before any bug fixed sqlite
-is available everywhere.
-
-I also noticed that current git-annex incremental parallel fsck doesn't
-really parallelize well; eg the processes do duplicate work. So, the
-database branch is not really a regression in this area.
diff --git a/doc/devblog/day_258__database_branch_merged.mdwn b/doc/devblog/day_258__database_branch_merged.mdwn
deleted file mode 100644
--- a/doc/devblog/day_258__database_branch_merged.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I'm snowed in, but keeping busy..
-
-Developed a complete workaround for the [sqlite SELECT ErrorBusy bug](http://news.gmane.org/find-root.php?message_id=20150219163255.GA13383%40kitenet.net).
-So after a week, I finally have sqlite working robustly. And, I merged in
-the branch that uses sqlite for incremental fsck.
-
-Benchmarking an incremental fsck --fast run, checking 40 thousand files,
-it used to take 4m30s using sticky bits, and using sqlite slowed it down by
-10s. So one added second per 4 thousand or so files. I think that's ok.
-Incremental fsck is intended to be used in big repos, which are probably not
-checked in --fast most, so the checksumming of files will by far swamp
-that overhead.
-
-Also got sqlite and persistent installed on all the autobuilders. This
-was easier than expected, because persistent bundles its own copy of
-sqlite.
-
-That would have been a good stopping place for the day's work.. But then I
-got to spent 5 more hours getting the EvilSplicer to support Persistent.
-Urgh. :-/
-
-Now I can look forward to using sqlite for something more interesting than
-incremental fsck, like metadata caching for views, or the direct mode mappings.
-But, given all the trouble I had with sqlite, I'm going to put that off for
-a little while, to make sure that I've really gotten sqlite to work robustly.
diff --git a/doc/devblog/day_259__submodules.mdwn b/doc/devblog/day_259__submodules.mdwn
deleted file mode 100644
--- a/doc/devblog/day_259__submodules.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-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.
diff --git a/doc/devblog/day_25__finishing_up_gcrypt.mdwn b/doc/devblog/day_25__finishing_up_gcrypt.mdwn
deleted file mode 100644
--- a/doc/devblog/day_25__finishing_up_gcrypt.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Long day, but I did finally finish up with gcrypt support. More or less.
-
-Got both creating and enabling existing gcrypt repositories on ssh servers
-working in the webapp. (But I ran out of time to make it detect when the
-user is manually entering a gcrypt repo that already exists. Should be easy
-so maybe tomorrow.)
-
-Fixed several bugs in git-annex's gcrypt support that turned up in testing.
-Made git-annex ensure that a gcrypt repository does not have
-receive.denyNonFastForwards set, because gcrypt relies on always forcing
-the push of the branch it stores its manifest on. Fixed a bug in
-`git-annex-shell recvkey` when it was receiving a file from an annex in
-direct mode.
-
-Also had to add a new `git annex shell gcryptsetup` command, which is
-needed to make setting up a gcrypt repository work when the assistant
-has set up a locked-down ssh key that can only run git-annex-shell. Painted
-myself into a bit of a corner there.
-
-And tested, tested, tested. So many possibilities and edge cases in this
-part of the code..
-
-----
-
-Today's work was sponsored by Hendrik Müller Hofstede.
diff --git a/doc/devblog/day_260__random_month.mdwn b/doc/devblog/day_260__random_month.mdwn
deleted file mode 100644
--- a/doc/devblog/day_260__random_month.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-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 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.
-
-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".
diff --git a/doc/devblog/day_261__random_improvements.mdwn b/doc/devblog/day_261__random_improvements.mdwn
deleted file mode 100644
--- a/doc/devblog/day_261__random_improvements.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-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.
diff --git a/doc/devblog/day_262__ipfs.mdwn b/doc/devblog/day_262__ipfs.mdwn
deleted file mode 100644
--- a/doc/devblog/day_262__ipfs.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Did a deep dive into [ipfs](http://ipfs.io/) last night. It has great
-promise.
-
-As a first step toward using it with git-annex, I built an experimental
-[[ipfs_special_remote|special_remotes/ipfs]]. It has some nice abilities;
-any ipfs address can be downloaded to a file in the repository:
-
-	git annex addurl ipfs:QmYgXEfjsLbPvVKrrD4Hf6QvXYRPRjH5XFGajDqtxBnD4W --file somefile
-
-And, any file in the git-annex repository can be published to the world
-via ipfs, by simply using `git annex copy --to ipfs`. The ipfs address
-for the file is then visible in `git annex whereis`.
-
-Had to extend the external special remote protocol slightly for that, so
-that ipfs addresses can be recorded as uris in git-annex, and will show up
-in `git annex whereis`.
diff --git a/doc/devblog/day_263__diving_back_in.mdwn b/doc/devblog/day_263__diving_back_in.mdwn
deleted file mode 100644
--- a/doc/devblog/day_263__diving_back_in.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-After an intense week away, I didn't mean to work on git-annex today, but I
-got sucked back in..
-
-Worked on some plumbing commands for mass repository creation.
-Made `fromkey` be able to read a stream of files to create from stdin.
-Added a new `registerurl` plumbing command, that reads a stream of keys and
-urls from stdin.
diff --git a/doc/devblog/day_264__catching_up.mdwn b/doc/devblog/day_264__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_264__catching_up.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Caught up with most of the recent backlog today. Was not very bad.
-
-Fixed `remotedaemon` to support gcrypt remotes, which was never
-quite working before.
-
-Seem to be on track to making a release tomorrow with a whole month's
-changes.
diff --git a/doc/devblog/day_265__at_Dartmouth.mdwn b/doc/devblog/day_265__at_Dartmouth.mdwn
deleted file mode 100644
--- a/doc/devblog/day_265__at_Dartmouth.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Spent a couple of days at Dartmouth hanging out in the neuroscience
-department with the [Datalad](http://datalad.org/) developers.
-Added several new plumbing commands and a new post-update-annex hook,
-based on their feedback of how they're using git-annex.
diff --git a/doc/devblog/day_266-267__man_page_split.mdwn b/doc/devblog/day_266-267__man_page_split.mdwn
deleted file mode 100644
--- a/doc/devblog/day_266-267__man_page_split.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-While traveling for several days, I filled dead time with a rather massive
-reorganization of the git-annex man page, and I finished that up this
-morning.
-
-That man page had gotten rather massive, at around 3 thousand lines. I
-split out 87 man pages, one for each git-annex command. Many of these were
-expanded with additional details, and have become a lot better thanks
-to the added focus and space. See for example, [[git-annex-find]],
-or any of the links on the new [[git-annex]] man page. (Which is still over
-1 thousand lines long..)
-
-Also, `git annex help <command>` can be used to pull up a command's man
-page now!
-
-I'm taking the rest of the day off to R&R from the big trip north, and
-expect to get back into the backlog of 143 messages starting tomorrow.
diff --git a/doc/devblog/day_268_stressed_out.mdwn b/doc/devblog/day_268_stressed_out.mdwn
deleted file mode 100644
--- a/doc/devblog/day_268_stressed_out.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-While I plowed through a lot of backlog the past several days,
-I still have some 120 messages piled deep.
-
-That work did result in a number of improvements, culminating in a rather
-rushed release of version 5.20150327 today, to fix a regression affecting
-`git annex sync` when using the standalone linux tarballs. Unfortunately, I
-then had to update those tarballs a second time after the release
-as the first fix was incomplete.
-
-And, I'm feeling super stressed out. At this point, I think I should step
-away until the end of the month. Unfortunately, this will mean more backlog
-later. Including lots of noise and hand-holding that I just don't seem to
-have time for if I want to continue making forward progress.
-
-Maybe I'll think of a way to deal with it while I'm away. Currently, all I
-have is that I may have to start ignoring irc and the forum, and
-de-prioritizing bug reports that don't have either a working reproduction
-recipe or multiple independent confirmations that it's a real bug.
diff --git a/doc/devblog/day_269__wildcards_and_podcasts.mdwn b/doc/devblog/day_269__wildcards_and_podcasts.mdwn
deleted file mode 100644
--- a/doc/devblog/day_269__wildcards_and_podcasts.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Turns out that git has a feature I didn't know about; it will expand
-wildcards and other stuff in filenames passed to many git commands. This is
-on top of the shell's expansion.
-
-That led to some broken behavior by `git annex add 'foo.*'`
-and, it could lead to other probably unwanted behavior, like `git annex
-drop 'foo[barred]'` dropping a file named `food` in addition to
-`foo[barred]`
-
-For now, I've disabled this git feature throughout git-annex. If you relied
-on it for something, let me know, I might think about adding it back in
-specific places where it makes sense.
-
-----
-
-Improved `git annex importfeed` to check the itemid of the feed and avoid
-re-downloading a file with the same itemid. Before, it would add duplicate
-files if a feed kept the itemid the same, but changed the url. This was
-easier than expected because annex.genmetadata already caused the itemid
-to be stored in the git-annex metadata. I just had to make it check the
-itemid metadata, and set itemid even when annex.genmetadata isn't set.
-
-----
-
-Also got 4 other bug reports fixed, even though I feel I'm taking it easy
-today. It's good to be relaxed again!
diff --git a/doc/devblog/day_26__gcrypt_really_done_this_time.mdwn b/doc/devblog/day_26__gcrypt_really_done_this_time.mdwn
deleted file mode 100644
--- a/doc/devblog/day_26__gcrypt_really_done_this_time.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Did I say it would be easy to make the webapp detect when a gcrypt repository 
-already existed and enable it? Well, it wasn't exactly hard, but it took
-over 300 lines of code and 3 hours..
-
-So, gcrypt support is done for now. The glaring omission is gpg key
-management for sharing gcrypt repositories between machines and/or people.
-But despite that, I think it's solid, and easy to use, and covers some
-great use cases.
-
-Pushed out a release.
-
-Now I really need to start thinking about
-[[design/assistant/disaster_recovery]].
-
-----
-
-Today's work was sponsored by Dominik Wagenknecht.
diff --git a/doc/devblog/day_270__distributed_fsck.mdwn b/doc/devblog/day_270__distributed_fsck.mdwn
deleted file mode 100644
--- a/doc/devblog/day_270__distributed_fsck.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Added two options to `git annex fsck` that allow for a form of distributed
-fsck.  This is useful in situations where repositiories cannot be trusted to
-continue to exist, and cannot be checked directly, but you'd still like to
-keep track of their status. [[design/iabackup]] is one use case for this.
-
-By running a periodic fsck with the --distributed option,
-the repositories can verify that they still exist and that the
-information about their contents is still accurate. This is done by
-doing an extra update of the location log each time a file is verified by
-fsck to still be in the repository.
-
-The other option looks like --expire="30d somerepo:60d". It checks that
-each specified repository has recorded a distributed fsck within the specified
-time period. If not, the repository is dropped from the location tracking
-log. Of course it can always update that later if it's really still around.
-
-Distributed fsck is not the default because those extra location log updates
-increase the size of the git-annex branch. I did one thing to keep the size
-increase small: An identical line is logged to for each key, including the
-timestamp, so git's delta compression will work as well as is possible. But,
-there's still commit and tree update overhead. 
-
-Probably doesn't make sense to run distributed fscks too often for that and
-other reasons. If the git-annex branch does get too large, there's always
-`git annex forget` ...
-
-**(Update: This was later rethought and works much more efficiently now..)**
diff --git a/doc/devblog/day_271__parallel_get_groundwork.mdwn b/doc/devblog/day_271__parallel_get_groundwork.mdwn
deleted file mode 100644
--- a/doc/devblog/day_271__parallel_get_groundwork.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-I've started work on [[todo/parallel_get]].
-Today, laid the groundwork in two areas:
-
-1. Evalulated the ascii-progress haskell library. It can display
-   multiple progress bars in the terminal, portably, and its author
-   Pedro Tacla Yamada has kindly offered to improve it to meet
-   git-annex's needs.
-
-   I ended up filing [10 issues](https://github.com/yamadapc/haskell-ascii-progress/issues)
-   on it today, around 3 of the are blockers for git-annex using it.
-
-2. Worked on making --quiet more quiet. Commands like rsync and wget
-   need to have thier progress output disabled when run in parallel.
-
-   Didn't quite finish this yet.
-
----
-
-Yesterday I made some improvements to how git-annex behaves when it's
-passed a massive number of directories or files on the command line.
-Eg, when driven by xargs. There turned out to be some bugs in that
-scenario.
-
-One problem one I kind of had to paper over. While git-annex get
-normally is careful to get the files in the same order they were listed on
-the command line, it becomes very expensive to expand directories using
-git-ls-files, and reorder its output to preserve order, when a large number
-offiles are passed on the command line. There was a O(N*M) time blowup.
-
-I worked around it by making it only preserve the order of the first 100
-files. Assumption being that if you're specifying so many files on the
-command line, you probably have less of an attachment to their ordering. :)
diff --git a/doc/devblog/day_272__forest_for_trees.mdwn b/doc/devblog/day_272__forest_for_trees.mdwn
deleted file mode 100644
--- a/doc/devblog/day_272__forest_for_trees.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Rethought distributed fsck. It's not really a fsck, but an expiration of
-inactive repositories, where fscking is one kind of activity. That insight
-let me reimplement it much more efficiently. Rather than updating all
-the location logs to prove it was active, `git annex fsck` can simply and
-inexpensively update an activity log. It's so cheap it'll do it by default.
-The `git annex expire` command then reads the activity log and expires
-(or unexpires) repositories that have not been active in the desired time
-period. Expiring a repository simply marks it as dead.
-
-Yesterday, finished making --quiet really be quiet. That sounds easy,
-but it took several hours. On the `concurrentprogress` branch, I have
-ascii-progress hooked up and working, but it's not quite ready for prime
-time.
diff --git a/doc/devblog/day_273__unexpected_release.mdwn b/doc/devblog/day_273__unexpected_release.mdwn
deleted file mode 100644
--- a/doc/devblog/day_273__unexpected_release.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I've had to release git-annex twice this week to fix reversions. On Monday,
-just after I made a planned release, I discovered a bug in it, and had to
-update it with a .1 release. Today's release fixes 2 other reversions
-introduced by recent changes, both only affecting the assistant.
-
-Before making today's release, I did a bunch of other minor bugfixes and
-improvements, including adding a new `contentlocationn` plumbing command.
-This release also changes `git annex add` when annex.largefiles is
-configured, so it will `git add` the non-large files. That is particularly
-useful in direct mode.
-
-I feel that the assistant needs some TLC, so I might devote a week to it in
-the latter part of this month. My current funding doesn't cover work
-on the assistant, but I should have some spare time toward the end of the
-month.
diff --git a/doc/devblog/day_274__concurrent_annex_state.mdwn b/doc/devblog/day_274__concurrent_annex_state.mdwn
deleted file mode 100644
--- a/doc/devblog/day_274__concurrent_annex_state.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-Back working on `git annex get --jobs=N` today. It was going very well,
-until I realized I had a hard problem on my hands.
-
-The hard problem is that the AnnexState structure at the core of git-annex
-is not able to be shared amoung multiple threads at all. There's too much
-complicated mutable state going on in there for that to be feasible at all.
-
-In the git-annex assistant, which uses many threads, I long ago worked
-around this problem, by having a single shared AnnexState and when a thread
-needs to run an Annex action, it blocks until no other thread is using it.
-This worked ok for the assistant, with a little bit of thought to avoid
-long-duration Annex actions that could stall the rest of it.
-
-That won't work for concurrent `get` etc. I spent a while investigating maybe
-making AnnexState thread safe, but it's just not built for it. Too many
-ways that can go wrong. For example, there's a CatFileHandle in the
-AnnexState. If two threads are running, they can both try to talk to the
-same `git cat-file --batch` command at once, with bad results. Worse, yet,
-some parts of the code do things like modifying the AnnexState's Git repo
-to add environment variables to use when running git commands.
-
-It's not all gloom and doom though. Only very isolated parts of the code
-change the working directory or set environment variables. And the
-assistant has surely smoked out other thread concurrency problems already.
-And, separate `git-annex` programs can be run concurrently with no problems
-at all; it uses file locking to avoid different processes getting in
-each-others' way. So AnnexState is the only remaining obstacle to concurrency.
-
-So, here's how I've worked around it: When `git annex get -J10` is run,
-it will start by allocating 10 job slots. A fresh AnnexState will be
-created, and copied into each slot. Each time a job runs, it uses its
-slot's own AnnexState. This means 10 `git cat-file` processes,
-and maybe some contention over lock files, but generally, a nice, easy,
-and hopefully trouble-free multithreaded mode.
-
-And indeed, I've gotten `git annex get -J10` working robustly!
-And from there it was trivial to enable -J for `move` and `copy` and `mirror`
-too!
-
-The only real blocker to merging the concurrentprogress branch is some bugs
-in the ascii-progress library that make it draw very scrambled progress
-bars the way git-annex uses it.
diff --git a/doc/devblog/day_275-276__mostly_Windows.mdwn b/doc/devblog/day_275-276__mostly_Windows.mdwn
deleted file mode 100644
--- a/doc/devblog/day_275-276__mostly_Windows.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Mostly working on Windows recently. Fixed handling of git
-repos on different drive letters. Fixed crazy start menu loop. Worked around
-stange msysgit version problem.
-
-Also some more work on the `concurrentprogress` branch, making the progress
-display prettier.
-
-Added one nice new feature yesterday: `git annex info $dir` now includes a
-table of repositories that are storing files in the directory, with their
-sizes.
-
-	repositories containing these files: 
-		288.98 MB: ca9c5d52-f03a-11df-ac14-6b772ffe59f9 -- archive-5
-		288.98 MB: f1c0ce8d-d848-4d21-988c-dd78eed172e8 -- archive-8
-		 10.48 MB: 587b9ccf-4548-4d6f-9765-27faecc4105f -- darkstar
-		 15.18 kB: 42d47daa-45fd-11e0-9827-9f142c1630b3 -- origin
-
-Nice thing about this feature is it's done for free, with no extra work other
-than a little bit of addition. All the heavy location lookup work was already
-being done to get the numcopies stats.
diff --git a/doc/devblog/day_277__thanks.mdwn b/doc/devblog/day_277__thanks.mdwn
deleted file mode 100644
--- a/doc/devblog/day_277__thanks.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Recent work has included improving `fsck --from remote` (and fixing a
-reversion caused by the relative path changes in January), and making
-annex.diskreserve be checked in more cases. And added a `git annex
-required` command for setting [[required_content]].
-
-Also, I want to thank several people for their work:
-
-* Roy sent a patch to enable http proxy support.. despite
-  having only learned some haskell by "30 mins with YAHT". I investigated
-  that more, and no patch is actually necessary, but just a newer version
-  of the http-client library.
-* CandyAngel has been posting lots of helpful comments on the website,
-  including [this tip](http://git-annex.branchable.com/forum/__34__git_annex_sync__34___synced_after_8_hours/#comment-890ca1381d800ac833ccbb8c5db175ea)
-  that significantly speeds up a large git repository.
-* Øyvind fixed a lot of typos throughout the git-annex
-  documentation.
-* Yaroslav has created a `git-annex-standalone.deb` package
-  that will work on any system where debian packages can be installed,
-  no matter how out of date it is (within reason), using the same
-  methods as the standalone tarball.
diff --git a/doc/devblog/day_278__release_day.mdwn b/doc/devblog/day_278__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_278__release_day.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I hope that today's git-annex release will be landing in Debian unstable
-toward the end of the month. And I'm looking forward to some changes that
-have been blocked by wanting to keep git-annex buildable on Debian 7.
-
-Yesterday I got rid of the [SHA](http://hackage.haskell.org/package/SHA/)
-dependency, switching git-annex to use a newer version of cryptohash for
-HMAC generation (which its author Vincent Hanquez kindly added to it when I
-requested it, waay back in 2013). I'm considering using the LambdaCase
-extension to clean up a lot of the code next, and there are 500+ lines of
-old yesod compatability code I can eventually remove.
-
-These changes and others will prevent backporting to the soon to be Debian
-oldstable, but the standalone tarball will still work there. And, the
-git-annex-standalone.deb that can be installed on any version of Debian is
-[now available from the NeuroDebian repository](http://neuro.debian.net/install_pkg.html?p=git-annex-standalone),
-and its build support has been merged into the source tree.
-
-In the run up to the release today, I also dealt with getting the
-Windows build tested and working, now that it's been updated to newer
-versions of rsync, ssh, etc from Cygwin. Had to add several more dlls to
-the installer. That testing also turned up a case where `git-annex init`
-could fail, which got a last-minute fix.
-
-PS, scroll down [this 10 year of git timeline](https://www.atlassian.com/git/articles/10-years-of-git/)
-and see what you find!
diff --git a/doc/devblog/day_279__.mdwn b/doc/devblog/day_279__.mdwn
deleted file mode 100644
--- a/doc/devblog/day_279__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Posted a design for [[design/balanced_preferred_content]]. This would let
-preferred content expressions assign each file to N repositories out of a
-group, selected using Math. Adding a repository could optionally be
-configured to automatically rebalance the files (not very bandwidth
-efficiently though). I think some have asked for a feature like this
-before, so read the design and see if it would be useful for you.
-
-Spent a while debugging a problem with a S3 remote, which seems to have
-been a misconfiguration in the end. But several improvements came out of
-it to make it easier to debug S3 in the future etc.
diff --git a/doc/devblog/day_27__locking_fun.mdwn b/doc/devblog/day_27__locking_fun.mdwn
deleted file mode 100644
--- a/doc/devblog/day_27__locking_fun.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-Started the day by getting the builds updated for yesterday's release. This
-included making it possible to build git-annex with Debian stable's version
-of cryptohash. Also updated the Debian stable backport to the previous
-release.
-
-----
-
-The [[design/roadmap]] has this month devoted to improving git-annex's
-support for recovering from disasters, broken repos, and so on. Today I've
-been working on the first thing on [[the_list|design/assistant/disaster_recovery]],
-stale git index lock files.
-
-It's unfortunate that git uses simple files for locking, and does not use
-fcntl or flock to prevent the stale lock file problem. Perhaps they want
-it to work on broken NFS systems? The problem with that line of thinking is
-is means all non-broken systems end up broken by stale lock files. Not a
-good tradeoff IMHO.
-
-There are actually two lock files that can end up stale when using
-git-annex; both `.git/index.lock` and `.git/annex/index.lock`. Today I
-concentrated on the latter, because I saw a way to prevent it from ever
-being a problem. All updates to that index file are done by git-annex when
-committing to the git-annex branch. git-annex already uses fcntl locking
-when manipulating its journal. So, that can be extended to also cover
-committing to the git-annex branch, and then the git `index.lock` file
-is irrelevant, and can just be removed if it exists when a commit is
-started.
-
-To ensure this makes sense, I used the type system to prove that the journal
-locking was in effect everywhere I need it to be. Very happy I was able to
-do that, although I am very much a novice at using the type system for
-interesting proofs. But doing so made it very easily to build up to a point
-where I could unlink the `.git/annex/index.lock` and be sure it was safe to do
-that.
-
-----
-
-What about stale `.git/index.lock` files? I don't think it's appropriate
-for git-annex to generally recover from those, because it would change
-regular git command line behavior, and risks breaking something. However, I
-do want the assistant to be able to recover if such a file exists when it
-is starting up, since that would prevent it from running. Implemented that
-also today, although I am less happy with the way the assistant detects
-when this lock file is stale, which is somewhat heuristic (but should work
-even on networked filesystems with multiple writing machines).
-
-----
-
-Today's work was sponsored by Torbjørn Thorsen.
diff --git a/doc/devblog/day_280__slow_week.mdwn b/doc/devblog/day_280__slow_week.mdwn
deleted file mode 100644
--- a/doc/devblog/day_280__slow_week.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Reduced activity this week (didn't work on the assistant after all),
-but several things got done:
-
-Monday: Fixed `fsck --fast --from remote` to not fail when the remote
-didn't support fast copy mode. And dealt with an incompatability in S3 bucket
-names; the old hS3 library supported upper-case bucket names but the new
-one needs them all in lower case.
-
-Wednesday: Caught up on most recent backlog, made some improvements
-to error handling in `import`, and improved integration with KDE's file
-manager to work with newer versions.
-
-Today: Made `import --deduplicate/--clean-duplicates` actively 
-verify that enough copies of a file exist before deleting it. And,
-thinking about some options for batch mode access to git-annex plumbing,
-to speed up things that use it a lot.
diff --git a/doc/devblog/day_281__catching_up__and_arm_autobuilder_needed.mdwn b/doc/devblog/day_281__catching_up__and_arm_autobuilder_needed.mdwn
deleted file mode 100644
--- a/doc/devblog/day_281__catching_up__and_arm_autobuilder_needed.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-I've not been blogging, but have been busy this week. Backlog is down to
-113 messages.
-
-Tuesday: I got a weird bug report where `git annex get` was deleting
-a file. This turned out to be a bug in `wget ftp://...` where it would
-delete a symlink that was not where it had been told to download the fie
-to. I put a workaround in git-annex; wget is now run in a temp
-directory. But this was a legitimate wget bug, and it's now been reported
-to the wget developers and will hopefully get fixed there.
-
-Wednesday: Added a --batch mode for several plumbing commands
-(contentlocation, examinekey, and lookupkey). This avoids startup overhead,
-and so lets a lot of queries be done much faster. The implementation
-should make it easy to add --batch to more plumbing commands as needed,
-and could probably extend to non-plumbing commands too.
-
-Today: The first 5 hours involved an incompatable mess of ssh and rsync
-versions on Windows. A gordian knot of brokenness and depedency hell.
-I finally found a solution which involves downgrading the cygwin rsync
-to an older version, and using msysgit's ssh rather than cygwin's.
-
-Finished up today with more post-Debian-release changes. Landed a patch to
-switch from dataenc to sandi that had been waiting since 2013, and got
-sandi installed on all the git-annex autobuilders. Finished up with some
-prep for a release tomorrow.
-
-----
-
-Finally, Debian has a new enough ghc that it can build template haskell
-on arm! So, whenever a new version of git-annex finally gets into Debian
-(I hope soon), the webapp will be available on arm for those arm laptops.
-Yay!
-
-This also means I have the opportunity to make the standalone arm build
-be done much more simply. Currently it involves qemu and a separate
-companion native mode container that it has to ssh to and build stuff,
-that has to have the same versions of all libraries. It's just enormously
-complicated and touchy. With template haskell building support, all that
-complexity can fall away. 
-
-What I'd really like to do is get a fast-ish arm box with 2gb of ram
-hosted somewhere, and use that to do the builds, in native mode.
-Anyone want to help provide such a box for git-annex arm autobuilds?
diff --git a/doc/devblog/day_282__release_day.mdwn b/doc/devblog/day_282__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_282__release_day.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Got the release out after more struggling with ssh on windows and a last
-minute fix to the quvi support.
-
-The downloads.kitenet.net git annex repository had accumulated 6 gb of past
-builds that were not publically available. I am publishing those 
-[on the Internet Archive now](https://archive.org/details/git-annex-builds),
-so past builds can be downloaded using git-annex in that repository in the
-usual way. This worked great! :)
-
-I have ordered a CubieTruck with 2 gb of ram to use for the new Arm builder.
-Hosting still TBD.
-
-Looks like git-annex is almost ready to
-[be included in stackage](https://github.com/fpco/stackage/pull/519#issuecomment-98590181),
-which will make building it from source much less likely to fail due to
-broken libraries etc.
diff --git a/doc/devblog/day_283__lazy_sunday.mdwn b/doc/devblog/day_283__lazy_sunday.mdwn
deleted file mode 100644
--- a/doc/devblog/day_283__lazy_sunday.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Lazy afternoon spent porting git-anenx to build under ghc 7.10. Required
-rather a lot of changes to build, and even more to build cleanly after the
-AMP transition.
-
-Unfortunately, ghc 7.10 has started warning about every line that uses tab
-for indentation. I had to add additional cruft to turn those warnings off
-everywhere, and cannot say I'm happy about this at all.
diff --git a/doc/devblog/day_284__development.mdwn b/doc/devblog/day_284__development.mdwn
deleted file mode 100644
--- a/doc/devblog/day_284__development.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Implemented `git annex drop --all`. This also added for free drop with
-`--unused` and `--key`, which overlap with `git annexdropunused` and
-`git annex dropkey`.
-
-The `concurrentprogress` branch had gone too long without being merged, and
-had a lot of merge conflicts. I resolved those, and went ahead and merged
-it into master. However, since the ascii-progress library is not ready yet,
-I made it a build flag, and it will build without it by default. So, `git
-annex get -J5` can be used now, but no progress bars will display yet.
-
-When doing concurrent downloads, either with the new -J or by hand by
-running multiple processes, there was a bug in the diskreserve
-checking code. It didn't consider the disk space that was in the process of
-being used by other concurrent downloads, so would let more downloads
-start up than there was space for.
-
-I was able to fix this pretty easily, thanks to the transfer log files.
-Those were originally added just to let the webapp display transfers, but
-proved very helpful here!
-
-Finally, made .git/annex/transfer/failed/ files stop accumulating when the
-assistant is not being used. Looked into also cleaning up stale
-.git/annex/transfer/{upload,download}/ files (from interrupted transfers).
-But, since those are used as lock files, it's difficult to remove them
-in a concurrency safe way.
-
-Update: Unfortunately, I turned out to have stumbled over an apparent bug
-in haskell's implementation of file locking.
-<https://github.com/haskell/unix/issues/44> Had to work around that.
-
-Happily, the workaround also let me implement cleanup of stale transfer
-info files, left behind when a git-annex process was interrupted. So,
-.git/annex/transfer/ will entirely stop accumulating cruft!
diff --git a/doc/devblog/day_285__tuning_git-annex_unused_refs.mdwn b/doc/devblog/day_285__tuning_git-annex_unused_refs.mdwn
deleted file mode 100644
--- a/doc/devblog/day_285__tuning_git-annex_unused_refs.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Today I added a feature to `git annex unused` that lets the user tune which
-refs they are interested in using. Annexed objects that are used by other
-refs then are considered unused.
-
-Did a fairly complicated refspec format for this, with globs and
-include/exclude of refs. Example:
-
-	+refs/heads/*:+HEAD^:+refs/tags/*:-refs/tags/old-tag
-
-----
-
-I think that, since Google dropped openid support, there seems to have been
-less activity on this website. Although possibly also a higher signal to
-noise ratio. :) I have been working on some ikiwiki changes to make it
-easier for users who don't have an openid to contiribute. So git-annex's
-website should soon let you log in and make posts with just an email address.
-
-People sometimes ask for a git-annex mailing list. I wouldn't mind having
-one, and would certianly subscribe, but don't see any reason that I should
-be involved in running it.
diff --git a/doc/devblog/day_286-287__rotten_locks.mdwn b/doc/devblog/day_286-287__rotten_locks.mdwn
deleted file mode 100644
--- a/doc/devblog/day_286-287__rotten_locks.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-There's something rotten in POSIX fctnl locking. It's not composable,
-or thread-safe.
-
-The most obvious problem with it is that if you have 2 threads, and they
-both try to take an exclusive lock of the same file (each opening it
-separately) ... They'll both succeed. Unlike 2 separate processes,
-where only one can take the lock.
-
-Then the really crazy bit: If a process has a lock file open and fcntl
-locked, and then the same process opens the lock file again, for any
-reason, closing the new FD will release the lock that was set
-using the other FD.
-
-So, that's a massive gotcha if you're writing complex multithreaded code.
-Or generally for composition of code. Of course, C programmers deal with
-this kind of thing all the time, but in the clean world of Haskell, this is
-a glaring problem. We don't expect to need to worry about this kind of
-unrelated side effect that breaks composition and thread safety.
-
-After noticing this problem affected git-anenx in at least one place,
-I have to assume there could be more. And I don't want to need to worry
-about this problem forever. So, I have been working today on a clean fix
-that I can cleanly switch all my lock-related code to use.
-
-One reasonable approach would be to avoid fcntl locking, and use flock.
-But, flock works even less well on NFS than fcntl, and git-annex relies on
-some fcntl locking features. On Linux, there's an "open file description
-locks" feature that fixes POSIX fnctl locking to not have this horrible
-wart, but that's not portable.
-
-Instead, my approach is to keep track of which files the process has
-locked. If it tries to do something with a lockfile that it already has
-locked, it avoids opening the same file again, instead implements its own
-in-process locking behavior. I use STM to do that in a thread-safe manner.
-
-I should probably break out git-annex's lock file handling code as a
-library. Eventually.. This was about as much fun as a root canal, and I'm
-having a real one tomorrow. :-/
-
-----
-
-git-annex is now included in [Stackage](http://www.stackage.org/)!
-
-Daniel Kahn Gillmor is doing some work on reproducible builds of git-annex.
diff --git a/doc/devblog/day_288__microrelease_prep.mdwn b/doc/devblog/day_288__microrelease_prep.mdwn
deleted file mode 100644
--- a/doc/devblog/day_288__microrelease_prep.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-After a less active than usual week (dentist), I made a release last Friday.
-Unfortunately, it turns out that the Linux standalone 
-builds in that release don't include the webapp. So, another release is
-planned tomorrow.
-
-Yesterday and part of today I dug into
-the [[bugs/windows_ssh_webapp_password_entry_broken]]
-reversion. Eventually cracked the problem; it seems that
-different versions of ssh for Windows do different things in a `isatty`
-check, and there's a flag that can be passed when starting ssh to make it
-not see a controlling tty. However, this neeeds changes to the
-`process` library, which db48x and I have now coded up. So a fix for this bug
-is waiting on a new release of that library. Oh well.
-
-Rest of today was catching up on recent traffic, and improving the behavior
-of `git annex fsck` when there's a disk IO error while checksumming a file.
-Now it'll detect a hardware fault exception, and take that to mean the file
-is bad, and move it to the bad files directory, instead of just crashing.
-
-I need better tooling to create disk IO errors on demand.
-Yanking disks out works, but is a blunt instrument. Anyone know of
-good tools for that?
diff --git a/doc/devblog/day_289__new_arm_autobuilder.mdwn b/doc/devblog/day_289__new_arm_autobuilder.mdwn
deleted file mode 100644
--- a/doc/devblog/day_289__new_arm_autobuilder.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-On Friday I installed the CubieTruck that is the new autobuilder
-for arm. This autobuilder is hosted at [WetKnee Books](http://www.wetknee.com/),
-so its physical security includes a swamp. 
-
-The hardware is not fast, but it's faster and far more stable than qemu arm
-emulation. By Saturday I got the build environment all installed nicely,
-including building libraries that use template haskell!
-
-But, ghc crashed with an internal error building git-annex.
-I upgraded to ghc 7.10.1 (which took another day), but it also crashed.
-Was almost giving up, but I looked at the ghc parameters, and -j2 stuck
-out in them. Removed the -j2, and the build works w/o crashing! \o/
-(Filed [a bug report on ghc](https://ghc.haskell.org/trac/ghc/ticket/10469).)
-
-----
-
-Anarcat has been working on improving the man pages, including lots of
-linking to related commands.
-
-The [2015 Haskell Communities and Activities Report](http://www.haskell.org/communities/05-2015/html/report.html)
-is out, and includes an entry for git-annex for the first time!
diff --git a/doc/devblog/day_28__lazy_saturday.mdwn b/doc/devblog/day_28__lazy_saturday.mdwn
deleted file mode 100644
--- a/doc/devblog/day_28__lazy_saturday.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Finished up the automatic recovery from stale lock files. Turns out git
-has quite a few lock files; the assistant handles them all.
-
-Improved URL and WORM keys so the filenames used for them
-will always work on FAT (which has a crazy assortmeny of illegal
-characters). This is a tricky thing to deal with without breaking backwards
-compatability, so it's only dealt with when creating new URL or WORM keys.
-
------
-
-I think my next step in this disaster recovery themed month will be adding
-periodic incremental fsck to the assistant. `git annex fsck` can already
-do an incremental fsck, so this should mostly involve adding a user
-interface to the webapp to configure when it should fsck. For example, you
-might choose to run it for up 1 hour every night, with a goal of checking
-all your files once per month. Also will need to make the assistant do
-something useful when fsck finds a bad file (ie, queue a re-download).
diff --git a/doc/devblog/day_290__.mdwn b/doc/devblog/day_290__.mdwn
deleted file mode 100644
--- a/doc/devblog/day_290__.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Worked thru some backlog. Currently stands at 152 messages.
-
-Merged work from Sebastian Reuße to teach the assistant to listen for
-systemd-networkd dbus events when the network connection changes.
-
-Added `git annex get --incomplete`, which can be used to resume whatever it 
-was you were downloading earlier and interrupted, that you've forgotten
-about. ;)
-
-----
-
-The [Isuma Media Players project](http://isuma-media-players.readthedocs.org/en/latest/index.html)
-is using git-annex to "create a two-way, distributed content distribution
-network for communities with poor connexions to the internet".
-My understanding is this involves places [waaay up North](http://www.isuma.tv/did).
-
-Reading over their [design docs](http://isuma-media-players.readthedocs.org/en/latest/design.html)
-is quite interesting, both to see how they've leveraged things
-like git-annex metadata and preferred content expressions and the assistant,
-and areas where git-annex falls short.
-
-Between DataLad, Isuma, Baobáxia, IA.BAK, and more, there are a lot of
-projects being built on top of git-annex now!
diff --git a/doc/devblog/day_291__public_S3.mdwn b/doc/devblog/day_291__public_S3.mdwn
deleted file mode 100644
--- a/doc/devblog/day_291__public_S3.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Now git-annex can be used to set up a public S3 remote. If you've cloned a
-repository that knows about such a remote, you can use the S3 remote
-without needing any S3 credentials. Read-only of course.
-
-This tip shows how to do it: [[tips/public_Amazon_S3_remote]]
-
-One rather neat way to use this is to configure the remote with
-`encryption=shared`. Then, the files stored in S3 will be encrypted, and
-anyone with access to the git repository can get and decrypt the files.
-
-This feature will work for at least AWS S3, and for the Internet Archive's
-S3. It may work for other S3 services, that can be configured to publish
-their files over unauthenticated http. There's a `publicurl` configuration
-setting to allow specifying the url when using a service that git-annex
-doesn't know the url for.
-
-Actually, there was a hack for the IA before, that added the public url to
-an item when it was uploaded to the IA. While that hack is now not
-necessary, I've left it in place for now, to avoid breaking anything that
-depended on it.
diff --git a/doc/devblog/day_292__dead_keys.mdwn b/doc/devblog/day_292__dead_keys.mdwn
deleted file mode 100644
--- a/doc/devblog/day_292__dead_keys.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Ever since `git annex fsck --all` was added, people 
-[have](http://bugs.debian.org/753888)
-[[complained|bugs/fsck_reports_unsolvable_problem]] that
-there's no way to stop it complaining about keys whose content is gone for
-good. Well, there is now: `git annex dead --key` can be used when you know
-that a key is no longer available and want fsck to stop complaining about
-it.
-
-Running fsck on a directory will intentionally still complain about files
-in the directory with missing contents, even if the keys have been marked
-dead.
-
-The crucial part was finding a good way to store the information; luckily
-location log files are parsed in a way that lets it be added there without
-breaking backwards compatability. A bonus is that adding a key's content
-back to the annex will automatically bring it back from the dead.
-
-I'm pondering making `git annex drop --force` automatically mark a key as
-dead when the last copy is dropped, but I don't know if it's too DWIM or
-worth the complication. Another approach would be to let fsck mark keys as
-dead, but that would certianly need an extra flag.
diff --git a/doc/devblog/day_293__last_push_before_summer_vacation.mdwn b/doc/devblog/day_293__last_push_before_summer_vacation.mdwn
deleted file mode 100644
--- a/doc/devblog/day_293__last_push_before_summer_vacation.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Well, not the literal last `push`, but I've caught up on as much backlog as
-I can (142 messages remain) and spent today developing a few final features
-before tomorrow's release.
-
-Some of the newer things displayed by `git annex info` were not included in
-the --json mode output. The json includes everything now.
-
-`git annex sync --all --content` will make it consider all known annexed
-objects, not only those in the current work tree. By default that syncs all
-versions of all files, but of course preferred content can tune what
-repositories want.
-
-To make that work well with preferred content settings like
-"include=*.mp3", it makes two passes. The first pass is over the work tree,
-so preferred content expressions that match files by name will work. The
-second pass is over all known keys, and preferred content expressions
-that don't care about the filename can match those keys. 
-
-Two passes feels a bit like a hack, but it's a lot better than `--all`
-making nothing be synced when the a preferred content expression matches
-against filenames... I actually had to resort to bloom filters to make the
-two passes work.
-
-This new feature led to some
-[slightly tricky follow-on changes](http://source.git-annex.branchable.com/?p=source.git;a=commit;h=8268f7951e9c70760379bd084425b48df99250d6)
-to the [[preferred_content/standard_groups]] preferred content expressions.
diff --git a/doc/devblog/day_294__back_focusing_on_bugs.mdwn b/doc/devblog/day_294__back_focusing_on_bugs.mdwn
deleted file mode 100644
--- a/doc/devblog/day_294__back_focusing_on_bugs.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Back, and have spent all day focusing on new bug reports. All told, I fixed
-4 bugs, followed up on all other bugs reported while I was away, and fixed
-the android autobuilder.
-
-The message backlog started the day at 250 or something, and is down to 178
-now. Looks like others have been following up to forum posts while I was
-away (thanks!) so those should clear quickly.
diff --git a/doc/devblog/day_295__caught_up.mdwn b/doc/devblog/day_295__caught_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_295__caught_up.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Now caught up on nearly all of my backlog of messages, 
-and indeed am getting to some messages that have been waiting for months.
-Backlog is down to 113! Couple of bugfixes resulted, and many questions answered.
-
-Think I'll spend a couple more days dealing with the older part of the
-backlog. Then, when that reaches diminishing returns, I'll move on to some
-big change. I have been thinking about [[design/caching_database]] on and
-off..
diff --git a/doc/devblog/day_296__into_the_backlog.mdwn b/doc/devblog/day_296__into_the_backlog.mdwn
deleted file mode 100644
--- a/doc/devblog/day_296__into_the_backlog.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Mostly spent today getting to older messages in the backlog. This did
-result in a few fixes, but with 97 old messages left, I can feel the
-diminishing returns setting in, to try to understand old bug reports that
-are often unclear or lacking necessary info to reproduce them.
-
-By the way, if you feel your bug report or question has gotten lost in my
-backlog, the best thing to do is post an update to it, and help me
-reproduce it, or clarify it.
-
-Moved on to looking through [[todo]], which was a more productive
-way to find useful things to work on. 
-
-Best change made today is that `git annex unused` can now be configured to
-look at the reflog. So, old versions of files are considered still used
-until the reflog expires. If you've wanted a way to only delete (or move
-away) unused files after they get to a certian age, this is a way to do that ...
diff --git a/doc/devblog/day_297__optparse-applicative.mdwn b/doc/devblog/day_297__optparse-applicative.mdwn
deleted file mode 100644
--- a/doc/devblog/day_297__optparse-applicative.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Now working on converting git-annex to use
-[optparse-applicative](https://github.com/pcapriotti/optparse-applicative)
-for its command line parsing. I've wanted to do this for a long time, 
-because the current code for options is generally horrible, runs in
-IO, and is not at all type safe, while optparse-applicative has wonderful
-composable parsers and lets each subcommand have its own data type
-repesenting all its options.
-
-What pushed me over the edge is that optparse-applicative has automatic
-bash completion!
-
-	# source <(git-annex --bash-completion-script `which git-annex`)
-	# git-annex fsck -
-	--all                   --key                   -S
-	--from                  --more                  -U
-
-Since nobody has managed to write a full bash completion for git-annex
-before, let alone keep it up-to-date with changes to the code, automating
-the problem away is a really nice win. :)
-
-The conversion is a rather huge undertaking; the diff is already over 3000
-lines large after 8 hours of work, and I'm maybe 1/3rd done, with
-the groundwork laid (except for global options still todo) and a few
-subcommands  converted. This won't land for this week's release; it'll
-need a lot of testing before it'll be ready for any release.
diff --git a/doc/devblog/day_299__so_many_commands_and_options.mdwn b/doc/devblog/day_299__so_many_commands_and_options.mdwn
deleted file mode 100644
--- a/doc/devblog/day_299__so_many_commands_and_options.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Day 3 of the optparse-applicative conversion.  
-116 files changed, 1607 insertions(+), 1135 deletions(-)  
-At this point, everything is done except for around 20 sub-commands.
-Probably takes 15 minutes work for each. Will finish plowing through
-it in the evenings.
-
-Meanwhile, made the release of version 5.20150710. The Android build for
-this version is not available yet, since I broke the autobuilder last week
-and haven't fixed it yet.
diff --git a/doc/devblog/day_29__scheduling.mdwn b/doc/devblog/day_29__scheduling.mdwn
deleted file mode 100644
--- a/doc/devblog/day_29__scheduling.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Spent most of the day building some generic types for scheduling recurring
-events. Not sure if rolling my own was a good idea, but that's what I did.
-
-In the incrementalfsck branch, I have hooked this up in `git-annex vicfg`,
-which now accepts and parses scheduled events like 
-"fsck self every day at any time for 60 minutes" and 
-"fsck self on day 1 of weeks divisible by 2 at 3:45 for 120 minutes", and
-stores them in the git-annex branch. The exact syntax is of course subject
-to change, but also doesn't matter a whole lot since the webapp will have
-a better interface.
diff --git a/doc/devblog/day_2__new_laptop.mdwn b/doc/devblog/day_2__new_laptop.mdwn
deleted file mode 100644
--- a/doc/devblog/day_2__new_laptop.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Now I can build git-annex twice as fast! And a typical incremental build is
-down to 10 seconds, from 51 seconds.
-
-Spent a productive evening working with Guilhem to get his encryption
-patches reviewed and merged. Now there is a way to remove revoked gpg keys,
-and there is a new encryption scheme available that uses public key
-encryption by default rather than git-annex's usual approach. That's not
-for everyone, but it is a good option to have available.
diff --git a/doc/devblog/day_300__optparse-applicative_landed.mdwn b/doc/devblog/day_300__optparse-applicative_landed.mdwn
deleted file mode 100644
--- a/doc/devblog/day_300__optparse-applicative_landed.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Worked through the rest of the changes this weekend and morning, and the
-optparse-applicative branch has landed in master,
-including bash completion support.
diff --git a/doc/devblog/day_301__completion_and_er_completion.mdwn b/doc/devblog/day_301__completion_and_er_completion.mdwn
deleted file mode 100644
--- a/doc/devblog/day_301__completion_and_er_completion.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Worked on bash tab completion some more. Got "git annex" to also tab complete.
-However, for that to work perfectly when using bash-completion to demand-load
-completion scripts, a small improvement is needed in git's own completion
-script, to have it load git-annex's completion script. I sent a 
-[patch for that to the git developers](http://thread.gmane.org/gmane.comp.version-control.git/274034),
-and hopefully it'll get accepted soon.
-
-Then fixed a relatively long-standing bug that prevented uploads to
-chunked remotes from resuming after the last successfully uploaded chunk.
diff --git a/doc/devblog/day_302-305__gitlab.mdwn b/doc/devblog/day_302-305__gitlab.mdwn
deleted file mode 100644
--- a/doc/devblog/day_302-305__gitlab.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-I've been working on adding GitLab support to the webapp for the past 3
-days.
-
-That's not the only thing I've been working on; I've continued to work on
-the older parts of the backlog, which is now shrunk to 91 messages, and
-made some minor improvements and bugfixes.
-
-But, GitLab support in the webapp has certianly taken longer than I'd have
-expected. Only had to write 82 lines of GitLab specific code so far, but it
-went slowly. The user will need to cut and paste repository url and
-ssh public key back and forth between the webapp and GitLab for now. And
-the way GitLab repositories use git-annex makes it a bit tricky to set up;
-in one case the webapp has to do a forced push dry run to check if the
-repository on GitLab can be accessed by ssh.
-
-I found a way to adapt the existing code for setting up a ssh server to
-also support GitLab, so beyond the repo url prompt and ssh key setup,
-everything will be reused. I have something that works now, but there are
-lots of cases to test (encrypted repositories, enabling existing
-repositories, etc), so will need to work on it a bit more before merging
-this feature.
-
-Also took some time to split the [centralized git repository tutorial](http://git-annex.branchable.com/tips/centralized_git_repository_tutorial/)
-into three parts, one for each of GitHub, GitLab, and self-administered servers.
-
-----
-
-The git-annex package in Debian unstable hasn't been updated for 8 months.
-This is about to change; Richard Hartmann has stepped up and is preparing
-an upload of a recent version. Yay!
diff --git a/doc/devblog/day_306__release_day.mdwn b/doc/devblog/day_306__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_306__release_day.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Made a release today, with recent work, including the optparse-applicative
-transition and initial gitlab.com support in the webapp.
-
-I had time before the release to work out most of the wrinkles in the
-gitlab.com support, but was not able to get gcrypt encrypted repos to work
-with gitlab, for reasons that remain murky. Their git-annex-shell seems to
-be misbehaving somehow. Will need to get some debugging assistance from the
-gitlab.com developers to figure that out.
diff --git a/doc/devblog/day_307__two_release_week.mdwn b/doc/devblog/day_307__two_release_week.mdwn
deleted file mode 100644
--- a/doc/devblog/day_307__two_release_week.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Made a release this morning, mostly because the release earlier this week
-turns out to have accidentially removed several options from `git annex copy`.
-
-Spent some time this afternoon improving how git-annex shuts down when
---time-limit is used. This used to be a quick and dirty shutdown, similar
-to if git-annex were ctrl-c'd, but I reworked things so it does a clean
-shutdown, including running any buffered git commands. 
-This made incremental fsck with --time-limit resume much better, since
-it saves the incremental fsck database on shutdown. Also tuned when the
-database gets checkpointed during an incremental fsck, to resume better after
-it's interrupted.
diff --git a/doc/devblog/day_308__other_peoples_bugs.mdwn b/doc/devblog/day_308__other_peoples_bugs.mdwn
deleted file mode 100644
--- a/doc/devblog/day_308__other_peoples_bugs.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Work today has started in the git-annex bug tracker, but the real bugs were
-elsewhere. Got a patch into hinotify to fix its handling of filenames
-received from inotify events when used in a non-unicode locale. Tracked
-down why gitlab's git-annex-shell fails to initialize gcrypt repositories,
-and filed a bug on gitlab-shell.
-
-Yesterday, I got the Android autobuilder fixed. I had started upgrading it
-to new versions of yesod etc, 2 months ago, and something in those new
-versions led to character encoding problems that broke the template haskell
-splicing. Had to throw away the work done for that upgrade, but at least
-it's building again, at last.
diff --git a/doc/devblog/day_309__proxy.mdwn b/doc/devblog/day_309__proxy.mdwn
deleted file mode 100644
--- a/doc/devblog/day_309__proxy.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Ended up sending most of today working on `git annex proxy`. It had a lot
-of buggy edge cases, which are all cleaned up now.
-
-Spent another couple hours catching up on recent traffic and fixing a
-couple other misc bugs.
diff --git a/doc/devblog/day_30__cronner.mdwn b/doc/devblog/day_30__cronner.mdwn
deleted file mode 100644
--- a/doc/devblog/day_30__cronner.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Lots of progress from yesterday's modest start of building data types for
-scheduling. Last night I wrote the hairy calendar code to calculate when
-next to run a scheduled event. (This is actually quite superior to `cron`,
-which checks every second to see if it should run each event!) Today I
-built a "Cronner" thread that handles spawning threads to handle each
-scheduled event. It even notices when changes have been made to the its
-schedule and stops/starts event threads appropriately.
-
-Everything is hooked up, building, and there's a good chance it works
-without too many bugs, but while I've tested all the pure code (mostly
-automatically with quickcheck properties), I have not run the Cronner
-thread at all. And there is some tricky stuff in there, like noticing
-that the machine was asleep past when it expected to wake up, and deciding
-if it should still run a scheduled event, or should wait until next time.
-So tomorrow we'll see..
-
-Today's work was sponsored by Ethan Aubin.
diff --git a/doc/devblog/day_310__half_day.mdwn b/doc/devblog/day_310__half_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_310__half_day.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Took a half day and worked on making it simpler to set up ssh remotes.
-The complexity I've gotten rid of is there's no need to take any action to
-get a ssh remote initialized as a git-annex repository. Where before,
-either git-annex init needed to be ran on the remote, or a git-annex branch
-manually pushed to it, now the remote can simply be added and `git annex sync`
-will do the rest. This needed git-annex-shell changes, so will only work
-once servers are upgraded to use a newer version of git-annex.
diff --git a/doc/devblog/day_311__SHA-3.mdwn b/doc/devblog/day_311__SHA-3.mdwn
deleted file mode 100644
--- a/doc/devblog/day_311__SHA-3.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-The SHA-3 specification was released yesterday; git-annex got support for
-using SHA-3 hashes today. I had to add support for building with the new
-cryptonite library, as cryptohash doesn't (correctly) implement SHA-3 yet.
-Of course, nobody is likely to find a use for this for years, since SHA-2
-is still prefectly fine, but it's nice to get support for new hashes
-in early. :)
diff --git a/doc/devblog/day_312__release_prep.mdwn b/doc/devblog/day_312__release_prep.mdwn
deleted file mode 100644
--- a/doc/devblog/day_312__release_prep.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Catching up on weekend's traffic, and preparing for a release tomorrow.
-
-Found another place where the optparse-applicative conversion broke some
-command-line parsing; using git-annex metadata to dump metadata recursively
-got broken. This is the second known bug caused by that transition, which
-is not too surpising given how large it was.
-
-Tracked down and fixed a [very tricky encoding problem with metadata values](http://git-annex.branchable.com/bugs/view_fails_with___34__invalid_character__34__/).
-
-The arm autobuilder broke so it won't boot; got a serial console hooked up
-to it and looks like a botched upgrade resulting in a udev/systemd/linux
-version mismatch.
diff --git a/doc/devblog/day_313__optimisation.mdwn b/doc/devblog/day_313__optimisation.mdwn
deleted file mode 100644
--- a/doc/devblog/day_313__optimisation.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Been doing a little bit of optimisation work. Which meant, first improving
-the --debug output to show fractions of a second, and show when commands
-exit.
-
-That let me measure what takes up time when downloading files from ssh remotes.
-Found one place I could spawn a thread to run a cleanup action, and this simple
-change reduced the non-data-transfer overhead to 1/6th of what it had been!
diff --git a/doc/devblog/day_314__pre_trip_catchup.mdwn b/doc/devblog/day_314__pre_trip_catchup.mdwn
deleted file mode 100644
--- a/doc/devblog/day_314__pre_trip_catchup.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Did some work on Friday and Monday to let external special remotes be used
-in a readonly mode. This lets files that are stored in the remote be
-downloaded by git-annex without the user needing to install the 
-external special remote program. For this to work, the external special
-remote just has to tell git-annex the urls to use. This was developed in
-collaboration with Benjamin Gilbert, who is developing
-[gcsannex](https://github.com/bgilbert/gcsannex), a Google Cloud Storage
-special remote.
-
-Today, got caught up with recent traffic, including fixing a couple of
-bugs. The backlog remains in the low 90's, which is a good place to be as I
-prepare for my August vacation week in the SF Bay Area, followed by a week
-for ICFP and the Haskell Symposium in Vancouver.
diff --git a/doc/devblog/day_315__scrambling.mdwn b/doc/devblog/day_315__scrambling.mdwn
deleted file mode 100644
--- a/doc/devblog/day_315__scrambling.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Today was a scramble to get caught up after weeks away. Got the message
-backlog down from over 160 to 123. Fixed two reversions, worked around a
-[strange bug](https://github.com/yesodweb/persistent/issues/474),
-and implemented support for the `gpg.program` configuration, and made
-several smaller improvements.
diff --git a/doc/devblog/day_316-318__chasing_dependencies_and_todos.mdwn b/doc/devblog/day_316-318__chasing_dependencies_and_todos.mdwn
deleted file mode 100644
--- a/doc/devblog/day_316-318__chasing_dependencies_and_todos.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Seems that Git for Windows was released a few weeks ago, replacing msysgit.
-There were a couple problems using git-annex with that package of git,
-which I fixed on Thursday. The next release of git-annex won't work with
-msysgit any longer though; only with Git for Windows.
-
-On Friday, I improved the Windows package further, making it work even when
-git is not added to the system PATH. In such an installation, git-annex
-will now work inside the "git bash" window, and I even got the webapp
-starting from the menu working without git in PATH.
-
-----
-
-In other dependency fun, the daily builds for Linux got broken due to a
-glibc bug in Debian unstable/testing, which makes the bundled curl and ssh
-segfault. With some difficulty I tracked that down, and it turns out the
-bug has been [fixed upstream](https://sourceware.org/bugzilla/show_bug.cgi?id=16381)
-for quite a while. The daily builds are now using the fixed glibc 2.21.
-
-----
-
-Today, got back to making useful improvements, rather than chasing
-dependencies. Improved the bash completion for remotes and backends,
-made annex.hardlink be used more, and made special remotes that are
-configured with autoenable=true get automatically enabled by `git annex init`.
diff --git a/doc/devblog/day_319__release_day.mdwn b/doc/devblog/day_319__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_319__release_day.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Made the release this morning, first one in 3 weeks. A fair lot of good
-stuff in there.
-
-Just in time for the release, git-annex has support for
-[Ceph](http://ceph.com/). Thanks to Mesar Hameed for building 
-[the external special remote](https://github.com/mhameed/git-annex-remote-ceph)!
diff --git a/doc/devblog/day_31__blah.mdwn b/doc/devblog/day_31__blah.mdwn
deleted file mode 100644
--- a/doc/devblog/day_31__blah.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Some neat stuff is coming up, but today was a pretty blah day for me.
-I did get the Cronner tested and working (only had a few little bugs). But
-I got stuck for quite a while making the Cronner stop `git-annex fsck`
-processes it was running when their jobs get removed. I had some code to do
-this that worked when run standalone, but not when run from git-annex.
-
-After considerable head-scratching, I found out this was due to
-`forkProcess` masking aync exceptions, which seems to be probably
-[a bug](http://ghc.haskell.org/trac/ghc/ticket/8433). Luckily was able to
-work around it. Async exceptions continue to strike me as the worst part of
-the worst part of Haskell (the worst part being exceptions in general).
-
-Was more productive after that.. Got the assistant to automatically queue
-re-downloads of any files that fsck throws out due to having bad contents,
-and made the webapp display an alert while fscking is running, which will
-go to the page to configure fsck schedules. Now all I need to do is
-build the UI of that page.
diff --git a/doc/devblog/day_320__caught_up.mdwn b/doc/devblog/day_320__caught_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_320__caught_up.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I've mostly been chewing through old and new bug reports and support
-requests that past several days. The backlog is waaay low now -- only 82
-messages! Just in time for me to go on another trip, to Louisville on
-Thursday.
-
-Amazon S3 added an "Infrequent Access" storage class last week, and I got a
-patch into the haskell-aws library to support that, as well as partially
-supporting Google Nearline. That patch was accepted today, and git-annex is
-ready to use the new version of the library as soon as it's released.
-
-At the end of today, I found myself rewriting `git annex status` to parse
-and adjust the output of `git status --short`. This new method makes it
-much more capable than before, including displaying Added files.
diff --git a/doc/devblog/day_320__porting_and_such.mdwn b/doc/devblog/day_320__porting_and_such.mdwn
deleted file mode 100644
--- a/doc/devblog/day_320__porting_and_such.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Lots of porting work ongoing recently:
-
-* I've been working with [Goeke](http://www.goeke.net/) on building git-annex
-  on Solaris/SmartOS. Who knows, this may lead to a binary distribution
-  in some way, but to start with I got the disk free space code ported
-  to Solaris, and have seen git-annex work there.
-* Jirib has also been working on that same disk free code, porting it to
-  OpenBSD. Hope to land an updated patch for that.
-* Yury kindly updated the Windows autobuilder to a new Haskell Platform
-  release, and I was able to land the `winprocfix` branch that fixes
-  ssh password prompting in the webapp on Windows.
-* The arm autobuilder is fixed and back in its colo, and should be making
-  daily builds again.
diff --git a/doc/devblog/day_321__download_verification.mdwn b/doc/devblog/day_321__download_verification.mdwn
deleted file mode 100644
--- a/doc/devblog/day_321__download_verification.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-While at the DerbyCon security conference, I got to thinking about
-verifying objects that git-annex downloads from remotes. This can be
-expensive for big files, so git-annex has never done it at download time,
-instead deferring it to fsck time. But, that is a divergence from git,
-which always verifies checksums of objects it receives. So, it violates
-least surprise for git-annex to not verify checksums too. And this could
-weaken security in some use cases.
-
-So, today I changed that. Now whenever git-annex accepts an object into
-.git/annex/objects, it first verifies its checksum and size. I did add a
-setting to disable that and get back the old behavior: `git config
-annex.verify false`, and there's also a per-remote setting if you want to
-verify content from some remotes but not others.
diff --git a/doc/devblog/day_322-326__concurrent_drop_safety.mdwn b/doc/devblog/day_322-326__concurrent_drop_safety.mdwn
deleted file mode 100644
--- a/doc/devblog/day_322-326__concurrent_drop_safety.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-Well, I've spent all week making `git annex drop --from` safe.
-
-On Tuesday I got a sinking feeling in my stomach, as I realized that
-there was hole in git-annex's armor to prevent concurrent drops from
-violating numcopies or even losing the last copy of a file.
-[[The bug involved an unlikely race condition|bugs/concurrent_drop--from_presence_checking_failures]],
-and for all I know it's never happened in real life, but still this is not
-good.
-
-Since this is a potential data loss bug, expect a release pretty soon 
-with the fix. And, there are 2 things to keep in mind about the fix:
-
-1. If a ssh remote is using an old version of git-annex, a drop may fail.
-   Solution will be to just upgrade the git-annex on the remote to the
-   fixed version.
-2. When a file is present in several special remotes, but not in any
-   accessible git repositories, dropping it from one of the special
-   remotes will now fail, where before it was allowed.
-
-   Instead, the file has to be moved from one of the special remotes to
-   the git repository, and can then safely be dropped from the git repository.
-
-   This is a worrysome behavior change, but unavoidable.
-
-Solving this clearly called for more locking, to prevent concurrency
-problems. But, at first I couldn't find a solution that would allow
-dropping content that was only located on special remotes. I didn't want to
-make special remotes need to involve locking; that would be a nightmare to
-implement, and probably some existing special remotes don't have any
-way to do locking anyway.
-
-Happily, after thinking about it all through Wednesday, I found a solution,
-that while imperfect (see above) is probably the best one feasible. If my
-analysis is correct (and it seems so, although I'd like to write a more
-formal proof than the ad-hoc one I have so far), no locking is needed on
-special remotes, as long as the locking is done just right on the git repos
-and remotes. While this is not able to guarantee that numcopies is always
-preserved, it is able to guarantee that the last copy of a file is never
-removed. And, numcopies *will* always be preserved except for when this
-rare race condition occurs.
-
-So, I've been implementing that all of yesterday and today. Getting it
-right involves building up 4 different kinds of evidence, which can be
-used to make sure that the last copy of a file can't possibly end up being
-dropped, no matter what other concurrent drops could be happening.
-I ended up with a very clean and robust implementation of this, and
-a 2,000 line diff.
-
-Whew!
diff --git a/doc/devblog/day_327__soaking.mdwn b/doc/devblog/day_327__soaking.mdwn
deleted file mode 100644
--- a/doc/devblog/day_327__soaking.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Feeling kind of ready to cut the next release of git-annex, but am giving
-the recent large changes just a little time to soak in and make sure
-they're ok.
-
-Yesterday, changed the order that `git annex sync --content` and the
-assistant do drops. When dropping from the local repo and also some
-remotes, it now makes more sense to drop from the remotes first, and only
-then the local repo. There are scenaries where that order lets content be
-dropped from all the places that it should be, while the reverse order
-doesn't.
-
-Today, caught up on recent bug reports, including fixing a bad merge
-commit that was made when git merge failed due to filenames not supported by
-a crippled filesystem, and cleaning up a network transport warning that was
-displayed incorrectly. Also developed a patch to the `aws` library to
-support google nearline when creating buckets.
diff --git a/doc/devblog/day_328__git-annex_is_five.mdwn b/doc/devblog/day_328__git-annex_is_five.mdwn
deleted file mode 100644
--- a/doc/devblog/day_328__git-annex_is_five.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-The first release of git-annex was 5 years ago.
-
-There have been a total of 187 releases, growing to 50k lines of haskell
-code developed by 28 contributors (and another 10 or so external special
-remote contributors). Approximately 2000 people have posted questions,
-answers, bugs, todos, etc to this website, with 18900 posts in total.
-
-I've been funded for 3 of the 5 years to work on git-annex, with support
-from [[1451 individuals and 6 organizations|thanks]].
-
-Released a new version today with rather more significant changes than usual
-(see recent devblog entries).
-
-The [2015 git-annex user survey](http://git-annex-survey.branchable.com/polls/2015/)
-is now live.
diff --git a/doc/devblog/day_32__fsck_config_UI.mdwn b/doc/devblog/day_32__fsck_config_UI.mdwn
deleted file mode 100644
--- a/doc/devblog/day_32__fsck_config_UI.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Last night, built this nice user interface for configuring periodic fscks:
-
-[[!img assistant/fsckconfig.png]]
-
-Rather happy that that whole UI needed only 140 lines of code to build.
-Though rather more work behind it, as seen in this blog..
-
-Today I added some support to git-annex for smart fscking of remotes.
-So far only git repos on local drives, but this should get extended to
-git-annex-shell for ssh remotes. The assistant can also run periodic fscks
-of these.
-
-Still need to test that, and find a way to make a removable drive's fsck
-job run when the drive gets plugged in. That's where picking "any time"
-will be useful; it'll let you configure fscking of removable drives when
-they're available, as long as they have not been fscked too recently.
-
-----
-
-Today's work was sponsored by Georg Bauer.
diff --git a/doc/devblog/day_331__concurrent-output_preparations.mdwn b/doc/devblog/day_331__concurrent-output_preparations.mdwn
deleted file mode 100644
--- a/doc/devblog/day_331__concurrent-output_preparations.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Today started with getting a release of git-annex out, to deal with a new
-version of the aws library, which broke the build. That also added support
-to the S3 remotes for creating Google Nearline buckets, although only when
-git-annex is built with the newest version of the aws library.
-
-Rest of the day (and most of the past weekend) I've been working on the
-concurrent-output library. Today I finished making it support multi-line
-regions, and color, and even fully optimised its console updates to use
-minimal bandwidth. So, it's got everything git-annex can possibly need
-to display those troublesome concurrent actions. Will be starting to make
-git-annex use it soon!
diff --git a/doc/devblog/day_332__concurrent_output_at_long_last.mdwn b/doc/devblog/day_332__concurrent_output_at_long_last.mdwn
deleted file mode 100644
--- a/doc/devblog/day_332__concurrent_output_at_long_last.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Got git-annex using concurrent-output today. It works beautifully.
-Since the library is new, git-annex has to be explicitly configured to use
-it, so it'll be a while until this is available in regular builds.
-
-There are no progress bars yet in concurrent output mode, but that will change
-soon.. Probably tomorrow.
diff --git a/doc/devblog/day_333__cylons.mdwn b/doc/devblog/day_333__cylons.mdwn
deleted file mode 100644
--- a/doc/devblog/day_333__cylons.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Spent my time today porting concurrent-output to Windows, fixing a
-tricky problem with error handling/thread joining with git-annex -J,
-and improving the concurrent state handling to support the git command
-queue. Got add/addurl working in concurrent mode.
-No concurrent progress bars yet.. maybe tomorrow?
diff --git a/doc/devblog/day_334__too_easy.mdwn b/doc/devblog/day_334__too_easy.mdwn
deleted file mode 100644
--- a/doc/devblog/day_334__too_easy.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Finally concurrent progress bars are working! After all the groundwork,
-it was really easy to add, under a dozen lines of code.
-
-I've found several bugs while testing commands in -Jn mode, and the rest of
-today was spent fixing them. Two of them affected concurrent `git annex
-add`; the worst narrowly avoided being a data loss bug.
diff --git a/doc/devblog/day_335__catching_up_with_the_bug_reports.mdwn b/doc/devblog/day_335__catching_up_with_the_bug_reports.mdwn
deleted file mode 100644
--- a/doc/devblog/day_335__catching_up_with_the_bug_reports.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Some work today on improving the standalone linux builds and the
-git-annex-standalone.deb. Also, improved fscks's behavior when asked to
-fsck a dead repo, and fixed some places in the assistant where configured
-ssh-options were not used. Backlog is back down to 95.
diff --git a/doc/devblog/day_336__green.mdwn b/doc/devblog/day_336__green.mdwn
deleted file mode 100644
--- a/doc/devblog/day_336__green.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Test suite is 100% green! Fixed one remaining bug it found, and solved the
-strange sqlite crash, which turned out to be caused by the test suite deleting
-its temporary repository before sqlite was done with the database inside it.
-
-The only remaining blocker for using v6 unlocked files is a bad interaction
-with shared clones. That should be easy to fix, so release of git-annex
-version 6 is now not far away!
-
-While I've only talked about v6/[[todo/smudge]] stuff here lately, I have been
-fixing various other bugs along the way, and have accumulated a dozen bug
-fixes since the last release. Earlier this week I fixed a bug in `git annex
-unused`. Yesterday I noticed that `git annex migrate` didn't copy over
-metadata. Today, fixed a crash of `git annex view` in a non-unicode locale.
-Etc. So it'll be good not to have the release blocked any longer by v6
-stuff.
diff --git a/doc/devblog/day_336__pid_locks.mdwn b/doc/devblog/day_336__pid_locks.mdwn
deleted file mode 100644
--- a/doc/devblog/day_336__pid_locks.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Been working today on getting git-annex to fall back from nice posix fcntl
-locks to pid locks when the former are not supported. There will be an
-`annex.pidlock` to control this. Mostly useful, I think for networked file
-systems like NFS and Lustre. While these *do* support posix locks, I
-guess it can be hard sometimes to get some big server configured
-appropriately, especially when you don't admin it and just want to use
-git-annex there.
-
-Of course, the fun part about pid locks is that it can be pretty hard to
-tell if one is stale or not. Especialy when using a networked filesystem,
-because then the pid in question can be running on a different computer.
-
-Even if you do figure out that a pid lock is stale, how do you then
-take over a stale pid lock, without racing with anther process that
-also wants to take it over? This was the truely tricky question of the
-day.
-
-I have a possibly slightly novel approach to solve that: 
-Put a more modern lock file someplace else (eg, /dev/shm)
-and use that lock file to lock the pid lock file. Then you can tell if 
-a local pid lock file is stale quickly locally, and take it over safely.
-Of course, if the pid is not locked by a local process, this still
-has to fall back to the inevitable retry-and-timeout-and-fail.
-
-I hope the result will work pretty well, although git-annex will not
-support as fine-grained concurrency when using pid locks. Will find out
-tomorrow when I run today's code! ;)
diff --git a/doc/devblog/day_337__who_needs_POSIX.mdwn b/doc/devblog/day_337__who_needs_POSIX.mdwn
deleted file mode 100644
--- a/doc/devblog/day_337__who_needs_POSIX.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Got the pid locks working pretty easily, as expected.
-
-But then... Detoured into some truely insane behavior of the Lustre
-filesystem. It seems that Lustre is perfectly happy to let link()
-succeed even when there's a file there that it would overwrite. Rather than
-overwriting the file, Lustre picks an even more crazy way to violate
-POSIX.. It lets there be 2 files in a directory with the **same name**, but
-different contents. Has to be seen to be believed:
-
-	hess$ ls pidlock
-	-r--r--r--  1 hess root    70 Nov 13 15:07 pidlock
-	-r--r--r--  1 hess root    70 Nov 13 15:07 pidlock
-	hess$ rm pidlock; ls pidlock
-	-r--r--r--  1 hess root    74 Nov 13 14:35 pidlock	
-
-git-annex's pid locking code now detects this and seems to work
-even on Lustre. Eep.
-
-I'm clutching my "NO WARRANTY" disclaimer pretty hard though, if anyone
-wants to use git-annex on Lustre. When POSIX is being violated this badly,
-it's hard to anticipate what other strangeness might result.
diff --git a/doc/devblog/day_338__week_in_review.mdwn b/doc/devblog/day_338__week_in_review.mdwn
deleted file mode 100644
--- a/doc/devblog/day_338__week_in_review.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Monday: Some finishing touches on the pid locking support, and released
-5.20151116. After the release I noticed that concurrent downloads didn't
-always include a progress meter, and made the necessary changes to fix
-that.
-
-Wednesday: This was a day of minor bug fixing and responding to questions
-etc. Message backlog got down below 90, not bad.
-
-Thursday: I've been distracted from coding today with an idea of making
-some new stickers. Hexagonal this time, and even better, composable...
-So they can show git-annex getting as big as you want. ;)
-
-[[stickers/hex.svg]]
-
-The design is done, see [[stickers]], and seems to work well, and even
-better is easy to modify. May find time to get these printed at some point.
diff --git a/doc/devblog/day_339_smudging_out_direct_mode.mdwn b/doc/devblog/day_339_smudging_out_direct_mode.mdwn
deleted file mode 100644
--- a/doc/devblog/day_339_smudging_out_direct_mode.mdwn
+++ /dev/null
@@ -1,61 +0,0 @@
-I'm considering ways to get rid of direct mode, replacing it with something
-better implemented using [[todo/smudge]] filters.
-
-## git-lfs
-
-I started by trying out git-lfs, to see what I can learn from it. My
-feeling is that git-lfs brings an admirable simplicity to using git with
-large files. For example, it uses a push-hook to automatically
-upload file contents before pushing a branch.
-
-But its simplicity comes at the cost of being centralized. You can't make a
-git-lfs repository locally and clone it onto other drive and have the local
-repositories interoperate to pass file contents around. Everything has to
-go back through a centralized server. I'm willing to pay complexity costs
-for decentralization.
-
-Its simplicity also means that the user doesn't have much control over what
-files are present in their checkout of a repository. git-lfs downloads
-all the files in the work tree. It doesn't have facilities for dropping
-files to free up space, or for configuring a repository to only want to get
-a subset of files in the first place. Some of this could be added to it 
-I suppose.
-
-I also noticed that git-lfs uses twice the disk space, at least when
-initially adding files. It keep a copy of the file in .git/lfs/objects/,
-in addition to the copy in the working tree. That copy seems to be
-necessary due to the way git smudge filters work, to avoid data loss. Of
-course, git-annex manages to avoid that duplication when using symlinks,
-and its direct mode also avoids that duplication (at the cost of some
-robustness). I'd like to keep git-annex's single local copy feature 
-if possible.
-
-## replacing direct mode
-
-Anyway, as smudge/clean filters stand now, they can't be used to set up
-git-annex symlinks; their interface doesn't allow it. But, I was able to
-think up a design that uses smudge/clean filters to cover the same use
-cases that direct mode covers now.
-
-Thanks to the clean filter, adding a file with `git add` would check in a
-small file that points to the git-annex object.
-
-In the same repository, you could also use `git annex add` to check
-in a git-annex symlink, which would protect the object from modification,
-in the good old indirect mode way. `git annex lock` and `git annex unlock` 
-could switch a file between those two modes.
-
-So this allows mixing directly writable annexed files and locked down
-annexed files in the same repository. All regular git commands and all
-git-annex commands can be used on both sorts of files. Workflows could
-develop where a file starts out unlocked, but once it's done, is locked to
-prevent accidental edits and archived away or published.
-
-That's much more flexible than the current direct mode, and I think it will
-be able to be implemented in a simpler, more scalable, and robust way too.
-I can lose the direct mode merge code, and remove hundreds of lines of
-other special cases for direct mode.
-
-The downside, perhaps, is that for a repository to be usable on a crippled
-filesystem, all the files in it will need to be unlocked. A file can't
-easily be unlocked in one checkout and locked in another checkout.
diff --git a/doc/devblog/day_33__fsck_on_connect.mdwn b/doc/devblog/day_33__fsck_on_connect.mdwn
deleted file mode 100644
--- a/doc/devblog/day_33__fsck_on_connect.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Built everything needed to run a fsck when a remote gets connected. Have
-not tested it; only testing is blocking merging the incrementalfsck branch
-now.
-
-Also updated the OSX and Android builds to use a new gpg release (denial of
-service security fix), and updated the Debian backport, and did a small
-amount of bug fixing. I need to do several more days of bug fixing once 
-I get this incremental fsck feature wrapped up before moving on to recovery
-of corrupt git repositories.
diff --git a/doc/devblog/day_340__post_turkey_catchup.mdwn b/doc/devblog/day_340__post_turkey_catchup.mdwn
deleted file mode 100644
--- a/doc/devblog/day_340__post_turkey_catchup.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Spent a couple of days catching up on backlog, and my backlog is down to 80
-messages now. Lowest in recent memory.
-
-Made the annex.largefiles config be honored by `git annex import`, `git
-annex addurl`, and even `git annex importfeed`.
-
-Planning to dive into smudge filters soon. The design seems ready to go,
-although there is some complication in needing to keep track of mappings
-between worktree files and annex keys.
diff --git a/doc/devblog/day_341__starting_smudge.mdwn b/doc/devblog/day_341__starting_smudge.mdwn
deleted file mode 100644
--- a/doc/devblog/day_341__starting_smudge.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-I've gotten git-annex working as a smudge/clean filter today in the
-`smudge` branch. It works ok in a local git repository. `git add` lets
-git-annex decide if it wants to annex a file's content, and checking out
-branches and other git commands involving those files works pretty well.
-
-It can sometimes be slow; git's smudge interface necessarily needs to
-copy the content of files around, particularly when checking out files,
-and so it's never going to be as fast as the good old git-annex symlink
-approach. Most of the slow parts are things that can't be done in direct
-mode repos though, like switching branches, so that isn't a regression.
-
-No git-annex commands to manage the annexed content work yet. That
-will need a key to worktree file mapping to be maintained, and implementing
-that mapping and ensuring its always consistent is probably going to be
-the harder part of this.
-
-Also there's the question of how to handle upgrades from direct mode
-repositories. This will be an upgrade from annex.version 5 to 6, and you
-won't want to do it until all computers that have clones of a repository
-have upgraded to git-annex 6.x, since older versions won't be able to work
-with the upgraded repository. So, the repository upgrade will need to be
-run manually initially, and it seems I'll need to keep supporting direct
-mode for v5 repos in a transition period, which will probably be measured
-in years.
diff --git a/doc/devblog/day_342__continuing_smudge.mdwn b/doc/devblog/day_342__continuing_smudge.mdwn
deleted file mode 100644
--- a/doc/devblog/day_342__continuing_smudge.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Made a lot of progress today. Implemented the database mapping a key to its
-associated files.  As expected this database, when updated by the
-smudge/clean filters, is not always consistent with the current git work tree.
-In particular, commands like `git mv` don't update the database with the
-new filename. So queries of the database will need to do some additional
-work first to get it updated with any staged changes. But the database is
-good enough for a proof of concept, I hope.
-
-Then I got git-annex commands treating smudged files as annexed files.
-So this works:
-
-	joey@darkstar:~/tmp/new>git annex init
-	init  ok
-	(recording state in git...)
-	joey@darkstar:~/tmp/new>cp ~/some.mp3 .
-	joey@darkstar:~/tmp/new>git add some.mp3
-	joey@darkstar:~/tmp/new>git diff --cached
-	diff --git a/some.mp3 b/some.mp3
-	new file mode 100644
-	index 0000000..2df8868
-	--- /dev/null
-	+++ b/some.mp3
-	@@ -0,0 +1 @@
-	+/annex/objects/SHA256E-s191213--e4b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.mp3
-	joey@darkstar:~/tmp/new>git annex whereis some.mp3
-	whereis some.mp3 (1 copy) 
-	  	7de17427-329a-46ec-afd0-0a088f0d0b1b -- joey@darkstar:~/tmp/new [here]
-	ok
-
-get/drop don't yet update the smudged files, and that's the next step.
diff --git a/doc/devblog/day_343__get_and_drop_for_smudge.mdwn b/doc/devblog/day_343__get_and_drop_for_smudge.mdwn
deleted file mode 100644
--- a/doc/devblog/day_343__get_and_drop_for_smudge.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Well, another day working on smudge filters, or unlocked files as the
-feature will be known when it's ready. Got both `git annex get` and `git
-annex drop` working for these files today.
-
-Get was the easy part; it just has to hard link or copy the object to the
-work tree file(s) that point to it.
-
-Handling dropping was hard. If the user drops a file, but it's unlocked and
-modified, it shouldn't reset it to the pointer file. For this, I reused the
-InodeCache stuff that was built for direct mode. So the sqlite database
-tracks the InodeCaches of unlocked files, and when a key is dropped it can
-check if the file is modified.
-
-But that's not a complete solution, because when git uses a clean filter,
-it will write the file itself, and git-annex won't have an InodeCache for
-it. To handle this case, git-annex will fall back to verifying the content
-of the file when dropping it if its InodeCache isn't known.
-Bit of a shame to need an expensive checksum to drop an unlocked file;
-maybe the git clean filter interface will eventually be improved to let
-git-annex use it more efficiently.
-
-Anyway, smudged aka unlocked files are working now well enough to be a
-proof of concept. I have several missing safety checks that need to be
-added to get the implementation to be really correct, and quite a lot
-of polishing still to do, including making `unlock`, `lock`, `fsck`,
-and `merge` handle them, and finishing repository upgrade code.
diff --git a/doc/devblog/day_344-345__smudging_along.mdwn b/doc/devblog/day_344-345__smudging_along.mdwn
deleted file mode 100644
--- a/doc/devblog/day_344-345__smudging_along.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-New special remote alert! Chris Kastorff has made
-[a special remote supporting Backblaze's B2 storage servie](https://github.com/encryptio/git-annex-remote-b2).
-
-And I'm still working on v6 unlocked files. After beating on it for 2 more
-days, all git-annex commands should support them. There is still plenty
-of work to do on testing, upgrading, optimisation, merge conflict resolution,
-and reconciling staged changes.
diff --git a/doc/devblog/day_346-347__nearly_ready_to_merge.mdwn b/doc/devblog/day_346-347__nearly_ready_to_merge.mdwn
deleted file mode 100644
--- a/doc/devblog/day_346-347__nearly_ready_to_merge.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Two more days working on v6 and the `smudge` branch is almost ready to be
-merged. The test suite is passing again for v5 repos, and is almost
-passing for v6 repos. Also I decided to make `git annex init` create v5
-repos for now, so `git annex init --version=6` or a `git annex upgrade`
-is needed to get a v6 repo. So while I still have plenty of todo items for
-v6 repos, they are working reasonably well and almost ready for early
-adopters.
-
-The only real blocker to merging it is that the database stuff used by v6
-is not optimised yet and probably slow, and even in v5 repos it will query
-the database. I hope to find an optimisation that avoids all database
-overhead unless unlocked files are used in a v6 repo.
-
-I'll probably make one more release before that is merged though. Yesterday
-I fixed a small security hole in `git annex repair`, which could expose the
-contents of an otherwise not world-writable repository to local users.
-
-BTW, the [2015 git-annex user survey](http://git-annex-survey.branchable.com/polls/2015/)
-closes in two weeks, please go fill it out if you haven't yet done so!
diff --git a/doc/devblog/day_348__v6_assistant.mdwn b/doc/devblog/day_348__v6_assistant.mdwn
deleted file mode 100644
--- a/doc/devblog/day_348__v6_assistant.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Today was mostly spent making the assistant support v6 repositories.
-That was harder than expected, because I have not touched this part of the
-assistant's code much in a long time, and there are lots of tricky races
-and edge cases to deal with.
-
-The smudge branch has a 4500 diff from master now. Not counting
-documentation changes (Another 500 lines.) The todo list for it is
-shrinking slowly now. May not get it done before the new year.
diff --git a/doc/devblog/day_349__v6_database_optimisation.mdwn b/doc/devblog/day_349__v6_database_optimisation.mdwn
deleted file mode 100644
--- a/doc/devblog/day_349__v6_database_optimisation.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Got unexpectedly far today on optimising the database that v6 repositories
-use to keep track of unlocked files. The database schema may still need
-optimization, but everything else to do with the database is optimised.
-Writes to the database are queued together. And reads to the database
-avoid creating the database if it doesn't exist yet. Which means v5
-repos, and v6 repos with no unlocked files will avoid any database
-overhead.
diff --git a/doc/devblog/day_34__wrapping_up_fsck.mdwn b/doc/devblog/day_34__wrapping_up_fsck.mdwn
deleted file mode 100644
--- a/doc/devblog/day_34__wrapping_up_fsck.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Fixed a lot of bugs in the assistant's fsck handling today, and merged
-it into master. There are some enhancments that could be added to it, 
-including fscking ssh remotes via git-annex-shell and adding the ability to
-schedule events to run every 30 days instead of on a specific day of the
-month. But enough on this feature for now.
-
-Today's work was sponsored by Daniel Brockman.
diff --git a/doc/devblog/day_350-351__it_landed_on_xmas_eve.mdwn b/doc/devblog/day_350-351__it_landed_on_xmas_eve.mdwn
deleted file mode 100644
--- a/doc/devblog/day_350-351__it_landed_on_xmas_eve.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-If you've got some free holiday time, the v6 repository mode is now
-available in many of the daily builds, and there's documentation at
-[[tips/unlocked_files]]. It would be very useful now if you can give
-it a try. Use a clone or new repository for safety.
-
-Yesterday I checked all parts of the code that special case direct mode,
-and found a few things that needed adjusting for v6 unlocked files. Today,
-I added the annex.thin config. Around 4 other major todo items need to be
-dealt with before this is ready for more than early adopters.
diff --git a/doc/devblog/day_352__had_to_be_done.mdwn b/doc/devblog/day_352__had_to_be_done.mdwn
deleted file mode 100644
--- a/doc/devblog/day_352__had_to_be_done.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Automatic merge conflict resolver updated to work with unlocked files in v6
-repos. Fairly tricky and painful; thank goodness the test suite tests a lot
-of edge cases in that code. 
diff --git a/doc/devblog/day_353__one_step_forward_and_N_steps_back.mdwn b/doc/devblog/day_353__one_step_forward_and_N_steps_back.mdwn
deleted file mode 100644
--- a/doc/devblog/day_353__one_step_forward_and_N_steps_back.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Got the test suite passing 100%, but then added a pass that uses v6
-unlocked files and 30-some more failures appeared. Fixed a couple of the
-bugs today. After sprinting unexpectedly hard all December on v6, I need a
-change of pace, so I started digging into the website message backlog
-and fixed some bugs and posted some comments there.
diff --git a/doc/devblog/day_354-355__beating_on_the_test_suite.mdwn b/doc/devblog/day_354-355__beating_on_the_test_suite.mdwn
deleted file mode 100644
--- a/doc/devblog/day_354-355__beating_on_the_test_suite.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Been working hard on the last several test suite failures for v6 unlocked
-files. Now I've solved almost all of them, which is a big improvement to
-my confidence in its (almost) correctness.
-
-Frustratingly, the test suite is still not green after all this work.
-There's some kind of intermittent failure related to the sqlite database.
-Only seems to happen when the test suite is running, and the error
-message is simply "Error" which is making it hard to track down..
diff --git a/doc/devblog/day_356__benchmarking.mdwn b/doc/devblog/day_356__benchmarking.mdwn
deleted file mode 100644
--- a/doc/devblog/day_356__benchmarking.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Added `git annex benchmark` which uses the excellent Criterion to benchmark
-parts of git-annex. What I'm interested in benchmarking right now is the
-sqlite database that is used to manage v6 unlocked files, but having a
-built-in benchmark will probably have other uses later.
-
-The benchmark results were pretty good; queries from the database are
-quite fast (60 microseconds warm cache) and scale well as the size increases.
-I did find one scalability issue, which was fixed by adding another index
-to the database. The kind of schema change that it's easy to make now, but
-that would be a painful transition if it had to be done once this was in wide
-use.
diff --git a/doc/devblog/day_357__post_release_catchup.mdwn b/doc/devblog/day_357__post_release_catchup.mdwn
deleted file mode 100644
--- a/doc/devblog/day_357__post_release_catchup.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-After finally releasing git-annex 6 yesterday, I did some catching up
-today, and got the message backlog back down from 120 to 100.
-
-By the way, the first OSX release of git-annex 6 was broken; I had to fix
-an issue on the builder and update the build. If you upgraded at the wrong
-time, you might find that git-annex doesn't run; if so reinstall it.
-I now have an account on a separate OSX machine from the build machine,
-that automatically tests the daily build, to detect such problems.
diff --git a/doc/devblog/day_358__bugfix_release.mdwn b/doc/devblog/day_358__bugfix_release.mdwn
deleted file mode 100644
--- a/doc/devblog/day_358__bugfix_release.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Bugfix release of git-annex today. The release earlier this month had a bug
-that caused `git annex sync --content` to drop files that should be
-preferred content. So I had to rush out a fix after that [bug was reported](http://git-annex.branchable.com/bugs/wanted___61___present_gets_ignored_in___39__git_annex_sync_--content__39__/).
-(Some of the builds for the new release are still updating as I post this.)
-
-In the past week I've been dealing with a blizzard. Snowed in for 6 days
-and counting. That has slightly back-burnered working on git-annex, and
-I've mostly been making enhancements that the DataLad project needs, along
-the lines of more commands supporting --batch and better --json output. 
diff --git a/doc/devblog/day_359__annex.largefiles_gitattributes.mdwn b/doc/devblog/day_359__annex.largefiles_gitattributes.mdwn
deleted file mode 100644
--- a/doc/devblog/day_359__annex.largefiles_gitattributes.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-For use cases that mix annexed files with files stored in git, the
-annex.largefiles config is more important in v6 repositories than before,
-since it configures the behavior of `git add` and even `git commit -a`. To
-make it possible to set annex.largefiles so it'll stick across clones of
-a repository, I have now made it be supported in `.gitattributes` files
-as well as git config.
-
-Setting it in .gitattributes looks a little bit different, since
-the regular .gitattributes syntax can be used to match on the filename.
-
-	* annex.largefiles=(largerthan=100kb)
-	*.c annex.largefiles=nothing
-
-It seems there's no way to make a git attribute value contain whitespace.
-So, more complicated annex.largefiles expressions need to use parens to
-break up the words.
-
-	* annex.largefiles=(largerthan=100kb)and(not(include=*.c))
diff --git a/doc/devblog/day_35__anacron_and_bugfixing.mdwn b/doc/devblog/day_35__anacron_and_bugfixing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_35__anacron_and_bugfixing.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-While I said I was done with fsck scheduling yesterday, I ended up adding
-one more feature to it today: Full anacron style scheduling. So a fsck can
-be scheduled to run once per week, or month, or year, and it'll run the
-fsck the next time it's available after that much time has passed. The nice
-thing about this is I didn't have to change Cronner *at all* to add this,
-just improved the Recurrance data type and the code that calculates when
-to run events.
-
-Rest of the day I've been catching up on some bug reports. The main bug I
-fixed caused git-annex on Android to hang when adding files. This turns out
-to be because it's using a new (unreleased) version of git, and
-`git check-attr -z` output format has changed in an incompatable way.
-
-I am currently 70 messages behind, which includes some ugly looking bug
-reports, so I will probably continue with this over the next couple days.
diff --git a/doc/devblog/day_360__annex.largefiles_mimetype.mdwn b/doc/devblog/day_360__annex.largefiles_mimetype.mdwn
deleted file mode 100644
--- a/doc/devblog/day_360__annex.largefiles_mimetype.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-The same parser was used for both preferred content expressions and
-annex.largefiles. Reworked that today, splitting it into two distinct
-parsers. It doesn't make any sense to use terms like "standard" or
-"lackingcopies" in annex.largefiles, and such are now rejected.
-
-That groundwork also let me add a feature that only makes sense for
-annex.largefiles, and not for preferred content expressions: Matching by
-mime type, such as `mimetype=text/*`
diff --git a/doc/devblog/day_360__results_of_2015_user_survey.mdwn b/doc/devblog/day_360__results_of_2015_user_survey.mdwn
deleted file mode 100644
--- a/doc/devblog/day_360__results_of_2015_user_survey.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-The [2015 git-annex user servey](http://git-annex-survey.branchable.com/polls/2015/)
-is over with, and I'm reading through it and comparing with the
-[2013 survey](http://git-annex-survey.branchable.com/polls/2013/).
-
-37% fewer users responded to the 2015 survey than in 2013.
-It's hard to tell if this has anything to do with the total number of
-git-annex users; Debian's popcon suggests the number of users has doubled
-since 2013, although its graph also suggests the number of users has
-flattened off since 2014. The difference may just be that I 
-promoted the 2013 survey better than the 2015 survey, perhaps reaching
-kickstarter backers who I was in touch with back then.
-
-25% use the assistant. Of those, 20% use XMPP, which is good to know as I'd
-like to get rid of it.
-
-Android use has quardrupled, and Windows use has doubled; both are now at
-4%. It's not surprising that Android and Windows users still think more
-porting work is needed for those OSes. iOS is the only unsupported OS that
-more than 1% of users want. Embedded and NAS systems were mentioned much
-less than in 2013; probably the
-[[arm_tarball_build|forum/new_linux_arm_tarball_build]] met many such
-needs.
-
-About the same percentage of users prefer direct mode in 2015 as did in 2013,
-and ditto for indirect mode. But, more users in 2015 only use direct mode
-on platforms that force its use. Correlating with the OS percentages
-suggests that many of these users are using removable media with the
-FAT filesystem, rather than an OS like Windows or Android. Hopefully
-v6 unlocked files will eventually better meet those user's needs.
-
-The percent of users installing git-annex from source has halved since 2013,
-and it seems that builds from this website have taken up most of that slack;
-I would have expected more installs from Debian, Homebrew etc, but that
-seems not to have increased.
-
-The number of repositories per user has gone up quite a lot since 2013,
-when only 7% of users had more than 10 repos. Now, 23% of users do. And,
-2% of users have more than 100 repos! This probably involves both more
-repositories for different purposes, and cloning of repositories
-to more devices.
-
-Similarly, the amount of data stored has gone up. 34% have more than 1
-terabyte stored, up from 18% in 2013. 2% have more than 16 terabytes.
-
-There's some indications of more users sharing repositories or
-otherwise using it in teams of larger groups, although most users still use
-it by themselves.
-
-Users seem happier with git-annex now than in 2013. 16% call it "one of my
-favorite applications of all time". And, significantly fewer find it too
-hard to use than in 2013.
-
-The main blocking problems are documentation, performance with many
-files (a general git problem), and various issues with the assistant.
-Respondants suggest more focus on making it easier for nontechnical users,
-and for use in larger groups/organizations.
diff --git a/doc/devblog/day_361__adjusted_branches_design.mdwn b/doc/devblog/day_361__adjusted_branches_design.mdwn
deleted file mode 100644
--- a/doc/devblog/day_361__adjusted_branches_design.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Working on a design for [[design/adjusted_branches]]. I've been kicking
-this idea around for a while to replace direct mode on crippled filesystems
-with v6 unlocked files. And the same thing would allow for hiding not
-present files. It's somewhat complicated, but the design I have seems like
-it would work.
diff --git a/doc/devblog/day_362__encoding_fun.mdwn b/doc/devblog/day_362__encoding_fun.mdwn
deleted file mode 100644
--- a/doc/devblog/day_362__encoding_fun.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-This was one of those days where I somehow end up dealing with tricky
-filename encoding problems all day.
-
-First, worked around inability for concurrent-output to display unicode
-characters when in a non-unicode locale. The normal trick that git-annex
-uses doesn't work in this case. Since it only affected -J, I decided to
-make git-annex detect the problem and make -J behave as if it was not built
-with the concurrent-output feature. So, it just doesn't display concurrent
-output, which is better than crashing with an encoding error.
-
-The other problem affects v6 repos only. Seems that not all Strings will
-round trip through a persistent sqlite database. In particular, unicode
-surrogate characters are replaced with garbage. This is really [a bug in
-persistent](https://github.com/yesodweb/persistent/issues/540).
-But, for git-annex's purposes, it was possible to work around it,
-by detecting such Strings and serializing them differently.
-
-Then I had to enhance `git annex fsck` to fix up repositories that were
-affected by that problem.
diff --git a/doc/devblog/day_363__snow_day.mdwn b/doc/devblog/day_363__snow_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_363__snow_day.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Made a `no-cbits` branch that removes several things that use C code and
-the FFI. I moved one of them out to a new haskell library,
-<http://hackage.haskell.org/package/mountpoints>. Others were replaced with
-other existing libraries. This will simplify git-annex's build process, and
-more library use is good. Planning to merge this branch in a week or two.
-
-v6 unlocked files don't work on Windows. I had assumed that since the build
-was succeeding, the test suite was passing there. But, it turns out the
-test suite was failing and somehow not failing the build. Have now fixed
-several problems with v6 on Windows. Still a couple test suite problems to
-address.
diff --git a/doc/devblog/day_364__more_v6_unlocked.mdwn b/doc/devblog/day_364__more_v6_unlocked.mdwn
deleted file mode 100644
--- a/doc/devblog/day_364__more_v6_unlocked.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-In a v6 repository on a filesystem not supporting symlinks,
-it makes sense for commands like `git annex add` and `git annex import`
-to add the files unlocked, since locked files are not usable there.
-After implementing that, I also added an `annex.addunlocked` config setting,
-so that the same behavior can be configured in other repositories.
-
-Rest of the day was spent fixing up the test suite's v6 repository tests
-to work on FAT and Windows.
diff --git a/doc/devblog/day_365__some_kind_of_milestone.mdwn b/doc/devblog/day_365__some_kind_of_milestone.mdwn
deleted file mode 100644
--- a/doc/devblog/day_365__some_kind_of_milestone.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Should mention that there was a release two days ago. The main reason for
-the timing of that release is because the Linux wstandalone builds include
-glibc, which recently had a nasty security hole and had to be updated.
-
-Today, fixed a memory leak, and worked on getting caught up with backlog,
-which now stands at 112 messages.
diff --git a/doc/devblog/day_366__starting_adjusted_branches.mdwn b/doc/devblog/day_366__starting_adjusted_branches.mdwn
deleted file mode 100644
--- a/doc/devblog/day_366__starting_adjusted_branches.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Getting started on [[design/adjusted_branches]], taking a top-down and
-bottom-up approach. Yesterday I worked on improving the design. Today,
-built a `git mktree` interface that supports recursive tree generation and
-filtering, which is the low-level core of what's needed to implement the
-adjusted branches.
-
-To test that, wrote a fun program that generates a git tree with all
-the filenames reversed.
-
-[[!format haskell """
-import Git.Tree
-import Git.CurrentRepo
-import Git.FilePath
-import Git.Types
-import System.FilePath
-
-main = do
-        r <- Git.CurrentRepo.get
-        (Tree t, cleanup) <- getTree (Ref "HEAD") r
-        print =<< recordTree r (Tree (map reverseTree t))
-        cleanup
-
-reverseTree :: TreeContent -> TreeContent
-reverseTree (TreeBlob f m s) = TreeBlob (reverseFile f) m s
-reverseTree (RecordedSubTree f s l) = NewSubTree (reverseFile f) (map reverseTree l)
-
-reverseFile :: TopFilePath -> TopFilePath
-reverseFile = asTopFilePath . joinPath . map reverse . splitPath . getTopFilePath
-"""]]
-
-Also, fixed problems with the Android, Windows, and OSX builds today.
-Made a point release of the OSX dmg, because the last several releases
-of it will SIGILL on some hardware.
diff --git a/doc/devblog/day_367__adjusted_branches_proof_of_concept.mdwn b/doc/devblog/day_367__adjusted_branches_proof_of_concept.mdwn
deleted file mode 100644
--- a/doc/devblog/day_367__adjusted_branches_proof_of_concept.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Now I have a proof of concept [[design/adjusted_branches]]
-implementation, that creates a branch where all locked files
-are adjusted to be unlocked. It works!
-
-Building the adjusted branch is pretty fast; around 2 thousand files
-per second. And, I have a trick in my back pocket that could double that
-speed. It's important this be quite fast, because it'll be done often.
-
-Checking out the adjusted branch can be bit slow though, since git runs
-`git annex smudge` once per unlocked file. So that might need to be
-optimised somehow. On the other hand, this should be done only rarely.
-
-I like that it generates reproducible git commits so the same adjustments
-of the same branch will always have the same sha, no matter when and where
-it's done. Implementing that involved parsing git commit objects.
-
-Next step will be merging pulled changes into the adjusted branch, while
-maintaining the desired adjustments.
diff --git a/doc/devblog/day_368__leap.mdwn b/doc/devblog/day_368__leap.mdwn
deleted file mode 100644
--- a/doc/devblog/day_368__leap.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Pushed out a release today, could not resist the leap day in the version
-number, and also there were enough bug fixes accumulated to make it worth
-doing.
-
-I now have `git-annex sync` working inside adjusted branches, so pulls
-get adjusted appropriately before being merged into the adjusted branch.
-Seems to mostly work well, I did just find one bug in it though. Only
-propigating adjusted commits remains to be done to finish my adjusted
-branches prototype.
diff --git a/doc/devblog/day_369-370__paddling_furiously.mdwn b/doc/devblog/day_369-370__paddling_furiously.mdwn
deleted file mode 100644
--- a/doc/devblog/day_369-370__paddling_furiously.mdwn
+++ /dev/null
@@ -1,72 +0,0 @@
-Tuesday was spent dealing with lock files. Turned out there were some bugs
-in the `annex.pidlock` configuration that prevented it from working, and
-could even lead to data loss.
-
-And then more lock files today, since I needed to lock git's index file the
-same way git does. This involved finding out how to emulate `O_EXCL` under
-Windows. Urgh.
-
-Finally got back to working on [[design/adjusted_branches]] today. And, I've just
-gotten syncing of commits from adjusted branches back to the orginal branch
-working! Time for short demo of what I've been building for the past couple
-weeks:
-
-	joey@darkstar:~/tmp/demo>ls -l
-	total 4
-	lrwxrwxrwx 1 joey joey 190 Mar  3 17:09 bigfile -> .git/annex/objects/zx/X8/SHA256E-s1048576--44ee9fdd91d4bc567355f8b2becd5fe137b9e3aafdfe804341ce2bcc73b8013f/SHA256E-s1048576--44ee9fdd91d4bc567355f8b2becd5fe137b9e3aafdfe804341ce2bcc73b8013f
-	joey@darkstar:~/tmp/demo>git annex adjust
-	Switched to branch 'adjusted/master(unlocked)'
-	ok
-	joey@darkstar:~/tmp/demo#master(unlocked)>ls -l
-	total 4
-	-rw-r--r-- 1 joey joey 1048576 Mar  3 17:09 bigfile
-
-Entering the adjusted branch unlocked all the files.
-
-	joey@darkstar:~/tmp/demo#master(unlocked)>git mv bigfile newname
-	joey@darkstar:~/tmp/demo#master(unlocked)>git commit -m rename
-	[adjusted/master(unlocked) 29e1bc8] rename
-	 1 file changed, 0 insertions(+), 0 deletions(-)
-	  rename bigfile => newname (100%)
-	joey@darkstar:~/tmp/demo#master(unlocked)>git log --pretty=oneline
-	29e1bc835080298bbeeaa4a9faf42858c050cad5 rename
-	a195537dc5beeee73fc026246bd102bae9770389 git-annex adjusted branch
-	5dc1d94d40af4bf4a88b52805e2a3ae855122958 add
-	joey@darkstar:~/tmp/demo#master(unlocked)>git log --pretty=oneline master
-	5dc1d94d40af4bf4a88b52805e2a3ae855122958 add
-
-The commit was made on top of the commit that generated the adjusted branch.
-It's not yet reached the master branch.
-
-	joey@darkstar:~/tmp/demo#master(unlocked)>git annex sync
-	commit  ok
-	joey@darkstar:~/tmp/demo#master(unlocked)>git log --pretty=oneline
-	b60c5d6dfe55107431b80382596f14f4dcd259c9 git-annex adjusted branch
-	9c36848f078a2bb7a304010e962a2b7318c0877c rename
-	5dc1d94d40af4bf4a88b52805e2a3ae855122958 add
-	joey@darkstar:~/tmp/demo#master(unlocked)>git log --pretty=oneline master
-	9c36848f078a2bb7a304010e962a2b7318c0877c rename
-	5dc1d94d40af4bf4a88b52805e2a3ae855122958 add
-
-Now the commit has reached master. Notice how the history of the adjusted
-branch was rebased on top of the updated master branch as well.
-
-	joey@darkstar:~/tmp/demo#master(unlocked)>ls -l
-	total 1024
-	-rw-r--r-- 1 joey joey 1048576 Mar  3 17:09 newname
-	joey@darkstar:~/tmp/demo#master(unlocked)>git checkout master
-	Switched to branch 'master'
-	joey@darkstar:~/tmp/demo>ls -l
-	total 4
-	lrwxrwxrwx 1 joey joey 190 Mar  3 17:12 newname -> .git/annex/objects/zx/X8/SHA256E-s1048576--44ee9fdd91d4bc567355f8b2becd5fe137b9e3aafdfe804341ce2bcc73b8013f/SHA256E-s1048576--44ee9fdd91d4bc567355f8b2becd5fe137b9e3aafdfe804341ce2bcc73b8013f
-
-Just as we'd want, the file is locked in master, and unlocked in 
-the adjusted branch.
-
-(Not shown: git annex sync will also merge in and adjust changes from remotes.)
-
-So, that all looks great! But, it's cheating a bit, because it locks
-all files when updating the master branch. I need to make it remember,
-somehow, when files were originally unlocked, and keep them unlocked. Also
-want to implement other adjustments, like hiding files whose content is not
-present.
diff --git a/doc/devblog/day_36__bugfixing.mdwn b/doc/devblog/day_36__bugfixing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_36__bugfixing.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Productive day, but I'm wiped out. Backlog down to 51.
diff --git a/doc/devblog/day_371__catching_up.mdwn b/doc/devblog/day_371__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_371__catching_up.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Over the weekend, I converted the linux "ancient" autobuilder to use stack.
-This makes it easier to get all the recent versions of all the haskell
-dependencies installed there.
-
-Also, merged my no-ffi branch, removing some library code from git-annex
-and adding new dependencies. It's good to remove code.
-
-Today, fixed the OSX dmg file -- its bundled gpg was broken. I pushed out a
-new version of the OSX dmg file with the fix.
-
-With the recent incident in mind of malware inserted into the Transmission
-dmg, I've added a virus scan step to the release process
-for all the git-annex images. This way, we'll notice if an autobuilder
-gets a virus.
-
-Also caught up on some backlog, although the remaining backlog is a little
-larger than I'd like at 135 messages.
-
-Hope to work some more on adjusted branches this week. A few mornings ago,
-I had what may be a key insight about how to reverse adjustments when
-propigating changes back from the adjusted branch.
diff --git a/doc/devblog/day_372__adjusted_branches_improved.mdwn b/doc/devblog/day_372__adjusted_branches_improved.mdwn
deleted file mode 100644
--- a/doc/devblog/day_372__adjusted_branches_improved.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-After a real brain-bender of a day, I have commit propagation from the
-adjusted branch back to the original branch working, without needing to
-reverse adjust the whole tree. This is faster, but the really nice thing
-is that it makes individual adjustments simpler to write.
-
-In fact, it's so simple that I took 10 minutes just now to implement a second
-adjustment!
-
-[[!format haskell """
-adjustTreeItem HideMissingAdjustment h ti@(TreeItem _ _ s) = do
-         mk <- catKey s
-         case mk of
-                 Just k -> ifM (inAnnex k)
-                         ( return (Just ti)
-      	                 , return Nothing
-                         )
-                 Nothing -> return (Just ti)
-"""]]
diff --git a/doc/devblog/day_373__away.mdwn b/doc/devblog/day_373__away.mdwn
deleted file mode 100644
--- a/doc/devblog/day_373__away.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Caught up with a few last things today, before I leave for 
-[a week in Boston](http://joeyh.name/trips/2016/boston/).
-
-Converted several places that ran git hash-object repeatedly to feed data
-to a running process. This sped up git-annex add in direct mode and with
-v6 unlocked files, by up to 2x.
diff --git a/doc/devblog/day_374__security_fix.mdwn b/doc/devblog/day_374__security_fix.mdwn
deleted file mode 100644
--- a/doc/devblog/day_374__security_fix.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Pushed out a git-annex release this morning mostly because of the recent
-[[bugs/git_security_fix]]. Several git-annex builds bundle a copy of git and
-needed to be updated. Note that the OSX autobuilder is temporarily down and
-so it's not been updated yet -- hopefully soon.
diff --git a/doc/devblog/day_375__back.mdwn b/doc/devblog/day_375__back.mdwn
deleted file mode 100644
--- a/doc/devblog/day_375__back.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Back from Libreplanet and a week of spring break. Backlog is not too bad
-for two weeks mostly away; 143 messages.
-
-Finally got the OSX app updated for the git security fix yesterday. Had to
-drop builds for old OSX releases.
-
-Getting back into working on adjusted branches now. Polishing up the UI and
-docs today. Nearly ready to merge the feature; the only blocker is there
-seems to be something a little bit wrong with how pulled changes are merged
-into the adjusted branch that I noticed in testing.
diff --git a/doc/devblog/day_376__in_the_weeds.mdwn b/doc/devblog/day_376__in_the_weeds.mdwn
deleted file mode 100644
--- a/doc/devblog/day_376__in_the_weeds.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Spent all day fixing sync in adjusted branches. I was lost in the weeds for
-a long time. Eventually, drawing this diagram helped me find my way
-to a solution:
-
-	origin/master    adjusted/master     master
-	A                                    A
-	|--------------->A'                  |
-	|                |                   |
-	|                C'- - - - - - - - > C
-	B                                    |
-	|                                    |
-	|--------------->M'<-----------------|
-
-After implementing that, syncing in adjusted branches seems to work much
-better now. And I've finally merged support for them into master.
-
-There's still several bugs and race conditions and upgrade things to sort
-out around adjusted branches. Proably another week's work all told.
diff --git a/doc/devblog/day_377__will_adjusted_branches_ever_end.mdwn b/doc/devblog/day_377__will_adjusted_branches_ever_end.mdwn
deleted file mode 100644
--- a/doc/devblog/day_377__will_adjusted_branches_ever_end.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Feels like I've been working on adjusted branches too long.
-
-Did make some excellent progress today. Upgrading a direct mode repo to v6
-will now enter an adjusted branch where all files are unlocked. Using an
-adjusted branch like this avoids unlocking all files in the master branch
-of the repo, which means that different clones of a repo can be
-upgraded to v6 mode at different times. This should let me advance the
-timetable for enabling v6 by default, and getting rid of direct mode.
-
-Also, cloning a repository that has an adjusted branch checked out will
-now work; the clone starts out in the same adjusted branch.
-
-But, I realized today that the way merges from origin/master into
-adjusted/master are done will often lead to merge conflicts. I have came up
-with a better way to handle these merges that won't unncessarily conflict,
-but didn't feel ready to implement that today.
-
-----
-
-Instead, I spent the latter half of the day getting caught up on some
-of the backlog. Got it down from some 200 messages to 150.
diff --git a/doc/devblog/day_378__finishing_adjusted_branches_merge.mdwn b/doc/devblog/day_378__finishing_adjusted_branches_merge.mdwn
deleted file mode 100644
--- a/doc/devblog/day_378__finishing_adjusted_branches_merge.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Well, I had to rethink how merges into adjusted branches should be handled.
-The old method often led to unnecessary merge conflicts. My new approach
-should always avoid unncessary merge conflicts, but it's quite a trick.
-
-To merge origin/master into adjusted/master, it first merges origin/master
-into master. But, since adjusted/master is checked out, it has to do the
-merge in a temporary work tree. Luckily this can be done fairly
-inexpensively. To handle merge conflicts at this stage, git-annex's
-automatic merge conflict resolver is used. This approach wouldn't be
-feasible without a way to automatically resolve merge conflicts, because
-the user can't help with conflict resolution when the merge is not
-happening in their working tree.
-
-Once that out-of-tree merge is done, the result is adjusted, and merged
-into the adjusted branch. Since we know the adjusted branch is a child of
-the old master branch, this merge can be forced to always be a
-fast-forward. This second merge will only ever have conflicts if the work
-tree has something uncommitted in it that causes a merge conflict.
-
-Wow! That's super tricky, but it seems to work well. While I ended up
-throwing away everything I did [[last Thursday|day_376__in_the_weeds]]
-due to this new approach, the code is in some ways simpler than that
-old, busted approach.
diff --git a/doc/devblog/day_379__bugs_race_conditions_and_taxes.mdwn b/doc/devblog/day_379__bugs_race_conditions_and_taxes.mdwn
deleted file mode 100644
--- a/doc/devblog/day_379__bugs_race_conditions_and_taxes.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Think I'm really finished with adjusted branches now. Fixed a bug in
-annex symlink calculation when merging into an adjusted branch. And, fixed
-a race condition involving a push of master from another repository.
-
-While `git annex adjust --unlock` is reason enough to have adjusted
-branches, I do want to at some point look into implementing `git annex
-adjust --hide-missing`, and perhaps rewrite the view branches to use
-adjusted branches, which would allow for updating view branches when
-pulling from a remote.
-
-Also, turns out Windows supports hard links, so I got annex.thin working
-on Windows, as well as a few other things that work better with hard links.
diff --git a/doc/devblog/day_37__long_day.mdwn b/doc/devblog/day_37__long_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_37__long_day.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-A long day of bugfixing. Split into two major parts. First I got back to a
-bug I filed in August to do with the assistant misbehaving when run in a
-subdirectory of a git repository, and did a nice type-driven fix of the
-underlying problem (that also found and fixed some other related bugs that
-would not normally occur). Then, spent 4 hours in Windows purgatory working
-around crazy path separator issues.
diff --git a/doc/devblog/day_380__post_release.mdwn b/doc/devblog/day_380__post_release.mdwn
deleted file mode 100644
--- a/doc/devblog/day_380__post_release.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Yesterday I released version 6.20160412, which is the first to support
-adjusted branches.
-
-Today, some planning for ways to better support `annex.thin`, but that
-seems to be stuck on needing a way to update git's index file. Which is the
-main thing needed to fix various problems with v6 unlocked files.
-
-Dove back into the backlog, got it down to 144 messages. Several bug fixes.
diff --git a/doc/devblog/day_381__executable_unlocked_files.mdwn b/doc/devblog/day_381__executable_unlocked_files.mdwn
deleted file mode 100644
--- a/doc/devblog/day_381__executable_unlocked_files.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Seems I forgot about executable files entirely when implementing v6
-unlocked files. Fixed that oversight today.
diff --git a/doc/devblog/day_382-384__pretty_well_caught_up.mdwn b/doc/devblog/day_382-384__pretty_well_caught_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_382-384__pretty_well_caught_up.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-The past three days have felt kind of low activity days, but somehow a lot
-of stuff still got done, both bug fixes and small features, and I am
-feeling pretty well caught up with backlog for the first time in over a
-month. Although as always there is some left, 110 messages.
-
-On Monday I fixed a bug that could cause a hang when dropping content, if
-git-annex had to verify the content was present on a ssh remote. That bug
-was bad enough to make an immediate release for, even though it was only a
-week since the last release.
diff --git a/doc/devblog/day_385__new_features.mdwn b/doc/devblog/day_385__new_features.mdwn
deleted file mode 100644
--- a/doc/devblog/day_385__new_features.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Something that has come up repeatedly is that `git annex reinject` is
-too hard to use since you have to tell it which annexed file you're providing
-the content for. Now `git-annex reinject --known` can be passed a list of
-files and it will reinject any that hash to known annexed contents
-and ignore the rest. That works best when only one backend is used in a 
-repository; otherwise it would need to be run repeatedly with different
-`--backend` values.
-
-Turns out that the `GIT_COMMON_DIR` feature used by adjusted branches
-is only a couple years old, so don't let adjusted branches be used with
-a too old git.
-
-And, `git merge` is getting a new sanity check that prevents merging
-in a branch with a disconnected history. `git annex sync` will inherit that
-sanity check, but the assistant needs to let such merges happen when eg,
-pairing repositories, so more git version checking there.
diff --git a/doc/devblog/day_386__day_off.mdwn b/doc/devblog/day_386__day_off.mdwn
deleted file mode 100644
--- a/doc/devblog/day_386__day_off.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-I'm on a long weekend. This did not prevent git-annex from getting an
-impressive lot of features though, as Daniel Dent contributed
-<https://github.com/DanielDent/git-annex-remote-rclone> which uses
-[rclone](http://rclone.org/) to add support for a ton of additional cloud
-storage things, including: 
-
-Google Drive, Openstack Swift, Rackspace cloud files, Memset Memstore, Dropbox,
-Google Cloud Storage, Amazon Cloud Drive, Microsoft One Drive, Hubic, Backblaze
-B2, Yandex Disk
-
-Wow! I hope that rclone will end up packaged in more distributions (eg Debian)
-so this will be easier to set up.
diff --git a/doc/devblog/day_387__release_day.mdwn b/doc/devblog/day_387__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_387__release_day.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-git-annex 6.20160419 has a rare security fix.
-A [bug](http://git-annex.branchable.com/bugs/External_special_remote_broken__63__/) made encrypted special
-remotes that are configured to use chunks accidentially expose the checksums
-of content that is uploaded to the remote. Such information is supposed to
-be hidden from the remote's view by the encryption. The same bug also made
-resuming interrupted uploads to such remotes start over from the beginning.
-
-After releasing that, I've been occupied today with fixing the Android
-autobuilder, which somehow got its build environment broken (unsure how),
-and fixing some other dependency issues.
diff --git a/doc/devblog/day_388-389__various_and_windows.mdwn b/doc/devblog/day_388-389__various_and_windows.mdwn
deleted file mode 100644
--- a/doc/devblog/day_388-389__various_and_windows.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Lots of little fixes and improvements here and there over the past couple
-days.
-
-The main thing was fixing several bugs with adjusted branches and Windows.
-They seem to work now, and commits made on the adjusted branch are
-propigated back to master correctly.
-
-It would be good to finish up the last todos for v6 mode this month.
-The sticking point is I need a way to update the file stat in the git index
-when git-annex gets/drops/etc an unlocked file. I have not decided yet if
-it makes the most sense to add a dependency on libgit2 for that, or extend
-`git update-index`, or even write a pure haskell library to manipulate
-index files. Each has its pluses and its minuses.
diff --git a/doc/devblog/day_38__starting_git_repo_repair.mdwn b/doc/devblog/day_38__starting_git_repo_repair.mdwn
deleted file mode 100644
--- a/doc/devblog/day_38__starting_git_repo_repair.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Goal for the rest of the month is to build automatic recovery git
-repository corruption. Spent today investigating how to do it and came up
-with a fairly [[detailed_design|design/assistant/disaster_recovery]]. It
-will have two parts, first to handle repository problems that can be fixed
-by fetching objects from remotes, and secondly to recover from problems
-where data never got sent to a remote, and has been lost.
-
-In either case, the assistant should be able to detect the problem and
-automatically recover well enough to keep running. Since this also affects
-non-git-annex repositories, it will also be available in a standalone
-`git-recover-repository` command.
diff --git a/doc/devblog/day_390__sharedpubkey.mdwn b/doc/devblog/day_390__sharedpubkey.mdwn
deleted file mode 100644
--- a/doc/devblog/day_390__sharedpubkey.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-It's not every day I add a new special remote encryption mode to
-git-annex! The new encryption=sharedpubkey mode
-lets anyone with a clone of the git repository (and access to the remote)
-store files in the remote, but then only the private key owner can access
-those files. Which opens up some interesting new use cases...
diff --git a/doc/devblog/day_39__git-recover-repository.mdwn b/doc/devblog/day_39__git-recover-repository.mdwn
deleted file mode 100644
--- a/doc/devblog/day_39__git-recover-repository.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-Built a `git-recover-repository` command today. So far it only does the
-detection and deletion of corrupt objects, and retrieves them from remotes
-when possible. No handling yet of missing objects that cannot be recovered
-from remotes.
-
-Here's a couple of sample runs where I do bad things to the git
-repository and it fixes them:
-
-<pre>
-joey@darkstar:~/tmp/git-annex>chmod 644 .git/objects/pack/*
-joey@darkstar:~/tmp/git-annex>echo > .git/objects/pack/pack-a1a770c1569ac6e2746f85573adc59477b96ebc5.pack 
-joey@darkstar:~/tmp/git-annex>~/src/git-annex/git-recover-repository 
-Running git fsck ...
-git fsck found a problem but no specific broken objects. Perhaps a corrupt pack file? Unpacking all pack files.
-fatal: early EOF
-Unpacking objects: 100% (148/148), done.
-Unpacking objects: 100% (354/354), done.
-Re-running git fsck to see if it finds more problems.
-Re-running git fsck to see if it finds more problems.
-Initialized empty Git repository in /home/joey/tmp/tmprepo.0/.git/
-Trying to recover missing objects from remote origin
-Successfully recovered repository!
-You should run "git fsck" to make sure, but it looks like
-everything was recovered ok.
-</pre>
-
-----
-
-<pre>
-joey@darkstar:~/tmp/git-annex>chmod 644 .git/objects/00/0800742987b9f9c34caea512b413e627dd718e
-joey@darkstar:~/tmp/git-annex>echo > .git/objects/00/0800742987b9f9c34caea512b413e627dd718e
-joey@darkstar:~/tmp/git-annex>~/src/git-annex/git-recover-repository 
-Running git fsck ...
-error: unable to unpack 000800742987b9f9c34caea512b413e627dd718e header
-error: inflateEnd: stream consistency error (no message)
-error: unable to unpack 000800742987b9f9c34caea512b413e627dd718e header
-error: inflateEnd: stream consistency error (no message)
-git fsck found 1 broken objects. Unpacking all pack files.
-removing 1 corrupt loose objects
-Re-running git fsck to see if it finds more problems.
-Re-running git fsck to see if it finds more problems.
-Initialized empty Git repository in /home/joey/tmp/tmprepo.0/.git/
-Trying to recover missing objects from remote origin
-Successfully recovered repository!
-You should run "git fsck" to make sure, but it looks like
-everything was recovered ok.
-</pre>
-
-Works great! I need to move this and `git-union-merge` out of the git-annex
-source tree sometime.
-
-----
-
-Today's work was sponsored by Francois Marier.
diff --git a/doc/devblog/day_3__gcrypt_uuids.mdwn b/doc/devblog/day_3__gcrypt_uuids.mdwn
deleted file mode 100644
--- a/doc/devblog/day_3__gcrypt_uuids.mdwn
+++ /dev/null
@@ -1,63 +0,0 @@
-Started work on [gcrypt](https://github.com/blake2-ppc/git-remote-gcrypt)
-support.
-
-The first question is, should git-annex leave it up to gcrypt to transport
-the data to the encrypted repository on a push/pull? gcrypt hooks into git
-nicely to make that just work. However, if I go this route, it limits
-the places the encrypted git repositores can be stored to regular git
-remotes (and rsync). The alternative is to somehow use gcrypt to
-generate/consume the data, but use the git-annex special remotes to store
-individual files. Which would allow for a git repo stored on S3, etc.
-For now, I am going with the simple option, but I have not ruled out
-trying to make the latter work. It seems it would need changes to gcrypt
-though.
-
-Next question: Given a remote that uses gcrypt, how do I determine the
-annex.uuid of that repository. I found a nice solutuon to this. gcrypt has
-its own gcrypt-id, and I convert it to a UUID in a 
-[[reproducible, and even standards-compliant way|design/gcrypt]]. So
-the same encrypted remote will automatically get the same annex.uuid
-wherever it's used. Nice. Does mean that git-annex cannot find a uuid
-until `git pull` or `git push` has been used, to let gcrypt get the
-gcrypt-id. Implemented that.
-
-The next step is actually making git-annex store data on gcrypt remotes.
-And it needs to store it encrypted of course. It seems best to avoid
-needing a `git annex initremote` for these gcrypt remotes, and just have
-git-annex automatically encrypt data stored on them. But I don't
-know. Without initializing them like a special remote is, I'm limited to
-using the gpg keys that gcrypt is configured to encrypt to, and cannot use
-the regular git-annex hybrid encryption scheme. Also, I need to generate
-and store a nonce anyway to HMAC ecrypt keys. (Or modify gcrypt
-to put enough entropy in gcrypt-id that I can use it?) 
-
-Another concern I have is that gcrypt's own encryption scheme is simply
-to use a list of public keys to encrypt to. It would be nicer if the
-full set of git-annex encryption schemes could be used. Then the webapp
-could use shared encryption to avoid needing to make the user set up a gpg
-key, or hybrid encryption could be used to add keys later, etc.
-
-But I see why gcrypt works the way it does. Otherwise, you can't make an
-encrypted repo with a friend set as one of the particpants and have them be
-able to git clone it. Both hybrid and shared encryption store a secret
-inside the repo, which is not accessible if it's encrypted using that
-secret. There are use cases where not being able to blindly clone a gcrypt
-repo would be ok. For example, you use the assistant to pair with a friend
-and then set up an encrypted repo in the cloud for both of you to use.
-
-Anyway, for now, I will need to deal with
-setting up gpg keys etc in the assistant. I don't want to tackle
-full [[design/assistant/gpgkeys]] yet. Instead, I think I will start by
-adding some simple stuff to the assistant:
-
-* When adding a USB drive, offer to encrypt the repository on the drive
-  so that only you can see it.
-* When adding a ssh remote make a similar offer.
-* Add a UI to add an arbitrary git remote with encryption.
-  Let the user paste in the url to an empty remote they have,
-  which could be to eg github. (In most cases this won't be used for
-  annexed content..)
-* When the user has no gpg key, prompt to set one up. (Securely!)
-* Maybe have an interface to add another gpg key that can access the gcrypt
-  repo. Note that this will need to re-encrypt and re-push the whole
-  git history.
diff --git a/doc/devblog/day_40__another_fine_mess.mdwn b/doc/devblog/day_40__another_fine_mess.mdwn
deleted file mode 100644
--- a/doc/devblog/day_40__another_fine_mess.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Solid day of working on repository recovery. Got `git recover-repository
---force` working, which involves fixing up branches that refer to missing
-objects. Mostly straightforward traversal of git commits, trees, blobs, to
-find when a branch has a problem, and identify an old version of it that
-predates the missing object. (Can also find them in the reflog.) 
-
-The main complication turned out to be that `git branch -D` and `git
-show-ref` don't behave very well when the commit objects pointed to by refs
-are themselves missing. And git has no low-level plumbing that avoids
-falling over these problems, so I had to write it myself.
-
-Testing has turned up one unexpected problem: Git's index can itself refer
-to missing objects, and that will break future commits, etc. So I need to
-find a way to validate the index, and when it's got problems,
-either throw it out, or possibly recover some of the staged data from it.
diff --git a/doc/devblog/day_41__onward.mdwn b/doc/devblog/day_41__onward.mdwn
deleted file mode 100644
--- a/doc/devblog/day_41__onward.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-I think that git-recover-repository is ready now. Made it deal with the
-index file referencing corrupt objects. The best approach I could think of
-for that is to just remove those objects from the index, so the user can
-re-add files from their work tree after recovery.
-
-Now to integrate this git repository repair capability into the git-annex 
-assistant. I decided to run `git fsck` as part of a scheduled
-repository consistency check. It may also make sense for the assistant to
-notice when things are going wrong, and suggest an immediate check. I've
-started on the webapp UI to run a repository repair when fsck detects
-problems.
-
-[[!img /assistant/brokenrepositoryalert.png]]
-
-[[!img /assistant/repairrepository.png]]
-
-[[!meta title="the user interface I hope noone ever sees"]]
diff --git a/doc/devblog/day_42__repair_milestone.mdwn b/doc/devblog/day_42__repair_milestone.mdwn
deleted file mode 100644
--- a/doc/devblog/day_42__repair_milestone.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-The webapp now fully handles repairing damage to the repository.
-
-Along with all the git repository repair stuff already built, I added
-additional repairs of the git-annex branch and git-annex's index file.
-That was pretty easy actually, since git-annex already handles merging
-git-annex branches that can sometimes be quite out of date. So when git repo
-repair has to throw away recent changes to the git-annex branch, it just
-effectively becomes out of date. Added a `git annex fsck --fast` run to
-ensure that the git-annex branch reflects the current state of the
-repository.
-
-When the webapp runs a repair, it first stops the assistant from committing
-new files. Once the repair is done, that's started back up, and it runs a
-startup scan, which is just what is needed in this sitation; it will add
-any new files, as well as any old files that the git repository damange
-caused to be removed from the index.
-
-Also made `git annex repair` run the git repository repair code, 
-for those with a more command-line bent. It can be used in non-git-annex
-repos too!
-
-----
-
-So, I'm nearly ready to wrap up working on disaster recovery. Lots has been
-accomplished this month. And I have put off making a release for entirely
-too long!
-
-The big missing piece is repair of git remotes located on removable drive.
-I may make a release before adding that, but removable drives are probably
-where git repository corruption is most likely to occur, so I certainly
-need to add that.
-
-----
-
-Today's work was sponsored by Scott Robinson.
diff --git a/doc/devblog/day_43__bugfix_day.mdwn b/doc/devblog/day_43__bugfix_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_43__bugfix_day.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Got well caught up on bug fixes and traffic. Backlog is down to 40.
-
-Made the assistant wait for a few seconds before doing the startup
-scan when it's autostarted, since the desktop is often busy starting
-up at that same time.
-
-Fixed an ugly bug with chunked webdav and directory special remotes
-that caused it to not write a "chunkcount" file when storing data,
-so it didn't think the data was present later. I was able to make it
-recover nicely from that mistake, by probing for what chunks are actually
-present.
-
-Several people turn out to have had problems with `git annex sync` not
-working because receive.denyNonFastForwards is enabled. I made the webapp
-not enable it when setting up a ssh repository, and I made `git annex sync`
-print out a hint about this when it's failed to push. (I don't think this
-problem affects the assistant's own syncing.)
-
-Made the assistant try to repair a damaged git repository without
-prompting. It will only prompt when it fails to fetch all the lost
-objects from remotes.
-
-Glad to see that others have managed to 
-[get git-annex to build on Max OS X 10.9](http://git-annex.branchable.com/bugs/git_annex_doesn__39__t_work_in_Max_OS_X_10.9/#comment-8e8ee5e50506a6fde029d236f4809df8). 
-Now I just need someone to offer up a ssh account on that OS, and I could
-set up an autobuilder for it.
diff --git a/doc/devblog/day_44__automatic_removable_drive_repair.mdwn b/doc/devblog/day_44__automatic_removable_drive_repair.mdwn
deleted file mode 100644
--- a/doc/devblog/day_44__automatic_removable_drive_repair.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Finally got the assistant to repair git repositories on removable drives,
-or other local repos. Mostly this happens entirely automatically, whatever
-data in the git repo on the drive has been corrupted can just be copied
-to it from `~/annex/.git`.
-
-And, the assistant will launch a git fsck of such a repo whenever it fails
-to sync with it, so the user does not even need to schedule periodic fscks.
-Although it's still a good idea, since some git repository problems don't
-prevent syncing from happening.
-
-Watching git annex heal problems like this is quite cool!
-
-One thing I had to defer till later is repairing corrupted gcrypt
-repositories. I don't see a way to do it without deleting all the objects
-in the gcrypt repository, and re-pushing everything. And even doing that
-is tricky, since the `gcrypt-id` needs to stay the same.
diff --git a/doc/devblog/day_45__command_line.mdwn b/doc/devblog/day_45__command_line.mdwn
deleted file mode 100644
--- a/doc/devblog/day_45__command_line.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-All command line stuff today..
-
-Added --want-get and --want-drop, which can be used to test preferred content settings
-of a repository. For example `git annex find --in . --want-drop` will list the same
-files that `git annex drop --auto` would try to drop. (Also renamed `git annex content`
-to `git annex wanted`.)
-
-Finally laid to rest problems with `git annex unannex` when multiple files point to the
-same key. It's a lot slower, but I'll stop getting bug reports about that.
diff --git a/doc/devblog/day_46__wrapping_up_the_month.mdwn b/doc/devblog/day_46__wrapping_up_the_month.mdwn
deleted file mode 100644
--- a/doc/devblog/day_46__wrapping_up_the_month.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Spent today reviewing my [[plans_for_the_month|assistant/disaster_recovery]]
-and filling in a couple of missing peices.
-
-Noticed that I had forgotten to make repository repair clean up any stale
-git locks, despite writing that code at the beginning of the month, and
-added that in.
-
-Made the webapp notice when a repository that is being used does not have
-any consistency checks configured, and encourage the user to set up checks.
-This happens when the assistant is started (for the local repository),
-and when removable drives containing repositories are plugged in. If the
-reminders are annoying, they can be disabled with a couple clicks.
-
-And I think that just about wraps up the month. (If I get a chance, I would
-still like to add recovery of git-remote-gcrypt encrypted git repositories.)
-
-My [[design/roadmap]] has next month dedicated to user-driven features
-and polishing and bugfixing.
diff --git a/doc/devblog/day_47__fell_off_the_blogging_wagon.mdwn b/doc/devblog/day_47__fell_off_the_blogging_wagon.mdwn
deleted file mode 100644
--- a/doc/devblog/day_47__fell_off_the_blogging_wagon.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Low activity the past couple of days. Released a new version of git-annex
-yesterday. Today fixed three bugs (including a local pairing one that was
-pretty compicated) and worked on getting caught up with traffic.
diff --git a/doc/devblog/day_48__direct_mode_guard_design.mdwn b/doc/devblog/day_48__direct_mode_guard_design.mdwn
deleted file mode 100644
--- a/doc/devblog/day_48__direct_mode_guard_design.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-I've been investigating ways to implement a [[/todo/direct_mode_guard]].
-Preventing a stray `git commit -a` or `git add` doing bad things in a
-direct mode repository seems increasingly important.
-
-First, considered moving `.git`, so git won't know it's a git repository.
-This doesn't seem *too* hard to do, but there will certainly be unexpected
-places that assume `.git` is the directory name.
-
-I dislike it more and more as I think about it though, because it moves
-direct mode git-annex toward being entirely separate from git, and I don't
-want to write my own version control system. Nor do I want to complicate
-the git ecosystem with tools needing to know about git-annex to work in
-such a repository.
-
-So, I'm happy that one of the other ideas I tried today seems quite
-promising. Just set core.bare=true in a direct mode repository. This nicely
-blocks all git commands that operate on the working tree from doing
-anything, which is just what's needed in direct mode, since they don't know
-how to handle the direct mode files. But it lets all git commands and other
-tools that don't touch the working tree continue to be used. You can even
-run `git log file` in such a repository (surprisingly!)
-
-It also gives an easy out for anyone who really wants to use git commands
-that operate on the work tree of their direct mode repository, by just
-passing `-c core.bare=false`. And it's really easy to implement in
-git-annex too -- it can just notice if a repo has core.bare and
-annex.direct both set, and pass that parameter to every git command it
-runs. I should be able to get by with only modifying 2 functions to
-implement this.
diff --git a/doc/devblog/day_49__direct_mode_guard_implementation.mdwn b/doc/devblog/day_49__direct_mode_guard_implementation.mdwn
deleted file mode 100644
--- a/doc/devblog/day_49__direct_mode_guard_implementation.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Long, long day coding up the direct mode guard today. About 90% of the fun
-is dealing with `receive.denyCurrentBranch` not preventing pushes that
-change the current branch, now that core.bare is set in direct mode.
-My current solution to this involves using a special branch when using
-direct mode, which nothing will ever push to (hopefully). A much nicer
-solution would be to use a `update` hook to deny pushes of the current
-branch -- but there are filesystems where repos cannot have git hooks.
-
-The test suite is falling over, but the `directguard` branch otherwise
-seems usable.
-
-----
-
-Today's work was sponsored by Carlo Matteo Capocasa.
diff --git a/doc/devblog/day_4__unexpected_windows_day.mdwn b/doc/devblog/day_4__unexpected_windows_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_4__unexpected_windows_day.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Woke up with a pretty solid plan for gcrypt. It will be structured as a
-separate special remote, so `initremote` will be needed, with a gitrepo=
-parameter (unless the remote already exists). git-annex will then set up
-the git remote, including pushing to it (needed to get a gcrypt-id).
-
-Didn't feel up to implementing that today. Instead I expectedly spent
-the day doing mostly Windows work, including setting up a VM on my new
-laptop for development. Including a ssh server in Windows, so I can
-script local builds and tests on Windows without ever having to
-touch the desktop. Much better!
diff --git a/doc/devblog/day_50__grab_bag.mdwn b/doc/devblog/day_50__grab_bag.mdwn
deleted file mode 100644
--- a/doc/devblog/day_50__grab_bag.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Started by tracking down a strange bug that was apparently
-ubuntu-specific and caused git-annex branch changes to get committed to
-master. Root cause turned out to failing to recover from an
-exception. I'm kicking myself about that, because I remember looking at the
-code where the bug was at least twice before and thinking "hmm, should add
-exception handling here? nah..". Exceptions are horrible.
-
-Made a release with a fix for that and a few minor other accumulated
-changes since last Friday's release. The pain point of this release is to
-fix building without the webapp (so it will propigate to Debian testing,
-etc). This release does not include the direct mode guard, so I'll have a
-few weeks until the next release to get that tested.
-
-Fixed the test suite in `directguard`. This branch is now nearly ready to
-merge to master, but one command that is badly needed in guarded direct
-mode is "git status". So I am planning to rename "git annex status" to
-"git annex info", and make "git annex status" display something similar
-to "git status".
-
-Also took half an hour and added optional [[EKG]] support to git-annex.
-This is a Haskell library that can add a terrific monitoring console web
-UI to any program in 2 lines of code. Here we can see the git-annex
-webapp using resources at startup, followed in a few seconds by the
-assistant's startup scan of the repository.
-
-[[!img ekg/ekg.png]]
-
-BTW, Kevin tells me that the machine used to build git-annex for OSX is
-going to be upgraded to 10.9 soon. So, hopefully I'll be making autobuilds
-of that. I may have to stop the 10.8.2 autobuilds though.
-
-----
-
-Today's work was sponsored by [Protonet](http://protonet.info/).
diff --git a/doc/devblog/day_51__direct_mode_guard_finished.mdwn b/doc/devblog/day_51__direct_mode_guard_finished.mdwn
deleted file mode 100644
--- a/doc/devblog/day_51__direct_mode_guard_finished.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Finished the direct mode guard, including the new `git annex status`
-command.
-
-Spent the rest of the day working on various bug fixes. One of them turned
-into rather a lot of work to make the webapp's UI better for git
-remotes that do not have an annex.uuid.
diff --git a/doc/devblog/day_52__slowly_but_surely.mdwn b/doc/devblog/day_52__slowly_but_surely.mdwn
deleted file mode 100644
--- a/doc/devblog/day_52__slowly_but_surely.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Been chipping away at my backlog of messages, and it's down to 23 items.
-
-Finally managed to get ghc to build with a newer version of the NDK.
-This *might* mean a solution to git-annex on Android 4.2. I 
-[need help with testing](http://git-annex.branchable.com/bugs/git-annex_broken_on_Android_4.3/#comment-90b82735cd6090a7765f423b743fffd3).
diff --git a/doc/devblog/day_54__android_bisection_minions.mdwn b/doc/devblog/day_54__android_bisection_minions.mdwn
deleted file mode 100644
--- a/doc/devblog/day_54__android_bisection_minions.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Finally found the [root cause](http://git-annex.branchable.com/bugs/git-annex_broken_on_Android_4.3/#comment-452bee7d0a816300ccb4a34f9758134e)
-of the Android 4.3/4.4 trouble, and a fix is now in place!
-
-As a bonus, it looks like I've fixed a problem accessing the
-environment on Android that had been worked around in an ugly way before.
-
-Big thanks to my remote hands Michael Alan, Sören, and subito. All
-told they ran 19 separate tests to help me narrow down this tricky
-problem, often repeating long command lines on software keyboards.
diff --git a/doc/devblog/day_55__fireside_porting.mdwn b/doc/devblog/day_55__fireside_porting.mdwn
deleted file mode 100644
--- a/doc/devblog/day_55__fireside_porting.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Annoyingly, the Android 4.3 fix breaks git-annex on Android 4.0 (probably
-through 4.2), so I now have two separate builds of the Android app.
-
----
-
-Worked on Windows porting today. I've managed to get the assistant
-and watcher (but not yet webapp) to build on Windows.
-The `git annex transferrer` interface needs POSIX stuff, and seems to be
-the main thing that will need porting for Windows for the assistant to
-work, besides of course file change detection. For that, I've hooked up
-[Win32-notify](http://hackage.haskell.org/package/Win32-notify).
-
-So the watcher might work on Windows. 
-At least in theory. Problem is, while all the code builds ok, 
-it fails to link:
-
-	ghc.exe: could not execute: C:\Program Files (x86)\Haskell Platform\2012.4.0.0\lib/../mingw/bin/gcc.exe
-
-I wonder if this is case of too many parameters being passed?
-
-This happens both on the autobuilder and on my laptop, so I'm stuck here.
-Oh well, I was not planning to work on this anyway until February...
diff --git a/doc/devblog/day_56__git-annex_user_survey.mdwn b/doc/devblog/day_56__git-annex_user_survey.mdwn
deleted file mode 100644
--- a/doc/devblog/day_56__git-annex_user_survey.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-One of my goals for this month is to get a better sense of how git-annex is
-being used, how it's working out for people, and what areas need to be
-concentrated on. To start on that, I am doing the 
-[2013 git-annex user survey](http://git-annex-survey.branchable.com/polls/2013/), similar to the git user
-surveys. I will be adding some less general polls later (suggestions for
-topics appreciated!), but you can go vote in any or all of 10 polls now.
-
-----
-
-Found a workaround for yesterday's Windows build problem. Seems that only
-cabal runs gcc in a way that fails, so `ghc --make` builds is successfully.
-However, the watcher doesn't quite work on Windows. It does get events when
-files are created, but it seems to then hang before it can add the file to
-git, or indeed finish printing out a debug log message about the event.
-This looks like it could be a problem with the threaded ghc runtime on
-Windows, or something like that.
-
-Main work today was improving the git repository repair to handle corrupt
-index files. The assistant can now start up, detect that the index file is
-corrupt, and regenerate it all automatically.
diff --git a/doc/devblog/day_57__mavericks.mdwn b/doc/devblog/day_57__mavericks.mdwn
deleted file mode 100644
--- a/doc/devblog/day_57__mavericks.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-The user survey is producing some interesting and useful results!  
-Added two more polls: [using with](http://git-annex-survey.branchable.com/polls/2013/using_with/) and [blocking problems](http://git-annex-survey.branchable.com/polls/2013/blocking_problems/)  
-(There were some load issues so if you were unable to vote yesterday, try
-again..)
-
-Worked on getting the autobuilder for OS X Mavericks set up. Eventually
-succeeded, after patching a few packages to work around a cpp that thinks
-it should parse haskell files as if they're C code.
-Also, Jimmy has resuscitated the OS X Lion autobuilder.
-
-A not too bad bug in automatic merge conflict resolution has been reported,
-so I will need to dig into that tomorrow. Didn't feel up to it today, so
-instead have been spending the remaining time finishing up a branch that
-switches the test suite to use the tasty test framework.
diff --git a/doc/devblog/day_58__urgle.mdwn b/doc/devblog/day_58__urgle.mdwn
deleted file mode 100644
--- a/doc/devblog/day_58__urgle.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Fixed two difficult bugs with direct mode. One happened (sometimes) when a
-file was deleted and replaced with a directory by the same name and then
-those changes were merged into a direct mode repository.
-
-The other problem was that direct mode did not prevent writes to
-.git/annex/objects the way that indirect mode does, so when a file in the
-repository was not currently present, writing to the dangling symlink would
-follow it and write into the object directory.
-
-Hmm, I was going to say that it's a pity that direct mode still has so many
-bugs being found and fixed, but the last real bug fix to direct mode was
-made last May! Instead, I probably have to thank Tim for being a very
-thorough tester.
-
-Finished switching the test suite to use the tasty framework, and prepared
-tasty packages for Debian.
diff --git a/doc/devblog/day_59__release_day.mdwn b/doc/devblog/day_59__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_59__release_day.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Release today, right on bi-weekly schedule. Rather startled
-at the size of the changelog for this one; along with the direct mode
-guard, it adds support for OS X Mavericks, Android 4.3/4.4, and fixes
-numerous bugs.
-
-Posted another question in the survey,
-<http://git-annex-survey.branchable.com/polls/2013/roadmap/>.
-
-Spun off git-repair as an independant package from git-annex. Of course,
-most of the source code is shared with git-annex. I need to do something
-with libraries eventually..
diff --git a/doc/devblog/day_5__gcrypt_special_remote_part_1.mdwn b/doc/devblog/day_5__gcrypt_special_remote_part_1.mdwn
deleted file mode 100644
--- a/doc/devblog/day_5__gcrypt_special_remote_part_1.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-About half way done with a gcrypt special remote. I can initremote it (the
-hard part to get working), and can send files to it. Can't yet get files
-back, or remove files, and only local repositories work so far, but this is
-enough to know it's going to be pretty nice!
-
-Did find one issue in gcrypt that I may need to develop a patch for:
-<https://github.com/blake2-ppc/git-remote-gcrypt/issues/3>
diff --git a/doc/devblog/day_60__damage_driven_development.mdwn b/doc/devblog/day_60__damage_driven_development.mdwn
deleted file mode 100644
--- a/doc/devblog/day_60__damage_driven_development.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Wrote some evil code you don't want to run today. Git.Destroyer randomly
-generates Damage, and applies it to a git repository, in a way that is
-reproducible -- applying the same Damage to clones of the same git repo 
-will always yeild the same result.
-
-This let me build a test harness for git-repair, which repeatedly clones,
-damages, and repairs a repository. And when it fails, I can just ask it to
-retry after fixing the bug and it'll re-run every attempt it's logged.
-
-This is already yeilding improvements to the git-repair code.
-The first randomly constructed Damage that it failed to recover
-turned out to be a truncated index file that hid some other
-corrupted object files from being repaired.
-
-	[Damage Empty (FileSelector 1),
-	 Damage Empty (FileSelector 2),
-	 Damage Empty (FileSelector 3),
-	 Damage Reverse (FileSelector 3),
-	 Damage (ScrambleFileMode 3) (FileSelector 5),
-	 Damage Delete (FileSelector 9),
-	 Damage (PrependGarbage "¥SOH¥STX¥ENQ¥f¥a¥ACK¥b¥DLE¥n") (FileSelector 9),
-	 Damage Empty (FileSelector 12),
-	 Damage (CorruptByte 11 25) (FileSelector 6),
-	 Damage Empty (FileSelector 5),
-	 Damage (ScrambleFileMode 4294967281) (FileSelector 14)
-	]
-
-I need to improve the ranges of files that it damages -- currently QuickCheck
-seems to only be selecting one of the first 20 or so files. Also, it's quite
-common that it will damage `.git/config` so badly that git thinks it's not
-a git repository anymore. I am not sure if that is something `git-repair`
-should try to deal with.
-
----
-
-Today's work was sponsored by the WikiMedia Foundation.
diff --git a/doc/devblog/day_61__damage_driven_development__II.mdwn b/doc/devblog/day_61__damage_driven_development__II.mdwn
deleted file mode 100644
--- a/doc/devblog/day_61__damage_driven_development__II.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Pushed out a minor release of git-annex today, mostly to fix build problems
-on Debian. No strong reason to upgrade to it otherwise.
-
-Continued where I left off with the Git.Destroyer. Fixed quite a lot of
-edge cases where git repair failed due to things like a corrupted .git/HEAD
-file (this makes git think it's not in a git repository), corrupt
-git objects that have an unknown object type and so crash git hard, and
-an interesting failure mode where git fsck wants to allocate 116 GB of
-memory due to a corrupted object size header. Reported that last to the git
-list, as well as working around it.
-
-At the end of the day, I ran a test creating 10000 corrupt git
-repositories, and **all** of them were recovered! Any improvements will
-probably involve finding new ways to corrupt git repositories that my code
-can't think of. ;)
diff --git a/doc/devblog/day_62__upgrade_alerts.mdwn b/doc/devblog/day_62__upgrade_alerts.mdwn
deleted file mode 100644
--- a/doc/devblog/day_62__upgrade_alerts.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Still working on the git repair code. Improved the test suite, which found
-some more bugs, and so I've been running tests all day and occasionally
-going and fixing a bug in the repair code. The hardest part of repairing a
-git repo has turned out to be reliably determining which objects in it are
-broken. Bugs in git don't help (but the git devs are going to fix the one I
-reported).
-
-But the interesting new thing today is that I added some upgrade alert code
-to the webapp. Ideally everyone would get git-annex and other software as
-part of an OS distribution, which would include its own upgrade system -- 
-But the  [survey](http://git-annex-survey.branchable.com/polls/2013/how_installed/)
-tells me that a quarter of installs are from the prebuilt binaries I
-distribute.
-
-So, those builds are going to be built with knowledge of an upgrade url,
-and will periodically download a small info file (over https) to see if a
-newer version is available, and show an alert.
-
-I think all that's working, though I have not yet put the info files in
-place and tested it. The actual upgrade process will be a manual
-download and reinstall, to start with, and then perhaps I'll automate it
-further, depending on how hard that is on the different platforms.
diff --git a/doc/devblog/day_63__leverage.mdwn b/doc/devblog/day_63__leverage.mdwn
deleted file mode 100644
--- a/doc/devblog/day_63__leverage.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-The difference picking the right type can make! Last night, I realized that
-the where I had a `distributionSha256sum :: String`, I should instead use
-`distributionKey :: Key`. This means that when git-annex is eventually
-downloading an upgrade, it can treat it as just another Key being
-downloaded from the web. So the webapp will show that transfer along with
-all the rest, and I can leverage tons of code for a new purpose. For
-example, it can simply fsck the key once it's downloaded to verify its
-checksum.
-
-Also, built a DistriutionUpdate program, which I'll run to generate the
-info files for a new version. And since I keep git-annex releases in a
-git-annex repo, this too leverages a lot of git-annex modules, and ended up
-being just 60 easy lines of code. The upgrade notification code is tested
-and working now.
-
-And, I made the assistant detect when the git-annex program binary is
-replaced or modified. Used my existing DirWatcher code for that. The plan
-is to restart the assistant on upgrade, although I need to add some sanity
-checks (eg, reuse the lsof code) first. And yes, this will work even for
-`apt-get upgrade`!
-
-----
-
-Today's work was sponsored by Paul Tötterman
diff --git a/doc/devblog/day_64__overkill.mdwn b/doc/devblog/day_64__overkill.mdwn
deleted file mode 100644
--- a/doc/devblog/day_64__overkill.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Completely finished up with making the assistant detect when git-annex's
-binary has changed and handling the restart.
-
-It's a bit tricky because during an upgrade there can be two assistant
-daemons running at the same time, in the same repository. Although I
-disable the watcher of the old one first. Luckily, git-annex has long
-supported running multiple concurrent git-annex processes in the same
-repository.
-
-The surprisingly annoying part turned out to be how to make the webapp
-redirect the browser to the new url when it's upgraded. Particularly needed
-when automatic upgrades are enabled, since the user will not then be taking
-any action in the webapp that could result in a redirect. My solution to this
-feels like overkill; the webapp does ajax long polling until it gets an
-url, and then redirects to it. Had to write javascript code and ugh.
-
-But, that turned out to also be useful when manually restarting the webapp
-(removed some horrible old code that ran a shell script to do it before),
-and also when shutting the webapp down.
-
-[[!img assistant/downloadupgrade.png alt="assistant downloading an upgrade to itself"]]
-
-Getting back to upgrades, I have the assistant downloading the upgrade, and
-running a hook action once the key is transferred. Now all I need is some
-platform-specific code to install it. Will probably be hairy, especially on
-OSX where I need to somehow unmount the old git-annex dmg and mount the new
-one, from within a program running on the old dmg.
-
-----
-
-Today's work was sponsored by Evan Deaubl.
diff --git a/doc/devblog/day_65__wrapping_up_upgrades.mdwn b/doc/devblog/day_65__wrapping_up_upgrades.mdwn
deleted file mode 100644
--- a/doc/devblog/day_65__wrapping_up_upgrades.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-[[!img assistant/upgradecomplete.png]]
-
-Upgrades are fully working on Linux. OSX code is written but intested and I
-thought of one bug it certainly has on my evening walk. Probably another
-hour's work left later this evening to finish it off.
diff --git a/doc/devblog/day_66__upgrade_testing.mdwn b/doc/devblog/day_66__upgrade_testing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_66__upgrade_testing.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Upgrades should be working on OSX Mavericks, Linux, and sort of on Android.
-This needs more testing, so I have temporarily made the daily builds think
-they are an older version than the last git-annex release. So when you
-install a daily build, and start the webapp, it should try to upgrade
-(really downgrade) to the last release. Tests appreciated.
-
-Looking over the whole upgrade code base, it took 700 lines of code
-to build the whole thing, of which 75 are platform specific (and mostly
-come down to just 3 or 4 shell commands). Not bad..
-
-----
-
-Last night, added support for quvi 0.9, which has a completely changed
-command line interface from the 0.4 version.
-
-Plan to spend tomorrow catching up on bug reports etc and then low activity
-for rest of the week.
diff --git a/doc/devblog/day_67_thanksgiving_rush.mdwn b/doc/devblog/day_67_thanksgiving_rush.mdwn
deleted file mode 100644
--- a/doc/devblog/day_67_thanksgiving_rush.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-My last day before thanksgiving, getting caught up with some recent bug
-reports and, quite a rush to get a lot of fixes in. Adding to the fun,
-wintery weather means very limited power today.
-
-It was a very productive day, especially for Android, which hopefully has
-XMPP working again (at least it builds..), halved the size of the package,
-etc.
-
-Fixed a stupid bug in the automatic v5 upgrade code; annex.version was not
-being set to 5, and so every git annex command was
-actually re-running the upgrade.
-
-Fixed another bug I introduced last Friday, which the test suite luckily
-caught, that broke using some local remotes in direct mode.
-
-Tracked down a behavior that makes `git annex sync` quite slow on
-filesystems that don't support symlinks. I need to switch direct mode to 
-not using `git commit` at all, and use plumbing to make commits there.
-Will probably work on this over the holiday.
diff --git a/doc/devblog/day_68__bits_and_pieces.mdwn b/doc/devblog/day_68__bits_and_pieces.mdwn
deleted file mode 100644
--- a/doc/devblog/day_68__bits_and_pieces.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Made a release yesterday to fix a bug that made git-annex init in a bare
-repository set core.bare=false. This bug only affected git-annex 5, it
-was introduced when building the direct mode guard. Currently recovering
-from it is a [manual (pretty easy) process](http://git-annex.branchable.com/bugs/assistant_creating_.git_directory_inside_bare_repo/#comment-73a8ce8aa100baa7c03861b769fdca29).
-Perhas I should automate that, but I mostly wanted to get a fix out
-before too many people encountered the bug.
-
-Today, I made the assistant run batch jobs with ionice and nocache, when
-those commands are available. Also, when the assistant transfers files,
-that also runs as a batch job.
-
-Changed how git-annex does commits, avoiding using `git commit` in direct
-mode, since in some situations `git commit` (not with `-a`!) wants to
-read the contents of files in the work tree, which can be very slow.
diff --git a/doc/devblog/day_69__catching_up.mdwn b/doc/devblog/day_69__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_69__catching_up.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Still working through thanksgiving backlog. Around 55 messages to go.
-
-Wrote hairy code to automatically fix up bad bare repositories created by
-recent versions of git-annex. Managed to do it with only 1 stat call
-overhead (per local repository). Will probably keep that code in git-annex
-for a year or so, despite the bug only being present for a few weeks,
-because the repositories that need to be fixed might be on removable drives
-that are rarely used.
-
-Various other small bug fixes, including dealing with box.com having
-changed their WebDAV endpoint url.
-
-Spent a while evaluating various key/value storage possibilities. 
-[[bugs/incremental_fsck_should_not_use_sticky_bit]] has the details.
diff --git a/doc/devblog/day_6__gcrypt_fully_working.mdwn b/doc/devblog/day_6__gcrypt_fully_working.mdwn
deleted file mode 100644
--- a/doc/devblog/day_6__gcrypt_fully_working.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-gcrpyt is fully working now. *Most* of the examples in
-[[tips/fully_encrypted_git_repositories_with_gcrypt]] should work.
-
-A few known problems:
-
-* `git annex sync` refuses to sync with gcrypt remotes. some url parsing issue.
-* Swapping two drives with gcrypt repositories on the same mount point doesn't work yet.
-* http urls are not supported
diff --git a/doc/devblog/day_70__preliminary_user_survey_analysis.mdwn b/doc/devblog/day_70__preliminary_user_survey_analysis.mdwn
deleted file mode 100644
--- a/doc/devblog/day_70__preliminary_user_survey_analysis.mdwn
+++ /dev/null
@@ -1,104 +0,0 @@
-The [2013 git-annex user survey](http://git-annex-survey.branchable.com/polls/2013/)
-has been running for several weeks and around 375 people have answered
-at least the first question. While I am going to leave it up through the
-end of the year, I went over the data today to see what interesting
-preliminary conclusions I can draw.
-
-* 11% build git-annex from source. More than I would have guessed.
-
-* 20% use the prebuilt versions from the git-annex website.
-  
-  This is a number to keep in mind later, when more people have upgraded to
-  the last release, which checks for upgrades. I can run some stats on
-  the number of upgrade checks I receive, and multiplying that by 5 would
-  give a good approximation of the total number of computers running
-  git-annex.
-
-* I'm surprised to see so many more Linux (79%) than OSX (15%) users.
-  Also surprising is there are more Windows (2%) than Android (1%) users.
-  (Android numbers may be artificially low since many users will use it in
-  addition to one of the other OSes.)
-
-* Android and Windows unsurprisingly lead in ports requested, but the 
-  Synology NAS is a surprise runner up, with 5% (more than IOS).
-
-  In theory it would not be too hard to make a standalone arm tarball,
-  which could be used on such a device, although IIRC the Synology had
-  problems with a too old linker and libc. It would help if I could make
-  the standalone tarball not depend on the system linker at all.
-  
-  A susprising number (3%) want some kind of port the the Raspberry Pi, which
-  is weird because I'd think they'd just be using Raspbian on it.. but a
-  standalone arm tarball would also cover that use case.
-
-* A minimum of 1664 (probably closer to 2000) git annex repositories are being
-  used by the 248 people who answered that question. Around 7 repositories
-  per person average, which is either one repository checked out on 7
-  different machines or two repositories on 3 machines, etc.
-
-* At least 143 terabytes of data are being stored in git-annex. This does
-  not count redundant data. (It also excludes several hundred terabytes from
-  one instituion that I don't think are fully online yet.)
-  Average user has more than half a terabyte of data.
-
-* 8% of users store scientific data in git-annex! :) A couple of users are
-  using it for game development assets, and 5% of users are using it for
-  some form of business data.
-
-* Only 10% of users are sharing a git-annex repository with at least one
-  other person. 27% use it by themselves, but want to get others using
-  their repositories. This probably points to it needing to be easier for
-  nontechnical users.
-
-* 61% of git-annex users have good or very good knowledge of git.
-  This question intentionally used the same wording as the 
-  [general git user survey](https://git.wiki.kernel.org/index.php/GitSurvey2012),
-  so the results can be compared. The curves have somewhat different
-  shapes, with git-annex's users being biased more toward the higher
-  knowledge levels than git's users.
-
-* The question about how happy users are also used the same wording.
-  While 74% of users are happy with git-annex, 94% are similarly happy with
-  git, and a while the median git-annex user is happy, the median git user
-  is very happy.
-  
-  The 10% who wrote in "very enthusiastic, but still often
-  bitten by quirks (so not very happy yet, but with lots of confidence in
-  the potential" might have thrown off this comparison some, but they
-  certianly made their point!
-
-* 3% of respondants say that a bug is preventing them from using git-annex,
-  but that they have not reported the bug yet. Frustrating! 1% say that a
-  bug that's been reported already is blocking them.
-
-* 18% wrote in that they need the webapp to support using github (etc)
-  as a central server. I've been moving in that direction with the
-  encryption and some other changes, so it's probably time to make a UI for
-  that.
-
-* 12% want more control over which files are stored locally when using the
-  assistant.
-
-* A really surprising thing happened when someone wrote in that I should
-  work on "not needing twice disk space of repo in direct mode", and 5% of
-  people then picked this choice. This is some kind of documentation
-  problem, because of course git-annex never needs 2x disk space, whether
-  using direct mode or not. That's one of its advantages over git!
-
-* Somewhere between 59 and 161 of the survey respondants use Debian.
-  I can compare this with [Debian popularity contest data](http://qa.debian.org/popcon-graph.php?packages=git-annex)
-  which has 400 active installations and 1000 total installations,
-  and make guesses about what fraction of all git-annex users have answered
-  the survey. By making different assumptions I got guesses that varied by
-  2 orders of magnitude, so not worth bothering with. Explicitly asking how
-  many people use each Linux distribution would be a good idea in next
-  year's survey.
-
-----
-
-Main work today was fixing Android DNS lookups, which was trying to use
-/etc/resolv.conf to look up SRV records for XMPP, and had to be changed to
-use a getprop command instead. Since I can't remember dealing with this
-before (not impossible I made some quick fix to the dns library before and
-lost it though), I'm wondering if XMPP was ever usable on Android before.
-Cannot remember. May work now, anyway...
diff --git a/doc/devblog/day_71__that_was_unexpected.mdwn b/doc/devblog/day_71__that_was_unexpected.mdwn
deleted file mode 100644
--- a/doc/devblog/day_71__that_was_unexpected.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Had planned to spend all day not working on git-annex and instead getting
-caught up on conference videos. However, got a little bit multitasky while
-watching those, and started investigating why, last time I worked on
-Windows port, git-annex was failing to link. 
-
-A good thing to do while watching conference videos since it involved lots of 
-test builds with different flags. Eventially solved it. 
-Building w/o WebDAV avoids crashing the compiler anyhow.
-
-Thought I'd try the resulting binary and see if perhaps I had forgotten to
-use the threaded RTS when I was running ghc by hand to link it last time,
-and perhaps that was why threads
-[[seemed to have hung|day_56__git-annex_user_survey]] back then.
-
-It was. This became clear when I saw a "deadlocked indefinitely in MVar"
-error message, which tells me that it's at least using the threaded RTS.
-So, I fixed that, and a few other minor things, and ran this command
-in a DOS prompt box:
-
-	git annex watch --force --foreground --debug
-
-And I've been making changes to files in that repository, and amazingly,
-the watcher is noticing them, and committing them!
-
-So, I was almost entirely there to a windows port of the watcher a month
-ago, and didn't know. It has some rough edges, including not doing anything
-to check if a newly created file is open for write when adding it, and
-getting the full assistant ported will be more work, and the full webapp
-may be a whole other set of problems, but this is a quite nice milestone
-for the Windows port.
diff --git a/doc/devblog/day_72__windows_webapp_not.mdwn b/doc/devblog/day_72__windows_webapp_not.mdwn
deleted file mode 100644
--- a/doc/devblog/day_72__windows_webapp_not.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Got the entire webapp to build on Windows.
-
-Compiling was easy. One line of code had to be #ifdefed out, and the whole
-rest of the webapp UI just built!
-
-Linking was epic. It seems that I really am runninginto a 32kb command line length
-limit, which causes the link command to fail on Windows. git-annex with all
-its bells and whistles enabled is just too big. Filed a 
-[ghc bug report](https://ghc.haskell.org/trac/ghc/ticket/8596), and got back a
-helpful response about using <http://gcc.gnu.org/wiki/Response_Files> to
-work around.
-
-6 hours of slogging through compiling dependencies and fighting with
-toolchain later, I have managed to link git-annex with the webapp!
-
-The process is not automated yet. While I was able to automate
-passing gcc a @file with its parameters, gcc then calls collect2, which
-calls ld, and both are passed too many parameters. I have not found a way
-to get gcc to generate a response file. So I did it manually. Urgh.
-
-Also, it crashes on startup with `getAddrInfo` failure. But some more
-porting is to be expected, now that the windows webapp links.. ;)
diff --git a/doc/devblog/day_73__EvilLinker.mdwn b/doc/devblog/day_73__EvilLinker.mdwn
deleted file mode 100644
--- a/doc/devblog/day_73__EvilLinker.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Android has the EvilSplicer, now Windows gets the EvilLinker. Fully
-automated, and truly horrible solution to the too long command line problem.
-
-Now when I run `git annex webapp` on windows, it almost manages to open
-the web browser.
-
-At the same time, I worked with Yuri to upgrade the Windows autobuilder to a
-newer Haskell platform, which can install Yesod. I have not quite achieved
-a successful webapp build on the autobuilder, but it seems close.
-
-----
-
-Here's a nice Haskell exercise for someone. I wrote this quick and dirty
-function in the EvilSplicer, but it's crying out for a generalized solution.
-
-[[!format haskell """
-{- Input contains something like 
- - c:/program files/haskell platform/foo -LC:/Program Files/Haskell Platform/ -L...
- - and the *right* spaces must be escaped with \
- -
- - Argh.
- -}
-escapeDosPaths :: String -> String
-escapeDosPaths = replace "Program Files" "Program\\ Files"
-        . replace "program files" "program\\ files"
-        . replace "Haskell Platform" "Haskell\\ Platform"
-        . replace "haskell platform" "haskell\\ platform"
-"""]]
diff --git a/doc/devblog/day_74__so_close.mdwn b/doc/devblog/day_74__so_close.mdwn
deleted file mode 100644
--- a/doc/devblog/day_74__so_close.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Windows webapp now starts, opens a web browser, and ... crashes. 
-
-<img src="https://identi.ca/uploads/joeyh/2013/12/7/hDkkSA.png">
-
-This  is [a bug in warp](https://github.com/yesodweb/wai/issues/202)
-or a deep level of the stack. I know that yesod apps have run on Windows
-before, so apparently something has changed and introduced this problem.
-
-Also have a problem with the autobuilder; the EvilSplicer or something
-it runs is locking up on that system for reasons not yet determined.
-
-Looks like I will need to wait a bit longer for the windows webapp, but I
-could keep working on porting the assistant in the meantime. 
-
-The most important thing that I need to port is how to check if a file
-is being written to at the same time the assistant adds it to the
-repository. No real `lsof` equivilant on Windows. I might be able to do
-something with exclusive locking to detect if there's a writer (but this
-would also block using the file while it was being added). Or I may be able
-to avoid the need for this check, at least in direct mode.
diff --git a/doc/devblog/day_75__hallelujah.mdwn b/doc/devblog/day_75__hallelujah.mdwn
deleted file mode 100644
--- a/doc/devblog/day_75__hallelujah.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I have seen the glory of the webapp running on Windows.
-
-One of the warp developers pointed me in the right direction and I
-developed a fix for the `recv` bug.
-
-My Windows and MSIE are old and fall over on some of the
-javascript, so it's not glorious enough for a screenshot. But large chunks
-of it do seem to work.
diff --git a/doc/devblog/day_76__results.mdwn b/doc/devblog/day_76__results.mdwn
deleted file mode 100644
--- a/doc/devblog/day_76__results.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Fixed up a few problems with the Windows webapp, and it's now completely
-usable, using any browser other than MSIE. While there are missing
-features in the windows port, all the UI for the features it does have
-seems to just work in the webapp.
-
-Fixed a ugly problem with Firefox, which turned out to have been introduced
-a while ago by a workaround for an ugly problem in Chrome. Web browsers are
-so wonderful, until they're crap.
-
-Think I've fixed the bug in the EvilLinker that was causing it to hang on
-the autobuilder, but still don't have a Windows autobuild with the webapp
-just yet.
-
-Also improved `git annex import` some more, and worked on a bug in git
-repository repair, which I will need to spend some more time on tomorrow.
diff --git a/doc/devblog/day_77__it_builds.mdwn b/doc/devblog/day_77__it_builds.mdwn
deleted file mode 100644
--- a/doc/devblog/day_77__it_builds.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Got the Windows autobuilder building the webapp. Have not tried that build
-yet myself, but I have high hopes it will work.
-
-Made other Windows improvements, including making the installer
-write a start menu entry file, and adding free disk space checking.
-
-Spent rest of the day improving git repair code on a real-world corrupted
-repository.
diff --git a/doc/devblog/day_78__desidetracked.mdwn b/doc/devblog/day_78__desidetracked.mdwn
deleted file mode 100644
--- a/doc/devblog/day_78__desidetracked.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-I've switched over to mostly working on Windows porting in the evenings
-when bored, with days spent on other git-annex stuff. So, getting back to
-the planned [[design/roadmap]] for this month..
-
-Set up a [tip4commit for git-annex](http://tip4commit.com/projects/152).
-Anyone who gets a commit merged in will receive a currently small amount of
-bitcoin. This would almost be a good way to encourage more committers
-other than me, by putting say, half the money I have earmarked for that into
-the tip jar. The problem is, I make too many commits myself, so most of the
-money would be quickly tipped back out to me! I have gotten in touch with the
-tip4commit people, and hope they will give me a way to blacklist
-myself from being tipped.
-
-Designed a [[design/external_special_remote_protocol]] that seems pretty
-good for first-class special remotes implemented outside git-annex.
-It's moderately complicated on the git-annex side to make it simple and
-flexible on the special remote side, but I estimate only a few days to build
-it once I have the design finalized.
-
-# windows
-
-Tested the autobuilt windows webapp. It works! Sorted out some issues with
-the bundled libraries.
-
-Reworked how `git annex transferkeys` communicates, to make it easier to
-port it to Windows. Narrowly managed to avoid needing to write Haskell
-bindings to Windows's equivilant of `pipe(2)`. I think the Windows
-assistant can transfer keys now. and the webapp UI may even be able to be
-used to stop transfers. Needs testing.
-
-Investigated what I'll need to get XMPP working on Windows. Most of the
-libs are available in cygwin, but gsasl would need to be built from source.
-Also some kind of space-in-path problem is preventing cabal installing some
-of the necessary dependencies.
diff --git a/doc/devblog/day_79__catch_up.mdwn b/doc/devblog/day_79__catch_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_79__catch_up.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Spent most of today catching up with a weeks's worth of traffic.
-
-Fixed 2 bugs. Message backlog is 23 messages.
diff --git a/doc/devblog/day_7__release_day.mdwn b/doc/devblog/day_7__release_day.mdwn
deleted file mode 100644
--- a/doc/devblog/day_7__release_day.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Got git annex sync working with gcrypt. So went ahead and made a release
-today. Lots of nice new features!
-
-Unfortunately the linux 64 bit daily build is failing, because my build
-host only has 2 gb of memory and it is no longer enough. I am looking for a
-new build host, ideally one that doesn't cost me $40/month for 3 gb of ram
-and 15 gb of disk. (Extra special ideally one that I can run multiple builds
-per day on, rather than the current situation of only building overnight to
-avoid loading the machine during the day.) Until this is sorted out, no
-new 64 bit linux builds..
diff --git a/doc/devblog/day_80__plumbing.mdwn b/doc/devblog/day_80__plumbing.mdwn
deleted file mode 100644
--- a/doc/devblog/day_80__plumbing.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Made some improvements to git-annex's plumbing level commands today. Added
-new lookupkey and examinekey commands. Also expanded the things that
-`git annex find` can report about files. Among other things, the elusive
-hash directory locations can now be looked up, which IIRC a few people have
-asked for a way to do.
-
-Also did some work on the linux standalone tarball and OSX app. Both now
-include man pages, and it's also now possible to just unpack it and symlink
-git-annex into ~/bin or similar to add it to PATH.
diff --git a/doc/devblog/day_81__more_standalone.mdwn b/doc/devblog/day_81__more_standalone.mdwn
deleted file mode 100644
--- a/doc/devblog/day_81__more_standalone.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Made the Linux standalone builds more self-contained, now they include
-their own linker and glibc, and ugly hacks to make them be used when
-running the included programs. This should make them more portable
-to older systems.
-
-Set up an arm autobuilder. 
-This autobuilder runs in an Debian armel chroot, using
-qemu-user-static (with a patch to make it support some syscalls ghc uses).
-No webapp yet; waiting on feedback of how well it works. I *hope* this
-build will be usable on eg, Synology NAS and Raspberry PI.
-
-Also worked on improving the assistant's batching of commits during the
-startup scan. And some other followups and bug triage.
-
-Today's work was sponsored by Hamish Coleman.
diff --git a/doc/devblog/day_82__rpi_and_synology.mdwn b/doc/devblog/day_82__rpi_and_synology.mdwn
deleted file mode 100644
--- a/doc/devblog/day_82__rpi_and_synology.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Fixed a few problems in the [[armel build|install/Linux_standalone]], and
-it's been confirmed to work on Raspberry Pi and Synology NAS. Since none of
-the fixes were specific to those platforms, it will probably work anywhere
-the kernel is new enough. That covers 9+% of the 
-[missing ports in the user survey](http://git-annex-survey.branchable.com/polls/2013/missing_ports/)!
-
-Thought through the possible issues with the assistant on Windows not being
-able to use lsof. I've convinced myself it's probably safe. (In fact, it
-might be safe to stop checking with lsof when using the assistant in direct
-mode entirely.) Also did some testing of some specific interesting
-circumstances (including 2 concurrent writers to a single file).
-
-I've been working on adding the webapp to the armel build. This can mostly
-reuse the patches and EvilSplicer developed for Android, but it's taking
-some babysitting of the build to get yesod etc installer for various reasons.
-Will be surprised if I don't get there tomorrow.
-
-One other thing.. I notice that <http://git-annex.org/> is up and running.
-This was set up by Subito, who offered me the domain, but I suggested he
-keep it and set up a pretty start page that points new users at the
-relevant parts of the wiki. I think he's done a good job with that!
diff --git a/doc/devblog/day_83__armel_webapp.mdwn b/doc/devblog/day_83__armel_webapp.mdwn
deleted file mode 100644
--- a/doc/devblog/day_83__armel_webapp.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Got the arm webapp to build! (I have not tried to run it.) The build
-process for this is quite elaborate; 2 chroots, one amd64 and one armel,
-with the same versions of everything installed in each, and git-annex is
-built in the first to get the info the EvilSplicer needs to build it in the
-second.
-
-Fixed a nasty bug in the assistant on OSX, where at startup it would follow
-symlinks in the repository that pointed to directories outside the
-repository, and add the files found there. Didn't cause data loss itself
-(in direct mode the assistant doesn't touch the files), but certainly
-confusingly breaks things and makes it easy to shoot your foot off. I will
-be moving up the next scheduled release because of this bug, probably to
-Saturday.
-
-Looped the git developers in on a problem with git failing on some kernels
-due to `RLIMIT_NOFILE` not working. Looks like git will get more robust and
-this should make the armel build work on even more embedded devices.
-
-Today's work was sponsored by Johan Herland.
diff --git a/doc/devblog/day_84__ho_uh_oh.mdwn b/doc/devblog/day_84__ho_uh_oh.mdwn
deleted file mode 100644
--- a/doc/devblog/day_84__ho_uh_oh.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Resurfaced today to fix some problems with the Linux standalone builds
-in the Solstice release. The worst of these prevented the amd64 build from
-running on some systems, and that build has been updated. The other
-problems all involved the binary shimming, and were less serious.
-
-As part of that work, replaced the hacky shell script that handled the
-linux library copying and binary shimming with a haskell program.
-
-Also worked on some Windows bugs, and fixed a typo in the test suite.
-Got my own little present: haskell-tasty finally got out of Incoming, so
-the next Debian package build will once again include the test suite.
diff --git a/doc/devblog/day_85__external_special_remote_protocol_types.mdwn b/doc/devblog/day_85__external_special_remote_protocol_types.mdwn
deleted file mode 100644
--- a/doc/devblog/day_85__external_special_remote_protocol_types.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Only did a few hours today, getting started on implementing the
-[[design/external_special_remote_protocol]].
-
-Mostly this involved writing down types for the various messages,
-and code to parse them. I'm very happy with how the parsing turned out;
-nearly all the work is handled by the data types and type classes,
-and so only one line of very simple code is needed to parse each message:
-
-[[!format haskell """
-instance Receivable Response where
-       parseCommand "PREPARE-SUCCESS" = parse0 PREPARE_SUCCESS
-       parseCommand "TRANSFER-SUCCESS" = parse2 TRANSFER_SUCCESS
-       parseCommand "TRANSFER-FAILURE" = parse3 TRANSFER_FAILURE
-"""]]
-
-An especially nice part of this implementation is that it knows exactly how
-many parameters each message should have (and their types of course), and so
-can both reject invalid messages, and avoid ambiguity in tokenizing the
-parameters. For example, the 3rd parameter of TRANSFER-FAILURE is an error
-message, and as it's the last parameter, it can contain multiple words.
-
-	*Remote.External> parseMessage "TRANSFER-FAILURE STORE SHA1--foo doesn't work on Christmas" :: Maybe Response
-	Just (TRANSFER_FAILURE Upload (Key {keyName = "foo", keyBackendName = "SHA1", keySize = Nothing, keyMtime = Nothing}) "doesn't work on Christmas")
-
-That's the easy groundwork for external special remotes, done.
diff --git a/doc/devblog/day_86__external_special_remote_implementation.mdwn b/doc/devblog/day_86__external_special_remote_implementation.mdwn
deleted file mode 100644
--- a/doc/devblog/day_86__external_special_remote_implementation.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Built most of the external special remote today. While I've written 600
-lines of code for this, and think it's probably working, and complete
-(except for a couple of features), all I know is that it compiles.
-
-I've also written an [[example external special remote program in shell script|special_remotes/external/example.sh]],
-so the next step is to put the two together and see how it works.
-I also hope that some people who have built hook special remotes
-in the past will update them to the new external special remote interface,
-which is quite a lot better.
-
-Today's work was sponsored by Justine Lam.
diff --git a/doc/devblog/day_87__external_special_remotes_done.mdwn b/doc/devblog/day_87__external_special_remotes_done.mdwn
deleted file mode 100644
--- a/doc/devblog/day_87__external_special_remotes_done.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-The [[external_special_remote|special_remotes/external]] interface is now
-done, and tested working great! Now we just need all the old hook special
-remotes to be converted to use it..
-
-I punted on per-special-remote, per-key state storage in the git-annex
-branch for now. If I find an example of a remote that needs it (Tahoe-LAFS
-may, but still TBD), I'll add it. Added suppport for using the same
-credential storage that git-annex uses for S3 and WebDAV credentials.
-
-The main improvement I'd like to make is to add an interface for transferring
-files where the file is streamed to/from the external special remote,
-rather than using temp files as it does now. This would be more efficient
-(sometimes) and make the progress bars better. But it needs to either use a
-named pipe, which is complicated and non-portable, or serialize the file's
-contents over a currently line-based protocol, which would be a pain.
-Anyway, this can be added later, the protocol is extensible.
diff --git a/doc/devblog/day_88__lazy_sunday.mdwn b/doc/devblog/day_88__lazy_sunday.mdwn
deleted file mode 100644
--- a/doc/devblog/day_88__lazy_sunday.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Fixed a bug that could leave a direct mode repository stuck at
-annex.version 3. As part of that, v3 indirect mode repositories will be
-automatically updated to v5. There's no actual change in that upgrade, it
-just simplifies things to have only one supported annex.version.
-
-Added youtube playlist support to git-annex. Seems I had almost all the
-pieces needed, and didn't know it. Only about a dozen lines of code!
-
-Added PREPARE-FAILURE support to the external special remote interface.
-
-After I found the cable my kitten stole (her apport level is high), fixed
-file transfers to/from Android. This broke because git-annex assistant
-tries to use ionice, if it's in PATH, and Android's ionice is not suitable.
-It could probably include ionice in the busybox build and use that one, but
-I wanted a quick fix for this before the upcoming release.
diff --git a/doc/devblog/day_89__reflections.mdwn b/doc/devblog/day_89__reflections.mdwn
deleted file mode 100644
--- a/doc/devblog/day_89__reflections.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Worked on bug report and forum backlog (24 messages left), and made a few
-bug fixes. The main one was a fix for a Windows-specific direct mode merge
-bug.
-
-This month didn't go entirely to plan. I had not expected to work on the
-Windows assistant and webapp and get it so close to fully working. Nor had
-I expected to spend time and make significant progress on porting git-annex
-to *Linux* -- particularly to embedded NAS devices! I had hoped to
-encourage some others to develop git-annex, but only had one bite from a
-student and it didn't work out. Meanwhile, automatically rewarding
-committers with bitcoin is an interesting alternative approach to possibly
-motivating contributors, and I would like to set that up, but the software
-is new and I haven't had time yet. The only thing that went exactly as
-planned was the external special remote implementation.
-
-A special surprise this month is that I have started hearing privately from
-several institutions that are starting using git-annex in interesting ways.
-Hope I can share details of some of that 2014!
diff --git a/doc/devblog/day_8__ill.mdwn b/doc/devblog/day_8__ill.mdwn
deleted file mode 100644
--- a/doc/devblog/day_8__ill.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-I've been out sick. However, some things kept happening. Mesar contributed
-a build host, and the linux and android builds are now happening, hourly,
-there. (Thanks as well to the two other people who also offered hostng.)
-And I made a minor release to fix a bug in the test suite that I was pleased
-three different people reported.
-
-Today, my main work was getting git-annex to notice when a gcrypt remote
-located on some removable drive mount point is not the same gcrypt remote
-that was mounted there before. I was able to finesse this so it
-re-configures things to use the new gcrypt remote, as long as it's a
-special remote it knows about. (Otherwise it has to ignore the remote.)
-So, encrypted repos on removable drives will work just as well as
-non-encrypted repos!
-
-Also spent a while with rsync.net tech support trying to work out why
-someone's git-annex apparently opened a lot of concurrent ssh connections
-to rsync.net. Have not been able to reproduce the problem though.
-
-Also, a lot of catch-up to traffic. Still 63 messages backlogged however,
-and still not entirely well..
diff --git a/doc/devblog/day_90__slow_start.mdwn b/doc/devblog/day_90__slow_start.mdwn
deleted file mode 100644
--- a/doc/devblog/day_90__slow_start.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Various work on Debian, OSX, and Windows stuff. Mostly uninteresting, but
-took most of the day.
-
-Made `git annex mirror --all` work. I can see why I left it out; when the
-mirroring wants to drop an object, in --all mode it doesn't have an
-associated file in the tree, so it cannot look at the annex.numcopies in
-gitattributes. Same reason why `git annex drop --all` is not implemented.
-But decided to go ahead and only use other numcopies configuration for
-mirroring.
-
-Added GETWANTED and SETWANTED to the external special remote protocol, and
-that is as far as I want to go on adding git-annex plumbing stuff to the
-protocol. I expect Tobias will release a boatload of special remotes
-updated to the new protocol soon, which seems to prove it has everything
-that could reasonably be needed.
-
-This is a nice public git-annex repository containing a growing collection
-of tech conference videos. <https://github.com/RichiH/conference_proceedings>
-
-Did some design work on [[todo/untracked_remotes]], which I think will turn
-out to be read-only remotes. Being able to clone a repository and use
-git-annex in the clone without anything leaking back upstream is often
-desirable when using public repository, or a repository with many users.
diff --git a/doc/devblog/day_91__wintry_mix.mdwn b/doc/devblog/day_91__wintry_mix.mdwn
deleted file mode 100644
--- a/doc/devblog/day_91__wintry_mix.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Implemented read-only remotes. This may not cover every use case around
-wanting to clone a repository and use git-annex without leaking the
-existence of your clone back to it, but I think it hits most of them in a
-quite easy way, and allows for some potentially interesting stuff like
-partitioned networks of git-annex repositories.
-
-Zooko and I have been talking things over (for rather too long),
-and I think have now agreed on a how a more advanced git-annex
-Tahoe-LAFS special remote should work. This includes storing the
-tahoe file-caps in the git-annex branch. So, I really need to add that
-per-special-remote data storage feature I've been thinking about.
diff --git a/doc/devblog/day_92-93__reconnection.mdwn b/doc/devblog/day_92-93__reconnection.mdwn
deleted file mode 100644
--- a/doc/devblog/day_92-93__reconnection.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Yesterday, added per-remote, per-key state storage. This is exported via
-the external special remote protocol, and I expect to use it at least for
-Tahoe Lafs.
-
-Also, made the assistant write ssh config files with better permissions,
-so ssh won't refuse to use them. (The only case I know of where that
-happened was on Windows.)
-
-Today, made `addurl` and `importfeed` honor annex.diskreserve. Found out about
-this the hard way, when an importfeed cron job filled up my server with
-youtube videos. I should probably also make `import` honor
-annex.diskreserve.
-
----
-
-I've been working, so far inconclusively, on making the assistant
-deal with remotes that might open a long duration network connection.
-Problem being that if the connection is lost, and the remote is not smart
-enough to reconnect, all further use of it could fail.
-
-In a `restarttransferrer` branch, I have made the assistant start separate
-`transferkeys` processes for each remote. So if a remote starts to
-fail, the assistant can stop its `transferkeys` process, and restart it,
-solving the problem.
-
-But, if a resource needed for a remote is not available, this degrades to
-every transfer attempt to that remote restarting it. So I don't know if this is the
-right approach.
-
-Other approaches being considered include asking that implementors of
-external special remotes deal with reconnection themselves (Tobias, do you
-deal with this in your remotes?), or making the
-assistant only restart failing remotes after it detects there's been 
-a network connection change.
diff --git a/doc/devblog/day_94__leaks.mdwn b/doc/devblog/day_94__leaks.mdwn
deleted file mode 100644
--- a/doc/devblog/day_94__leaks.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Spent ages tracking down a memory leak in the assistant that showed up when
-a lot of files were added. Turned out to be a standard haskell laziness
-induced problem, fixed by adding strictness annotations. Actually there
-were several of them, that leaked at different rates. Eventually, I seem to
-have gotten them all fixed:
-
-Before: [[bugs/import_memleak_from_the_assistant/leakbefore.png]]
-After: [[bugs/import_memleak_from_the_assistant/leakafter.png]]
-
-Also fixed a bug in `git annex add` when the disk was completely full.
-In that situation, it could sometimes move the file from the work tree to
-.git/annex/objects and fail to put the symlink in place.
diff --git a/doc/devblog/day_95__reconnection_revisited.mdwn b/doc/devblog/day_95__reconnection_revisited.mdwn
deleted file mode 100644
--- a/doc/devblog/day_95__reconnection_revisited.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Taught the assistant to stop reusing an existing `git annex transferkeys`
-process after it detects a network connection change. I don't think this is
-a complete solution to what to do about long-duration network connections
-in remotes. For one thing a remote could take a long time to time out
-when the network is disconnected, and block other transfers (eg to
-local drives) in the meantime. But at least if a remote loses its network
-connection and does not try to reconnect on its own, and so is continually
-failing, this will get it back into a working state eventually.
-
-Also, fixed a problem with the OSX Mavericks build, it seems that the
-versions of wget and coreutils stuff that I was including in it were built
-by homebrew with full optimisations turned on, so didn't work on some CPUs.
-Replaced those with portable builds.
diff --git a/doc/devblog/day_96__catching_up.mdwn b/doc/devblog/day_96__catching_up.mdwn
deleted file mode 100644
--- a/doc/devblog/day_96__catching_up.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Been on reduced activity the past several days. I did spend a full day
-somewhere in there building the Tahoe LAFS special remote. Also, Tobias has
-finished updating his full suite of external special remotes to use the new
-interface!
-
-Worked on closing up the fundraising campaign today (long overdue).
-This included adding a new wall-o-names to [[/thanks]].
diff --git a/doc/devblog/day_97__exciting_telehash_possiblities.mdwn b/doc/devblog/day_97__exciting_telehash_possiblities.mdwn
deleted file mode 100644
--- a/doc/devblog/day_97__exciting_telehash_possiblities.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-If you've been keeping an eye on the [[design/roadmap]], you'll have seen that
-[[design/assistant/xmpp_security]] keeps being pushed back. This was because
-it's a hard and annoying problem requiring custom crypto and with an
-ugly key validation problem built into it too. I've now removed it from the
-roadmap entirely, replacing it with a [[design/assistant/telehash]] design.
-
-I'm excited by the possibilities of using telehash with git-annex. It seems
-it would be quite easy to make it significantly more peer-to-peer and
-flexible. The only issue is that telehash is still under heavy
-development and the C implementation is not even usable yet..
-(I'll probably end up writing Haskell bindings to that.)
-So I've pushed it down the roadmap to at least March.
-
-Spent the rest of the day making some minor improvements to external special
-remote protocol and doing some other minor bug fixes and backlog catch up.
-My backlog has exploded to nearly 50 messages remaining.
-
-----
-
-Today's work was sponsored by Chad Horohoe.
diff --git a/doc/devblog/day_98__old_bug.mdwn b/doc/devblog/day_98__old_bug.mdwn
deleted file mode 100644
--- a/doc/devblog/day_98__old_bug.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Fixed a bug that one or two people had mentioned years ago, but I was never
-able to reproduce myself or get anyone to reproduce in a useful way. It
-caused log files that were supposed to be committed to the git-annex branch
-to end up in master. Turned out to involve weird stuff when the environment
-contains two different settings for a single variable. So was easily fixed
-at last. (I'm pretty sure the code would have never had this bug if
-Data.AssocList was not buried inside an xml library, which rather
-discourages using it when dealing with the environment.)
-
-Also worked on, and hopefully fixed, another OSX cpu optimisations problem.
-This one involving shared libraries that git-annex uses for XMPP.
-
-Also made the assistant detect corrupt .git/annex/index files on startup
-and remove them. It was already able to recover from corrupt .git/index
-files.
-
-Today's work was sponsored by David Wagner.
diff --git a/doc/devblog/day_99__catching_up_again.mdwn b/doc/devblog/day_99__catching_up_again.mdwn
deleted file mode 100644
--- a/doc/devblog/day_99__catching_up_again.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Activity has been a bit low again this week. It seems to make sense to do
-weekly releases currently (rather than bi-monthly), and Thursday's
-release had only one new feature (Tahoe LAFS) and a bunch of bug fixes.
-
-Looks like git-annex will get back into Debian testing soon, after various
-fixes to make it build on all architectures again, and then the
-backport can be updated again too.
-
-I have been struggling with a problem with the OSX builds, which fail with
-a SIGKILL on some machines. It seems that homebrew likes to agressively
-optimise things it builds, and while I have had some success with its
-`--build-bottle` option, something in the gnutls stack used for XMPP is
-still over-optimised. Waiting to hear back from Kevin on cleaning up some
-optimised system libraries on the OSX host I use. (Is there some way to make
-a clean chrooot on OSX that can be accessed by a non-root user?)
-
-Today I did some minor work involving the --json switch, and also 
-a small change (well, under 300 line diff) allowing
---all to be mixed with options like --copies and --in.
diff --git a/doc/devblog/day_9__Friday_the_13th.mdwn b/doc/devblog/day_9__Friday_the_13th.mdwn
deleted file mode 100644
--- a/doc/devblog/day_9__Friday_the_13th.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Worked to get git-remote-gcrypt included in every git-annex autobuild
-bundle.
-(Except Windows; running a shell script there may need some work later..)
-
-Next I want to work on making the assistant easily able to create encrypted
-git repositories on removable drives. Which will involve a UI to select
-which gpg key to use, or creating (and backing up!) a gpg key.
-
-But, I got distracted chasing down some bugs on Windows. These were
-quite ugly; more direct mode mapping breakage which resulted in 
-files not being accessible. Also fsck on Windows failed to detect and fix
-the problem. All fixed now. (If you use git-annex on Windows, you should
-certainly upgrade and run `git annex fsck`.)
-
-As with most bugs in the Windows port, the underlying cause turned out to
-be stupid: `isSymlink` always returned False on Windows. Which makes sense
-from the perspective of Windows not quite having anything entirely like
-symlinks. But failed when that was being used to detect when files in the
-git tree being merged into the repository had the symlink bit set..
-
-Did bug triage. Backlog down to 32 (mostly messages from August).
diff --git a/doc/devblog/day__126-127__merge_fixes.mdwn b/doc/devblog/day__126-127__merge_fixes.mdwn
deleted file mode 100644
--- a/doc/devblog/day__126-127__merge_fixes.mdwn
+++ /dev/null
@@ -1,61 +0,0 @@
-Yesterday I learned of a nasty bug in handling of merges in direct mode. It
-turns out that if the remote repository has added a file, and there is a
-conflicting file in the local work tree, which has not been added to git, the
-local file was overwritten when git-annex did a merge. That's really bad, I'm
-very unhappy this bug lurked undetected for so long.
-
-Understanding the bug was easy. Fixing it turned out to be hard, because
-the automatic merge conflict resolution code was quite a mess. In
-particular, it wrote files to the work tree, which made it difficult for a
-later stage to detect and handle the abovementioned case. Also, the
-automatic merge resolution code had weird asymmetric structure that I never
-fully understood, and generally needed to be stared at for an hour to begin
-to understand it.
-
-In the process of cleaning that up, I wrote several more tests,
-to ensure that every case was handled correctly. Coverage was about 50%
-of the cases, and should now be 100%.
-
-To add to the fun, a while ago I had dealt with a bug on FAT/Windows where
-it sometimes lost the symlink bit during automatic merge resolution. Except
-it turned out my test case for it had a heisenbug, and I had not actually
-fixed it (I think). In any case, my old fix for it was a large part
-of the ugliness I was cleaning up, and had to be rewritten.
-Fully tracking down and dealing with that took a large part of today.
-
-Finally this evening, I added support for automatically handling merge
-conflicts where one side is an annexed file, and the other side has the
-same filename committed to git in the normal way. This is not an important
-case, but it's worth it for completeness. There was an unexpected benefit
-to doing it; it turned out that the weird asymmetric part of the code went
-away.
-
-The final core of the automatic merge conflict resolver has morphed from
-a mess I'd not want to paste here to a quite consise and easy to follow
-bit of code.
-
-[[!format haskell """
-        case (kus, kthem) of
-                -- Both sides of conflict are annexed files
-                (Just keyUs, Just keyThem) -> resolveby $
-                        if keyUs == keyThem
-                                then makelink keyUs
-                                else do
-                                        makelink keyUs
-                                        makelink keyThem
-                -- Our side is annexed file, other side is not.
-                (Just keyUs, Nothing) -> resolveby $ do
-                        graftin them file
-                        makelink keyUs
-                -- Our side is not annexed file, other side is.
-                (Nothing, Just keyThem) -> resolveby $ do
-                        graftin us file
-                        makelink keyThem
-                -- Neither side is annexed file; cannot resolve.
-                (Nothing, Nothing) -> return Nothing
-"""]]
-
-Since the bug that started all this is so bad, I want to make a release
-pretty soon.. But I will probably let it soak and whale on the test suite
-a bit more first. (This bug is also probably worth backporting to old
-versions of git-annex in eg Debian stable.)
diff --git a/doc/devblog/day__228_new_AWS.mdwn b/doc/devblog/day__228_new_AWS.mdwn
deleted file mode 100644
--- a/doc/devblog/day__228_new_AWS.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-New AWS region in Germany announced today. git-annex doesn't support it
-yet, unless you're using the `s3-aws` branch.
-
-I cleaned up that branch, got it building again, and re-tested it with
-`testremote`, and then fixed a problem the test suite found that was
-caused by some changes in the haskell aws library.
-
-Unfortunately, s3-aws is [not ready to be merged](http://git-annex.branchable.com/bugs/new_AWS_region___40__eu-central-1__41__)
-because of some cabal dependency problems involving `dbus` and `random`. I did
-go ahead and update Debian's haskell-aws package to cherry-pick
-from a newer version the change needed for Inernet Archive
-support, which allows building the s3-aws branch on Debian.
-Getting closer..
diff --git a/doc/devblog/day__329-330__a_rising_tide.mdwn b/doc/devblog/day__329-330__a_rising_tide.mdwn
deleted file mode 100644
--- a/doc/devblog/day__329-330__a_rising_tide.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Things have been relatively quiet on git-annex this week. I've been
-distracted with other projects. But, a library that I developed for
-[propellor](http://propellor.branchable.com/) to help with 
-[concurrent console output](http://joeyh.name/blog/entry/concurrent_output_library/)
-has been rapidly developing into a kind of
-[tiling region manager for the console](http://joeyh.name/blog/entry/a_tiling_region_manager_for_the_console),
-which may be just the thing git-annex needs on the concurrent
-download progress display front.
-
-After seeing it could go that way, and working on it around the clock to
-add features git-annex will need, here's a teaser of its abilities.
-
-<img src="https://joeyh.name/code/concurrent-output/aptdemo.gif">
-
-Probably coming soonish to a `git-annex -J` near you!
diff --git a/doc/devblog/moving_blogs.mdwn b/doc/devblog/moving_blogs.mdwn
deleted file mode 100644
--- a/doc/devblog/moving_blogs.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I've started a new page for my devblog, since I'm not focusing extensively
-on the assistant and so keeping the blog [[here|design/assistant/blog]]
-increasingly felt wrong. Also, my new year of
-[crowdfunded development](https://campaign.joeyh.name)
-formally starts in September, so a new blog seemed good.
diff --git a/doc/devblog/moving_blogs/comment_1_6caa7e67461a6ea5de8155ae9cf75fab._comment b/doc/devblog/moving_blogs/comment_1_6caa7e67461a6ea5de8155ae9cf75fab._comment
deleted file mode 100644
--- a/doc/devblog/moving_blogs/comment_1_6caa7e67461a6ea5de8155ae9cf75fab._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://pnijjar.livejournal.com/"
- ip="99.236.22.229"
- subject="comment 1"
- date="2013-08-31T00:05:16Z"
- content="""
-Do we need to update our RSS feeds? I appear to be getting your devblog posts in my old feed, but I do not know whether that will continue working.
-"""]]
diff --git a/doc/devblog/moving_blogs/comment_2_e3e2048fc2397b87a2f29c9fe49394cb._comment b/doc/devblog/moving_blogs/comment_2_e3e2048fc2397b87a2f29c9fe49394cb._comment
deleted file mode 100644
--- a/doc/devblog/moving_blogs/comment_2_e3e2048fc2397b87a2f29c9fe49394cb._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmkBwMWvNKZZCge_YqobCSILPMeK6xbFw8"
- nickname="develop"
- subject="comment 2"
- date="2013-08-31T10:03:04Z"
- content="""
-The old RSS feed will continue working.
-
-So sit back, relax, and enjoy the show.
-"""]]
diff --git a/doc/devblog/whither_XMPP.mdwn b/doc/devblog/whither_XMPP.mdwn
deleted file mode 100644
--- a/doc/devblog/whither_XMPP.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Pushed a release today. Rest of day spent beating head against Windows XMPP
-brick wall.
-
-Actually made a lot of progress -- Finally found the right approach, and
-got a clean build of the XMPP haskell libraries. But.. ghc fails to
-load the libraries when running Template Haskell. 
-"Misaligned section: 18206e5b".
-Filed [a bug report](https://ghc.haskell.org/trac/ghc/ticket/8830), 
-and I'm sure this alignment problem can be fixed,
-but I'm not hopeful about fixing it myself.
-
-One workaround would be to use the EvilSplicer, building once without the
-XMPP library linked in, to get the TH splices expanded, and then a second
-time with the XMPP library and no TH. Made a `winsplicehack` branch with
-tons of ifdefs that allows doing this. However, several dozen haskell libraries
-would need to be patched to get it to work. I have the patches from
-Android, but would rather avoid doing all that again on Windows.
-
-Another workaround would be to move XMPP into a separate process from the
-webapp. This is not very appealing either, the IPC between them would be
-fairly complicated since the webapp does stuff like show lists of XMPP
-buddies, etc. But, one thing this idea has to recommend it is I am already
-considering using a separate helper daemon like this for
-[[design/assistant/Telehash]].
-
-So there could be synergies between XMPP and Telehash support, possibly
-leading to some kind of plugin interface in git-annex for this sort of
-thing. But then, once Telehash or something like it is available and
-working well, I plan to deprecate XMPP entirely. It's been a flakey pain
-from the start, so that can't come too soon.
diff --git a/doc/direct_mode.mdwn b/doc/direct_mode.mdwn
deleted file mode 100644
--- a/doc/direct_mode.mdwn
+++ /dev/null
@@ -1,129 +0,0 @@
-Normally, git-annex repositories consist of symlinks that are checked into
-git, and in turn point at the content of large files that is stored in
-`.git/annex/objects/`. Direct mode gets rid of the symlinks.
-
-The advantage of direct mode is that you can access files directly,
-including modifying them. The disadvantage is that many regular git
-commands cannot be used in a direct mode repository, since they don't
-understand how to update its working tree.
-
-[[!toc]]
-
-## deprecated
-
-Direct mode is deprecated! Intead, git-annex v6 repositories can simply
-have files that are unlocked and thus can be directly accessed and
-modified. See [[upgrades]] for details about the transition to v6
-repositories.
-
-## enabling (and disabling) direct mode
-
-Normally, git-annex repositories start off in indirect mode. With some
-exceptions:
-
-* Repositories created by the [[assistant]] use direct mode by default.
-* Repositories on FAT and other less than stellar filesystems
-  that don't support things like symlinks will be automatically put
-  into direct mode.
-* Windows always uses direct mode.
-
-Any repository can be converted to use direct mode at any time, and if you
-decide not to use it, you can convert back to indirect mode just as easily.
-Also, you can have one clone of a repository using direct mode, and another
-using indirect mode.
-
-To start using direct mode:
-
-	git annex direct
-
-To stop using direct mode:
-
-	git annex indirect
-
-## safety of using direct mode
-
-With direct mode, you're operating without large swathes of git-annex's
-carefully constructed safety net, which ensures that past versions of
-files are preserved and can be accessed. 
-With direct mode, any file can be edited directly, or deleted at any time,
-and there's no guarantee that the old version is backed up somewhere else.
-
-So if you care about preserving the history of files, you're strongly
-encouraged to tell git-annex that your direct mode repository cannot be
-trusted to retain the content of a file. To do so:
-
-	git annex untrust .
-
-On the other hand, if you only care about the current versions of files,
-and are using git-annex with direct mode to keep files synchronised between
-computers, and manage your files, this should not be a concern for you.
-
-## use a direct mode repository
-
-You can use most git-annex commands as usual in a direct mode repository.
-
-Direct mode also works well with the git-annex assistant.
-
-The most important command to use in a direct mode repository is `git annex
-sync`. This will commit any files you have run `git annex add` on, as well
-as files that were added earlier and have been modified. It will push 
-the changes to other repositories for `git annex sync` there to pick up,
-and will pull and merge any changes made on other repositories into the
-local repository.
-
-## what doesn't work in direct mode
-
-A very few git-annex commands don't work in direct mode, and will refuse
-to do anything. For example, `git annex unlock` doesn't make sense in
-direct mode.
-
-As for git commands, direct mode prevents using any git command that would
-modify or access the work tree. So you cannot `git commit` or `git pull`
-(use `git annex sync` for both instead), or run `git status` (use `git
-annex status` instead). These git commands will complain "fatal: This
-operation must be run in a work tree".
-
-The reason for this is that git doesn't understand how git-annex uses the
-work tree in direct mode. Where git expects the symlinks that get checked
-into git to be checked out in the work tree, direct mode instead replaces
-them with the actual content of files, as managed by git-annex.
-
-There are still lots of git commands you can use in direct mode. For
-example, you can run `git log` on files, run `git push`, `git fetch`,
-`git config`, `git remote add` etc.
-
-## proxing git commands in direct mode
-
-For those times when you really need to run a command like `git revert
-HEAD` in a direct mode repository, git-annex has the ability to proxy
-the command to work in direct mode.
-
-For example:
-
-	git annex proxy -- git revert HEAD
-
-	git annex proxy -- git checkout HEAD^^
-
-	git annex proxy -- git mv mydir newname
-
-This works by setting up a temporary work tree, letting the git
-command run on that work tree, and then updating the real work
-tree to reflect any changes staged or committed by the git command,
-with appropriate handling of the direct mode files.
-
-## undoing changes in direct mode
-
-There is also the `undo` command to do the equivalent of the above revert
-in a simpler way. Say you made a change in direct mode, the assistant
-dutifully committed it and you realise your mistake, you can try:
-
-    git annex undo file
-
-## forcing git to use the work tree in direct mode
-
-This is for experts only. You can lose data doing this, or check enormous
-files directly into your git repository, and it's your fault if you do!
-
-Ok, with the warnings out of the way, all you need to do to make any
-git command access the work tree in direct mode is pass it 
-`-c core.bare=false`
diff --git a/doc/direct_mode/comment_11_1c79c93f4b17cfc354ab920e3775cc60._comment b/doc/direct_mode/comment_11_1c79c93f4b17cfc354ab920e3775cc60._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_11_1c79c93f4b17cfc354ab920e3775cc60._comment
+++ /dev/null
@@ -1,26 +0,0 @@
-[[!comment format=mdwn
- username="http://www.gl-como.it/author/valhalla/"
- nickname="valhalla"
- subject="Direct mode clone of an indirect repo"
- date="2013-08-18T08:47:35Z"
- content="""
-I too have issues with mixing direct and indirect mode repositories.
-
- I have a regular, existing repository with ebooks, shared between various clones on proper :) filesystems; now I would need a copy of some of them on an ereader which only offers a FAT filesystem, so it has to be direct mode.
-
-    mount $READER
-    cd $reader
-    git clone $REPO
-
-I get a directory full of small files, the way git manages links on FAT.
-
-    git annex init \"ebook reader\"
-
-This detects the fact that it is working on a crippled filesystem, enables direct mode and disables ssh connection caching; up to now everything seems to be fine, but then
-
-    git annex get $SOME_BOOK
-
-seems to work, downloads the file somewhere, but when I try to open $SOME_BOOK it is still the fake link, and the file has been downloaded in its destination, as if the repo wasn't in direct mode.
-
-I use version 4.20130723 on debian jessie
-"""]]
diff --git a/doc/direct_mode/comment_12_1b5218fdb6ee362d6df68ff1229590d4._comment b/doc/direct_mode/comment_12_1b5218fdb6ee362d6df68ff1229590d4._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_12_1b5218fdb6ee362d6df68ff1229590d4._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.63"
- subject="comment 12"
- date="2013-08-23T17:48:54Z"
- content="""
-There should be no obstacles to using direct mode on one clone of a git repository, and indirect mode on another clone. The data stored in git for either mode is identical, and I do this myself for some repositories.
-
-@valhalla, you probably need to run `git annex fsck`, and if that does not solve your problem, you need to file a bug report.
-"""]]
diff --git a/doc/direct_mode/comment_12_7d507b6f87085a19d8dd5014f580922b._comment b/doc/direct_mode/comment_12_7d507b6f87085a19d8dd5014f580922b._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_12_7d507b6f87085a19d8dd5014f580922b._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="http://mildred.fr/"
- ip="82.247.184.53"
- subject="Fixing symlinks to the annex store in direct mode"
- date="2014-07-16T06:52:33Z"
- content="""
-I have an issue with direct mode: I have tons of symlinks that points to the git-annex store, while in direct mode. After investigation, I found that these files don't seem to be part of the repository. I can check with:
-
-    $ git -c core.bare=false status --porcelain tr.html
-    ?? Documentation/Mozilla/developer.mozilla.org/tr.html
-
-    $ ls -l tr.html
-    lrwxrwxrwx 1 mildred mildred 205 10 juin  16:22 tr.html -> ../../../.git/annex/objects/gF/z1/SHA256E-s31895--c873982bd742ba8db6e026afee26b7ab2f75f54f587304d8c2d877db3900c0f6.html/SHA256E-s31895--c873982bd742ba8db6e026afee26b7ab2f75f54f587304d8c2d877db3900c0f6.html
-
-The link is valid, and is probably pointing to a unused file in the annex store. How to add these files back?
-
-If I was in indirect mode, I could simply use `git add tr.html` (and **not** `git annex add`). This would stage to the git staging area the symlink, and all would be well.
-
-I found that in direct mode, the same was true. The command is: 
-
-    git -c core.bare=false add tr.html
-
-The file is added to the repository, and the link is converted to the target file. The question now is why? There is no hook on the add command. Could it be the annex assistant? If that didn't worked, my question would have been: how to checkout a file in direct mode?
-"""]]
diff --git a/doc/direct_mode/comment_13_5169c5541970d3b3bc1e080e07539b22._comment b/doc/direct_mode/comment_13_5169c5541970d3b3bc1e080e07539b22._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_13_5169c5541970d3b3bc1e080e07539b22._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://mildred.fr/"
- ip="82.247.184.53"
- subject="Re: Fixing symlinks to the annex store in direct mode"
- date="2014-07-16T07:04:08Z"
- content="""
-What I said was just wrong. Instead of trying on tr.html, I tried with a copy of that file. But making the copy of that file had the wanted effect, transforming the symlink to the actual file. Probably the assistant monitoring file creation, and transforming indirect file to direct file. Or perhaps the `cp` command follows symlinks by default (I thought it didn't).
-"""]]
diff --git a/doc/direct_mode/comment_13_55108ac736ea450df89332ba5de4a208._comment b/doc/direct_mode/comment_13_55108ac736ea450df89332ba5de4a208._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_13_55108ac736ea450df89332ba5de4a208._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.63"
- subject="comment 13"
- date="2013-08-23T17:50:15Z"
- content="""
-@obergix asked:
-
-> But then, how can a direct repo sync with changes made in other remotes, if there no pull/fetch available.
-
-The answer is simple: By running `git annex sync`, which handles all that.
-"""]]
diff --git a/doc/direct_mode/comment_14_03a02e689d92faa596de98e02b2ffe28._comment b/doc/direct_mode/comment_14_03a02e689d92faa596de98e02b2ffe28._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_14_03a02e689d92faa596de98e02b2ffe28._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.2"
- subject="comment 14"
- date="2014-07-16T17:51:28Z"
- content="""
-I kinda wish people would post questions to the forum, and not clutter up this page..
-
-Anyway, there have been past bugs in the direct mode code that caused some files to not be checked out in direct mode, but stay as symlinks pointing at the content. That can be fixed by running `git annex fsck`. But, I am not aware of any problem that can leave a git-annex symlink that is not checked into git at all. Perhaps you copied the symlink from another location?
-"""]]
diff --git a/doc/direct_mode/comment_14_ff4ffc2aabc5fd174d7386ef13860f78._comment b/doc/direct_mode/comment_14_ff4ffc2aabc5fd174d7386ef13860f78._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_14_ff4ffc2aabc5fd174d7386ef13860f78._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://olivier.berger.myopenid.com/"
- nickname="obergix"
- subject="Git annex copy needed before git annex sync"
- date="2013-08-23T19:59:35Z"
- content="""
-Thanks for these details @joeyh. But AFAIU, one needs to proceed to the git annex copy before doing the git annex sync, otherwise, symlinks (or files containing the symlink path on SMB) will be created, instead of the plain \"direct\" files that are expected.
-
-I'm still not sure whether the git annex sync needs to be issued on either of the indirect or direct remotes first, or both, then in which sequence. I think a \"walkthrough\" script would help.
-"""]]
diff --git a/doc/direct_mode/comment_15_1cd32456630b25d5aaa6d2763e6eb384._comment b/doc/direct_mode/comment_15_1cd32456630b25d5aaa6d2763e6eb384._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_15_1cd32456630b25d5aaa6d2763e6eb384._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.63"
- subject="comment 15"
- date="2013-08-24T15:56:47Z"
- content="""
-No, you can sync before you copy, get, or whatever. git-annex will replace the symlinks with the actual files when they arrive at the repository.
-"""]]
diff --git a/doc/direct_mode/comment_15_599b2285d24ae1244a1945d572b2c397._comment b/doc/direct_mode/comment_15_599b2285d24ae1244a1945d572b2c397._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_15_599b2285d24ae1244a1945d572b2c397._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmjjrCHEIa4vpDIJoBuJsrF3y8wZQElVHw"
- nickname="Siyuan"
- subject="Non-direct mode for Windows"
- date="2014-10-08T15:55:04Z"
- content="""
-Why Windows is restricted to direct mode? NTFS has symbolic links too. Is that fundamentally different from POSIX symlinks that it cannot be done?
-"""]]
diff --git a/doc/direct_mode/comment_16_7f6805e090d0acd8a077b65214da5837._comment b/doc/direct_mode/comment_16_7f6805e090d0acd8a077b65214da5837._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_16_7f6805e090d0acd8a077b65214da5837._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- subject="comment 16"
- date="2015-02-17T05:22:00Z"
- content="""
-i believe this is [answered here](https://git-annex.branchable.com/todo/windows_support/#comment-e72601243c643d7821e68d3a04489fcb). TLDR; basically NTFS + symlink works in Linux, but not in Windows/Cygwin, which git-annex seems to be using. YMMV.
-"""]]
diff --git a/doc/direct_mode/comment_17_e7c066fba8e28c61e8517c7a18a02457._comment b/doc/direct_mode/comment_17_e7c066fba8e28c61e8517c7a18a02457._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_17_e7c066fba8e28c61e8517c7a18a02457._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="mitzip"
- subject="--depth undo option"
- date="2015-05-27T02:54:17Z"
- content="""
-Well I just spent 4 hours building a OSX GUI around git annex undo --depth and it responds with \"git-annex: unrecognized option '--depth'\"... lol Please tell me that option exists somewhere other than the documentation... lol
-"""]]
diff --git a/doc/direct_mode/comment_18_e46f70efa6d8d65d5ef81cdcbd844869._comment b/doc/direct_mode/comment_18_e46f70efa6d8d65d5ef81cdcbd844869._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_18_e46f70efa6d8d65d5ef81cdcbd844869._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2015-05-27T18:31:26Z"
- content="""
-This page mentioned a --depth option, but no, it was never implemented.
-I have updated this page.
-
-If you need something simpler than the basic undo, you can use `git annex
-proxy` to run eg, a `git revert`.
-
-(Deleted a forum thread that duplicated the previous comment.)
-"""]]
diff --git a/doc/direct_mode/comment_3_8020d74bddf0e38b0a297e5dae7c217b._comment b/doc/direct_mode/comment_3_8020d74bddf0e38b0a297e5dae7c217b._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_3_8020d74bddf0e38b0a297e5dae7c217b._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl2Jj8q2upJL4ZQAc2lp7ugTxJiGtcICv8"
- nickname="Michael"
- subject="comment 3"
- date="2013-02-19T03:03:14Z"
- content="""
-So, if I edit a \"content file\" (change a music file's metadata, say), what's the workflow to record that fact and then synchronise it to other repositories?
-
-I can't do a `git add`, so I don't understand what has to happen as a first step.  (Thanks for your quick reply above, BTW.)
-
-
-"""]]
diff --git a/doc/direct_mode/comment_4_97c26bd82f623a3b2d56bab4afff0126._comment b/doc/direct_mode/comment_4_97c26bd82f623a3b2d56bab4afff0126._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_4_97c26bd82f623a3b2d56bab4afff0126._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.183"
- subject="comment 4"
- date="2013-02-19T03:05:35Z"
- content="""
-<pre>
-git annex add $file
-git annex sync
-git annex copy $file --to otherrepo
-</pre>
-"""]]
diff --git a/doc/direct_mode/comment_5_42363bf0367f935b3eee8ad3d2eaf5cf._comment b/doc/direct_mode/comment_5_42363bf0367f935b3eee8ad3d2eaf5cf._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_5_42363bf0367f935b3eee8ad3d2eaf5cf._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="mildred"
- ip="2a01:e35:2f7b:8350:225:22ff:fe40:fdfc"
- subject="What happens to object database in direct mode?"
- date="2013-07-08T13:27:21Z"
- content="""
-What happens to the object database (`.git/annex/objects`) when going to direct mode? Are the objects deleted, moved to another location, kept?
-
-If the objects are kept, does it means that the file on the repository in direct mode is duplicated in the object database? If so, would it be relevant to use `cp --reflink=auto` to populate the working directory to enable copy on write on filesystems that supports it?
-"""]]
diff --git a/doc/direct_mode/comment_6_5f03b1686c1fb3f7606a5bc724ac3812._comment b/doc/direct_mode/comment_6_5f03b1686c1fb3f7606a5bc724ac3812._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_6_5f03b1686c1fb3f7606a5bc724ac3812._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.254.222"
- subject="comment 6"
- date="2013-07-08T16:11:32Z"
- content="""
-`.git/annex/objects` does not typically contain any file contents in direct mode. The file contents are stored directly in the working tree.
-"""]]
diff --git a/doc/direct_mode/comment_7_5355ac418bfb26e990762b80f4c36b77._comment b/doc/direct_mode/comment_7_5355ac418bfb26e990762b80f4c36b77._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_7_5355ac418bfb26e990762b80f4c36b77._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://caust1c.myopenid.com/"
- nickname="asbraithwaite"
- subject="comment 7"
- date="2013-08-12T18:06:21Z"
- content="""
-Would it be safe to add largefiles to gitignore in direct mode?
-
-Can git-annex still track large files ignored by git?
-
-Thanks. :-)
-"""]]
diff --git a/doc/direct_mode/comment_8_6cd15e2c5fd0bef48f60c6993322c2fc._comment b/doc/direct_mode/comment_8_6cd15e2c5fd0bef48f60c6993322c2fc._comment
deleted file mode 100644
--- a/doc/direct_mode/comment_8_6cd15e2c5fd0bef48f60c6993322c2fc._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="arand"
- ip="130.243.226.21"
- subject="comment 8"
- date="2013-08-12T18:12:32Z"
- content="""
-asbraithwaite:
-No, as far as I know it can not.
-"""]]
diff --git a/doc/distributed_version_control.mdwn b/doc/distributed_version_control.mdwn
deleted file mode 100644
--- a/doc/distributed_version_control.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-In git, there can be multiple clones of a repository, each clone can 
-be independently modified, and clones can push or pull changes to
-one-another to get back in sync.
-
-git-annex preserves that fundamental distributed nature of git, while
-dropping the requirement that, once in sync, each clone contains all the data
-that was committed to each other clone. Instead of storing the content
-of a file in the repository, git-annex stores a pointer to the content.
-
-Each git-annex repository is responsible for storing some of the content,
-and can copy it to or from other repositories. [[Location_tracking]]
-information is committed to git, to let repositories inform other
-repositories what file contents they have available.
-
----
-
-The [[walkthrough]] shows how to create a distributed set of git-annex
-repositories with no central repository.
-
-Prefer a central repository like GitHub? See the
-[[tips/centralized_git_repository_tutorial]].
diff --git a/doc/download.mdwn b/doc/download.mdwn
deleted file mode 100644
--- a/doc/download.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-The main git repository for git-annex is `git://git-annex.branchable.com/`
-
-(You can push changes to this wiki from that anonymous git checkout.)
-
-Other mirrors of the git repository:
-
-* `git://git.kitenet.net/git-annex` [[gitweb](http://git.kitenet.net/?p=git-annex.git;a=summary)]
-* [at github](https://github.com/joeyh/git-annex)
-
-Releases of git-annex are uploaded
-[to hackage](http://hackage.haskell.org/package/git-annex). Get your
-tarballs there, if you need them.
-
-Some operating systems include git-annex in easily prepackaged form and
-others need some manual work. See [[install]] for details.
-
-## git branches
-
-The git repository has some branches:
-
-* `ghc7.0` is a by now very out of date branch that can be built with
-  ghc 7.0.
-* `debian-*-backport` contains the latest backport of git-annex.
-* `tweak-fetch` adds support for the git tweak-fetch hook, which has
-  been proposed and implemented but not yet accepted into git.
-* `setup` contains configuration for this website
-
-----
-
-Developing git-annex? Patches are very welcome.
-You should read [[coding_style]].
diff --git a/doc/download/comment_1_ec2578241a966cfcdd43f2a26a5c8709._comment b/doc/download/comment_1_ec2578241a966cfcdd43f2a26a5c8709._comment
deleted file mode 100644
--- a/doc/download/comment_1_ec2578241a966cfcdd43f2a26a5c8709._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm3uJkdiJJejvqix9dULvw_Ma7DCtB-6zA"
- nickname="Ian"
- subject="git clone git://git-annex.branchable.com/ gives an error"
- date="2012-08-13T20:57:34Z"
- content="""
-Thought you would want to know
-
-error: unable to create file doc/forum/__91__Installation__93___base-3.0.3.2_requires_syb___61____61__0.1.0.2_however_syb-0.1.0.2_was_excluded_because_json-0.5_requires_syb___62____61__0.3.3.mdwn (File name too long)
-fatal: cannot create directory at 'doc/forum/__91__Installation__93___base-3.0.3.2_requires_syb___61____61__0.1.0.2_however_syb-0.1.0.2_was_excluded_because_json-0.5_requires_syb___62____61__0.3.3': File name too long
-
-
-"""]]
diff --git a/doc/download/comment_2_ee0d158ac59903737dbc4ef632f11fe3._comment b/doc/download/comment_2_ee0d158ac59903737dbc4ef632f11fe3._comment
deleted file mode 100644
--- a/doc/download/comment_2_ee0d158ac59903737dbc4ef632f11fe3._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 2"
- date="2012-08-16T23:28:30Z"
- content="""
-Ok, I've renamed that long-ish filename.
-"""]]
diff --git a/doc/download/comment_3_b59fc32a18a9fda8da120da82fade0a6._comment b/doc/download/comment_3_b59fc32a18a9fda8da120da82fade0a6._comment
deleted file mode 100644
--- a/doc/download/comment_3_b59fc32a18a9fda8da120da82fade0a6._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="jckuester@11e9fceb442172b6db63320bb545797a47a4c103"
- nickname="jckuester"
- subject="error during &quot;git clone git://git.kitenet.net/git-annex&quot;"
- date="2015-11-22T15:38:57Z"
- content="""
-error: unable to create file doc/bugs/On_Lubuntu_14.04_assistant_fails_to_create_new_setup_or_actually_work___40__fixed_by_regular_lxsession_package_update_from_2014-06-30__41__.mdwn (File name too long)
-fatal: unable to checkout working tree
-"""]]
diff --git a/doc/download/comment_4_bf102d87552f97ac293dd20f6822b84f._comment b/doc/download/comment_4_bf102d87552f97ac293dd20f6822b84f._comment
deleted file mode 100644
--- a/doc/download/comment_4_bf102d87552f97ac293dd20f6822b84f._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2015-11-30T19:13:34Z"
- content="""
-I guess you guys with the badly limited filename lenghs are using encfs or
-something like that. encfs is [really shoddy](https://defuse.ca/audits/encfs.htm),
-and I feel kind of like someone is complaining that the git repo can't be
-checked out on MS-DOS. 
-8.3 filenames are so 1985, and 128 filenames are so.. 1995?
-"""]]
diff --git a/doc/ekg.mdwn b/doc/ekg.mdwn
deleted file mode 100644
--- a/doc/ekg.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-You can `cabal configure -fEKG` to build a git-annex that includes
-the EKG remote monitoring interface.
-
-To access the EKG control panel, go to
-<http://localhost:4242/> while a git-annex command is running.
-
-This EKG build is mostly useful for debugging resource usage problems.
-
-[[!img ekg.png caption="git-annex webapp startup, and assistant startup scan"]]
-
-Note that since only one process can open port 4242 at a time, running
-more than one git-annex process with EKG support at the same time can
-result in some "resource busy (Address already in use)" messages -- but
-git-annex will continue to work.
-
-----
-
-## full profiling
-
-For the really tricky memory leaks, here's how to make a profiling build of
-git-annex.
-
-1. `cabal configure` with only the flags you really need
-2. `cabal build --ghc-options="-prof -auto-all -caf-all"`
-  This will probably fail due to some missing profiling libraries.
-  You have to get the profiling versions of all needed haskell libraries
-  installed somehow.
-3. Run git-annex with the special flags `+RTS -hc -p`
-4. Reproduce the memory leak problem.
-5. If the assistant was run, stop it.
-6. `hp2ps -e8in -c git-annex.hp` to generate a .ps graph of memory usage.
diff --git a/doc/ekg/ekg.png b/doc/ekg/ekg.png
deleted file mode 100644
Binary files a/doc/ekg/ekg.png and /dev/null differ
diff --git a/doc/encryption.mdwn b/doc/encryption.mdwn
deleted file mode 100644
--- a/doc/encryption.mdwn
+++ /dev/null
@@ -1,119 +0,0 @@
-[[!toc]]
-
-git-annex mostly does not use encryption. Anyone with access to a git
-repository can see all the filenames in it, its history, and can access
-any annexed file contents.
-
-Encryption is needed when using [[special_remotes]] like Amazon S3, where
-file content is sent to an untrusted party who does not have access to the
-git repository.
-
-Such an encrypted remote uses strong ([[symmetric|design/encryption]] or
-asymmetric) encryption on the contents of files, as well as HMAC hashing
-of the filenames. The size of the encrypted files, and access patterns
-of the data, should be the only clues to what is stored in such a
-remote.
-
-You should decide whether to use encryption with a special remote before
-any data is stored in it. So, `git annex initremote` requires you
-to specify "encryption=none" when first setting up a remote in order
-to disable encryption. To use encryption, you run
-`git-annex initremote` in one of these ways:
-
-* `git annex initremote newremote type=... encryption=hybrid keyid=KEYID ...`
-* `git annex initremote newremote type=... encryption=shared`
-* `git annex initremote newremote type=... encryption=pubkey keyid=KEYID ...`
-* `git annex initremote newremote type=... encryption=sharedpubkey keyid=KEYID ...`
-
-## hybrid encryption keys (encryption=hybrid)
-
-The [[hybrid_key_design|design/encryption]] allows additional
-encryption keys to be added on to a special remote later. Due to this
-flexibility, it is the default and recommended encryption scheme.
-
-	git annex initremote newremote type=... [encryption=hybrid] keyid=KEYID ...
-
-Here the KEYID(s) are passed to `gpg` to find encryption keys.
-Typically, you will say "keyid=2512E3C7" to use a specific gpg key.
-Or, you might say "keyid=id@joeyh.name" to search for matching keys.
-
-To add a new key and allow it to access all the content that is stored
-in the encrypted special remote, just run `git annex
-enableremote` specifying the new encryption key:
-
-	git annex enableremote myremote keyid+=788A3F4C
-
-While a key can later be removed from the list, note that
-it will **not** necessarily prevent the owner of the key
-from accessing data on the remote (which is by design impossible to prevent,
-short of deleting the remote). In fact the only sound use of `keyid-=` is
-probably to replace a revoked key:
-
-	git annex enableremote myremote keyid-=2512E3C7 keyid+=788A3F4C
-
-See also [[encryption_design|design/encryption]] for other security
-risks associated with encryption.
-
-## shared encryption key (encryption=shared)
-
-Alternatively, you can configure git-annex to use a shared cipher to
-encrypt data stored in a remote. This shared cipher is stored,
-**unencrypted** in the git repository. So it's shared among every
-clone of the git repository.
-
-	git annex initremote newremote type=... encryption=shared
-
-The advantage is you don't need to set up gpg keys. The disadvantage is
-that this is **insecure** unless you trust every clone of the git
-repository with access to the encrypted data stored in the special remote.
-
-## regular public key encryption (encryption=pubkey)
-
-This alternative simply encrypts the files in the special remotes to one or
-more public keys. It might be considered more secure due to its simplicity
-and since it's exactly the way everyone else uses gpg.
-
-	git annex initremote newremote type=.... encryption=pubkey keyid=KEYID ...
-
-A disadvantage is that it is not easy to later add additional public keys
-to the special remote. While the `enableremote` parameters `keyid+=` and
-`keyid-=` can be used, they have **no effect** on files that are already
-present on the remote. Probably the only use for these parameters is
-to replace a revoked key:
-
-	git annex enableremote myremote keyid-=2512E3C7 keyid+=788A3F4C
-
-But even in this case, since the files are not re-encrypted, the revoked
-key has to be kept around to be able to decrypt those files.
-(Of course, if the reason for revocation is
-that the key has been compromised, it is **insecure** to leave files
-encrypted using that old key, and the user should re-encrypt everything.)
-
-(A cipher still needs to be generated (and is encrypted to the given key IDs).
-It is only used for HMAC encryption of filenames.)
-
-## regular public key encryption with shared filename encryption (encryption=sharedpubkey)
-
-This is a variation on encryption=pubkey which lets anyone who
-has access to the gpg public keys store files in the special remote.
-But, only owners of the corresponding private keys can retrieve the files
-from the special remote.
-
-	git annex initremote newremote type=... encryption=sharedpubkey keyid=KEYID ...
-
-This might be useful if you want to let others drop off files for you in a
-special remote, so that only you can access them.
-
-The filenames used on the special remote are encrypted using HMAC,
-which prevents the special remote from seeing the filenames. But, anyone
-who can clone the git repository can access the HMAC cipher; it's stored
-**unencrypted** in the git repository.
-
-## MAC algorithm
-
-The default MAC algorithm to be applied on the filenames is HMACSHA1. A
-stronger one, for instance HMACSHA512, can be chosen upon creation
-of the special remote with the option `mac=HMACSHA512`. The available
-MAC algorithms are HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA384, and
-HMACSHA512. Note that it is not possible to change algorithm for a
-non-empty remote.
diff --git a/doc/encryption/comment_1_4257e3c4ae559f1c0595a903f738fd7e._comment b/doc/encryption/comment_1_4257e3c4ae559f1c0595a903f738fd7e._comment
deleted file mode 100644
--- a/doc/encryption/comment_1_4257e3c4ae559f1c0595a903f738fd7e._comment
+++ /dev/null
@@ -1,28 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlZ-6dtxJY4cP7shhvV8E6YyuV0Rak8it4"
- nickname="Giovanni"
- subject="comment 1"
- date="2015-03-10T22:16:09Z"
- content="""
-I have a gcrypt special remote encrypted in hybrid mode, when I try to add a keyid using:
-
-     git annex enableremote myremote keyid+=XXXXXXXX
-
-I get this error:
-
-     enableremote myremote (encryption update) (hybrid cipher with gpg keys XXXXXXXX XXXXXXX) fatal: remote myremote already exists. 
-     git-annex: git [Params \"remote add\",Param \"myremote\",Param \"gcrypt::XXXXXXXXXXX:gcrypt-tests\"] failed
-
-this is my git-annex version info: 
-
-     git-annex version: 5.20141125 
-     build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash 
-     key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL 
-     remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external 
-     local repository version: 5 
-     supported repository version: 5 
-     upgrade supported from repository versions: 0 1 2 4
-
-am I doing something wrong? thank you Giovanni
-
-"""]]
diff --git a/doc/encryption/comment_2_5c2da865082de475254ebfd53feb2d0a._comment b/doc/encryption/comment_2_5c2da865082de475254ebfd53feb2d0a._comment
deleted file mode 100644
--- a/doc/encryption/comment_2_5c2da865082de475254ebfd53feb2d0a._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2015-07-06T19:57:12Z"
- content="""
-@Giovanni, git is complaining that there is already a remote named
-"myremote" enabled in the current repository. Perhaps you have reused this
-name for a different remote.
-
-(This seems to have nothing to do with the page the comment was posted to, which 
-is a bit annoying. Please post questions in the forum and not attached to
-random other pages.)
-"""]]
diff --git a/doc/encryption/comment_3_46e64e4856975706e06e2a012a5d8f67._comment b/doc/encryption/comment_3_46e64e4856975706e06e2a012a5d8f67._comment
deleted file mode 100644
--- a/doc/encryption/comment_3_46e64e4856975706e06e2a012a5d8f67._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="whlabratz@d10941ab2681deb87122fd8f6da51f3dcdb8dbe5"
- nickname="whlabratz"
- subject="Listing GPG keys enabled for a remote with hybrid encryption"
- date="2015-09-15T22:37:35Z"
- content="""
-Is there a straight-forward way to list which GPG keys are enabled for a particular remote?
-"""]]
diff --git a/doc/encryption/comment_4_fe8b181adef9a39a039ff96a0d587188._comment b/doc/encryption/comment_4_fe8b181adef9a39a039ff96a0d587188._comment
deleted file mode 100644
--- a/doc/encryption/comment_4_fe8b181adef9a39a039ff96a0d587188._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""listing gpg keys"""
- date="2015-09-17T17:01:38Z"
- content="""
-Run "git annex info specialremote" and it will describe the encryption
-settings of the remote, including gpg keys where applicable.
-
-Needs a fairly recent git-annex. `git show git-annex:remote.log` can
-also be used.
-"""]]
diff --git a/doc/encryption/comment_5_5c9897663aaa83ca39a7e8cb292a3fd1._comment b/doc/encryption/comment_5_5c9897663aaa83ca39a7e8cb292a3fd1._comment
deleted file mode 100644
--- a/doc/encryption/comment_5_5c9897663aaa83ca39a7e8cb292a3fd1._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="gavinwahl@d3a94ffbd6df3b8833a53ff11ec435f58f7c44a9"
- nickname="gavinwahl"
- subject="Shared key - how many keys?"
- date="2016-04-03T03:43:58Z"
- content="""
-In shared mode, is a single key used to encrypt every file in the repository? Or is a new key created for each file?
-
-Shared mode has the properties I need - getting access to the git repo should give you access to all the content. BUT, if one loses access to updates to the git repo, they should not have access to files added after they lost access.
-"""]]
diff --git a/doc/encryption/comment_6_1756ce62906586f876a3491e5d9befde._comment b/doc/encryption/comment_6_1756ce62906586f876a3491e5d9befde._comment
deleted file mode 100644
--- a/doc/encryption/comment_6_1756ce62906586f876a3491e5d9befde._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 6"""
- date="2016-04-04T18:48:34Z"
- content="""
-@gavinwahl, it's a single shared key that any clone of the repository
-provides access to.
-
-If you use the [[tahoe]] special remote, storing files in tahoe-lafs does result
-in a new capability (a kind of key) being stored in the git repo.
-So someone with an old clone can't access the files from tahoe-lafs.
-Tahoe is unique in providing that ability.
-"""]]
diff --git a/doc/favicon.ico b/doc/favicon.ico
deleted file mode 100644
Binary files a/doc/favicon.ico and /dev/null differ
diff --git a/doc/footer/column_a.mdwn b/doc/footer/column_a.mdwn
deleted file mode 100644
--- a/doc/footer/column_a.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-### Recent [[news]]
-
-[[!inline pages="news/* and !*/Discussion" archive=yes show=2 feeds=no]]
-
-### [[devblog|devblog]]
-
-[[!inline pages="devblog/* and !*/Discussion" archive=yes show=5 feeds=no]]
diff --git a/doc/footer/column_b.mdwn b/doc/footer/column_b.mdwn
deleted file mode 100644
--- a/doc/footer/column_b.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-### Recent [[videos]]
-
-[[!inline pages="videos/* and !*/Discussion" archive=yes show=2 feeds=no]]
-
-### Recent [[forum posts|forum]]
-
-[[!inline pages="forum/* and !*/Discussion" archive=yes show=5 feeds=no]]
diff --git a/doc/forum.mdwn b/doc/forum.mdwn
deleted file mode 100644
--- a/doc/forum.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a place to discuss using git-annex.
-If you need help, advice, or anything, post about it here.
-
-But, please don't post bug reports here. Put them in [[bugs]].  
-And please don't make wishlist requests here. Put them in [[todo]].  
-(If you post bugs/todo here, it'll just get moved.)
-
-[[!inline pages="forum/* and !*/Discussion" archive=yes rootpage=forum postformtext="Add a new thread titled:"]]
diff --git a/doc/forum/4hr+_sync_on_new_remote___40__USB_drive__41__.mdwn b/doc/forum/4hr+_sync_on_new_remote___40__USB_drive__41__.mdwn
deleted file mode 100644
--- a/doc/forum/4hr+_sync_on_new_remote___40__USB_drive__41__.mdwn
+++ /dev/null
@@ -1,92 +0,0 @@
-I need some help understanding what would cause ``git-annex sync`` to still be running 4hrs+ on a new remote (FAT32 USB drive - BTEST) ? From all my searching, it appears to be part of git's optimization routines. But to be this long and slow seems odd. Also I am not sure what there would be optimize since it's a brand new remote ? The src (WTEST) doesn't seem to show any need to run ``git gc``.
-
-I followed the walkthrough's setup of a remote and followed that up with ``git-annex sync``. I did not specify the source for the sync as there is only one other (WTEST). The content is mostly ISO files and Win32 executables in 7 separate commits. In between ``git-annex import`` and ``git commit``, the working directory was removed with ``git rm '*'`` but no ``git-annex drop``. There were lots of duplicate files and it truly was satisfying to not see the disk usage increase. My backend is also MD5E for purposes of quicker imports and ease of hash lookup from other sources.
-
-I would like to have 20-30 USB remotes. The length of time to get one remote up and running at this point is horrendous. Other people seem to have better experiences with it. Only odd thing that I see with my configuration is that the remote FAT32 drive is in ``indirect`` mode. My understanding is that ``git-annex`` would automatically switch to ``direct`` if it detected a filesystem that did not support symbolic links. 
-
-What is wrong with my setup ? How can I fix it ?
-
-Here's the basic config of WTEST.
-
-[[!format sh """
-
-WTEST$ git-annex info
-
-repository mode: indirect
-trusted repositories: 0
-semitrusted repositories: 4
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        98dfasdf-ab83-4a0e-8b73-4dfasffdsaff1ae -- WTEST [here]
-        9dfdsfdf8-c5d5-4761-ab67-ffsadfsadfsa83 -- BTEST
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 488.16 gigabytes (+1 megabyte reserved)
-local annex keys: 57327
-local annex size: 58.57 gigabytes
-annexed files in working tree: 4322
-size of annexed files in working tree: 6.82 gigabytes
-bloom filter size: 16 mebibytes (11.5% full)
-backend usage:
-        MD5E: 61649
-"""]]
-
-[[!format sh """
-WTEST$git object-count -v
-
-count: 521829
-size: 66794240
-in-pack: 0
-packs: 0
-size-pack: 0
-prune-packable: 0
-garbage: 0
-size-garbage: 0
-"""]]
-
-
-[[!format sh """
-WTEST$git config -l
-
-core.repositoryformatversion=0
-core.filemode=false
-core.bare=false
-core.logallrefupdates=true
-core.ignorecase=true
-core.precomposeunicode=true
-annex.uuid=98dfasdf-ab83-4a0e-8b73-4dfasffdsaff1ae
-annex.sshcaching=false
-annex.version=5
-annex.backends=MD5E
-annex.queuesize=102400
-annex.genmetadata=true
-remote.BTEST.url=/Volumes/BTEST
-remote.BTEST.fetch=+refs/heads/*:refs/remotes/BTEST/*
-remote.BTEST.annex-uuid=9dfdsfdf8-c5d5-4761-ab67-ffsadfsadfsa83
-"""]]
-
-**The long running sync.**
-
-[[!format sh """ 
-BTEST$ git-annex sync
-
-commit  ok
-
-pull origin
-
-Auto packing the repository for optimum performance. You may also
-
-run "git gc" manually. See "git help gc" for more information.
-
-Counting objects: 521834, done.
-
-Delta compression using up to 4 threads.
-
-Compressing objects:  12% (59687/462488)
-"""]]
-
-**Update 7hrs later:**
-
-[[!format sh """
-Writing objects:  70% (366184/521834)
-"""]]
diff --git a/doc/forum/ARM_build_on_Zyxel_NAS.mdwn b/doc/forum/ARM_build_on_Zyxel_NAS.mdwn
deleted file mode 100644
--- a/doc/forum/ARM_build_on_Zyxel_NAS.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I am trying to run the linux standalone ARM build on my Zyxel NAS, but I get the following error
-
-`FATAL: kernel too old`
-
-The system runs the following:
-
-`
-uname -a
-`
-
-`
-Linux nas 2.6.31.8 #2 Thu Dec 19 14:31:05 CST 2013 armv5tel GNU/Linux
-`
-
-Help would be much appreciated.  
diff --git a/doc/forum/A_git-annex_helper.mdwn b/doc/forum/A_git-annex_helper.mdwn
deleted file mode 100644
--- a/doc/forum/A_git-annex_helper.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-I have developed a [sort-of-a-GUI](http://github.com/atrent/AdMinchiam/tree/master/ga-gui) for git-annex and I'd like you to test it if you have time, see README and [screenshots](http://github.com/atrent/AdMinchiam/blob/master/ga-gui/Screenshots/GitAnnexGUI_020.png), the idea is very simple: visually tag items then generate a script based on editable templates.
-
-The only problem at the moment is the very slow git-annex data acquisition; not my fault, on very large annexes, in terms of number of files, the 'git-annex list' and 'git-annex metadata' commands take AGES...
-
-Thank you
diff --git a/doc/forum/A_little_help_with_headless_server_configuration.mdwn b/doc/forum/A_little_help_with_headless_server_configuration.mdwn
deleted file mode 100644
--- a/doc/forum/A_little_help_with_headless_server_configuration.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Attempting to setup a multiple server file share. I am really not sure how to configure and setup the headless system for sharing? Seems easy enough with the webapp and have my windows system appear to be working not sure how to get my Linux headless systems to sync up as well any help would be greatly appreciated.
-
diff --git a/doc/forum/A_really_stupid_question.mdwn b/doc/forum/A_really_stupid_question.mdwn
deleted file mode 100644
--- a/doc/forum/A_really_stupid_question.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Sorry, but all this wiki and the manpage seem to gloss over the most obvious question:
-
-What happens when you commit conflicting edits in different repositories?
diff --git a/doc/forum/A_tiny_filesystem__63__.mdwn b/doc/forum/A_tiny_filesystem__63__.mdwn
deleted file mode 100644
--- a/doc/forum/A_tiny_filesystem__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-First of all, thanks for the amazing work! I've already tried Owncloud, SparkleShare, Unison, rsync and lsycnd. Finally I may have found the real deal.
-
-My main problem with git-annex right now is that it is not fast/reliable enough. The main issues being: broken links now and then (I've probably done something wrong) and the slow: "startup scans", "consistency checks", "attempting to fix here" and "syncing with server". (50 Giga, Work-Server-Home, setup via webapp assistant)
-
-Please, tell me if I'm wrong, but I have the impression that git-annex would get much more robust if it was 100% sure that nobody could mess with its file tree. One possibility would be to add the option (when creating a repo) to make a protected filesystem controlled by git-annex only via FUSE (not something like ShareBox). This could be a tiny filesystem (such as loggedfs) that does nothing but make sure that only git-annex can mount/change files. This would definitely add to speed (reducing checks) and stability.
-
-I'm I being too naive? Most likely there is something I'm overlooking, like the amount of work this would involve.
diff --git a/doc/forum/Accessing_files_directly_on__a_USB_device.mdwn b/doc/forum/Accessing_files_directly_on__a_USB_device.mdwn
deleted file mode 100644
--- a/doc/forum/Accessing_files_directly_on__a_USB_device.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Using the assistant, I have created a repository on my laptop plus a synced repository on a USB disk. Looking into the first repository, I see my files accompanied by a .git directory. However, looking on the USB disk (e.g. /media/usb/annex), all I see is what looks like the content of a .git directory.
-
-This means that it is difficult to retrieve any file directly from this disk -- it has to be synced to another local repository first.
-
-Is there any way to change this ? E.g. to have a copy of the working tree, plus a .git directory, on the disk ?
-
-My use case: I have added plenty of media files to my repository. In addition to using the USB disk as a backup/medium for transfering these files to another computer, I'd like to be able to plug the disk to e.g. a media player and read the files directly from the tree, but it does not work at the moment.
-
-Is there anything I am missing ?
-
-Edited: yes, there is something I was missing: the forum entry at [[forum/USB_backup_with_files_visible/]]
diff --git a/doc/forum/Accessing_files_in_bare_repository.mdwn b/doc/forum/Accessing_files_in_bare_repository.mdwn
deleted file mode 100644
--- a/doc/forum/Accessing_files_in_bare_repository.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I have set up a remote server repository using the git-annex web assistant, accessed via ssh. The repository is a bare one according to the config file in the annex directory on the server.
-
-I am wondering how I could access any of the files in the repository while logged in to the server - they don't have their usual file names to look for clearly. Is there a way to get a list of the files for starters? I tried using git annex find, but it never returns any files. git annex get followed by a filename of a document in the repository also doesn't work.
-
-Thanks to help me understand better how to approach this.
diff --git a/doc/forum/Add_a___34__local__34___remote.mdwn b/doc/forum/Add_a___34__local__34___remote.mdwn
deleted file mode 100644
--- a/doc/forum/Add_a___34__local__34___remote.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I have been playing around with annex assistent today (way late as I am one of the Kickstarter backers) and found the following puzzling.
-
-I am running a fairly new version, my package manager calls it 4.20130323 (git-annex does not seem to have a --version switch). 
-
-I have been playing around with the annex assistent webapp today and have the following questions/observations: 
-
-1) The "remote" server creates a bare git repository as far as I can tell, the "local computer" probably does the right thing (but I cannot run it as the "other box" has no X or browser). Is there any way to remotely create a "local" copy (i.e. non-bare git repository, which can later be managed by the cli?)
-2) It seems like git-annex-assistent (webapp) binds to localhost, is it possible to let it bind to either a specific ip-address (or all)? (Yes, I understand the security implications, but the use-case is the box from question 2 - i.e. on local network but no X and no browser). 
-3) what is being launched when I hit "files", on the video it starts a file-manager on my box nothing happens (and no errors as far as I can tell). 
-
-Thank you in advance
-
-Svenne
diff --git a/doc/forum/Add_annex_files_outside_git_root_directory.mdwn b/doc/forum/Add_annex_files_outside_git_root_directory.mdwn
deleted file mode 100644
--- a/doc/forum/Add_annex_files_outside_git_root_directory.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Hi,
-
-I love the idea of git-annex, and I'm trying to do my first steps with it. I'm stuck on the following issue:
-
-When creating a git repository and annexing a file in the root directory, everything works as expected:
-
-    git init
-    git annex init "mytest"
-    echo 1 > annexfile
-    git annex add annexfile
-    # add annexfile ok
-    # (Recording state in git...)
-
-However, when I try to add a file in a subdirectory of the repository, the adding command fails without any error message:
-
-    mkdir mydir
-    echo 1 > mydir/myfile
-    git annex add mydir/myfile
-    # no message, no status change, nothing
-    # note that I can add the file in the root dir and then move it to `mydir`
-
-Am I doing something wrong here?
-
-Thank you!
diff --git a/doc/forum/Add_file_to_git_index_while_in_direct_mode.mdwn b/doc/forum/Add_file_to_git_index_while_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Add_file_to_git_index_while_in_direct_mode.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Hi, 
-
-Is there a preferred way to add files to git's index (instead of the annex) while in direct mode? 
-
-I am trying to use git-annex for scientific data. On linux and mac in indirect mode, the git workflow is basically unchanged, and I really like the way git annex works. Unfortunately when I use git-annex on Windows, I have not found a good way to add things to git's tree. 
-
-I've tried two things:
-
-```
-$ git annex proxy -- git add smallfile
-```
-
-This is slow because it has to copy things over to create a work tree
-
-```
-$ git config annex.largefiles="*.pdf or *.h5"
-$ git annex add largefile.pdf
-```
-
-This doesn't seem to work as well as I'd like either. I'd like the equivalent of a ```git add``` command in direct mode.
diff --git a/doc/forum/Adding_a_mounted_network.mdwn b/doc/forum/Adding_a_mounted_network.mdwn
deleted file mode 100644
--- a/doc/forum/Adding_a_mounted_network.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I would like to add (bare) repositories on network directories that are locally mounted. "Add more repositories" gives me many choices, which apparently does not include this specifically. It does have "Removable drive" which sees the CIFS directory (perhaps because it's under /media?) but not the AFS directory, and there doesn't seem to be a way to enter a path where it's not inclined to look ("rescan for removable drives" still misses /afs). I am comfortable using shell commands, but I don't know what commands to use.
diff --git a/doc/forum/Adding_existing_S3_bucket_to_sync_with.mdwn b/doc/forum/Adding_existing_S3_bucket_to_sync_with.mdwn
deleted file mode 100644
--- a/doc/forum/Adding_existing_S3_bucket_to_sync_with.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Hello,
-
-I am just starting to learn git-annex so forgive me if this is a naive question.
-
-I have the following repositories:
-
-1. Home (laptop)
-2. Work (mac mini)
-3. S3 bucket
-4. USB drive, full backup, attached to Home laptop.
-
-I want to sync files between Home and Work via the S3 bucket.  It is not clear to me how to accomplish this through the git-annex assistant.  Is this possible? Are there instructions online?
-
-Thanks in advance!
-
-Scott
diff --git a/doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite.mdwn b/doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite.mdwn
deleted file mode 100644
--- a/doc/forum/Adding_files_with_wildcard_on_Mac_Yosemite.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I've been trying to get all image files added to git annex with a wildcard, with no luck. If I use 'git annex add image.jpg', the file gets added and I can commit it. Also using 'git annex add .' works for adding all files. 
-
-Comands I've tried-
-
-git annex add *.jpg     * This outputs to the screen that it's adding each .jpg it finds, but when I go to commit there are 0 files staged.
-
-git annex add . --include='*.jpg'   * This doesn't return any results.
-
-
-What command should I be using on a Mac to just add all files with a specific extension?
diff --git a/doc/forum/Adding_normal___40__non-annexed__41___files_in_Windows.mdwn b/doc/forum/Adding_normal___40__non-annexed__41___files_in_Windows.mdwn
deleted file mode 100644
--- a/doc/forum/Adding_normal___40__non-annexed__41___files_in_Windows.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Hi,
-I'm working on a game project (Unity3D) which I want to use git-annex for all those binary assets,
-
-but I still want to be able to commit normal code files in git,
-
-is there a way to do that?
-
-below is what I tried (but failed) to do.
-
-Thanks.
-
-Chris
-
-
-
-    C:\Users\Chris\Projects\testing>git annex init "testing"
-    init testing
-      Detected a filesystem without fifo support.
-    
-      Disabling ssh connection caching.
-    
-      Detected a crippled filesystem.
-    
-      Enabling direct mode.
-    ok
-    (recording state in git...)
-    
-    C:\Users\Chris\Projects\testing>echo test > testing.txt
-    
-    C:\Users\Chris\Projects\testing>git add testing.txt
-    fatal: This operation must be run in a work tree
diff --git a/doc/forum/Advice_needed__58___git-annex_slows_down_my_macbook.mdwn b/doc/forum/Advice_needed__58___git-annex_slows_down_my_macbook.mdwn
deleted file mode 100644
--- a/doc/forum/Advice_needed__58___git-annex_slows_down_my_macbook.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-I need some advice from more experienced users. 
-
-I've created four repositories on my macbook and paired them with repos on my ubuntu desktop. They are all created with the webapp so they might have some configurations that are not optimal for me.
-
-In fact, when I start my macbook it is unusual for more than an hour because git-annex is reading and writing to and from the disk in the background. 
-
-I don't change much in three of the four repos, only one repo contains my daily work. 
-
-What configuration would enhance my situation?
-
-The four repos are called:
-
-- movies
-- pictures
-- music
-- documents (many changes each day)
-
-I have also problems to switch to the documents repo in the webapp.
-
-TIA
-juh
diff --git a/doc/forum/All_repos_on_same_filesystem.mdwn b/doc/forum/All_repos_on_same_filesystem.mdwn
deleted file mode 100644
--- a/doc/forum/All_repos_on_same_filesystem.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hi,
- I am looking to find out the best way to use git annex, when all repos will live on the same filesystem, using a central repo.
-
-What I have so far is, after creating the main repo (mainrepo).
-
-Create clones via: git clone -shared mainrepo clonerepo
-
-Then  use "git annex add" and "git add". When it comes to making the data accessible to the mainrepo, it is a little unclear to me. 
-There is a lot of disjoint information regarding pull/pushing content and which directions use hardlinks vs copies etc. So I 
-was hoping that someone could fill me in on best practices.
-
-Thanks in advance!
-
-Pete
diff --git a/doc/forum/Alternative_to_XMPP_on_Windows__63__.mdwn b/doc/forum/Alternative_to_XMPP_on_Windows__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Alternative_to_XMPP_on_Windows__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is there an alternative to XMPP to sync Windows machines?
diff --git a/doc/forum/Always_sync_all_content_to_remote.mdwn b/doc/forum/Always_sync_all_content_to_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Always_sync_all_content_to_remote.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I am trying to set up two repositories, one on my laptop and one on my server, and then have "git annex sync" always push everything on the laptop to the server.
-
-So far, I have created repositories on the laptop and on the server and then added the server as an ssh remote on the laptop. At the root of the repository on the server, I ran "git annex group . backup" and "git annex wanted . standard". At the root of the repository on the laptop, I ran "git annex group . manual" and "git annex wanted . standard". When I run "git annex sync" or "git annex sync --content" on the laptop now, it seems to only copy the symlink information to the server but not the actual data. When I go to the server and run git annex sync, it updates the working tree symlinks but does not have the content data they point to. If I use "git annex copy file --to server" then the symlink created when I ran "git annex sync" on the server points to the correct file. Do I not have the correct content preferences set up? Or do I need to alias "git annex sync --content" to "git annex sync --content && git annex copy . --to server" on the laptop?
-
-I want to be able to drop large amounts of data from the laptop and get it back if needed but always have it available on the server any way without having to push it explicitly. I would think that this would be a fairly common use case. Maybe I have missed something in the documentation? I have not set up the laptop as a remote on the server (I'd prefer not to -- I only plan to push/pull from the laptop, not push/pull from the server).
diff --git a/doc/forum/Ambigous_argument___40__unknown_revision_or_path__41__.mdwn b/doc/forum/Ambigous_argument___40__unknown_revision_or_path__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Ambigous_argument___40__unknown_revision_or_path__41__.mdwn
+++ /dev/null
@@ -1,148 +0,0 @@
-Okey, so I set up a repo on a client computer with files in a directory. All went fine without errors. Then I created the remote server in backup mode. Everything went well with the sync. Back at the office I now want the same repo content on this computer, so I fire up the assistant, add a local repo directory (empty of course) and then add a remote server. Then this happens
-
-    [2014-11-05 09:17:24 CET] main: Syncing with server__volume1_work_user_work
-    From ssh://git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work
-     * [new branch]      git-annex  -> server__volume1_work_user_work/git-annex
-     * [new branch]      master     -> server__volume1_work_user_work/master
-     * [new branch]      synced/git-annex -> server__volume1_work_user_work/synced/git-annex
-     * [new branch]      synced/master -> server__volume1_work_user_work/synced/master
-    (merging server__volume1_work_user_work/git-annex server__volume1_work_user_work/synced/git-annex into git-annex...)
-    (Recording state in git...)
-    fatal: ambiguous argument 'refs/heads/synced/master..refs/remotes/server__volume1_work_user_work/synced/master': unknown revision or path not in the working tree.
-    Use '--' to separate paths from revisions, like this:
-    'git <command> [<revision>...] -- [<file>...]'
-
-    Automatic merge went well; stopped before committing as requested
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-       3943547..00aa6bd  git-annex -> synced/git-annex
-     ! [rejected]        annex/direct/master -> synced/master (non-fast-forward)
-    error: failed to push some refs to 'ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/'
-    hint: Updates were rejected because a pushed branch tip is behind its remote
-    hint: counterpart. Check out this branch and integrate the remote changes
-    hint: (e.g. 'git pull ...') before pushing again.
-    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
-    [2014-11-05 09:20:09 CET] Pusher: Syncing with server__volume1_work_user_work
-    [2014-11-05 09:20:09 CET] Committer: Committing changes to git
-    (Recording state in git...)
-
-    SHA256E-s1570--7437c0b77825d2636723cde82f0094854357aec43619b7d62707b5c26c4b0379.c
-
-                  0   0%    0.00kB/s    0:00:00
-              1,570 100%    1.50MB/s    0:00:00 (xfr#1, to-chk=0/1)
-    [2014-11-05 09:20:10 CET] Transferrer: Downloaded timing_ds20.c
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-       0e52256..2515592  annex/direct/master -> synced/master
-    error: Ref refs/heads/synced/master is at 2515592b1a0b2a355b5334c315d8857619b4a9c3 but expected 0e522560b9b6f0e52f789187e2fbd9076174bc4b
-    remote: error: failed to lock refs/heads/synced/master
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-     ! [remote rejected] annex/direct/master -> synced/master (failed to lock)
-    error: failed to push some refs to 'ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/'
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-     * [new branch]      git-annex -> refs/synced/a455ea74-d6fe-4f82-b796-72c20fc113fd/git-annex
-     * [new branch]      annex/direct/master -> refs/synced/a455ea74-d6fe-4f82-b796-72c20fc113fd/annex/direct/master
-
-    SHA256E-s7--19d210b22987ea279fe707c89b3afdbe530537118d3bac62c722b6ec54901e5a
-
-                  0   0%    0.00kB/s    0:00:00
-                  7 100%    6.84kB/s    0:00:00 (xfr#1, to-chk=0/1)
-    [2014-11-05 09:20:13 CET] Transferrer: Downloaded somefile
-    [2014-11-05 09:20:13 CET] Pusher: Syncing with server__volume1_work_user_work
-    (Recording state in git...)
-
-    SHA256E-s7762408--27c11674fe8c0b23f469aa90342dd45bf9ec9c83108251985b3231178f0f4ed5.pdf
-
-                  0   0%    0.00kB/s    0:00:00
-          5,406,720  69%    5.12MB/s    0:00:00
-          7,762,408 100%    5.01MB/s    0:00:01 (xfr#1, to-chk=0/1)
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-       00aa6bd..841a157  git-annex -> synced/git-annex
-    [2014-11-05 09:20:16 CET] Transferrer: Downloaded anotherfile.pdf
-
-    SHA256E-s322841--452ddf060131e1cfe44a02ee23840494d4566c4b1ad58f0131d52f17fbf65ea2.pdf
-
-And then it continues transfering the files. Then this happens
-
-    error: Ref refs/heads/synced/git-annex is at 4a802d679a5a7e2eae3c16b2ed0a8d724b665b0a but expected 45004c24db2eb24dddc04d1542d3689aa27b9507
-    remote: error: failed to lock refs/heads/synced/git-annex
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-     ! [remote rejected] git-annex -> synced/git-annex (failed to lock)
-    error: failed to push some refs to 'ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/'
-    [2014-11-05 10:13:48 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","push","server__volume1_work_user_work","master"]
-
-    SHA256E-s115543--4aca4053b23d914ea034f06439edcb7d3d9bcc24b5d9865f5e062394ca1263e0
-   
-                  0   0%    0.00kB/s    0:00:00
-            115,543 100%    2.98MB/s    0:00:00 (xfr#1, to-chk=0/1)
-    [2014-11-05 10:13:48 CET] feed: ssh ["-S",".git/annex/ssh/abf79f467a5dcf714ddaf5162ffc09ba","-o","ControlMaster=auto","-o","ControlPersist=yes","-T","username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork","git-annex-shell 'transferinfo' '/volume1/work_user/work/' 'SHA256E-s115543--4aca4053b23d914ea034f06439edcb7d3d9bcc24b5d9865f5e062394ca1263e0' --uuid 05bdd8d5-da30-4024-a921-0f8b1a2f33df '--' 'remoteuuid=a455ea74-d6fe-4f82-b796-72c20fc113fd' 'associatedfile=pathtosomefile' '--'"]
-    [2014-11-05 10:13:48 CET] NetWatcherFallback: trying manual pull to resolve failed pushes
-    [2014-11-05 10:13:48 CET] call: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","fetch","server__volume1_work_user_work"]
-    [2014-11-05 10:13:48 CET] Watcher: add symlink pathtosomefile
-    [2014-11-05 10:13:48 CET] Transferrer: Downloaded file
-    [2014-11-05 10:13:48 CET] TransferWatcher: transfer finishing: Transfer {transferDirection = Download, transferUUID = UUID "05bdd8d5-da30-4024-a921-0f8b1a2f33df", transferKey = Key {keyName = "4aca4053b23d914ea034f06439edcb7d3d9bcc24b5d9865f5e062394ca1263e0", keyBackendName = "SHA256E", keySize = Just 115543, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}}
-    [2014-11-05 10:13:48 CET] Transferrer: Transferring: Download UUID "05bdd8d5-da30-4024-a921-0f8b1a2f33df" pathtosomefile2 Nothing
-    [2014-11-05 10:13:48 CET] TransferWatcher: transfer starting: Download UUID "05bdd8d5-da30-4024-a921-0f8b1a2f33df" SHA256E-s145572--50e4d0d2fa52fb6843258509637307b8efc87d31abab834e7bc3174296689e25 Nothing
-    [2014-11-05 10:13:48 CET] TransferWatcher: transfer starting: Download UUID "05bdd8d5-da30-4024-a921-0f8b1a2f33df" pathtosomefile2 Nothing
-    [2014-11-05 10:13:48 CET] read: rsync ["--progress","--inplace","--perms","-e","'ssh' '-S' '.git/annex/ssh/abf79f467a5dcf714ddaf5162ffc09ba' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=yes' '-T' 'username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork' 'git-annex-shell ''sendkey'' ''/volume1/work_user/work/'' ''SHA256E-s145572--50e4d0d2fa52fb6843258509637307b8efc87d31abab834e7bc3174296689e25'' --uuid 05bdd8d5-da30-4024-a921-0f8b1a2f33df ''--'' ''remoteuuid=a455ea74-d6fe-4f82-b796-72c20fc113fd'' ''direct=1'' ''associatedfile=pathtosomefile2'' ''--'''","--","dummy:","/home/officeusername/work/.git/annex/tmp/SHA256E-s145572--50e4d0d2fa52fb6843258509637307b8efc87d31abab834e7bc3174296689e25"]
-    [2014-11-05 10:13:49 CET] Committer: committing 2 changes
-    [2014-11-05 10:13:49 CET] Committer: Committing changes to git
-    (Recording state in git...)
-    [2014-11-05 10:13:49 CET] feed: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","update-index","-z","--index-info"]
-    [2014-11-05 10:13:49 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","symbolic-ref","HEAD"]
-    [2014-11-05 10:13:49 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","show-ref","--hash","refs/heads/annex/direct/master"]
-    [2014-11-05 10:13:49 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","write-tree"]
-    [2014-11-05 10:13:49 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","rev-parse","2515592b1a0b2a355b5334c315d8857619b4a9c3:"]
-    [2014-11-05 10:13:49 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","symbolic-ref","HEAD"]
-    [2014-11-05 10:13:49 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","show-ref","refs/heads/annex/direct/master"]
-    [2014-11-05 10:13:49 CET] call: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","branch","-f","synced/master"]
-    [2014-11-05 10:13:49 CET] call: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","branch","-f","master"]
-    drop server__volume1_work_user_work pathtosomefile2
-    [2014-11-05 10:13:49 CET] call: ssh ["-S",".git/annex/ssh/abf79f467a5dcf714ddaf5162ffc09ba","-o","ControlMaster=auto","-o","ControlPersist=yes","-T","username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork","git-annex-shell 'dropkey' '/volume1/work_user/work/' '--quiet' '--force' 'SHA256E-s674028--398092ddec93e33310ca8be87b4d48b2c84a873b579b80002cad3738c1461266' --uuid 05bdd8d5-da30-4024-a921-0f8b1a2f33df"]
-
-    SHA256E-s145572--50e4d0d2fa52fb6843258509637307b8efc87d31abab834e7bc3174296689e25
-
-Again it transfer some files...and then
-
-    error: Ref refs/heads/synced/git-annex is at ac6d09794a274e861db1ef00295e361e15d85ca3 but expected 4a802d679a5a7e2eae3c16b2ed0a8d724b665b0a
-    remote: error: failed to lock refs/heads/synced/git-annex
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-     ! [remote rejected] git-annex -> synced/git-annex (failed to lock)
-    error: failed to push some refs to 'ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/'
-    [2014-11-05 10:13:52 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","push","server.me__volume1_work_user_work","master"]
-
-          8,454,144   2%    2.67MB/s    0:02:24  [2014-11-05 10:13:53 CET] NetWatcherFallback: fallback pushing to [Remote { name ="server__volume1_work_user_work" }]
-    [2014-11-05 10:13:53 CET] call: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","push","server.me__volume1_work_user_work","+git-annex:refs/synced/a455ea74-d6fe-4f82-b796-72c20fc113fd/git-annex","refs/heads/annex/direct/master:refs/synced/a455ea74-d6fe-4f82-b796-72c20fc113fd/annex/direct/master"]
-
-         12,058,624   2%    2.86MB/s    0:02:13  To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-       00aa6bd..ac6d097  git-annex -> refs/synced/a455ea74-d6fe-4f82-b796-72c20fc113fd/git-annex
-
-         16,875,520   4%    3.34MB/s    0:01:53  [2014-11-05 10:13:55 CET] Pusher: Syncing with server__volume1_work_user_work
-
-Again
-
-    error: Ref refs/heads/synced/git-annex is at 383d9581c2722ab87647cf26f1ab8f25758866a4 but expected d158cddb1055adbe44973208d5562961acb0c42b
-    remote: error: failed to lock refs/heads/synced/git-annex
-    To ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/
-     ! [remote rejected] git-annex -> synced/git-annex (failed to lock)
-    error: failed to push some refs to 'ssh://username@git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work/'
-    [2014-11-05 11:13:58 CET] read: git ["--git-dir=/home/officeusername/work/.git","--work-tree=/home/officeusername/work","-c","core.bare=false","push","server__volume1_work_user_work","master"]
-    ok
-    [2014-11-05 11:13:58 CET] dropped somefile (from UUID "05bdd8d5-da30-4024-a921-0f8b1a2f33df") (copies now 2) : file renamed
-    [2014-11-05 11:13:58 CET] TransferWatcher: transfer starting: Download UUID "05bdd8d5-da30-4024-a921-0f8b1a2f33df" someotherfile Nothing
-
-Then some other stuff
-
-    error: Ref refs/remotes/server__volume1_work_user_work/synced/git-annex is at 2e867456306f9ac0dd61e29c221ea3968dc4cb70 but expected 086e08a168498b84a74065c1f71e114a9868867d
-    From ssh://git-annex-server-username_7000_.2Fvolume1.2Fwork_user.2Fwork/volume1/work_user/work
-    ! 086e08a..2e86745  synced/git-annex -> server__volume1_work_user_work/synced/git-annex  (unable to update local ref)
-
-And so on. When submitting this, the system is still transfering files (arrow pointing to the left, so that has to be from the server to the office computer I suppose). Checking the office computer file index by running
-
-    git ls-files | wl -l
-
-yields the expected number of files. So, in addition to the errors above this seems a bit strange to me that it is still transferring files.
-
-Thinking about the error messages above...is it so that the download and git repo updates work in parallel, so if git tries to update on a partly transferred files the checksum is wrong and then I get the errors above? If so, is the file transferred again later and is there a way to suppress the "failed to sync" in the webapp? 
-
-Another thing, then I add the remote server it automatically goes into transfer mode, even though I configured it to be a backup from home before coming into the office. Maybe it is not autodetected. Would it cause problem to later change it from transfer to backup mode?
-
-Hope someone can point me in the right direction. And thanks in advance!
diff --git a/doc/forum/Ambiguous_repo_names__63__.mdwn b/doc/forum/Ambiguous_repo_names__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Ambiguous_repo_names__63__.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-The output of `git annex info` includes this:
-
- 	34xx3351-xx14-4039-6xxx-xxx9x5xxxxxx -- wx550 (wx312)
- 	9x9x07xx-x6x9-464x-7x5x-x3xx42xx7x70 -- wx550
-
-What does this mean? Do I have two different repos both named wx550?
-What is wx312? 
-
diff --git a/doc/forum/Android_-_ext3__47__4__47__....mdwn b/doc/forum/Android_-_ext3__47__4__47__....mdwn
deleted file mode 100644
--- a/doc/forum/Android_-_ext3__47__4__47__....mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is there a good way to use a ext4 formated external sdcard on a rooted android with symlinks. If android mounts it (with the sdcard command i think) symlinks don't work. If i mount it with mount the permissions are a problem because every app has a different user.
diff --git a/doc/forum/Android__58___Cabal_hell.mdwn b/doc/forum/Android__58___Cabal_hell.mdwn
deleted file mode 100644
--- a/doc/forum/Android__58___Cabal_hell.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-I tried to build the Android app according to the instructions on [the install page](https://git-annex.branchable.com/install/Android/).
-
-But during step 2 (In the chroot, run install-haskell-packages) cabal fails to handle the dependencies correctly. So I tried to change the standalone/android/cabal.config file to update all the dependencies, but this had me running into something I think is unresolvable in another package's
-dependencies. Eventually I had the following output:
-
-    # ./standalone/android/install-haskell-packages 
-    Downloading the latest package list from hackage.haskell.org
-    Skipping download: Local and remote files match.
-    /home/repo/git-annex /home/repo/git-annex/standalone/android
-    Resolving dependencies...
-    cabal: Could not resolve dependencies:
-    trying: git-annex-6.20160318 (user goal)
-    trying: persistent-template-2.1.6/installed-08b... (dependency of
-    git-annex-6.20160318)
-    next goal: monad-control (dependency of git-annex-6.20160318)
-    rejecting: monad-control-1.0.0.5/installed-cac..., 1.0.0.5, 1.0.0.4, 1.0.0.3,
-    1.0.0.2, 1.0.0.1, 1.0.0.0, 0.3.3.1, 0.3.3.0, 0.3.2.3 (global constraint
-    requires ==0.3.2.2)
-    rejecting: monad-control-0.3.2.2 (conflict: persistent-template =>
-    monad-control==1.0.0.5/installed-cac...)
-    rejecting: monad-control-0.3.2.1, 0.3.2, 0.3.1.4, 0.3.1.3, 0.3.1.2, 0.3.1.1,
-    0.3.1, 0.3.0.1, 0.3, 0.2.0.3, 0.2.0.2, 0.2.0.1, 0.2, 0.1 (global constraint
-    requires ==0.3.2.2)
-
-This tells me that the package persistent-template depends on the package monad-control at a version of 1.0.0.5. So I look at the [persistent-template hackage page](https://hackage.haskell.org/package/persistent-template-2.1.6) and see that it lists its dependency on monad-control as:
-
-    monad-control (>=0.2 && <1.1)
-
-And I don't think that's possible to resolve.
-
-All I wanted to do was change the icons on the Android package, so if you'll just accept the changed
-icons folder, I can submit the patch without testing the Android build, but currently I'm unable to build the Android port of git-annex.
diff --git a/doc/forum/Android__58___Encrypted_Remotes__63__.mdwn b/doc/forum/Android__58___Encrypted_Remotes__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Android__58___Encrypted_Remotes__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Hi,
-
-Does the Android app support encryption at all? The assistant allows me to create encrypted repositories but it just keeps telling me to install git-remote-gcrypt, which did not work.
diff --git a/doc/forum/Android__58___is_constant_high_cpu_usage_to_be_expected__63__.mdwn b/doc/forum/Android__58___is_constant_high_cpu_usage_to_be_expected__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Android__58___is_constant_high_cpu_usage_to_be_expected__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-While running the Git Annex App on Android, the app causes a constant cpu usage of about 50% when idling. I've seen this behavior on two devices (phone and tablet) with a CM 10.1 nightly build. The app causes this high cpu usage even when it is in the background, not performing any synchronization and managing only one repository containing just one file. Unfortunately I couldn't figure out what causes the cpu usage. The daemon.log file remains unchanged and I couldn't find any other log files.
-
-Is this expected behavior or unusual high cpu usage?
diff --git a/doc/forum/Android_version_does_not_sync.mdwn b/doc/forum/Android_version_does_not_sync.mdwn
deleted file mode 100644
--- a/doc/forum/Android_version_does_not_sync.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Hey!
-
-I have got a Kindle Fire HD (2nd generation) and want to use Git Annex to sync my data round. However, it does not sync my data at all (my other setups, e.g. PC or laptop do work quite well). The reason for that seems to be quite simple, but I do not know how to fix that:
-
-I always get the warning message:
-
-> TransferScanner crashed: /storage/emulated/legacy/annex/.git/index: copyFile: does not exist (No such file or directory).
-
-I found the same error in the log:
-
-> git-annex: /storage/emulated/legacy/annex/.git/index: copyFile: does not exist (No such file or directory)
-> ...
-> fatal: Run with no arguments or with -c cmd
-> git-annex-shell: git-shell failed
-
-I am using the latest versions for android and arm (server, raspberry pi) from this site from today (13.07.2014)
-
-http://git-annex.branchable.com/install/
-
-I hope somebody can help me. I tried restaring the TransferScanner, restarting git-annex, restarting the OS, resetting the OS (to shipping defaults), nothing helped.
-
-Cheers,
-Stephan
diff --git a/doc/forum/Annex_contents_just_disappeared__63__.mdwn b/doc/forum/Annex_contents_just_disappeared__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Annex_contents_just_disappeared__63__.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Joey,
-
-I have git-annex now to manage many of the repositories on my system.  I have them both on my local machine, and on a very large file server, and a backup system on the Internet.
-
-Today I went to look at a file in one of my annexes and it wasn't there.  This really surprised me.  But what surprised me most is that around 90% of the files in *all* of my annexes on both my local system and my file server are completely missing.  Only the Internet backup system has them.
-
-How could something like this happen, when I haven't been interacting with these annexes at all during this time?  Can you think of any scenario that might lead to this?  This is pretty much the absolute worst case scenario for an archival data system.
-
-I am running on Mac OS X 10.8, using GHC 7.6.3 to build git-annex, and I keep my git-annex binary updated often.
-
-Thanks,
-  John
diff --git a/doc/forum/Annex_dropping_files.mdwn b/doc/forum/Annex_dropping_files.mdwn
deleted file mode 100644
--- a/doc/forum/Annex_dropping_files.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-It seems like one of my repos dropped files by itself, my setup involved 3 distributed repos (non bare repos, not using assistant), A/B/C then one client died I've created another one in its place called D cloned from B and marked C as dead. I have now A/B/D. I have updated files in A synced it to D (central) I then tried dropping unused, it listed none (I've dropped the files from A which has full copy) at this point I thought B did not sync to it maybe thats why it did not drop them. I went home sync my laptop B (B dropped its share of unused files) but cental D still show no unused. 
-
-A-D has full copies of the repo
-B has partial.
-
-At this point I checked out a old commit from a week ago, checked where the links for the files are pointing to, they point to no where files are not there. Repo sized reported with du -hcs show both repos are the same size (132GB) looks like D managed to drop unused files by itself. I am wondering what caused this?
-
-My annex version is,
-
-git-annex version: 4.20130902-g307537a
-
-on all clients.
diff --git a/doc/forum/Annex_keeps_dropping_content.mdwn b/doc/forum/Annex_keeps_dropping_content.mdwn
deleted file mode 100644
--- a/doc/forum/Annex_keeps_dropping_content.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I'm experiencing a strange behaviour...
-
-I have a few annexes (local, ssh, gitolite) in my group, some of them  are "manual standard" and some are "backup".
-
-If I 'get' files on my laptop annex and then I 'sync --content' local files are dropped! Local is "manual standard".
-
-Am I doing something wrong?
-
-Thanks
diff --git a/doc/forum/Annex_slow_on_Windows__47__direct_mode.mdwn b/doc/forum/Annex_slow_on_Windows__47__direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Annex_slow_on_Windows__47__direct_mode.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I've been using annex for some weeks now and while I more and more love how it behaves on my Linux machines, I just can't get it working on Windows...
-
-The setup consists of two Ubuntu machines (one being an always-on server) and a Windows laptop I keep for the occasional moment of gaming. My wife's Windows machine is a candidate to join the annex setup, as well as some other computers I still use every now and then.
-
-The first thing I started annexing was my pictures folder. It consists of about 40k files and occupies about 350GB. The Ubuntu server is running a hidden service as a substitute for a DynDNS with ssh basically the only thing going out/in. First, I couldn't get annex to properly sync its data via TOR, but when I instead set up a directory special remote on the server (with the annex repository there being "bare", i.e. not containing any actual data) I got them to sync as they should.
-
-Not the Windows machine though. It's just too slow. It seems that on every sync, every add, every anything it scans... well, everything. I added some files and after an hour I checked the resource monitor which files were being accessed and it seemed to be every last one of the files present in the pictures folder. I'm not sure what's going on there, but it's really getting to the point of being a dealbreaker... I think it's something with annex only supporting direct mode repositories on Windows and all files just lying around (as that's really the only large difference between those setups), although I'm of course not entirely sure.
-
-I'd really like to run annex in indirect mode on Windows. I can't really find any information on that (except those few "official" pages that just state that annex is running in direct mode on Windows). I know that creating symlinks needs elevated priviledges on Windows, but accepting a prompt seems to be much more realistic than waiting hours for a sync.
-
-So... Is there any way to get indirect running on Windows? And if there isn't, is there any other way to speed up direct mode / Windows performance?
diff --git a/doc/forum/Archive_USB_drive_not_working_as_documented.mdwn b/doc/forum/Archive_USB_drive_not_working_as_documented.mdwn
deleted file mode 100644
--- a/doc/forum/Archive_USB_drive_not_working_as_documented.mdwn
+++ /dev/null
@@ -1,171 +0,0 @@
-I'm hoping to use git-annex in a project to manage large image files and maintain archived copies of them on removable USB drives. But I can't get this to work the way it's described in the walkthrough and in the "git-annex/tips/offline archive drives" example. Here's what I did:
-
-    marshal@home[~]> git-annex version
-    git-annex version: 5.20140412ubuntu1
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-
-Create the local repo:
-
-    marshal@home[~]> mkdir ~/annex
-    marshal@home[~]> cd ~/annex
-    marshal@home[~/annex]> git init
-    Initialized empty Git repository in /home/marshal/annex/.git/
-    marshal@home[~/annex]> git annex init "my laptop"
-    init my laptop ok
-    (Recording state in git...)
-
-Create the remote repo (assume the warning can be ignored?)
-
-    marshal@home[~/annex]> cd /media/marshal/Sony\ USB/
-    marshal@home[/media/marshal/Sony USB]> git clone ~/annex
-    Cloning into 'annex'...
-    done.
-    warning: remote HEAD refers to nonexistent ref, unable to checkout.
-    marshal@home[/media/marshal/Sony USB]> cd annex
-    marshal@home[/media/marshal/Sony USB/annex]> git annex init "usbdrive"
-    init usbdrive ok
-    (Recording state in git...)
-
-Make them remotes of each other
-
-    marshal@home[/media/marshal/Sony USB/annex]> git remote add laptop ~/annex
-    marshal@home[/media/marshal/Sony USB/annex]> cd ~/annex
-    marshal@home[~/annex]> git remote add usbdrive /media/marshal/Sony\ USB/annex/
-
-Add some files into the local repo
-
-    marshal@home[~/annex]> cp ~/Desktop/file* .
-    marshal@home[~/annex]> git annex add .
-    add file1.m3u ok
-    add file2.sh ok
-    add file3.pdf ok
-    (Recording state in git...)
-    marshal@home[~/annex]> git commit -a -m "added files"
-    [master (root-commit) 4ea3be7] added files
-     3 files changed, 3 insertions(+)
-     create mode 120000 file1.m3u
-     create mode 120000 file2.sh
-     create mode 120000 file3.pdf
-
-Change the preferred content settings
-
-    marshal@home[~/annex]> git annex group usbdrive archive
-    group usbdrive ok
-    (Recording state in git...)
-    marshal@home[~/annex]> git annex wanted usbdrive standard
-    wanted usbdrive ok
-    (Recording state in git...)
-
-Sync to the usbdrive repo
-
-    marshal@home[~/annex]> git annex sync usbdrive
-    commit  ok
-    pull usbdrive 
-    remote: Counting objects: 7, done.
-    remote: Compressing objects: 100% (3/3), done.
-    remote: Total 5 (delta 1), reused 0 (delta 0)
-    Unpacking objects: 100% (5/5), done.
-    From /media/marshal/Sony USB/annex
-     * [new branch]      git-annex  -> usbdrive/git-annex
-    ok
-    (merging usbdrive/git-annex into git-annex...)
-    (Recording state in git...)
-    push usbdrive 
-    Counting objects: 29, done.
-    Delta compression using up to 8 threads.
-    Compressing objects: 100% (22/22), done.
-    Writing objects: 100% (25/25), 2.44 KiB | 0 bytes/s, done.
-    Total 25 (delta 3), reused 0 (delta 0)
-    To /media/marshal/Sony USB/annex/
-     * [new branch]      git-annex -> synced/git-annex
-     * [new branch]      master -> synced/master
-    ok
-
-Copy eveything to the usbdrive repo
-
-    marshal@home[~/annex]> git-annex copy --auto --to usbdrive
-    copy file1.m3u (to usbdrive...) 
-    SHA256E-s64061--c388e2c927cb4c88c11b1b5a8e166c4d8080dc528d53954dad1ee6d4933ce3c7.m3u
-             64,061 100%   29.84MB/s    0:00:00 (xfr#1, to-chk=0/1)
-    ok
-    copy file2.sh (to usbdrive...) 
-    SHA256E-s318--b8729560cc759d2256903feaa4ba65994ccbac94f30515d52a39083ad52e1bad.sh
-                318 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-    ok
-    copy file3.pdf (to usbdrive...) 
-    SHA256E-s32239--9b051067d5ef9f0cb4a01750901bf6bee3f9348e5b10138c8ef416ac8d51e5df.pdf
-             32,239 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)
-    ok
-    (Recording state in git...)
-
-Check to see where git-annex "thinks" the files are
-
-    marshal@home[~/annex]> git-annex whereis file1.m3u 
-    whereis file1.m3u (2 copies) 
-          	80fa5a68-3843-4e25-b4c9-53a8c51ba9ff -- here (my laptop)
-           	d642b276-5f9b-4a5c-a42e-ea29cd9540b5 -- usbdrive
-    ok
-
-Check the filesystem results
-
-    marshal@home[~/annex]> ls -la ~/annex
-    total 48
-    drwxrwxr-x  3 marshal marshal  4096 Jul 19 14:59 .
-    drwxr-xr-x 99 marshal marshal 24576 Jul 19 14:55 ..
-    lrwxrwxrwx  1 marshal marshal   194 Jul 19 14:59 file1.m3u -> .git/annex/objects/jq/MW/SHA256E-s64061--c388e2c927cb4c88c11b1b5a8e166c4d8080dc528d53954dad1ee6d4933ce3c7.m3u/SHA256E-s64061--c388e2c927cb4c88c11b1b5a8e166c4d8080dc528d53954dad1ee6d4933ce3c7.m3u
-    lrwxrwxrwx  1 marshal marshal   188 Jul 19 14:59 file2.sh -> .git/annex/objects/1J/2K/SHA256E-s318--b8729560cc759d2256903feaa4ba65994ccbac94f30515d52a39083ad52e1bad.sh/SHA256E-    s318--b8729560cc759d2256903feaa4ba65994ccbac94f30515d52a39083ad52e1bad.sh
-    lrwxrwxrwx  1 marshal marshal   194 Jul 19 14:59 file3.pdf -> .git/annex/objects/77/Wj/SHA256E-s32239--9b051067d5ef9f0cb4a01750901bf6bee3f9348e5b10138c8ef416ac8d51e5df.pdf/SHA256E-s32239--9b051067d5ef9f0cb4a01750901bf6bee3f9348e5b10138c8ef416ac8d51e5df.pdf
-    drwxrwxr-x  9 marshal marshal  4096 Jul 19 15:04 .git
-    marshal@home[~/annex]> ls -la /media/marshal/Sony\ USB/annex/
-    total 4
-    drwx------ 1 marshal marshal  144 Jul 19 14:56 .
-    drwx------ 1 marshal marshal 4096 Jul 19 14:56 ..
-    drwx------ 1 marshal marshal  448 Jul 19 14:57 .git
-
-Why is there nothing in the usbdrive repo? And worse, why is the whereis command saying there are 2 copies?
-
-But if I sync from the usbdrive repo, the files are copied
-
-    marshal@home[~/annex]> cd /media/marshal/Sony\ USB/annex/
-    marshal@home[/media/marshal/Sony USB/annex]> git-annex sync laptop
-    (merging synced/git-annex origin/git-annex into git-annex...)
-    (Recording state in git...)
-    commit  ok
-    pull laptop 
-    remote: Counting objects: 23, done.
-    remote: Compressing objects: 100% (8/8), done.
-    remote: Total 11 (delta 3), reused 0 (delta 0)
-    Unpacking objects: 100% (11/11), done.
-    From /home/marshal/annex
-     * [new branch]      git-annex  -> laptop/git-annex
-     * [new branch]      master     -> laptop/master
-     * [new branch]      synced/master -> laptop/synced/master
-    
-    
-    Already up-to-date.
-    ok
-    (merging laptop/git-annex into git-annex...)
-    (Recording state in git...)
-    push laptop 
-    Counting objects: 56, done.
-    Delta compression using up to 8 threads.
-    Compressing objects: 100% (24/24), done.
-    Writing objects: 100% (33/33), 2.34 KiB | 0 bytes/s, done.
-    Total 33 (delta 15), reused 0 (delta 0)
-    To /home/marshal/annex
-     * [new branch]      git-annex -> synced/git-annex
-    ok
-    marshal@home[/media/marshal/Sony USB/annex]> ls -la /media/marshal/Sony\ USB/annex/
-    total 6
-    drwx------ 1 marshal marshal  456 Jul 19 15:07 .
-    drwx------ 1 marshal marshal 4096 Jul 19 14:56 ..
-    lrwxrwxrwx 1 marshal marshal  396 Jul 19 15:07 file1.m3u -> .git/annex/objects/jq/MW/SHA256E-s64061--c388e2c927cb4c88c11b1b5a8e166c4d8080dc528d53954dad1ee6d4933ce3c7.m3u/SHA256E-s64061--c388e2c927cb4c88c11b1b5a8e166c4d8080dc528d53954dad1ee6d4933ce3c7.m3u
-    lrwxrwxrwx 1 marshal marshal  384 Jul 19 15:07 file2.sh -> .git/annex/objects/1J/2K/SHA256E-s318--b8729560cc759d2256903feaa4ba65994ccbac94f30515d52a39083ad52e1bad.sh/SHA256E-s318--b8729560cc759d2256903feaa4ba65994ccbac94f30515d52a39083ad52e1bad.sh
-    lrwxrwxrwx 1 marshal marshal  396 Jul 19 15:07 file3.pdf -> .git/annex/objects/77/Wj/SHA256E-s32239--9b051067d5ef9f0cb4a01750901bf6bee3f9348e5b10138c8ef416ac8d51e5df.pdf/SHA256E-s32239--9b051067d5ef9f0cb4a01750901bf6bee3f9348e5b10138c8ef416ac8d51e5df.pdf
-    drwx------ 1 marshal marshal  448 Jul 19 15:07 .git
-
-Why did I have to sync from the usbdrive? I expected the repo setup and the --auto option to copy the files. What am I missing?
-
-Any help much appreciated.
diff --git a/doc/forum/Assistant_Droping_Files.mdwn b/doc/forum/Assistant_Droping_Files.mdwn
deleted file mode 100644
--- a/doc/forum/Assistant_Droping_Files.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I have a setup as follows,
-
-3 drives on a remote ssh server regular git annex repos.
-One untrusted clone of this repository on my laptop. 
-
-On my laptop in webapp I have set num of copies to 2 (each file does have two copies on the server already). all repos plus laptop is set to manual mode. What happens is whenever I get a file to the laptop it would drop it from the disk on the server. Even though laptop is marked as untrusted this does not happen when using annex at the command line when I do a git annex get . --auto on the server it does not take the files on the untrusted repos into account which is what I want so I can drop files without moving them back to the server.
-
-Is this the intended behavior or am I doing something wrong?
diff --git a/doc/forum/Assistant__58___configure_auto-sync.mdwn b/doc/forum/Assistant__58___configure_auto-sync.mdwn
deleted file mode 100644
--- a/doc/forum/Assistant__58___configure_auto-sync.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I have large central repositories of data. Therefore, on each client I want to save part data(to save space of disk). In command line I do 
-
-	[...]
-	git-annex webapp
-	git-annex drop [DeleteContentDirectory]
-	[...]
-
-After this command Assistant performs automatic synchronization getting content of files from this directory(DeleteContentDirectory), but I don't want. I want it's was only symlink of file in this directory.
-
-How can I configure Assistant which files have to get content on the client?  It's possible?
- 
diff --git a/doc/forum/Assistant_fails_to_authenticate_to_rsync_remote.mdwn b/doc/forum/Assistant_fails_to_authenticate_to_rsync_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Assistant_fails_to_authenticate_to_rsync_remote.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-I have an rsync special remote for rsync.net. Recently I noticed that the assistant was not uploading files to this remote. When I look at the log in the webapp I see that it fails to authenticate:
-
-    [2016-04-22 13:28:49.145178] NetWatcherFallback: Syncing with rsync.net
-    Permission denied, please try again.
-    Permission denied, please try again.
-    Received disconnect from 1.1.1.1 port 22:2: Too many authentication failures for 12345
-    Connection to host.rsync.net closed by remote host.
-    rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-    rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]
-
-(For privacy I replaced the IP of the rsync.net host with 1.1.1.1 and the numerical user with 12345 and the hostname with host.rsync.net. In the actual log output those 3 things have real values that are correct!)
-
-If I change into this annex in the terminal I can `git annex copy . --to rsync.net` and everything uploads properly, so it is just the assistant which is failing to authenticate. I'm not sure how to go about troubleshooting this. I do use an ssh key to authenticate to the remote. Maybe the assistant doesn't know about this key?
-
-I did create this repo and add the remote manually, only later telling the assistant about the repo through the webapp.
-
-What should I look into to debug this?
diff --git a/doc/forum/Assistant_loosing_advantages__63__.mdwn b/doc/forum/Assistant_loosing_advantages__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Assistant_loosing_advantages__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hey,
-
-I write an article for the univerity about git-annex assistant and I'm a little bit confused about the function of the assistant. 
-Because an advantage of git-annex is that you can hold different files at different places in one repository, but this isn't anymore, or? The assistant syncs every file to every place of the repository. And this makes it just to another Dropbox (not direct the same) pentant or I'm not correct?
-
-The transfer group is just for transfer files to other repositories, which are not connected with the network or?
-
-I'm using ppa, ubuntu 12.04 lts, vers, 2013-12-13
-
-JP Lührig
diff --git a/doc/forum/Assistant_not_syncing_to_Rsync.mdwn b/doc/forum/Assistant_not_syncing_to_Rsync.mdwn
deleted file mode 100644
--- a/doc/forum/Assistant_not_syncing_to_Rsync.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I have 3 remotes for an annex - one on my laptop, one on a USB drive that's plugged in 50% of the time, and an rsync special remote on a friend's machine that I can access using SSH.
-
-I have tried various things (annex copy, numcopies=3) to make it move data to the rsync remote, but it doesn't seem to want to work. I have tried git annex sync. I added the remote repo using the webapp, and it looked as if it was copying my files for a bit then stopped. I have the remote repo setup as a backup in the webapp.
-
-The sizes of the directorys:
-    ~ $ du -sh Documents
-    126M	Documents
-    ~ $ du -sh /Volumes/Backup/Documents
-    227M	/Volumes/Backup/Documents
-
-and the remote
-    [c0g@womb Tom]$ du -sh MacDocuments/
-    21M	MacDocuments/
-
-I'm also curious as to why the usb drive repo is so much bigger than the thing I'm copying, but I'll worry about that later.
diff --git a/doc/forum/Attempting_to_repair_fails_with_everincreasing_deltas.mdwn b/doc/forum/Attempting_to_repair_fails_with_everincreasing_deltas.mdwn
deleted file mode 100644
--- a/doc/forum/Attempting_to_repair_fails_with_everincreasing_deltas.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Hello,
-
-I am using the latest git-annex with the webui having two local folders (one over nfs) connected as a full backup group. 
-
-On every reboot I get a jumping ball icon with the text:
-
-"Attempting to repair [tr2]"
-
-And the later the text:
-
-"failed to sync to tr2"
-
-The debug log is filled with entries like this, where the number of deltas is increasing:
-
-[2014-08-26 20:34:50 CEST] PushRetrier: Syncing with tr2 
-fatal: pack has 15 unresolved deltas
-error: unpack failed: index-pack abnormal exit
-To /nfs/backup
- ! [remote rejected] git-annex -> synced/git-annex (n/a (unpacker error))
- ! [remote rejected] annex/direct/master -> synced/master (n/a (unpacker error))
-error: failed to push some refs to '/nfs/backup''
diff --git a/doc/forum/Auto_archiving.mdwn b/doc/forum/Auto_archiving.mdwn
deleted file mode 100644
--- a/doc/forum/Auto_archiving.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-I've been toying with the idea of auto archiving files (that is - removing them from .) based on a set of rules.
-
-Git already provides attribute management for files and I put together a simple script that tries to achieve the following:
-
-* Look for files with X copies (including a local one)
-* Verify that the file is not recent (defined as not having been dropped or getted within X days )
-* Verify that the file has an annex.archive attribute
-* Archive if the above is met
-
-Here is the script:
-http://pastebin.com/53iLqyPd
-
-You just add the annex.archive attribute to files via .gitattributes to use
-
-The script runs in preview mode... exec with autoArchive.sh commit to drop the files.
-
-Open to thoughts / suggestions
diff --git a/doc/forum/Auto_sync_with_music_player.mdwn b/doc/forum/Auto_sync_with_music_player.mdwn
deleted file mode 100644
--- a/doc/forum/Auto_sync_with_music_player.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have a music directory under Nexus 5 which is a git-annex repository. If I sync the same with remote repository, newly added songs or modified songs(modifed id3 tags) will not sync with music player. But if I use Android File Transfer to transfer songs, it will sync music player. The songs which are transferred using git-annex will reflect in music player only after restart. Do we have to execute any command which will sync music player.
diff --git a/doc/forum/Auto_update_not_working.mdwn b/doc/forum/Auto_update_not_working.mdwn
deleted file mode 100644
--- a/doc/forum/Auto_update_not_working.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hello,
-
-I've installed to ~/software/ using the prebuilt tarballs. I'm using the assistant with auto updates set to ask. Everytime I start the assistant it claims a new that a new version of git-annex has been installed. I click Finish Upgrade, it does the upgrade and it says to have finished upgrading to version 5.20141105-g8b19598. Next boot / restart everything starts again and it upgrades always to the same version.
-
-Thanks!
-Florian
diff --git a/doc/forum/Automatic_commit_messages_for_git_annex_sync.mdwn b/doc/forum/Automatic_commit_messages_for_git_annex_sync.mdwn
deleted file mode 100644
--- a/doc/forum/Automatic_commit_messages_for_git_annex_sync.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Not really important (who reads git annex commit messages anyways ;-)), but nice to have and maybe a nice task for someone who wants to play around with Haskell and git annex: It would be shiny if the auto-commit done by git annex sync would automatically create a sensible commmit message and description. E.g. if just one file is added, it could say „Added blubb“. If a few files are added, it could say „Added blubb, bla and n other files“, based on the file name length, and list the files in the long description. Lots of room for playing around :-)
diff --git a/doc/forum/Automatically_dropping_files.mdwn b/doc/forum/Automatically_dropping_files.mdwn
deleted file mode 100644
--- a/doc/forum/Automatically_dropping_files.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I can make `git-annex` automatically fetch files with the [[/preferred content]] setting and the `--auto` flag, and it works almost exactly like I expect it to work.
-
-What I am missing is a way to make `git annex drop --auto` drop all files that are not wanted.
-
-I would like to work with metadata and tags in such a way that I can have clones (with views) that have only exactly those files available which carry a tag (done), and all other files automatically removed from the annex (unless that would be unsafe).
-
-Does anyone know how to achieve this?
diff --git a/doc/forum/Automatically_syncronise_centralised_repository.mdwn b/doc/forum/Automatically_syncronise_centralised_repository.mdwn
deleted file mode 100644
--- a/doc/forum/Automatically_syncronise_centralised_repository.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I would like to use git annex between two locations (work and home) where essentially the two computers are never on at the same time.
-
-I have set up a special remote (S3) to cater for file transfer between the sites, but still need some way of syncronising the git repositories between them.
-I have access to a git server, but which doesn't have git-annex on it. So, I think that is all the components I need to get this working.
-
-However, I don't want to have to manually sync my computers with the central server, so I would like the assistant to do it for me, in what is essentially the complement of the special remote.
-
-What is the best way to accomplish this? I guess that this is a general git question, not specific to git annex.
-I see some solutions [[http://stackoverflow.com/questions/3583061/automatically-mirror-a-git-repository]], but my git isn't really up to evaluating the options properly.
-
-So, what do other people do in this situation? 
-
-
---Walter
diff --git a/doc/forum/Autostart_the_assistant.mdwn b/doc/forum/Autostart_the_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/Autostart_the_assistant.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hello,
-
-I'm using the Arch git-annex package: https://www.archlinux.org/packages/community/x86_64/git-annex/
-
-Checking the autostart checkbox in the assistant's web interface has no effect. There is no git-annex desktop file in ~/.config/autostart/ or alike. Neither is one contained in the package, however in the tarball I haven't found either.
-
-How does autostarting the assistant works?
-
-Best Thanks!
diff --git a/doc/forum/Backend_migration_and_special_remotes.mdwn b/doc/forum/Backend_migration_and_special_remotes.mdwn
deleted file mode 100644
--- a/doc/forum/Backend_migration_and_special_remotes.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-I have a large repository that is backed up to hubiC with the [special remote that I wrote](https://github.com/Schnouki/git-annex-remote-hubic). When I created this repository I used the WORM backend. But as I have some duplicated files I'd like to migrate to SHA256E to avoid storing them twice. However, when migrating a file, its location on the remote is not kept:
-
-    % git annex whereis "2015-07-25 12.28.16.jpg"
-    whereis 2015-07-25 12.28.16.jpg (2 copies) 
-            23fa590d-682d-43be-9851-8ba47186d763 -- [hubic]
-            f6642b89-2a0f-4788-8e13-be540fdfec58 -- baldr [here]
-    ok
-    
-    % git annex migrate "2015-07-25 12.28.16.jpg" --backend SHA256E
-    migrate 2015-07-25 12.28.16.jpg ok 
-    (recording state in git...)
-    
-    % git annex whereis "2015-07-25 12.28.16.jpg"
-    whereis 2015-07-25 12.28.16.jpg (1 copy) 
-            f6642b89-2a0f-4788-8e13-be540fdfec58 -- baldr [here]
-    ok
-
-Is there any way to store in the git-annex branch that migrated files are still available on remotes without having to re-upload all of them? hubiC is quite slow and I don't really want to re-upload 90 GB from a DSL connection…
-
-Or would it be possible to add something in the special remote protocol to "move" a key without re-uploading it?
-
-Thanks!
diff --git a/doc/forum/Backing_up_photos_to_the_cloud.mdwn b/doc/forum/Backing_up_photos_to_the_cloud.mdwn
deleted file mode 100644
--- a/doc/forum/Backing_up_photos_to_the_cloud.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I'm using git annex to manage my photo collection. The main reason is because my laptop doesn't have enough space to store all my photos, so I'm using git annex to create a sort of split repository between my laptop (which has some photos) and an external drive (which has everything). So far this has worked well, I have around 15,000 photos which is around 40GB.
-
-Now I also want to see if I can use git annex to improve my backup workflow. Previously I've just exported albums from my photo manager (iPhoto on OS X), zipped them up, and uploaded them to S3. I have lifecycle rules setup so that they are automatically replicated to a different region and archived to Glacier (it's a lot easier than dealing with Glacier directly). I am using this as a last resort backup in case everything else is lost, so it doesn't matter if it takes a while to access. This works well, except on it's own I don't really know what photos are stored where, which is where I'm hoping git annex can help.
-
-I've tried using the S3 remote, but there are a few things which I don't like:
-
-1) If the git repository is lost I can't recover the original paths, so I won't know which photo belongs in which album. As this is a last resort backup, if I ever need to get anything from here it's likely that the git repository is also lost. [JGit supports storing Git repositories in S3](http://www.fancybeans.com/blog/2012/08/24/how-to-use-s3-as-a-private-git-repository/), but that seems like the wrong way to solve this, I'd prefer just to have the original folder structure maintained.
-
-2) As there are 15,000 photos, that means 15,000 requests to S3 to upload them and another 15,000 each time I check them. On my connection I can upload to AWS at around 5MB/s, but due to latency that only means one or two photos per second. I'd prefer to just upload archives.
-
-As I understand encryption + chunking with a sufficiently large size (say 100Mb) would help solve the second problem, but as this is a last resort backup I don't want to have to worry about encryption keys or passphrases.
-
-It looks like a wrapper around the [archivedrive feature](https://git-annex.branchable.com/tips/offline_archive_drives/) (which archives, zips and uploads it to S3) would do what I want, but I'm wondering if there is a better way?
diff --git a/doc/forum/Bare_repo_on_USB_drive_not_providing_files.mdwn b/doc/forum/Bare_repo_on_USB_drive_not_providing_files.mdwn
deleted file mode 100644
--- a/doc/forum/Bare_repo_on_USB_drive_not_providing_files.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Dear all,
-     In the first place I will explain what I want to achieve and then the way I figured out to do it. I have a lot of scientific simulations which I need to be traceable (cross check experiment version with code version, etc). I run them mostly on my ubuntu box (14.10, ext4)  and store them on an indirect repo. From time to time, I find useful to work on them on my laptop (OSX 10.10, low disk space, hfs+). 
-My idea was to full sync the main repo with a usb drive, and then at home get only the files I need to work from the USB drive.
-I faced a huge interoperability problem regarding the filesystem format. I tried using ext4, hfs+, fat32 and exfat. Regarding performance and stability, exfat is the only usable option between linux and osx (using hfs+ got the repo corrupted many times while writing from linux). However that forces me to use either a direct mode repo on the USB drive or a bare one. 
-
-Scenario 1: Direct mode on USB drive 
-While this worked in another case, in this case when setting up the repo with the assistant it deleted all symlinks from the main repo. I wasn't able to correctly do this and finally gave up. 
-Can anyone help me setting up this scenario? It will be like the following: 
-
-* ubuntu box (ext4): main repo, indirect mode, all files
-* usb drive (exfat): sync repo, direct mode, all files (having the files available is a plus)
-* osx laptop (hpfs+): partial repo, indirect mode, some files
-
-
-Scenario 2: Bare repo on USB drive 
-In this case the bare repo gets synced, with all data (2.6Gb). However when I clone it on the laptop, I get the  message that files are not available, it says that they are only on main repo. This puzzles me because files seem to be on the bare repo.
-What's wrong in this case? How can I debug this?
diff --git a/doc/forum/Basic_set_up_with_one_remote.mdwn b/doc/forum/Basic_set_up_with_one_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Basic_set_up_with_one_remote.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hi, I'm new to git annex and so far it's looking really useful. I'm convinced what I'm trying to achieve is possible, but I can't seem to hit upon the right combination. Here's what I'd like to set up.
-
-One server with git annex / rsync / ssh access, but configured such that it contains a history of all the files as a full backup.
-Two clients WITHOUT ssh access (these are portable machines and I'd rather not open any ports I don't absolutely have to).
-
-I've used the assistant to set up syncing between all three, using a jabber account to send signals and the server to pass on the files between the machines. This all works beautifully. But what I can't seem to get right is the server / backup aspect. If I set up the server using the assistant as a remote, and set it to "full backup" from the drop down list, it doesn't seem to have any files in the repository except in the .git/annex/objects folder. Which are all cryptic file names and not really accessible. If I run commands such as 
-
-> git annex find
-
-(which should list all files as far as I can tell) in the server repository, it doesn't list any files at all. As the clients are all set up as direct repositories I can't access any history of the files there, so this doesn't seem to be quite what I'm after. The sync is working, but I really want the backup / history aspect as well.
-
-Does anyone know if what I want is possible? If so hopefully I'm close and someone can point out where I've gone wrong. I'm not afraid of the command line, but the assistant is a very convenient way to get started. 
-
-Thanks for your help.
diff --git a/doc/forum/Behaviour_of_fsck.mdwn b/doc/forum/Behaviour_of_fsck.mdwn
deleted file mode 100644
--- a/doc/forum/Behaviour_of_fsck.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-The current behaviour of 'fsck' is a bit verbose. I have an annex'd directory of tarballs for my own build system for "science" applications, there's about ~600 or so blobs in my repo, I do occassionally like to run fsck across all my data to see what files don't meet the min num copies requirement that I have set.
-
-Would it be better for the default behaviour of fsck when it has not been given a path to only output errors and not bother to show that a file is ok for every single file in a repo. i.e.
-
-    git annex fsck
-
-should show only 'errors' and maybe a simple indicator showing the status (show a spinner or dots?) and when 
-
-    git annex fsck PATH/FILE 
-
-it should have the current behaviour? 
-
-Right now the current fsck behaviour might get annoying for anyone who would want to run fsck with repos with lots of big files.
diff --git a/doc/forum/Best_approach_for_central_sharing_and_multiple_users.mdwn b/doc/forum/Best_approach_for_central_sharing_and_multiple_users.mdwn
deleted file mode 100644
--- a/doc/forum/Best_approach_for_central_sharing_and_multiple_users.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Just a quick question: Can anyone recomment me a good to handle a centralized repository which is used by different users?
-
-Requirements: must work in direct mode on both sides, server is Linux, clients are Windows and operated by 2 different users.
-
-- Should the repository create bare or not?
-- Must the repository created on the server or can it also be "pushed" from one client to the server (via SSH on the server)?
-- Is there a better way for data transfer than SSH (WebDAV as in SVN)? I am still struggling with an elegant way to handle public keys in windows
-- What is the best way to not only keep meta data in sync but also the data each of the users has checked out?
diff --git a/doc/forum/Best_way_to_manage_files_on_removable_media__63__.mdwn b/doc/forum/Best_way_to_manage_files_on_removable_media__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Best_way_to_manage_files_on_removable_media__63__.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-I have a bunch of removable storage devices and was planning on storing my data across
-all of them.  I've run into an annoyance, and would like to see if anybody has any
-ideas.
-
-My goal was to have the full file tree on all the devices, but only a subset of the
-annexed data.  Where I have run into trouble is removing data from the system.  It
-seems that the "git annex unused" command checks remote branches as well as local ones
-when determining whether an object is referred to.
-
-This means that if I remove a file that is stored locally, "git annex unused" doesn't
-report the corresponding object as unused until I either connect and update all
-removable storage *or* remove the remote corresponding to the removable storage.  I
-posted a bug about this inconsistency named
-[[bugs/git annex unused considers remote branches which makes it inconsistent]].
-
-If I used the removable storage as a special remote, then I wouldn't have this issue,
-but I also wouldn't be able to conveniently use the files on it and manage the repo
-from it either.
diff --git a/doc/forum/Big_repository_vs._multiple_small.mdwn b/doc/forum/Big_repository_vs._multiple_small.mdwn
deleted file mode 100644
--- a/doc/forum/Big_repository_vs._multiple_small.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I am new to git (but extensively used SVN).
-
-In SVN I could have a big fat repository but only check out sub-trees is it.
-Is that also common in git(-annex) / recommended?
-
-E.g., should I create a big-fat repos with all data I have (personal data, music, videos, ...) and check out only the appropriate subtress or create a repository for each purpose? E.g., one for Fotos, Music, OnTheGoData, ebooks, ...
-
-What happens if I have a git-annex repository checked out at my laptop (say, d:\Files) and within it, check out another one (e.g. d:\Files\Library)?
diff --git a/doc/forum/Box.com_hasn__39__t_been_working_for_a_few_days.mdwn b/doc/forum/Box.com_hasn__39__t_been_working_for_a_few_days.mdwn
deleted file mode 100644
--- a/doc/forum/Box.com_hasn__39__t_been_working_for_a_few_days.mdwn
+++ /dev/null
@@ -1,72 +0,0 @@
-I've been experiencing problems with Box.com for a few days now and I don't know what's causing them. Is anyone else experiencing anything similar?
-
-I paste the log.
-
-    [2013-09-02 12:27:26 CEST] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9", transferKey = Key {keyName = "c9e1d5421e78924c21e3d68e84f80a8d1f64f9488020107ca0eeee0c4f10e763.py", keyBackendName = "SHA256E", keySize = Just 1891, keyMtime = Nothing}}
-    [2013-09-02 12:27:26 CEST] TransferScanner: queued Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/kgp/kant.xml Nothing : expensive scan found missing object
-    [2013-09-02 12:27:26 CEST] Transferrer: Transferring: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/argecho.py Nothing
-    [2013-09-02 12:27:26 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/argecho.py Nothing
-    [2013-09-02 12:27:26 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/argecho.py Nothing
-    
-    
-    100%          0.0 B/s 0s[2013-09-02 12:27:26 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/argecho.py Just 437
-    ResponseTimeout
-    ResponseTimeout
-    
-                            
-    [2013-09-02 12:27:44 CEST] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9", transferKey = Key {keyName = "dd3cc45d91430c6f7d68eb807f4ac1561cd0297b11a2de77b5fe66017d125798.py", keyBackendName = "SHA256E", keySize = Just 437, keyMtime = Nothing}}
-    [2013-09-02 12:27:44 CEST] TransferScanner: queued Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/kgp/kgp.dtd Nothing : expensive scan found missing object
-    [2013-09-02 12:27:44 CEST] Transferrer: Transferring: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/autosize.py Nothing
-    [2013-09-02 12:27:44 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/autosize.py Nothing
-    [2013-09-02 12:27:44 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/autosize.py Nothing
-    
-    
-    100%          0.0 B/s 0s[2013-09-02 12:27:44 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/autosize.py Just 2861
-    ResponseTimeout
-    ResponseTimeout
-    
-                            
-    [2013-09-02 12:28:02 CEST] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9", transferKey = Key {keyName = "d6b7940ac68768a8e37e72f248e2d94f19fb0d47062084d9baf0ec08cebbf692.py", keyBackendName = "SHA256E", keySize = Just 2861, keyMtime = Nothing}}
-    [2013-09-02 12:28:02 CEST] TransferScanner: queued Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/kgp/kgp.py Nothing : expensive scan found missing object
-    [2013-09-02 12:28:02 CEST] Transferrer: Transferring: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/builddialectexamples.py Nothing
-    [2013-09-02 12:28:03 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/builddialectexamples.py Nothing
-    [2013-09-02 12:28:03 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/builddialectexamples.py Nothing
-    
-    
-    100%          0.0 B/s 0s[2013-09-02 12:28:03 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/builddialectexamples.py Just 1090
-    ResponseTimeout
-    ResponseTimeout
-    
-                            
-    [2013-09-02 12:28:21 CEST] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9", transferKey = Key {keyName = "f1492b80d05b96cc7cf2904d461c99d430fa86a4eb1d99f1b155c9147ff4420f.py", keyBackendName = "SHA256E", keySize = Just 1090, keyMtime = Nothing}}
-    [2013-09-02 12:28:21 CEST] TransferScanner: queued Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/kgp/russiansample.xml Nothing : expensive scan found missing object
-    [2013-09-02 12:28:21 CEST] Transferrer: Transferring: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/colorize.py Nothing
-    [2013-09-02 12:28:21 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/colorize.py Nothing
-    [2013-09-02 12:28:21 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/colorize.py Nothing
-    
-    
-    100%          0.0 B/s 0s[2013-09-02 12:28:21 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/colorize.py Just 4864
-    ResponseTimeout
-    ResponseTimeout
-    
-    
-    [2013-09-02 12:28:40 CEST] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9", transferKey = Key {keyName = "b577eaf8b6ddbf9fef866c455cae248aec3b22e3f2e91aa2b75ece90f1801689.py", keyBackendName = "SHA256E", keySize = Just 4864, keyMtime = Nothing}}
-    [2013-09-02 12:28:40 CEST] TransferScanner: queued Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/kgp/stderr.py Nothing : expensive scan found missing object
-    [2013-09-02 12:28:40 CEST] Transferrer: Transferring: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/dialect.py Nothing
-    [2013-09-02 12:28:40 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/dialect.py Nothing
-    [2013-09-02 12:28:40 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/dialect.py Nothing
-    
-    
-    100%          0.0 B/s 0s[2013-09-02 12:28:40 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/dialect.py Just 4449
-    ResponseTimeout
-    ResponseTimeout
-    
-                            
-    [2013-09-02 12:28:58 CEST] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9", transferKey = Key {keyName = "c5e5d9b1bee2710c7ed05270a363d3e93270b0fb6779c4c8d59ace06c11db684.py", keyBackendName = "SHA256E", keySize = Just 4449, keyMtime = Nothing}}
-    [2013-09-02 12:28:58 CEST] TransferScanner: queued Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/kgp/stdout.py Nothing : expensive scan found missing object
-    [2013-09-02 12:28:58 CEST] Transferrer: Transferring: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/fibonacci.py Nothing
-    [2013-09-02 12:28:58 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/fibonacci.py Nothing
-    [2013-09-02 12:28:58 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/fibonacci.py Nothing
-
-
-    100%          0.0 B/s 0s[2013-09-02 12:28:58 CEST] TransferWatcher: transfer starting: Upload UUID "72111b4c-28fe-42fd-a77b-e4cb9240a1c9" Documentos/diveintopython-5.4/py/fibonacci.py Just 532
diff --git a/doc/forum/Broken_symlinks_remain_after_drop.mdwn b/doc/forum/Broken_symlinks_remain_after_drop.mdwn
deleted file mode 100644
--- a/doc/forum/Broken_symlinks_remain_after_drop.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-This is a newb question. I don't know whether this is a bug or the way git-annex is intended to function.
-
-I have two annex repos connected to each other. My idea was to have the first repository add files, which would then be moved to the second repository for storage. After moving, repo1 would be empty again, empty and clean of any symlinks.
-
-But after I 'git-annex move * --to repo2' broken symlinks remain in repo1. I don't want any broken/unused symlinks to remain in repo1 for object data it doesn't currently have (even if those files remain in the repository itself).
-
-Is there a way I can clean/remove broken symlinks to object data when those objects aren't present, so the directory only contains symlinks when the repo currently has the object data for those files?
diff --git a/doc/forum/Building_a_Debian_package_of_git-annex.mdwn b/doc/forum/Building_a_Debian_package_of_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/Building_a_Debian_package_of_git-annex.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-I'd like to have a Debian/Ubuntu package of the latest git-annex (f.e. to have it installed systemwide). In the source I can find the debian/ folder with all needed information to build the package. But it looks like I don't have all needed dependencies on my Ubuntu 12.10:
-
-    user@laptop(pc) ~/src/git/git-annex (git)-[master] % debuild -us -uc
-    dpkg-buildpackage -rfakeroot -D -us -uc
-    dpkg-buildpackage: source package git-annex
-    dpkg-buildpackage: source version 3.20130115
-    dpkg-buildpackage: source changed by Joey Hess <joeyh@debian.org>
-    dpkg-source --before-build git-annex
-    dpkg-buildpackage: host architecture amd64
-    dpkg-checkbuilddeps: Unmet build dependencies: libghc-dav-dev (>= 0.3) libghc-dbus-dev (>= 0.10.3) libghc-yesod-dev libghc-yesod-static-dev libghc-yesod-default-dev libghc-hamlet-dev libghc-clientsession-dev libghc-warp-dev libghc-wai-dev libghc-wai-logger-dev libghc-case-insensitive-dev libghc-http-types-dev libghc-blaze-builder-dev libghc-crypto-api-dev libghc-network-multicast-dev libghc-network-info-dev libghc-safesemaphore-dev libghc-network-protocol-xmpp-dev (>= 0.4.3-1+b1) libghc-gnutls-dev (>= 0.1.4) libghc-xml-types-dev
-    dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
-    dpkg-buildpackage: warning: (Use -d flag to override.)
-    debuild: fatal error at line 1357:
-    dpkg-buildpackage -rfakeroot -D -us -uc failed
-    user@laptop(pc) ~/src/git/git-annex (git)-[master] % apt-get install libghc-dav-dev libghc-dbus-dev libghc-yesod-dev libghc-yesod-static-dev libghc-yesod- default-dev libghc-hamlet-dev libghc-clientsession-dev libghc-warp-dev libghc-wai-dev libghc-wai-logger-dev libghc-case-insensitive-dev libghc-http-types-dev libghc-blaze-builder-dev libghc-crypto-api-dev libghc-network-multicast-dev libghc-network-info-dev libghc-safesemaphore-dev libghc-network-protocol-xmpp-dev libghc-gnutls-dev libghc-xml-types-dev
-    Reading package lists... Done
-    Building dependency tree       
-    Reading state information... Done
-    E: Unable to locate package libghc-dav-dev
-    E: Unable to locate package libghc-network-multicast-dev
-    E: Unable to locate package libghc-network-info-dev
-    E: Unable to locate package libghc-safesemaphore-dev
-
-How can I build the package? Or would it be possible for you to build the package and add it to the "Install" page (like the prebuilt linux tarball)? That would be great!
-
-Cheers and thanks for the hard work,
-Tobias
diff --git a/doc/forum/Building_git-annex-3.20121112-19309.mdwn b/doc/forum/Building_git-annex-3.20121112-19309.mdwn
deleted file mode 100644
--- a/doc/forum/Building_git-annex-3.20121112-19309.mdwn
+++ /dev/null
@@ -1,78 +0,0 @@
-Hi,
-
-I have Problems building git-annex-3.20121112-19309, I rceive the following error:
-
-...
-  Loading object (static) dist/build/git-annex/git-annex-tmp/Utility/libmounts.o ... done
-  final link ... done
-
-  Assistant/Alert.hs:66:30:
-      Warning: default newline style has changed, using an explicit $newline is recommended
-
-  Assistant/Alert.hs:69:31:
-      Warning: default newline style has changed, using an explicit $newline is recommended
-  [157 of 279] Compiling Assistant.Types.DaemonStatus ( Assistant/Types/DaemonStatus.hs, dist/build/git-annex/git-annex-tmp/Assistant/Types/DaemonStatus.o )
-  [158 of 279] Compiling Assistant.Monad  ( Assistant/Monad.hs, dist/build/git-annex/git-annex-tmp/Assistant/Monad.o )
-
-  Assistant/Monad.hs:86:16:
-      Couldn't match expected type `Assistant a'
-                  with actual type `Reader AssistantData a'
-      Expected type: (AssistantData -> a) -> Assistant a
-        Actual type: (AssistantData -> a) -> Reader AssistantData a
-      In the expression: reader
-      In an equation for `getAssistant': getAssistant = reader
-
-  Assistant/Monad.hs:93:15:
-      Couldn't match expected type `Assistant t0'
-                  with actual type `Reader r0 a0'
-      In the return type of a call of `reader'
-      In a stmt of a 'do' block: st <- reader threadState
-      In the expression:
-        do { st <- reader threadState;
-             liftIO $ runThreadState st a }
-
-  Assistant/Monad.hs:99:14:
-      Couldn't match expected type `Assistant t0'
-                  with actual type `Reader r0 a0'
-      In the return type of a call of `reader'
-      In a stmt of a 'do' block: d <- reader id
-      In the expression:
-        do { d <- reader id;
-             liftIO $ io $ runAssistant d a }
-
-  Assistant/Monad.hs:105:14:
-      Couldn't match expected type `Assistant t0'
-                  with actual type `Reader r0 a0'
-      In the return type of a call of `reader'
-      In a stmt of a 'do' block: d <- reader id
-      In the expression:
-        do { d <- reader id;
-             return $ runAssistant d a }
-
-  Assistant/Monad.hs:110:14:
-      Couldn't match expected type `Assistant t0'
-                  with actual type `Reader r0 a0'
-      In the return type of a call of `reader'
-      In a stmt of a 'do' block: d <- reader id
-      In the expression:
-        do { d <- reader id;
-             return $ \ v -> runAssistant d $ a v }
-
-  Assistant/Monad.hs:115:14:
-      Couldn't match expected type `Assistant t0'
-                  with actual type `Reader r0 a0'
-      In the return type of a call of `reader'
-      In a stmt of a 'do' block: d <- reader id
-      In the expression:
-        do { d <- reader id;
-             return $ \ v1 v2 -> runAssistant d (a v1 v2) }
-
-  Assistant/Monad.hs:120:12:
-      Couldn't match expected type `Assistant a0'
-                  with actual type `Reader r0 a1'
-      In the return type of a call of `reader'
-      In the first argument of `(>>=)', namely `reader v'
-      In the expression: reader v >>= liftIO . io
-  cabal: Error: some packages failed to install:
-  git-annex-3.20121112 failed during the building phase. The exception was:
-  ExitFailure 1
diff --git a/doc/forum/CD-R_as_special_remote.mdwn b/doc/forum/CD-R_as_special_remote.mdwn
deleted file mode 100644
--- a/doc/forum/CD-R_as_special_remote.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I would like to use a CD-R as a special remote for one of my repositories. I'm not sure what the best way to do this is. I'm thinking aomething like:
-
-1. Make a new directory
-2. Add the directory as a special remote using type=directory
-3. Copy the files to the special remote
-4. Create an iso of the directory and burn it
-
-Does that sound right?
-
-I'm not sure how I can do stuff like tell git-annex that the maximum size of the remote is 700MB and that (after the initial push) the remote should be considered read only. I intend to have multiple of these CD-R/directory remotes for the one annex. Has anybody done anything like this before?
diff --git a/doc/forum/Cabal__58___Could_not_resolve_dependencies___40__yesod__41__.mdwn b/doc/forum/Cabal__58___Could_not_resolve_dependencies___40__yesod__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Cabal__58___Could_not_resolve_dependencies___40__yesod__41__.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Hi,
-
-I try to install git-annex master with cabal, so I cloned the git repo and run "cabal install --only-dependencies". This gives me the following error:
-
-    Resolving dependencies...
-    cabal: Could not resolve dependencies:
-    trying: git-annex-3.20120826 (user goal)
-    trying: git-annex-3.20120826:+oldyesod
-    trying: git-annex-3.20120826:+currentyesod
-    next goal: yesod-default (dependency of git-annex-3.20120826:+oldyesod)
-    rejecting: yesod-default-1.1.0 (conflict: git-annex-3.20120826:oldyesod =>
-    yesod-default(<=1.0.1.1))
-    rejecting: yesod-default-1.0.1.1, 1.0.1, 1.0.0, 0.6.1, 0.5.0, 0.4.1, 0.4.0,
-    0.3.1 (conflict: git-annex-3.20120826:currentyesod => yesod-default(>=1.1.0))
-
-Any idea how to fix this? (PS: I'm running Kubuntu 12.04)
-
-Cheers,
-Tobias
diff --git a/doc/forum/Calculating_Annex_Cost_by_Ping_Times.mdwn b/doc/forum/Calculating_Annex_Cost_by_Ping_Times.mdwn
deleted file mode 100644
--- a/doc/forum/Calculating_Annex_Cost_by_Ping_Times.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I threw together a pair of shell scripts for calculating the cost of a remote using ping times.  I don't know how useful this is in practice, but the theory seemed sound to me.  If I'm in a hotel room with my two laptops, I'd rather annex try to get a file from the other laptop than from my NAS all the way back home.  I'd love to figure out how to also detect if I'm on my VerizonWireless connection at the time and multiply the cost of all connections over the Internet accordingly, but that's down the road.  Latest versions of the pair of scripts will be at <https://gist.github.com/4410357>. I'm interested in feedback, so please fork the git repo on gist and send me changes/updates. Also of note is that these were written for MacOSX. If you're interested in using them on a different linux, pay attention to the format of the summary line of your ping command.
diff --git a/doc/forum/Can_Not_Sync_to_Git_Repo.mdwn b/doc/forum/Can_Not_Sync_to_Git_Repo.mdwn
deleted file mode 100644
--- a/doc/forum/Can_Not_Sync_to_Git_Repo.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-On one my repos (git repo on github data on S3) I've started getting, `fatal: Cannot force update the current branch` `git-annex: failed to update refs/heads/master` other clones of this repository can sync fine but this one started failing after adding a couple of files.
diff --git a/doc/forum/Can__39__t_get_git-annex_merge_to_work_from_git_hook.mdwn b/doc/forum/Can__39__t_get_git-annex_merge_to_work_from_git_hook.mdwn
deleted file mode 100644
--- a/doc/forum/Can__39__t_get_git-annex_merge_to_work_from_git_hook.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-I'm trying to automate syncing of two repos A and B. My goal is to run `git annex sync` from A and have the working copy of B updated automatically. According to the manual page, `git annex merge` should to the trick. It works just fine when I run it manually in B, but not when I run it from the post-receive hook, as suggested in the manual page.
-
-Here is a test script that illustrates the issue: <https://gist.github.com/anonymous/6197019>
-
-The output I get:
-
-    [...]
-    file1 exists after manual git annex merge
-    [...]
-    file2 does not exist after git annex merge in post-receive
-
-From the output I can see that `git annex merge` is run on the remote end, and seems to do it's thing (`file2` is added):
-
-    remote: merge git-annex (merging synced/git-annex into git-annex...)
-    remote: ok
-    remote: merge synced/master Updating 6e5bfba..0dcbcfd
-    remote: Fast-forward
-    remote:  file2 |    1 +
-    remote:  1 file changed, 1 insertion(+)
-    remote:  create mode 120000 file2
-    remote: 
-    remote: ok
-
-However, the working copy in B does not have the file `file2`. Even worse, `git status` in B shows the file as deleted:
-
-    # On branch master
-    # Your branch is ahead of 'origin/master' by 2 commits.
-    #
-    # Changes not staged for commit:
-    #   (use "git add/rm <file>..." to update what will be committed)
-    #   (use "git checkout -- <file>..." to discard changes in working directory)
-    #
-    #	deleted:    file2
-    #
-    no changes added to commit (use "git add" and/or "git commit -a")
-
-So when running `git annex sync` from B now, the file will be deleted from A as well, which is not what I expected.
-
-This is on Ubuntu 12.04, using the precompiled git-annex tarball (amd64).
-
-What am I doing wrong?
diff --git a/doc/forum/Can__39__t_get_jabber_working.mdwn b/doc/forum/Can__39__t_get_jabber_working.mdwn
deleted file mode 100644
--- a/doc/forum/Can__39__t_get_jabber_working.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I've been running circles around the "jabber account setup" in assistant. I tried using jabber.org (isode) and jabber.de (openfire), but whatever I do I get thrown back to an Error page
-
-"Firefox can't establish a connection to the server at 127.0.0.1:61967." 
-
-Assistant definetly tries to connect to the server (LittleSnitch is giving me a hint) and the connections are unblocked. Even after turning LittleSnitch off completely it won't work. On the other hand, I can connect to the servers using Jitsi without any problems. I'd be really thankful for any help.
-
-David 
diff --git a/doc/forum/Can__39__t_get_pairing_to_work.mdwn b/doc/forum/Can__39__t_get_pairing_to_work.mdwn
deleted file mode 100644
--- a/doc/forum/Can__39__t_get_pairing_to_work.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I'm trying to pair my ~/music repositories on my two laptops (Ubuntu 10.04 and 12.04) using the Linux standalone tarball on my home WiFi network. After entering the same passphrase on both machines, nothing happens, both remain in "Pairing in progress" state.
-
-The router I'm using is, I think, fairly standard, it's a ZyXEL P-2812HNU-F1 with factory settings.
-
-Are others having the problem too? Any advice where I should start looking for what goes wrong?
diff --git a/doc/forum/Can__39__t_init_git_annex.mdwn b/doc/forum/Can__39__t_init_git_annex.mdwn
deleted file mode 100644
--- a/doc/forum/Can__39__t_init_git_annex.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-It seems I can't initialize git annex:
-
-    $ git annex init "files2"
-    init files2 
-      pre-commit hook (/Volumes/project/annex/.git/hooks/pre-commit) already exists, not configuring
-    
-    git-annex: waitToSetLock: failed (Operation not supported)
-    failed
-    git-annex: init: 1 failed
-    $
-
-
-  `project` is a remote file server connected via `smb://`.
-
-   Any ideas why and how to fix?
diff --git a/doc/forum/Can__39__t_install__58___Mac_OS_10.8.2.mdwn b/doc/forum/Can__39__t_install__58___Mac_OS_10.8.2.mdwn
deleted file mode 100644
--- a/doc/forum/Can__39__t_install__58___Mac_OS_10.8.2.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-###Tried to install git-annex.app
-
-- App hangs up
-- Cpu "git" load is 100
-- Had to force quite git-annex
-
-###Install thru command line: using Brew
-
-- Installed haskell
-- updated cabal
-- But when I do:
-
-`
-cabal install git-annex --bindir=$HOME/bin
-`
-
-**I get this**
-
-    Resolving dependencies...
-    Configuring gnuidn-0.2...
-    cabal: The program c2hs is required but it could not be found.
-    Configuring libxml-sax-0.7.3...
-    cabal: The pkg-config package libxml-2.0 is required but it could not be found.
-    cabal: Error: some packages failed to install:
-    git-annex-3.20121127.1 depends on libxml-sax-0.7.3 which failed to install.
-    gnuidn-0.2 failed during the configure step. The exception was:
-    ExitFailure 1
-    libxml-sax-0.7.3 failed during the configure step. The exception was:
-    ExitFailure 1
-    network-protocol-xmpp-0.4.4 depends on libxml-sax-0.7.3 which failed to install.
-
-Any help would be greatly appreciated. 
-
-Thanks,
-
-Carlito
diff --git a/doc/forum/Can__39__t_upload_data_to_glacier_remote.mdwn b/doc/forum/Can__39__t_upload_data_to_glacier_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Can__39__t_upload_data_to_glacier_remote.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-I'm trying to follow the directions on [this tips page](https://git-annex.branchable.com/tips/using_Amazon_Glacier/) to easily back up some large home videos to Glacier. I followed the steps and everything worked fine until the `git annex copy`, at which point it claimed it was successful but had uploaded 0 bytes, as well as dumping the usage message for `glacier-cli` at the terminal (without any error):
-
-    Emily $ git annex copy --to glacier README
-    copy README (gpg) (checking glacier...) (to glacier...) 
-    100%          0.0 B/s 0s
-    glacier <command> [args]
-
-        Commands
-            vaults    - Operations with vaults
-            jobs      - Operations with jobs
-            upload    - Upload files to a vault. If the vault doesn't exits, it is
-                        created
-
-        Common args:
-            --access_key - Your AWS Access Key ID.  If not supplied, boto will
-                           use the value of the environment variable
-                           AWS_ACCESS_KEY_ID
-            --secret_key - Your AWS Secret Access Key.  If not supplied, boto
-                           will use the value of the environment variable
-                           AWS_SECRET_ACCESS_KEY
-            --region     - AWS region to use. Possible values: us-east-1, us-west-1,
-                           us-west-2, ap-northeast-1, eu-west-1.
-                           Default: us-east-1
-
-        Vaults operations:
-
-            List vaults:
-                glacier vaults 
-
-        Jobs operations:
-
-            List jobs:
-                glacier jobs <vault name>
-
-        Uploading files:
-
-            glacier upload <vault name> <files>
-
-            Examples : 
-                glacier upload pics *.jpg
-                glacier upload pics a.jpg b.jpg
-
-    ok                      
-    (Recording state in git...)
-
-Doing a `glacier vaults` also does not show any new vaults, and getting the usage message is obviously not normal.
-
-I tried doing a manual upload to a vault I already had sitting around from some years ago called `TVault`, and that looked to work fine:
-
-    Emily $ glacier upload TVault README 
-    Uploading README to TVault... done. Vault returned ArchiveID [omitted]
-
-(The update date hasn't updated on the management console yet, but I understand that may take up to a day.)
-
-Does anyone know what's going on, or is there at least a way to get a useful error message to output?
diff --git a/doc/forum/Can_not_delete_Repository.mdwn b/doc/forum/Can_not_delete_Repository.mdwn
deleted file mode 100644
--- a/doc/forum/Can_not_delete_Repository.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have one repository that I deleted a while back. When I mark it as dead in command line it disappears from git annex info however when I run webapp it pops back webapp shows it as syncing disabled. When I try to delete it from the webapp it does not delete. I tried shutting down the daemon mark it as dead again then run git annex forget --drop-dead --force but running it makes the repo active again instead of deleting it.
-
-Repo in question was a S3 repo. I tried deleting it using both its name and uuid.
diff --git a/doc/forum/Can_not_drop_unused_file.mdwn b/doc/forum/Can_not_drop_unused_file.mdwn
deleted file mode 100644
--- a/doc/forum/Can_not_drop_unused_file.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I have encrypted directory remote on a usb drive over time it accumulated some unused files. I would like to drop them running,
-
-    git annex --unused --from external
-
-returns a list of unused files when I try to drop them with,
-
-
-    git annex dropunused --force --from external 1-XX
-
-I get,
-
-    dropunused XX (from external...) failed
-
-I can not seem to get rid of these files.
diff --git a/doc/forum/Can_we_have_remotes_that_aren__39__t_tracked__63___.mdwn b/doc/forum/Can_we_have_remotes_that_aren__39__t_tracked__63___.mdwn
deleted file mode 100644
--- a/doc/forum/Can_we_have_remotes_that_aren__39__t_tracked__63___.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I'm wondering if it is possible to have remotes that don't have the *content* of git-annex tracked.
-
-# My use case:
-
-I have a number of projects that I am working on at any one time.  They all are tracking independently by `git` and more recently I am using `git annex` to manage the large files.
-
-However because I have so many projects I work on one (called `AAA`), move to another, delete `AAA` to save disk space, ...time passes... return to `AAA`.
-
-Now, prior to `git-annex` I could just clone `AAA` from my central repository folder do work, commit, push, repeat and then delete and there is no indication that I had one, or many copies of `AAA` floating around.  Now with `git-annex` there is some trail of me cloning, running `git annex get`, etc.
-
-Is there some way to set a remote as `untracked`?  By that I mean it is classed as `untrusted` - so I can move files around, add them, copy to trusted remotes and delete the whole repository without worrying about losing data - but it also doesn't push any of the git-annex tracking info of where a copy of a file actually is.  I don't want to know if any or all of my other `untracked` repositories have a copy of a file or not. 
-
-I don't want my `git annex whereis` polluted with many references to repositories that just don't exist any more.  I guess I could set them to dead but that still keeps all of the tracking info around in all the repos, which seems unnecessary...
diff --git a/doc/forum/Cannot_find_git-annex_in_server.mdwn b/doc/forum/Cannot_find_git-annex_in_server.mdwn
deleted file mode 100644
--- a/doc/forum/Cannot_find_git-annex_in_server.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-My server is running the precompiled tarball https://downloads.kitenet.net/git-annex/linux/current/
-
-git-annex version: 4.20130531-g5df09b5
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-
-The tarball is untared in "/opt/git-annex.linux" and this location is added to the users path in ".profile", who can launch the webapp as usual and so on.
-
-But when a git-annex client from another computer tries to stablish a remote server repository with the server via ssh, it will complain "/usr/bin/git-annex", "runshell" and so on are missing. And if the binaries in "/opt/git-annex.linux" are symlinked in "/usr/bin" they will start to miss the other bin and libs in the "/opt/git-annex.linux" source tree.
-
-As you can understand, I can't put the whole "/opt/git-annex.linux" folder tree in "/usr/bin". Is there any solution to make the precompiled tarball work properly as a git-annex server?
diff --git a/doc/forum/Cannot_launch_webapp_on_ubuntu_12.04_using_ppa.mdwn b/doc/forum/Cannot_launch_webapp_on_ubuntu_12.04_using_ppa.mdwn
deleted file mode 100644
--- a/doc/forum/Cannot_launch_webapp_on_ubuntu_12.04_using_ppa.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi, I have installed latest version from https://launchpad.net/~rubiojr/+archive/git-annex, that is git-annex version: 3.20121017-ubuntu1ppa1~precise
-When running git annex webapp I get 
-
-git-annex: unknown command webapp
-
-I only installed git-annex. Are there more packages to be installed to make it work?
diff --git a/doc/forum/Cant_see_git-annex-shell_via_SSH_in_OSX.mdwn b/doc/forum/Cant_see_git-annex-shell_via_SSH_in_OSX.mdwn
deleted file mode 100644
--- a/doc/forum/Cant_see_git-annex-shell_via_SSH_in_OSX.mdwn
+++ /dev/null
@@ -1,119 +0,0 @@
-### Sync Problems using SSH remote in OSX
-
-- Im trying to work out SSH remotes by trying to sync up repos on my home network, following the walkthrough. 
-- I have two machines (mini and mbp ) running OSX Mavericks, with RLogin enabled for all users to enable ssh.
-- I can SSH into the remote machine and see *git-annex-shell*, which seems to have ok permissions
-
-```
-
-    johns-mbp:annex johnmccallum$ ssh john@johns-mini-5.home 
-    
-    Last login: Sun Apr 12 07:31:07 2015 from johns-mbp.home
-
-    johns-mini-5:~ john$ which git-annex-shell
-
-    /usr/local/bin/git-annex-shell
-
-    johns-mini-5:~ john$ ls -l /usr/local/bin/git-annex-shell
-
-    -rwxr-xr-x@ 1 john  admin  668 12 Apr 07:03 /usr/local/bin/git-annex-shell
-
-```
-
-- Previously on mini I created and populated a repo
-
-``` 
-
-    494  mkdir annex
-
-    495  cd annex
-
-    496  git init
-
-    497  git annex init
-
-    498  cp ~/Pictures/*.png .
-
-    499  git annex add .
-
-    500  git commit -a -m 'added png'
-
-```
-
-- I can git clone this repo to MBP by SSH
-
-
-```
-	johns-mbp:~ johnmccallum$ git clone ssh://john@johns-mini-5.home/Users/john/annex ~/annex
-
-	Cloning into '/Users/johnmccallum/annex'...
-
-	remote: Counting objects: 24, done.
-
-	remote: Compressing objects: 100% (19/19), done.
-
-	remote: Total 24 (delta 3), reused 0 (delta 0)
-
-	Receiving objects: 100% (24/24), done.
-
-	Resolving deltas: 100% (3/3), done.
-
-	Checking connectivity... done
-
-	johns-mbp:~ johnmccallum$ cd annex
-
-	johns-mbp:annex johnmccallum$ git annex init 'MBP'
-
-	init MBP (merging origin/git-annex into git-annex...)
-
-	(recording state in git...)
-
-	ok
-
-	(recording state in git...)
-
-	johns-mbp:annex johnmccallum$ ls -l
-
-	total 16
-
-	lrwxr-xr-x  1 johnmccallum  staff  196 12 Apr 08:20 CoGe-Snapshot at 2013-03-22 - 11-27-20.png -> .git/annex/objects/gf/Xp/SHA256E-s367697--	fce3f47f218805cd9855ec3fd4203b52e83587148b34c8e706df512783eb7557.png/SHA256E-s367697--fce3f47f218805cd9855ec3fd4203b52e83587148b34c8e706df512783eb7557.png
-
-	lrwxr-xr-x  1 johnmccallum  staff  196 12 Apr 08:20 delicious.png -> .git/annex/objects/ZJ/vX/SHA256E-s112714--057d0faa464f8d588c053dae460838d68ea7803d7eaf7330798679e63f92cecb.png/SHA256E-s112714--057d0faa464f8d588c053dae460838d68ea7803d7eaf7330798679e63f92cecb.png
-
-
-```
-
- **HOWEVER**   _git annex get_  fails as follows:
-
-```
-
-	johns-mbp:annex johnmccallum$ git annex get delicious.png 
-
-	get delicious.png bash: git-annex-shell: command not found
-
- 	 Remote origin does not have git-annex installed; setting annex-ignore
-
- 	 This could be a problem with the git-annex installation on the remote. Please make sure that git-annex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex installation, run: git config remote.origin.annex-ignore false
-	(not available) 
- 	 Try making some of these repositories available:
-  		129620b2-91b1-4541-b7b1-9e5a9d31d5d3 -- john@johns-mini-5.home:~/annex
-	failed
-	git-annex: get: 1 failed
-
-```
-
-This is not the case on the remote host when I SSH in as the same user
-
-```
-
-    johns-mini-5:~ john$ which git-annex-shell
-
-
-    /usr/local/bin/git-annex-shell
-
-```
-
-
- The only thread on this seems to be https://git-annex.branchable.com/forum/not_finding_git-annex-shell_on_remote/ and Im at a loss to understand it.  
-
-Any suggestions would be welcome
diff --git a/doc/forum/Case-insensitive_search_with_find_list_whereis__63__.mdwn b/doc/forum/Case-insensitive_search_with_find_list_whereis__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Case-insensitive_search_with_find_list_whereis__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Are case-insensitive searchs possible with find, list, and whereis?
diff --git a/doc/forum/Central_git_annex_server_that_always_keeps_one_copy.mdwn b/doc/forum/Central_git_annex_server_that_always_keeps_one_copy.mdwn
deleted file mode 100644
--- a/doc/forum/Central_git_annex_server_that_always_keeps_one_copy.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is there a way to configure a central git repository that keeps track of large files with git annex so that multiple users can clone the repository but no repository clone can drop files from the server. Essentially, I'm looking for a way to have one repository that is always populated with at least one copy of each file. Other users shouldn't be able to tell that repository to drop any files (but would be able to add files it). The term "user" in that last sentence really refers to other clones...
diff --git a/doc/forum/Central_server_with_automatically_merged_working_tree.mdwn b/doc/forum/Central_server_with_automatically_merged_working_tree.mdwn
deleted file mode 100644
--- a/doc/forum/Central_server_with_automatically_merged_working_tree.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-I would appreciate some feedback on whether the following scheme is feasible or will prove unworkable. I have a few specific questions at the bottom.
-
-# Components
-* An archive of documents to be shared amongst computers
-* A server that stores the archive and retains all of its contents
-* A set of client machines that store only the files that they need and drop the rest
-
-# Desired behavior
-* Clients will run the assistant to handle sync'ing
-* On the server, the archive should be accessible in the working tree so that other users can read the files (they do not need write access).
-* It should be possible to modify the archive on the server while logged into the server
-* Clients can push and pull data. The server does not push or pull data.
-
-# Basic setup
-## Set up the server and one client
-* Create git annex repos on the client and server
-* Add the server as a remote in the client repo
-
-## Keep the server's working directory up to date
-* Add `git merge synced/master master` to the `annex-content` hook described [here](https://git-annex.branchable.com/git-annex-shell/).
-* Add `git merge synced/master master` to the `post-receive` hook.
-
-## Keep server working tree visible to a different group
-* Set `git config core.sharedrepository group` for the repository
-* Add `chgrp -R shared "$(git rev-parse --show-toplevel)"` to the `annex-content`, `post-receive`, and `post-merge` hooks, where `shared` is the name of the group that you want to be able to access the server files.
-
-# Questions
-* I had to add the `post-receive` hook because updates from the assistant were not trigger the `annex-content` hook. Should they trigger it?
-* Are there downsides to merging `synced/master` like this?
-* If I want to edit files on the server, is it safe to edit them in the repo with this set up? Or should I create a second client repo on the server, check out the necessary files there, and then push them to the server like I would from any other client?
diff --git a/doc/forum/Centralized_repository_with_webapp.mdwn b/doc/forum/Centralized_repository_with_webapp.mdwn
deleted file mode 100644
--- a/doc/forum/Centralized_repository_with_webapp.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Hi,
-
-I'm kind of new to git-annex, I've been following it for a while and tried small task, but never used it in a real situation.
-I'm now trying to sync various computers through a central server and I'm having some problems, so I think I might be doing something wrong.
-
-I have a remote server that I want to use as central server. I use the webapp to configure client 1 to use that server as remote server and using git (so I assume it stores the files and the tree). I then create the client 2 in another computer and doing the exact same steps.
-Initially everything seams to work, but after a few modifications in the clients weird things start to happen, files only in one client, some files don't get updated, etc.
-
-I guess I'm doing something wrong (maybe I need to clone the repo in client 2 instead of creating a new one?) but I can't figure out how to solve it.
-
-Any tip that could help me?
-
-Thanks!
diff --git a/doc/forum/Change_remote_server_address.mdwn b/doc/forum/Change_remote_server_address.mdwn
deleted file mode 100644
--- a/doc/forum/Change_remote_server_address.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi again,
-
-I have a SSH remote server that I registered to my git-annex repository via git-annex assistant. When I go to edit the settings for the repository from within git-annex assistant I noticed I can't edit the server address. If the server IP changes, how should I go about letting git-annex know of this? Can I just (1) shutdown git-annex assistant, (2) edit the 'url' line of the remote entry inside the repository's ``.git/config`` file, and then (3) start up git-annex assistant again? Is this a safe method for doing this?
-
-Regards,
-Blake
diff --git a/doc/forum/Changing_files_during_git_annex_runs.mdwn b/doc/forum/Changing_files_during_git_annex_runs.mdwn
deleted file mode 100644
--- a/doc/forum/Changing_files_during_git_annex_runs.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Hello,
-
-I have my music git annexed, direct mode. It's about 30k files of 429GB size. Some actions take considerable time (sync, add and of course transfer to/from other repos). During this time I don't hear music because of my player changes files. :-(
-
-When is it a problem when a files changes during git annex operations?
-
-git annex get gives a wrong checksum I guess and you need to re-transfer later.
-
-What about git annex add?
-
-Thx!
-Florian
diff --git a/doc/forum/Check_if_remote_is_using_GPG__63__.mdwn b/doc/forum/Check_if_remote_is_using_GPG__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Check_if_remote_is_using_GPG__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is there a way to check if a special remote is setup to use GPG? And, if so, see the ID of keys that it is encrypting to?
diff --git a/doc/forum/Check_when_your_last_fsck_was__63__.mdwn b/doc/forum/Check_when_your_last_fsck_was__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Check_when_your_last_fsck_was__63__.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Hey Joey,
-    Is there a way to see when the last fsck was?  I know about --incremental and the related options, but sometimes I'd like to know when the last time I fsck'd a file (or even the whole repo) was.  There doesn't seem to be a command line option for it, but I know that info is saved somewhere...maybe this could be part of 'git annex status'?
-
-$(words of gratitude and encouragement)
diff --git a/doc/forum/Checkout_only_some_files_with_the_assistant.mdwn b/doc/forum/Checkout_only_some_files_with_the_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/Checkout_only_some_files_with_the_assistant.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hi,
-
-I really like git-annex for sharing contents with all my devices. But i have a problem with the assistant on my phone, i don't know how to git annex get some file but not all.
-For example i have this on a remote:
-
-repository:
- - big file1
- - big file2
- - big file3
-
-I have this repository on my phone. I would like to be able to checkout out only "big file2" directly within the assistant.
-How can i achieve that?
-
-Thank you. 
diff --git a/doc/forum/Cleaning_up_after_aborted_sync_in_direct_mode.mdwn b/doc/forum/Cleaning_up_after_aborted_sync_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Cleaning_up_after_aborted_sync_in_direct_mode.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-I recently began experimenting with direct mode on a repository where only a very limited number of commands (`git annex sync`, `git annex add .`, etc.) are being used (through desktop buttons).
-
-Things were working well, and then on another repository in indirect mode I moved a large folder and synced that data with a bare repo, and synced the repo in direct mode with the same bare repo (to get everything in sync).
-
-At that point, git annex seemed to hang, taking forever to complete, and from looking a processes and files it seemed like it was going nowhere, so I killed it. I wish I had done a bit more diagnostics before that, but unfortunately I didn't.
-
-At that point, I noticed that the old directory was still there and that there were still many files in it, but the new folder had also been created and there were files there, too. So I thought the transfer was done, and for whatever reason `git annex sync` had just not cleaned up properly.
-
-In fact, the sync was only half done and the remaining files in the old directory were the only (local) copies (on the direct mode repo). I removed them and then synced again, which actually told git to delete those symlinks.
-
-When I updated another (indirect mode) repository I noticed this, so I reverted the commit in question and got the symlinks back, no data lost. Then I went back to the direct mode repo, switched to indirect mode because I was worried about direct mode, `git annex sync`ed, then `git annex get` to get the files again from a usb and everything was back to normal.
-
-Except that when I tried to go back to direct mode in that original repo, I got an error saying that git could not stat a file which is in the old (deleted) folder. Searching around, I noticed that in the `.git/annex/objects` directory, there are many remaining `.map` files with lines referring to the old (deleted) directory.
-
-Is there any way to "reset" this somehow? I would like to switch back to direct mode, and I'd prefer not to recreate the repo.
-
-Oh and I'm using version: 4.20130501-g4a5bfb3.
-
-Thanks!
diff --git a/doc/forum/Coming_from_git_world.mdwn b/doc/forum/Coming_from_git_world.mdwn
deleted file mode 100644
--- a/doc/forum/Coming_from_git_world.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-So i am coming from git world, All documentation and posts seemed to be for media etc. I have a simple question.
-
-Can i use git annex to manage large files , Which i think i can. But will it work with branching/tagging etc.
-
-e.g. We currently use git have some large files in git repo.... I am planning to move the large files to use annex. But would like to maintain branches, i.e. each branch might have different version of files and maybe tagged, So i can get back some old version from a branch.
-
-Is this possible ? I did not get any explicit  answer or examples on how this works or even if its supported.
-
-Also can i use same folder for git and git-annex ? 
diff --git a/doc/forum/Comparison_with_other_big_files_solutions.mdwn b/doc/forum/Comparison_with_other_big_files_solutions.mdwn
deleted file mode 100644
--- a/doc/forum/Comparison_with_other_big_files_solutions.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-# Comparison
-
-Based on my understanding of the http://git-annex.branchable.com/not/ page and of some research,
-I have made a draft of an [Online excel document][1] that compares different git file solutions.
-
-Feel free to edit the document and help the community to understand the different solutions out there.
-
-[1]: https://onedrive.live.com/redir?resid=C66C90783BD2C185!1200&authkey=!ACF-Ol_mG3DwQ2k&ithint=file%2c.xlsx
-
-Thank you very much,
-Alex
diff --git a/doc/forum/Compile_Problem_with_latest_git_pull_version.mdwn b/doc/forum/Compile_Problem_with_latest_git_pull_version.mdwn
deleted file mode 100644
--- a/doc/forum/Compile_Problem_with_latest_git_pull_version.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Hi,
-I try to compile the latest version of git annex on my server; 
-As you can see some package (WARP) failed to install : 
-
-    [root@git-annex]$ cat /home/reyman64/.cabal/logs/warp-3.1.11.log
-    Configuring warp-3.1.11...
-    Building warp-3.1.11...
-    Preprocessing library warp-3.1.11...
-    [ 1 of 35] Compiling Network.Wai.Handler.Warp.Windows ( Network/Wai/Handler/Warp/Windows.hs, dist/build/Network/Wai/Handler/Warp/Windows.o )
-    [ 2 of 35] Compiling Paths_warp       ( dist/build/autogen/Paths_warp.hs, dist/build/Paths_warp.o )
-    [ 3 of 35] Compiling Network.Wai.Handler.Warp.ReadInt ( Network/Wai/Handler/Warp/ReadInt.hs, dist/build/Network/Wai/Handler/Warp/ReadInt.o )
-    [ 4 of 35] Compiling Network.Wai.Handler.Warp.HTTP2.EncodeFrame ( Network/Wai/Handler/Warp/HTTP2/EncodeFrame.hs, dist/build/Network/Wai/Handler/Warp/HTTP2/EncodeFrame.o )
-    [ 5 of 35] Compiling Network.Wai.Handler.Warp.MultiMap ( Network/Wai/Handler/Warp/MultiMap.hs, dist/build/Network/Wai/Handler/Warp/MultiMap.o )
-    [ 6 of 35] Compiling Network.Wai.Handler.Warp.IORef ( Network/Wai/Handler/Warp/IORef.hs, dist/build/Network/Wai/Handler/Warp/IORef.o )
-    [ 7 of 35] Compiling Network.Wai.Handler.Warp.HTTP2.Manager ( Network/Wai/Handler/Warp/HTTP2/Manager.hs, dist/build/Network/Wai/Handler/Warp/HTTP2/Manager.o )
-    [ 8 of 35] Compiling Network.Wai.Handler.Warp.Counter ( Network/Wai/Handler/Warp/Counter.hs, dist/build/Network/Wai/Handler/Warp/Counter.o )
-    [ 9 of 35] Compiling Network.Wai.Handler.Warp.FileInfoCache ( Network/Wai/Handler/Warp/FileInfoCache.hs, dist/build/Network/Wai/Handler/Warp/FileInfoCache.o )
-    [10 of 35] Compiling Network.Wai.Handler.Warp.Timeout ( Network/Wai/Handler/Warp/Timeout.hs, dist/build/Network/Wai/Handler/Warp/Timeout.o )
-
-    Network/Wai/Handler/Warp/Timeout.hs:86:15:
-        Not in scope: ‘reaperKill’
-        Perhaps you meant ‘reaperNull’ (imported from Control.Reaper)
-
diff --git a/doc/forum/Confusion_about_Webapp___40__on_OSX__41__.mdwn b/doc/forum/Confusion_about_Webapp___40__on_OSX__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Confusion_about_Webapp___40__on_OSX__41__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I am confused on how to invoke the web app. I am learning how to use this tool, however I don't feel quite confident yet. I wanted to test out the web app, to play around with configurations and auto syncing, however I stumbled over this:
-
-    ➜  ~  git annex help webapp // works fine
-    ➜  ~  git annex webapp
-    Invalid argument `webapp' // uhh what.
-
-git-annex-webapp didn't work either.
-
-I installed with brew. El Capitan, latest update as of right now.
diff --git a/doc/forum/Consistency_Check_for_S3.mdwn b/doc/forum/Consistency_Check_for_S3.mdwn
deleted file mode 100644
--- a/doc/forum/Consistency_Check_for_S3.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Wepapp only allows me to setup consistency checks for the local repo. Non of my computers has full copy of repos. How can I setup annex so that every night for one hour it checks consistency of s3 data?
diff --git a/doc/forum/Controlling_content_on_mobile_device.mdwn b/doc/forum/Controlling_content_on_mobile_device.mdwn
deleted file mode 100644
--- a/doc/forum/Controlling_content_on_mobile_device.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-I have some questions about how to best manage content on mobile
-devices.  This is probably more of a wishlist discussion, although I
-haven't had enough experience with the assistant and preferred content
-features enough to know how much of this might already be possible.
-
-(While I did donate to both campaigns, I also didn't donate at the
-"personal git-annex assistant" level, so I also know not to expect
-personal undivided attention :) . Any tips would be appreciated.)
-
-In short, I don't think git-annex really fits with how I'd like to use
-it on my Android phone.  My current setup is as follows:
-
-- I have a large repository with various media files.  This is stored
-  on several computers, at least one of which generally has a copy of
-  everything.  I use a centralized bare repo to automatically
-  synchronize between computers with "`git annex sync origin`" using
-  cron, and manually control what is on each one using "`copy --to
-  host`", "`get`", "`drop`", etc.  It is *awesome*.
-
-What I would like for Android is:
-
-- The phone keeps in sync with the origin repository.
-
-- On the phone, I'd like to browse through and choose content to get
-  or drop.  I could use the command-line "`get`" and "`drop`" for
-  this, of course, but being able to do it through the webapp would be
-  better, as typing on a phone is no fun.
-
-- From _off_ the phone, I'd like to be able to choose which content
-  should be _on_ the phone.  For example, using the command line or
-  webapp on my desktop, I'd like to be able to choose media files that
-  should be downloaded to (or removed from) the phone.  However, I
-  don't want to have to move files between directories in the repository
-  to achieve this.
-
-- The only useful content that gets created on the phone is photos and
-  videos.  Those should get uploaded to the main server, but only the
-  most recent files should remain on the phone by default (say,
-  anything older than 2 weeks gets dropped).  Both on the phone, and
-  off the phone, I'd be able to override that using the previously
-  described features, so that certain photos remain on the phone
-  forever, or get dropped earlier.
-
-Thoughts?  I feel like git-annex is close to being able to do this.
-
--jim
diff --git a/doc/forum/Convert_regular_git-annex_repo_to_a_rsync_repo.mdwn b/doc/forum/Convert_regular_git-annex_repo_to_a_rsync_repo.mdwn
deleted file mode 100644
--- a/doc/forum/Convert_regular_git-annex_repo_to_a_rsync_repo.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is it possible to convert a regular git annex repo (git clone then git annex init in the folder), to an rsync remote. I have an annex with alot of remotes which makes the sync operation take a really long time. I would like to convert some of those remotes to rsync. This particular repo has a TB of data so I would like to avoid dropping content from the remote than re download everything.
diff --git a/doc/forum/Copy_contents_of_directory_to_rsync_remotes_possible__63__.mdwn b/doc/forum/Copy_contents_of_directory_to_rsync_remotes_possible__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Copy_contents_of_directory_to_rsync_remotes_possible__63__.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-I'm having trouble sharing an rsync remote between two users (as a "transfer" repository).  `git-annex` thinks `rsync` fails because it can't set the permissions on the root directory on the destination.  I've added `--perms --chmod=Dug+rwxs,Fug+rw,o-rwx` to `annex-rsync-options` so all users in the specified group on the destination can create and delete files.  However, I see in the logs errors like:
-
-    sending incremental file list
-    ./
-    rsync: failed to set permissions on "/home/shared-xfer/.": Operation not permitted (1)
-    2fe/985/GPGHMACSHA1--b36ce0a18718e7ea7cf9827c2748608df7152dfc/GPGHMACSHA1--b36ce0a18718e7ea7cf9827c2748608df7152dfc
-    
-             32,768   0%    0.00kB/s    0:00:00  
-          3,359,405 100%    4.78MB/s    0:00:00 (xfr#1, to-chk=0/5)
-    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1165) [sender=3.1.1]
-    [2014-10-18 15:16:24 EDT] chat: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--batch","--passphrase-fd","22","--symmetric","--force-mdc","--no-textmode"]
-    [2014-10-18 15:16:24 EDT] read: rsync ["-e","'ssh' '-S' '.git/annex/ssh/blah@blah' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=yes' '-l' 'blah' '-T'","--perms","--chmod=Dug+rwxs,Fug+rw,o-rwx","--progress","--recursive","--partial","--partial-dir=.rsync-partial","/blah/.git/annex/tmp/rsynctmp/24863/","blah@blah:/home/shared-xfer/"]
-
-      rsync failed -- run git annex again to resume file transfer
-
-The transfer actually completes fine, except for setting permissions of the root directory on the destination (which I don't really care about, because I have manually set them to be correct).  Is it possible for `git-annex` to copy the contents of the directory to rsync remotes?  For the example above, instead of `/blah/.git/annex/tmp/rsynctmp/24863/`, `/blah/.git/annex/tmp/rsynctmp/24863/2fe` would work.  I can't come up with an alternate solution for this server, except using the same remote user (which I'd prefer not to do).
diff --git a/doc/forum/Copying_and_dropping_right_after.mdwn b/doc/forum/Copying_and_dropping_right_after.mdwn
deleted file mode 100644
--- a/doc/forum/Copying_and_dropping_right_after.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Hello,
-
-I have three repos horus (client, this one), astarte (transfer, remote) and external_2tb (client, connected usb). On a git annex sync --content it first copies the content to external and astarte and then dropping the content from astarte right after. 
-
-    copy FLAC/Corvus Corax - Cantus Buranus/Corvus Corax - 08 - Sol solo.flac copy FLAC/Corvus Corax - Cantus Buranus/Corvus Corax - 08 - Sol solo.flac (to external_2TB...) 
-    Corvus Corax - 08 - Sol solo.flac
-         33,541,833 100%  257.72MB/s    0:00:00 (xfr#1, to-chk=0/1)
-    ok
-    copy FLAC/Corvus Corax - Cantus Buranus/Corvus Corax - 08 - Sol solo.flac copy FLAC/Corvus Corax - Cantus Buranus/Corvus Corax - 08 - Sol solo.flac (checking astarte...) (to astarte...) 
-    Corvus Corax - 08 - Sol solo.flac
-        33,541,833 100%  437.82kB/s    0:01:14 (xfr#1, to-chk=0/1)
-    ok
-    drop astarte FLAC/Corvus Corax - Cantus Buranus/Corvus Corax - 08 - Sol solo.flac ok
-
-Why copying it anyway?
-
-Regards,
-Florian
diff --git a/doc/forum/Copying_to_S3_does_not_work_-_chunking_does_not_work.mdwn b/doc/forum/Copying_to_S3_does_not_work_-_chunking_does_not_work.mdwn
deleted file mode 100644
--- a/doc/forum/Copying_to_S3_does_not_work_-_chunking_does_not_work.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-Posting this here because I am not sure if it is a bug or if I am missing something.
-
-I have a ~10 GB file in git-annex. I can't get it to go to S3 whatever I do.
-
-I added a S3 special remote:
-
-    git annex initremote s3-mybucket type=S3 chunk=1MiB keyid=ABCD1234 bucket=mybucket
-
-Then, I tried copying files to the remote.  Small files worked, but big files don't:
-
-    $ git annex copy bigfile.tgz --to s3-mybucket
-    copy bigfile.tgz (gpg)
-    You need a passphrase to unlock the secret key for
-    user: "user"
-    2048-bit RSA key, ID ABCD1234, created 2014-10-13 (main key ID ABCD1234)
-
-    (checking s3-mybucket...) (to s3-mybucket...)
-
-      Your proposed upload exceeds the maximum allowed size
-    failed
-    git-annex: copy: 1 failed
-
-I tried some stuff like this too:
-
-    git annex enableremote s3-mybucket chunk=100MiB
-    git annex enableremote s3-mybucket chunksize=100MiB
-
-It didn't work. Same result.
-
-    $ git annex version
-    git-annex version: 5.20140717
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-The chunk size did seem to be set properly:
-
-    $ git checkout git-annex
-    $ cat remote.log
-    xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx bucket=mybucket chunk=100MiB chunksize=100MiB cipher=....
-
-I'm on OSX 10.9.4 and I installed git-annex via homebrew.
-
-Any ideas?
diff --git a/doc/forum/Corrupt_Repository_Invalid_Object.mdwn b/doc/forum/Corrupt_Repository_Invalid_Object.mdwn
deleted file mode 100644
--- a/doc/forum/Corrupt_Repository_Invalid_Object.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-One of my repositories got corrupted. I am not exactly sure how it happened (was running a series of commands) but I think I accidentally ran regular mv instead of git mv. To fix it I deleted the moved file then checkout the original link however this did not fixed the problem. I ended up with a corrupted repo. Now running any command ends with the following error,
-
-    ga sync
-    (merging origin/git-annex origin/synced/git-annex into git-annex...)
-    (Recording state in git...)
-    error: invalid object 040000 6ad564920e3d78d31c9456f5be3869a0319f9f08 for'3fd/d44'                                                                                
-    fatal: git-write-tree: error building trees
-    git-annex: failed to read sha from git write-tree
-
-Was wondering how to fix this? I did run git fsck and git annex fsck but non fixed the problem.
diff --git a/doc/forum/Corrupted_repository__44___can_not_be_repaired.mdwn b/doc/forum/Corrupted_repository__44___can_not_be_repaired.mdwn
deleted file mode 100644
--- a/doc/forum/Corrupted_repository__44___can_not_be_repaired.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Hey, I hope somebody can help me:
-
-I recently moved a bunch of files to another location shortly after I renamed them. The assistant was running (repo: indirect mode) and I guess the assistant was confused about whether to commit the rename changes or to fix the symlinks because of the location move (and to commit these changes). I don't know much about the internal design, but after that my repository was kinda broken. Every git command failed and also "git fsck" gave me some error messages. However, I mounted my external drive (backup repo) and tried a "git annex repair". It took quite a while, but it could fix the repo....somehow. This is the current status:
-
-    ~/private [master●] » git annex info
-    repository mode: indirect
-    trusted repositories: error: refs/remotes/extern/git-annex does not point to a valid object!
-    error: refs/remotes/extern/git-annex does not point to a valid object!
-    error: unable to resolve reference refs/heads/git-annex: Datei oder Verzeichnis nicht gefunden // (english: No such file or directory)
-    fatal: Cannot lock the ref 'refs/heads/git-annex'.
-    git-annex: git [Param "update-ref",Param "refs/heads/git-annex",Param "ea4d4b5e09bfd10c714c24ca76ab5af0625bb6a7"] failed
-
-    ~/private [master●] » git fsck
-    Checking object directories: 100% (256/256), done.
-    Checking objects: 100% (654755/654755), done.
-    error: refs/remotes/extern/git-annex does not point to a valid object!
-    error: bad ref for refs/heads/git-annex
-    Checking connectivity: 654760, done.
-    dangling blob cb2a012e65b15baf0bc51cb8ac6ab05c4ac4e543
-    dangling blob 6a48216d54be6fbf0539c86501ce9e4567ebf678
-    dangling blob 3f8f21304c6dcfc6ace92093425d7f057138b5e8
-    dangling blob 4943840264ad7c06071f510261151c28b4fb5168
-    dangling blob d67e845b06b17c3ba5b44a454d3128dea6ebe8cc
-    dangling blob 38b7e4ce06a84c03b9a0f7f3a84872b2ed202421
-    dangling blob ca0a65e010c69e02953d63f33c5f2030f793c8ff
-    dangling blob aeba65035f566ec9f18ad2ba71b155b0efd2193a
-    dangling blob d3cea542db4c2904f5c8c6dd98ca3868074e6d36
-    dangling commit fe1026edee5dcc6306f04ebe1a7762b86678db8a
-    [... some more dangling objects ...]
-
-However, git annex repair does not want to repair my repo a second time:
-
-    ~/private [master●] » git annex repair
-    Running git fsck ...
-    No problems found.
-    ok
-My directory seems to be fine, also the data (symlinks) I renamed & moved are also fine. Just the "git-annex" branch seems to be broken now and I don't know how to fix that.
-
-Cheers,
-Stephan
diff --git a/doc/forum/Creating_a_more_secure_shared_encryption.mdwn b/doc/forum/Creating_a_more_secure_shared_encryption.mdwn
deleted file mode 100644
--- a/doc/forum/Creating_a_more_secure_shared_encryption.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I was wondering if there was a way to make shared encryption more secure.  Here is my suggestion:  
-The shared repository is encrypted using a key for the whole repository, just the way normal encryption would work.  
-The server additionally keeps a copy of every user's public key.  
-When a user is authorized, their repository is initialized and they receive the common key, encrypted by their public key.  
-The only issue would be storage of the common key, which would have to be restricted to repository on a trusted machine.  
-
-Not sure if this would be easy for you to implement, but I figured I'd submit a post detailing it, to see if maybe it was doable.
diff --git a/doc/forum/Crippled_FS__58___remove_read_perms_from_dropped_files__63___.mdwn b/doc/forum/Crippled_FS__58___remove_read_perms_from_dropped_files__63___.mdwn
deleted file mode 100644
--- a/doc/forum/Crippled_FS__58___remove_read_perms_from_dropped_files__63___.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-While experimenting with direct mode on Windows, I've got confused (and feeling momentary dread about apparent loss of data) many times when opening a file, and finding out that it in fact only contained the checksum; that is, was in the "dropped" state. As an **idea to prevent this confusion**, would it perhaps be possible to make the dropped files non-readable (permission denied) to the user somehow?
-
-(Background: I'm trying to build a version controlled development environment for a bunch of artists collaborating on large binaries, and making the process as fool-proof as possible is a priority.)
diff --git a/doc/forum/DBus_on_Ubuntu_12.04__63__.mdwn b/doc/forum/DBus_on_Ubuntu_12.04__63__.mdwn
deleted file mode 100644
--- a/doc/forum/DBus_on_Ubuntu_12.04__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I tried to compile the assitant branch on Ubuntu 12.04. But i depends on the DBus libraryw hich does not compile with some glibberish errors. Is there a way to solve this?
-
-
diff --git a/doc/forum/DO_NOT_use_ntfs-3g_on_mac_osx_for_annex.mdwn b/doc/forum/DO_NOT_use_ntfs-3g_on_mac_osx_for_annex.mdwn
deleted file mode 100644
--- a/doc/forum/DO_NOT_use_ntfs-3g_on_mac_osx_for_annex.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-After testing around git-annex on my mac using ntfs-3g to access the removable harddrive, I conclude that this is very dangerous. 
-
-Here are some example error snippets:
-
-    add man/man1/git-tar-tree.1 
-    git-annex: /Volumes/SeagateExpansion/annex/testdirect/.git/annex/objects/0K/JJ/SHA256E-s3805--948fd508a364e036ec28f5287d11825062aea2c0ed86a3a89ed871edc6ddc7a8.1/: openTempFile: interrupted (Interrupted system call)
-    failed
-
-    add man/man1/git-bundle.1 
-    git-annex: /Volumes/SeagateExpansion/annex/testdirect/.git/annex/tmp/e3f_804_SHA256E-s8739--569a4b4fe1072e17ff0aa9a2f67d0130b9ec3ed23f96c5a4ea38ada82f50b4aa.1.log: rename: does not exist (No such file or directory)
-    failed
-
-    add git-core/git-completion.bash failed
-    add man/man7/gitglossary.7 failed
-    (Recording state in git...)
-
-    git-annex: /Volumes/SeagateExpansion/annex/testdirect/.git/annex/journal/.fuse_hidden00005dd50000010a: removeLink: does not exist (No such file or directory)
-    failed
-    git-annex: add: 3 failed
-
-It's interesting that after each git-annex add ., it would got fewer failures. But in the end it stuck at 2 files. After 60 times doing: git-annex add .
-
-It went from this:
-
-    git-annex: add: 248 failed
-
-to this:
-
-    git-annex: add: 2 failed
-
-Now the repository has 246 objects, let's try to convert it into an indirect one:
-
-    git-annex indirect
-    ...
-    git-annex info
-    ...
-    annexed files in working tree: 9
-
-Only 9 files made into the indirect repository! Remaining files stay as original state. Now it would be a nightmare to try to recover form this mess.
-
-I discourage anyone from using ntfs-3g on mac for annexing. Especially direct & indirect mode. Bare repo seems to be fine however.
diff --git a/doc/forum/DS__95__Store_files_are_not_added.mdwn b/doc/forum/DS__95__Store_files_are_not_added.mdwn
deleted file mode 100644
--- a/doc/forum/DS__95__Store_files_are_not_added.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-The "git annex add" command adds new file to the annex. However ".DS_Store" files are ignored by git-annex. Is there a list of files that are being ignored? 
-
-Maybe sometimes it's useful to add .DS_Store extended attribute data to the annex to ensure a complete sync of Mac files...
diff --git a/doc/forum/Debugging_Git_Annex.mdwn b/doc/forum/Debugging_Git_Annex.mdwn
deleted file mode 100644
--- a/doc/forum/Debugging_Git_Annex.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Hi, 
-May I know, how can I debug git-annex code.
-I am new to Haskell Platform, I would like to know which IDE can be used to debug haskell code.
-Thank You.
diff --git a/doc/forum/Deduplication_in_direct_mode.mdwn b/doc/forum/Deduplication_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Deduplication_in_direct_mode.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Hi,
-
-I'm using git-annex across a number of (indirect) repositories, making heavy use of deduplication for organizing files according to various different aspects.
-
-Now I want to keep part of the files also on a VFAT device, which doesn't let me use indirect mode.  In direct mode, however, git-annex "get" or "copy" places a separate copy of each file in the repository, whereas in indirect mode, it would just keep a single copy and maintain a number of (inexpensive) symbolic links.  Since space on the VFAT drive is limited, I would like to just keep one, specific copy, not caring about the others.  If I "drop" an unneeded copy of the file, it also gets replaced by the ASCII "link" in all other places that contained the same file.  Therefore, I can either have multiple copies of the same data or none at all.
-
-Imagine you have a bunch of photos sorted into a directories in meant to make it easy to find them (same file name means same file content):
-
-./photo1.jpg
-./photo2.jpg
-./by-date/2014-10-27/photo1.jpg
-./by-date/2014-10-28/photo2.jpg
-./by-event/holiday-by-the-sea/photo1.jpg
-./by-event/her-birthday/photo2.jpg
-
-I want to keep a copy of ./photo?.jpg in the VFAT repository, but not the other (identical) files.  How do I do that?  Or is there really no way of doing this?
-
-Thanks.
diff --git a/doc/forum/Default_annex.largefiles.mdwn b/doc/forum/Default_annex.largefiles.mdwn
deleted file mode 100644
--- a/doc/forum/Default_annex.largefiles.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I'm new to git annex, so if this has been discussed before, please forgive me.  The documentation of annex.largefiles seems to say that all files are added to the annex by default.  However, when I tried it, several of my smaller files were not added to the annex.  I admit that I haven't tried changing this value yet.  Has the default changed?  I'm using the package from Arch AUR git-annex-bin. Possibly this version has a different default?
diff --git a/doc/forum/Default_text__47__html_handler.mdwn b/doc/forum/Default_text__47__html_handler.mdwn
deleted file mode 100644
--- a/doc/forum/Default_text__47__html_handler.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-I've had to change my default `text/html .html` handler from a text editor to a browser to support the opening sequence of `git annex webapp`. any other way around this? perhaps to have it open the page in the default browser rather than the default text/html handler?
-
diff --git a/doc/forum/Delete_unused_files__47__metadata.mdwn b/doc/forum/Delete_unused_files__47__metadata.mdwn
deleted file mode 100644
--- a/doc/forum/Delete_unused_files__47__metadata.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-After moving some files (about 1G, some big and some small files) in and out the annex, I noticed that the size of the repository has grown quite a bit. My empty repository now is over 100 MB (even after  "git annex dropunused ..." and "git gc").
-
-Most of this size is not Git metadata but many small files in the git-annex branch that seem to hold information about files I deleted (even in the other known repositories).
-
-So is there a way to get rid of these useless but space consuming information?
-
-(Maybe there is no (elegant) way to remove the symlink versions from the Git history (is there?), but it would already be nice if those small git-annex metadata files could be removed)
diff --git a/doc/forum/Deleting_remotes_doesn__39__t_work__8230__.mdwn b/doc/forum/Deleting_remotes_doesn__39__t_work__8230__.mdwn
deleted file mode 100644
--- a/doc/forum/Deleting_remotes_doesn__39__t_work__8230__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I'm trying to get rid of two remotes through the assistant, but when I'm trying to delete it, it doesn't start deletion process, as far as I can tell, since the symbol where it say syncing enabled/disabled is not changed to "delete" or whatever it is.
diff --git a/doc/forum/Desktop_as_transfer_repository.mdwn b/doc/forum/Desktop_as_transfer_repository.mdwn
deleted file mode 100644
--- a/doc/forum/Desktop_as_transfer_repository.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Hi,
-
-I try to achieve this with my podcast repository:
-
-I have three repositories all in indirect mode:
-
-1. desktop
-2. backup on usb disk at desktop
-3. raspberrypi
-
-I want to use the desktop as transfer repository. 
-
-If I add a new url on the raspberrypi I want to sync the content via the desktop repository to the backup repository which is no directly accessible from the raspberrypi.
-
-If I add a new url on desktop the content should be moved to raspberrypi and backup. 
-
-So I don't want to have the content of the files on the desktop. All content should be in backup. 
-
-If content is not in raspberrypi I want to get it from backup via desktop.
-
-What is the best workflow to achieve this?
-
-Currently my problem is that if I do a "git annex sync --content" the content is also copied to desktop. Maybe because the desktop repo is origin? 
-
-- backup is in group backup
-- desktop is in group transfer
-- raspberrypi is in no special group
-
-To do further experiments I need a way to see in what group a repo is, but "git annex show" has no information about this.
-
-TIA
-
-juh
diff --git a/doc/forum/Detached_git_work_tree__63__.mdwn b/doc/forum/Detached_git_work_tree__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Detached_git_work_tree__63__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Does git-annex (safely) handle detached work trees?
-
-That is, in git I can set `GIT_WORK_TREE=/dir/A` and `GIT_DIR=/dir/B` in the environment and have all my .git stuff in /dir/B and all my files in /dir/A.
-
-I can see this coming in useful for a few situations, but in particular for difficult file systems - like SMB or old implementations of NFS.
-
-In my particular case I have a Drobo (something like a proprietary NAS).  The Drobo is linux based, but by default mounts as a samba share or if you install `unfsd` it can be mounted via NFS.  Unfortunately, the nfs is v3 and doesn't allow locks, so git-annex barfs.  :-(
-
-What I'd like to be able to do is have a direct mode annex on the drobo, with the git directory sitting on one of my linux machines.  That machine would be the only one that would directly access the drobo data as an annex but other systems that look at the drobo would see what looks like a normal directory structure; for example my media centre - `mythtv` naturally! - would see "normal" names for my music collection, not SHA256 hashes...
-
-I guess there would be an issue if there were different `GIT_DIR`s pointing to the one `GIT_WORK_TREE`, but that is a caveat emptor IMHO. 
diff --git a/doc/forum/Difference_between_copy__44___move_and_get__63__.mdwn b/doc/forum/Difference_between_copy__44___move_and_get__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Difference_between_copy__44___move_and_get__63__.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-I'm starting to experiment with git annex.  I'd like to use it for a centralized git repo that will be checked out often, but the clones will rarely need some large binary files (used for testing).  Therefore, I've set up a centralized/bare git repo and a clone of that repo using the instructions at [centralized_git_repository_tutorial](http://git-annex.branchable.com/tips/centralized_git_repository_tutorial/) and [bare_repositories](http://git-annex.branchable.com/bare_repositories/).  I've added some files to the annex in the clone.
-
-I'm struggling to understand the difference between copy, move, and get.  Here's a sequence of commands:
-
-    >> git annex add shared/1bel.maegz
-    >> git commit -m "added first file"
-    >> git push
-    >> git annex move shared/1bel.maegz --to origin
-    ## Now it no longer exists in my local repo
-    >> git annex get shared/1bel.maegz
-    fails.
-    >> git annex get shared/1bel.maegz --from origin
-    fails.
-    >> git annex copy shared/1bel.maegz --from origin
-    fails.
-    >> git annex move shared/1bel.maegz --from origin
-    succeeds! Now I have the file in my clone.
-
-Each failure message is:
-
-    fatal: Could not switch to '../.git/annex/objects/W8/gZ/SHA256-s99196--62874e9b58e652c9c01e796c2bf38b2234a80e0cef95c185bb7f0857d9765df2': No such file or directory
-    git-annex: <file descriptor: 6>: hGetLine: end of file
-
-How are copy, move, and get different? Which one *should* I be using to move my large data into the central (bare) repo?  Will it then be available to other clones?
diff --git a/doc/forum/Different_annexes_pointing_to_same_special_remote__63__.mdwn b/doc/forum/Different_annexes_pointing_to_same_special_remote__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Different_annexes_pointing_to_same_special_remote__63__.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Is there likely to be any problem in pointing different annexes to the same special remote (i.e. rsync/box.com/etc.) ?
-
-As the objects are stored based on their SHA256 key the expectation is that the chance of collision is is small.
-
-The only problem I can foresee is where the same content is stored in more than one annex and it is deleted in the remote in one annex, but not the other - there won't be any protection against that, but for non-overlapping content this risk should be negligible.
-
diff --git a/doc/forum/Direct_Mode_-_Restore_file_from_Full_Backup_Repository__63__.mdwn b/doc/forum/Direct_Mode_-_Restore_file_from_Full_Backup_Repository__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Direct_Mode_-_Restore_file_from_Full_Backup_Repository__63__.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hi, I'm using the webapp and created a repository on my local computer. Then I created another remote repository (encrypted remote with gcrypt), this remote repository is selected as type "full backup". 
-
-I've added some files to the local repository, then changed some of them and watched the sync happen. Then I deleted some files, and these also get synced to the remote.
-
-Now, how can I recover those files from the foreign repo, using the webapp or the command line? I could not find any solution.
-
-I tried:
-git log --diff-filter=D --summary
-and then
-git checkout 488408bfcd58eced685d9e3ca5daf55250850f5d -- .
-to recover the file listed in this remote but got the following response:
-fatal: This operation must be run in a work tree
-
-What do I miss and how does the "Restore" part work when using "full backup" remote repository?
diff --git a/doc/forum/Direct_special_remotes.mdwn b/doc/forum/Direct_special_remotes.mdwn
deleted file mode 100644
--- a/doc/forum/Direct_special_remotes.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-I have a NAS at home which I access both as AFP/SMB shares and thru ssh/rsync.  Now, I'd like to keep on using the shares as before, i.e., browsable via AFP/SMB with conventional file names.  Ideally, I'd also like to git-annex some NAS shares, preferably, in direct mode. However, it seems out of the question to install git-annex on the NAS (hopefully, I'm wrong about this in the long run).
-
-Two **non-special remote setups** would be:
-
-1. Mount the share and turn it into a direct mode git annex repo.  Does anybody have experience with this?  I'd suspect this to be very inefficient due to the use of all the files in .git over AFP/SMB.  Configuration as a WORM backend seems to be advised? (Edit: Well, I just tried this and 'git annex init' failed as described in this [forum post](http://git-annex.branchable.com/forum/Can__39__t_init_git_annex/).  So AFP/SMB seem to be non-starters. :-(  Furthermore, AFP/SMB are immediately detected as crippled and set to direct mode automatically.)
-2. Same as 1. but with a local GIT_DIR.  This should work by having .git on the NAS link to the local GIT_DIR.
-
-Alternatively, I could treat my NAS as a [**web special remote**](http://git-annex.branchable.com/tips/using_the_web_as_a_special_remote/).  Some URL schemes come to mind:
-
-* **file:**  This would benefit from some wish list items ([recursive directory remote setup/addurl](http://git-annex.branchable.com/todo/wishlist:_recursive_directory_remote_setup__47__addurl/)).
-* **rsync:** AFAIK not implemented (yet?) as an option for web special remotes.
-* **sftp:** (Might also include ssh access.)
-
-The problem is that the "web semantics" don't really work in my use case:
-
-* Files might change/move on the NAS.
-* I'd like changes (e.g., renamed files) in my local repo to propagate to the NAS.  Currently, git-annex would use git push for this purpose IIUC, however that's not available on the NAS...
-* the web semantics seem to imply that there is exactly one "web" repository (and the URL is fixed)
-
-All of these indicate a mismatch between my use case and web special remotes.
-
-Hence my question: **Would something like a "direct special remote" make sense?**
-
-As a starting point I'd look at a setup similar to 2. above, i.e., a remote "working copy" with local GIT_DIR.  Except that instead of a whole local .git directory a branch in an existing .git dir might be more appropriate...
-
---Chris
diff --git a/doc/forum/Disadvantages_of_WORM__58___long_filename__63__.mdwn b/doc/forum/Disadvantages_of_WORM__58___long_filename__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Disadvantages_of_WORM__58___long_filename__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Hello,
-
-first, I felt very comfortable with git-annex, but now I run into problems more often, and I think they are related to the WORM backend. I use this backend for my photos, since they are big (25MB) and never modified (camera raws, I don't touch them). So I edited my `.gitattributes` to use `WORM`.
-
-The problems usually are as follows: I perform an operation, and git (I think it is git which has the problems), and the process exits with exit code 1 and tells me "cannot open binary file: File name too long". The same happens from time to time when I have filenames containing special characters such as ', which can happen when I tag my music collection. I suspect the WORM backend to cause the problems, since the file names in `.git/annex` are indeed very long and ugly beccause of all the escaping done here.
-
-I am sorry that I cannot give a recipe how to reproduce this behaviour, and sometimes it helps to enter a subdirectory and perform the operation from there, for example:
-
-`$ git annex copy --to dest Pictures` fails, but `$ cd Pictures/dir_with_problematic_file; git annex copy --to dest .` works.
-
-Is there some advice or did anyone here observe similar behaviour?
-
-Best regards, Philipp
diff --git a/doc/forum/Disk_usage_during___96__import__96__.mdwn b/doc/forum/Disk_usage_during___96__import__96__.mdwn
deleted file mode 100644
--- a/doc/forum/Disk_usage_during___96__import__96__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Does `git-annex import` move data to the working directory before moving it to `.git/annex/objects`?
-
-The reason I'm asking is that I use the split SSD/HDD setup with some annexes, i.e., everything resides on an SSD except for the git-annex objects directory.
-
-If git-annex wrote imported data to the working directoy (on the SSD) first and moved it to the objects directory (on the HDD) later, it would cause lots of unnecessary writes to the SSD.
diff --git a/doc/forum/Distributing_data_to_a_set_of_drives.mdwn b/doc/forum/Distributing_data_to_a_set_of_drives.mdwn
deleted file mode 100644
--- a/doc/forum/Distributing_data_to_a_set_of_drives.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Here is my situation, Say I have a repo that is 3 TBs (lets call this repo A has full copy of everything.) and I have 3 other drives all 1 TB each lets call them B C D, then I have partial checkouts on my laptops D E. What I would like to do is, have two copies of all files in A and BCD I would like to threat BCD as a group acting like a single repo so A distributes files evenly to drives in group BCD. I also want copies in D and E to not count towards num of files. As for the latter even though I set D and E as untrusted annex still counts copies on those repos If a get a file in D assistant drops a copy from one of the trusted repos A or BCD I have to move it back instead of just dropping it. Also How can I or is it possible to set BCD to act as a group so A distributes files among drives currently I can do this using find/get but it turns it into a math problem every time a add a file to A I have to manually check which disk has most space navigate to it check files with less copies then 2 and get them.
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
deleted file mode 100644
--- a/doc/forum/Do_I_have_naming_ssh_remote_issue__63__.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-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)
-
-**Solution**: Neither UUID or the description is used by get. I also should not have resorted to [[special_remotes]] setup for setting up a git remote.
-
-# 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>
-
-**Solution**: This was because my ssh git URL was incorrect. A better error message has been implemented: <http://source.git-annex.branchable.com/?p=source.git;a=commitdiff;h=3439ea4>
-
-
-# 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.
-
-**Solution**: A _rw_ git URL configured with `git remote` are not [[special_remotes]]. I confused the two. If you need to define public git URL ([[time capsule use case|future_proofing]]), it is possible with an undocumented `git annex initremote foo type=git location=url`. So to summarise, just manually setup the git remote `git remote add ssh://someplace/path/to/repo` (don't worry about the name) and git-annex will find it!
diff --git a/doc/forum/Does_Jabber_syncing_work_when_the_buddy_is_offline__63__.mdwn b/doc/forum/Does_Jabber_syncing_work_when_the_buddy_is_offline__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Does_Jabber_syncing_work_when_the_buddy_is_offline__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Do both friends need to be online in order for Jabber syncing to work? Or will the pushed changes be stored on the Jabber server, so that when the remote machine does come online it can pull them even if the original machine is now offline?
diff --git a/doc/forum/Does_git-annex_version_big_files__63__.mdwn b/doc/forum/Does_git-annex_version_big_files__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Does_git-annex_version_big_files__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi
-
-I am trying to understand how git-annex works. Does it version big files at all? 
-
-thanks
diff --git a/doc/forum/Does_migrate_ensure_data_integrity__63__.mdwn b/doc/forum/Does_migrate_ensure_data_integrity__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Does_migrate_ensure_data_integrity__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Out of simple curiosity, how does 'git annex migrate' work?  I'm mostly wondering how file integrity is ensured.
-
-Let's say you want to migrate foo.txt from (say) md5 to sha256.  Does git annex simply sha256sum foo.txt and rename it in the .git/objects folder to the new sum?  Or does it md5sum foo.txt, verify that it's the not corrupt, then sha256sum it and rename to the new sum?
-
-You could run into problems if you migrate without first verifying; if the file is corrupt and you simply sha256sum and rename it, then the file wouldn't seem corrupt at your next fsck.
-
-I'm sure you've considered this during the basic design phase of git-annex, but I'd just like to be sure.  I'm kind of paranoid when it comes to data integrity. =P
diff --git a/doc/forum/Does_the_windows_version_install_iStartSurf_malware__63__.mdwn b/doc/forum/Does_the_windows_version_install_iStartSurf_malware__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Does_the_windows_version_install_iStartSurf_malware__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Hi, since I installed git-annex-windows through the link from the homepage I got iStartSurf, a really anoying malware. Could somebody ack the existence of iStartSurf in windows version? I use my windows seldom, usualy start only to receive updates. (and of coures to try out git-annex)
-
-Zsolt
diff --git a/doc/forum/Don__39__t_understand_how_to_delete__47__recover_files.mdwn b/doc/forum/Don__39__t_understand_how_to_delete__47__recover_files.mdwn
deleted file mode 100644
--- a/doc/forum/Don__39__t_understand_how_to_delete__47__recover_files.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-My Use Case:
-
-I try basicly to use annex as a raid-like tool (at least thats the first step)
-
-so I added some big files to it, and then I synced it to a usb-remote. So far all did go well...
-
-No I startet annex watch daemon... because I thought it would then watch the files and checkin and out at least for the "origin" copy of the files.
-
-Then I thought lets delete some files I dont need anymore... so... rm.... ^^
-
-Maybe I just wanted to see what happens or if that would magicly do what I wanted him to do... ok I knew that it would not delete the file on the usb-drive (backup...) ok... but maybe at least localy...
-
-
-Now what did happen instead of that... the links are gone yes... the files it self are in the .git objects tree, so they did not get deleted, so ok not the way I wanted... have to unlock it first, would make maybe sense...
-
-So I tried first to get the links back... tried fix, tried unused, tried get... but the links doesnt show up again...
-
-is there a way to first bring back the links?
-is it save or the right way to just git rebase HEAD~3 to bring the links back?
-
-and then when I want to delete files from all places whats the way to do that... annex unlock -> then delete? or git drop filex --copies=0 or something?
-
-like I said I try to use is like a more flexible raid thing, this files are to big to really back em up with history... I watch them... and then soon I will often delete them (from everywhere). but other parts stay... I dont delete them then... ^^
-
-So maybe I missuse annex for that usecase... try to find that out ;)
diff --git a/doc/forum/Don__39__t_understand_local_vs._known_keys.mdwn b/doc/forum/Don__39__t_understand_local_vs._known_keys.mdwn
deleted file mode 100644
--- a/doc/forum/Don__39__t_understand_local_vs._known_keys.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-I just created a new Annex by doing the following:
-
- 1. git init
- 2. git annex init
- 3. git annex add .
- 4. git commit -m "Added files"
- 5. git annex status
-
-I see the following:
-
-    local annex keys: 224
-    local annex size: 41 gigabytes
-    known annex keys: 235
-    known annex size: 49 gigabytes
-    bloom filter size: 16 mebibytes (0% full)
-    backend usage: 
-            SHA256: 459
-
-Why is there an 8 gigabyte difference here?  What/where are those files?  What is a bloom filter?
diff --git a/doc/forum/Don__39__t_understand_sync_with_ssh_remote.mdwn b/doc/forum/Don__39__t_understand_sync_with_ssh_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Don__39__t_understand_sync_with_ssh_remote.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-Hi,
-
-I don't understand how to sync an empty local repository on my local pc with ssh server.
-
-On webfaction distant ssh host, i create a repository in v6  which contain all my file (commited with git commit).
-
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        151c9c3c-7bf2-4a06-ab47-38dfd65b0d12 -- reyman64@web504.webfaction.com:~/webdav/bib/seb/pdf-repository [here]
-
-On local pc, i create an empty repository, also in v6, and i configure ssh remote, nammed "pdfwebfaction", so git annex info return this
-
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        151c9c3c-7bf2-4a06-ab47-38dfd65b0d12 -- reyman64@web504.webfaction.com:~/webdav/bib/seb/pdf-repository
-        9d08d7c0-55da-451e-8ca3-aaa612eefb46 -- reyman@Dunwich:~/Sync/PDF_Webfaction [here]
-
-
-I want to sync local with this remote branch, and sync content, so i try :
- 
-    git annex sync pdfwebfaction
-
-Which return :
-
-    commit  git-annex: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","commit","-a","-m","git-annex in reyman@Dunwich:~/Sync/PDF_Webfaction"] exited 1
-
-And i also try without success : 
-
-    git-annex get --from pdfwebfaction
-
-which return an error about uuid, don't understand why because uuid exist for ssh repo :
-
-    git-annex: cannot determine uuid for pdfwebfaction (perhaps you need to run "git annex sync"?) (remote.pdfwebfaction.annex-ignore is set)
-
-My git config is : 
-
-    [core]
-        repositoryformatversion = 0
-        filemode = true
-        bare = false
-        logallrefupdates = true
-    [annex]
-        uuid = 9d08d7c0-55da-451e-8ca3-aaa612eefb46
-        version = 6
-    [filter "annex"]
-        smudge = git-annex smudge %f
-        clean = git-annex smudge --clean %f
-    [remote "pdfwebfaction"]
-        url = ssh://reyman64@reyman64.webfactional.com:/home/reyman64/webdav/bib/seb/pdf-repository
-        fetch = +refs/heads/*:refs/remotes/pdfwebfaction/*
-
-There is something i don't understand, and the documentation talk only about ssh associated with a git clone command.
-
-PS : the ssh connection is correct, i test it.
diff --git a/doc/forum/Drop_with_assistant.mdwn b/doc/forum/Drop_with_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/Drop_with_assistant.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi,
-
-how can I handle *drop* with the assistant? There are some files in my annex that I don't need on my laptop. so i just *drop* them on the command line bevcause I have copies on my server and an external usb drive. But after a while the assistant pulls all the files back in. Can I avoid this and make the *drop* somehow "sticky" until i *get* them over cli?
-
-Best, Michael
diff --git a/doc/forum/Duplicate_entries_in_location_tracking_logs.mdwn b/doc/forum/Duplicate_entries_in_location_tracking_logs.mdwn
deleted file mode 100644
--- a/doc/forum/Duplicate_entries_in_location_tracking_logs.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I’ve noticed something odd when inspecting the history of the
-git-annex branch today. Apparently, the branch had some merge
-conflicts during sync that involved two alternative location tracking
-entries that both were for one and the same remote. Both entries only
-differed in their timestamps, and the union merge kept both, so that I
-now have .log files in the annex branch that contain duplicate parts
-like this.
-
-<pre>
-1404838274.151066s 1 a2401cfd-1f58-4441-a2b3-d9bef06220ad
-1406978406.24838s 1 a2401cfd-1f58-4441-a2b3-d9bef06220ad
-</pre>
-
-The UUID here is my local repository.
-
-The duplication also occurred in the uuid.log:
-
-<pre>
-4316c3dc-5b6d-46eb-b780-948c717b7be5 server timestamp=1404839228.113473s
-4316c3dc-5b6d-46eb-b780-948c717b7be5 server timestamp=1404847241.863051s
-</pre>
-
-Is this something to be concerned about? The situation somehow arose
-in relation to unannexing a bunch of files and rebasing the master
-branch.
diff --git a/doc/forum/Effectively_replicating_backup_files.mdwn b/doc/forum/Effectively_replicating_backup_files.mdwn
deleted file mode 100644
--- a/doc/forum/Effectively_replicating_backup_files.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I currently use duply/duplicity to back up my networked computers to my home server. I have two external HDDs and, every week or so, I bring one of these home and copy the backup files to the hard drive (I leave them on the server to easily restore files and because I have a large hard drive in that). I use some hand-written scripts to keep a copy these backup files in the cloud (Ubuntu One) until they have been copied to both hard drives, ensuring that there are always two copies of the files somewhere offsite. Out of paranoia, I also have some "standalone backups" that are just huge encrypted archives of important folders (say, my entire Photos directory) as at a certain date - in case for some reason duplicity ever stops working or I need to roll something back to a version years earlier. I am less worried about these standalone backups and manually keep one copy of each somewhere.
-
-It sounds like Git-Annex could automate things quite nicely (and give me some neat extras, like knowing where they were). This is how I understand I should do it, but please let me know if it is the right approach or if you have any suggestions:
-
-1. Create a folder on my server called "annex" and make a Git-Annex "large backup" repository in there.
-2. Create a folder within that called "archive" and put a "backup" folder within that. I understand that having the backups within an archive folder will mean that they aren't automatically copied to my desktop machines etc. 
-3. Within that "backup" folder, create two folders, one called "duplicity" and one called "standalone". Put the backups in the respective folders.
-4. Set up gcrypt Git-Annex repositories on my two external HDDs as "small backups". This seems to just start copying files across. That surprised me, as the files are in the archive folder and I thought the default was numcopies=1. Is there some autosync option that I need to turn off? Ideally, I would like it to encrypt/decrypt primarily with my server GPG key (which I'm not worried about copying around my computers), but also encrypt to my personal GPG key (where I'd only put my public key on the server, but I know I will not lose the secret key for that). Am I right that to do that I would need to set the repos up manually with:
-
-    git init --bare /mnt/externalHDD1
-
-    git annex initremote externalHDD1 type=gcrypt gitrepo=/mnt/externalHDD1 keyid=$serverkey keyid=$personalkey
-
-    git annex sync externalHDD1
-
-    Or should the gitrepo be the location of my main Git-Annex repository? How do I make it sync up with my other repos?
-
-5. I understand that I would then need to set numcopies=3 in a .gitattributes file in the "archive/backup/duplicity" directory and, say, a numcopies=2 in the "archive/backup/standalone".
-6. I could then add a cloud repository as a "transfer" repository and Git-Annex should only keep files on that that are not already in the right number of places (similar to what my scripts are doing now).
-7. I have recently upgraded my hard drive, so I have my old 1TB internal hard drive that I will be putting in a cupboard somewhere. I was thinking that I could make this an archive drive for things like one copy of my duplicity/standalone backups. I wouldn't want it to be the only copy of anything. If I just set it as an archive drive, would this work?
-8. Are there more clever ways of doing this? I consider my external HDDs and the cloud repo as "offsite" repositories and ideally there would always be one copy of my backups offsite (in addition to at least three overall). There would also ideally be one of each of my files "live" (in most cases my server) that could instantly push files into a cloud repo and then to wherever I am. Is there any ability to put repositories in groups and write rules like that?
-
-Any thoughts greatly appreciated!
-
-Aaron
diff --git a/doc/forum/Encrypted_Content_Remote_Daemon_.mdwn b/doc/forum/Encrypted_Content_Remote_Daemon_.mdwn
deleted file mode 100644
--- a/doc/forum/Encrypted_Content_Remote_Daemon_.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I am currently using rsync.net to keep my notes in sync, both git repo and the content (gpg encrypted) is stored there. Instead of creating two other repos on a server that I have which has git-annex installed where I can actually use remote daemon. Is it possible to create a repo containing both the git repo and the content encrypted from the command line?
diff --git a/doc/forum/Encrypted_ssh_remote__44___synced_folders.mdwn b/doc/forum/Encrypted_ssh_remote__44___synced_folders.mdwn
deleted file mode 100644
--- a/doc/forum/Encrypted_ssh_remote__44___synced_folders.mdwn
+++ /dev/null
@@ -1,87 +0,0 @@
-Hello,
-
-I hope my understanding of the git-annex webapp is correct, and if not, please correct my wrong thought-pattern.
-
-I have 2 VPS servers and 5 computers. On the 5 computers, I want to sync one folder (with subfolders and files). All the computers are full-disk encrypted, and it is important for me that when the data leaves my computer, it stays encrypted in one way or another. I want to use the two VPS's as an encrypted ssh full backup repository.
-
-The computers are rarely on at the same time, some are off for two weeks, others are on more frequent. However, the VPS's are always on.
-
-Now, is it possible to set up git-annex to support this behaviour? Using an encrypted ssh remote to make sure the folder is in sync on all computers? 
-
-I've set git-annex up on one box, with the two servers as encrypted full backup remotes (without git-annex installed there), and configured my jabber account. That all works, and the files get synced.
-
-Then I've set up a second computer, while the first one is still on. There I've added my jabber account, and created a local repository. Then I selected "Share with your other devices". It now shows my jabber account on both machines, and I saw a few syncing messages, but then there came errors, "Unable to download files from your other devices". I've attached the log at the bottom of this page.
-
-It gives me the option to add a Cloud Repository. If I add the encrypted rsync full backup remote VPS there, will it work and keep my files in sync? is there something I'm doing wrong?
-
-Note that the computers I've set up now are two OS X machines running Mountain Lion, and the servers are CentOS 6.
-
-Log:
-
-
-    [2013-07-15 07:44:17 CEST] main: starting assistant version 4.20130709-g18e5f43
-
-    (scanning...) [2013-07-15 07:44:17 CEST] Watcher: Performing startup scan
-    (started...) [2013-07-15 07:45:08 CEST] main: starting assistant version 4.20130709-g18e5f43
-
-    (scanning...) [2013-07-15 07:45:08 CEST] Watcher: Performing startup scan
-    (started...) [2013-07-15 07:54:31 CEST] XMPPClient: Pairing with stnl in progress
-    rercrrrreveeeec:ccccv vvvv:r:::: e    rsrrrreoeeeesussssorooooucuuuurerrrrc cccceveeee a    vnvvvvaiaaaansnnnnihiiiisesssshdhhhhe eeeed(dddd C    (o((((CnCCCConoooonennnnncnnnneteeeecicccctottttiniiiio oooonrnnnn e    rsrrrreeeeeestsssse eeeetbtttt y    b bbbbypyyyy e    peppppereeeee)eeeer
-    rrrr)))))
-
-
-
-
-    recv: resource vanished (Connection reset by peer)
-    recv:r errceevcs:vo :ur rercseeos uovruacrneci esv havenadin si(hsCehoden dn( eC(coCtnoinnoennce tcriteoisnoe ntr  erbseyes tep teb eybr y)p
-    epeere)r
-    )
-    [2013-07-15 07:55:00 CEST] XMPPSendPack: Syncing with janwxmpp
-    Already up-to-date.
-    recv: resource vanished (Connection reset by peer)
-    [2013-07-15 07:55:04 CEST] XMPPReceivePack: Syncing with janwxmpp
-    To xmpp::janwxmpp@gmail.com
-     * [new branch]      git-annex -> refs/synced/0a41c397-09e8-4957-a6f4-2a6846a4f9d8/cmVsc3RubEBnbWFpbC5jb20=/git-annex
-     * [new branch]      master -> refs/synced/0a41c397-09e8-4957-a6f4-2a6846a4f9d8/cmVsc3RubEBnbWFpbC5jb20=/master
-    [2013-07-15 07:55:25 CEST] XMPPSendPack: Unable to download files from your other devices.
-    [2013-07-15 07:55:25 CEST] XMPPSendPack: Syncing with janwxmpp
-    recv: resource vanished (Connection reset by peer)
-    fatal: Could not read from remote repository.
-
-    Please make sure you have the correct access rights
-    and the repository exists.
-    [2013-07-15 07:57:25 CEST] XMPPSendPack: Unable to download files from your other devices.
-    recv: resource vanished (Connection reset by peer)
-    recv: resource vanished (Connection reset by peer)
-    recv: resource vanished (Connection reset by peer)
-    recv: resource vanished (Connection reset by peer)
-    recv: resource vanished (Connection reset by peer)
-
-    (Recording state in git...)
-
-    (scanning...) [2013-07-15 08:01:36 CEST] Watcher: Performing startup scan
-    (started...) recvr:rrrrrrre eeeeeeecrcccccccvevvvvvvv:s::::::: o       rurrrrrrrereeeeeeescsssssssoeooooooou uuuuuuurvrrrrrrrcaccccccceneeeeeee i       vsvvvvvvvahaaaaaaanennnnnnnidiiiiiiis sssssssh(hhhhhhheCeeeeeeedoddddddd n       (n(((((((CeCCCCCCCocooooooontnnnnnnnninnnnnnneoeeeeeeecnccccccct tttttttiriiiiiiioeooooooonsnnnnnnn e       rtrrrrrrre eeeeeeesbssssssseyeeeeeeet ttttttt p       bebbbbbbbyeyyyyyyy r       p)pppppppe
-    eeeeeeeeeeeeeeerrrrrrrr))))))))
-
-
-
-
-
-
-
-    [2013-07-15 08:44:42 CEST] XMPPSendPack: Syncing with janwxmpp
-    recv: resource vanished (Connection reset by peer)
-    recrvre:ec cvrv:e: s roreuesrsocoueur rcvceae n vivasanhnieisdsh he(edCd o (n(CnCoeoncnntneiecoctnti ioronen s reretes sebetyt   bpbyey e prpe)ee
-    err))
-
-    fatal: Could not read from remote repository.
-
-    Please make sure you have the correct access rights
-    and the repository exists.
-    [2013-07-15 08:46:42 CEST] XMPPSendPack: Unable to download files from your other devices.
-    [2013-07-15 08:46:42 CEST] XMPPSendPack: Syncing with janwxmpp
-    fatal: Could not read from remote repository.
-
-    Please make sure you have the correct access rights
-    and the repository exists.
-    [2013-07-15 08:48:42 CEST] XMPPSendPack: Unable to download files from your other devices.
diff --git a/doc/forum/Equivalent_to_git_bundle__63__.mdwn b/doc/forum/Equivalent_to_git_bundle__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Equivalent_to_git_bundle__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hi,
-
-git provides a neat way to create archives of git repos (or parts thereof): git bundle.
-
-git bundle obviously works with git annex as well, BUT those bundles don't include the actual content (in other words, only the symlinks are bundled up).
-
-Is there a way to get the git bundle functionality with git annex?
-
-THX & Cheers,
-Toby.
diff --git a/doc/forum/Error_adding_ssh_remote_in_assistant.mdwn b/doc/forum/Error_adding_ssh_remote_in_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/Error_adding_ssh_remote_in_assistant.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I'm trying to add a ssh remote in the web app, but I receive the following error:
-
-    Internal Server Error
-
-    ssh-keygen ["-F","router.eisenacher81.org"] exited 1
-
-The console complains about the known_hosts file:
-
-   /home/michael/.ssh/known_hosts is not a valid known_hosts file.
-   line 44 missing key:  AAAAB3NzaC1yc2EAAAABIwAAAIEAtnX75Qa8YVR...
-   key_read: uudecode AAAAB3NzaC1|1|veTakKhYY3OSqCepiq7WAUK8cxQ=|suoi0YU/lgg781Vz9O7yTao5exY= ssh-rsa                            AAAAB3NzaC1yc2EAAAABIwAAAIEA4bTnEFFiKz4+i3S9DWHJVoV8CD1DsVRJRodWdTA86+x58S0l0rUyJgXbGwScMI+xFCrqzpd4Hgoc4ElRykj5SL+7IuB5ZAe+4ILQPeiL9ck/1Q7uoh7vWiURXr92Hz5tjuEe3QI9H   iKauXj5yj5mGq1VVXLN1CdfQ99G4zSxK7c= failed
-   line 73 invalid key: |1|k9vzo7Ftuxf235It5LbrX36p2f0=|rNHdygip...
-   line 93: invalid hashed name: |1||1|aptgcuUg4ITWhZQLxzRHH8gUIOQ=|Qe2JAlAw++SZosE9ZhQW+fA3twE=...   
-   line 120 missing key:  AAAAB3NzaC1yc2EAAAABIwAAAQEAsHa75NfjyB1...
-   /home/michael/.ssh/known_hosts is not a valid known_hosts file.
diff --git a/doc/forum/Exclude_specific_files_from_a_special_remote.mdwn b/doc/forum/Exclude_specific_files_from_a_special_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Exclude_specific_files_from_a_special_remote.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have a special remote configured to/from which I can copy files correctly.
-I would like to be prevent some annexed files to be copied to this remote, automatically (in other words, without excluding them manually on the command line)
-How can this be done?
diff --git a/doc/forum/External_drive_syncs_git-annex_branch_but_not_master_branch.mdwn b/doc/forum/External_drive_syncs_git-annex_branch_but_not_master_branch.mdwn
deleted file mode 100644
--- a/doc/forum/External_drive_syncs_git-annex_branch_but_not_master_branch.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have an external HDD which I setup as a remote manually before I started using the assistant.  When I plug it in files sync fine and the git-annex branch gets synced, but the master branch doesn't; git annex sync doesn't do the job and I have to run git pull.  This is annoying because it means that portable drive is useless as a backup, since it doesn't have the required metadata; I have to manually git pull to make it a useful backup.  How can I make the assistant sync the metadata in--if not the master branch, at least origin/master so I could merge later without the remote available.  Thanks.
diff --git a/doc/forum/Fails_to_get_file_from_s3._How_to_recover__63__.mdwn b/doc/forum/Fails_to_get_file_from_s3._How_to_recover__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Fails_to_get_file_from_s3._How_to_recover__63__.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-I have an annex that has an s3 special remote. The s3 remote has been configured with shared encryption and it uses partsize (not chunking). Currently when I try to get a file from the s3 remote, it fails:
-
-    $ git annex get mybigfile.tbz.gpg
-    get mybigfile.tbz.gpg (from s3...)
-    76%         10.6MB/s 57sgpg: WARNING: encrypted message has been manipulated!
-
-      Unable to access these remotes: s3
-
-      Try making some of these repositories available:
-            15ac19e4-223a-4c81-b7f7-797b9b026b86 -- [s3]
-
-      (Note that these git remotes have annex-ignore set: origin)
-    failed
-    git-annex: get: 1 failed
-
-The file is about 3GB. This happens consistently at 76%. No other copy of the file exists. Is there some way I can get the file from s3, either without git annex or just have git annex ignore the error, so that I can inspect the file locally and see if there is anything wrong with it?
diff --git a/doc/forum/Fast_cloning_a_repo_initially.mdwn b/doc/forum/Fast_cloning_a_repo_initially.mdwn
deleted file mode 100644
--- a/doc/forum/Fast_cloning_a_repo_initially.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Is there any fast way to rsync a direct-mode (assistant) git/annex directory from one machine to another?
-
-Scenario: I was already using unison to synchronize 40GB between my desktop and laptop. I've added git annex to my desktop, but is there a way to bootstrap on my laptop without needing to re-transfer all the files? (I don't have a .git on my laptop yet but all the files are there already.)
diff --git a/doc/forum/Feature_Request__58___add_filename_to_hash_objects.mdwn b/doc/forum/Feature_Request__58___add_filename_to_hash_objects.mdwn
deleted file mode 100644
--- a/doc/forum/Feature_Request__58___add_filename_to_hash_objects.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-hi,  
-i just did git annex unused in 2 repos, one with WORM and one with SHA1.   
-with WORM i instantly could see which file it was, with SHA1 not.  
-
-so would it be possible to just add the first seen filename to the hashes identifier? the name could just be ignored but it would help with unused to see which file i am searching for.  
-thanks!
diff --git a/doc/forum/Feature_request__58___Multiple_concurrent_transfers.mdwn b/doc/forum/Feature_request__58___Multiple_concurrent_transfers.mdwn
deleted file mode 100644
--- a/doc/forum/Feature_request__58___Multiple_concurrent_transfers.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-I'm sitting on a pretty fast connection, and often git-annex isn't using my entire upstream to fill the remotes.
-
-Lets say i have an annex with 10 x 100mb files. and my git-annex has 5 special remotes that needs to be filled.
-
-I would like to have git-annex do 5 concurrent uploads(one to each remote). Currently git-annex only uploads to one special-remote at a time (meaning the 4 remaining servers are just waiting).
-
-It would also be nice to have a per remote number of threads. Especially if adding a directory with 1000 small files in it(say 100bytes each), having 5 transfer threads to each remote would make the sync complete much faster.
-
-
-For now i've made a shell script that i call:
-
-    # for j in `seq -w 0 10`; do echo DOING $j; for i in `curl "http://127.0.0.1:$1/?auth=$2" | grep "continue" | gawk -F\"  ' { print $8 } '`; do curl "http://127.0.0.1:$1$i"; sleep 0; done; done
-
-But it is very rough, and basically just starts all transfers on the page. Which means i currently have 315 active transfers running. whoops.
-
-I could improve the shell script. But it really would be quite a bit niftier to have it as settings in git-annex.
-
-Sincerely
-Tobias
diff --git a/doc/forum/Find_files_that_lack_a_certain_field_in_metadata.mdwn b/doc/forum/Find_files_that_lack_a_certain_field_in_metadata.mdwn
deleted file mode 100644
--- a/doc/forum/Find_files_that_lack_a_certain_field_in_metadata.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Is there any way to find all files that do not have a certain field assigned in metadata. E.g. I want to find all files that do not have an author field set and
-
-    git-annex find --not --metadata "author=*"
-
-doesn't give any results.
diff --git a/doc/forum/Find_out_if_file_is_in_annex__63__.mdwn b/doc/forum/Find_out_if_file_is_in_annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Find_out_if_file_is_in_annex__63__.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-I am currently trying to move nearly all of my files into git-annex, and I was wondering if there is a (plumbing-level?) way to easily figure out if a file I find on a random hard disk is already contained in my annex repository?
-
-I.e., is there an easy way to compute the key for a file (which is not in an annex) and look up if the file is already contained in a given annex repository? I've looked a bit at the plumbing-level commands but none seem to exactly fit the bill :-/
-
-Cheers,
-Alex
diff --git a/doc/forum/First_attempt_at_an_OSX_launcher___40__.app__41__.mdwn b/doc/forum/First_attempt_at_an_OSX_launcher___40__.app__41__.mdwn
deleted file mode 100644
--- a/doc/forum/First_attempt_at_an_OSX_launcher___40__.app__41__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I've made a first attempt at a .app launcher for git-annex webapp for OSX, please see <https://github.com/jcftang/git-annex/commits/master> the icon needs to be resized and made to look nicer at somepoint, the launcher assumes that git-annex is in the run time path.
-
-I would imagine it might be possible to fiddle with the paths and get all the needed components into the .app file for OSX users.
diff --git a/doc/forum/Fixing_up_corrupt_annexes.mdwn b/doc/forum/Fixing_up_corrupt_annexes.mdwn
deleted file mode 100644
--- a/doc/forum/Fixing_up_corrupt_annexes.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I was wondering how does one recover from...
-
-<pre>
-(Recording state in git...)
-error: invalid object 100644 8f154c946adc039af5240cc650a0a95c840e6fa6 for '041/5a4/SHA256-s6148--7ddcf853e4b16e77ab8c3c855c46867e6ed61c7089c334edf98bbdd3fb3a89ba.log'
-fatal: git-write-tree: error building trees
-git-annex: failed to read sha from git write-tree
-</pre>
-
-The above was caught when i ran a "git annex fsck --fast" to check stash of files"
diff --git a/doc/forum/Forcing_one_repo_to_contain_a_copy_of_all_files.mdwn b/doc/forum/Forcing_one_repo_to_contain_a_copy_of_all_files.mdwn
deleted file mode 100644
--- a/doc/forum/Forcing_one_repo_to_contain_a_copy_of_all_files.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-With numcopies it is possible to control how many copies there should be of a file overall in all of the remotes. Is it also possible, using .gitattributes or something else, to force one of the repos (e.g. a server) to contain a copy of all files, or does this have to be done manually?
diff --git a/doc/forum/Full_restore_from_an_encrypted_special_remote.mdwn b/doc/forum/Full_restore_from_an_encrypted_special_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Full_restore_from_an_encrypted_special_remote.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-If I lose all my git-annex repositories is it possible to restore the content of a repo from a special remote in which encryption was enabled? I know git-annex isn't designed to be a backup solution but more for the archive and/or nomad use case. I do like the idea of being able to restore the files from an S3 special remote though. I imagine part of the answer to this question has to do with what type of encryption is used (hybrid and shared key rely on information stored in the repo but pubkey doesn't rely on the repo at all) and would probably be easier if there were an option to disable hashing the filenames of the files (less secure, but maybe ok in some cases).
-
-Thoughts?
diff --git a/doc/forum/GPG_passphrase_handling.mdwn b/doc/forum/GPG_passphrase_handling.mdwn
deleted file mode 100644
--- a/doc/forum/GPG_passphrase_handling.mdwn
+++ /dev/null
@@ -1,76 +0,0 @@
-[[!meta title="GPG passphrase handling on OSX"]]
-
-Hello!
-I'm using OSX 10.9 and have installed gpg (and gpg2, if it matters) through
-homebrew and git-annex through cabal. I also installed
-https://github.com/joeyh/git-remote-gcrypt like the UI told me.
-
-Whenever I'm trying to add an encrypted remote through the web UI I get a
-lot of "You need a passphrase to unlock the secret key for user:" on stdout
-and, obviously, I can't enter my passphrase (If I could I wouldn't make this
-post to begin with :))
-Is this behavior normal? What should I do to work around it?
-I did also try to not use the web UI by using this command:
-git annex initremote rsync.net type=gcrypt gitrepo=user@host:directory encryption=pubkey keyid=X
-
-Because of this I can't copy files to my remotes. All I get is:
------
-$ git annex copy --to rsync.net
-copy MySecretFile (gpg) 
-You need a passphrase to unlock the secret key for
-user: "user"
-4096-bit RSA key, ID X, created 2013-10-01 (main key ID Y)
-
-(checking rsync.net...) (to rsync.net...) gpg: no valid addressees
-gpg: [stdin]: encryption failed: No user ID
-failed
------
-
-Yes, I am using gpg-agent. When other applications ask for my passphrase I get
-the pinentry dialog from GPGTools, just like I've configured it in
-~/.gnupg/gpg-agent.conf, but this isn't the case with git-annex.
-
-If I remove GPGTools from /usr/local/bin with: ``brew link --overwrite gnupg &&
-brew link --overwrite gnupg2'' it works *slightly* better. 
-I get that pinentry dialog I want but when I do a copy I get:
------
-$ git annex copy --to rsync.net
-copy MySecretFile (gpg) (checking rsync.net...) (to rsync.net...) gpg: no valid addressees
-gpg: [stdin]: encryption failed: no such user id
-failed
------
-
---debug shows me it is executing gpg llke so:
------
-gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--batch","--encrypt","--no-encrypt-to","--no-default-recipient","--force-mdc","--no-textmode"]
------
-
-$ git annex version
-git-annex version: 4.20131024
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
-
-$ gpg --version
-gpg (GnuPG) 2.0.22
-libgcrypt 1.5.3
-Copyright (C) 2013 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-
-Home: ~/.gnupg
-Supported algorithms:
-Pubkey: RSA, ELG, DSA, ?, ?
-Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
-        CAMELLIA128, CAMELLIA192, CAMELLIA256
-Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
-Compression: Uncompressed, ZIP, ZLIB, BZIP2
-
- $ gpg-agent --version
-gpg-agent (GnuPG/MacGPG2) 2.0.22
-libgcrypt 1.5.3
-Copyright (C) 2013 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
diff --git a/doc/forum/Generating_a_Temp_View_of_Available_Files.mdwn b/doc/forum/Generating_a_Temp_View_of_Available_Files.mdwn
deleted file mode 100644
--- a/doc/forum/Generating_a_Temp_View_of_Available_Files.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is it possible to generate a view of files currently available on the annex? My use case is that I have pretty large repo (couple of TBs) and I have partial checkouts on multiple machines instead of seeing 100s of broken symlinks I would like to just filter filter files that are present on the machine?
diff --git a/doc/forum/Getting_metadata.mdwn b/doc/forum/Getting_metadata.mdwn
deleted file mode 100644
--- a/doc/forum/Getting_metadata.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Hi!
-
-what's wrong here with getting metadata back:
-
-    # setup
-    $ git init .
-    $ git annex init
-    init  ok
-    (Recording state in git...)
-    $ touch testfile
-    $ git add testfile 
-    $ git commit -m "imp"
-    [master (Basis-Commit) 55c385e] imp
-     1 file changed, 0 insertions(+), 0 deletions(-)
-     create mode 100644 testfile
-
-    # set metadata
-    $ git annex metadata testfile --set key=val
-
-    # retrieval doesn't work
-    $ git annex metadata testfile --get key
-    $ git annex metadata testfile
-    $ 
-
-What I would expect here is to get "val" back.
-
-What am I doing wrong?
-
-
-Thanks!
diff --git a/doc/forum/Getting_started_with_Amazon_S3.mdwn b/doc/forum/Getting_started_with_Amazon_S3.mdwn
deleted file mode 100644
--- a/doc/forum/Getting_started_with_Amazon_S3.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-I'm just getting started with git-annex and trying to wrap my head around using it with Amazon S3. I am familiar with using git, but things are a bit different as we can't init a repo at S3 directly.
-
-I've followed http://git-annex.branchable.com/tips/using_Amazon_S3/, and performed:
-
-`git init`<br/>
-Initialized empty Git repository in /home/<br/>
-`git annex init`<br/>
-init  ok<br/>
-`git annex initremote s3 type=S3 encryption=FOOBAR bucket=foo`<br/>
-initremote s3 (encryption setup with gpg key YGTVT51715TFR) (checking bucket...) (gpg) ok<br/>
-`git annex describe s3 "Amazon S3"`<br/>
-describe s3 ok<br/>
-`git annexx add foo/`<br/>
-add foo/bar.txt<br/>
-add foo/bar.png<br/>
-...etc<br/>
-`git annex sync`<br/>
-51 files changed, 51 insertions(+)<br/>
-create mode 120000 foo/bar.txt<br/>
-create mode 120000 foo/bar.png<br/>
-...etc<br/>
-
-
-Looking at http://git-annex.branchable.com/git-annex/, I thought the files added would then be pushed to S3 by git annex sync, but that doesn't seem to be the case. I've also tried variations of got annex copy, like `git annex copy . --to s3`, without any luck.
-
-Is there a way to push to s3?
-
-Any help is appreciated!
diff --git a/doc/forum/Getting_the_status_of_a_remotely_changed_annex_file.mdwn b/doc/forum/Getting_the_status_of_a_remotely_changed_annex_file.mdwn
deleted file mode 100644
--- a/doc/forum/Getting_the_status_of_a_remotely_changed_annex_file.mdwn
+++ /dev/null
@@ -1,75 +0,0 @@
-Hello,
-
-I am trying to wrap my head around annex still.  I'm creating a source local git repo, editing an annex file, and then syncing in a second repo.  In that second repo I'm trying to figure out how I can get a status notifying me that a file is out of date.
-
-If I use 'annex sync --content' the files are all up to date, as expected, but what I kind of expected is 'annex status' to say something like 'files out of date, blah blah'.  I am spelling out my example below.  
-
-Annex version is 5.20140613
-
-
-## I create a source and target repo, and I add a git managed file and an annex managed file
-
-    $ mkdir source target
-    $ cd source
-    $ git init
-    $ git annex init
-    $ cat > gitfile
-    hi this is my git file
-    $ cat > annexfile
-    hi this is my annex file
-    $ git add gitfile 
-    $ git annex add annexfile 
-    $ git commit -m 'init commit'
-    $ cd ../target
-    $ git clone ../source/ .
-    $ ls -al
-    total 16
-    drwxr-xr-x  170 Jul 15 15:55 .
-    drwxr-xr-x  136 Jul 15 15:54 ..
-    drwxr-xr-x  442 Jul 15 15:55 .git
-    lrwxr-xr-x  180 Jul 15 15:55 annexfile -> .git/annex/objects/Qp/F0/SHA256E-s25--045cf30cb201c6723cb6fad9ca539f639de7f242b87775b876ef9ccb1f577ccf/SHA256E-s25--045cf30cb201c6723cb6fad9ca539f639de7f242b87775b876ef9ccb1f577ccf
-    -rw-r--r--  23 Jul 15 15:55 gitfile
-    $ git annex sync
-    ...
-    To [base path]/target/../source/
-     * [new branch]      git-annex -> synced/git-annex
-     * [new branch]      master -> synced/master
-    ok
-    $ cat gitfile 
-    hi this is my git file
-    $ cat annexfile 
-    cat: annexfile: No such file or directory
-    $ git annex sync --content
-    $ cat annexfile 
-    hi this is my annex file
-
-## So far so good.  Now I'm going to edit my annexed file in source repo and see if I can find out that the file was edited in the target
-
-    $ cd ..
-    $ cd source
-    $ git annex edit annexfile 
-    $ cat > annexfile 
-    wow I changed my annex file
-    $ git annex add annexfile 
-    $ git commit -m 'changed an annex file'
-    $ cd ..
-    $ cd target
-    $ git pull
-    $ cat annexfile 
-    cat: annexfile: No such file or directory
-    $ git annex sync
-    $ ls
-    annexfile gitfile
-    $ cat annexfile 
-    cat: annexfile: No such file or directory
-    $ git annex status
-    [no output]
-
-## Here is where I'd expect something saying 'annexfile is out of date', etc.
-## I can infer it because the link is missing, but I'm sure there's a more logical way.
-
-    $ git annex sync --content
-    $ cat annexfile 
-    wow I changed my annex file
-
-## After I synced content all is well.
diff --git a/doc/forum/Git-Annex_Android_sync_files_are_missing_on_Linuxx.mdwn b/doc/forum/Git-Annex_Android_sync_files_are_missing_on_Linuxx.mdwn
deleted file mode 100644
--- a/doc/forum/Git-Annex_Android_sync_files_are_missing_on_Linuxx.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Hi
-I created shares between Linux and Android(using nightly 4.4). I used Assistant on both. It seems like the files from Android to Linux are all missing, at least the symlinks are broken maybe. However files from Linux to Android are fine.
-
-thanks
diff --git a/doc/forum/Git-Annex_with_Asustor_NAS.mdwn b/doc/forum/Git-Annex_with_Asustor_NAS.mdwn
deleted file mode 100644
--- a/doc/forum/Git-Annex_with_Asustor_NAS.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-I'd like to use git-annex with my Asustor 302t NAS. It should be treated like a "simple" removable drive. I don't really know how to do this however, when scanning for "removable drives", it can't be found, when I try connecting via SSH, I receive an Error: Permission denied (publickey,password). As there is no way to insert my password before connecting.
-
-How do I setup a repository on my NAS to be synced with my laptop?
-I am using MAC OS X and the git-annex web interface currently.
diff --git a/doc/forum/GitBlit_as_a_centralized_repository.mdwn b/doc/forum/GitBlit_as_a_centralized_repository.mdwn
deleted file mode 100644
--- a/doc/forum/GitBlit_as_a_centralized_repository.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Is it possible to use Gitblit as a centralized repository using git-annex? 
-thanks Gary
diff --git a/doc/forum/Git_Annex_Assistant__58___How_to_add_a_remote__63__.mdwn b/doc/forum/Git_Annex_Assistant__58___How_to_add_a_remote__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Git_Annex_Assistant__58___How_to_add_a_remote__63__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hi,
-
-I am trying to use Git Annex Assistant on my Fedora Linux computer. I currently have a local repository that assistant monitors, but now I want to use my personal server as a git remote for the repository. I click on Configuration > Remote server and it prompts me for my server login credentials and then click the "Check this server" button. After this I am shown a screen that assistant is "Ready to add remote server" and then states:
-> The server <MY IP ADDRESS HERE> can be used as is, but installing git-annex on it would make it work better, and provide more options below.
->
-> If you're able to install software on the server, do so and click Retry
-
-The information shown below this message is regarding encrypting the data (if I have git-annex installed on the server, which I don't). So my question is, what do I do now? There is no button to just add the remote from within git annex assistant? I created a bare repository on my server and added a remote manually inside the repository on my local machine, but git annex assistant doesn't notice it. I'm clueless on what git annex assistant is expecting from me at this point. I would think what I'm trying to do is one of the most common use cases for git annex, but I can't find any documentation or materials on the correct procedure for this. Any help is appreciated.
-
-Regards,
-Blake
diff --git a/doc/forum/Git_Annex_Sync_Delinks_Files.mdwn b/doc/forum/Git_Annex_Sync_Delinks_Files.mdwn
deleted file mode 100644
--- a/doc/forum/Git_Annex_Sync_Delinks_Files.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-So, I'm using git-annex to manage a group of external hard drives that I use to store a bunch of big files.
-
-When syncing tonight, though, it decided to take a whole subdirectory and replace the symlinks with the content directly when merging, or something.
-
-The remote side is not like that, and I didn't tell it to do anything like that.
-It just seems to feel like that's the thing to do, then it syncs and fails because suddenly git has many gigs of objects, which is what git-annex is supposed to solve.
-
-I've reset master a bunch of times, and it keeps choosing that path, but I don't know why.
-I've also reset master and synced/master a few times. I'm not fully sure what that one actually encodes, so I didn't want to touch it too much, but setting it to the same thing as master didn't seem to fix things either.
-
-Any idea why?
diff --git a/doc/forum/Git_Annex_Transfer_Protocols.mdwn b/doc/forum/Git_Annex_Transfer_Protocols.mdwn
deleted file mode 100644
--- a/doc/forum/Git_Annex_Transfer_Protocols.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hi,
-
-May I know, which processes git-annex is using to move/copy/get file content between repositories?
-Is it using same processes which git uses, Like send-pack, receive-pack.
-I want to use Aspera to move file contents between repositories.
-Is it enough if I customize send-pack, receive-pack of git code to do Aspera file transfer or git-annex uses any other transfer mechanism.
-
-Many Thanks,
-Royal Pinto
diff --git a/doc/forum/Git_Annex_not_dropping_unused_content.mdwn b/doc/forum/Git_Annex_not_dropping_unused_content.mdwn
deleted file mode 100644
--- a/doc/forum/Git_Annex_not_dropping_unused_content.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I've deleted some files, but their content remains in the objects directory, and *git annex unused* does not list them.
-
-I've read in this post <http://git-annex.branchable.com/forum/git-annex_unused_not_dropping_deleted_files/> that if other branches contain the files, then it won't count them as unused. My repo appears to have a few branches left over from views I've used.
-
-    remotes/sdrive/views/(added=14_09);(tag=Shared)
-    remotes/sdrive/views/(added=14_09);Images_=_
-    remotes/sdrive/views/added=_
-
-How can I delete these? Is git annex going to create a new branch for every new view I create?
diff --git a/doc/forum/Git_annex___39__corrupting__39___itself.mdwn b/doc/forum/Git_annex___39__corrupting__39___itself.mdwn
deleted file mode 100644
--- a/doc/forum/Git_annex___39__corrupting__39___itself.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Hi,
-
-Since the I updated to `2013-10-24` `git annex` has corrupted itself twice on my setup.  I'm not claiming causality here and thus I haven't filled it as a bug (probably the mistake is mine).
-
-I use three laptops and one remote ssh server.  The motherboard on laptop *T* seems to have broken and I haven't fixed it yet.  I have disabled sync to *T*  on the webapp dashboard.  
-
-First, one computer, called *W*, broke on Friday.  I got the dreaded [serious problem](http://git-annex.branchable.com/devblog/day_41__onward/) screen. `git fsck` reported lots of missing blobs and tree problem, though my data seemed OK.  I git cloned the repo from computer *X*.  Now, last night both X and W reported the same problem (log below).  *W*  recovered itself somehow, but *X*  is now in a cycle of re-adding all files in the repo and the posting the below error that has to do with computer *T* (IP ending with 107).  
-
-I would appreciate hints on why this suddenly started happen.  Computer T has been out of sync for almost 14 days (since the 24th of October I think).
-
-    error: refs/remotes/192.168.1.107_annex/git-annex does not point to a valid object!
-    error: refs/remotes/192.168.1.107_annex/master does not point to a valid object!
-    error: refs/remotes/192.168.1.107_annex/synced/git-annex does not point to a valid object!
-    error: refs/remotes/192.168.1.107_annex/synced/master does not point to a valid object!
-    error: refs/synced/2ed58ecf-8e8c-44b8-ad34-d42ddfb35315/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/git-annex does not point to a valid object!
-    error: refs/synced/2ed58ecf-8e8c-44b8-ad34-d42ddfb35315/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/master does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/git-annex does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/master does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/git-annex does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/master does not point to a valid object!
-    error: refs/remotes/192.168.1.107_annex/git-annex does not point to a valid object!
-    error: refs/remotes/192.168.1.107_annex/master does not point to a valid object!
-    error: refs/remotes/192.168.1.107_annex/synced/git-annex does not point to a valid object!
-    error: refs/remotes/192.168.1.107_annex/synced/master does not point to a valid object!
-    error: refs/synced/2ed58ecf-8e8c-44b8-ad34-d42ddfb35315/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/git-annex does not point to a valid object!
-    error: refs/synced/2ed58ecf-8e8c-44b8-ad34-d42ddfb35315/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/master does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/git-annex does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/cmFzbXVzQGNvZGVyb2xsZXJzLmNvbQ==/master does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/git-annex does not point to a valid object!
-    error: refs/synced/f54b8200-8ec1-43d2-8710-b73ec118addc/master does not point to a valid object!
-    error: invalid object 100644 1ca66de3cdd9c79cde26a7555cf3b8d26d0e371d for '000/147/SHA256E-s347--1ab8084bf9ae06407ce0a7260a83638ea6e9a028dc59b4815fd60aec61dbd747.txt.log.log'
-    fatal: git-write-tree: error building trees
-    TransferScanner crashed: failed to read sha from git write-tree
-    [2013-11-04 09:45:41 CET] TransferScanner: warning TransferScanner crashed: failed to read sha from git write-tree
diff --git a/doc/forum/Git_annex_assistant_in_command_line.mdwn b/doc/forum/Git_annex_assistant_in_command_line.mdwn
deleted file mode 100644
--- a/doc/forum/Git_annex_assistant_in_command_line.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-How can I clone a git annex remote (bare repository) created with the webapp in command line ? My goal is to be able to access the files using an ssh connection.
-
diff --git a/doc/forum/Git_annex_assistant_on_EC2.mdwn b/doc/forum/Git_annex_assistant_on_EC2.mdwn
deleted file mode 100644
--- a/doc/forum/Git_annex_assistant_on_EC2.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-With Amazon EC2, it is possible to take a snapshot of the virtual machine and then bring up multiple instances based on the snapshot. 
-
-If I configure git annex assistant to sync a folder to S3, will it work correctly if I spin up multiple instances, all identical git annex assistant configurations?
-
-My use case is to allow users of my forums to upload attachments with their posts. The attachments are stored locally on disk, but I'm hoping that git annex assistant can help synchroise the attachments across all forum instances (I usually run only 1 instance, but their could be as many as 3 under heavy load).
diff --git a/doc/forum/Git_annex_hangs.mdwn b/doc/forum/Git_annex_hangs.mdwn
deleted file mode 100644
--- a/doc/forum/Git_annex_hangs.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-http://stackoverflow.com/questions/26305691/git-annex-hangs
-Does anyone know what might be causing this?
diff --git a/doc/forum/Git_annex_on_Windows.mdwn b/doc/forum/Git_annex_on_Windows.mdwn
deleted file mode 100644
--- a/doc/forum/Git_annex_on_Windows.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hi,
-I want to download some files in git and git annex in Windows OS.
-I have installed msysgit for git-scm in D:\Git directory,
-Now I download git-annex assistant for Windows, and install it
-in D:\Git\cmd directory.
-But when I run the command "git annex" in git-bash, it says it can not
-found the "git annex" command.
-My question is that, how should I use git annex in Windows to download files?
-For example, git annex get <filename>.
-Doea anyone has any idear to help me figure it out?
-Thanks in advance!
diff --git a/doc/forum/Git_annex_status_always_showing_annexed_files_as_modified.mdwn b/doc/forum/Git_annex_status_always_showing_annexed_files_as_modified.mdwn
deleted file mode 100644
--- a/doc/forum/Git_annex_status_always_showing_annexed_files_as_modified.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Hi,
-
-Whenever I sync files with windows, it shows the every binary file as modified. I've just cloned "fresh" repo from a linux host and ```git annex get```ed the 15-11-03 folder.
-Running git annex status 15-11-03 shows
-
-```
-M ..\15-11-03/ADL Update 11-03-15.pptx
-M ..\15-11-03/Gaming-Rage-Face.jpg
-M ..\15-11-03/eluted-absorption-spectra.png
-M ..\15-11-03/elution.png
-M ..\15-11-03/prep-diagram.png
-M ..\15-11-03/rc-elution-01 (2015 Nov 03).csv
-M ..\15-11-03/rc-elution-02 (2015 Nov 03).csv
-M ..\15-11-03/rc-elution-03 (2015 Nov 03).csv
-M ..\15-11-03/rc-prep-01.h5
-M ..\15-11-03/rc-test-1 (2015 Nov 03).csv
-M ..\15-11-03/rc-test-2 (2015 Nov 03).csv
-M ..\15-11-03/wash-absorption.png
-```
-
-Edit: I should add that this repo is untrusted. Doing sync on it just ends up pulling from remotes, not pushing anywhere:
-
-```
-λ git annex sync
-commit  (recording state in git...)
-ok
-pull origin
-ok
-pull github
-ok
-```
-
-How would I check if this is a problem with my installation or a bug in git annex?
diff --git a/doc/forum/Git_annex_syncing_speed__44___possible__63__.mdwn b/doc/forum/Git_annex_syncing_speed__44___possible__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Git_annex_syncing_speed__44___possible__63__.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Hello
-
-I'm trying Git annex latest builds available in Linux & Android
-Here is the scenario :-
-
-Syncing 2 peer devices running Linux & Android
-Devices can access each other directly over Cisco VPN encrypted link
-
-Currently, syncing files via rsync over webdav (over Cisco VPN)
-Everything is working, manual file tracking is an issue.
-
-Here's where Git annex steps in,
-I've configures external jabber account so they can talk to each other.
-
-But the transfers are super-slow over internet,
-I'm guessing Cisco VPN adding 15-20% overhead + SSH adding another 20-30% overhead.
-
-Since the network link is trusted, is there any way to speed things up assuming Cisco solution
-remains in place?
-
-looking to solve this issue
diff --git a/doc/forum/Git_remote__63_____40__bitbucket__44___github__41__.mdwn b/doc/forum/Git_remote__63_____40__bitbucket__44___github__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Git_remote__63_____40__bitbucket__44___github__41__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is it possible to use bitbucket as a remote?
diff --git a/doc/forum/Git_repos_in_git_annex__63__.mdwn b/doc/forum/Git_repos_in_git_annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Git_repos_in_git_annex__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hello,
-
-A mode of operation that I find comfortable, and from various online posts it seems that so do some others, is putting whole git repositories in dropbox.
-
-It seems that currently this mode of operations if not supported in a simple manner. (i.e. just add and let assistant do the work). Is there any workaround or possibility to do this?
-
-Thanks!
diff --git a/doc/forum/Git_repositories_in_the_annex__63__.mdwn b/doc/forum/Git_repositories_in_the_annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Git_repositories_in_the_annex__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-First of all thanks for the great work. git-annex looks very nice already!
-
-I wonder if it's possible to add Git repositories to the annex. In my current Dropbox setup I drop some small Git repositories into the Dropbox to keep them in sync on two computers. 
-
-This is obviously not possible with git-annex, as the annex itself is a Git repository and sub-repositories (directories with .git folders) are ignored. But in some cases people might want to be able to drop "anything" into the annex, maybe even Git repositories (e.g. the "nomad" usecase)...
diff --git a/doc/forum/Github_pull_request_with_git-annex.mdwn b/doc/forum/Github_pull_request_with_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/Github_pull_request_with_git-annex.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I would like to use git annex with github. Here what I did:
-
-1. Create github directory "a". Added all the special remote and git annex files. Pushed them to the "a" using "git annex sync."
-2. Fork the repository on gihub to "b". Clone it and enable remote and I could pull annexed files.
-3. Added repository "a" as "upstream" tracking remote to "b".
-3. Created a second special remote for "b". Added new git annex files to it. Used "git annex sync origin" to push the changed files to the forked repository "b".
-4. Now I would like to create a pull request. What are branches I should create pull request for?  a:synced/git-annex vs b:synced/git-annex? Or, a:synced/git-annex vs b:git-annex? Do I need to create separate pull request for the "master"?
-
-Thanks for the help.
-
- 
diff --git a/doc/forum/Gitolite_problems.mdwn b/doc/forum/Gitolite_problems.mdwn
deleted file mode 100644
--- a/doc/forum/Gitolite_problems.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I am having some issues trying to make git-annex work with the latest version of Gitolite, 
-When running git annex sync, or git annex copy --to I get.
-"""
-Failed to get annex.uuid configuration of repository origin
-
-Instead, got: "annex.uuid=\ncore.gcrypt-id=\n"
-"""
-
-Has anyone found any solution to this? Also, I am using the latest version of Gitolite, because I wanted to see whether it would work.
-Thanks, Zack.
-EDIT: It might also be worthy to note that I did have a go at following the guide on this site.
diff --git a/doc/forum/Handling_a_large_number_of_files.mdwn b/doc/forum/Handling_a_large_number_of_files.mdwn
deleted file mode 100644
--- a/doc/forum/Handling_a_large_number_of_files.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have noticed performance getting really slow when adding files (git annex add . ) to a directory already containing several hundred thousand files. When using git annex, is it more recommended to split large numbers of files into multiple directories containing fewer files? Is there a particular recommended way of handling large numbers of files (say getting into the millions) in git annex? 
-
-Thanks
diff --git a/doc/forum/Handling_web_special_remote_when_content_changes__63__.mdwn b/doc/forum/Handling_web_special_remote_when_content_changes__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Handling_web_special_remote_when_content_changes__63__.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-I am in the process of organising all of my documents (pdf/ps/etc.) and putting them into an annex.  It seems like the easiest (and smartest?) way for me to manage my 15,000+ document library...  (Yeah, I've not read them all!)
-
-However, one of the issues I have run into is when I want to include something like a software manual...
-
-I'm not even sure if git-annex is the correct way to handle these sort of document, but...
-
-What would you do if the URL stays the same, but the file content changes over time?
-
-For example, the administration manual for R gets updated and re-released for each release of R, but the URL stays the same.
-
-    http://cran.r-project.org/doc/manuals/R-admin.pdf
-
-I'm not particularly worried about whether my annex version is the most recent, just that if I want to 'annex get' it, it will pull *a* version from somewhere.
-
-Any thoughts?
-
-I'd bet that the SHA-hash would change between releases(!) so would a WORM backend be the best approach?  It would mess up my one-file-in-multiple-directories (i.e. multiple simlinks to the one SHA-...-.....) approach.
-
- 
diff --git a/doc/forum/Help_Windows_walkthrough.mdwn b/doc/forum/Help_Windows_walkthrough.mdwn
deleted file mode 100644
--- a/doc/forum/Help_Windows_walkthrough.mdwn
+++ /dev/null
@@ -1,177 +0,0 @@
-Hello,
-
-i am trying to run the walkthrough on Windows 7. When i try to get the contents of a file, i only get a some git annex text string and not the real file. Both repositories are on the same ntfs filesystem. 
-
-C:\tmp>git annex version  
-git-annex version: 4.20130827-g4f18612  
-build flags: Pairing Testsuite S3 WebDAV DNS  
-local repository version: 4  
-default repository version: 3  
-supported repository versions: 3 4  
-upgrade supported from repository versions: 2  
-  
-C:\tmp\server>git --version  
-git version 1.8.3.msysgit.0  
-   
-
-# walkthrough.bat
-    
-    doskey /history > commands.log
-    mkdir laptop
-    cd laptop
-    git init
-    git annex init laptop
-    cd ..
-    
-    git clone laptop server
-    cd server
-    git annex init server
-    git remote add laptop c:\tmp\laptop
-    
-    cd ..\laptop
-    git remote add server c:\tmp\server
-    copy ..\1.pdf .
-    git annex add 1.pdf
-    git commit -m add
-    dir 
-    
-    cd ..\server
-    dir
-    git fetch laptop
-    git merge laptop/master
-    git annex get 1.pdf
-    dir
-    type 1.pdf
-    
-
-# walkthrough.log
-
-    C:\tmp>walkthrough.bat
-    
-    C:\tmp>doskey /history  1>commands.log
-    
-    C:\tmp>mkdir laptop
-    
-    C:\tmp>cd laptop
-    
-    C:\tmp\laptop>git init
-    Initialized empty Git repository in C:/tmp/laptop/.git/
-    
-    C:\tmp\laptop>git annex init laptop
-    init laptop
-      Detected a crippled filesystem.
-    
-      Enabling direct mode.
-    
-      Detected a filesystem without fifo support.
-    
-      Disabling ssh connection caching.
-    ok
-    (Recording state in git...)
-    
-    C:\tmp\laptop>cd ..
-    
-    C:\tmp>git clone laptop server
-    Cloning into 'server'...
-    done.
-    warning: remote HEAD refers to nonexistent ref, unable to checkout.
-    
-    
-    C:\tmp>cd server
-    
-    C:\tmp\server>git annex init server
-    init server
-      Detected a crippled filesystem.
-    
-      Enabling direct mode.
-    
-      Detected a filesystem without fifo support.
-    
-      Disabling ssh connection caching.
-    ok
-    (Recording state in git...)
-    
-    C:\tmp\server>git remote add laptop c:\tmp\laptop
-    
-    C:\tmp\server>cd ..\laptop
-    
-    C:\tmp\laptop>git remote add server c:\tmp\server
-    
-    C:\tmp\laptop>copy ..\1.pdf .
-            1 file(s) copied.
-    
-    C:\tmp\laptop>git annex add 1.pdf
-    add 1.pdf (checksum...) ok
-    (Recording state in git...)
-    
-    C:\tmp\laptop>git commit -m add
-    [master (root-commit) 7ad1514] add
-     1 file changed, 1 insertion(+)
-     create mode 120000 1.pdf
-    
-    C:\tmp\laptop>dir
-     Volume in drive C has no label.
-     Volume Serial Number is x
-    
-     Directory of C:\tmp\laptop
-    
-    09/01/2013  11:03 AM    <DIR>          .
-    09/01/2013  11:03 AM    <DIR>          ..
-    08/30/2013  12:43 PM            37,500 1.pdf
-                   1 File(s)         37,500 bytes
-                   2 Dir(s)   7,698,817,024 bytes free
-    
-    C:\tmp\laptop>cd ..\server
-    
-    C:\tmp\server>dir
-     Volume in drive C has no label.
-     Volume Serial Number is x
-    
-     Directory of C:\tmp\server
-    
-    09/01/2013  11:03 AM    <DIR>          .
-    09/01/2013  11:03 AM    <DIR>          ..
-                   0 File(s)              0 bytes
-                   2 Dir(s)   7,698,817,024 bytes free
-    
-    C:\tmp\server>git fetch laptop
-    remote: Counting objects: 9, done.
-    remote: Compressing objects: 100% (6/6), done.
-    remote: Total 8 (delta 1), reused 0 (delta 0)
-    Unpacking objects: 100% (8/8), done.
-    From c:\tmp\laptop
-     * [new branch]      git-annex  -> laptop/git-annex
-     * [new branch]      master     -> laptop/master
-    
-    C:\tmp\server>git merge laptop/master
-    
-    C:\tmp\server>git annex get 1.pdf
-    get 1.pdf (merging laptop/git-annex origin/git-annex into git-annex...)
-    (Recording state in git...)
-    (from laptop...)
-    1.pdf
-           37500 100%    4.51MB/s    0:00:00 (xfer#1, to-check=0/1)
-    
-    sent 37573 bytes  received 31 bytes  75208.00 bytes/sec
-    total size is 37500  speedup is 1.00
-    ok
-    (Recording state in git...)
-    
-    C:\tmp\server>dir
-     Volume in drive C has no label.
-     Volume Serial Number is x
-    
-     Directory of C:\tmp\server
-    
-    09/01/2013  11:03 AM    <DIR>          .
-    09/01/2013  11:03 AM    <DIR>          ..
-    09/01/2013  11:03 AM               194 1.pdf
-                   1 File(s)            194 bytes
-                   2 Dir(s)   7,698,767,872 bytes free
-    
-    C:\tmp\server>type 1.pdf
-    .git/annex/objects/kM/0q/SHA256E-s37500--32d8190c7e189d45f48245a100e4cc981ea1bbc
-    02ac8bfa6188db73e41ce06f3.pdf/SHA256E-s37500--32d8190c7e189d45f48245a100e4cc981e
-    a1bbc02ac8bfa6188db73e41ce06f3.pdfC:\tmp\server>
-    C:\tmp\server>
-    
diff --git a/doc/forum/Help_fixing_S3_mistake.mdwn b/doc/forum/Help_fixing_S3_mistake.mdwn
deleted file mode 100644
--- a/doc/forum/Help_fixing_S3_mistake.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hello, I'd like some help fixing a mistake I made setting up an S3 remote.
-
-I created an S3 remote A, then at some later time accidentally created an S3 remote B with the same settings as A, and moved some files over to B.
-
-I have fixed it by removing/marking as dead B, but I am missing some files now.
-
-I believe that all of these files exist in A since it is the same bucket as B, but git annex doesn't know that they are in A.  Is there a way to somehow "reinject" or refresh git annex so it knows that the files are there?  I'm using chunking as well, so I don't know how to download all the chunks and use git annex's reinject command.
diff --git a/doc/forum/Help_on_my_usecase.mdwn b/doc/forum/Help_on_my_usecase.mdwn
deleted file mode 100644
--- a/doc/forum/Help_on_my_usecase.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-I am using git-annex assistant for a few months now and still don't think I have it all setup correctly. My setup is:
-
-* Laptop Computer with low storage. Content creator, assistant: file source
-* Desktop Computer with medium storage capacity. Consumer, assistant: manual Mode
-* 2TB USB HD (EXT4) Backup, assistant: full backup
-* 2.5" portable 500GB drive NTFS formatted. transfer to backup: assistant: tried transfer and partial backup
-* Root Server on the web, not yet in the mix. Planned: Index only / content creator
-
-My primary goal is getting the stuff from the Laptop to the 2TB USB drive, syncing the annex with the desktop so I can get files on the desktop from the backup.
-What works:
-
-* Checking stuff into the annex on the Laptop
-* When the 2TB drive is connected to the Laptop, stuff is automatically moved there too
-* Bare Repo on the 2.5" configured as partial backup automatically backups the data
-
-What doesn't work:
-
-* Connecting the 2.5" bare repo to the Desktop to move stuff to the backup drive automatically
-* Having a human readable folder Structure on the 2.5" NTFS drive. I'd be ok to have a bare repo plus a special remote on the drive, but I don't know how to configure it
-* How do I drop stuff from the bare repo on the 2.5" drive? I think a partial backup should drop content that is in a full backup, but it doesn't
-
-Thanks for reading this long post. If anyone has any tips on how to configure the assistant, thats much appreciated.
diff --git a/doc/forum/Help_with_assistant_and_Adobe_Lightroom.mdwn b/doc/forum/Help_with_assistant_and_Adobe_Lightroom.mdwn
deleted file mode 100644
--- a/doc/forum/Help_with_assistant_and_Adobe_Lightroom.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I am trying to use the git-annex assistant to automatically sync photos from my Lightroom catalog on Mac OS X to a remote archive server. I hit a snag due to a race condition combined with some peculiar behavior of Adobe Lightroom: it dereferences symlinks and uses the name of the target when importing (see https://forums.adobe.com/thread/568863?tstart=0) I observe the following problematic workflow: 1. Files are imported using the original filename. 2. The assistant eventually moves the content to .git/annex/objects and creates symlinks to replace the originals. 3. The photos no longer appear in the Library, however Lightroom will not allow me to re-import as it thinks the files have already been imported and are duplicates.
-
-I know a few other folks are using git-annex and Lightroom together, but I cannot tell if they are using the assistant or manually managing the annex. This implementation is for my wife who is not technical enough to use git on the command line so that's out of the question. It seems like direct mode is my best option for now, however, I'd like to avoid it since it's being deprecated. Is there some other option that I'm missing? Is anyone else out there successfully using the assistant and Lightroom together? I'd love some advice.
diff --git a/doc/forum/Help_with_syncing_file_contents.mdwn b/doc/forum/Help_with_syncing_file_contents.mdwn
deleted file mode 100644
--- a/doc/forum/Help_with_syncing_file_contents.mdwn
+++ /dev/null
@@ -1,68 +0,0 @@
-Hi everyone,
-
-everyday I understand more and more how git and git-annex work but I need help with this one.
-I guess I have two questions but let me describe the scenario first:
-
-I have one local repository of mp3s (assume just one file: file1.mp3).
-I clone that repository into a remote git-annex repository over ssh and "git annex get" the file contents for file1.mp3.
-
-I unlock some mp3's locally and modify some mp3 tags. 
-Then I notify git-annex of these changes
-with "git annex add *"
-and commit them with "git commit -m 'mp3 tags changed'". 
-[git annex locks them again and changes the symlinks to point to the changed file in the annex, git commits the changed symlink]
-
-At this point in time there are two objects in my git annex repository:
-hash(file1.mp3) 
-hash(file1.mp3|with modified tags)
-The symlink points now to hash(file1.mp3|with modified tags)
-
-At this point the remote still does not now of this commit and of the new file contents.
-Thus I do "git push" to send the changes to the remote.
-The remote now has a BROKEN symlink because it already points to hash(file1.mp3|with modified tags)
-but the remote annex's object directory only contains hash(file1.mp3).
-
-Then I want my remote repository to also have the updated mp3 tags.
-The only way I see (without scripting) to have the updated mp3 tags in the remote repository is to do an "git annex get file1.mp3" on the remote repository or an "git annex copy --to remote file1.mp3" at my local repository. However, although the binary differences between both files
-file1.mp3 and file1.mp3|with modified tags are small the latter is transferred completely from the local repository to the remote repository.
-
-This is not a problem when just changing one file, but a problem when I have 10GB's of files and when it takes 2days to upload them to the remote because of a low bandwidth. 
-
-First question: Did I miss something? Does git-annex already provide means to only transmit the diff between the two objects? 
-
-Second question regarding disk space.
-I now have a complete history of all changes to file1.mp3 in my git-annex repository. I have the objects that represent every state of file1.mp3 and I can go back to these states when I checkout the respective commits and thereby the symlinks that link to these "old" objects. This history can take up a lot of space. What is the clean way to forget the past? AFAIK "git drop unused" only drops file contents that are not referenced in any commit? 
-
-If one wanted to preserve the entire history but save disk space one could also only store the current content and the patches that allow to reconstruct older versions from the current one. I understand that applying several patches consecutively takes more cpu time but for me going back to an older commit with my binary files only happens rarely. 
-
-This is the algorithm I have in mind for an optimized "git annex get file1":
-
-On that repository where the file is missing:
-
-1. Find the newest object that represented the contents of file1 in file1's commit history.
-
-2. Transmit this object identification hash(object) to the remote that has the current version (the one I am getting from).
-
-At that remote: 
-
-If the history contains full versions of file contents:
-
-Create a binary diff between the object identified by hash(object) and the current content of file1.
-
-If the history contains only the current version and patches to older versions:
-Collect all patches that represent the change from hash(object) to the current content of file1.
-
-If the list of patches is bigger than the current content of file 1 transmit the current content of file1. Otherwise transmit the patch(es) 
-
-On that repository where the file is missing:
-
-Apply the patch(es) to the latest object to obtain the current object.
-
-What's your opinion on this?
-
-Marek
-
-
-
-
-
diff --git a/doc/forum/HowTo_Conflict_Resolution.mdwn b/doc/forum/HowTo_Conflict_Resolution.mdwn
deleted file mode 100644
--- a/doc/forum/HowTo_Conflict_Resolution.mdwn
+++ /dev/null
@@ -1,66 +0,0 @@
-Hello,
-
-I have two git annex repos, AA and BB in direct mode. Both have edited a binary file before syncing
-
-```
-~/Desktop/BB (git)-[annex/direct/master] % git annex sync
-commit  ok
-pull origin 
-remote: Counting objects: 21, done.
-remote: Compressing objects: 100% (17/17), done.
-remote: Total 21 (delta 3), reused 0 (delta 0)
-Unpacking objects: 100% (21/21), done.
-From /home/florian/Desktop/AA
-   d55cfa2..b86e708  annex/direct/master -> origin/annex/direct/master
-   83ff4c6..5cfbd34  git-annex  -> origin/git-annex
-   d7b79e8..b86e708  master     -> origin/master
-   d7b79e8..b86e708  synced/master -> origin/synced/master
-
-Auto-merging bin2
-CONFLICT (content): Merge conflict in bin2
-Auto-merging bin1
-CONFLICT (content): Merge conflict in bin1
-Automatic merge failed; fix conflicts and then commit the result.
-bin2: needs merge
-bin1: needs merge
-(recording state in git...)
-
-  Merge conflict was automatically resolved; you may want to examine the result.
-
-ok
-(merging origin/git-annex into git-annex...)
-(recording state in git...)
-push origin 
-Counting objects: 31, done.
-Delta compression using up to 4 threads.
-Compressing objects: 100% (25/25), done.
-Writing objects: 100% (31/31), 3.04 KiB | 0 bytes/s, done.
-Total 31 (delta 6), reused 0 (delta 0)
-To /home/florian/Desktop/AA
-   83ff4c6..7df9834  git-annex -> synced/git-annex
-   b86e708..59a1240  annex/direct/master -> synced/master
-ok
-```
-
-```
-florian@horus ~/Desktop/BB (git)-[annex/direct/master] % git annex get .
-get bin1.variant-c4b6 (from origin...) ok
-get bin2.variant-f16a (from origin...) ok
-(recording state in git...)
-florian@horus ~/Desktop/BB (git)-[annex/direct/master] % ll
-insgesamt 5824
--rw-r----- 1 florian florian 2863795 24. Aug 21:32 bin1.variant-1696
--rw-r----- 1 florian florian 2841749 24. Aug 21:30 bin1.variant-c4b6
--rw-r----- 1 florian florian  125612 24. Aug 21:32 bin2.variant-0efa
--rw-r----- 1 florian florian  126067 24. Aug 21:31 bin2.variant-f16a
-
-```
-How can I resolve this conflict now? Is there a way to tell which bin1 / bin2 is from AA, which from BB? Is there a way to tell git annex to completely take the data from AA or BB?
-
-This case might appear somehow artifical but I was caught in that various times when syncing my music database. Actually I didn't care which version of the database it took, but I was unable to produce a coherent data set, so that the database files only come from one sync partner.
-
-I did the git annex get after syncing, becaue usually I sync using --content.
-
-Thanks,
-Florian
-
diff --git a/doc/forum/How_To_Permanently_Delete_a_File__63__.mdwn b/doc/forum/How_To_Permanently_Delete_a_File__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_To_Permanently_Delete_a_File__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Hi,
-
-We have several large git annex repos where all of the files are on remotes and we want to got through and clean up the repositories by deleting some subset of files.
-
-What is the fastest way to permanently delete files from a git annex repository with remotes?
-
-I guess I can to ``git annex drop --numcopies=0 <file>; git rm <file>``. Does that actually delete the file permanently?
-
-Is there a faster way?
-
-Thanks,
-
-Mike
diff --git a/doc/forum/How_can_I_recover_from_misadventure__63__.mdwn b/doc/forum/How_can_I_recover_from_misadventure__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_can_I_recover_from_misadventure__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hi, 
-
-  I have been attempting to use `git annex` for archiving about 300gb of data (a usb disk that is a copy of a laptop drive). I have an S3 special remote setup as a backup remote right now (the plan is once I feel like the data is safe on s3 I will change the remote type to archive and get rid of the local copies). I am using the WORM backend. I think something has gone wrong:
-
-1. As of right now I have about 200mb of data on S3, but 'git annex copy --to S3 .' runs for a while, then exits, without any indication that it has uploaded any additional files.
-2. .git/ is around 200gb in size
-3. 'git annex add .' adds files for a while, then exits, and does the same thing when run again.
-4. At this point I decided to try and restart from scratch so I ran 'git annex direct' to get the files replaced in the working directory, this runs for a while then hangs.
-
-This has been my first outing with `git annex`, so I am sort of at a loss as to what there is I can poke at to try and determine what is going on. It would be nice to be able to get the data back to the original state, but more than that, I would like to understand what I did wrong, and I would appreciate any pointers or advice. 
diff --git a/doc/forum/How_do_I_backup_my_data_to_blue_ray_disks__63__.mdwn b/doc/forum/How_do_I_backup_my_data_to_blue_ray_disks__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_do_I_backup_my_data_to_blue_ray_disks__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have several TB of media on a Debian ZFS server. If I created a git-annex repo for the data, how hard would it be get git-annex (using bup I assume) to back up the files onto a set of Blu Ray disks? I realize that 8TB of data would take about 320 BR 25GB disks, but it seems like git annex would be great for identifying what disk(s) I needed to recover a file. I'm good at bash scripting, and use git daily. I have no experience with git-annex or bup however. Any links to information or suggestions is very appreciated. Thanks!
diff --git a/doc/forum/How_do_I_do_with_.gitrefs__47_____63__.mdwn b/doc/forum/How_do_I_do_with_.gitrefs__47_____63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_do_I_do_with_.gitrefs__47_____63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-There is .gitrefs directory in my annexed repo while I am unaware. Should I do `git add .gitrefs/` or `git annex add .gitrefs/` or just ignore?
diff --git a/doc/forum/How_do_I_dropunused_with_an_rsync_remote__63__.mdwn b/doc/forum/How_do_I_dropunused_with_an_rsync_remote__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_do_I_dropunused_with_an_rsync_remote__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-`git annex dropunused` is simple enough.
-
-But how do I perform the equivalent procedure on an rsync remote?  I'd presume that `git annex copy --to remote` is not sufficient.
diff --git a/doc/forum/How_do_I_get_rid_of_a_wrong_remote_uuid__63__.mdwn b/doc/forum/How_do_I_get_rid_of_a_wrong_remote_uuid__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_do_I_get_rid_of_a_wrong_remote_uuid__63__.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Hello,
-
-I had some trouble adding a remote (the files would not appear when I was copying them to the remote), so I started over and cloned an existing repository.
-
-Of course, as I started over, I had a duplicate uuid for the remote, which would cause problems when trying to copy (I would have an error "git-annex-shell: expected repository UUID 70582c7b-0b57-4087-a9d1-77b5f5f3c75e but found UUID 335699ea-d5b8-49ff-b207-1571b5969afe").
-
-I finally managed to find the wrong uuid in the .git/config file (there was a duplicated entry for the remote) and I'm now able to copy things to the remote repository, and "git annex sync" works well. However I still see a mention of this repository when I do a "git annex whereis":
-
-    cody:games schmitta$ git annex whereis
-    whereis dungeon_keeper_1.1.0.11.dmg (3 copies) 
-      	1cdfb490-0660-41fb-b7ce-74b89abb9aac -- top
-       	335699ea-d5b8-49ff-b207-1571b5969afe -- here (cody)
-       	70582c7b-0b57-4087-a9d1-77b5f5f3c75e
-
-
-Where can I find where this last line come from, and how can I get rid of it? I tried saying that this uuid is dead, but git annex tells me it's not a remote name.
diff --git a/doc/forum/How_do_I_hide_files_not_present_in_the_local_annex__63__.mdwn b/doc/forum/How_do_I_hide_files_not_present_in_the_local_annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_do_I_hide_files_not_present_in_the_local_annex__63__.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Files only present in remotes show up as broken symlinks. That's great for knowing what files exist, but sometimes I just want to browse the files that are actually present. In this case, the many broken symlinks are just clutter.
-Is there a straightforward way to switch to a view that shows only locally present files?
diff --git a/doc/forum/How_do_I_sync_files_from_mobile_to_a_repo__63__.mdwn b/doc/forum/How_do_I_sync_files_from_mobile_to_a_repo__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_do_I_sync_files_from_mobile_to_a_repo__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I have a local repo on a computer with some folder on the path
-/computer1/annex/
-
-Then I tried to run git annex on my phone and added a remote ssh repo syncing to
-/computer1/annex/mobile/ from my mobile's picture folder.
-
-But the files ending up there are:
-ls /computer1/annex/mobile/
-annex  branches  config  description  HEAD  hooks  info  objects  refs 
-
-I chose "full backup"
-
-Why dont I see my pictures there, even if they are hiding in the metadata ?
diff --git a/doc/forum/How_do_you_know_when_something_fails_a_fsck__63__.mdwn b/doc/forum/How_do_you_know_when_something_fails_a_fsck__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_do_you_know_when_something_fails_a_fsck__63__.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Hi Joey,
-    I was wondering how you know when a file in your repo fails a fsck.  I'm having trouble finding out since I can't change any of the objects (which is great!).  I'd just like to know since I have thousands of files in one of my annexes, and scrolling through my term buffer is unwieldy.  I'd assume it would show up when the fsck was done, or in 'git annex status'...
-
-Thanks!
diff --git a/doc/forum/How_does_git_annex_handle_swp_files.mdwn b/doc/forum/How_does_git_annex_handle_swp_files.mdwn
deleted file mode 100644
--- a/doc/forum/How_does_git_annex_handle_swp_files.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Sometime I edit a file with lets say Emacs in the work directory which is synced with all my other computers. Then there is this .something.swp file. This is put into the queue for sync, but if I close this before it starts the sync I get an error since the file is now gone. Then I get a failed message in the webapp. This is slightly annoying. Is there a way to fix this in some way. I can of course disable the swp use, but this is default for different programs. Is there a way to exclude files? For instance all .swp files from ever getting synced?
diff --git a/doc/forum/How_does_one_change_the_number_of_simultaneous_uploads.mdwn b/doc/forum/How_does_one_change_the_number_of_simultaneous_uploads.mdwn
deleted file mode 100644
--- a/doc/forum/How_does_one_change_the_number_of_simultaneous_uploads.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I want to upload and download more than one file at a time to and from the various remotes.
-
-How do I do that?
diff --git a/doc/forum/How_to_cancel_an_add__63__.mdwn b/doc/forum/How_to_cancel_an_add__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_cancel_an_add__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-What is the safest way to cancel a `git annex add` before the first commit?
-
-Say I first added a directory with a lot of small files to the annex and then (while watching the endless list of checksum operations) decide I should actually put them in a tar file and annex that instead.
-
-The problem seems to be that `git annex add` immediately replaces the files with symlinks instead of waiting for a commit, so I can't just `git reset largedir/; tar cvfz largedir.tgz largedir/; git annex add largedir.tgz`.
diff --git a/doc/forum/How_to_change_the_name_of_a_repo_on_S3__63__.mdwn b/doc/forum/How_to_change_the_name_of_a_repo_on_S3__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_change_the_name_of_a_repo_on_S3__63__.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-git-annex created a gitannexxxxxxxxxxxxxxxxxxxxx folder on S3 and I guess I'm a bit OCD but I'd like to rename it to git-annex. 
-Of course I can rename it in my S3 console but where does git-annex store that name so I can also change it on my local install of git-annex.
diff --git a/doc/forum/How_to_deal_with_renamed_files_in_direct_mode__63__.mdwn b/doc/forum/How_to_deal_with_renamed_files_in_direct_mode__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_deal_with_renamed_files_in_direct_mode__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I use git annex in direct mode and I have renamed a file. What should I do to make git annex understand that the file has just been renamed and not deleted/added?
-
-The file I renamed is quite big and I would like to avoid having to copy it again to the remotes and I would also like to avoid having to redownload it again in all the repositories.
diff --git a/doc/forum/How_to_debug_failing_sync.mdwn b/doc/forum/How_to_debug_failing_sync.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_debug_failing_sync.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I've got a remote I setup while connected to my home network that is no longer syncing when I'm on the same network. I'm not sure how to debug the problem. Any tips?
-
-I will say that when I edit the repository in the assistant, the url it gives for the "git repository location at" field looks incorrect. It's got an extra "git-annex-" prepended to the hostname. I'm not sure how to alter that.
-
-I'm using version 5.20140517~bpo70+1, from the wheezy backports.
diff --git a/doc/forum/How_to_define_a_balanced_prefered_content.mdwn b/doc/forum/How_to_define_a_balanced_prefered_content.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_define_a_balanced_prefered_content.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I have 6 drives attached to my box and I am trying to split them in to 2 groups I would like to have 2 balanced groups [1] so each file lands on two of these disks. So assuming i have disks A B C D E F, I want to create two balanced groups A B C and D E F. But I can not figure out how to defined rules using  balanced_amoung(group) expression in vicfg. The only place it allows me to use the expression is the group section but how do i define a group that uses a balanced group.
-
-
-
-[1] https://git-annex.branchable.com/design/balanced_preferred_content/
diff --git a/doc/forum/How_to_delete_a_file_in_direct_mode__63__.mdwn b/doc/forum/How_to_delete_a_file_in_direct_mode__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_delete_a_file_in_direct_mode__63__.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-My use case is that I'm organising my media in a staging area called **uploadme/**.
-
-At this staging area, I add all the media into git-annex and then I go to work pruning, editing & [adding metadata](https://github.com/muennich/sxiv/blob/master/exec/key-handler#L29).
-
-# Pruning
-
-If I find an image I don't like I move it to `/tmp`.
-
-I expected to maybe type `git status` to see the missing file and later confirm that I don't want it. But when I type `git status` I get:
-
-    X1C3:~/media/uploadme$ git status
-    fatal: This operation must be run in a work tree
-
-What should I be doing?
-
-
-
-My use case is that I'm organising my media in a staging area called **uploadme/**.
-
-At this staging area, I add all the media into git-annex and then I go to work pruning, editing & [adding metadata](https://github.com/muennich/sxiv/blob/master/exec/key-handler#L29).
-
-# Pruning
-
-If I find an image I don't like I move it to `/tmp`.
-
-I expected to maybe type `git status` to see the missing file and later confirm that I don't want it. But when I type `git status` I get:
-
-    X1C3:~/media/uploadme$ git status
-    fatal: This operation must be run in a work tree
-
-What should I be doing?
diff --git a/doc/forum/How_to_delete_a_remote__63__.mdwn b/doc/forum/How_to_delete_a_remote__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_delete_a_remote__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have a repository with an S3 remote named `cloud`. I now no longer want to use that remote. I've dropped all the data from it (`git annex drop . --from cloud`). How do I tell my repository to forget about the remote?
diff --git a/doc/forum/How_to_find_out_if_assistant_is_still_repairing__63__.mdwn b/doc/forum/How_to_find_out_if_assistant_is_still_repairing__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_find_out_if_assistant_is_still_repairing__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have a corrupted repository, that git annex assistant wanted to repair. Before clicing on the button to start the repairing process, I had to deactivate my internet connection for another reason. The daemon.log is showing some connection errors to my remotes. But since pressing the button to repair my repo, the webapp is not showing the dashboard and there's no indicator that's trustworthy enough, that stuff is happening. There are some git and git annex processes running, but is there really now better way to know, if the repairing process is making progress, or if I need to restart the assistant because I needed to reset my internet connection.
diff --git a/doc/forum/How_to_get_detailed_information_on_special_remotes__63__.mdwn b/doc/forum/How_to_get_detailed_information_on_special_remotes__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_get_detailed_information_on_special_remotes__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-How can I get information on already-configured special remotes in a repository?  I'd like to find out what type a given special remote is, and which URL/bucket, encryption mode, etc. was used to set it up.
diff --git a/doc/forum/How_to_get_git-annex_to_forget_a_commit__63__.mdwn b/doc/forum/How_to_get_git-annex_to_forget_a_commit__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_get_git-annex_to_forget_a_commit__63__.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-I've done a `git annex add` and `git commit` on my annex which included some files I don't want to add to the annex. I've tried to reverse it all out, but whenever I `git annex add` something, the unwanted files show up in the git-annex branch.
-
-    git init forgetmenot
-    cd forgetmenot
-    git commit -m "create" --allow-empty
-    git annex init fmn
-    
-    echo 'foo' > foo
-    echo 'bar' > bar
-    
-    git annex add
-    git commit -m "add foo"
-    
-    git log --oneline --name-only
-    # 28634c0 add foo
-    # bar
-    # foo
-    # 4a87050 create
-
-    git log --oneline --name-only git-annex
-    74e6969 update
-    41d/a26/SHA256E-s4--b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c.log
-    a70/4a5/SHA256E-s4--7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730.log
-    95285ed update
-    uuid.log
-    2135e07 branch created
-
-If you now try to get git-annex to forget by reverting *master* and *git-annex* and only adding/commiting *foo*, the master branch ends up correct, but git-annex magically remembers *bar*!
-
-    git reset --hard HEAD^
-    git branch -f git-annex git-annex^
-
-    echo 'foo' > foo
-    git annex add
-    git commit -m "add foo"
-
-    git log --oneline --name-only
-    # 1b4889e add foo
-    # foo
-    # 4a87050 create
-
-    git log --oneline --name-only git-annex
-    # 3d0b9bc update
-    # 41d/a26/SHA256E-s4--b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c.log
-    # a70/4a5/SHA256E-s4--7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730.log
-    # 2e17a19 update
-    # uuid.log
-    # 646776b branch created
-
-How is git-annex remembering this and how can I get it to completely forget?
-
-I have tried `git gc --aggressive --prune=all`, `git annex fsck --all` and `git annex drop unused` but somehow, git-annex is remembering bar existed.
-
-This is an exercise in micro-managing the git-annex branch a bit, but this situation does also cause git-annex to complain about the missing files on fsck (0 out of 2 copies) so it isn't just being a control freak! Honest! :)
diff --git a/doc/forum/How_to_handle_the_git-annex_branch__63__.mdwn b/doc/forum/How_to_handle_the_git-annex_branch__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_handle_the_git-annex_branch__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi!
-
-When I update one repository to/from another, am I to push/pull only the master branch (and other branches I'd have created myself) or also the git-annex branch?
-
-From what I understand, the git-annex branch is local to one repository and has no interest in being merged in another, but some examples make use of git pull --all (which merges distant git-annex branch into local).
diff --git a/doc/forum/How_to_hide_broken_symlinks.mdwn b/doc/forum/How_to_hide_broken_symlinks.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_hide_broken_symlinks.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-This is a method for hiding broken links using git-annex views.
-
-Each annex will need it's own name for this system to work. For this example I'll use "localdrive." After getting file content, run:
-
-    git-annex metadata --not --in=here --metadata in=localdrive . -s in-=localdrive
-    git-annex metadata --in=here --not --metadata in=localdrive . -s in+=localdrive
-    git-annex view /=*
-    git-annex vfilter in=localdrive
-
-Unused links will be hidden. Folder structures will remain the same.
-
-To switch back use:
-
-    git-annex vpop 2
-
-Because this is a lot to type, I've placed these in a bash script in the base folder (ignored with .gitignore so it isn't sent to other repos). The local repo name can be changed by editing THISREPO:
-
-    #!/bin/bash
-    
-    THISREPO='localdrive'
-    
-    git-annex metadata --not --in=here --metadata in=$THISREPO . -s in-=$THISREPO
-    git-annex metadata --in=here --not --metadata in=$THISREPO . -s in+=$THISREPO
-    git-annex view /=*
-    git-annex vfilter in=$THISREPO
-    
-    exit 0
-
-## Hiding Broken Links in Preferred Content Repos
-
-If you have a repo with preferred content settings, this can be shortened to a single script which can be run to "refresh" the view:
-
-    #!/bin/bash
-    
-    THISREPO='pcrepo'
-    
-    git-annex vpop 2
-    git-annex sync
-    git-annex get --auto
-    git-annex metadata --not --in=here --metadata in=$THISREPO . -s in-=$THISREPO
-    git-annex metadata --in=here --not --metadata in=$THISREPO . -s in+=$THISREPO
-    git-annex view /=*
-    git-annex vfilter in=$THISREPO
-    
-    exit 0
diff --git a/doc/forum/How_to_improve_performance_with_v6_repos__63__.mdwn b/doc/forum/How_to_improve_performance_with_v6_repos__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_improve_performance_with_v6_repos__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I've been using git-annex to manage a repo of ~4000 files (an MP3 collection). I used to use direct mode, but switched to v6 and am using unlocked files instead. However, even small commits have been taking 10-20 minutes. Looking at `ps` output shows `git-annex smudge` processes running against all of the files in the repo, one by one.
-
-Is there any way I can speed things up?
diff --git a/doc/forum/How_to_list_all_existing_metadata_types__63__.mdwn b/doc/forum/How_to_list_all_existing_metadata_types__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_list_all_existing_metadata_types__63__.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Is there any way to list all of the existing tag and metadata field types? What I mean is, I have files tagged with several different tags, files with several metadata fields; is there any way to list all the tag and field names being used (not all the files WITH those tags)?
-
-For example, something like:
-
-    git annex metadata --listfields
-    lastchanged
-    month
-    month-lastchanged
-    year
-    year-lastchanged
-
-    git annex metadata --listtags
-    Public
-    Personal
-    Work
diff --git a/doc/forum/How_to_make_Maven_releases_work_with_git_annex___63__.mdwn b/doc/forum/How_to_make_Maven_releases_work_with_git_annex___63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_make_Maven_releases_work_with_git_annex___63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi,
-
-In normal maven release procedure, it re-clones the gitrepo from the tag to do the release from either git or local file, But as git-annex uses symlinks when the repo is clones by maven, it misses the files. Any recommendations how i can make this work ? 
-
-Also would love some data on who is using git-annex in production environment would be good.
diff --git a/doc/forum/How_to_make_a_server_store_the_files.mdwn b/doc/forum/How_to_make_a_server_store_the_files.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_make_a_server_store_the_files.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-How can I make one of my servers keep a copy of the files on the server, so I can easily SFTP in and download the files. I don't want to see the .git folder, I want to see the files synced there.
diff --git a/doc/forum/How_to_overwrite_local_changes__63__.mdwn b/doc/forum/How_to_overwrite_local_changes__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_overwrite_local_changes__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hello,
-
-I have a repo Desktop (client), a repo Server (transfer) and a repo Notebook (Client). Usually first thing I do in the morning is go git annex sync --content the changes to the laptop. Today I accidently modified some files on the laptop before I synced. After I syncing I know have some files foo.variant-afd1 and foo.variant-a6d3 with which I don't know what to do.
-
-How can I discard local changes and copy all changes from the transfer repo to the laptop? Local changes should be overwritten.
-
-Thanks!
diff --git a/doc/forum/How_to_prevent_the_assistant_from_downloading_all_data__63__.mdwn b/doc/forum/How_to_prevent_the_assistant_from_downloading_all_data__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_prevent_the_assistant_from_downloading_all_data__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I have a repository on my laptop with a single remote on a USB drive. Both were created without the assistant.
-
-The remote holds all the content. My understanding is that this would be a "backup" repository, using the group definitions.
-
-The local repository generally holds no content. When I want a file, I make sure the remote is available, and then I `git annex get` it.
-
-This works fine in git annex, but I'm now experimenting with the assistant. As soon as I fire up the assistant, it starts downloading all of the data from the remote. I don't ever want it to automatically get any content from the remote. If it sees new content in the repository, I would like it to push that out to the remote. But never get anything from the remote, and never drop anything that is in the repository.
-
-How can I setup this behaviour in the assistant? I have set the remote's repository group to "backup". The local repository is not in any group, since none of the groups fit my model for this repo.
diff --git a/doc/forum/How_to_rename_a_remote__63__.mdwn b/doc/forum/How_to_rename_a_remote__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_rename_a_remote__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I recently created WebDAV remote to my annex which I assumed to be just for testing purposes at the time, so I gave it a strange and long-wided name. It turned out, though, that the remote is stable, works fine, and that I'm going to keep it. Now, I would like to give it a snappier and more descriptive name than the one I originally chose. Is that possible somehow?
diff --git a/doc/forum/How_to_resolve_a_interrupted_merge_in_direct_mode__63__.mdwn b/doc/forum/How_to_resolve_a_interrupted_merge_in_direct_mode__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_resolve_a_interrupted_merge_in_direct_mode__63__.mdwn
+++ /dev/null
@@ -1,65 +0,0 @@
-I have just done a sync in a direct mode repo:
-
-    git-annex sync sshremote
-
-It has quite a few conflicts (both sides adding the same file with same content). But somehow the merge won't conclude. Here's some log:
-
-    $ git-annex sync sshremote
-    commit  ok
-    pull sshremote 
-    warning: no common commits
-    remote: Counting objects: 32162, done.
-    remote: Compressing objects: 100% (31192/31192), done.
-    remote: Total 32162 (delta 3), reused 32162 (delta 3)
-    Receiving objects: 100% (32162/32162), 3.39 MiB | 1.61 MiB/s, done.
-    Resolving deltas: 100% (3/3), done.
-    From sshremote:/repo
-     * [new branch]      annex/direct/master -> sshremote/annex/direct/master
-     * [new branch]      git-annex  -> sshremote/git-annex
-     * [new branch]      master     -> sshremote/master
-     * [new branch]      synced/master -> sshremote/synced/master
-
-    Auto-merging file1
-    CONFLICT (add/add): Merge conflict in file1
-    Auto-merging file2
-    CONFLICT (add/add): Merge conflict in file2
-    Auto-merging file3
-    CONFLICT (add/add): Merge conflict in file3
-    Auto-merging file4
-    CONFLICT (add/add): Merge conflict in file4
-    Automatic merge failed; fix conflicts and then commit the result.
-    file1: needs merge
-    file2: needs merge
-    file3: needs merge
-    file4: needs merge
-    ^C
-
-I waited for a few minutes, and checked that both cpu and disk activity is near zero on both server. So I interrupted it, thinking it might be some locking issue. 
-
-But now I cannot sync with the remote anymore because the merge is still in process. How should I resolve the conflicts? I could do it manually if I cannot use annex's auto merge.
-
-    $ git-annex sync sshremote
-    commit  ok
-    pull sshremote 
-
-    fatal: You have not concluded your merge (MERGE_HEAD exists).
-    Please, commit your changes before you can merge.
-
-    fatal: You have not concluded your merge (MERGE_HEAD exists).
-    Please, commit your changes before you can merge.
-    failed
-
-    $ git merge --abort
-    fatal: This operation must be run in a work tree
-
-Update: this is running on OSX with:
-
-    git-annex version: 5.20131221-g00d1673
-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
-    local repository version: 3
-    default repository version: 3
-    supported repository versions: 3 5
-    upgrade supported from repository versions: 0 1 2 4
-
diff --git a/doc/forum/How_to_restore_symlinks.mdwn b/doc/forum/How_to_restore_symlinks.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_restore_symlinks.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Somehow the symlinks have vanished from one directory of my repository. How can I restore them?
diff --git a/doc/forum/How_to_retroactively_annex_a_file_already_in_a_git_repo.mdwn b/doc/forum/How_to_retroactively_annex_a_file_already_in_a_git_repo.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_retroactively_annex_a_file_already_in_a_git_repo.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I worked out how to retroactively annex a large file that had been checked into a git repo some time ago.  I thought this might be useful for others, so I am posting it here.
-
-> This is a great tip, so I've moved it to
-> [[tips|tips/How_to_retroactively_annex_a_file_already_in_a_git_repo]].
-> --[[Joey]] 
diff --git a/doc/forum/How_to_revert_metadata_changes.mdwn b/doc/forum/How_to_revert_metadata_changes.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_revert_metadata_changes.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Hi,
-
-I accidentally changed some metadata tags for all annexed files in a directory (by omitting the filename to the git annex metadata call). How can I revert that change?
-
-I tried a git reset --hard on the git-annex branch, but after checking out master and adding a new file the changes magically reappeared.
-
-git-annex version: 5.20141125
-
-To reproduce do:
-
-    git init; git annex init
-    echo Hi > a.txt; git annex add a.txt
-    git commit -m 'Initial add'
-    git annex metadata --set name=bla
-    git annex metadata --set name=blu
-    git checkout git-annex
-    git reset --hard HEAD^
-    git checkout master
-    git annex metadata a.txt # name=bla
-    echo Huch > b.txt; git annex add b.txt
-    git annex metadata a.txt # name=blu again
-
-Cheers,
-
-Markus
diff --git a/doc/forum/How_to_shrink_transfer_repo__63__.mdwn b/doc/forum/How_to_shrink_transfer_repo__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_shrink_transfer_repo__63__.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Hello,
-
-I have two repositories (Asaru and Horus) that are both ```group=client``` and ```wanted=standard```. The other one, Astarte is ```group=transfer``` and ```wanted=standard```. Pretty standard I think.
-
-```
-repository mode: direct
-trusted repositories: 0
-semitrusted repositories: 5
-        00000000-0000-0000-0000-000000000001 -- web
-        00000000-0000-0000-0000-000000000002 -- bittorrent
-        58001764-966d-4076-ae99-4ef6de25df39 -- Asaru [here]
-        8165bdf1-907e-4bbe-9c35-22fbf6f8cb00 -- Astarte [astarte]
-        cca0c3c8-593a-4395-936c-1093f0f762e8 -- Horus
-untrusted repositories: 0
-```
-
-I always sync on the two client repos like that ```git annex add . && git annex sync --content```. The transfer repo is growing larger and larger. ```git annex dropunused N``` says, that it ```could only verify the existence of 0 out of 1 necessary copies```.
-
-What is the best way to clean up the transfer repo?
-
-1. Make the two client repos trusted? The three repos have been created manually, not through the assistant. Is that what the assistant does, too?
-2. Try to get the two client repos into touch with each other and try to use ```dropunsed --from=astarte```?
-
-What is the recommended way for that?
-
-Thanks,
-Florian
diff --git a/doc/forum/How_to_sync_data_down_from_a___39__full_backup__39____63__.mdwn b/doc/forum/How_to_sync_data_down_from_a___39__full_backup__39____63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_sync_data_down_from_a___39__full_backup__39____63__.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-
-I'm trying to find a way of syncing data across multiple platforms, including an android device. The latter I want to sync the data so that it's on the devices SD filesystem and independent of network. As far as I can tell git-annex's client is the only one that can do this, all other self hosted storage clients I've found are only network viewers (owncloud, seafile), which is no good to me. I want to sync my ABC sheet music collection onto it, viewable independent of network access, updating changes automatically. Other parts of the data set (i.e. large collection of cannon cr2 raws), I want synced between my laptop and desktop.
-
-I've set up git annex with a central git repo and another client directory which syncs fine to the server (set as a 'full backup'). Now I want to download this whole archive onto the android device. I've set up the client on the device and it works and will upload to the server, however I can't see any way of getting it to download. Surely git-annex has the capability to pull data?
diff --git a/doc/forum/How_to_work_with_transfer_repos_manually__63__.mdwn b/doc/forum/How_to_work_with_transfer_repos_manually__63__.mdwn
deleted file mode 100644
--- a/doc/forum/How_to_work_with_transfer_repos_manually__63__.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Hello,
-
-I have 3 repos, desktop, external and server. desktop and server are sometimes connected, sometimes they should sync using the server. I want to do it manually without the assistent, since I love to learn it that way before I let the assistent do the work.
-
-client and desktop are "wanted standard" and "group client". server is "group transfer".
-
-desktop and server have each other and server in their remotes. server has no remotes.
-
-Is this setup fine that way?
-
-How to use it with the transfer repo?
-
-"git annex sync && git annex copy --to server --auto" after changing files?
-"git annex sync && git annex copy --from server --auto" to update?
-
-Will the on the server automatically be dropped? Or do the server needs to have a active role, i.e. called via ssh?
-
-Thanks!
diff --git a/doc/forum/Howto_remove_a_repository__63__.mdwn b/doc/forum/Howto_remove_a_repository__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Howto_remove_a_repository__63__.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Hello,
-
-I have added a few repositories for testing purpose and would like to remove them.
-Is it possible to remove a repository through assistant? 
diff --git a/doc/forum/Howto_remove_unused_files.mdwn b/doc/forum/Howto_remove_unused_files.mdwn
deleted file mode 100644
--- a/doc/forum/Howto_remove_unused_files.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Hello.
-
-My case: I have somehow managed to get my repo, with quite much stuff inside it messed up.
-
-There is single directory 'cities' containing quite many files (>10k) that i would rather see gone (and keep the tar.bz version of it ..). I tried doing 
-
-    git drop --force
-
-that works fine, but the files are still there after sync. 
-
-git annex unused says just 'ok' so i guess it thinks they are still used somewhere. I tried to look where, but i ended up just doing git annex drop -f my_remote_here test_file_name for each of my remotes. This doesnt help. 
-How can i get rid of these files? Doing git annex fsck shows that 
-
-
-So, try to search what is the key:
-
-     % ls -lah cities/diskcache/config.cfg
-     lrwxrwxrwx 1 XX XXX 190 Nov 29 05:52 cities/diskcache/config.cfg -> ../../../../.git/annex/objects/qm/M6/SHA256-s32--4f5ce34d1b0b8d854a315530b2fdcbfa9c3067636a2aa5433a04402db4151dce/SHA256-s32--4f5ce34d1b0b8d854a315530b2fdcbfa9c3067636a2aa5433a04402db4151dce
-     sundberg@sundberg-MS-7680 ~/git-repository/ubuntu.iso/Archive/Maps
-     % git log --stat --all -SSHA256-s32--4f5ce34d1b0b8d854a315530b2fdcbfa9c3067636a2aa5433a04402db4151dce/SHA256-s32--4f5ce34d1b0b8d854a315530b2fdcbfa9c3067636a2aa5433a04402db4151dce
-     commit 51a57a023774ff80408210828f298f5c42a7e0be
-     Author: XXXX
-     Date:   Sun Dec 9 13:42:40 2012 +0200
-        git-annex automatic sync
-     Archive/Maps/cities/diskcache/config.cfg |    1 +
-     1 file changed, 1 insertion(+)
-
-So how can i deduce what is the remote i should try to clean up ?
-
-
-Thanks!
diff --git a/doc/forum/Ignoring_folders__63__.mdwn b/doc/forum/Ignoring_folders__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Ignoring_folders__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-What is the correct way to ignore subfolders or files?  Just use .gitignore?  Or is there a git-annex specific way?  For example, partial download files.
diff --git a/doc/forum/Import_options.mdwn b/doc/forum/Import_options.mdwn
deleted file mode 100644
--- a/doc/forum/Import_options.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Thank you for adding import options to handle duplicates. Very handy when consolidating data from various sources.
-
-Can deletion of the source files be decoupled from annex duplication/deduplication options? For example, I would like to import source files without deleting them and at the same time do not import duplicates.
-
-Better yet, since deletion of source files is potentially dangerous, a delete option could be required for deletion to be performed. Example:
-
-git annex import --deduplicate --delete_all_source_files
-git annex import --deduplicate --delete_source_duplicates
-
-Also, it would be great to have import "status" option which goes over files to be imported and logs their status ( to be imported, duplicate etc. ) without actually performing any changes. It would be great for testing and trial runs.
-
-I hope the above make sense. It would make import feature more flexible.
-
-Cheers, 
diff --git a/doc/forum/Import_options/comment_1_118a5f978090a3909299876a01c0adec._comment b/doc/forum/Import_options/comment_1_118a5f978090a3909299876a01c0adec._comment
deleted file mode 100644
--- a/doc/forum/Import_options/comment_1_118a5f978090a3909299876a01c0adec._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkeJKC5Sy0stmcTWyePOLEVv0G-x1yaT_w"
- nickname="Josef"
- subject="wishlist"
- date="2013-09-26T11:11:19Z"
- content="""
-Posted the above yesterday before realizing that it should probably go to wishlist requests. I am sorry about that.
-
-Basically it is a request to extend import options and perhaps make the options easier to use/understand.
-
-Suggested Import Options:
-
-- source directory,
-- destination directory,
-- deduplicate in annex ( yes, no )
-- delete source files ( yes, no )
-- trial run ( screen output only )
-
-Many thanks for a great product!
-
-"""]]
diff --git a/doc/forum/Import_options/comment_2_21da91f08cb6b28ae3e79ade033db516._comment b/doc/forum/Import_options/comment_2_21da91f08cb6b28ae3e79ade033db516._comment
deleted file mode 100644
--- a/doc/forum/Import_options/comment_2_21da91f08cb6b28ae3e79ade033db516._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkeJKC5Sy0stmcTWyePOLEVv0G-x1yaT_w"
- nickname="Josef"
- subject="Additional Comments"
- date="2013-09-30T21:33:31Z"
- content="""
-Imported several thousand files to annex and would like to add the following comments:
-
-- it would be great to have an option to exclude hidden dot files from import,
-
-- empty directories should be deleted when files located in the directories are deleted,
-
-- \"git annex add\" seems to process directories and files alphabetically, unfortunately import processes files in a different order, which makes it hard to predict which files are deleted when deduplicating,
-
-Cheers,
-
-"""]]
diff --git a/doc/forum/Integrating_annex_get_into_git_checkout_with_hooks.mdwn b/doc/forum/Integrating_annex_get_into_git_checkout_with_hooks.mdwn
deleted file mode 100644
--- a/doc/forum/Integrating_annex_get_into_git_checkout_with_hooks.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I am considering using git annex for an existing work project that is getting bloated with compressed tarballs. We have a team of 7, so making the annex invisible to day to day use is important.
-
-Are there any git hooks that will make the process of git checkout/merge etc automatically do a git annex get ..., our do I have to write these myself?
-
-
-
-
diff --git a/doc/forum/Integrating_git-annex_with_Windows_Git_Extensions__63__.mdwn b/doc/forum/Integrating_git-annex_with_Windows_Git_Extensions__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Integrating_git-annex_with_Windows_Git_Extensions__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I installed the Windows git-annex, and had to run the following command from Git Bash (in Admin mode) in order to get git to see git-annex:
-
-$ ln -s /C/Program\ Files\ \(x86\)/Git/usr/bin/git-annex.exe git-annex.exe
-
-Was this 
-1) a known install issue that I missed somewhere?
-2) a failure in my particular installation?
-3) or was I supposed to put C:\Program Files (x86)\Git\usr\bin in my Windows path?
-
-Wasn't sure if we needed a docs update...
diff --git a/doc/forum/Invalid_cross-device_link.mdwn b/doc/forum/Invalid_cross-device_link.mdwn
deleted file mode 100644
--- a/doc/forum/Invalid_cross-device_link.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I want to import from an SD card to a mounted annex:
-
-    user@laptop:/media/.../annex/Pictures/(master)$ git annex import /media/.../sdcard/Download/QuickTransfer
-    [...]
-    git-annex: /media/.../sdcard/Download/QuickTransfer/20150428_192110.jpg: rename: unsupported operation (Invalid cross-device link)
-    [...]
-
-Why is it trying to make a cross-device link? As long as it can read the files, 
-it should be OK, no?
diff --git a/doc/forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.mdwn b/doc/forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Is_an_automagic_upgrade_of_the_object_directory_safe__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Consider the following two use cases:
-
-* I have a git-annex repo on a portable medium and carry it around between several machines. I use it on a non-important system with the most current git-annex installed, automagic upgrade happens. I am now forced to upgrade git-annex on all other machines. Bonus points if this happens in the background and I don't even notice it until it's too late.
-
-* My system crashes and I use a rescue CD to access local data, including git-annex. The rescue CD includes a newer version of git-annex and once my system is restored, I am forced to upgrade git-annex locally.
-
-My suggestion would be not to upgrade automatically, but to either ask the user if this is OK or to error out and request that they run git annex update by hand.
-
-Optionally, this could be done via a local config variable which should default to error or ask, not upgrade.
diff --git a/doc/forum/Is_it_possible_to_make_git-sync_not_nullify_symlinks__63__.mdwn b/doc/forum/Is_it_possible_to_make_git-sync_not_nullify_symlinks__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Is_it_possible_to_make_git-sync_not_nullify_symlinks__63__.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Hey,
-
-I've found that git annex works great as a way to publish websites to a web server.  I can edit my website on my computer, `git annex sync` my working directory to the VPS, and then `git annex get files-I-want-to-publish`.  This works great.  I can maintain my normal working directory structure on the VPS and I don't have to worry about people seeing files I DIDN'T want to publish, since the dead symlinks just show up as 404s.
-
-There's one small problem.  
-
-Say:
-
- 1) I've already published a file using `git annex get file-to-update`
-
- 2) I update that file on my computer
-
- 3) I do `git annex sync`
-
- 4) I do `git annex get file-to-update`
-
-Between steps 3 and 4, file-to-update goes from being an accessible web resource to being a dead symlink.  It's not really a problem for me, as hardly anyone visits my site. But it would be nice if I could make `sync` leave the old symlink to the old file until I `get`ed the new one.
-
-Is this possible?
-
-PS: For those who might follow in my footsteps, remember that you probably don't want people reading the contents of your .git dir, so make a re-write rule for this!
-
-Timothy
diff --git a/doc/forum/Is_setting_core.preloadindex_safe_with_git_annex__63__.mdwn b/doc/forum/Is_setting_core.preloadindex_safe_with_git_annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Is_setting_core.preloadindex_safe_with_git_annex__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I found [this suggestion](http://stackoverflow.com/a/2873039) on Stack Overflow. Is this safe to use in git annex? I don't know how the internals work. I have a very large annex and I don't want to screw it up.
diff --git a/doc/forum/Is_there_any_delta_handling_for_file_modifications__63__.mdwn b/doc/forum/Is_there_any_delta_handling_for_file_modifications__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Is_there_any_delta_handling_for_file_modifications__63__.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Hi!
-
-I have few large files, which will be slightly modified from time to time. Consider the following example:
-
-    $ git init
-    $ git annex init "somerepo"
-    $ dd if=/dev/urandom of=foo bs=50M count=1
-    $ git annex add foo
-    $ git commit -m "foo added"
-    $ git annex unlock foo
-    $ echo "modification" >> foo
-    $ git annex add foo
-    $ git -m commit "modification 1 of foo"
-    $ echo "another modification" >> foo
-    $ git annex add foo
-    $ git -m commit "modification 2 of foo"
-
-I would have expected ending up with a full copy of foo, and a delta storage for the first version and the first modification. Instead, three full-sized copies are created within the .git/annex/objects directory, even though the modifications only added a few characters.
-
-Is there any way to not always store a full copy of each file for each modification, but only a delta?
diff --git a/doc/forum/Lacking_webapp_on_Trisquel__47__Ubuntu_Precise.mdwn b/doc/forum/Lacking_webapp_on_Trisquel__47__Ubuntu_Precise.mdwn
deleted file mode 100644
--- a/doc/forum/Lacking_webapp_on_Trisquel__47__Ubuntu_Precise.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I'd like to have git-annex assistant running so I can use it to sync files, but when I downloaded and ran it the webapp was missing.  
-
-I've recently begun using Trisquel, or rather the KDE version Triskel.  The current Trisquel is built from Ubuntu Precise, 12.04, the current LTS version.  Thus it seems that I'm a bit behind the current Ubuntu software, and my impression is that this relates to my problem.
-
-In [a post](http://git-annex.branchable.com/forum/Cannot_launch_webapp_on_ubuntu_12.04_using_ppa/) on this forum I read that a version of git-annex was built without the webapp, and that this had since been corrected.  It appears from my git-annex version data that I have an older version, though I downloaded it only two days ago, and it's older than the corrected version.  Is this because my Ubuntu stuff is out of date? 
-
-More importantly, is there any way I can get webapp running on my current OS, or must I wait until Trisquel gets to 13.04?
diff --git a/doc/forum/Layout_mismatch_between_symlinks_and_annex_objects.mdwn b/doc/forum/Layout_mismatch_between_symlinks_and_annex_objects.mdwn
deleted file mode 100644
--- a/doc/forum/Layout_mismatch_between_symlinks_and_annex_objects.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I have an old repository, and I'm not sure what I have done with it, but it seems to be broken in an interesting fashion.
-
-    $ ls -l pix/image001.jpg 
-    lrwxrwxrwx 1 la la 187 Sep  5 11:31 pix/image001.jpg -> ../.git/annex/objects/G7/J7/SHA256-s99372--0458b0b72b394a719b72032971b880a8dfafa65e8048ec6fc6c861fc3ea5e702/SHA256-s99372--0458b0b72b394a719b72032971b880a8dfafa65e8048ec6fc6c861fc3ea5e702
-    $ ls -lL pix/image001.jpg 
-    ls: cannot access pix/image001.jpg: No such file or directory
-    $ find .git/annex/objects/ -type f -name '*0458b0b72*'
-    .git/annex/objects/477/75c/SHA256-s99372--0458b0b72b394a719b72032971b880a8dfafa65e8048ec6fc6c861fc3ea5e702/SHA256-s99372--0458b0b72b394a719b72032971b880a8dfafa65e8048ec6fc6c861fc3ea5e702
-    $ git config annex.version
-    5
-
-So the symlinks use a layout where index directories have two-letter names, but the actual layout in the annex uses directory names with three hexadecimal digits.
-
-Is there some straightforward way to fix this or do I need to figure the index format and hack up a script to convert the annex repository?
diff --git a/doc/forum/Let_watch_selectively_annex_files.mdwn b/doc/forum/Let_watch_selectively_annex_files.mdwn
deleted file mode 100644
--- a/doc/forum/Let_watch_selectively_annex_files.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Hello,
-
-First of all, thanks to Joey for developing git-annex, good job!
-
-I have a small feature request: when running git annex watch, new files are automatically added to the annex. It would be nice to let this depend on an attribute: add a file to annex if an attribute is set, otherwise do a regular git add.
-
-My use-case is the following: I have a repository containing documents I'm working on (mostly LaTeX), which I'd like to be regular files in git (no annex), and a bunch of extra documentation (pdfs) and images, which I'd like to go to the annex. I currently set a git-attribute (addtoannex), and use a shell script to selectively add files to annex as follows:
-
-Content of .gitattributes:
-
-    *.png addtoannex
-    *.jpg addtoannex
-
-Snippet of add script:
-
-    git check-attr addtoannex "$FILE" | grep -q ": set$"
-    if [ $? -eq 0 ]; then
-        git annex add "$FILE"
-    else
-        git add "$FILE"
-    fi
-
-It would be great if the watcher could honour an attribute.
-
-best regards,
-
-Tom
diff --git a/doc/forum/Links_or_actual_files__63___Confused__33__.mdwn b/doc/forum/Links_or_actual_files__63___Confused__33__.mdwn
deleted file mode 100644
--- a/doc/forum/Links_or_actual_files__63___Confused__33__.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-I don't think it's a bug or a todo, just a request for clarification.
-
-So, I installed git-annex first on a Mac, and created the initial repository, and started dropping stuff into it. All fine.
-
-Created a second repository on an external (but never disconnected, also does Time Machine) drive. All fine. Everything's there.
-
-Went across the room to my Linux desktop, installed git-annex, and tried to pair it to my Mac's git-annex repo. Hit <a href="http://git-annex.branchable.com/bugs/bad_comment_in_ssh_public_key_ssh-rsa/#comment-0ee00f307909723fdf8c73695787f067">this bug</a>, installed latest git-annex from tarball and got past that and got the pairing done. Syncing happened, all looked well...
-
-But when I look in the annex dir on that Linux machine, I now just see symlinks to the actual files in the repo's .git/annex stuff. It kinda works, but it's a bit distracting, especially if you open such a file in any desktop app and you can see it's got the target of the link (some sha-value filename.ext) rather than the sensibly-named link. Including files created and coped into that annex on that machine. (In Nautilus they all show with symlink & lock emblems.)
-
-Look again at some documentation, and apparently it's <a href="http://git-annex.branchable.com/how_it_works/">supposed to do this</a>
-
-Which makes me wonder why it *isn't* doing it on the Mac I started the repository on?
-
-Went to another mac (laptop) and installed git-annex, and set up pairing to the first mac - as far as I can tell, doing the exact same procedure as I did under Linux. TBH through the webapp there's not much scope for doing it a different way. Files sync across...
-
-And there they are, the actual files, directly in the annex dir, not symlinks.
-
-(I am by the way confirming this at the commandline, it's not just what Finder/Nautilus may be displaying to me graphically.)
-
-Now, seeing the actual files in the annex directory is what I *prefer*; but I'm a: confused as to why the Macs are doing it that way but Linux isn't, and b: given the "how it works" link, why everything isn't using the links.
diff --git a/doc/forum/List_annexed_files_in_chronological_order__63__.mdwn b/doc/forum/List_annexed_files_in_chronological_order__63__.mdwn
deleted file mode 100644
--- a/doc/forum/List_annexed_files_in_chronological_order__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-How can I get git-annex to list the annexed files in the order they have been added?
diff --git a/doc/forum/Local_and_remote_in_direct_mode.mdwn b/doc/forum/Local_and_remote_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Local_and_remote_in_direct_mode.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I have two machines (A and B ) both have a directory called "inbox"
-I want to sync these two directories. So I ran git annex assistant on machine A and set up a remote to B with **ssh** and selected **client: a repository on your computer**.
-
-The end result is that I have something that looks like a git bare repo on machine B and I have no files on A from machine B.
-
-What am I doing wrong? What shall I do to achieve my goal?
-It is kind of dropbox functionality what I want. (Which I never used for security/policy reasons.)
diff --git a/doc/forum/Looking_at_the_webapp_on_OSX.mdwn b/doc/forum/Looking_at_the_webapp_on_OSX.mdwn
deleted file mode 100644
--- a/doc/forum/Looking_at_the_webapp_on_OSX.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Not logging this in the bugs section, but poking at the new webapp feature...
-
-<pre>
-laplace:annex jtang$ git annex webapp -d
-[2012-07-26 19:02:50 IST] read: git ["--git-dir=/Users/jtang/annex/.git","--work-tree=/Users/jtang/annex","show-ref","git-annex"] 
-[2012-07-26 19:02:50 IST] read: git ["--git-dir=/Users/jtang/annex/.git","--work-tree=/Users/jtang/annex","show-ref","--hash","refs/heads/git-annex"] 
-[2012-07-26 19:02:50 IST] read: git ["--git-dir=/Users/jtang/annex/.git","--work-tree=/Users/jtang/annex","log","refs/heads/git-annex..731005d121426a38b206c4544da02cdb3b974974","--oneline","-n1"] 
-[2012-07-26 19:02:50 IST] read: git ["--git-dir=/Users/jtang/annex/.git","--work-tree=/Users/jtang/annex","log","refs/heads/git-annex..d36d8d88847decc2320f0be22892ad94a8abe594","--oneline","-n1"] 
-[2012-07-26 19:02:50 IST] read: git ["--git-dir=/Users/jtang/annex/.git","--work-tree=/Users/jtang/annex","log","refs/heads/git-annex..57bcddc14d03b61028f7002e2dabcc5181d74f3d","--oneline","-n1"] 
-[2012-07-26 19:02:50 IST] read: git ["--git-dir=/Users/jtang/annex/.git","--work-tree=/Users/jtang/annex","log","refs/heads/git-annex..372aceaf49b60ebe31cc3fe2e52ba4fbe99c134f","--oneline","-n1"] 
-[2012-07-26 19:02:50 IST] chat: git ["--git-dir=/Users/jtang/annex/.git","--work-tree=/Users/jtang/annex","cat-file","--batch"] 
-[2012-07-26 19:02:50 IST] read: git ["config","--null","--list"] 
-[2012-07-26 19:02:50 IST] call: open ["file:///Users/jtang/annex/.git/annex/webapp.html"] 
-The file /Users/jtang/annex/.git/annex/webapp.html does not exist.
-git-annex: failed to start web browser on url file:///Users/jtang/annex/.git/annex/webapp.html
-</pre>
-
-I would have expected the open command to open up http://localhost:port/ instead of a file on my machine. Anyway, its just an observation on the current state of the webapp feature, not expecting it to work enough for me to test it ;)
diff --git a/doc/forum/Lyve_Home.mdwn b/doc/forum/Lyve_Home.mdwn
deleted file mode 100644
--- a/doc/forum/Lyve_Home.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Lyve Home is an interesting device to store personal photos and videos. It is a 2TB hard drive that stores all your photos. It tries to replicate the files on every device you connect (computer, phone, etc.) and keeps at least two copies of each photo. The photos are not stored in the cloud, Lyve only stores metadata in the cloud.
-
-http://www.youtube.com/watch?v=sOE5uWqS6YQ
-
-This is something that could be easily made with git-annex and a small computer, like a Raspberry Pi, and a hard drive. 
-
diff --git a/doc/forum/MD5_and_MD5E_backends_no_longer_available__63__.mdwn b/doc/forum/MD5_and_MD5E_backends_no_longer_available__63__.mdwn
deleted file mode 100644
--- a/doc/forum/MD5_and_MD5E_backends_no_longer_available__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I set the backend to MD5E with git config, but when I try to import files I get this error:
-
-    git-annex: unknown backend MD5E
-
-MD5 doesn't work either. Have these been removed as backend options? They are listed [here](http://git-annex.branchable.com/backends/).
diff --git a/doc/forum/Make_whereis_output_more_compact.mdwn b/doc/forum/Make_whereis_output_more_compact.mdwn
deleted file mode 100644
--- a/doc/forum/Make_whereis_output_more_compact.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Hi there,
-
-first of all, great job done on annex! I think I finally found what I was looking for to organize all my data.
-
-My question: when I do git annex whereis Music, I get a detailed list of every single song and its remote locations. I have tens of thousands of songs, so just typing git annex whereis Music gives me way too much information. 
-Here is my proposition: in my case, every file of the Music folder resides in the same remote. So, wouldn't it be better to show just one line of output telling me that Music is on remote bla and blub, and then I know that all files in Music are in remotes bla and blub?
-
-Is that possible now already or would that be a feature request? What do you think?
-
-Cheers,
-Moritz.
-
-PS: I know that I can specify filters, e.g. git annex whereis --in bla --and --not --in blub. That is great!
diff --git a/doc/forum/Making_Firefox_not_dereference_symlinks_on_open.mdwn b/doc/forum/Making_Firefox_not_dereference_symlinks_on_open.mdwn
deleted file mode 100644
--- a/doc/forum/Making_Firefox_not_dereference_symlinks_on_open.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Firefox has the nasty habit that it will force-dereference symlinks when locally opening files (i. e., opening an annexed document will cause it to be opened in .git/annex/objects/…). Since this will break relative links within HTML files, this would make Firefox pretty useless when working with a git annex containing HTML files. (Apparently this behavior is [desired](https://bugzilla.mozilla.org/show_bug.cgi?id=803999) upstream and might not be fixed.)
-
-Seems I’m not the only one who would like to work with annexed HTML files, though. On the [Debian bugtracker](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=691099), another user shared a handy shim which can be used in LD_PRELOAD and which will force Firefox to open symlinks in-place. Thought I’d share this here in case it’s of use to anyone.
diff --git a/doc/forum/Making_a_git-annexy_symlink___34__known__34____63__.mdwn b/doc/forum/Making_a_git-annexy_symlink___34__known__34____63__.mdwn
deleted file mode 100644
--- a/doc/forum/Making_a_git-annexy_symlink___34__known__34____63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Currently, if you git-add a symlink copied from another git-annex, git-annex will 'fix' it so it points to where the files would be in its new annex object store, but doesn't create the corresponding file for the key on the git-annex branch, so git-annex doesn't actually "know" about the file.
-
-This means running *git annex reinject --known* won't reinject the content for the symlink (e.g. "Not known content; skipping").
-
-I tried running git-annex-fsck hoping it would create the file (with the information that 0 copies exist) but it doesn't do that..?
-
-Any advice on how to go about resolving this? Preferably a "lightweight" way as this repository has a lot of such transplanted symlinks.. :)
diff --git a/doc/forum/Making_git-annex_a_self-funded_project__63__.mdwn b/doc/forum/Making_git-annex_a_self-funded_project__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Making_git-annex_a_self-funded_project__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-With the fundraiser having met its stretch goal of $15,000, I was thinking of how to keep git-annex going beyond another year.  What about selling stuff?  Not just merch (though being able to buy stickers would be neat), but useful things that would complement the software, like selling hardware for a small remote that you could plug into your home network, or even set up at a friend's house to have online, but offsite.
-
-
-Something like a CubieBoard2 and an HDD for annexes preloaded with all the necessary software and a git-annex apt repo for keeping it updated.  Everything would come in a nice little enclosure with a git-annex logo on it; you plug in the power, the ethernet, and boom it's ready to go, with no terminal magic (but it's there if you want it!).  You could create them on-demand without having to keep much of a stock (except maybe the enclosure), so there's practically no risk.
-
-
-
-Aesthetically, I was thinking of something that exposed as little of the insides as possible.  Basically just power, ethernet, and USB ports.
-
-Maybe material for another Kickstarter?
diff --git a/doc/forum/Making_git-annex_less_necessary.mdwn b/doc/forum/Making_git-annex_less_necessary.mdwn
deleted file mode 100644
--- a/doc/forum/Making_git-annex_less_necessary.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-http://git-annex.branchable.com/walkthrough/ says "Git wants to first stage the entire contents of the file in its index. That can be slow for big files (sorta why git-annex exists in the first place)."<br/>
-What is git doing that git-annex isn't, other than copying the file to .git/objects rather than just moving it to .git/annex/objects, prepending it with "blob"+length, and compressing it? If git were changed to store the "blob"+length as part of the object filename rather than as part of the object file content, have a config option to use uncompressed objects for large files (and not try to pack them when creating pack files), and were used on a filesystem such as zfs or btrfs which does COW so the copy would be as fast as a move, then what speed advantage would git-annex still have over git? I realize git-annex has more features than just big file handling, and has the worm backend for even faster handling, but I'm just talking about the case with the default sha backend.<br/>
-Have such changes been proposed for git? It seems that for anybody already familiar with the git codebase, adding the config option for uncompressed objects and moving the storage location for "blob"+length would be easy changes to make, and I see no downside to them. It wouldn't break backwards compatibility because the object filename being hash."blob".length rather than just hash would indicate that the new object format is in use, and a ".raw" filename extension could be used for uncompressed objects (or more sensibly, in the new format, no additional extension for uncompressed, and ".compressed" for compressed).<br/>
-This would also eliminate the need for a git-annex object store separate from the git object store, and the complexities involved with having them separate, and the need for symlinks, and the complexities they cause. I don't think that relying on COW for speed is unreasonable once btrfs becomes the default in major Linux distros (the bsds already have zfs and hammerfs); right now part of what git-annex is doing is just working around the functional deficiency of non-COW filesystems.<br/>
-P.S. I recommend a "plain" option for the page type when submitting comments on your wiki, so I don't have to put HTML line break markup at the end of my lines.
diff --git a/doc/forum/Managing_multiple_annexes_with_assistant__63__.mdwn b/doc/forum/Managing_multiple_annexes_with_assistant__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Managing_multiple_annexes_with_assistant__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Is it possible to run more than one instance of the assistant in an account?
-
-A particular example is that I might have two annexes:
-
-1. for my music, and
-2. for some personal documents.
-
-I would like to have my music annex paired with my work laptop and have all the automagical power of git-annex-assistant working for me.  However I don't want to put my personal documents on a work machine, hence the second annex.
-
-(I think) An ideal world would have the assistant managing both annexes.  Is this possible?
-
-
-I know my question is similar to [one annex versus many annexes?](http://git-annex.branchable.com/forum/one_annex_versus_many_annexes__63__/) but I think it is different enough to warrant a new thread...
diff --git a/doc/forum/Managing_multiple_repositories_concurrently__63__.mdwn b/doc/forum/Managing_multiple_repositories_concurrently__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Managing_multiple_repositories_concurrently__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I have the webapp setup to manage 4 different repositories.
-
-One repository had many gigabytes to upload to a remote. As this was moving along, I wanted to check on the status of one of the other repositories. I knew that this second repository had a lot of data to download. When I switched to the second repo in the webapp, I noticed in my network monitor that the amount of upstream bandwidth I was using dropped and the amount of downstream bandwidth increased. I switched back to the first repo, and my downstream bandwidth dropped and the upstream bandwidth increased.
-
-It looks like git-annex stopped uploading data from the first repo when I switched to the second, and stopped downloading data to the second repo when I switched to the first. Is this correct? I was under the impression that switching repositories in the webapp simply changed the view that I was looking at, but that the assistant would still be managing all the repositories I had setup -- uploading/downloading/syncing concurrently.
diff --git a/doc/forum/Manipulate_a_git-annex_repo_from_an_Android_app.mdwn b/doc/forum/Manipulate_a_git-annex_repo_from_an_Android_app.mdwn
deleted file mode 100644
--- a/doc/forum/Manipulate_a_git-annex_repo_from_an_Android_app.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-I use the command line almost every hour, I'm familiar with it. But it's a pita on the phone.
-
-I'd like to create an "graphical" Android application that lists/browses the repo's content and allows the user to manipulate the files/directories.
-
-git-annex for Android (5.0) is installed and working fine. I was messing around (on my rooted phone) with the rwx permissions to run the git-annex binary from my app as it's a different user and has no access to those binaries by default. But no success yet: 
-
-```
-shell@jfltexx:/storage/sdcard1/repo $ /data/data/ga.androidterm/lib/lib.git-annex.so list
-
-lib.git-annex.so: git: createProcess: runInteractiveProcess: exec: permission denied (Permission denied)
-```
-
-Question 1: How should I set up the permissions to be able to successfully run any git-annex command from my (non-commercial, private) Android app?
-
-Question 2: What if I include all the git-annex binaries in my app as a resource and write them to disk after install and execute them? (Permissions should work.)
-
-
-Use case: family videos are stored in a repo at home. This repo is cloned to my phone's sdcard. I want to browse the repo on my phone and mark some directories to be transferred from home to phone. My app would be a simple frontend for git-annex where you can browse and do some basic stuff: get, drop, manipulate metadata (and of course start playing a video).
-
-Thank you for any ideas,
-Bence
diff --git a/doc/forum/Manual_Setup_of_a_Central_Repo.mdwn b/doc/forum/Manual_Setup_of_a_Central_Repo.mdwn
deleted file mode 100644
--- a/doc/forum/Manual_Setup_of_a_Central_Repo.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-My current setup involves 3 computers, one desktop one laptop and a vps. In my current setup I have created annex repos on the server and cloned from it, both machines sync to the server. All three use non base repos. Now I have another annex folder on the desktop that I would like to sync between the three. Both machines are behind NAT so server can not communicate with the machines. In order to init the repo on the vps, I was thinking of setting up a temporary VPN/port forward between the desktop and the VPS then clone from the desktop finally remove the remote section in .git/config on the server so VPS becomes the master again. First of all is there an easier way to do this? if not is it safe to do this? or is it going to cause problems down the line.
diff --git a/doc/forum/Manual_commit_message_in_direct_mode.mdwn b/doc/forum/Manual_commit_message_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Manual_commit_message_in_direct_mode.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I am just returning to git-annex after some time. The last time I was using it, the [[/todo/direct_mode_guard]] was not yet in place, and I could supply my own commit messages even in a direct mode repository using `git commit`. Now that the guard is in place, is there a built-in way to provide a commit message that will be used instead of "git-annex automatic sync" by `git annex sync`? 
-
-I have tried doing a manual commit with `git --git-dir=/path/to/local/.git --work-tree=/path/to/local -c core.bare=false commit -m 'Manual Commit Message'`, and it seems to work. Does this do the same thing as the part of `git annex sync` that commits any outstanding changes before syncing with remotes?
diff --git a/doc/forum/Manual_mode_option_in_assistant_auto-syncs.mdwn b/doc/forum/Manual_mode_option_in_assistant_auto-syncs.mdwn
deleted file mode 100644
--- a/doc/forum/Manual_mode_option_in_assistant_auto-syncs.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hi,
-
-I've recently set-up a server which uses Southpaw's Tactic DAM system and I've initialised a git-annex directory using the assistant which will manage any files which Tactic puts into the git-annex. I plan to make some remote repositories to Amazon S3, friends and some local machines on my home network. The server is running Ubuntu 64-bit and so I've written an upstart job which runs 'git-annex assistant --autostart' as the user 'git-annex' as this user doesn't log-in and run the xdg autostart .desktop at all.
-
-I saw that you can set the purpose of each repository which it will sync to and noticed 'Manual Mode.' From the description, it seems it will only work if I do explicit git-annex commands to it which would be perfect for me as I'd like to write tools which run git-annex add/get/drop/etc. manually on some remotes like ones to friends as I don't want them to sync to everything or any files that they produce, only files which they request with a special tool that I'll write and have Tactic marshal the file changes/names/etc.
-
-I've set those remotes to manual-mode via the assistant and tried copying a file to the remote's directory, but it auto-synced the file anyway. Maybe I'm getting confused at how manual mode works but I'd like to only explicitly set which files to add to the repo by a command and not just 'any' file which gets placed into that directory. If this is more of a wishlist request I guess just move this post into there and I'll reword it as a wish request.
-
-I don't need to use the assistant if that makes more sense, but I would like to be able to still monitor things as the webapp makes for a great GUI to check for that stuff. I can't wait for the https version  of webapp too, I currently run git-annex webapp --listen=<ip>:<port> and then run the link it outputs on my desktop machine to manage it from the server.
-
-Thanks, and this is such a great bit of software, especially as my Internet connection is really bad for 2013 standards, and having the option for friends/remote servers to sync up via an encrypted S3 or box.com account is great!
diff --git a/doc/forum/Manual_webapp_behaviour_on_ARM.mdwn b/doc/forum/Manual_webapp_behaviour_on_ARM.mdwn
deleted file mode 100644
--- a/doc/forum/Manual_webapp_behaviour_on_ARM.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Hello,
-
-I have a Samsung ARM Chromebook running Ubuntu with crouton (chroot in chromeos). I want to use git-annex, and add the chromebook as a second "device" to my already set up git-annex repo on my main pc. That repo is one folder set up with the assistant, and it has one encrypted ssh(rsync) remote.
-
-I've read that the webapp is not available on ARM, and I've also found a topic with a simple script to replicate git-annex-assistant steps: http://git-annex.branchable.com/forum/Running_assistant_steps_manually/. So, I've used the `cabal` steps to install git-annex manually, which is working.
-
-I want to use git-annex in a dropbox-like fashion, folder and file sync between these two devices (and maybe later on another encrypted ssh remote). However I'm in need of some guidance regarding the command line usage and such.
-
-My questions are:
-
-- How do I "add" the chromebook repo to the existing git-annex setup?
-- The machines are not on at the same time. One is my main workstation and the chromebook is my "mobile friend". The encrypted ssh remote is on a VPS, that is always on.
-  - How do I configure the syncing between the main machine, the chromebook and the encrypted ssh remote on the vps? If possible, bi-directional.
-
-If it is possible, both explanation and command line examples would help a lot. 
diff --git a/doc/forum/Massive_drop_in_performance_with_--jobs_option.mdwn b/doc/forum/Massive_drop_in_performance_with_--jobs_option.mdwn
deleted file mode 100644
--- a/doc/forum/Massive_drop_in_performance_with_--jobs_option.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Old version:  5.20150916-1
-New version:  5.20151208-1
-
-
-I have noticed that with the addition of the progress display, the actual overall performance of the transfer drop very noticeably from these two versions.  I am very tempted to keep the old version around to just handle the transfers.
-
-Also, I decided to build a newer version from git, using debuild.  I noticed that the libghc-persistant dependencies have no trailing commas.  I added the commas, built the package and had two errors in one of the tests.  I removed these dependencies from the control file and I am currently performing a rebuild (they were not present in 12/08 version).
-
-Build complete.  Tests passed.  Parallel transfers seem to be back up to speed.  Thanks!
diff --git a/doc/forum/MegaAnnex_not_working.mdwn b/doc/forum/MegaAnnex_not_working.mdwn
deleted file mode 100644
--- a/doc/forum/MegaAnnex_not_working.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-When copying to a megaannex remote, it hangs after a while, and I get this:
-
-    copy Boomarks/Android (gpg) Traceback (most recent call last):
-      File "/usr/local/bin//git-annex-remote-mega", line 511, in <module>
-        common.startRemote()
-      File "/home/zack/megaannex/lib/CommonFunctions.py", line 557, in startRemote
-        sys.modules["__main__"].checkpresent(line)
-      File "/usr/local/bin//git-annex-remote-mega", line 483, in checkpresent
-        folder = setFolder(conf["folder"], common.ask("DIRHASH " + line[1]))
-      File "/usr/local/bin//git-annex-remote-mega", line 401, in setFolder
-        folder = createFolder(conf["folder"], 2)
-      File "/usr/local/bin//git-annex-remote-mega", line 378, in createFolder
-        res = m.create_folder(subject, folder)
-      File "/usr/lib/python2.7/site-packages/mega/mega.py", line 617, in create_folder
-        'i': self.request_id})
-      File "/usr/lib/python2.7/site-packages/mega/mega.py", line 110, in _api_request
-        timeout=self.timeout)
-      File "/usr/lib/python2.7/site-packages/requests/api.py", line 88, in post
-        return request('post', url, data=data, **kwargs)
-      File "/usr/lib/python2.7/site-packages/requests/api.py", line 44, in request
-        return session.request(method=method, url=url, **kwargs)
-      File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 354, in request
-        resp = self.send(prep, **send_kwargs)
-      File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 460, in send
-        r = adapter.send(request, **kwargs)
-      File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 250, in send
-        raise SSLError(e)
-    requests.exceptions.SSLError: The read operation timed out
-    (external special remote protocol error, unexpectedly received "" (unable to parse command)) failed
-
-
-Any help would be appreciated, thanks!
diff --git a/doc/forum/Missing_git-annex.linux__47__runshell.mdwn b/doc/forum/Missing_git-annex.linux__47__runshell.mdwn
deleted file mode 100644
--- a/doc/forum/Missing_git-annex.linux__47__runshell.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-Hi,
-
-I've said up two clients to sync locally as well as over ssh-rsync.
-
-However, locally one client is complaining about missing `runshell` at a location where `git annex` is not installed.  The log is below.  On the assistent overview it just says "unfinished repository".  Note that I am able to ssh into the other machine and from the other machine I'm also able to ssh into this machine.
-
-
-I'm using the latest prebuild binary package (git-annex-bin at Archlinux AUR).  So my `git annex` setup contains 
-
-    $> pacman -Ql git-annex-bin 
-    git-annex-bin /usr/
-    git-annex-bin /usr/bin/
-    git-annex-bin /usr/bin/git-annex
-    git-annex-bin /usr/bin/git-annex-shell
-
-    $> pacman -Qi git-annex-bin # with chops
-    Name           : git-annex-bin
-    Version        : 4.20130909-1
-    Description    : Precompiled version of git-annex, webapp and assistant
-    included.
-    Architecture   : x86_64
-
-Here is a log of one event where it fails to transfer.  
-
-    [2013-09-28 18:06:38 CEST] TransferScanner: queued Upload NoUUID config/emacs.d/ac-l-dict/amsmath-c-a-* Nothing : expensive scan found missing object
-    [2013-09-28 18:06:38 CEST] Transferrer: Transferring: Upload NoUUID config/dotfiles/stardict/dic/stardict-oxford-2.4.2/oxford.ifo Nothing
-    [2013-09-28 18:06:38 CEST] call: git-annex ["transferkeys","--readfd","96","--writefd","94"]
-    [2013-09-28 18:06:38 CEST] read: git ["--git-dir=/home/rasmus/annex/.git","--work-tree=/home/rasmus/annex","show-ref","git-annex"]
-    [2013-09-28 18:06:38 CEST] read: git ["--git-dir=/home/rasmus/annex/.git","--work-tree=/home/rasmus/annex","show-ref","--hash","refs/heads/git-annex"]
-    [2013-09-28 18:06:38 CEST] read: git ["--git-dir=/home/rasmus/annex/.git","--work-tree=/home/rasmus/annex[","log2","0r1e3f-s/0h9e-ad2s8/ g1i8t-annex..90df78a0910a6f2998655e6:06:38 CEST] 127.0.0.1 GET /transfers/NotificationId%201 Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 Aurora/26.0a2
-    ea47d478ea0589b54","--oneline","-n1"]
-    [2013-09-28 18:06:38 CEST] read: git ["--git-dir=/home/rasmus/annex/.git","--work-tree=/home/rasmus/annex","log","refs/heads/git-annex..5f6870ed24e5ded1764765bbfef2b85aff046569","--oneline","-n1"]
-    [2013-09-28 18:06:38 CEST] chat: git ["--git-dir=/home/rasmus/annex/.git","--work-tree=/home/rasmus/annex","cat-file","--batch"]
-    [2013-09-28 18:06:38 CEST] read: ssh ["-S","/home/rasmus/annex/.git/annex/ssh/00b8ef4cb08290718ba625d9bd86ca0b","-o","ControlMaster=auto","-o","ControlPersist=yes","-T","rasmus@git-annex-192.168.1.107-rasmus_annex","git-annex-shell 'configlist' '/~/annex/'"]
-    /home/rasmus/.ssh/git-annex-shell: line 4: /opt/git-annex.linux/runshell: No such file or directory
-    [2013-09-28 18:06:38 CEST] call: git ["--git-dir=/home/rasmus/annex/.git","--work-tree=/home/rasmus/annex","fetch","--quiet","192.168.1.107_annex"]
-    [2013-09-28 18:06:38 CEST] 127.0.0.1 GET /transfers/NotificationId%201 Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 Aurora/26.0a2
-    [2013-09-28 18:06:38 CEST] 127.0.0.1 GET /log Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 Aurora/26.0a2
-    /home/rasmus/.ssh/git-annex-shell: line 4: /opt/git-annex.linux/runshell: No such file or directory
-    fatal: Could not read from remote repository.
-
-    Please make sure you have the correct access rights
-    and the repository exists.
-    git-annex: Unknown UUID
diff --git a/doc/forum/Modus_operandi_for_local_full_backup.mdwn b/doc/forum/Modus_operandi_for_local_full_backup.mdwn
deleted file mode 100644
--- a/doc/forum/Modus_operandi_for_local_full_backup.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Hello, 
-I've been for several hours soaking up on git annex and I don't see how to efficiently achieve the following. Your thoughts welcome.
-
-Let's say I have a computer with a main disk and a backup disk. I currently use rsnapshot to rsync from main to backup and take periodic snapshots. Once the backup disk is filled up I archive it and I start with a fresh one.
-
-This is neat but for the lack of intelligent history. I'm contemplating moving to a VCS solution so changes through time can be tracked more easily.
-
-Let's say I want to move to git-annex as a way of keeping history, maybe even across backup disks. The common part would be to rsync from main to backup and then commit. I see the following showstoppers:
-
-1) If I put the backup repo in direct mode, past versions of files are lost since they never enter either plain git nor annex control.
-
-2) If I put the backup repo in indirect mode, rsync destroys all soft links resulting in unnecessary copying over. It also seems to cause further breakage when a regular file appears where there was a symlink. I know no rsync option to sync through links to the target files (rsync -K only works for folders).
-
-3) I could put the repo in direct mode, rsync, commit, put in indirect to save versions, and repeat at every backup. Seems kinda inefficient, there are hundreds of gigas in files.
-
-4) I can't have the main disk under annex and use the back disk as a remote because the main disk contains many git repos (whose history I don't mind losing with rsync -C, or I wouldn't consider git-annex for backup at all). Also I'm not partial to populate the main disk with something only related to backup.
-
-If rsync -K worked with files there would be no problem. I'm missing the right flag here? Or something else that can be done on the git-annex side?
-
-Thanks in advance.
diff --git a/doc/forum/Move_files_in_git_annex___40__direct_mode__41__.mdwn b/doc/forum/Move_files_in_git_annex___40__direct_mode__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Move_files_in_git_annex___40__direct_mode__41__.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Hi guys, I have a git annex repo under `/path`.
-
-I ran:
-
-```
-cd /path/subdir2
-mv ../subdir1/stuff* .
-git annex add
-git annex sync
-```
-
-Then I went to another repo (clone of the first) and did:
-
-```
-cd /paht1
-git annex sync
-git annex get .
-```
-
-Now I got the stuff from under `subdir2` in my second repo, just that the same stuff is also still under `subdir1` - how do I make git-annex aware of this change?
-
-Also, someone suggested running `git annex watch`
diff --git a/doc/forum/Move_unsynced_file_in_direct_mode.mdwn b/doc/forum/Move_unsynced_file_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Move_unsynced_file_in_direct_mode.mdwn
+++ /dev/null
@@ -1,97 +0,0 @@
-When I rename unsynced files in a direct mode repo, the original symlink gets removed from git, but the new symlink doesn't get added back by autocommit or by explicitly using `git annex add`.
-
-First, I create a file in a git-annex repo:
-
-        $ mkdir annex1
-        $ cd annex1
-        $ git init
-        Initialized empty Git repository in /home/cwarden/annex1/.git/
-        $ git annex init
-        init  ok
-        (Recording state in git...)
-        $ echo test > test1
-        $ git annex add test1
-        add test1 ok
-        (Recording state in git...)
-        $ git annex sync
-        commit  ok
-        $ ls -l
-        total 4
-        lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test1 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
-        $ cat test1
-        test
-
-Now, I clone the repo and enable autocommit and direct mode in the second repo:
-
-        $ cd ..
-        $ git clone annex1 annex2
-        Cloning into 'annex2'...
-        done.
-        $ cd annex2
-        $ git config annex.autocommit true
-        $ git annex direct
-        commit
-        On branch master
-        Your branch is up-to-date with 'origin/master'.
-
-        nothing to commit, working directory clean
-        ok
-        direct  ok
-
-I drop the file, then rename it:
-
-        $ git annex drop test1
-        (merging origin/git-annex into git-annex...)
-        (Recording state in git...)
-        $ mv test1 test2
-        $ ls -l
-        total 4
-        lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test2 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
-        $ git annex sync
-        commit  (Recording state in git...)
-        ok
-        pull origin
-        ok
-        push origin
-        Counting objects: 6, done.
-        Delta compression using up to 4 threads.
-        Compressing objects: 100% (5/5), done.
-        Writing objects: 100% (6/6), 674 bytes | 0 bytes/s, done.
-        Total 6 (delta 1), reused 0 (delta 0)
-        To /home/cwarden/annex1
-                2772756..ffcb7a1  annex/direct/master -> synced/master
-         * [new branch]      git-annex -> synced/git-annex
-        ok
-        (Recording state in git...)
-
-Now, I want to get the renamed file:
-
-        $ git annex get test2
-        $ ls -l
-        total 4
-        lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test2 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
-        $ cat test2
-        cat: test2: No such file or directory
-
-Explicitly adding test2 doesn't work:
-
-        $ git annex add test2
-        $ git annex get test2
-        $ cat test2
-        cat: test2: No such file or directory
-
-`git annex fsck` doesn't help:
-
-        $ git annex fsck
-        $ cat test2
-        cat: test2: No such file or directory
-
-The only way I've found to get the renamed file back into git is to use `core.bare=false`, but the [documentation](http://git-annex.branchable.com/direct_mode/) says that "there should be no good reason to need to do this, ever".
-
-        $ git -c core.bare=false add test2
-        $ git -c core.bare=false commit -m'force renamed file back into git'
-        $ git annex get test2
-        $ cat test2
-        test
-
-Is there a better solution?
diff --git a/doc/forum/Moving_large_files_within_the_repo_without_copying___63__.mdwn b/doc/forum/Moving_large_files_within_the_repo_without_copying___63__.mdwn
deleted file mode 100644
--- a/doc/forum/Moving_large_files_within_the_repo_without_copying___63__.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Is there a way to move a large file without "git annex unlock"ing it (Which takes very long for copying and then rehashing the file)?
-Using a simple "mv" or "git mv" results in broken symlinks, if the target directory is on a different hierarchy level:
-
-Example:
-
-Initial State:
-
-    $ ls -Hl Pictures:
-    Pictures/showImages.jpg -> ../.git/annex/objects/90/32/SHA1-s8737--a8bfb285d0ae394cb75c86f1eb9f703fb678a51e/SHA1-s8737--a8bfb285d0ae394cb
-
-Move: 
-
-    $ mv Pictures/showImages.jpg .
-
-Result: 
-
-    $ ls -H showImages.jpg
-    ls: cannot access showImages.jpg: No such file or directory
-    
diff --git a/doc/forum/Multiple_machine_remotes_on_external_drive.mdwn b/doc/forum/Multiple_machine_remotes_on_external_drive.mdwn
deleted file mode 100644
--- a/doc/forum/Multiple_machine_remotes_on_external_drive.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I have a question about remotes behavior on external drives.
-
-Say I have two machines A and B each with a git annex repository at `~/repo`, and an external drive C with the same repository at `/repo`.
-
-I can add C remotes for A and B at, for example, `/media/hdd/repo`, but I'm not certain how it works for C.
-
-Do I stick C into A and add a remote A at path `~/repo`, then stick C into B and add a remote B with the same path `~/repo`?  Does git annex handle this sanely?
diff --git a/doc/forum/Multiple_remotes_with_the_same_path.mdwn b/doc/forum/Multiple_remotes_with_the_same_path.mdwn
deleted file mode 100644
--- a/doc/forum/Multiple_remotes_with_the_same_path.mdwn
+++ /dev/null
@@ -1,67 +0,0 @@
-This is a followup to <https://git-annex.branchable.com/forum/basic_usage_questions/> – I'm actually testing the "two repos at same URL" situation now, with git-annex 6.20160211 and 6.20160221.
-
-So I have a git-annex repo on two hosts at `rain:~/Attic/Software`, `frost:~/Attic/Software`, and a third clone at `/mnt/portable_HD/Attic/Software`. This means that the repo on the portable HD has two remotes with identical paths, but corresponding to different repositories:
-
-    rain    /home/grawity/Attic/Software
-    frost   /home/grawity/Attic/Software
-
-[I was told earlier](/forum/basic_usage_questions) that this configuration would work fine and git-annex would not get confused. However, that doesn't seem to be the case (unless I misunderstood what it considers to be the "right thing"?) I see that whenever I run a command like `git annex info` on the portable\_HD repo, it overrides `remote.{rain,frost}.annex-uuid` with whatever UUID it sees right now – resulting in `git annex info` output such as:
-
-    ┌ frost /run/media/grawity/vol4_grimoire/Attic/Software master
-    ┘ git config -l | grep annex-uuid
-    remote.origin.annex-uuid=0ebc2083-f95e-4637-bd3e-09db8471daf3
-    remote.rain.annex-uuid=3e342a37-6c35-40e5-99a1-1f140e6c363d    <--
-    remote.frost.annex-uuid=524b8690-9b3e-48d4-b1a8-c0edb35c1ccf   <--
-    remote.fs1.annex-uuid=ed83c81c-1a95-4acb-b76c-b6724fe88873
-    
-    ┌ frost /run/media/grawity/vol4_grimoire/Attic/Software master
-    ┘ git annex info --fast --verbose --debug
-    repository mode: indirect
-    trusted repositories: [2016-02-29 08:09:29.284136] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","git-annex"]
-    [2016-02-29 08:09:29.286872] process done ExitSuccess
-    [2016-02-29 08:09:29.286954] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
-    [2016-02-29 08:09:29.289167] process done ExitSuccess
-    [2016-02-29 08:09:29.289316] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..fc873fc472a8c5d0db3c91a3868d9adc072f7076","-n1","--pretty=%H"]
-    [2016-02-29 08:09:29.291836] process done ExitSuccess
-    [2016-02-29 08:09:29.291941] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..23c27db2f2a02515ba39e7d0bb8653fa786b6aea","-n1","--pretty=%H"]
-    [2016-02-29 08:09:29.294762] process done ExitSuccess
-    [2016-02-29 08:09:29.294869] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..690a90da7fc28be67d5053c0a6c3050cca614eaa","-n1","--pretty=%H"]
-    [2016-02-29 08:09:29.301018] process done ExitSuccess
-    [2016-02-29 08:09:29.30112] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..94375fb892d1c9f5b70bdd5917c85c5c18a13168","-n1","--pretty=%H"]
-    [2016-02-29 08:09:29.3031] process done ExitSuccess
-    [2016-02-29 08:09:29.303182] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","log","refs/heads/git-annex..4a7f17e644e86776b510606beb6f3cb3819d8256","-n1","--pretty=%H"]
-    [2016-02-29 08:09:29.304916] process done ExitSuccess
-    [2016-02-29 08:09:29.305455] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch"]
-    [2016-02-29 08:09:29.308946] read: git ["config","--null","--list"]
-    [2016-02-29 08:09:29.312347] process done ExitSuccess
-    [2016-02-29 08:09:29.312939] read: git ["config","--null","--list"]
-    [2016-02-29 08:09:29.3179] process done ExitSuccess
-    [2016-02-29 08:09:29.318494] call: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","config","remote.rain.annex-uuid","524b8690-9b3e-48d4-b1a8-c0edb35c1ccf"]
-    [2016-02-29 08:09:29.320648] process done ExitSuccess
-    [2016-02-29 08:09:29.320735] read: git ["config","--null","--list"]
-    [2016-02-29 08:09:29.327697] process done ExitSuccess
-    0
-    semitrusted repositories: 9
-    	00000000-0000-0000-0000-000000000001 -- web
-     	00000000-0000-0000-0000-000000000002 -- bittorrent
-     	0ebc2083-f95e-4637-bd3e-09db8471daf3 -- origin
-     	3e14eb23-1b16-4b52-8798-56efb550ab00 -- [vol4_grimoire]:/Attic/Software [here]
-     	3e342a37-6c35-40e5-99a1-1f140e6c363d -- grawity@rain:~/Attic/Software              <--
-     	524b8690-9b3e-48d4-b1a8-c0edb35c1ccf -- grawity@frost:~/Downloads/Software [rain]  <--
-     	b9c0c485-07e5-4166-b5ac-ba971faab98a -- [vol3_tombstone]:/Attic/Software
-     	c3c6dd39-ebc7-475a-9992-f99ca01a7f3a -- grawity@wolke:~/Attic/Software
-     	ed83c81c-1a95-4acb-b76c-b6724fe88873 -- fs1:/Attic/Software [fs1]
-    untrusted repositories: 0
-    transfers in progress: none
-    available local disk space: 920.96 gigabytes (+1 megabyte reserved)
-    
-    ┌ frost /run/media/grawity/vol4_grimoire/Attic/Software master
-    ┘ git config -l | grep annex-uuid
-    remote.origin.annex-uuid=0ebc2083-f95e-4637-bd3e-09db8471daf3
-    remote.rain.annex-uuid=524b8690-9b3e-48d4-b1a8-c0edb35c1ccf    <--
-    remote.frost.annex-uuid=524b8690-9b3e-48d4-b1a8-c0edb35c1ccf   <--
-    remote.fs1.annex-uuid=ed83c81c-1a95-4acb-b76c-b6724fe88873
-
-Notice how the `[rain]` remote tag now shows up next to the wrong remote. Among other things, **this means I cannot use `git annex find --in frost --not --in rain`** and similar commands (unless I specify all the UUIDs by hand). And even though I trust git-annex to not lose any data, this behavior is a bit confusing.
-
-Is it possible that git-annex could detect such situations and avoid updating an UUID if it's _already attached_ to another remote?
diff --git a/doc/forum/Multiple_repos_on_same_path.mdwn b/doc/forum/Multiple_repos_on_same_path.mdwn
deleted file mode 100644
--- a/doc/forum/Multiple_repos_on_same_path.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-I want to use git-annex to manage some data which I keep at, say, /home/my_user/data .
-I have multiple external storage devices for this repo, such as /run/media/my_user/data1 e
-
-BUT, I also have multiple machines, e.g. my desktop and my laptop. 
-These all have the data under /home/my_user/data, as I like to keep my paths consistent. 
-So, when I connect my external media to these machines, practically they see the same repo path, though these are different repos.
-
-1. Should I try to create multiple repos with the same path, or should I just add one
-
-2. Can I expect any major issues from this set-up?
-
-  
diff --git a/doc/forum/Multisession_compatible__63__.mdwn b/doc/forum/Multisession_compatible__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Multisession_compatible__63__.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Thanks for the great tool!
-
-Is git-annex multisession compatible? I'm assuming that an "add" for example, will switch to the git-annex branch, commit data, and switch back to the previous branch. Is this protected by a Lock of some sort so that if two separate processes are interacting with the same repo/annex simultaneously there won't be any corruption?
-
-If not, is this something I could add within my python class that is implementing the interface to the Annex?
-
-Thanks,
-Mark
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
deleted file mode 100644
--- a/doc/forum/NTFS_usb_on_linux_unable_to_connect_to_ssh_remote.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-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!
diff --git a/doc/forum/Need_new_build_instructions_for_Debian_stable.mdwn b/doc/forum/Need_new_build_instructions_for_Debian_stable.mdwn
deleted file mode 100644
--- a/doc/forum/Need_new_build_instructions_for_Debian_stable.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-The instructions for building git-annex on [[install/Debian]] stable don't seem to be valid anymore.
-
-1. `dpkg-checkbuilddeps` is looking for the wrong packages, e.g. libghc-missingh-dev instead of libghc6-missingh-dev.
-
-2. Not all dependencies are available in the Squeeze repositories anymore (at least not Crypto and hS3), if I am not mistaken.
diff --git a/doc/forum/Need_some_help_installing_on_freeBSD.mdwn b/doc/forum/Need_some_help_installing_on_freeBSD.mdwn
deleted file mode 100644
--- a/doc/forum/Need_some_help_installing_on_freeBSD.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-Hi there,
-
-**I'm trying to install git-annex on my NAS which is freeNAS running freeBSD. 
-I've created a jail for it and installed via: pkg install hs-git-annex**
-
-I've seen on this page: http://www.freshports.org/devel/hs-git-annex/ that there are Configuration Options. 
-I assume to use those I'd have to have compiled it myself from the ports like this: 
-To install the port: cd /usr/ports/devel/hs-git-annex/ && make install clean
-
-So in this case of using the pkg, how can I check the way git-annex was compiled? 
-Anyone else ever used it on freeBSD and can give some input please? 
-
-**Figured out how to see this info:**
-
-git-annex version
-git-annex version: 5.20150727
-build flags: Assistant Webapp Webapp-secure Pairing S3 WebDAV Kqueue XMPP DNS Feeds Quvi TDFA Database
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-
-**So apparently box.com isn't supported in this build?**
-
-I installed via a web terminal, not via a normal ssh connection so when I came back the installation with all dependencies was finished but I couldn't scroll back to see all warning, only caught this last part of the screen; anyone got any idea if git-annex is supposed to run fine on FreeBSD 9.3-RELEASE-p26 amd64? 
-
-**part of the text I caught:**
-  IN_CLOSE_WRITE                                                               
-                                                                                
-Symbolic Link notifications:                                                    
-   IN_DONT_FOLLOW                                                               
-   IN_ATTRIB                                                                    
-   IN_MOVE_SELF                                                                 
-   IN_DELETE_SELF                                                               
-                                                                                
-Kernel patches to address the missing directory and symbolic link               
-notifications are available from:                                               
-                                                                                
-https://github.com/dmatveev/libinotify-kqueue/tree/master/patches               
-                                                                                
-=============================================================================   
-You might want to consider increasing the kern.maxfiles tunable if you plan     
-to use this library for applications that need to monitor activity of a lot     
-of files.                                                                       
-                                                                                
-If the default on your system is too low, add the following line to             
-/boot/loader.conf, then reboot the system:                                      
-                                                                                
-    kern.maxfiles="25000"                                                       
-============================================================================= 
diff --git a/doc/forum/Need_some_help_to_fix_my_repository.mdwn b/doc/forum/Need_some_help_to_fix_my_repository.mdwn
deleted file mode 100644
--- a/doc/forum/Need_some_help_to_fix_my_repository.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Hi, 
-first sorry for my poor english it's not my native language.
-
-I have one repository on my laptop and two repository on usb disk. Made with following  walkthrough (creating a repository and adding a remote).
-
-Yesterday I have a backup of my repository on usb disk before add some file with
-
-cd /media/usb/annex;git fetch laptop; git merge laptop/master&&git annex get .&&git annex sync
-
-Now the repository on my usb disk is a mess.
-Every file before the commit are lost. 
-For example : 
- After the sync : file Z.7z 
-Z.7z: broken symbolic link to `../../../../.git/annex/objects/2K/49/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
-
-The file ../../../../.git/annex/objects/2K/49/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 doesn't exist.
-
-On the repository before the sync (inside the Backup) :
-file Z.7z 
-Z.7z: symbolic link to `../../../../.git/annex/objects/J1/f4/SHA256-s696365035--d2dcc67bf2f05fcfc7f42723b2d415d4f057a2eeadc282b40f5bc3724534f2f4/SHA256-s696365035--d2dcc67bf2f05fcfc7f42723b2d415d4f057a2eeadc282b40f5bc3724534f2f4'
-
-The file ../../../../.git/annex/objects/J1/f4/SHA256-s696365035--d2dcc67bf2f05fcfc7f42723b2d415d4f057a2eeadc282b40f5bc3724534f2f4/SHA256-s696365035--d2dcc67bf2f05fcfc7f42723b2d415d4f057a2eeadc282b40f5bc3724534f2f4  still exist in the repository after the sync.
-
-3 questions, if somebody could help me :
-
- - what I do wrong ?
- - why the- symlink for every file had change after "cd /media/usb/annex;git fetch laptop; git merge laptop/master&&git annex get .&&git annex sync"
- - how could I fix my repository ? recover file from the backup ? how ? Copy every file to start my repository from a new clean state ?
- 
-
-
diff --git a/doc/forum/Need_to_recover_unused_files_because_of_bad_sync__63__.mdwn b/doc/forum/Need_to_recover_unused_files_because_of_bad_sync__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Need_to_recover_unused_files_because_of_bad_sync__63__.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-I've two huge annex repos (about 100G) with all my photos.
-One is on my laptop and it uses indirect mode; the other one is on my NAS and I mount it into a CIFS folder, then it uses direct mode because of the crippled fs.
-Each repo is remote of the other one. The NAS repo belongs to backup group with the standard preferred content.
-I changed about 1000 photos in my PC repo (mainly renamed them) and I wanted to sync changes to the NAS repo, so I went through this sequence:
-
-* "git annex add" and "git annex sync" on my PC => OK;
-
-* "git annex sync" on the NAS repo => it started copying all the content BUT I stopped it because I had not enough time to wait at that very moment;
-
-* again "git anne sync" on the NAS repo => I had more time to wait BUT it didn't resume the copy from the PC repo, it just said something like "all done, nothing to do"
-
-* I checked that several files were missing on the NAS that I had modified/renamed on the PC repo so I did "git annex add" again on the PC => nothing new to add, nothing to do;
-
-* I did again "git annex sync" on the PC repo => it deleted also from my PC repo all the photos that were also missing on the NAS repo;
-
-* I've also checked for unused files on the PC repo and it now gives about 1000 files.
-
-So here are my questions:
-
-1. where was I wrong?
-
-2. can I restore my photos on my PC repo (which uses indirect mode) ?
-
diff --git a/doc/forum/New_Arch_Linux_package_for_git-annex.mdwn b/doc/forum/New_Arch_Linux_package_for_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/New_Arch_Linux_package_for_git-annex.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I have added a new git-annex package in Arch Linux's official repository [1]. I plan to keep it tracking latest release, and the delay should be within a few days after a new release appears.
-
-It would be great to update the installation instructions for Arch,  also please let me know if there is any problem with the package.
-
-Thank you!
-
-[1] https://www.archlinux.org/packages/community/x86_64/git-annex/
diff --git a/doc/forum/New_git-annex_integration_mode_for_Emacs_users.mdwn b/doc/forum/New_git-annex_integration_mode_for_Emacs_users.mdwn
deleted file mode 100644
--- a/doc/forum/New_git-annex_integration_mode_for_Emacs_users.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I've started a another project to provide Emacs integration for git-annex: [[https://github.com/jwiegley/git-annex-el]]
-
-My problem with the existing mode is that it didn't feel at all Emacsy, while my mode just piggy backs on existing paradigms, like using `C-x C-q` in a locked file to make it editable, and allowing you to browse and lock/unlock annexed files from Dired.
diff --git a/doc/forum/New_user_misunderstandings.mdwn b/doc/forum/New_user_misunderstandings.mdwn
deleted file mode 100644
--- a/doc/forum/New_user_misunderstandings.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-New user? Can't figure out the basics? Add it here - what you wanted, what you tried.
-
-#### I wanted to keep track of some files I had all organized in a directory outside of my ~/annex:
-
-    $ cd ~/annex
-    $ git annex add /path/to/some/photos
-    fatal: '/path/to/some/photos' is outside repository
-
- But git-annex doesn't work that way. I had to do this instead
-
-    $ rsync -a /path/to/some/photos
-    $ git annex add photos
-    (Recording state in git...)
-    $ git annex status
-    ... lots of helpful info...
-
-#### I just have the OS/X app, can I do commandline stuff?
-
-yes
-
-    $ /Applications/git-annex.app/Contents/MacOS/git-annex add photos/
-    (Recording state in git...)
-
-but perhaps there is a better way.
diff --git a/doc/forum/Newb_question_on_sneekernet_sync.mdwn b/doc/forum/Newb_question_on_sneekernet_sync.mdwn
deleted file mode 100644
--- a/doc/forum/Newb_question_on_sneekernet_sync.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi,
-
-I have set up git-annex to sync a folder located on laptop A, USB Key, and laptop B.   After reading the walkthrough, I don't quite understand the proper procedure to keep in sync.  Should I run git-annex sync from within the sync directory on the USB Key on laptop A and then from within the sync folder on the USB Key when plugged into laptop B?  Or do I have to run git-annex sync from within the sync directory on the laptops, then the USB Key?  And/or do I have to run git-annex get on the sync directory on the USB key before syncing to the second laptop?
-
-Also I should not normally be making changes on laptops A and B at the same time, but if that were the case, is there any difference in what I would run to sync the changes?
-
-Thanks!
diff --git a/doc/forum/Newbie_question_for_a_simple_task.mdwn b/doc/forum/Newbie_question_for_a_simple_task.mdwn
deleted file mode 100644
--- a/doc/forum/Newbie_question_for_a_simple_task.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hi,
-
-I am pretty confident, that this is a newbie question. Nevertheless, I did not find the answer (or the solution) event after looking at the screencasts and reading through the files.
-
-I want to sync 2 clients on different networks though a ssh cloud server begin a full backup.
-Also, I would like to do this for 2 different folders on the clients and server.
-I mean : client 1, 2 and the server sync a repo named "DATA" and also sync another repo named "IMAGES"
-
-Setting the client1 as local client repo and also ssh remote repo works quite well, it uploads everything to the server. Then I make the same on the second client, and it does not start to download everything from the server...
-
-Any clue ?
diff --git a/doc/forum/No_SSL_traffic_for_S3__63__.mdwn b/doc/forum/No_SSL_traffic_for_S3__63__.mdwn
deleted file mode 100644
--- a/doc/forum/No_SSL_traffic_for_S3__63__.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-As far I can tell, the encryption mentioned on the wiki for S3 [1] refers to file-level encryption. That is, it encrypts files with GPG before storing them (or after retrieving them) from S3. However, even if I have GPG encryption off, I still want S3 requests to use SSL encryption. As far as I can tell, HTTPS isn't used with S3 remotes. Is there any way to enable it (if so, it should be the default)?
-
-I am using git-annex version: 3.20120406
-
-Cheers,
---acrefoot
-
-[1] http://git-annex.branchable.com/special_remotes/S3/
diff --git a/doc/forum/No_output_from_git-annex_status_v5.20131224-g692aa01.mdwn b/doc/forum/No_output_from_git-annex_status_v5.20131224-g692aa01.mdwn
deleted file mode 100644
--- a/doc/forum/No_output_from_git-annex_status_v5.20131224-g692aa01.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-I'm running version 5.20131224-g692aa01 standalone tarball on linux x86_64 (Linux Mint 15). When I run `git-annex status` in the terminal I get no output. 
-
-I've tried:
-
-* system linked (`ln -s`) the `git-annex`, `git-annex-shell`, and `git-annex-webapp` to `~/bin/` which is on my PATH
-* run the `runshell` program from the terminal 
-
-Other things to consider:
-
-* I've just upgraded the repo from version 3 to version 5
-* Repo was created using git-annex version 3 
-* I don't use assistant or the webapp
-* Only used from my terminal
-* Repo is in indirect mode
-
-What do I need to do to see the results of `git-annex status`? in my terminal?
diff --git a/doc/forum/Not_sure_how_to_get_my_s3_remote_back.mdwn b/doc/forum/Not_sure_how_to_get_my_s3_remote_back.mdwn
deleted file mode 100644
--- a/doc/forum/Not_sure_how_to_get_my_s3_remote_back.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-My situation goes something like this:
-
-I have a machine with an annex and a number of special remotes (s3, box, and an rsync'd nas).  I also have a git remote that's doesn't have git annex on it, so it's just got the git branches.  That machine has some problems so I start getting the annex set up on a different machine.  These are the steps that I went through:
-
-* clone from the git remote
-* git annex doesn't think this is an actual annex at this point, so `git annex init` it
-* Now I can start the webapp `git annex webapp`
-* My rsync'd remote works and the assistant starts downloading the files from there (which is great, it's the local network one) but the box and s3 remotes are disabled (sure, not a huge deal).
-* Click enable on the box remote, I have to specify that it's a full backup remote
-* Things start copying from box as well, so I disable it until everything from the local network is done
-* Click enable on the s3 remote and it wants my AWS creds
-* Download those and add it
-* Set the remote up the same way, as a full backup.
-
-At this point, all my files have copied from the rsync remote, so I enable the other remotes.
-
-Now I want to make sure that all the remotes are set up and working properly.
-
-I turn off the webapp, turn off direct mode (I think it was indirect mode by default, but I'd been playing with things before then), and `git annex drop <file>` a file that I don't particularly care about.  Everything drops successfully.
-
-I'm able to `git annex get -f <rsync remote> <file>` and from `<box remote>` successfully, but when I try to get from the s3 remote, it doesn't give me any output and doesn't download the file.
-
-Having used regular git annex without the assistant before, I try re-initing the remote `git annex initremote <s3>`.  It complains that there's no type, so I `git annex initremote <s3> type=S3`, then it complains about encryption.  `git annex initremote <s3> type=S3 encryption=shared`.  It says it worked, but I `git annex get -f <s3> <file>` still doesn't do anything.
-
-After more looking around, it turns out that I may have created a second remote with the same name as the original s3 remote... (figure that out).  I use the webapp to rename the remotes so they're different, but neither of them will `get -f` successfully.
-
-At this point, I turn to you and ask what the heck I did wrong.  I tried editing the remote.log and uuid.log files to remove the new s3 remote (and I figured out which one was which) from the git-annex branch.  I also marked the new s3 remote as dead, but I still can't get access to s3.
-
-`git annex fsck -f <s3>` doesn't actually seem to hit s3 (I seem to recall that it used to, it calculated checksums), it just checks some git local information.
-
-I don't mind deleting my current checkout and starting from the clone step again if you think I've made too much of a mess.  At least I know I can get my files off my rsync remote and box :)
diff --git a/doc/forum/OSX_Finder_extension.mdwn b/doc/forum/OSX_Finder_extension.mdwn
deleted file mode 100644
--- a/doc/forum/OSX_Finder_extension.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-OSX 10.10 / Yosemite introduces the [Finder Sync extension][] which allows any app / extension to display informational badges in Finder. This could be used to indicate the sync status (there are some stories which claim the extensions got added because Dropbox used an undocumented API previously). I had a quick look and it would not be too difficult to implement a simple extension which reads the metadata from the `.git/annex` directory and shows a sync / transfer status icon.
-
-Just wanted to throw the idea out there, I might even start building it.
-
-[Finder Sync Extension]: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/Finder.html
diff --git a/doc/forum/OSX_Mavericks_anyone__63__.mdwn b/doc/forum/OSX_Mavericks_anyone__63__.mdwn
deleted file mode 100644
--- a/doc/forum/OSX_Mavericks_anyone__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Was anyone able to run git annex on Mavericks?
-
-Didn't have time for qualified troubleshooting, sorry
diff --git a/doc/forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.mdwn b/doc/forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.mdwn
deleted file mode 100644
--- a/doc/forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-This is a tip for users who wish to use remotes which are based on OSX systems and have used macports to install some of the required utilities for git-annex to work.
-
-The default behaviour of OSX's sshd is to have a "highly restricted" restricted environment. The defaults that it allows is
-
-    jtang@x00:~ $ ssh x00 echo \$PATH
-    /usr/bin:/bin:/usr/sbin:/sbin
-
-One solution is to enable *PermitUserEnvironment yes* in `/etc/sshd_config` and then in your own `~/.ssh/environment` file you could add something like (the below is an example)
-
-    PATH=/Users/jtang/bin:/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/X11/bin:/Users/jtang/.cabal/bin:/opt/local/libexec/gnubin
-
-If the above is not done, cloning from the OSX host will fail if git is not installed in /usr/bin (which it probably won't be).
diff --git a/doc/forum/OSX__39__s_haskell-platform_statically_links_things.mdwn b/doc/forum/OSX__39__s_haskell-platform_statically_links_things.mdwn
deleted file mode 100644
--- a/doc/forum/OSX__39__s_haskell-platform_statically_links_things.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-This isn't really a bug of git-annex, but a problem with haskell-platform/ghc6.12.x so this post might need to be moved to a better place (maybe tips).
-
-OSX's haskell-platform doesn't have the dynamic libraries available, as far as I know it just isn't supported therefore git-annex will always be statically built on OSX, so wrappers like <http://tsocks.sourceforge.net/> or [[!google dsocks]] for preloading connect() calls won't work. 
-
-<pre>
-jtang@x00:~/annex $ tsocks git annex get .
-dyld: could not load inserted library: /opt/local/lib/libtsocks.dylib
-
-error: git-annex died of signal 5
-</pre>
-
-The side effect of this means that users who are behind restrictive firewalls that allow only ssh via a socks proxy, they will need to configure ssh to use something like <http://bent.latency.net/bent/git/goto-san-connect-1.85/src/connect.html>.
-
-<pre>
-host remotemyhost
-        ProxyCommand connect -S proxy.mydomain:1080 -R local %h %p
-</pre>
diff --git a/doc/forum/OpenOffice___47___Libre_Office.mdwn b/doc/forum/OpenOffice___47___Libre_Office.mdwn
deleted file mode 100644
--- a/doc/forum/OpenOffice___47___Libre_Office.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I'm trying to use git-annex for keeping my company invoices data. It seems a good idea because it's encrypted and whatnot, I'd never upload them to Dropbox. However, Libre Office refuses to work with files copied to annex-tracked folder. It's likely a flaw in LO/OOo, but maybe someone here knows a way to make the two work together.
-
-When opening a spreadsheet, I'm getting a "Document in use - document locked by: Unknown User - Open read-only or open a copy" dialog. I tried opening a copy and saving under a different filename , but I can only save once - any subsequent saves to the same filename result in an error.
-
-A graphic version of my story: http://f.gdr.name/annex-ooo-1.png http://f.gdr.name/annex-ooo-2.png
diff --git a/doc/forum/Overwriting_data_without_getting_it.mdwn b/doc/forum/Overwriting_data_without_getting_it.mdwn
deleted file mode 100644
--- a/doc/forum/Overwriting_data_without_getting_it.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-My collaborators and I use git annex to track various large data files (among some smaller metadata files managed by ordinary git).  Some of these data files need to change completely -- the old ones were just wrong.  So I do a git checkout, but don't `git annex get` because it would just be a waste of time and bandwidth.  This means that my "data files" are just broken symlinks.  Now, I find that by making the necessary directories under `.git/annex/objects/`, I can write to these files in the usual way.  The symlinks are preserved, and the files they link to now exist and are full of my corrected data.  This seems like it's a problem because the hash has presumably changed.  (I'm still a little fuzzy on how exactly git-annex works.)  Also, git/git-annex doesn't seem to realize that anything has changed.  Is this recoverable?
-
-Would it have been better to just `git rm` (or something) the original version of the file, commit that, and then add the new data?  And if so, how should I go about this now that I've created these many very large files?  If not, what would be the preferred way to do this?
diff --git a/doc/forum/Per_directory_numcopies.mdwn b/doc/forum/Per_directory_numcopies.mdwn
deleted file mode 100644
--- a/doc/forum/Per_directory_numcopies.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-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!
diff --git a/doc/forum/Performance_implications_of_triply_nested_objects_directory.mdwn b/doc/forum/Performance_implications_of_triply_nested_objects_directory.mdwn
deleted file mode 100644
--- a/doc/forum/Performance_implications_of_triply_nested_objects_directory.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Posting this in case anyone might find it interesting.
-
-I had noticed impractical and abysmally slow performance when tracking a huge number of files (150k) in a git-annex. In direct mode, the repo was outright unusable, but even in indirect mode, many operations where painfully slow; even operations beyond the well-known offender, «git annex findunused», e.g., the seemingly harmless «git annex info».
-
-I also noticed that the performance was hugely improved on my (otherwise comparable) machine running btrfs, and I wondered how this might be. From previous benchmarks, I had gained the impression that ext4 and btrfs are on par, performance-wise, and you choose btrfs for the features rather than performance. Now, after trying to update my back-ups via rsync, I have had an idea how the contrast between the two machines might might be accounted for. Specifically, I noted that, after converting my 150k folder into a git-annex repo, ascertaining that the back-up is current via rsync would take ~15 minutes, where it used to take mere seconds before. This could then only be due to the demands on directory traversal introduced by the annex-layout.
-
-Accordingly, I wanted to see whether the traversal would be something that explains the difference in performance between btrfs and ext4, so I ran a tiny benchmark, traversing the .git folder on my home drive (ext4, SATA) and the backup drive (btrfs, USB3), and I was astounded by the difference:
-
-zardoz [ /mnt/bak/m-annex ]$ time tree .git >/dev/null
-
-tree .git >/dev/null  14,23s user 2,78s system 24% cpu 1:09,69 total
-
-zardoz [ ~/m-annex ]$ time tree .git >/dev/null
-
-tree .git >/dev/null  26,40s user 0,96s system 1% cpu 23:37,94 total
-
-While running, I peeked into the io using iotop, and observed around 500K/s during traversal on ext4 vs. 5M/s on btrfs.
-
-While I was aquainted with the dogma that file-systems hate to have a single folder with a bazillion files, sources on the net seem to indicate that having lots and lots of sparse folders is even worse, and given the one-file-per-folder structure of the annex objects store, this would then potentially explain the heavy thrashing on ext4.
-
-Something I am wondering now: Which operations in git-annex (or plain git) incite that sort of directory traversal? One candidate which occurred to me is «git annex unused», and the differences in performance between ext4 and btrfs are on the same order as in the above benchmark. Originally, Joey related somewhere that the search in «unused» is expensive; but if traversal is involved, it could actually be that this has even more impact than searching git history.
-
-In any case, if anyone wants to track a very large number of files via git-annex, ext4 seems to be not the ideal file-system for this.
diff --git a/doc/forum/Permission_denied_-_what_is_wrong__63__.mdwn b/doc/forum/Permission_denied_-_what_is_wrong__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Permission_denied_-_what_is_wrong__63__.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-I just set up one local repo and one remote server repo (accessible via SSH) that are synced with each other. However, when I add a file to the local repo it never appears on the remote repo. From the log:
-
-***************************************************************************
-    (scanning...) [2016-01-18 14:55:26.566983] Watcher: Performing startup scan
-    [2016-01-18 14:55:26.584387] Committer: Committing changes to git
-    (recording state in git...)
-    (started...) 
-    Permission denied, please try again.
-    Permission denied, please try again.
-    Permission denied (publickey,password,keyboard-interactive).
-    rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-    rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-45/rsync/io.c(453) [sender=2.6.9]
-    
-      rsync failed -- run git annex again to resume file transfer
-    [2016-01-18 14:55:30.429824] main: Syncing with lacieannex 
-    
-    Permission denied, please try again.
-    Permission denied, please try again.
-    Permission denied (publickey,password,keyboard-interactive).
-    rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-    rsync error: error in rsync protocol data stream
-      rsync failed -- run git annex again to resume file transfer
-     (code 12) at /SourceCache/rsync/rsync-45/rsync/io.c(453) [sender=2.6.9]
-***************************************************************************
-
-I suspect there is something with the ssh authentication. I tried to remove all keys from my known_hosts that was related to the server (a handful since I had accessed it at server.local, server.lan, 192.168.1.3, fqdn:2222 etc). My plan was to re-run the setup screen where you enter the details about the remote server, including your username and password, but that step seems unavailable after the initial setup.
-
-How do I fix the issues above?
diff --git a/doc/forum/Please_fix_compatibility_with_ghc_7.0.mdwn b/doc/forum/Please_fix_compatibility_with_ghc_7.0.mdwn
deleted file mode 100644
--- a/doc/forum/Please_fix_compatibility_with_ghc_7.0.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I'm having trouble installing the latest git-annex. It depends on 'base >= 4.5 && base < 5', but ghc 7.0 only ships base 3.0. I've tried upgrading ghc to 7.4 but that breaks a whole bunch of other things; for example, the Crypto module fails to compile, preventing me from installing ghc. Please fix compatibility with ghc 7.0.
diff --git a/doc/forum/Please_publish_new_releases_not_shorter_than_11_days.mdwn b/doc/forum/Please_publish_new_releases_not_shorter_than_11_days.mdwn
deleted file mode 100644
--- a/doc/forum/Please_publish_new_releases_not_shorter_than_11_days.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-i am following debian testing. The latest git-annex publication has manged to replace the former version on the last possible moment. Now another 10 days waiting.
-Would be nice if you can coordinate with testing.
-
-Thank you for git-annex. 
-Jürgen
diff --git a/doc/forum/Podcast_syncing_use-case.mdwn b/doc/forum/Podcast_syncing_use-case.mdwn
deleted file mode 100644
--- a/doc/forum/Podcast_syncing_use-case.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-I've been trying to use git-annex with the following strategy.
-
-* Download podcasts into the annex `gpodder-downloads`
-* Check the podcasts into the annex using `git annex add`.
-* Copy the podcasts over to my mp3 player in the annex `usb-ariaz`.
-  This is a FAT-formatted mp3 player, so I have been using a bare
-  repository.  
-* Move the podcasts to a different annex called `gpodder-on-usbdisk`
-  to indicate that they have been successfully put on the mp3 player.
-* `chmod` the files on the mp3 player to `0600` so that I can delete
-  them from the player when I am done listening to them.
-  
-Then I go for a run or something and listen to a bunch of podcasts,
-deleting them after I have listened to them.  When I get back, I would
-like to find the files that I have listened to and remove them from
-the annexes that are not on the mp3 player.  What I have been hoping
-is that something like
-
-    ~/gpodder-on-usbdisk $ git annex find --not --in usb-ariaz --print0 | xargs -0 git rm
-    ~/gpodder-on-usbdisk $ git annex unused
-    ~/gpodder-on-usbdisk $ git annex dropunused `seq X`
-	
-would work.  However, it appears that `git-annex find` does not
-actually check to see that the file contents are present, but only
-looks at the `git-annex` branch of the `usb-ariaz` repository.  Since
-I have not changed that with my sneaky deletions, it has no way of
-knowing that the files have been deleted.
-
-Is there any way to do this properly?  (And by properly, I don't mean
-"don't delete the files".  That is really the only way I have of
-marking that I have listened to podcasts on this particular mp3 player.)
-
-I tried setting the `usb-ariaz` repository to be untrusted, but that
-did not change the behavior of `git annex find`.
diff --git a/doc/forum/Poor_man__39__s_IMAP.mdwn b/doc/forum/Poor_man__39__s_IMAP.mdwn
deleted file mode 100644
--- a/doc/forum/Poor_man__39__s_IMAP.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-I have an e-mail server configured to save my mail in ~/Maildir on an account that is available over ssh. I'd like to keep emailserver:~/Maildir in a two-way sync with laptop:~/Mail/private essentially creating a poor man's IMAP — without setting up and maintaining an actual IMAP server. **Is it an appropriate use of git-annex or would another tool be more fitting? And how do I go about doing it?** I'd like to sync the files, the content, not just information about the files or other meta-data. 
-
-I tried setting it up with the webUI to the assistant but it only offers encrypted storage[1] on the remote server. I looked into setting it up manually but "git-annex does not notice when files are added to remote rsync repositories."[2]
-
-[1] http://git-annex.branchable.com/bugs/Remote_repositories_have_to_be_setup_encrypted/  
-[2] from comments on http://git-annex.branchable.com/special_remotes/rsync/
diff --git a/doc/forum/Portable_version_of_git-annex_for_windows.mdwn b/doc/forum/Portable_version_of_git-annex_for_windows.mdwn
deleted file mode 100644
--- a/doc/forum/Portable_version_of_git-annex_for_windows.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Problem: I don't have admin access on all the computers I want to plug my USB with git-annex on.
-Solution: Make git & git-annex portable.
-
-The only catch is I'm not familiar enough with git to be able to actually tell if the more specialized git-annex working properly. The commands execute without crashing so I suspect it's fine but I was hoping someone else more competent could try this out and let me know if I it's working so I can add it to the tips section. Thanks in advance!
-
-Ingredients:
-
-* Portable version of msysgit: <http://code.google.com/p/msysgit/downloads/list>
-
-* Windows git-annex installer: <http://git-annex.branchable.com/install/>
-
-* 7-zip (portable version optional): <http://portableapps.com/apps/utilities/7-zip_portable>
-
-Steps:
-
-1. Use 7-zip to extract the contents of the git-annex installer into their own folder.
-
-2. Extract the portable version of git and copy all files extracted from git-annex installer into the "cmd" folder.
-
-3. Run it!
-
-Edit: the markdown is eating my attempts to create a numbered list and making them a paragraph instead. Apologies!
diff --git a/doc/forum/Post-Kickstarter.mdwn b/doc/forum/Post-Kickstarter.mdwn
deleted file mode 100644
--- a/doc/forum/Post-Kickstarter.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-We're nearing the end of the year of development funded by Kickstarter. I'm curious to know what the future of the project looks like.
-
-I assume that development will decrease from its current levels as you focus more of your energy on activities that put bread on the table, but is git-annex still something that you foresee actively working on or will it be in more of a feature-freeze-bug-fix stage?
-
-As a backer my only regret is that during the campaign I wasn't able to donate as much as I would have liked. The project has exceeded my expectations since then. I don't know that another Kickstarter campaign is worth the effort, but if you were to ask for donations to fund another month or two or three I would gladly donate. Or perhaps implement a feature-bounty program where users could donate money toward development of a particular feature they would like to see added. Or perhaps you're sick of working for the Internet!
diff --git a/doc/forum/Preserving_extended_attributes.mdwn b/doc/forum/Preserving_extended_attributes.mdwn
deleted file mode 100644
--- a/doc/forum/Preserving_extended_attributes.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hey,
-
-I was wondering if it is currently possible to let the assistant (or git-annex in general) preserve extended attributes. I didn't find any options hinting at this, although it should be possible at least in theory by using the metadata system of git-annex...
-
-Considering that some applications use extended attributes to store custom meta data (like tags etc.), I think it would be valuable to have such an option...
diff --git a/doc/forum/Previous_versions_in_direct_mode__63__.mdwn b/doc/forum/Previous_versions_in_direct_mode__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Previous_versions_in_direct_mode__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I am in Windows and therefore forced to use direct mode. After reading for a long while I still have not found a way of "git annex get" previous versions. Is this supported? is it only the last version in the repository?
-
-any chance to use indirect mode in Windows? In theory Windows supports NTFS symlinks, why is this not supported?
diff --git a/doc/forum/Problem_compiling_current_master.mdwn b/doc/forum/Problem_compiling_current_master.mdwn
deleted file mode 100644
--- a/doc/forum/Problem_compiling_current_master.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-While trying to compile the current master I run in the following error:
-
-    Utility/Yesod.hs:21:14:
-        Couldn't match expected type `String'
-                    with actual type `WidgetFileSettings'
-        Expected type: String -> Q Exp
-          Actual type: WidgetFileSettings -> FilePath -> Q Exp
-        In the expression: widgetFileNoReload
-        In an equation for `widgetFile': widgetFile = widgetFileNoReload
-    make: *** [git-annex] Fehler 1
-
-I installed all dependencies from the INSTALL document. What is wrong?
diff --git a/doc/forum/Problems_syncing_with_box.com.mdwn b/doc/forum/Problems_syncing_with_box.com.mdwn
deleted file mode 100644
--- a/doc/forum/Problems_syncing_with_box.com.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-I have a repository synchronized between two PCs and box.com . I chose encryption for box.com. Today on my work computer I changed files, on box.com I see that there are changed files today. When I got home, I still see files with yesterday's date.
-One thing to mention is that currently the work PC is not accessible. 
-
-1. How do I debug this problem? I have logging set to debug via web console, saved, restarted daemon, but after restart the debug checkbox is unchecked.
-From logs it looks like that after failing to connect to work pc via ssh it gives up:
-
-    [2013-05-09 21:42:52 CEST] main: Syncing with box.com
-this is first and last line mentioning box today, I restarted the daemon several times around 22:14 :
-
-    [2013-05-09 22:11:40 CEST] TransferScanner: Syncing with [work pc repo]
-    Already up-to-date.
-    
-    (scanning...) [2013-05-09 22:11:40 CEST] Watcher: Performing startup scan
-    Already up-to-date.
-    
-    (started...) ssh: connect to host [work pc] port 22: No route to host
-    fatal: The remote end hung up unexpectedly
-
-
-2. where is the configuration for box.com stored? How can I check gpg key ID mentioned at http://git-annex.branchable.com/tips/using_box.com_as_a_special_remote/
-3. how do I manually trigger sync with box.com? git fetch box.com neither git annex sync box.com doesn't work.
-
-
----
-Version: 4.20130501
-Build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
diff --git a/doc/forum/Problems_using_submodules_with_git-annex__63__.mdwn b/doc/forum/Problems_using_submodules_with_git-annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Problems_using_submodules_with_git-annex__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Are there any problems using submodules with git-annex? I have not tried it yet, I'm just asking.
diff --git a/doc/forum/Problems_when_cloning_a_repository.mdwn b/doc/forum/Problems_when_cloning_a_repository.mdwn
deleted file mode 100644
--- a/doc/forum/Problems_when_cloning_a_repository.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Hi,
-
-On a linux server I created a (direct) git annex repository:
-
-    $ ls -a
-    .  ..  apps  attic  devel  games  .git  portable  tools
-
-On a Windows client, I want to check it out:
-
-    me@client /cygdrive/c/tmp
-    $ git clone ssh://me@server/srv/data/bin bin
-    Cloning into 'bin'...
-
-But git annex checks only half of it out :-(
-
-    me@client /cygdrive/c/tmp
-    $ ls -a bin
-    .  ..  .git  attic  games
-
-Any ideas? Sorry, I am very new to git-annex (and git).
-
-Thanks!
diff --git a/doc/forum/Problems_with_large_numbers_of_files.mdwn b/doc/forum/Problems_with_large_numbers_of_files.mdwn
deleted file mode 100644
--- a/doc/forum/Problems_with_large_numbers_of_files.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I'm trying to use git-annex to archive scientific data. I'm often dealing with large numbers of files, sometimes 10k or more. When I try to git-annex add these files I get this error:
-
-
-    Stack space overflow: current size 8388608 bytes.
-    Use `+RTS -Ksize' to increase it.
-
-
-This is with the latest version of git-annex and a current version of git on OS 10.6.7. After this error occurs, I am unable to un-annex the files and I'm forced to recover from a backup. 
diff --git a/doc/forum/Proper_usage_of_git_annex_proxy_to_mimc_undo_--depth.mdwn b/doc/forum/Proper_usage_of_git_annex_proxy_to_mimc_undo_--depth.mdwn
deleted file mode 100644
--- a/doc/forum/Proper_usage_of_git_annex_proxy_to_mimc_undo_--depth.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-[Thanks Joey for correcting the docs on `git annex undo --depth`, and thanks for the `git-revert` suggestion as a replacement!](http://git-annex.branchable.com/direct_mode/#comment-b6dcfc80842008e7f9f5b8f612b27867)
-
-**Context: Creating an OSX GUI for assistant managed direct mode repos to help with restoring old file versions.**
-
-I saw this in the `git revert` docs and thought that `git annex proxy -- git checkout annex/direct/master~$depth -- $filename` might best suit my needs of restoring a previous version of a file. (I liked the idea of presenting the user with a depth rather than a hash.)
-
->Note: git revert is used to record some new commits to reverse the effect of some earlier commits (often only a faulty one). If you want to throw away all uncommitted changes in your working directory, you should see git-reset[1], particularly the --hard option. If you want to extract specific files as they were in another commit, you should see git-checkout[1], specifically the git checkout -- syntax. Take care with these alternatives as both will discard uncommitted changes in your working directory.
-
-What I've found is that your suggestion of `git revert` is nice because it wouldn't create a conflict, as `git checkout` does. 
-
-So annex, thorough as it is, creates a `$filename.variant-local.$ext` file after the auto conflict resolution to preserve the original. `git revert` is neater, history wise, because there is no conflict as git knows exactly what's changing and from whence it came, rather than just some new file content showing up from who knows where with `git checkout`. 
-
-The issue it seems is that `git revert` works on a commit basis, while `git checkout` can operate on files. If I'm correct in this it would be good to know if annex uses one commit per file, for sure, every time? If this is the case, there would be no problem using the better in most every other way `git revert`.
-
-Though, I'm still not clear how to use the "depth" referencing with `git revert` rather than hashes, any suggestions?
diff --git a/doc/forum/Pruning_out_unwanted_Git_objects.mdwn b/doc/forum/Pruning_out_unwanted_Git_objects.mdwn
deleted file mode 100644
--- a/doc/forum/Pruning_out_unwanted_Git_objects.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have a backups repository with a few files in it, that at one point had some huge filesets erroneously added to it.  As a result, even though there are only 23,334 annexed files, the number of non-dangling Git objects in the repository comes to 593,584.
-
-Normally I would use `git filter-branch` to clear out the deadwood in situations like this, since it is a completely private repository.  What I'm wondering is, is any such thing possible with git-annex, or is the best option just to start over, copy all the files into the new repository, and then `git-add` them all?
diff --git a/doc/forum/Purge_a_remote.mdwn b/doc/forum/Purge_a_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Purge_a_remote.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-How could I delete and purge a remote? I want to remove all traces of it
-but I can't find out how to achieve this.
diff --git a/doc/forum/Purge_a_remote/comment_1_78b3b77f457c65d31fd8a5abf714905d._comment b/doc/forum/Purge_a_remote/comment_1_78b3b77f457c65d31fd8a5abf714905d._comment
deleted file mode 100644
--- a/doc/forum/Purge_a_remote/comment_1_78b3b77f457c65d31fd8a5abf714905d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.47"
- subject="comment 1"
- date="2013-11-05T16:17:22Z"
- content="""
-In the git-annex webapp, each repository has a settings menu with \"delete repository\".
-"""]]
diff --git a/doc/forum/Purge_a_remote/comment_2_dc65719157dee63b3979563ed57ee0ce._comment b/doc/forum/Purge_a_remote/comment_2_dc65719157dee63b3979563ed57ee0ce._comment
deleted file mode 100644
--- a/doc/forum/Purge_a_remote/comment_2_dc65719157dee63b3979563ed57ee0ce._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw"
- nickname="dxtrish"
- subject="comment 2"
- date="2013-11-05T17:46:02Z"
- content="""
-When I use that Delete button it seems to still have records of it
-because when I delete the repo on the other end and create a new bare
-one it complains about some UUID mismatch.
-"""]]
diff --git a/doc/forum/Purge_a_remote/comment_3_63e0280273b816fa4b837724e102f813._comment b/doc/forum/Purge_a_remote/comment_3_63e0280273b816fa4b837724e102f813._comment
deleted file mode 100644
--- a/doc/forum/Purge_a_remote/comment_3_63e0280273b816fa4b837724e102f813._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.47"
- subject="comment 3"
- date="2013-11-05T18:03:26Z"
- content="""
-Hmm well, it's true that deleting a repository does not clean out any git remotes that other repositories might have configured using it, and the uuid of the old remote is cached in there. This is only a problem if you put back another repository in the same location as the old one. `git remote remove` should clean that up for you.
-"""]]
diff --git a/doc/forum/Purge_a_remote/comment_4_7fad1c4798ca03a4095ac3241c279f6d._comment b/doc/forum/Purge_a_remote/comment_4_7fad1c4798ca03a4095ac3241c279f6d._comment
deleted file mode 100644
--- a/doc/forum/Purge_a_remote/comment_4_7fad1c4798ca03a4095ac3241c279f6d._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw"
- nickname="dxtrish"
- subject="comment 4"
- date="2013-11-06T14:24:21Z"
- content="""
-That is exactly what I have wanted to do a couple of times now and 'git remote remove' does not seem to remove it all either.
-When I try to create a new repository in the same place it still complains about that darn UUID :)
-
-What is working is to manually add the new UUID to .git/config
-"""]]
diff --git a/doc/forum/Purge_whereis.mdwn b/doc/forum/Purge_whereis.mdwn
deleted file mode 100644
--- a/doc/forum/Purge_whereis.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hey there,
-
-I am playing around with git-annex to handle my files and backup's. Sometimes, I wish to delete a file entirely from my local repo and any other repo that contains the file.
-
-First, I drop the file from my local repo and run git-annex sync --content. Then I run git annex whereis and drop the file from other repo's. Subsequently, I run git annex whereis to ensure that the file has been dropped and does not exist in any repo.
-
-However, git annex still tracks the file, but I just have 0 copies of it. How do I remove/delete/disable tracking of a single file or multiple files?
-
-The reason why I have deleted the file is that I don't want it in any of my repo's any longer. 
diff --git a/doc/forum/Purge_whereis/comment_1_89d2446e3c9a58ab7b2a85ff941f7c8d._comment b/doc/forum/Purge_whereis/comment_1_89d2446e3c9a58ab7b2a85ff941f7c8d._comment
deleted file mode 100644
--- a/doc/forum/Purge_whereis/comment_1_89d2446e3c9a58ab7b2a85ff941f7c8d._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="cbaines"
- subject="comment 1"
- date="2015-12-21T12:32:55Z"
- content="""
-If you want to stop tracking a file, just delete it, and then run git annex sync.
-
-There are some other commands (and settings in the assistant) for managing unused content. That is, files in the annex that are no longer referenced/used.
-"""]]
diff --git a/doc/forum/Purge_whereis/comment_2_0307ce47de9b719adc2096600d94dff6._comment b/doc/forum/Purge_whereis/comment_2_0307ce47de9b719adc2096600d94dff6._comment
deleted file mode 100644
--- a/doc/forum/Purge_whereis/comment_2_0307ce47de9b719adc2096600d94dff6._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="frost.kristian@75a6b6a25121f985cd8708f98c691d41716ac720"
- nickname="frost.kristian"
- subject="comment 2"
- date="2015-12-21T13:08:49Z"
- content="""
-It seems I have to enable syncing from the webapp. I thought doing git annex sync would do the same?
-"""]]
diff --git a/doc/forum/Purge_whereis/comment_3_e87b53ebbf8053bb17caeb2aed871212._comment b/doc/forum/Purge_whereis/comment_3_e87b53ebbf8053bb17caeb2aed871212._comment
deleted file mode 100644
--- a/doc/forum/Purge_whereis/comment_3_e87b53ebbf8053bb17caeb2aed871212._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="cbaines"
- subject="comment 3"
- date="2015-12-21T13:33:34Z"
- content="""
-I just did a quick test, running git annex sync does commit the removal of files for me.
-"""]]
diff --git a/doc/forum/Purge_whereis/comment_4_72b6c28d8a4865ad8c84b1f7dfefb78a._comment b/doc/forum/Purge_whereis/comment_4_72b6c28d8a4865ad8c84b1f7dfefb78a._comment
deleted file mode 100644
--- a/doc/forum/Purge_whereis/comment_4_72b6c28d8a4865ad8c84b1f7dfefb78a._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="frost.kristian@75a6b6a25121f985cd8708f98c691d41716ac720"
- nickname="frost.kristian"
- subject="comment 4"
- date="2015-12-21T17:47:13Z"
- content="""
-I did some digging. When creating a repo from the webapp, it is per default in direct mode. In direct mode, I am not able to run any git commands such as git commit. Subsequently, when running git annex sync. Files added when sync is disabled from the webapp are not committed.
-
-Is git-annex behaving as expected here?
-"""]]
diff --git a/doc/forum/Purge_whereis/comment_5_966e0285639a41ee9db3e9fb337e2699._comment b/doc/forum/Purge_whereis/comment_5_966e0285639a41ee9db3e9fb337e2699._comment
deleted file mode 100644
--- a/doc/forum/Purge_whereis/comment_5_966e0285639a41ee9db3e9fb337e2699._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 5"""
- date="2016-01-01T20:35:18Z"
- content="""
-Described behavior sounds right to me. If you've clicked on "syncing
-enabled" in the webapp for the local repository, so it's changed to
-"syncing disabled" then the webapp won't automatically commit file
-deletions/adds. Click on it again and it'll catch up with any changes you
-made while it was disabled.
-"""]]
diff --git a/doc/forum/Push__47__Pull_with_the_Assistant.mdwn b/doc/forum/Push__47__Pull_with_the_Assistant.mdwn
deleted file mode 100644
--- a/doc/forum/Push__47__Pull_with_the_Assistant.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-If I use git-annex with a centralized bare git repository as [described here](http://git-annex.branchable.com/tips/centralized_git_repository_tutorial/), will the Assistant automatically `git push` and `git pull` the master and git-annex branches? Or does it basically just do a `git annex sync`?
diff --git a/doc/forum/Pushing_git_repo_to_AWS_S3_from_behind_proxy.mdwn b/doc/forum/Pushing_git_repo_to_AWS_S3_from_behind_proxy.mdwn
deleted file mode 100644
--- a/doc/forum/Pushing_git_repo_to_AWS_S3_from_behind_proxy.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I want to setup my remote git repo on S3
-Referred to
-http://git-annex.branchable.com/tips/using_Amazon_S3/
-http://git-annex.branchable.com/special_remotes/S3/
-
-I need support for AWS.config param proxy_uri
-http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS.html
-
-Can some one help?
diff --git a/doc/forum/Question__58___git-annex-only_repo___63__.mdwn b/doc/forum/Question__58___git-annex-only_repo___63__.mdwn
deleted file mode 100644
--- a/doc/forum/Question__58___git-annex-only_repo___63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Is there a way to declare (init) a git-annex-only repository?
-
-I mean if the repository will only contain large (or maybe binary) files without any source-code... In that case all files added to the repo should be managed by git-annex automatically. Is this currently possible?
diff --git a/doc/forum/Reappearing_repos_in_webapp_and_vicfg.mdwn b/doc/forum/Reappearing_repos_in_webapp_and_vicfg.mdwn
deleted file mode 100644
--- a/doc/forum/Reappearing_repos_in_webapp_and_vicfg.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-Hi,
-
-Whenever I do a git annex vicfg (as pasted below) the long gone repo 40da403e-6f74-4705-aae0-433aa656b55e keeps automatically being added back into the configuration.  Worse in the webapp this manifests itself as a repository list item that's empty of text (and when buttons are clicked there's a complaint about missing UUIDs).
-
-In addition to removing the lines via git-annex vicfg, I've switched my repository into indirect mode, manually checked out the the git-annex branch and deleted the offending key from the preferred content and group files (it oddly didn't appear in the uuid file).  However they keep coming back :-(
-
-Everything seems to be okay bar this rogue entry which in the web-app irrationally bothers me.
-
-I'm running the very latest git-annex release.
-
-Any thoughts?
-
-Cheers,
-
-Matt.
-
-
-    # git-annex configuration
-    #
-    # Changes saved to this file will be recorded in the git-annex branch.
-    #
-    # Lines in this file have the format:
-    #   setting uuid = value
-    
-    # Repository trust configuration
-    # (Valid trust levels: trusted semitrusted untrusted dead)
-    # (for mattford63 (matt@descartes.rss.mhs.man.ac.uk:~/current))
-    trust 88733342-45ef-420f-8f1b-9a5ed8d8e070 = semitrusted
-    
-    # Repository groups
-    # (Standard groups: client transfer backup incrementalbackup smallarchive archive source manual public unwanted)
-    # (Separate group names with spaces)
-    # (for )
-    group 40da403e-6f74-4705-aae0-433aa656b55e = client
-    # (for mattford63 (matt@descartes.rss.mhs.man.ac.uk:~/current))
-    group 88733342-45ef-420f-8f1b-9a5ed8d8e070 = client
-
-    # Repository preferred contents
-    # (for )
-    content 40da403e-6f74-4705-aae0-433aa656b55e = standard
-    # (for mattford63 (matt@descartes.rss.mhs.man.ac.uk:~/current))
-    content 88733342-45ef-420f-8f1b-9a5ed8d8e070 = standard
-    
diff --git a/doc/forum/Recommended_number_of_repositories.mdwn b/doc/forum/Recommended_number_of_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/Recommended_number_of_repositories.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-With git it is easy to create one repository per project, and it almost always makes sense to do so.  When using git-annex, what is the recommended setup?
-
-Should one have a single annex containing all files, or is it recommended to create different repositories for things like 'photos', 'music', 'isos' ?
-
diff --git a/doc/forum/Recover_files__44___annex_stuck.mdwn b/doc/forum/Recover_files__44___annex_stuck.mdwn
deleted file mode 100644
--- a/doc/forum/Recover_files__44___annex_stuck.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-I have a directory with 6TB of data in it. I tried to use git annex to back it up to three 3TB drives, I didn't want to use RAID as it sucks, and I didn't want to use tar as I wanted my files easily available.
-
-I added my remotes successfully, then I ran ``git annex add .``
-
-That mostly worked, although it understandably took ages, although it missed several GB of files here and there.
-
-Next I tried to do ``git commit -a -m added``, hoping that this would copy all of my files to the remotes.  It didn't it just died with the error 
-
-    fatal: No HEAD commit to compare with (yet)
-    fatal: No HEAD commit to compare with (yet)
-    Stack space overflow: current size 8388608 bytes.
-    Use `+RTS -Ksize -RTS' to increase it.
-
-So I freaked out and decided to undo the mess and just go with tar instead, since at this point every git command takes multiple minutes and fails with the same error as above.
-
-I tried to run ``git anne unannex .``, but I got this error:
-
-``
-unannex GWAS/by-download-number/27081.log.gz fatal: No HEAD commit to compare with (yet)
-``
-
-So now I can't do anything without committing the files it seems, and I somehow need to grow the git cache, although when I search online for `+RTS -Ksize -RTS', I get nothing. 
-
-Does anyone know how to increase the cache size, or how to unannex the files without this HEAD error?
-
-Thanks,
-
-Mike
diff --git a/doc/forum/Recovering_deleted_file_in_direct_mode.mdwn b/doc/forum/Recovering_deleted_file_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Recovering_deleted_file_in_direct_mode.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I accidentally deleted a file from a git-annex repository with a plain "rm". How can I restore it from other repositories that have it?
-
-I tried using
-
-    git annex copy --from $REMOTE $REMOVED_FILE
-
-but git-annex complaints about
-
-    $REMOVED_FILE not found
-
-I suppose that I could switch to indirect mode and do checkout and older version, but I'd prefer not to. My repository contains thousands of quite big files; it would take a lot of time and the probability of something going wrong during the conversion is quite high (see other bugs reported during import).
-
-I'm using git-annex 5.20141024-g613f396.
diff --git a/doc/forum/Recovery_after_freeze_while_importing_files.mdwn b/doc/forum/Recovery_after_freeze_while_importing_files.mdwn
deleted file mode 100644
--- a/doc/forum/Recovery_after_freeze_while_importing_files.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-My PC froze while git-annex was in the process of importing a file. It was in the final stage of updating git status when the freeze occurred. git status shows the imported file under "changes to be committed" as "new file."
-
-I don't know how git-annex works under the hood, so I don't know how the freeze might've affected the repo. I don't want to lose my files. What do you recommend is the best way of recovering from this and making sure there are no errors?
diff --git a/doc/forum/Reloading_.git__47__config_mid-sync.mdwn b/doc/forum/Reloading_.git__47__config_mid-sync.mdwn
deleted file mode 100644
--- a/doc/forum/Reloading_.git__47__config_mid-sync.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-There are some settings (rsync bandwidth settings are my use case) I'd like to reload after assistant starts, possibly mid-sync. Does assistant support SIGHUP, etc? What's the correct way to change bandwidth settings?
diff --git a/doc/forum/Relocating_annex_directory.mdwn b/doc/forum/Relocating_annex_directory.mdwn
deleted file mode 100644
--- a/doc/forum/Relocating_annex_directory.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have around 70 GBs of data spread around 4 repositories on a Linux (Ubuntu) box. My problem is I need to reformat the drive they are on. I would like to move them to an external usb drive temporarily during reinstall then move them back to their original location. When I started with annex I did try to mv annexFolder/ toNewLoc/ which failed leaving behind a corrupt repo. What is a safe way to move an annex folder? My primary connection is a 3G modem so I am trying to avoid re downloading everything. Another thing I am trying to avoid is cloning the repos to the external drive, reinstall, clone it back to the internal drive and mark original and external repos as dead, but AFAIK those dead repos will show up in the output of whereis, so everytime I reformat I gonna have two extra dead repos.
diff --git a/doc/forum/Remote__39__s_git-annex-shell_not_detected.mdwn b/doc/forum/Remote__39__s_git-annex-shell_not_detected.mdwn
deleted file mode 100644
--- a/doc/forum/Remote__39__s_git-annex-shell_not_detected.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-When doing `git annex get fname` in a repo A with 2 remotes on LAN (B and C), it says they don't have git annex installed so it sets the `annex-ignore` flag. However, they do have it, and I can `annex-get` files from C to B. Versions of git and git-annex vary between the machines. Any idea what could be causing it? Perhaps A's git needs an update?
-
-
-A:
-
-* Ubuntu. 
-* git 1.9.1
-* git-annex 5.20140412ubuntu1
-
-B: 
-
-* Fedora 22
-* git 2.3.2 (installed through Nix package manager, so its in a nonstandard path)
-* git-annex 5.20140717 (installed normally, in /usr/bin)
-
-C: 
-
-* Fedora 22
-* git 2.3.2 (installed through Nix package manager, so its in a nonstandard path)
-* git-annex 5.20150219 (installed through Nix
diff --git a/doc/forum/Remote_server_only_for_the_git_repository.mdwn b/doc/forum/Remote_server_only_for_the_git_repository.mdwn
deleted file mode 100644
--- a/doc/forum/Remote_server_only_for_the_git_repository.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Hi, I'm using git-annex 5.2014012 with the webapp and I've added two repositories: a remote server and a box.com account. When I add a file it is uploaded properly to both remotes as you would expect.
-
-The problem is that I would like the files to only be uploaded to box.com, and the remote server only store the git repository. Is there any way of saying to git-annex to not sync files to a remote server?
diff --git a/doc/forum/Removing_files_not_found_by_git_annex_unused.mdwn b/doc/forum/Removing_files_not_found_by_git_annex_unused.mdwn
deleted file mode 100644
--- a/doc/forum/Removing_files_not_found_by_git_annex_unused.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Hi,
-
-I've removed some large files with git remove, but seem to be unable to remove the corresponding annex content.
-
-Example:
-
-kheymann@corax:~/annex$ find -name "*s24576--10daa3d9007edad720dc057e4272a9c6cda930bef34a83e3bc1d93f1c55b9cac" 
-
-./.git/annex/objects/jF/j7/SHA256-s24576--10daa3d9007edad720dc057e4272a9c6cda930bef34a83e3bc1d93f1c55b9cac
-
-./.git/annex/objects/jF/j7/SHA256-s24576--10daa3d9007edad720dc057e4272a9c6cda930bef34a83e3bc1d93f1c55b9cac/SHA256-s24576--10daa3d9007edad720dc057e4272a9c6cda930bef34a83e3bc1d93f1c55b9cac
-
-kheymann@corax:~/annex$ git annex dropkey -vvv --backend SHA256 s24576--10daa3d9007edad720dc057e4272a9c6cda930bef34a83e3bc1d93f1c55b9cac
-
-No output but the files remain in the annex. Git annex fsck and git annex unused run without listing files to be removes. What can I do apart from deleting the files manually from the annex?
-
-Some info:
-
-    kheymann@corax:~/annex$ git annex version
-    git-annex version: 3.20121017
-    local repository version: 3
-    default repository version: 3
-    supported repository versions: 3
-    upgrade supported from repository versions: 0 1 2
-
-Any hints?
-
-Best, 
-Karsten
diff --git a/doc/forum/Repository_backup.mdwn b/doc/forum/Repository_backup.mdwn
deleted file mode 100644
--- a/doc/forum/Repository_backup.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-What's the best way of backing up the git repository itself? I feel fairly comfortable using a special remote to create an offsite backup in S3 or Glacier or whatnot, but restoring from those still requires I have a working repository somewhere that can map chunks back to files, no? 
-
-I can probably just create a repo that has no content, tar it up, and store it on my backup medium (or on bitbucket or wherever), but that seems kinda hackish--it'd be nice to handle this within git-annex. In fact, it'd be really neat if I could handle this with any existing special remote--for example, if there were a way to commit and restore the git repo state (and symlink tree) to the remote. But that doesn't seem to exist. Is there a recommended approach for this? Am I just missing something obvious?
-
-Thanks. 
diff --git a/doc/forum/Restoring_files__63__.mdwn b/doc/forum/Restoring_files__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Restoring_files__63__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-One of my users created a git annex repository a while ago and has since left the lab, and I think they messed it up badly.
-
-It looks like all of the data is present in the annex directory, but there are no files in main directory, other than the .git folder. The master branch seems to be gone, and the only branch left is called git-annex.
-
-git log gives the error "fatal: bad default revision 'HEAD'" when I first do git log, because the branch that I am on doesn't exist (the master branch). Changing to the git-annex branch works, but then I can't go back to the master branch because it doesn't exist.
-
-git annex unannex doesn't seem to do anything. Is there any way to get the data back following this kind of mess up?
-
-Thanks for your help
-
--Mike
diff --git a/doc/forum/Restricting_SSH_+_supply_key.mdwn b/doc/forum/Restricting_SSH_+_supply_key.mdwn
deleted file mode 100644
--- a/doc/forum/Restricting_SSH_+_supply_key.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Just two very simple questions:
-
-1.) Is there a way to restrict the SSH key for git annex by supplying a command= ? Even better, is it also possible to supply a directory in which the repository is? (I do not want chroot - too complicated but a soft check would be sufficient for me).
-
-2.) Can I tell git and git-ssh which pubkey to use WITHOUT changing system-/user wide config (e.g.., .ssh/*)? If it is indeed not possible, what's the best way to do it in Windows?
-
-Thanks!
diff --git a/doc/forum/Restricting_git-annex-shell_to_a_specific_repository.mdwn b/doc/forum/Restricting_git-annex-shell_to_a_specific_repository.mdwn
deleted file mode 100644
--- a/doc/forum/Restricting_git-annex-shell_to_a_specific_repository.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Is there a way to restrict git-annex-shell to a specific directory?
-Currently, if git-annex is paired to a remote repository, it adds this to the authorized_keys:
-
-
-    $ cat ~/.ssh/authorized_keys
-    command="~/.ssh/git-annex-shell",no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-rsa AAAAB3...
-
-    $ cat ~/.ssh/git-annex-shell 
-    #!/bin/sh
-    set -e
-    exec git-annex-shell -c "$SSH_ORIGINAL_COMMAND"
-
-That gives whoever has the pubkey the right to access all repositories of one user.
-It would be nice to have a manual way to limit the access to a specific repository like 
-
-
-    $ cat ~/.ssh/git-annex-shell 
-    #!/bin/sh
-    set -e
-    export GIT_ANNEX_SHELL_REPO=~/annex
-    exec git-annex-shell -c "$SSH_ORIGINAL_COMMAND"
-
-
-Or maybe some chroot hackery is the way to go?
-
diff --git a/doc/forum/Retrieve_previous_version_in_direct_mode.mdwn b/doc/forum/Retrieve_previous_version_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Retrieve_previous_version_in_direct_mode.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I use the assistant with a local directory in direct mode. I have read in different places that direct mode does not ensure that past versions of files are preserved.
-
-What precisely happens to past versions? Under which conditions are past versions kept?
-
-How would I go about retrieving the past version of a file in direct mode?
diff --git a/doc/forum/Reusing_existing_annex.uuid.mdwn b/doc/forum/Reusing_existing_annex.uuid.mdwn
deleted file mode 100644
--- a/doc/forum/Reusing_existing_annex.uuid.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-I recently replaced a disk that was failing with a new disk. Rather than just clone and create a new remote, I decided I'd reuse the existing anex.uuid, since I wanted to mount the replacement disk in the same spot/using the same name as before. The annex.uuid was the one I saw [here](http://git-annex.branchable.com/forum/Truly_purging_dead_repositories/#comment-b89d6a7ab50180c901f53761f8a1a99d). 
-
-I have multiple disks that I store full copies of each of my repositories on; several are just regular git-annex remotes, and some are gcrypt remotes. All of them are local disks. 
-
-When I ran a `git annex sync` in the repo with the reused UUID, the repo, and subsequently the other non-encrypted repos that I synced to, have lost knowledge of the encrypted repos, e.g. when I run `git-annex info`, I do not see the encrypted repos in that list. Even more strangely, this only happened in 2 out of 7 repos; 5 of the repos retained the knowledge of the gcrypt repos. 
-
-The steps I used to recreate all of the repos was:
-
-```
-mkdir resued-uuid
-cd reused-uuid
-git init
-git config annex.uuid xxxxxxxxxxx-xxxxxxxx-xxxxxxxxx
-git annex init "My reused uuid repo"
-git annex fsck (as directed to run in the linked comment, but this didn't do anything because there were no files in the repo and the repo did not have other repos' remotes added to it)
-git remote add existing-repo ~/some/repo/path
-git annex sync
-git annex sync --content (all content copied over; subsequent fscks' don't reveal any damaged files)
-```
-
-I'm curious as to any insight as to why this might have happened and what went wrong.
-
-How can I add existing gcrypt remotes to the repos that are missing them.
-
-Does git annex copy some part of .git/config around to different repos?  
-
-Can I just copy part of a .git/config with the grcrypt remotes listed there and sync them up? 
diff --git a/doc/forum/Revert_file_linkage_to_original_files.mdwn b/doc/forum/Revert_file_linkage_to_original_files.mdwn
deleted file mode 100644
--- a/doc/forum/Revert_file_linkage_to_original_files.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I've recently found the following problem:
-
-I really really want to get back my original folder structure - which includes the real files, not the symlinks. I've searched for quite a while, but I simply could not find an acceptable solution...
-
-So I thought I would like to ask you guys here, if anybody experienced similar problems (or at least knows a solution for my problem)?
-
-Greetings
-
-Pethor
diff --git a/doc/forum/Revert_to_a_precedent_state_in_direct_mode.mdwn b/doc/forum/Revert_to_a_precedent_state_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/Revert_to_a_precedent_state_in_direct_mode.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have made some mistakes while using `git annex import` in direct mode. Now I see that some files have been erroneously added and there are other problems. I have not yet used `git annex sync`.
-
-How can I tell git-annex in direct mode (or bare git) to forget about all these changes and revert back to the last known good (pre-import) state? This means also removing the few imported files and recreate their links.
diff --git a/doc/forum/Robustness_on_failing_hardware.mdwn b/doc/forum/Robustness_on_failing_hardware.mdwn
deleted file mode 100644
--- a/doc/forum/Robustness_on_failing_hardware.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Hi everyone,
-
-
-I've had a bad git-annex day and I left some musings on my first use of it. There's a question though at the end if you don't need to read that.
-
-
-today I've spend some time trying to deal with a failing SHA256E backend. Or more precise, I'm patienting a refurbished Athlon board[*] without case and that seems to give a lot of errors. I've put up some shielding at the SDRAM which helped a lot on the checksumming, but now its the network department is having a hard time. 
-
-This is basicly an effort to recover an old 1.5TB USB NTFS disks with bit rot, a failed ext4 and recover collections from other aging USB/desktop disks. There is some new hardware on the way, to restore another (proper) box with some ECC memory. That should fix my problems, I think. I've never dealt with a problem like this before. Before git-annex I would have been using rsync -azc or mostly -azu, but I've never had problems like this before. 
-
-It has me pondering a bit though. To help git-annex i've done manual rsync -azc transfers, with some although a very low success--I wonder if its the lack of casing, lack of ground, or simply the non-ecc that is the cause. But that is not really the question.
-
-rsync does not at first glance have an option to configure the amount of retries, but -azc does try and gives a checksum failure another try before giving up. I had never seen rsync do that before even though I've been using it for a decade. I guess that shows how rare this problem should be, but its still creeping me a bit. I've never had checksummed media file collections, so I really cant be sure about integrity, can I?
-
-The behaviour of the SHA256E backend is a bit hysterical in this environment. Running a full annex fsck always results in some bad files. The bigger the file the harder it is to get a checksum match. I guess if I wanted to continue I should wrap the fsck step in a shell script that can reinject and fsck again and does do not needless re-checks in one run. It should figure it out in the end with a bit of more time.
-
-My other reaction would be to throw more checksums at it, from simple to complex. Something between filesize and sha256. I guess the whole would then have some different modes of retries and behaviours of failure maybe. Or levels of trust in the integrity. Maybe using simpler checksums would make the situation more bearable, since the problem is not disk-related iow. if the file is there and has checked out ok, then the re-fsck itself and bad memory/shielding are the culprits. 
-
-tldr;
-
-git-annex has no retry at all. I have seen it can take a -i <keyfile> somewhere. For robustness, it would be nice if there was a rsync -c mode. It would confirm the object was transferred correctly too. My workflow is to 'annex fsck' at the remote after copying files there. Is it correct to presume that using 'annex move' in my case, would have made the sending repo dropping files even though the remote still has only corrupted copies?
-
-I'm new to git-annex but been wanting something like git annex for a long time. Made some attempts myself, and too pondered how to use venerable GIT but never figured something out. What I'm saying though is I may want to dig around to see what I can do with Haskell. 
-
-I'm thinking a backend with some more checksums, maybe then some option to fsck to request only partial check of the key. Has something like a faster/less-thorough fsck using smaller checksums ever come up? And might this be a way to go at this? What do you think.
-
-
-
-
-[*] Asus M2A7A-AM SE w/ AMD Athlon 64 X2 5200+ Dual Core 2.7 
diff --git a/doc/forum/Running_assistant_on_a_server___40__no_X_available__41__.mdwn b/doc/forum/Running_assistant_on_a_server___40__no_X_available__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Running_assistant_on_a_server___40__no_X_available__41__.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-How can I run the assistant on a server and access the webinterface over the network from my client pc?
-The use case I have in mind is that the server can automatically synchronize files, pushed over XMPP.
diff --git a/doc/forum/Running_assistant_steps_manually.mdwn b/doc/forum/Running_assistant_steps_manually.mdwn
deleted file mode 100644
--- a/doc/forum/Running_assistant_steps_manually.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Unfortunately one of the machines that I am running git-annex on is too old to handle the watcher thread.
-
-The error message is:
-
-    Watcher crashed: Need at least OSX 10.7.0 for file-level FSEvents
-
-
-I am however interested in duplicating the assistant steps manually.  I'm happy to accept that I won't have the great, auto-magic, coverage, but, how I run the steps that the assistant runs?
-
-I'm guessing there is a:
-
-    git annex add .
-    git commit -m "[blah]"
-    git annex sync
-
-but how do I get the pushing to backup/transfer/whatever remotes to work?  And what order should I do these?
-
-What I would *like* to do is get a script that runs all of the needed annex steps and then kick it off in a cron job 2-5 times a day.
-
-Any thoughts?
diff --git a/doc/forum/Running_out_of__inodes.mdwn b/doc/forum/Running_out_of__inodes.mdwn
deleted file mode 100644
--- a/doc/forum/Running_out_of__inodes.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-When syncing with a huge git annex repository on usb disk, my small laptop partition runs out of inodes.
-
-Any workaround for this?
-
-- Use bare repository?
-
-    Some git annex command are not supported.
-    This makes managing (particularly adding) files difficult.
-
-- Use a loop file partition with tiny block size and large inode numbers?
-
-    Operations on a huge git repository are slow.
-    On a loop file partition will be slower.
-
-- Maybe shrink the partition and make room for a specific partition for git annex repository?
-
-Any opinions?   
diff --git a/doc/forum/S3_Host_Question.mdwn b/doc/forum/S3_Host_Question.mdwn
deleted file mode 100644
--- a/doc/forum/S3_Host_Question.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I have two machines A & B.  Each have their our repository.
-
-On machine A I have created a remotehost (S3) and have synced successfully.
-
-I am trying to link machine B to the same remote host.  I keep getting an error on the initremote command on machine B.
-
-I tried using the same command as I did on A and it is not working.   Is there a different command to link machine B to an existing remote repository?
-
-Any help is appreciated.
-
-Rob
diff --git a/doc/forum/S3_remote_not_available.mdwn b/doc/forum/S3_remote_not_available.mdwn
deleted file mode 100644
--- a/doc/forum/S3_remote_not_available.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-One of my remotes is S3 (named s3). I used to be able to run
-
-    $ git annex sync s3 --content
-
-But now I'm getting the following error:
-
-    commit  
-    On branch master
-    nothing to commit, working directory clean
-    ok
-    git-annex: there is no available git remote named "s3"
-
-My `.git/config` file contains following lines which I would assume mean that the remote is there:
-
-    [remote "s3"]
-            annex-s3 = true
-            annex-uuid = bd9af194-b736-4114-a689-9a8bf212fb18
-            fetch = 
-            annex-sync = false
-
-As far as I can tell only change I did was to install newer version of git-annex, currently I have:
-
-    git-annex version: 6.20160418
-    build flags: Assistant Webapp Pairing Testsuite WebDAV FsEvents XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-    remote types: git gcrypt bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    local repository version: 6
-    supported repository versions: 5 6
-    upgrade supported from repository versions: 0 1 2 4 5
-
-How do I recover access to that remote?
diff --git a/doc/forum/SSH_remote_transfers_queued_but_no_movement.mdwn b/doc/forum/SSH_remote_transfers_queued_but_no_movement.mdwn
deleted file mode 100644
--- a/doc/forum/SSH_remote_transfers_queued_but_no_movement.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I created a local repository using the assistant, followed by setting up a remote ssh 'full backup' repository. While the assistant is running, changes in the local repository are detected and transfers are initiated, but they stay at 0%. How can I go about trouble-shooting this? I've made the remote annex directories 777 permissions for testing, but no change.
-
-Thanks
diff --git a/doc/forum/Same_Jabber_account_for_different_annexes.mdwn b/doc/forum/Same_Jabber_account_for_different_annexes.mdwn
deleted file mode 100644
--- a/doc/forum/Same_Jabber_account_for_different_annexes.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is it possible to use the same jabber account for different annexes? I think I've mixed up several repositories by using the same jabber account for synchronizing...
diff --git a/doc/forum/Searching_metadata_and_file_content__63__.mdwn b/doc/forum/Searching_metadata_and_file_content__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Searching_metadata_and_file_content__63__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hi
-
-Is there any (built-in or otherwise) way to search git-annex metadata and file content?  Ideally I think something that knows about git-annex would be helpful because of files moving around / going away due to metadata driven views, dangling symlinks etc.
-
-I'm imagining:
-
-* Something based on Lucene (solr/elasticsearch) or Xapian for fast searches
-* Probably ideally using git-annex metadata to track which files move where on disk
-* Maybe use of inotify to let it know when git annex has moved file content around or added/removed it from a working tree
-
-Thanks everybody, and Joey for making git annex and being an inspiration
diff --git a/doc/forum/Securing_a_shared_ssh_server.mdwn b/doc/forum/Securing_a_shared_ssh_server.mdwn
deleted file mode 100644
--- a/doc/forum/Securing_a_shared_ssh_server.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Hi, I'd like to share files with friends, to do so we need a shared server to exchange the files. I could setup an ssh access on one of my servers but I don't want others to have a full access. I assume I can restrict this using a `command='wrapper-around-git'` prefix in `.ssh/authorized_keys`, where `wrapper-around-git` is simply a script that checks if `SSH_ORIGINAL_COMMAND` is an authorised command and runs it. This is exactly the approach used with Mercurial (hg-ssh) and presumably git also relies on this mechanism.
-
-But to do so, I need to know what commands can be executed over ssh when using git-annex assistant. Could you document about this? Thanks!
diff --git a/doc/forum/Sending_requests_across_the_network.mdwn b/doc/forum/Sending_requests_across_the_network.mdwn
deleted file mode 100644
--- a/doc/forum/Sending_requests_across_the_network.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Hi,
-
-Is it possible to have git-annex send requests across the repository network? Say I have a network topology like this:  
-Home (annex) <-> Cloud (S3) <-> Laptop (annex)  
-
-Home has all files, cloud has zero, and laptop has subset of files. Let's also assume Laptop can't talk to Home directly (maybe it's behind a NAT), but both Home and Laptop are connected to the internet.  
-If I'm away on my laptop, can I retrieve a file from Home "through" Cloud?
-
-That is, Laptop checking its remotes and none of them have the file I want, so it checks remotes of remotes, etc. I'm not sure if git-annex knows the topology (seems likely considering it can generate the graphviz image). It also seems there is a communication medium of Jabber/XMPP where it could communicate between internet-connected git-annex servers (which might not otherwise be able to talk to each other directly)? So the fact that Cloud isn't a git-annex server, just a dumb key/value store would be okay?
-
-I realize that I could set it up so Home mirrors everything to Cloud and then that eventually mirrors over to Laptop, but let's assume both Cloud and Laptop have small storage capacities, so on-demand fetching would be needed.
-
-This is basically the same usecase as the USB transfer drive to sync two annexes not on the same network, but automated.
-
-Thanks!
diff --git a/doc/forum/Setup_of_rsync_special_remote_with_non-standard_ssh_port.mdwn b/doc/forum/Setup_of_rsync_special_remote_with_non-standard_ssh_port.mdwn
deleted file mode 100644
--- a/doc/forum/Setup_of_rsync_special_remote_with_non-standard_ssh_port.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I want to setup a rsync special remote on my server with a non-standard ssh port.
-
-I tried the following steps:
-
-    git annex initremote rsync-encrypted type=rsync rsyncurl=1.2.3.4:/encrypted-annex encryption=AAAAAAAAA
-    git config remote.rsync-encrypted.annex-rsync-options "-e \'ssh -p 443\'"
-
-But I just get this error:
-
-    [2012-11-22 21:04:30 CET] read: rsync ["-e","'ssh","-p","443'","--progress","--recursive","--partial","-- partial-dir=.rsync-partial","/home/marco/annex/.git/annex/tmp/rsynctmp/15309/","1.2.3.4:/encrypted-annex"]
-    Missing trailing-' in remote-shell command.
-
-I tried some ways to escape the config but I don't have a clue. Anybody?
diff --git a/doc/forum/Share_only_certain_files_of_a_repo___40__Assistant__41__.mdwn b/doc/forum/Share_only_certain_files_of_a_repo___40__Assistant__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Share_only_certain_files_of_a_repo___40__Assistant__41__.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-
-When using git-annex assistant, is there a possibility to share only certain files or directories from a repository (similar to what Dropbox can do), or do we have to share whole repositories so far?
-Could this be a nice wishlist item, or is there a strong reason against adding this feature to git-annex?
-
-Thanks a lot!
diff --git a/doc/forum/Share_with_friend_copies_only_sym_links.mdwn b/doc/forum/Share_with_friend_copies_only_sym_links.mdwn
deleted file mode 100644
--- a/doc/forum/Share_with_friend_copies_only_sym_links.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-I just setup git-annex across three macs, using git-annex assistant.  I have one repository working fine, which successfully syncs between two of my own accounts on two different machines, via S3.
-
-Now I'm trying to get the "share with a friend" feature to work.  The problem is that only Mac Alias's / sym links are created, for example:
-
-Machine 1:
-- Copy file into ~/annex/
-
-Machine 2:
-- The file is synced as a sym-link, with a link into a file in .git that doesn't exist.
-
-The config is:
-- Version: 4.20130909-ga29f960 - Build flags: Assistant Webapp Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi
-- Two macs
-- Share with friend over Jabber
-- Use Box as the cloud sync service with encryption enabled.  Box is setup as a transfer repository.
-
-I've looked through the logs in .git/annex/daemon.log* and there doesn't look to be any problems.
-
-This is what the log looks like:
-
-    [2013-09-14 19:55:47 PDT] Committer: Adding 20120101-..084-1.jpg
-    failed
-    add /Users/nick/Shared/20120101-GOPR0084-1.jpg (checksum...) ok 
-    add /Users/nick/Shared/20120101-GOPR0084-1.jpg (checksum...) ok 
-    add /Users/nick/Shared/20120101-GOPR0084-1.jpg (checksum...) ok 
-    add /Users/nick/Shared/20120101-GOPR0084-1.jpg (checksum...) ok 
-    add /Users/nick/Shared/20120101-GOPR0084-1.jpg (checksum...) [2013-09-14 19:55:47 PDT] Committer: Committing changes to git
-    [2013-09-14 19:55:48 PDT] XMPPSendPack: Syncing with USER2 
-    Already up-to-date.
-    To xmpp::USER2@gmail.com
-       7b65b15..183b91c  git-annex -> refs/synced/6163ef8e-c36a-4b09-919b-9c18ade55234/bmlja2JsYWNrMUBnbWFpbC5jb20=/git-annex
-       3104275..96afa09  master -> refs/synced/6163ef8e-c36a-4b09-919b-9c18ade55234/bmlja2JsYWNrMUBnbWFpbC5jb20=/master
-    [2013-09-14 19:55:49 PDT] XMPPSendPack: Syncing with USER2 
-    Everything up-to-date
-    recv: resource vanished (Connection reset by peer)
-
-
-Any ideas what I should look at next?  Thanks in advance :-)
diff --git a/doc/forum/Shared_Encryption_does_not_Work_as_Expected.mdwn b/doc/forum/Shared_Encryption_does_not_Work_as_Expected.mdwn
deleted file mode 100644
--- a/doc/forum/Shared_Encryption_does_not_Work_as_Expected.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I recently started to set up a share that would be synced between multiple machines.  Since I control all of them I thought it might be cool to try using the suggested "shared encryption".  This seems to have been a mistake.
-
-My project folder is now a big mess of symlinks to read-only files.  
-
-I can fix this with a "cp -RH" and get my data back and I can muddle through fixing the permissions but this leads me to two conclusions:
-
-1.  I did something wrong but I don't know what.  Should I have created the ssh remote first and the local repo second?  
-
-2.  This feature should either be hidden or the UI should be much more explicit about how to use it properly.  This cost me quite a bit of time and frustration.
-
-I really like git-annex so I would appreciate any comments or suggestions.
diff --git a/doc/forum/Sharing_annex_with_local_clones.mdwn b/doc/forum/Sharing_annex_with_local_clones.mdwn
deleted file mode 100644
--- a/doc/forum/Sharing_annex_with_local_clones.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Hi, is there any particular problem with symlinking one .git/annex to share between multiple repos?
diff --git a/doc/forum/Simple_check_out_with_assistant__63__.mdwn b/doc/forum/Simple_check_out_with_assistant__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Simple_check_out_with_assistant__63__.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-I want to use the annex assistant instead of the command line. Which is the recommended method to check out a file that I want to edit?
-
diff --git a/doc/forum/Simple_question_about_web_remote.mdwn b/doc/forum/Simple_question_about_web_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Simple_question_about_web_remote.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Hello. I have been having some trouble with downloading podcasts. I have read the guide, but I was getting the following error message:
-
-```
-  verification of content failed
-
-  Unable to access these remotes: web
-
-  Try making some of these repositories available:
-  	00000000-0000-0000-0000-000000000001 -- web
-failed
-git-annex: get: 1 failed
-```
-I have tried several times. Some times it seemed to work, others it did not — it was not very structured, so I do not recall the details. Recently I recreated the entire stuff from scratch and was downloading files, and after I upgraded to 6.20160318 it stopped working and just gives me the error message above, after downloading the file.
-
-I tried looking up information about the web remote, but it mentions nothing about "making the web remote available" or something that I found to address this subject. So I am confused. What is wrong with my web repository? Why did it stop working? How can I fix it? How can I prevent this from happening in the future? Thank you.
-
-Here is the version information:
-
-```
-git-annex version: 6.20160318
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-local repository version: 6
-supported repository versions: 5 6
-upgrade supported from repository versions: 0 1 2 4 5
-```
diff --git a/doc/forum/Slightly_finer_control_over_file_whereabouts.mdwn b/doc/forum/Slightly_finer_control_over_file_whereabouts.mdwn
deleted file mode 100644
--- a/doc/forum/Slightly_finer_control_over_file_whereabouts.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-I have previously been confused by how to have a bit more manual control over where files are (as in [[bugs/git-annex_immediately_re-gets_dropped_files/]]).
-
-I thought perhaps something like an archive directory would work, but as I might want different computers to have different content, perhaps a per-computer archive repository.
-
-To that end, I have
-
-<pre>walter@dionysus:~/annex$ git annex content .
-(exclude=archive/dionysus/* or (not (copies=archive:1 or copies=smallarchive:1))) or (not copies=semitrusted+:1)
-ok</pre>
-
-which is a modified version of the archive [[preferred_content]], but with the intention that I change the part after `exclude` to be different for each client.
-I also set the group to client for this client (dionysus).
-
-However, it does not seem to drop files when I move them into `archive/dionysus/`, and I cannot see anything in the logs to suggest why.
-
-What am I doing wrong here? Or, is this the wrong approach?
-
---Walter
diff --git a/doc/forum/Slow_transfer_speeds_on_copy_in_Windows.mdwn b/doc/forum/Slow_transfer_speeds_on_copy_in_Windows.mdwn
deleted file mode 100644
--- a/doc/forum/Slow_transfer_speeds_on_copy_in_Windows.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Copying a large file from windows (msysgit 1.9.5.msysgit.1, git-annex 20150406) to a bare repository on debian wheezy (git 1.9.1 git-annex 20141024)  I can only get around 2 MB/s transfer speed.  I tested using normal windows copy (smb) and got around 10 MB/s, while the git-annex copy was still going on.  I tried plain ssh and got 9 MB/s.  So, something to do with git-annex is being slow it seems.  Any ideas on how to remedy this, or is it a known issue?
-
-Note: Problem not seen going from linux to linux... waaaayyy faster (40 MB/s) to put it lightly (10 min vs all day)  The destination server is the same.
diff --git a/doc/forum/Some_mounted_devices_not_detected.mdwn b/doc/forum/Some_mounted_devices_not_detected.mdwn
deleted file mode 100644
--- a/doc/forum/Some_mounted_devices_not_detected.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Automounted USB devices are not detected by the git-annex webapp on my Debian testing/squeeze installation, only drives with entries in /etc/fstab show up in the device list. Is there any way to tweak/get around this?
-
-I'm running version 4.20131106 (couldn't manage to build the package for sid). 
diff --git a/doc/forum/Somehow_have_lots_of_directories_in_root__58___000...ffff.mdwn b/doc/forum/Somehow_have_lots_of_directories_in_root__58___000...ffff.mdwn
deleted file mode 100644
--- a/doc/forum/Somehow_have_lots_of_directories_in_root__58___000...ffff.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-I'm using git-annex to manage my photos on my laptop, and have my NAS (which is just a debian linux system with lots of disks) as one of my remotes. I use my NAS as a backup, and to free up space on my laptop.
-
-But somehow I now have lots of directories in my main root directory of the photos directory. it looks like [0-9a-f][0-9a-f][0-9a-f], so I have 000, ... a00, ... ddd, ..., all the way to fff. Thousands of them. Each one has a few directories that also match [0-9a-f][0-9a-f][0-9a-f], and each one has a file with names of the git annex object filename.
-
-e.g.:
-
-    $ cat e1d/760/SHA256-s4061375--7909e266f340ff8bc692e073e776ceda267042adf790275a2d851f2c7eb1ca83.log 
-    1338931894.759394s 1 1adfa84c-af51-11e1-b075-0b1206d553bc
-    1338992164.202818s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
-    1339862991.346546s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
-    1339946933.224915s 1 224d85b4-b86f-11e1-b11e-3333ce526126
-    1339964057.205993s 1 224d85b4-b86f-11e1-b11e-3333ce526126
-    1343495865.083951s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
-    1344788941.403528s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
-    1351802706.679542s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
-    1362423729.820711s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
-
-My remote (NAS) has these files & directories as well as my laptop. The regular photo directory hierarchy is there as well, the files work, can be copied etc. "git status" say nothing has changed. Those files are tracked by git (they have lot messages). Everything just works, it's just that there's loads of these directories? Can I remove them? How can I clear it up? I can't remember when these directories/files were added, I only noticed it today.
-
-I don't know if I had my remote (NAS) as a bare git repo and used it as that, then somehow used it as a non-bare one, would that cause this?
-
-Can I remove them? Where did they come from? What's going on?
diff --git a/doc/forum/Special_remote_public_key_encryption_issue.mdwn b/doc/forum/Special_remote_public_key_encryption_issue.mdwn
deleted file mode 100644
--- a/doc/forum/Special_remote_public_key_encryption_issue.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-I'm unable to set up a standard architecture: 2 computers sharing some files, talking via a jabber account and transferring files via e.g. box.com.
-Steps:
-
-Computer 1: 
-a) Install git-annex, open up the assistant, create a new repository, add a jabber account
-b) Add a box.com account using
-WEBDAV_USERNAME=[username] WEBDAV_PASSWORD=[password] git annex initremote box.com type=webdav url=https://dav.box.com/dav/git-annex chunksize=75mb encryption=pubkey keyid=[key id].
-All seemed fine.
-
-Computer 2:
-a) same
-b) at this point I saw the option of adding box.com as a cloud storage. I clicked enable and got the message
-
-user error (gpg ["--quiet","--trust-model","always","--decrypt"] exited 2)
-
-In the meantime, on Computer 1 I saw the same option. I clicked enable and got the same message.
-
-It all works fine if I use shared encryption.
diff --git a/doc/forum/Special_remote_without_chmod.mdwn b/doc/forum/Special_remote_without_chmod.mdwn
deleted file mode 100644
--- a/doc/forum/Special_remote_without_chmod.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Apparently, the tablet computer I'm using (Galaxy Tab 2, non-rooted) does not export the sd cards via mass storage protocol (UMS) any more. In order to be able to use a special remote for my mp3-files,  I installed an ftp/ssh server on the tablet device and used curlftpfs/sshfs (fuse file systems) to mount the sd cards on my local Linux machine. In this way, it is is quite easy to setup the special remote (e.g. "git-annex initremote galaxy-tab type=directory directory=$HOME/mnt/galaxy-tab encryption=none"). 
-
-Problems arise, when files are transferred to the special remote. From the logs of the ftp server, I can see that the actual copy operation is successful (the data is written to the file system), but the subsequent "chmod" that changes the permissions to read-only fails. The output on the console of a "git-annex copy -t galaxy-tab" is 
-
-    copy 01 some.mp3 (to galaxy-tab...) 
-    failed                  
-    git-annex: copy: 1 failed
-
-
-Therefore my question: is it possible to perform a file transfer to a special remote (type=directory) without the final "chmod"-operation?
-
-Thank you.
diff --git a/doc/forum/Speed_up_remote_transfers.mdwn b/doc/forum/Speed_up_remote_transfers.mdwn
deleted file mode 100644
--- a/doc/forum/Speed_up_remote_transfers.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I am currently trying to transfer git-annex managed files to my server.
-
-I am getting them with `git annex /path`. However, these are very many small files, and git annex seems to take a tiny break in between them, so the process takes considerably longer than uploading a single file of the same size would.
-
-Do you have any suggestions for improving my transfer speed in this case?
diff --git a/doc/forum/Ssh_remote_on_NAS.mdwn b/doc/forum/Ssh_remote_on_NAS.mdwn
deleted file mode 100644
--- a/doc/forum/Ssh_remote_on_NAS.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Hello,
-
-I finally have git annex working on my NAS (QNAP TS-119P II) thanks to the stand-alone arm pre-build package.
-
-I've just extracted all the files on my NAS and I've linked all the exec files from the git-annex.linux folder to links placed in a path folder, so that I can run git annex everywhere on the NAS.
-
-    [~] # git annex version
-    git-annex version: 5.20140528-g92a0591
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-
-Now I'm trying to set it up as an SSH remote of my laptop repository, but I get this error:
-
-    git clone ssh://admin@nas:/share/HDA_DATA/myDir ./
-    Cloning into '.'...
-    admin@nas's password: 
-    sh: git-upload-pack: command not found
-    fatal: Could not read from remote repository.
-    
-    Please make sure you have the correct access rights
-    and the repository exists.
-
-I've checked that git-upload-pack is available both on my laptop and on the NAS and the "myDir" folder is supposed to be readable for the admin user on the NAS, even if the user I use on the laptop and on the NAS for git annex is different from the one I use to login. In fact, if I try to scp files from the annex folder then I don't get any permissions error.
-
-    scp admin@192.168.132.66:/share/HDA_DATA/myDir/* ./
-    admin@192.168.132.66's password: 
-    doctest                                                100%    5     0.0KB/s   0.0KB/s   00:00    
-    doctest2                                               100%   51     0.1KB/s   0.1KB/s   00:01
-
-Is there something else I should look at, in order to fix it and make it work?
-
-Thanks,
-Fabio
diff --git a/doc/forum/Standard_groups__47__preferred_contents.mdwn b/doc/forum/Standard_groups__47__preferred_contents.mdwn
deleted file mode 100644
--- a/doc/forum/Standard_groups__47__preferred_contents.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Sorry that I am not stop asking questions - I am trying to wrap my head around annex still - and I do not fully understand the standard groups/preferred contents yet.
-
-
-First, basic: Is the "preferred content group" an attribute of a repository or of a remote? E.g., when I use assistant, I can set this property for a *remote* repository. Will this property be synced to all other clients then or is it only valid for this particular client?
-
-Second, I think the standard groups do still not cover what I want and I wonder if this could be done with preferred contents somehow? What I want:
-
-* Generally only the structure should be synced, no contents (i.e. "manual" is the closest)
-
-* When I (manually) do "git annex get" on a file this file should be synced whenever it changes locally *or* remotely (until I drop it again). Currently it seems that when it changes remotely, it is "dropped" again so I need to manually use "git annex get" again
-
-* When I (manually) do "git annex get" on a directory, it should be (recursively) synced whenever it or any file changes locally or remotely (until I drop it again). Currently nothing seems to sync at all in this case (except the meta data)
-
-Thanks!
diff --git a/doc/forum/Standards_usage_pattern__63__.mdwn b/doc/forum/Standards_usage_pattern__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Standards_usage_pattern__63__.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-I have few devices: 2x android, 2x windows, 2x linux and I would like to share at least one folder on all of them.
-None of the devices have public IPs and some regularly change location (work laptops). Because the XMPP support is missing on windows I couldn't find a way to synchronize the repositories (the keys) or did I miss something in the documentation?
-How can I archieve "seamless" synchronization when I start the webapp on the devices?
-
-Thank you,
-Karol
diff --git a/doc/forum/Starting_assistant_from_CLI.mdwn b/doc/forum/Starting_assistant_from_CLI.mdwn
deleted file mode 100644
--- a/doc/forum/Starting_assistant_from_CLI.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I am unable to start the git-annex assistant/webapp.
-
-I use OpenBox as desktop manager and the assistant/webapp is not available through the menu.
-
-Trying to use the CLI, all my attempts fail with a message saying that it(?) is not a git repository!? Since the video show that on first start the assistant/webapp allows a choice of a directory and then creates it, I am not sure as to what git initialized directory does the assistant/webapp requires in this instance. And I also guess that means invoking the webapp from that directory rather than from the directory that contains the standalone git-annex.
-
-Any help would be appreciated as git-annex really seems to be the app I am looking for.  :)
-
-Thanks
diff --git a/doc/forum/Storing_copies_on_LTO_tapes__63__.mdwn b/doc/forum/Storing_copies_on_LTO_tapes__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Storing_copies_on_LTO_tapes__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I'm looking for a way to count/track annex data copied to LTO tapes.
-
-In my use case I'm splitting many terabytes of data to separate repositories on several hard drives, backing them up on tapes, and keeping track of all this with remotes in a central repository (with lots of dropped content). All good with the HDs, but I'm at a loss about how to handle the copies on tapes.
-
-Three alternatives I've come up with so far:
-
-1. Simply tar the repositories from the HDs to the tapes. Problem: no way to notify git annex of the existence of these manual copies. Or is there?
-2. Remote (special or normal) on LTFS (linear posix compatible file system on top of tape). Problems:
-    1. `git annex get`ing a dropped directory from there would cause files to be accessed in random order, right? Or is the retrieve guaranteed to happen in the same order as the files in the directory were written by `git annex copy`?
-    2. LTFS has a big block size (512KB) => wasted space when lots of small files. (Not a major problem, though.)
-3. Write a special (read-only) remote hook for `tar`. Problem: `git annex get` would make one hook *RETRIEVE* request per file, leading to random access again, while the only effective way would be to get a list of all files to be retrieved, and then returning them in the order they turn up from the tar package (or even ingest the whole tar file to .git/annex/).
-
-Thoughts?
diff --git a/doc/forum/Storing_git_repos_in_git-annex.mdwn b/doc/forum/Storing_git_repos_in_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/Storing_git_repos_in_git-annex.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-I tried to use the [old thread](http://git-annex.branchable.com/forum/Git_repos_in_git_annex__63__/?updated#comment-9fca5cf31ccfd3d78c78cb65f7672340) for this, but threads don't get bumped when they are updated, so I guess I'll have to start a new one...
-
-Here is the relevant [bug report](http://git-annex.branchable.com/bugs/Can__39__t_add_a_git_repo_to_git_annex:___34__Invalid_path_repo__47__.git__47__X__34___for_many_X).
-
-Here's my scenario: I have been using Dropbox for several years.  I want to move to git-annex.
-
-For some time I used Bazaar repos inside Dropbox.  A couple of times I accidentally modified files on one computer before another finished syncing, and the repo became mildly corrupted, but I recovered it okay.
-
-Recently I switched from bzr to git, and so far, so good.  I'm careful not to make any changes to my files before Dropbox is finished syncing, so everything works fine.
-
-Now I'm testing git-annex as a replacement for Dropbox again.  But when I add a directory containing a git repo to an annex, git-annex ignores the .git directory, so the repo isn't synced.
-
-I read this forum thread, and I read the bug report, but there don't appear to be any real solutions.
-
-This seems like what should be a fairly common use case: a user has a directory of simple text files, like shell scripts or org-mode files.  He uses git to version-control them, and he uses Dropbox to sync the files and the git repo automatically between computers.  Now the user wants to use git-annex instead, but if he does this, it will mean having to choose between:
-
-* No longer using git to version-control the files
-* Only using git on a single system, which means that he can't make commits or do any other git operations when using other systems
-* Keeping separate git repos on each system, and making the same commits manually on each one...which would be a mess
-* Keeping separate git repos on each system, and using a script to make commits automatically--which would mean commits wouldn't be any more useful than a simple timed backup script
-
-I guess I could just use git instead of Dropbox or git-annex, but then I must choose between either:
-
-* Only being able to sync repos when both systems are online
-* Having to store repos in plaintext on remote servers
-
-This is one of my primary use cases for Dropbox/git-annex.  I'd really appreciate any help in figuring this out.  Thanks.
diff --git a/doc/forum/Storing_uncontrolled_files_in_an_annex.mdwn b/doc/forum/Storing_uncontrolled_files_in_an_annex.mdwn
deleted file mode 100644
--- a/doc/forum/Storing_uncontrolled_files_in_an_annex.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Is there a way to store a file in an annex repo without the assistant trying to commit it? My particular issue is that git annex watch tries to add my .thunderbird folder, and I don't want it in annex. Is that a supported use case?
-
-Also, for my better understanding, does watch keep track of what files it saw last time and only look for new things on startup? Or does it try to commit anything that's not already in git (whether symlink or not)?
diff --git a/doc/forum/Stupid_mistake__58___recoverable__63__.mdwn b/doc/forum/Stupid_mistake__58___recoverable__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Stupid_mistake__58___recoverable__63__.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Hi,
-
-I was a bit hasty the other day and did something stupid.  I
-added a new folder to git annex.  Something like
-
-    git annex add my-important folder
-
-my-important folder contains a lot of files and it took a couple
-of minutes to add.  When I then tried to do
-
-    git commit -am 'added files'
-
-per the walkthrough I got an error (9, as I recall).  I thought
-I'd added too many files or something so I wanted to start over
-and perhaps I didn't fully understand the mechanisms of annex I
-did the following
-
-    git reset --hard .
-
-Unfortunately, did replaced my files with a bunch of symlinks,
-rather than making git annex forget and go back to the previous
-stage as I had hoped.
-
-I have managed to recover most of my files from backup, but some
-of them I still can't recover.  Is there any way back?  It seems
-I still have the files in my git folder.
-
-Thanks,
-Rasmus
-
-PS: Sorry, I shouldn't have made this text rather than Markdown.
diff --git a/doc/forum/Suggestion__58___Put_ssh_server_back_into_android_version.mdwn b/doc/forum/Suggestion__58___Put_ssh_server_back_into_android_version.mdwn
deleted file mode 100644
--- a/doc/forum/Suggestion__58___Put_ssh_server_back_into_android_version.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hi!
-
-Just tried various android ssh servers which do work, but have no access to the command line tools shipped with git annex.
-
-From what I gather from the planning docs, sshd was stripped from the android tools to save space. If this were the case, it (naively) seems to me it would have to be simple to re-enable.
-
-Rationale: It would make it super convenient to use command line git annex on my phone alongside the assistant, through letting me type on my desktop. Not to mention that the command line tools shipped with git annex are by far the best around for android work.
-
-Carlo
diff --git a/doc/forum/Symlink_points_to_old_version.mdwn b/doc/forum/Symlink_points_to_old_version.mdwn
deleted file mode 100644
--- a/doc/forum/Symlink_points_to_old_version.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Hello everyone,
-
-I have some PDF documents in a git annex repository. I appended a page to (several) of these PDF documents the following way:
-
-- `git annex edit file.pdf`
-- Append page to file.pdf
-- `git annex add file.pdf`
-- `git commit`
-
-If I now look at file.pdf it will not have the appended page. But if do `git annex edit file.pdf` again I will get the version with the appended page. `git annex add file.pdf` and the page "disappears" again. Anyone got any tips on how to solve this "mystery"?
-
-All the best,
-Per
diff --git a/doc/forum/Sync_files_from_remote_to_remote.mdwn b/doc/forum/Sync_files_from_remote_to_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Sync_files_from_remote_to_remote.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Not sure if this use case is supported, but I have the following setup - I use git-annex to store my Lightroom catalog and photos. My local machine does not contain all files, `.mov` files for example are excluded via the preferred content mechanism. The full backup is on a remote server using ssh.
-
-Now I want to create another copy of the data (encrypted) from my local machine to a USB stick or similar. I found that the locally excluded files are not synced. In order to copy all the data I first need to change the preferred content config, execute `git-annex get` to fetch the data, then copy via `git-annex sync myusbremote --content`, then change the local preferred content pattern, then run `git annex drop --auto` to delete the local unwanted content again.
-
-I was wondering if there's a way to sync from one remote to another, without storing any data locallly ? Something like `git-annex sync --from ... --to ...`.
diff --git a/doc/forum/Sync_only_what_is_not_available_from_my_central_git_repo.mdwn b/doc/forum/Sync_only_what_is_not_available_from_my_central_git_repo.mdwn
deleted file mode 100644
--- a/doc/forum/Sync_only_what_is_not_available_from_my_central_git_repo.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I work in a distributed startup.  We have a master repository on GitHub.  At the office we have modern hunky Linux desktops (seriously more powerful than any of our laptops).
-
-I (and others) have hard deadlines at the end of the day (typically child commitments).  If I leave from a meeting or brainstorming session without having pushed all of my work into the cloud then I cannot continue working from home.  This is because our office is behind multiple levels of NAT over which we have no control.  Hence I am unable to remote into my machine in order to push work up to GitHub or scp it to my laptop.
-
-Is there a way to get git-annex to sync only files that do not correspond to git objects available from our GitHub repository?  Because our source tree is quite large (2.5GB including tests and test data) I would not want git-annex to sync the entire tree.  And when I checkout a different branch I would not want git-annex to sync all changes between the previously checked-out branch and the new branch.  Rather I would like git-annex to discard any previously synced objects, note the identity of the new branch and the values of all files (object) not available from the upstream state of that branch on GitHub.
-
-Thanks in advance for any suggestions.
diff --git a/doc/forum/Sync_with_one_offline_peer.mdwn b/doc/forum/Sync_with_one_offline_peer.mdwn
deleted file mode 100644
--- a/doc/forum/Sync_with_one_offline_peer.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hello,
-
-I use the assistant to set up two repositories A and B synced using jabber. A third repository C on my server is used as rsync transfer. Syncing works fine between both repos when both are online.
-
-But when either A or B is offline the sync does not happen when it comes online again, though the file was synced to C.
-
-Is this because C is only a rsync repository and can't hold metadata? How can I achieve that the sync happens also when one of the repositories is offline?
-
-I also tried using the static build of git annex on my server. It seemed to run fine but during the setup the assistant got an error about too many command line arguments. On A und B I use the ArchLinux AUR build (https://aur.archlinux.org/packages/git-annex-standalone/), on C I use the static build. Could it be a version mismatch?
-
-Thanks!
diff --git a/doc/forum/Sync_without_jabber_account.mdwn b/doc/forum/Sync_without_jabber_account.mdwn
deleted file mode 100644
--- a/doc/forum/Sync_without_jabber_account.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hi,
-
-It is possible to keep devices sync only using a box.com account as a transfer remote, without Jabber? I can't use Jabber because of firewall restrictions.
-
-It would be nice to be able to use the transfer remote, in my case box.net, as the sync "provider", for example by polling a file with the needed changes in a pre-defined interval.
-
-Regards,
-
-Stone
diff --git a/doc/forum/Synchronize_large_files___40__VM_images__41__.mdwn b/doc/forum/Synchronize_large_files___40__VM_images__41__.mdwn
deleted file mode 100644
--- a/doc/forum/Synchronize_large_files___40__VM_images__41__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hi, 
-
-i'm thinking to use git-annex to synchronize my virtual machine directory (Virtualbox) between 3 pc. It's quite big: more than 200GB and some of the images are 40Gb in size.
-
-The synchronization will be over a lan (obviously). It is already in place with 2pc and unison but the configuration of the 3rd pc is cumbersome. 
-Does anybody have experiences with git-annex and such amount of data?
-
-Thanks in advance
-
-Gabriele
diff --git a/doc/forum/Syncing_Compressed_files.mdwn b/doc/forum/Syncing_Compressed_files.mdwn
deleted file mode 100644
--- a/doc/forum/Syncing_Compressed_files.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I don't see anywhere in the documentation that specifies this, but git-annex hasn't been syncing any kind of compressed file for me like zip files or 7z compressed files.  Haven't tried gzip files.  It has been working fine with other files like PDFs, video, images etc.  Was wanting to know if that is expected behaviour or if something is wrong?
diff --git a/doc/forum/Syncing_machines_on_different_networks.mdwn b/doc/forum/Syncing_machines_on_different_networks.mdwn
deleted file mode 100644
--- a/doc/forum/Syncing_machines_on_different_networks.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I've been using git-annex locally for a couple months. So far I've only used it to keep track of files on my laptop and local usb hard drives. Now I would like to add a network into the picture, and hopefully start to move away from Dropbox.
-
-I have Dropbox on two computers: my home machine and my work machine. The home machine is only on when I'm at home and the work machine is only on when I'm at work, so the computers are never on at the same time and thus can never communicate directly. What are my options for keeping annexes on these two machines in sync?
-
-Initially I was hoping that I could use an S3 special remote for this, but I see that special remotes only hold the actual file data, not any of the git stuff. So I can't push my changes to S3 at work and then pull those changes in at home.
-
-From what I can tell from the documentation, the only way I can handle this problem is to have an annex sitting on a VPS or someplace that both my home and work machines can talk to. Is that correct? That would be ok, but if I'm going to put my annex out there in the cloud somewhere, I want the files to be encrypted. It looks like git-annex only supports encryption of file data with special remotes, not a full annex. Is there no way to have some sort of encrypted git-annex hub?
-
-I backed the assistant and have been following the development blog, but I haven't tried it out yet. Am I correct in thinking that nothing in the assistant will address this particular issue?
diff --git a/doc/forum/Syncronisation_of_syncronisation_between_3_repositories__63__.mdwn b/doc/forum/Syncronisation_of_syncronisation_between_3_repositories__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Syncronisation_of_syncronisation_between_3_repositories__63__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hello Joey,
-
-I just want to know if file transfers between three inter-connected repositories somehow gets syncronized. I have a laptop, a local file server in my home and a virtual server on the internet.
-
-Both my laptop and my file server are configured with a full git repository and connected through pairing and xmpp. The server on the internet is configured as a rsync special remote.
-
-I want the local file server to hold a copy of everything in my annex, the rsync remote should get everything except the folder "media" (too large to upload and not that important) and the laptop whatever I manually decide (preferred content is set to "present").
-
-I have added some files to the repository on the local file server and transferred their content to my laptop by using "git annex get". But when I started the web interface, I saw that those files who are present on both the file server and on the laptop get uploaded to the remote server from both computers, often the same file at the same time. Previously I though the two assistants would somehow talk to each other via xmpp so that doubled effort like that would be avoided. I'm also worried about data consistency because two apparently separate processes rsync to the same remote repository at the same time.
-
-So my question would be: Is your xmpp protocol designed to deal with situations like this and I did not set it up correctly or is what I'm trying to accomplish simply not (yet) possible?
diff --git a/doc/forum/The_future_of_Direct_Mode.mdwn b/doc/forum/The_future_of_Direct_Mode.mdwn
deleted file mode 100644
--- a/doc/forum/The_future_of_Direct_Mode.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Hello everyone. I could use some pointers from experienced users. Here is my use-case:
-
-I have a number of portable storage devices where I store media files. They serve a number of purposes:
-
-  1. as archives and backup where I put away the data I am not using to allow for more free space on my work PC;
-
-  2. as storage for the media I play on a media playing device (that only supports Windows filesystems);
-
-  3. as transport medium to share files with other people (that are Windows-users).
-
-I wanted to use git-annex to manage/organize/locate all these devices, but without breaking too much my system. Most files are not super-important, and I intend to keep multiple copies of those that are.
-The main issue is that points 2 and 3 require that the real files need to be accessible directly. I *could* work around this using an extra device, but that would be much less practical, as I would need to go to the PC and transfer the large files over USB, so I am trying to avoid that.
-
-Here is what I learned so far:
-
-  - Indirect mode is OK on my PC. No problem there. However, it won't work on VFAT or NTFS, so I can't use it on the portable devices.
-
-  - Direct mode seems to work fine on the portable devices, but is now deprecated. It won't work on the V6 repositories.
-
-  - The new V6 repositories allows for the unlocking of files, replacing the link-like files (on Windows filesystems) with the real files, that allows me to browse them on the media player (by path and name). I did not find a way to keep them always unlocked by default, so I guess I would need to unlock them manually. Also, I would be keeping an extra copy of each file, since `annex.thin` won't work. In addition, as I don't expect to be editing any these files (not on these devices, at least), the loss of half the storage capacity is wasteful and undesirable.
-
-  - Special remotes `directory` and `rsync` do not keep the original structure of the system, and for this reason do not fit for my purposes.
-
-For now I can create V5 repositories and use direct mode on the external devices. I think this could work quite well, but I have the following questions:
-
-  1. Am I missing something that could help me?
-
-  2. Will using V5 repositories be somewhat future-proof? I mean, will I be able to create V5 repositories in the future? How much of a bad idea would it be to start using git-annex depending on "old versions"? I understand that direct mode will continue to be supported, but deprecation indicates it is a bad idea.
-
-  3. I am guessing that "direct mode" will not be making a comeback, but it does have its uses — however, I did not expect that my case was an unusual one. Is there anything on V6 repositories that would make new version more adequate to my requirements? I would not mind having the files read-only or facing similar restrictions if it helped simplify things.
-
-Thank you for your time.
diff --git a/doc/forum/Tracking_a_directory_with_some_hg_and_git_repositories.mdwn b/doc/forum/Tracking_a_directory_with_some_hg_and_git_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/Tracking_a_directory_with_some_hg_and_git_repositories.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-In my documents folder I have some Mercurial and Git repositories. Are there any side effects if I track the whole directory with git annex?
diff --git a/doc/forum/Transfer_remotes.mdwn b/doc/forum/Transfer_remotes.mdwn
deleted file mode 100644
--- a/doc/forum/Transfer_remotes.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Hi!
-
-I have a laptop A on which I setup a box.com special remote as a transfer encrypted repository. It is quite unclear to me how I should configure laptop B to use the same box.com remote and share files between the two machines.
diff --git a/doc/forum/Trouble_adding_ssh_remote_using_assistant_on_windows.mdwn b/doc/forum/Trouble_adding_ssh_remote_using_assistant_on_windows.mdwn
deleted file mode 100644
--- a/doc/forum/Trouble_adding_ssh_remote_using_assistant_on_windows.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Hi, just trying to set up git-annex-assistant on freshly installed windows 10. I've run the web app and created a local repo. I also grabbed the tarball on my server and ran "git-annex" with no arguments (?). I'm now trying to add remote server using ssh. I add the correct details and click "Check this server", at which point it displays "Testing Server, Checking ssh connection to the server. This could take a minute". indefinitely.
-
-I've checked the log and don't see any ssh errors, but I do see some weirdness:
-
-```
-(scanning...) [2015-06-29 19:02:36 GMT Summer Time] Watcher: Performing startup scan
-(started...) rerrrrrrceereeeevccecccc:vvcvvvv ::v::::f  :    aff ffffiaafaaaaliiaiiiiellilllldeeleeee ddedddd(  d    N(( ((((oNN(NNNN ooNooooe  o    ree eeeerrrerrrrorrrrrrrrooroooo)rrorrrr
-))r))))
-
-)
-
-rerrrceeevccc:vvv :::f   afffiaaaliiiellldeee ddd(   N(((oNNN oooe   reeerrrrorrrrooo)rrr
-)))
-
-rerrrrrrrrrrrrrceeeeeeeeeeeeevccccccccccccc:vvvvvvvvvvvvv :::::::::::::f             afffffffffffffiaaaaaaaaaaaaaliiiiiiiiiiiiiellllllllllllldeeeeeeeeeeeee ddddddddddddd(             N(((((((((((((oNNNNNNNNNNNNN oooooooooooooe             reeeeeeeeeeeeerrrrrrrrrrrrrrorrrrrrrrrrrrrrooooooooooooo)rrrrrrrrrrrrr
-)))))))))))))
-```
-
-Not sure what that is but it might be relevant? Any help would be appreciated.
diff --git a/doc/forum/Trouble_installing_from_cabal_on_debian-testing.mdwn b/doc/forum/Trouble_installing_from_cabal_on_debian-testing.mdwn
deleted file mode 100644
--- a/doc/forum/Trouble_installing_from_cabal_on_debian-testing.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I'm having trouble install from cabal on Debian-testing since the new beta released.
-
-    % sudo aptitude remove --purge cabal-install
-    % rm -rf $HOME/.cabal
-    % sudo aptitude install cabal-install
-    % cabal update
-    % cabal install git-annex
-
-The output all follows this general syntax:
-
-    <package> depends on <anotherpackage> which failed to install
-
-On the flip side, I upgrade my Debian to sid and it installed just fine through aptitude.
-
-(Apologies for my English, and if this is simply a user error)
diff --git a/doc/forum/Truly_purging_dead_repositories.mdwn b/doc/forum/Truly_purging_dead_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/Truly_purging_dead_repositories.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Since I'm just starting out with git-annex, I've had several false starts in getting things setup nicely between three machines.  In the course of so doing, I've ended up with several repositories which no longer exist, and which I've marked dead.  However, this is making the "git annex status" report a bit ugly, since these repositories no longer exist and can never exist again. Is there a way to truly purge dead repositories from my annex?  I'd be fine with a command that must be ran in tandem on all annexes before doing a sync...
diff --git a/doc/forum/Trying_to_delete_an_S3_repo_fails.mdwn b/doc/forum/Trying_to_delete_an_S3_repo_fails.mdwn
deleted file mode 100644
--- a/doc/forum/Trying_to_delete_an_S3_repo_fails.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-[2015-10-03 22:10:53.948377] TransferScanner: warning TransferScanner crashed: unknown response from git cat-file ("refs/heads/git-annex:706/2a9/SHA256E-s13840914--38cdcf384aee777000693f58f1302684bf18f577045c1340d7aeb72b6d6f2233.dmg.log.cnk missing","refs/heads/git-annex:b8f/4d2/SHA256E-s26301635--ce2f215486df83c6ada74a81679ff78f717404d0637bfd51ecbf0330c21db12b.dmg.log")
-
-What exactly is this telling me?
diff --git a/doc/forum/USB_backup_with_files_visible.mdwn b/doc/forum/USB_backup_with_files_visible.mdwn
deleted file mode 100644
--- a/doc/forum/USB_backup_with_files_visible.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Quick question: I want to create a repository on my removable USB drive that will acquire all files (eg. "full backup" repository group), but where the files will be visible and usable if you load the drive on another computer.
-
-How do I do that from within the assistant?
-
-Thanks,
-
-Zellyn
diff --git a/doc/forum/USB_drive_in_transfer_group_keeps_growing_-_assistant.mdwn b/doc/forum/USB_drive_in_transfer_group_keeps_growing_-_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/USB_drive_in_transfer_group_keeps_growing_-_assistant.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-1. Set up two computers with a client repository.
-2. Add a removable drive repository and set it to transfer group.
-3. Start adding files to computer #1 repository. See how the files get synced to the usb drive.
-4. Connect the usb drive to computer #2 and see the files getting transferred to computer #2. Everything is looking good.
-
-
-5. Connect the usb drive to computer #1 again. 
-6. Add a file that is larger than the remaining size of the usb drive, BUT smaller than the original size of the usb drive.
-7. The file does not get transferred to the usb drive due to lack of disk space.
-
-I would expect the assistant to make some space on the usb drive. Removing the files it knows has been transferred to computer #2, and then transfer the new file to the usb drive. But this does not seem to happen. 
-
-Have I missed something about how the transfer group is supposed to work?
-
- 
-Using version:
-git-annex version: 4.20130802-g0a52f02
-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-
-Pre built tar file.
-
-
diff --git a/doc/forum/Ubuntu_PPA.mdwn b/doc/forum/Ubuntu_PPA.mdwn
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Is there a PPA that Ubuntu people are using to track the latest git-annex?
-
-The [Ubuntu install page](http://git-annex.branchable.com/install/Ubuntu/) mentions [https://launchpad.net/~rubiojr/+archive/git-annex](https://launchpad.net/~rubiojr/+archive/git-annex) which hasn't been updated for a while.
diff --git a/doc/forum/Ubuntu_PPA/comment_1_b55535258b1b4bcfc802235f0cba075d._comment b/doc/forum/Ubuntu_PPA/comment_1_b55535258b1b4bcfc802235f0cba075d._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_1_b55535258b1b4bcfc802235f0cba075d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmeki7KlfJpAAN9CUmi9EdwhwBmIhDMYuE"
- nickname="Marvin"
- subject="comment 1"
- date="2013-03-11T09:40:43Z"
- content="""
-im also looking for a PPA with newer git-annex versions. mostly because of the glacier support...
-"""]]
diff --git a/doc/forum/Ubuntu_PPA/comment_2_adc4d644fed058d1811acf0b35db9c18._comment b/doc/forum/Ubuntu_PPA/comment_2_adc4d644fed058d1811acf0b35db9c18._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_2_adc4d644fed058d1811acf0b35db9c18._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmVICFY2CDP08xdsPr3cgmScomy9HA-1sk"
- nickname="Andrew"
- subject="comment 2"
- date="2013-03-13T02:31:52Z"
- content="""
-It's perfectly possible (though slightly messy) to install git-annex on Ubuntu via [[/install/cabal]], though you need to find and install all the required dependencies yourself (haskell, libidn, libgnutls, libgsasl etc). If you want to get crazy with this look at <http://developer.ubuntu.com/packaging/html/>
-"""]]
diff --git a/doc/forum/Ubuntu_PPA/comment_3_fc9cd51558c47718f243437202a11803._comment b/doc/forum/Ubuntu_PPA/comment_3_fc9cd51558c47718f243437202a11803._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_3_fc9cd51558c47718f243437202a11803._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="fmarier"
- ip="121.98.93.240"
- subject="My PPA (Ubuntu Precise) has git-annex 4.20130417"
- date="2013-04-27T11:12:26Z"
- content="""
-I just went through the pain of backporting 90+ Haskell packages from Debian unstable: https://launchpad.net/~fmarier/+archive/ppa
-"""]]
diff --git a/doc/forum/Ubuntu_PPA/comment_4_3a8bbd0a7450a7f5323cd13144824aea._comment b/doc/forum/Ubuntu_PPA/comment_4_3a8bbd0a7450a7f5323cd13144824aea._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_4_3a8bbd0a7450a7f5323cd13144824aea._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://grossmeier.net/"
- nickname="greg"
- subject="All PPAs are outdated"
- date="2013-05-08T17:38:04Z"
- content="""
-My work preinstalled Ubuntu machine is now on Raring, and even there the version of git-annex is only 3.20121112ubuntu3; too old to have the webapp option enabled :/ The two PPAs mentioned here aren't configured to build for Raring, so even though the one from François has a build from May 1st (7 days ago), it doesn't help me ;)
-
-François: mind updating your PPA to support Raring? Thanks much if you do!
-
-Either that, or I'll take the time some day to do a proper install on this machine (read: Debian). ;-)
-"""]]
diff --git a/doc/forum/Ubuntu_PPA/comment_5_2e1beaeebda0201c635db8b276cedf20._comment b/doc/forum/Ubuntu_PPA/comment_5_2e1beaeebda0201c635db8b276cedf20._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_5_2e1beaeebda0201c635db8b276cedf20._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo"
- nickname="Justin"
- subject="comment 5"
- date="2013-05-08T23:25:37Z"
- content="""
-If you are on raring you can still use
-
-    deb http://ppa.launchpad.net/fmarier/ppa/ubuntu precise main
-
-It's worked fine for me so far.
-"""]]
diff --git a/doc/forum/Ubuntu_PPA/comment_6_bd99fb70399fc58d98781a89c6d38428._comment b/doc/forum/Ubuntu_PPA/comment_6_bd99fb70399fc58d98781a89c6d38428._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_6_bd99fb70399fc58d98781a89c6d38428._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY"
- nickname="Pedro"
- subject="comment 6"
- date="2013-05-20T15:52:40Z"
- content="""
-Be careful that the fmarier ppa includes more than just git-annex.
-"""]]
diff --git a/doc/forum/Ubuntu_PPA/comment_7_c3f7ec8573934c59d70a48e36e321c13._comment b/doc/forum/Ubuntu_PPA/comment_7_c3f7ec8573934c59d70a48e36e321c13._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_7_c3f7ec8573934c59d70a48e36e321c13._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://openid.fmarier.org/"
- nickname="fmarier"
- subject="New location for my git-annex PPA"
- date="2013-06-15T07:42:13Z"
- content="""
-My Ubuntu Precise PPA has moved here: https://launchpad.net/~fmarier/+archive/git-annex
-
-It contains version 20130601 of git-annex.
-
-As Pedro suggested, it's now in a separate PPA with only git-annex and the 220 Haskell packages it depends on.
-"""]]
diff --git a/doc/forum/Ubuntu_PPA/comment_8_feecd478a4d44cb5ffc7020c646174ba._comment b/doc/forum/Ubuntu_PPA/comment_8_feecd478a4d44cb5ffc7020c646174ba._comment
deleted file mode 100644
--- a/doc/forum/Ubuntu_PPA/comment_8_feecd478a4d44cb5ffc7020c646174ba._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawntodrSgODU27WUCyN2PV7TC14YMkyaoxQ"
- nickname="Dennis"
- subject="Ubuntu Trusty 14.04"
- date="2015-01-24T03:19:41Z"
- content="""
-I am running into the same issue with Ubuntu Trusty 14.04. The version shipped is 5.20140412ubuntu1, but I would like to try a more recent version to see if an issue I experience still persists. Is there any up-to-date PPA available for Trusty?
-"""]]
diff --git a/doc/forum/Un-git-annex__63__.mdwn b/doc/forum/Un-git-annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Un-git-annex__63__.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-
-I am using git-annex assistant on my Fedora Linux computer. Everything seems to be working perfectly, however I have noticed that almost all of my files are now symbolic links to cryptic file names located in the .git/ directory. Oddly though it seems files inside git-annex assistant does not move/symbolic link files within git repositories inside my git-annex assist directories. My question is: how can I safely uninstall git-annex from my machine and restore all files to their non-symbolic link states? When I click on the settings drop-down for a repository inside git-annex assistant and choose disable it goes to the same page as the delete option. Any ideas?
-
-Regards,
-Blake
diff --git a/doc/forum/Undo_Git_Annex_Changes_To_Linked_Files.mdwn b/doc/forum/Undo_Git_Annex_Changes_To_Linked_Files.mdwn
deleted file mode 100644
--- a/doc/forum/Undo_Git_Annex_Changes_To_Linked_Files.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hello,
-
-I was recently evaluating git-annex as a file sync tool, but I've got my files in a state where they are a mess.  The short version is that I have a local repo, and then an Encrypted S3 remote.  Once I encrypted the files, they got renamed and so forth and the files are now just symbolic links to files within the .git directory somewhere.   This has made some of them unusable for me and I need to revert the files back to not being symlinks any longer.  How would I go about doing that?
-
-Thanks,
-
-Brandon
diff --git a/doc/forum/Undo_git_merge_git-annex.mdwn b/doc/forum/Undo_git_merge_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/Undo_git_merge_git-annex.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-After accidentally typing git merge git-annex, I am now wondering how to clean up the resulting chaos...
-
-Any tips?
diff --git a/doc/forum/Unknown_remote_type_S3.mdwn b/doc/forum/Unknown_remote_type_S3.mdwn
deleted file mode 100644
--- a/doc/forum/Unknown_remote_type_S3.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I have an annex set up with an s3 special remote. It works fine on one computer. I cloned the annex to a USB stick, plugged the stick into a second computer and cloned the annex to that machine. When I try to `git annex initremote cloud` on the second machine, I get the following error:
-
-    git-annex: Unknown remote type S3
-
-The second machine is running git-annex 3.20121017.
diff --git a/doc/forum/Unlock_files_when_assistant_is_running__63__.mdwn b/doc/forum/Unlock_files_when_assistant_is_running__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Unlock_files_when_assistant_is_running__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I just started using the assistant on an existing annex. I fire up the assistant like so:
-
-    $ git annex webapp
-
-Everything syncs and looks to be working fine. In another terminal, I then create a new file:
-
-    $ touch testfile.txt
-
-The assistant sees that file, immediately adds it and syncs. Ok. So now I want to edit that file.
-
-    $ git annex unlock testfile.txt
-
-As soon as I unlock the file, the assistant re-adds it to the annex and syncs, preventing me from editing the file. How can I edit files with the assistant running?
diff --git a/doc/forum/Update_on_remote_repo.mdwn b/doc/forum/Update_on_remote_repo.mdwn
deleted file mode 100644
--- a/doc/forum/Update_on_remote_repo.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hello,
-
-using the git-annex assistant I can activate auto update on the client machines. What about the server that serves as transfer repository? It needs to have git-annex installed. Is there any possibility of auto update there? What is the recommended procedure?
-
-Thanks,
-Florian
diff --git a/doc/forum/Use_case_for_addurl.mdwn b/doc/forum/Use_case_for_addurl.mdwn
deleted file mode 100644
--- a/doc/forum/Use_case_for_addurl.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-
-question. What is exactly the use-case for addurl. To add unique files as if they where never changing resources?
-
-There is a --relaxed flag to enable some leniency in redownloading the file it seems. But how would one go about updating a file from the web, drop it first?
-Or do I have to add pseudo queries or hashes to the URLs to keep them unique and manage any versioning that way perhaps?
-
diff --git a/doc/forum/Use_case_with_syncing_only_a_subset_possible__63__.mdwn b/doc/forum/Use_case_with_syncing_only_a_subset_possible__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Use_case_with_syncing_only_a_subset_possible__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I'm trying to figure out if git-annex can be used for the following use case:
-
-- 2 repos in direct mode A and B
-- A is on a local filesystem, B could be a NFS mountpoint or ssh
-- B contains a number of toplevel directories, A contains a subset of those
-- For the subset in A all changes in those directories that happen on A or B should be synced automatically between both repos, including file removals.
-- A can decide to not carry a toplevel dir any more, but it must still exist in B.
-- A can copy new toplevel dirs from B and those should be synced from then on.
-
-I've been looking at the docs and played with two test repos, but I cannot seem to make the above work. To me it looks like I would need a possibility include/exclude paths from syncing via a regex.
-
-Thanks,
-Felix
diff --git a/doc/forum/Use_local_files_instead_of_re-downloading_from_S3_remote.mdwn b/doc/forum/Use_local_files_instead_of_re-downloading_from_S3_remote.mdwn
deleted file mode 100644
--- a/doc/forum/Use_local_files_instead_of_re-downloading_from_S3_remote.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have a question on setting up a new repo. Is it possible to initialize a new repo using files which are already local on say my laptop, instead of downloading them from a S3 remote repository? Sorry if this is unclear. But I'm trying to make use of the files that are local on my laptop so I don's have to go through the ordeal of downloading them from S3.
-
-I should also mention that I don't have a complete set of all the files locally on the laptop vs. what's already in the S3 repository.
diff --git a/doc/forum/Use_reflinks_on_BTRFS_instead_of_symlinks___63__.mdwn b/doc/forum/Use_reflinks_on_BTRFS_instead_of_symlinks___63__.mdwn
deleted file mode 100644
--- a/doc/forum/Use_reflinks_on_BTRFS_instead_of_symlinks___63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-On BTRFS it is possible to use [reflinks / clones](https://en.wikipedia.org/wiki/Btrfs#Cloning). This is the equivalent of hardlinks except that when the file is modified, a copy is performed (copy on write). Perhaps git-annex could detect the availability of this feature and use it in case it is available (and the repository and the file are in the same filesystem).
diff --git a/doc/forum/Using_Linux_static_builds.mdwn b/doc/forum/Using_Linux_static_builds.mdwn
deleted file mode 100644
--- a/doc/forum/Using_Linux_static_builds.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Hello,
-
-I want to use git-annex on a couple of machines that are not under my control (and one that is). For that I use the provided static build, but encountered several problems:
-
-I suppose the first step for command line use is to execute runshell:
-
-On one machine:
-
-flindner@yoko:~> software/git-annex.linux/runshell 
-/bin/bash: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by /home/flindner/software/git-annex.linux//lib/x86_64-linux-gnu/libreadline.so.6)
-
-Is there anything I can do about it?
-
-On the other machine:
-
-flindner@bladefoam2:~$ software/git-annex.linux/runshell 
-bash-4.1$ 
-
-It starts a bare, non-configured shell instance. Can I modifiy and source the script to only set the environment and not start up a new shell?
-
-Another question: If using ssh:// remotes, how can I tell git-annex the first command to set up the environment need in order to execute command via SSH?
-
-Thanks,
-
-Florian
diff --git a/doc/forum/Using___34__sync__34___to_sink_all_branches__63__.mdwn b/doc/forum/Using___34__sync__34___to_sink_all_branches__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Using___34__sync__34___to_sink_all_branches__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Is there a way to sync all (or a subset of) local branches, not just the currently checked out branch?
-
-Does this make sense at all, or does this show I am missing some important point in git-annex?
-
-I am asking because I would like to use git-annex to keep git repositories with normal git files (with versioned and branched content) in sync.
-
-If it's not currently possible, could you provide some pointers on where to start, if I wanted to change to Haskell source?
-
-Thnx
diff --git a/doc/forum/Using_a_glacier_remote_as_a_backup.mdwn b/doc/forum/Using_a_glacier_remote_as_a_backup.mdwn
deleted file mode 100644
--- a/doc/forum/Using_a_glacier_remote_as_a_backup.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Hallo everybody,
-
-I have an ARM based Synology NAS and I would like to use git annex to replace the "backup" solution provided by Synology. The basic idea is that I want files in a safe place when the house burns down or they get removed by accident.
-
-Since I only care about the latest version and want to make really sure local programs (cifs service, photostation and so on) do not run into trouble caused by symlinks, I guess direct mode is what I want. I have been tinkering around and things seem to be working for the most part. A few questions remain:
-
-Assuming I have all files synced to glacier and then accidentally remove all content and try to recover with the bare repo - with metadata but without content. the situation looks like this. 
-
-    ➜  syno-archive git:(annex/direct/master) git annex status test.txt
-    D test.txt
-    ➜  syno-archive git:(annex/direct/master)
-    
-I try to get my files back out of glacier:
-
-    ➜  syno-archive git:(annex/direct/master) git annex get test.txt   
-    get test.txt (from glacier...) 
-    ok                      
-    (Recording state in git...)
-    ➜  syno-archive git:(annex/direct/master)
-
-Contrary to my expectation, text.txt did not appear on disk.
-
-Given the bare repo, you would one recover all content (thousands of files)? I expected "git annex get --all" to do the trick. 
-
-PS: This is from git-annex version 5.20141125
-
-regards
-Andreas
diff --git a/doc/forum/Using_for_Music_repo.mdwn b/doc/forum/Using_for_Music_repo.mdwn
deleted file mode 100644
--- a/doc/forum/Using_for_Music_repo.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Hi, 
-
-I am looking into using git-annex to sync my Music between 3 sources: desktop, laptop, backup, but I'm not sure if this will work ok.
-
-I notice on the wiki that:  "Normally, the content of files in the annex is prevented from being modified. That's a good thing, because it might be the only copy, you wouldn't want to lose it in a fumblefingered mistake."
-
-But most music players will download artwork, and some of course will dynamically modify/rename files according to meta data.  And I may be downloading and/or playing music on both the desktop and laptop.  So obviously I wouldn't want to be manually unlocking individual files here.  It would kinda interrupt the music listening experience.  So how would this work?
-
-I am assuming that I would always have to do a git annex add *.mp3 *.flac *.jpg before doing a git annex sync.  But can I just keep everything unlocked?  Any side effects here?  Will this work or should I just use rsync?
-
-Regards,
-
-bk
diff --git a/doc/forum/Using_git-annex.mdwn b/doc/forum/Using_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/Using_git-annex.mdwn
+++ /dev/null
@@ -1,73 +0,0 @@
-Hi,
-
-I have created a git annex repo, added data. I then went to check it out in another location in the following way (my goal is to checkout origin, add a test file, push it back to origin).
- git clone ../test_repo/
-
-   282  17:19   cd test_repo/
-
-   283  17:19   ls
-
-   284  17:19   git status
-
-   285  17:22   git annex init DEV
-
-   286  17:22   touch test.txt
-
-   287  17:22   vi test.txt
-
-   288  17:22   git annex merge
-
-   289  17:22   git annex add test.txt
-
-   290  17:22   git commit -am "test"
-
-   291  17:23   git push origin master git-annex 
-
-However I am getting the following error
-
-Counting objects: 3, done.
-
-Delta compression using up to 48 threads.
-
-Compressing objects: 100% (3/3), done.
-
-Writing objects: 100% (3/3), 364 bytes | 0 bytes/s, done.
-
-Total 3 (delta 1), reused 0 (delta 0)
-
-remote: error: refusing to update checked out branch: refs/heads/master
-
-remote: error: By default, updating the current branch in a non-bare repository
-
-remote: error: is denied, because it will make the index and work tree inconsistent
-
-remote: error: with what you pushed, and will require 'git reset --hard' to match
-
-remote: error: the work tree to HEAD.
-
-remote: error: 
-
-remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
-
-remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
-
-remote: error: its current branch; however, this is not recommended unless you
-
-remote: error: arranged to update its work tree to match what you pushed in some
-
-remote: error: other way.
-
-remote: error: 
-
-remote: error: To squelch this message and still keep the default behaviour, set
-
-remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
-
-To /test_repo/
-
- ! [remote rejected] master -> master (branch is currently checked out)
-
-error: failed to push some refs to '/test_repo/'
-
-
-What am I missing?
diff --git a/doc/forum/Using_git-annex_as_a_library.mdwn b/doc/forum/Using_git-annex_as_a_library.mdwn
deleted file mode 100644
--- a/doc/forum/Using_git-annex_as_a_library.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I am looking to use git-annex as a library/tool to bring syncing to another application. Is there any documentation or open examples of doing something like this?
diff --git a/doc/forum/Using_git-annex_to_manage_git_repositories.mdwn b/doc/forum/Using_git-annex_to_manage_git_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/Using_git-annex_to_manage_git_repositories.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I am interested in using git-annex to manage git repositories, and I am wondering if it is possible and if anyone has experience with it?
-
-I have done some searching, and I know that many people have asked for support for a Dropbox-like workflow, where Git repositories are mirrored everywhere.  I also know that no such support seems forthcoming, however this is not my goal.  Rather, I would like to use git-annex to track the location of many repositories.  I keep a lot of repositories and would like to offload them onto other storage devices and keep track of where each repository is stored.
-
-Perhaps entire Git repositories can be added as a single unit for tracking in git-annex?
diff --git a/doc/forum/Using_git-annex_via_command_line_in_OS_X.mdwn b/doc/forum/Using_git-annex_via_command_line_in_OS_X.mdwn
deleted file mode 100644
--- a/doc/forum/Using_git-annex_via_command_line_in_OS_X.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-After installing the binary for Mac OS X and including some larger directories, my computer now seems quite busy (for the last days) with the import process. I see a process called git-annex causing the load, so it seems OK. As the git-annex assistant seems to hang quite a bit, I would like to see the progress using a command line interface. However, I cannot use the "git annex" command as I get the message "git: 'annex' is not a git command. See 'git --help'."
-
-I guess this is my normal git version, installed by homebrew (the OS X version for apt-get) that does not know anything about the installed binary. Can I still use the CLI with this version? Or better, is there or will there be a way to install git-annex from source, or even better using "brew install git-annex"?
diff --git a/doc/forum/Using_integer_ranges_with_metadata.mdwn b/doc/forum/Using_integer_ranges_with_metadata.mdwn
deleted file mode 100644
--- a/doc/forum/Using_integer_ranges_with_metadata.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-I keep my movie collection in an annex. I recently wrote a python script that pulls information about each movie down from IMDB and stores it as metadata on the annexed file. One of the attributes I'm storing is `rating`. For instance, the metadata for my copy of Blade Runner looks like this:
-
-    $ git annex metadata blade_runner.mkv
-    metadata blade_runner.mkv
-      director="Ridley Scott"
-      director-lastchanged=2016-04-20@04-21-33
-      genre="Sci-Fi"
-      genre="Thriller"
-      genre-lastchanged=2016-04-20@04-21-33
-      lastchanged=2016-04-20@04-21-33
-      rating=8.2
-      rating-lastchanged=2016-04-20@04-21-33
-      runtime=117
-      runtime-lastchanged=2016-04-20@04-21-33
-      title="Blade Runner"
-      title-lastchanged=2016-04-20@04-21-33
-      year=1982
-      year-lastchanged=2016-04-20@04-21-33
-    ok
-
-I can now use the metadata to ask git annex to show me all movies with a rating of 8.2.
-
-    $ git annex find --metadata rating=8.2
-    blade_runner.mkv
-
-However, that isn't very useful. What I want to do is specify a range. For example, I want to ask git annex to show me all movies with a rating above 8:
-
-    $ git annex find --metadata rating=>8
-
-Or, show me all movies with a rating between 6 and 9
-
-    $ git annex find --metadata rating=>6 rating=<9
-
-Is something like this possible?
-
-I'd like to do something similar with the `year` attribute. Right now I can use metadata views to group movies by their release year, which is pretty neat.
-
-    $ git annex view "year=*"
-
-But I would also like to be able to give a range so that I could group movies by release decade, for example.
diff --git a/doc/forum/Using_the_Git-Annex_Assistant_as_a_Backup_and_Syncing_Service.mdwn b/doc/forum/Using_the_Git-Annex_Assistant_as_a_Backup_and_Syncing_Service.mdwn
deleted file mode 100644
--- a/doc/forum/Using_the_Git-Annex_Assistant_as_a_Backup_and_Syncing_Service.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I'm looking to use the Git-Annex Assistant to backup a single repository that is present on and synced between two computers (a home and a working computer). Ideally, each computer uses rsync.net for both of these service, while at the same time treating the cloud storage service as untrusted (so anything stored or tranferred through there is encrypted). Is it possible to do this using solely rsync.net (without the addition of some XMPP service)? According to the software, using shared encryption allows anyone with a clone of the repository to decrypt files on a remote, but the simplest way to make this clone seems to be to first clone to a removable drive, and then from the drive to the second computer (and then deleting the records of the clone to the drive). I'm unsure if by then setting up the backup at rsync.net for the second computer, whether the software will create a second backup that acts independently of the first, neglecting any syncing, or if it will recognize the backup as one of the same repository. I'm also unsure as to whether the software will even sync if the backup is recognized, or whether a tranfer repository at rsync.net is also necessary to complete the setup. Could you perhaps give me some advice on how to achieve this setup, or point me to some information that may help me along?
-
-(If the setup is unclear, I'm essentially trying to replicate something like SpiderOak with the Git-Annex Assistant, without using an XMPP service)
-
-[Edit: It may be easier to just use Git-Annex (no assistant), so that works too]
diff --git a/doc/forum/Verification.mdwn b/doc/forum/Verification.mdwn
deleted file mode 100644
--- a/doc/forum/Verification.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-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 !
diff --git a/doc/forum/Verification/comment_1_d56818a8f5b3a94ecf5159c76f24768c._comment b/doc/forum/Verification/comment_1_d56818a8f5b3a94ecf5159c76f24768c._comment
deleted file mode 100644
--- a/doc/forum/Verification/comment_1_d56818a8f5b3a94ecf5159c76f24768c._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!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.
-"""]]
diff --git a/doc/forum/Verification/comment_2_7df45d1e20a32458791603d5b9fe3dc4._comment b/doc/forum/Verification/comment_2_7df45d1e20a32458791603d5b9fe3dc4._comment
deleted file mode 100644
--- a/doc/forum/Verification/comment_2_7df45d1e20a32458791603d5b9fe3dc4._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!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/forum/Verification/comment_3_74db3ec8b03f48912306e48b8d5f7242._comment b/doc/forum/Verification/comment_3_74db3ec8b03f48912306e48b8d5f7242._comment
deleted file mode 100644
--- a/doc/forum/Verification/comment_3_74db3ec8b03f48912306e48b8d5f7242._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!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/Verification/comment_4_eb4d936a9bd577f58483b278ae5dc5f6._comment b/doc/forum/Verification/comment_4_eb4d936a9bd577f58483b278ae5dc5f6._comment
deleted file mode 100644
--- a/doc/forum/Verification/comment_4_eb4d936a9bd577f58483b278ae5dc5f6._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2015-03-16T18:36:45Z"
- content="""
-You can use `git annex fsck` to verify your repository contents.
-If you want to verify a local repository, the best thing to do is
-to run `git annex fsck` there. If you cannot do that, you can use
-`git annex fsck --from remoterepo --fast` to verify a remote. If you leave
-off the --fast it will download all file contents to completely verify
-them.
-
-I suggest you read git-annex's documentation, there is plenty of it about
-using git-annex fsck to verify repositories.
-"""]]
diff --git a/doc/forum/Verification/comment_5_c327c72ceced27920681d5f93bc256c8._comment b/doc/forum/Verification/comment_5_c327c72ceced27920681d5f93bc256c8._comment
deleted file mode 100644
--- a/doc/forum/Verification/comment_5_c327c72ceced27920681d5f93bc256c8._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 5"""
- date="2015-03-16T18:39:01Z"
- content="""
-The lack of "live messaging" for gcrypt repos is a bug. I'm fixing
-it now and the next version of git-annex will have remotedaemon
-properly supporting gcrypt repos.
-"""]]
diff --git a/doc/forum/View_performance_with_7__44__000_files.mdwn b/doc/forum/View_performance_with_7__44__000_files.mdwn
deleted file mode 100644
--- a/doc/forum/View_performance_with_7__44__000_files.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-I've imported about half of my photos into an annex on an external HDD,
-using metadata extensively for EXIF info, including place names.
-
-Checking out a new view is slower than I expected, at ~6 minutes.
-Is this expected behavior, am I pushing the limits of file count already?
-
-Is there anything I can do to speed things up?
-
-    % ls -1 | wc -l
-        7050
-    
-    % git branch -vv
-      git-annex                      4e590d4 update
-    * master                         985ba54 add jen's phone backups
-      views/Year=_;Month=_;Address=_ 795a58b refs/heads/views/Year=_;Month=_;Address=_
-    
-    % /usr/bin/time -p git annex view "Year=*" "Address=*" 
-    view  (searching...)
-    
-    Checking out files: 100% (12789/12789), done.
-    Switched to branch 'views/Year=_;Address=_'
-    ok
-    real       376.80
-    user        17.98
-    sys          9.66
-
diff --git a/doc/forum/View_special_remote_information__63__.mdwn b/doc/forum/View_special_remote_information__63__.mdwn
deleted file mode 100644
--- a/doc/forum/View_special_remote_information__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-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. 
diff --git a/doc/forum/WARNING__58___linker__58__git-annex_has_text_relocations.mdwn b/doc/forum/WARNING__58___linker__58__git-annex_has_text_relocations.mdwn
deleted file mode 100644
--- a/doc/forum/WARNING__58___linker__58__git-annex_has_text_relocations.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I have configured git-annex on my Nexus 5. Even though it works fantastic, it shows some warning messages.
-
-1: 'git-annex sync' :  WARNING: linker: git-annex has text relocations. This is wasting memory and is a security risk. Please fix.
-
-2: 'git log': error: cannot run less. No such file or directory.
-
-Both the commands will work has expected with these warnings. What could be the issue here.
diff --git a/doc/forum/Walkthrough_for_direct_mode__63__.mdwn b/doc/forum/Walkthrough_for_direct_mode__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Walkthrough_for_direct_mode__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Hello Joey, I would be very much interested in a walkthrough for direct mode, as detailed as the one currently published. I see the comments in the current walkthrough on some differences to direct mode, but to me it is not obvious what best practices for git-annex use would be in direct mode, with and without the assistant. For a mix of Linux, OS X and Windows installations in the homes, it may also be interesting to see how to best set up the individual machines. Many thanks - 
diff --git a/doc/forum/Want_to_stop_using_Git-Annex.mdwn b/doc/forum/Want_to_stop_using_Git-Annex.mdwn
deleted file mode 100644
--- a/doc/forum/Want_to_stop_using_Git-Annex.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hi
-
-I created a git annex repo in one of my drives. But now all my files have turned into symbolic links.
-I need to remove the git repo and get my files back. How can I do that.
-
-Some of the softwares am using will not follow symbolic links, so need put the files back properly as soon as  possible.
-
-Please help.
-Thank you in advance :)
diff --git a/doc/forum/Watch__47__assistant__47__webapp_documentation.mdwn b/doc/forum/Watch__47__assistant__47__webapp_documentation.mdwn
deleted file mode 100644
--- a/doc/forum/Watch__47__assistant__47__webapp_documentation.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Hello,
-
-I'm not sure about the differences and interactions between watch / assistant / webapp / direct mode. I think I figured the following out, can someone confirm this, and perhaps a few words to the documentation / man page?
-
-- git annex watch uses inotify to find new files, and runs git annex add on them (it does not do regular git add)
-- git annex assistant does the same as watch, but also runs git annex sync for each new file (does it also enable direct mode?)
-- git annex webapp does the same as assistant, and also starts a webapp (in my case it immediately started sending files to origin, without asking for confirmation, which was surprising, I guess this is because I have * annex.numcopies=2 set, and there was only one copy. Still I interpreted the documentation as if it would only show me an interface, not start doing things right away.)
-
-Do these commands do anything else than what I described above?
-
-best regards,
-Tom
diff --git a/doc/forum/Web_app_on_server_without_X11__63__.mdwn b/doc/forum/Web_app_on_server_without_X11__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Web_app_on_server_without_X11__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-When I run git-annex-webapp, a browser is opened and I am redirected to the assistant. However, how can I run the web app and just have it start the server process without opening a browser, and navigating to the page from a remote computer?
-
-Thanks!
diff --git a/doc/forum/Webapp_not_watching_repos.mdwn b/doc/forum/Webapp_not_watching_repos.mdwn
deleted file mode 100644
--- a/doc/forum/Webapp_not_watching_repos.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I am using the webapp to watch 3 repositories. When I run git annex webapp it starts watching one of the repos but unless I switch to other repos it does not start noticing changes after switching to each repo once it works as intended.
diff --git a/doc/forum/Webapp_on_ARM.mdwn b/doc/forum/Webapp_on_ARM.mdwn
deleted file mode 100644
--- a/doc/forum/Webapp_on_ARM.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Webapp on ARM?
-==============
-
-Since the webapp is apparently now available on Android (not tested yet, but I plan to do it soon ;)), I was wondering what was the status of the webapp on ARM. Does it build, does it work, and if it does would it be possible to enable it in the Debian package for the next release?
-
-For the record, I'm using git-annex on my NAS (Synology DS413j). I'm using the Debian armel package and running it in an Arch Linux chroot (a very simple setup). It works really well, and I'm extremely satisfied with git-annex. Thanks a lot for all your work, Joey *et al.*!
diff --git a/doc/forum/Webapp_on_ARM/comment_1_82ac40cef5b59070136527b8d81a5ce2._comment b/doc/forum/Webapp_on_ARM/comment_1_82ac40cef5b59070136527b8d81a5ce2._comment
deleted file mode 100644
--- a/doc/forum/Webapp_on_ARM/comment_1_82ac40cef5b59070136527b8d81a5ce2._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.1.10"
- subject="comment 1"
- date="2013-07-22T19:13:38Z"
- content="""
-To build the WebApp on arm, you need a ghc that supports template haskell on arm. While I have heard persistent rumors of such a thing existing, I have yet to see it.
-
-It's possible to build the WebApp on arm without that, but it's a complicated process, involving first building on x86 with the same versions of the haskell libraries that you have on the arm system, and then using the EvilSplicer to generate a source tree with the template haskell expanded, which can then be built on arm. This build process is not really suitable for a Debian package.
-"""]]
diff --git a/doc/forum/Weird_behavior_with_OS_X_Finder_and_Preview.app.mdwn b/doc/forum/Weird_behavior_with_OS_X_Finder_and_Preview.app.mdwn
deleted file mode 100644
--- a/doc/forum/Weird_behavior_with_OS_X_Finder_and_Preview.app.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-I am having some weird issues with git annex under OS X.  I am new to git annex, and am generally familiar with git.  I really like the concept of git-annex and am trying to lean how to fit it into my workflow, but Im running into problems.  
-
-I have a folder that I would like to keep in sync across multiple computers and thumb drives.  Right now this folder consists of other folders and PDF files.  After initializing git and git-annex, all of the files turn into symlinks, as expected.  
-
-Looking at this folder in OSX's finder, none of the symlinks have preview images unfortunately, as expected.  Also, when trying to open the file (or symlink, and in this case PDFs) in finder, it opens the console which outputs a bunch of crap and then nothing happens.  Right clicking on the symlink in finder and using Open with... the default application to open the symlink to the PDF is OSX's Preview.app, as expected, however for some reason this isn't being used when simple double clicking.  If you click on the Preview.app option under the right click menu, Preview.app launches, but never opens the file.  Selecting an alternative such as the Skim.app pdf viewer (if installed) successfully launches the application and opens the file.  
-
-My questions are:
-1. What is the cause of not being able to launch the file in the correct app by simply double clicking it?  Do I have something mis-configued?  Is it a bug with git-annex?  Is git-annex simply not set up to work with finder yet?
-2. How come preview can't open the file but skim can?  This might be directly related to the above question, but maybe not.
-3. Is it possible to get file previews for the symlinks in your annex folder?  Are there plans to enable this kind of thing in the future, if even possible? 
-
-Details about my setup.  I am running on a 32-bit Core Duo Macbook pro from 2006, so enviably I have to run 10.6.8 and its the highest OS version I can reach right now.  All my CLI packages are installed and up to date with Mac Homebrew.  I am running git version 1.7.12.  I freshly installed haskell-platform: stable 2012.2.0.0 via homebrew.  From there I installed git-annex-3.20120825.
diff --git a/doc/forum/What_can_be_done_in_case_of_conflict.mdwn b/doc/forum/What_can_be_done_in_case_of_conflict.mdwn
deleted file mode 100644
--- a/doc/forum/What_can_be_done_in_case_of_conflict.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi,
-
-How can I resolve the conflict when it occurs?
-
-Suppose I have 2 branches (master, current), When I merge these branches or while doing cherry-pick, if I get conflict how can I resolve it?
-
-Thank You
diff --git a/doc/forum/What_happened_to_the_walkthrough__63__.mdwn b/doc/forum/What_happened_to_the_walkthrough__63__.mdwn
deleted file mode 100644
--- a/doc/forum/What_happened_to_the_walkthrough__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-As of right now (2012-05-24 at 18:00 UTC), the [[Walkthrough]] page is basically empty. Its entire contents are "A walkthrough of the basic features of git-annex." No links (other than the autogenerated "what links to this page" list at the bottom) and no contents. Any idea what happened?
diff --git a/doc/forum/What_is_the_best_way_to___34__git_annex_mv__34___file__63__.mdwn b/doc/forum/What_is_the_best_way_to___34__git_annex_mv__34___file__63__.mdwn
deleted file mode 100644
--- a/doc/forum/What_is_the_best_way_to___34__git_annex_mv__34___file__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Since all the annexed (in indirect mode) files are symlinks to topdir/.git/annex/...   moving files among directories at different levels is not that straightforward since symlinks would get broken.  And since there is not 'annex mv' command -- what is the best way?  (unlock is not the resolution since it copies the file, which might be prohibitively large and inefficient)
diff --git a/doc/forum/Where_are_my_remote_ssh_files__63__.mdwn b/doc/forum/Where_are_my_remote_ssh_files__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Where_are_my_remote_ssh_files__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-<img src=http://s.natalian.org/2015-03-10/where-are-the-files.png>
-
-I managed to sync files to a remote ssh store "bible" with `git annex sync --content` however, where I ssh to bible, I was surprised not to see any of the JPG files that were copied there.
-
-
-What am I missing?
-
-# Solution
-
-I need to run `git annex sync` on the host bible too!
diff --git a/doc/forum/Where_did_my_files_go__63__.mdwn b/doc/forum/Where_did_my_files_go__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Where_did_my_files_go__63__.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-I import some files that I've seen before somewhere:
-
-    $ git annex import --deduplicate .../download
-    ...
-    import download/What_is_The_Digital_Fiction_Factory-Conker_Media.pdf (duplicate) ok
-    ...
-
-But the resulting download directory is empty, and `list` doesn't show any of the files:
-
-    $ git annex list --allrepos What_is_The_Digital_Fiction_Factory-Conker_Media.pdf
-    here
-    |...
-    |...
-    |...
-    |...
-    |...
-    |...
-    git-annex: What_is_The_Digital_Fiction_Factory-Conker_Media.pdf not found
-
-How do I find out where this file can be found?
diff --git a/doc/forum/Where_is_the_content__63__.mdwn b/doc/forum/Where_is_the_content__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Where_is_the_content__63__.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-On Android 4.4.4, I can install the most recent git annex. I want to join a git annex running on my linux server. Git annex on android seems to be able to contact remote, and it asks if I want to 'merge' with it. I hope that did not mean erase the remote.  Anyway, the sync says it is proceeding, but when it is done, I cannot find a folder with remote copies of files. 
-
-I figure either it worked, or it destroyed my remote. 
-
-After new install, I have folders /sdcard/annex and /sdcard/git-annex.home. I don't find a new folder with name of remote repo, don't understand why.
-
-Help?
-
diff --git a/doc/forum/Which_cloud_providers_are_supported__63___.mdwn b/doc/forum/Which_cloud_providers_are_supported__63___.mdwn
deleted file mode 100644
--- a/doc/forum/Which_cloud_providers_are_supported__63___.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-So Box.net and Amazon is supported, any way to get google drive in there?
-
-thanks for cool software!
diff --git a/doc/forum/Why_are_ignored_files_being_deleted__63__.mdwn b/doc/forum/Why_are_ignored_files_being_deleted__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Why_are_ignored_files_being_deleted__63__.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-How do we get into the following situation?
-First we complain about an ignored file (why not just ignore it?),
-and then apparently we delete the ignored file.
-
-    [...]
-    import Pictures/2005/11/16/.IMG_0819.tmpwrite.JPG (duplicate) ok
-    (Recording state in git...)
-    The following paths are ignored by one of your .gitignore files:
-    Pictures/2008/11/27/.img_1315.tmpwrite.jpg
-    Use -f if you really want to add them.
-    fatal: no files added
-    git-annex: user error (xargs ["-0","git","--git-dir=/.../annex/.git","--work-tree=/.../annex","add","--"] exited 123)
-
-    # eek, the file that we complained about has vanished!
-    $ rm ../Pictures/2008/12/27/.img_1315.tmpwrite.jpg
-    rm: cannot remove ‘../Pictures/2008/11/27/.img_1315.tmpwrite.jpg’: No such file or directory
-
-Expected:
-- leave ignored files untouched. Maybe report "Skipped ignored files."
-
-Actual:
-- Stop import, but delete the ignored file as side effect.
diff --git a/doc/forum/Why_are_we_stopping_at_a_duplicate__63__.mdwn b/doc/forum/Why_are_we_stopping_at_a_duplicate__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Why_are_we_stopping_at_a_duplicate__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-What does the following mean? I would expect that if we encounter a duplicate while using the `--deduplicate` option, the duplicate file would be removed from the import location and import would continue. Does that mean that the newly encountered `img_0405.jpg` is different from the one previously seen? 
-Could the error message perhaps be improved?
-
-    .../usbdisk/annex(master)$ git annex import --deduplicate ../Pictures/
-    import Pictures/2008/10/12/img_0405.jpg git-annex: not overwriting existing Pictures/2008/10/12/img_0405.jpg (use --force to override)
-
-Many other duplicates are being tidied away.
diff --git a/doc/forum/Why_does_the_bup_remote_use___126____47__.bup__63__.mdwn b/doc/forum/Why_does_the_bup_remote_use___126____47__.bup__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Why_does_the_bup_remote_use___126____47__.bup__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I created a test remote using the command:
-
-    git annex initremote mybup type=bup encryption=none buprepo=/tmp/mybup
-
-I can copy files to and from the remote just fine.  However, every time I do so it makes changes inside `~/.bup`.  If I delete `~/.bup` it will recreate it.  Is this expected?  Are the files in `~/.bup` of any consequence?
diff --git a/doc/forum/Why_is_git_annex_status_slow__63__.mdwn b/doc/forum/Why_is_git_annex_status_slow__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Why_is_git_annex_status_slow__63__.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-It seems that `git annex status` is much slower than `git status`, at least in direct mode. The man page does not give any hint about why it should be slower.
-
-Does `git annex status` do something that `git status` does not?
-
-Here is an example in a repo with 8000+ files in direct mode and with no modified files:
-
-
-    $ time git -c core.bare=false status --porcelain > /dev/null
-
-    real   0m0.096s
-    user   0m0.042s
-    sys    0m0.071s
-
-    $ time git annex status
-
-    real   0m17.144s
-    user   0m10.555s
-    sys    0m1.934s
-
-It is strange to see that `git annex status` is ~200 times slower than the bare `git status`.
diff --git a/doc/forum/Will_git-annex_solve_my_problem__63__.mdwn b/doc/forum/Will_git-annex_solve_my_problem__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Will_git-annex_solve_my_problem__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Here's my current situation:
-
-I have a box which creates about a dozen files periodically. All files add up to about 1GB in size. The files are text and sorted. I then rsync the files to n servers. The rsync diff algorithm transfers way less than n * 1GB because the files are largely the same. However, this distribution technique is inefficient because I must run n rsync processes in parallel and the rsync diff algorithm takes a lot of CPU.
-
-How could I use git-annex instead of rsync?
-
-Because the box producing the new files also has the old files, then presumably git could calculate the diffs for each file once instead of n times as with the rsync solution? Then only the diffs need be distributed to the n servers... using git-annex? And finally the newly updated version of the dozen files needs to be available on each of the n servers. Ideally, the diffs would not mount up over time on either the publishing server or the n servers, thus causing out of disk problems etc. How to deploy git-annex to solve my problem?
diff --git a/doc/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.mdwn b/doc/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.mdwn
deleted file mode 100644
--- a/doc/forum/Will_git_annex_work_on_a_FAT32_formatted_key__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-FAT32 does not support symlinks, so I wonder if there's going to be a problem with that.
-
-Generally speaking, I am wondering about portability of git annex on windows and on android...
diff --git a/doc/forum/Windows_-_You_don__39__t_have_access.mdwn b/doc/forum/Windows_-_You_don__39__t_have_access.mdwn
deleted file mode 100644
--- a/doc/forum/Windows_-_You_don__39__t_have_access.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-git version: 1.9.5.msysgit.1
-git-annex version: 5.20150710-g8fd7052
-
-I have a repo up on GitLab. I have annex’d files in that repo. On a Linux server I can “git annex sync” and then “git annex get” just fine. On Windows when I try to run “git annex sync” I get:
-
-GitLab: You don't have access
-
-  Remote origin does not have git-annex installed; setting annex-ignore
-
-  This could be a problem with the git-annex installation on the remote. Please make sure that git-a
-nnex-shell is available in PATH when you ssh into the remote. Once you have fixed the git-annex inst
-allation, run: git config remote.origin.annex-ignore false
-commit  ok
-pull origin
-git-annex.exe: unknown command git@gitlab.server.com
-…
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-failed
-git-annex: sync: 1 failed
-
-I have access to the repo however. I can git pull/push…whatever. It’s just annex that is having problems with access and I’m not sure why. Here is my git config:
-
-[core]
-        repositoryformatversion = 0
-        filemode = false
-        bare = false
-        logallrefupdates = true
-        symlinks = false
-        ignorecase = true
-        hideDotFiles = dotGitOnly
-[remote "origin"]
-        url = git@gitlab.company.com:repo.git
-        fetch = +refs/heads/*:refs/remotes/origin/*
-        annex-ignore = false
-[annex]
-        uuid = 2noa1e70-9f88-4did-843c-3f8sdf3495990
-        sshcaching = false
-        crippledfilesystem = true
-        version = 5
diff --git a/doc/forum/Windows_S3_host_issue.mdwn b/doc/forum/Windows_S3_host_issue.mdwn
deleted file mode 100644
--- a/doc/forum/Windows_S3_host_issue.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I am trying to connect to dreamhost's objects (S3) platform.  I am using the windows version.  
-Am I specifying the host correctly? Any help is appreciated.
-
-$ git-annex initremote host="objects.dreamhost.com" cloud keyid=XXXXX type=S3
-
-initremote host=objects.dreamhost.com (encryption setup) (hybrid cipher with gpg
- key 70827ADCDE25DA0F) (checking bucket...)
-git-annex: user error (openTCPConnection: host lookup failure for "host=objects.
-dreamhost.com-f5573b49-3668-4f94-a1da-aa55085c45e8.s3.amazonaws.com")
-failed
-git-annex.exe: initremote: 1 failed
diff --git a/doc/forum/Windows_installation_notes.mdwn b/doc/forum/Windows_installation_notes.mdwn
deleted file mode 100644
--- a/doc/forum/Windows_installation_notes.mdwn
+++ /dev/null
@@ -1,146 +0,0 @@
-[[!toc]]
-
-# Introduction
-
-Hello.
-
-I've installed git-annex and git-annex assistant on Windows 7 in a corp environment (hello gotchas!).
-
-In this post I'll describe issues I encountered, how I fixed them, recommendations I have for the installer, and some results from a couple `git annex test` runs.
-
-# Background
-
-My regular domain user doesn't have permissions to write to `C:\Program Files (x86)`, so I use a secondary domain user which is in the Administrators group.  I use "Run as different user" to run installers, etc.  (cf. "Run as Administrator")
-
-During msysgit installation I checked "only bash, don't add to path, don't integrate with Explorer" etc, since I like my third-party applications isolated.
-
-# The installer
-
-## Where to install `git-annex.exe`
-
-The nightly build of git-annex/assistant from NEST (20140908) only prompts for the base path of the msysgit location and it installs files in `$BASE/bin` and `$BASE/cmd`...  I'll try manually copying files post-install to mitigate the path issues described in other posts on this forum.
-
-The msysgit installer (1.9.4-preview20140815) presents a certain screen with three radio options:
-
-1. git bash only
-2. just git in `cmd.exe`
-3. git + unix tools in `cmd.exe`.
-
-I *think* this is the meaning of each:
-
-1. cmd.exe's PATH is not touched.
-2. `$GITBASE/cmd` is added to PATH
-3. `$GITBASE/bin` is added to PATH
-
-Therefore, I think that if you do something so that `git-annex.exe` is added to both $GITBASE/cmd and $GITBASE/bin (perhaps a symlink or even a .lnk file) then all three user preference options will be covered.
-
-All I did was copy `$BASE/cmd/git-annex.exe` to `$BASE/bin/git-annex.exe` and now both `git annex` and `git-annex` work in my msysgit "git bash" console.  I didn't test `cmd.exe` since I selected option 1 in the msysgit installer.
-
-## Installer locations: user profile or system-wide?
-
-I found a shortcut for the webapp in Start Menu/Startup ... for the wrong user.  Please prompt the user during the installation: "Install startup link system-wide or for current user?"
-
-# git annex test results
-
-## `$HOME` defaulted to some mapped drive, whoops!
-
-The test suite has been running since before I started this post.  Is that normal? :)
-
-I notice that it emits "Detected a crippled filesystem", "Enabling direct mode." and other messages again and again.  If those checks are expensive, maybe the result should be memoized/cached.
-
-Oh goodness, the test is reading and writing to my "home directory": a remote filesystem I never use.  It's slow.  I'll have to configure msysgit to use a different, more local `$HOME`.  This a common problem on this workstation.  I'll let the test finish in case it reveals something useful to you, but this will not be how I use it going forward...
-
-I am unable to attach `testWithMappedDriveHomeDirConsoleOutput.txt` to this post.  1 out of 84 tests failed.  Here is the only case sensitive occurrence of FAIL in the console output, with some lines of context.
-
-    OK
-        info:                                             Detected a filesystem without fifo support.
-      Disabling ssh connection caching.
-      Detected a crippled filesystem.
-      Enabling direct mode.
-    git-annex: Data.BloomFilter.Util.suggestSizing: capacity too large to represent
-    FAIL
-          Exception: user error (git-annex ["info","--json"] exited 1)
-        version:                                          Detected a filesystem without fifo support.
-      Disabling ssh connection caching.
-      Detected a crippled filesystem.
-      Enabling direct mode.
-    git-annex version: 5.20140908-g378fbb1
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-
-## test results with local NTFS `$HOME`
-
-...The console output is scrolling by much more quickly.
-
-2 out of 84 tests failed.
-
-        prop_past_sane:                                 OK
-          +++ OK, passed 1000 tests.
-        prop_duration_roundtrips:                       OK
-          +++ OK, passed 1000 tests.
-        prop_metadata_sane:                             OK
-          +++ OK, passed 1000 tests.
-        prop_metadata_serialize:                        OK
-          +++ OK, passed 1000 tests.
-        prop_branchView_legal:                          OK
-          +++ OK, passed 1000 tests.
-        prop_view_roundtrips:                           OK
-          +++I nOiKt,  Tpeasstsse
-    d  1 0i0n0i tt:e sts.
-        prop_viewedFile_rountrips:                      FAIL
-          *** Failed! Falsifiable (after 51 tests and 1 shrink):
-          "a:"
-          Use --quickcheck-replay '50 592211036 1831676953' to reproduce.
-      Unit Tests
-        add sha1dup:                                    init test repo
-      Detected a filesystem without fifo support.
-    
-      Disabling ssh connection caching.
-
-and
-
-    OK
-        info:                                             Detected a filesystem without fifo support.
-      Disabling ssh connection caching.
-      Detected a crippled filesystem.
-      Enabling direct mode.
-    git-annex: Data.BloomFilter.Util.suggestSizing: capacity too large to represent
-    FAIL
-          Exception: user error (git-annex ["info","--json"] exited 1)
-        version:                                          Detected a filesystem without fifo support.
-      Disabling ssh connection caching.
-      Detected a crippled filesystem.
-      Enabling direct mode.
-    git-annex version: 5.20140908-g378fbb1
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-
-...Note the corruption.  I think this happens when I drag the scroll bar while console output is being emitted.  (msysgit's problem?)  I would presume and hope that this is a "display only" issue. UPDATE: see section Corruption below.
-
-# .vbs failure
-
-I copied the `git-annex.lnk` out of my admin user's start menu onto my desktop and double clicked it.  `wscript.exe` got stuck in a loop where new copies were being spawned over and over again (and old copies dieing at the same rate).
-
-I think I know why.  `git-annex.exe` isn't on the path... but `git-annex.lnk` is in the CWD (Desktop in this case).  Yeah, that is the problem.  The vbs attempts to run "git-annex webapp", and this .lnk points to a valid "executable": `git-annex-webapp.vbs`...  So it just calls itself with an argument over and over again.
-
-Workaround: invoke `git annex webapp` from the normal git bash console.
-
-# Corruption?
-
-In some section above I speculated that the "jittery" corruption I was seeing in my console was a "display only" problem caused by scrolling around while new characters were being printed to the console.  Now, I don't think so.
-
-The corruption can be seen in the Log in the webapp.  Here's an example from the top of the log:
-
-    [2014-09-08 13:37:45 Central Daylight Time] main: starting assistant version 5.20140908-g378fbb1
-    Launching web browser on file://d:\annex\.git\annex\webapp.html
-    [2014-09-08 13:37:45 Central Daylight Time] Cronner: You should enable consistency checking to protect your data. 
-    (scanning...) [2014-09-08 13:37:45 Central Daylight Time] Watcher: Performing startup scan
-    (started...) rreerrcceevvcc::vv  ::ff  aaffiiaalliieellddee  dd((  NN((ooNN  ooee  rreerrrroorrrroo))rr
-    
-    ))
-
-I have no clue about this!  (Well...  "I think it's trying to communicate!") 
-
-# Conclusion
-
-I hope this information is helpful.  I've enabled the 'email comments to me' option on this post and I'd be happy to perform further tests upon request.
-
-Cheers!
diff --git a/doc/forum/Windows_support.mdwn b/doc/forum/Windows_support.mdwn
deleted file mode 100644
--- a/doc/forum/Windows_support.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-
-Do you have any news about Windows support?
-Is this something you're currently working on?
-
-Thanks!
diff --git a/doc/forum/Windows_usage_instructions.mdwn b/doc/forum/Windows_usage_instructions.mdwn
deleted file mode 100644
--- a/doc/forum/Windows_usage_instructions.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Having a spot of bother in setting up for windows usage.
-
-I'm attempting to have a windows box syncing to a server (over ssh) and a linux box also syncing against that*
-
-So, on each machine I do
-
- git init
- git annex init
-
-
-On the windows and linux desktops I then do a 
- 
- git remote add server serverdetails.
-
-Now the problem is that if I don't add files to the repos on the machines, they won't sync as there is no branch checked out; and if I do then the first one is fine but the second will fail as it doesn't allow fast-forwards. What am I doing wrong? I've tried making the server repo bare / not bare.
-
-I'm using the latest nightly windows build, and a build from git from today (29d5bb94b4512cfe3072c9ff840cb0ce9f2af744)
-
-
-
-
-
-
-
-*Actually I'm trying to do something a little more complex than that, but this is the simplest version I can come up with.
diff --git a/doc/forum/Wishlist__58___Bittorrent-like_transfers.mdwn b/doc/forum/Wishlist__58___Bittorrent-like_transfers.mdwn
deleted file mode 100644
--- a/doc/forum/Wishlist__58___Bittorrent-like_transfers.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-**EDIT: Mistakenly posted this thread in the forum.  I created a new post in [[todo|todo/Bittorrent-like_features]]
-
-Do you think it would be possible to have bittorrent-like transfers between remotes, so that no one remote gets pegged too hard with transfers? It would be great if you distribute your files between multiple bandwidth-capped remotes, and want fast down speed.  Obviously, this isn't a simple task, but the protocol is already there, it just needs to be adapted for the purpose (and re-written in Haskell...).  Maybe some day in the future after the more important stuff gets taken care of?  It could be an enticing stretch goal.
-
-PS: still working on getting BTC, will be donating soon!
diff --git a/doc/forum/Wishlist__58___Don__39__t_make_files_readonly.mdwn b/doc/forum/Wishlist__58___Don__39__t_make_files_readonly.mdwn
deleted file mode 100644
--- a/doc/forum/Wishlist__58___Don__39__t_make_files_readonly.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Maybe this explained somewhere else, but what is the purpose of marking files readonly. To me this is an annoyance that doesn't make sense. I want to be able to change my files, having to go through an unlock step, to do that seems like unnecessary work. Interestingly, Microsoft's Team Foundation Server source control does the same thing and I don't like it there either.
-
-In addition why replace files with symlinks? Why not just leave the real files in place, or do the reverse and put the symlink to the file in the repository.
diff --git a/doc/forum/Wishlist__58___automatic_reinject.mdwn b/doc/forum/Wishlist__58___automatic_reinject.mdwn
deleted file mode 100644
--- a/doc/forum/Wishlist__58___automatic_reinject.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I think it would be useful to supplement the `reinject` command with an automatic
-mode which calculates the checksum of the source file and injects the file if it
-is known to the repository (without the need to provide a destination filename).
-In addition, this could be done recursively if the user provides a directory to
-inject. All this can probably be done already with some plumbing, but a simple
-`reinject --auto` (or `scour`, or `scavenge`, if you like) would be a nice addition.
-Of course this would only work for the checksum backends.
-
-Example use cases would be:
-
-* Recovering data from lost+found easily
-* Making use of old (pre-git-annex) archival volumes with useful files
-  scattered among non-useful files
-* Sneaker-netting files between disconnected git-annex repositories
diff --git a/doc/forum/Wishlist__58___getting_the_disk_used_by_a_subtree_of_files.mdwn b/doc/forum/Wishlist__58___getting_the_disk_used_by_a_subtree_of_files.mdwn
deleted file mode 100644
--- a/doc/forum/Wishlist__58___getting_the_disk_used_by_a_subtree_of_files.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I'm not sure if this _feature_ exists already wrapped or provided as a recipe for users or not yet. But it would be nice to be able to do a
-
-    git annex du [PATH]
-
-Such that the output that git annex would return is the total disk used locally in the PATH and the theoretical disk used by the PATH if it was fully populated locally. e.g.
-
-    $ git annex du FSL0001_ANALYSIS
-    $ Local: 1000kb, Annex: 2000kb
-
-or something along the lines of that?
diff --git a/doc/forum/Wishlist__58___mark_remotes_offline.mdwn b/doc/forum/Wishlist__58___mark_remotes_offline.mdwn
deleted file mode 100644
--- a/doc/forum/Wishlist__58___mark_remotes_offline.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-I have several remotes which are not always accessible. For example they can
-be on hosts only accessible by LAN or on a portable hard drive which is not
-plugged in. When running sync these remotes are checked as well, leading to
-unnecessary error messages and possibly git-annex waiting for a few minutes
-on each remote for a timeout.
-
-In this situation it would be useful to mark some remotes as offline
-(`git annex offline <remotename>`), so that git-annex would not even attempt
-to contact them. Then, I could configure my system to automatically, for example,
-mark a portable hard disk remote online when plugging it in, and offline when
-unplugging it, and similarly marking remotes offline and online depending on
-whether I have an internet connection or a connection to a specific network.
diff --git a/doc/forum/Wishlist__58___options_for_syncing_meta-data_and_data.mdwn b/doc/forum/Wishlist__58___options_for_syncing_meta-data_and_data.mdwn
deleted file mode 100644
--- a/doc/forum/Wishlist__58___options_for_syncing_meta-data_and_data.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Since _transfer queueing_  and syncing of data works now in the assistant branch (been playing with it), there are times when I really don't want to sync the data, I would like to just sync meta-data and manually do a _get_ on files that I would want or selectively sync data in a subtree.
-
-It would be nice to have the syncing/watch feature to have the option of syncing only *meta-data* or *meta-data and data*, I think this sort of option was already planned? It would also be nice to be able to automatically sync data for only a subtree.
-
-My use case is, I have a big stash of files somewhere at home or work, and I want to keep what I am actually using on my laptop and be able to selectively just take a subtree or a set of subtree's of files. I would not always want to suck down all the data but still have the functionally to add files and push them upstream and sync meta-data.
-
-that is...
-
-> * Site A: big master annex in a server room with lots of disk (or machines), watches a directory and syncs both data and meta-data, it should always try and pull data from all it's child repos. That way I will always have a master copy of my data somewhere, it would be even nicer if I could have clones of the annex, where each annex is on a different machine which is configured to only sync a subtree of files so I can distribute my annex across different systems and disks.
->   * Site A: machine A: syncs Folder A
->   * Site A: machine B: syncs Folder B
->   * and so on with selectively syncing sites and directories
-> * Laptop: has a clone of the annex, and watches a directory, syncs meta-data as usual and only uploads files to a remote (all or a designated one) but it never downloads files automatically or it should only occur inside a selected subtree.
diff --git a/doc/forum/Workflow_for_adding_files.mdwn b/doc/forum/Workflow_for_adding_files.mdwn
deleted file mode 100644
--- a/doc/forum/Workflow_for_adding_files.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-What is the correct way to add/modify files such that the changes are synchronized?
-
-Suppose I have a server "server" and a windows client "client" (more after some time); everything direct mode.
-
-I created the repos on the server:
-
-     cd bin
-     git init
-     git annex init server
-     git annex direct
-     git annex add .
-     git annex sync
-
-On the (Windows) client using cygwin:
-
-     git annex clone ssh://me@server:/srv/bin
-     cd bin
-     git annex init client
-
-Then I want to add files on the client:
-
-     git annex add tools
-     git annex sync
-
-At this point I wonder that the data is not copied to the server but only metadata!
-I then used
-
-     git annex sync --content
-
-but then everything from the server is leeched as well (as if I could have called "git annex get .")
-
-What is the intented workflow such that added/modified files on the client always go to the server, modified/new files from the server are always pulled but ONLY if I previously got the file/directory via "get annex get"?
diff --git a/doc/forum/Wrong_symlink_target_on_usb_drive.mdwn b/doc/forum/Wrong_symlink_target_on_usb_drive.mdwn
deleted file mode 100644
--- a/doc/forum/Wrong_symlink_target_on_usb_drive.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-As I'm not sure whether this is my fault or a bug of git-annex, I'll post it in forum first.
-
-I have a normal v6 git-annex setup, with a desktop, laptop and usb stick.
-
-All repositories are in sync, also the usb drive.
-There are some unlocked files, which are fine.
-But there are also some locked files, which appear to be broken.
-Checking the target, there is a big difference between the paths. On the computers, it's `.git/annex/objects/0W/vj/SHA256E-s10230770--dcbf7418ff3c9698e9d98418fd07a52afec172aeef80aee2a84dcfdaeef859ed/SHA256E-s10230770--dcbf7418ff3c9698e9d98418fd07a52afec172aeef80aee2a84dcfdaeef859ed`.
-
-Also the usb drive links to this location, but the file does not exist.
-Searching with the firs part of the hash, I got some interesting result: the file was stored in `.git/annex/objects/1cc/840/SHA256E-s10230770--dcbf7418ff3c9698e9d98418fd07a52afec172aeef80aee2a84dcfdaeef859ed`.
-The difference is that the two first directories have three instead of two letters and only one layer.
-The hash remains the same, and the file is valid.
-
-```
-$ cd desktop
-$ git annex sync --content
-(success)
-$ readlink -f locked-file
-.git/annex/objects/0W/vj/SHA256E-s10230770--dcbf7418ff3c9698e9d98418fd07a52afec172aeef80aee2a84dcfdaeef859ed/SHA256E-s10230770--dcbf7418ff3c9698e9d98418fd07a52afec172aeef80aee2a84dcfdaeef859ed
-$ cd usb-drive
-$ readlink -f locked-file
-(no output → broken)
-$ find .git/annex/objects/ -name *SHA256E-s10230770*
-.git/annex/objects/1cc/840/SHA256E-s10230770--dcbf7418ff3c9698e9d98418fd07a52afec172aeef80aee2a84dcfdaeef859ed
-(file is at different place)
-```
-
-I did some troubleshooting and unspecific fixing.
-
-```
-$ git annex whereis locked-file
-whereis locked-file (3 copies) 
-   	d0a64b4b-054e-4c42-a64f-58a08591abab -- laptop
-   	e3013e6b-a06a-46a5-a67a-ce9ec0520d21 -- desktop
-   	ebd16ddb-548c-4078-b35e-087132523924 -- usb-drive [here]
-ok
-$ git annex fsck
-(everything fine, also unlocked-file was checked)
-$ git annex fix
-(no error, but no solution)
-$ git annex unlock locked-file
-(file is there and editable, great!)
-$ git annex lock locked-file
-(symlink is there and points… right, to the wrong location)
-$ git annex drop locked-file && git annex get locked-file
-(no change visible in work directory)
-```
-
-Specially on this drive disk space is important, so it would be for me a bad solution to keep them unlocked.
-
-As I mentioned earlier, this could be also my fault, as I have done some not-often used methods
-
-- I rebased the history and checked manually (without `git annex sync`) the `master` and `synced/master` branch to the same commit on all repositories, no errors reported
-- I used a v5 repository on laptop before syncing with the drive, then upgraded. I don't think it is the problem here as it works on desktop after the sync as wanted
diff --git a/doc/forum/XBMC__44___NFS___38___git-annex_.mdwn b/doc/forum/XBMC__44___NFS___38___git-annex_.mdwn
deleted file mode 100644
--- a/doc/forum/XBMC__44___NFS___38___git-annex_.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Hi,
-
-this is not a git-annex problem, but more likely a way some software handles symlinks and/or do file-type detection.
-
-my setup is a following:
-- multiple pc/laptop (linux)
-- one NAS (debian) - main repo for music/films/photos - all in git-annex
-- a Raspberry Pi (Raspbmc) - connected to the TV
-
-I want to share all my films/music/.. to the Pi.
-So, i setup a r/o NFS and mounted that in the XBMC.
-So far this works, I see directories but XBMC do not recognize the media files.
-It works, if I "git-annex edit ..." the file.
-
-My _assumption_ is, that it follows the symlink, finds a file with no extension - and ignores that.
-In XBMC-config there is a list of supported filetypes by extension. ( .avi,.mpg,.foo,.bar )
-
-What I have think of so far:
-- tell XBMC somehow to load all the files (did not work)
-- having some kind of (FUSE?) filter, which hides the symlink in a transparent way
-- creating via script hard-links in a seperate folder with same structure, mount that.
-- using some alternative to NFS ( like ftp, smb ) or a other kind of media-server (server-side)
-
-any comments, ideas ? 
-If i find a solution, I'll post it here.
-
-.ka
diff --git a/doc/forum/XMPP_authentication_failure.mdwn b/doc/forum/XMPP_authentication_failure.mdwn
deleted file mode 100644
--- a/doc/forum/XMPP_authentication_failure.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Hi,
-
-Not sure if this is a bug or not, so posting it here rather than in the bug tracker.
-
-Basically, I am unable to add an XMPP identity via the webapp, I continually  get the error message: "Unable to connect to the Jabber server. Maybe you entered the wrong password? (Error message: AuthenticationFailure)"
-
-I didn't enter the wrong password, I copy/pasted it from my password manager and the same account/password work fine with Pidgin. The log doesn't show anything of interest that I can see.
-
-Using git annex version 4.20130405 from Debain Unstable. The server is ejabberd running on my VPS with a self signed certificate.
-
-Anyone got any idea what might be going on?
-
-Cheers,
-
-Rob
diff --git a/doc/forum/XMPP_problem_behind_router.mdwn b/doc/forum/XMPP_problem_behind_router.mdwn
deleted file mode 100644
--- a/doc/forum/XMPP_problem_behind_router.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I'm trying to configure a jabber account for use with git-annex, but it seems that something's wrong as soon as I try to go through my router (wired or wireless).  Compared to directly connecting to my modem, wireshark shows a lot of TCP retransmissions, eventually resulting in "Unable to connect to the Jabber server. Maybe you entered the wrong password? (Error message: host gmail.com:5222 failed: connect: timeout (Connection timed out))" in the webapp.
-
-I've tried to configure the account both in the webapp and manually in the .git/annex/creds/xmpp file, but it doesn't seem to make a difference.  It's able to connect if I directly connect it to my modem, so I'm fairly sure it's not a problem at my computer or with the credentials.  It doesn't appear to be a problem at the firewall on the router, but I could certainly be missing something.  Are there some other tests I could try to narrow down the problem?
diff --git a/doc/forum/__171__Locking__187___files_until_synced.mdwn b/doc/forum/__171__Locking__187___files_until_synced.mdwn
deleted file mode 100644
--- a/doc/forum/__171__Locking__187___files_until_synced.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I’m currently trying to set up a sync which involves an SQLite3 database file that should always be in the same state on all systems at all times (since there is no readily available way of merging the data). Basically, I’m looking for a practical way that gives me some help in making sure the files never drift apart between my remotes. Since I’m forgetful and might forget syncing the repo before going home from the office, I was wondering whether there might be a good way to assist me in this. Has anyone had some good ideas in this direction, or is there a canonical solution?
-
-It occurred to me one way would be to instate a hook somewhere that links the database to /dev/null in all other remotes (so the software will fail to work if I start it without having synced), but it seems tricky. I guess would have to involve per-remote branches, which will be hard to do, since I need to use direct mode.
-
-A less complex method might be forcing a sync before shutting down the system resp. when booting up.
-
-Maybe other folks have had ideas for a practical, yet robust solution.
diff --git a/doc/forum/__34__Lost__34___data__63___Maybe_a_bug__63__.mdwn b/doc/forum/__34__Lost__34___data__63___Maybe_a_bug__63__.mdwn
deleted file mode 100644
--- a/doc/forum/__34__Lost__34___data__63___Maybe_a_bug__63__.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hey,
-
-I lost some symlinks to my data and I do not know how to recover them. I was in view mode  with some tag folders already there. I added _new_ files from outside annex into some folder and 'git annex add' those files.
-
-What I expected: Git-Annex should add those files to the annex, move the symlinks to the root of the annex (because there is no other way to tell where to put them) and tag them with the specific tag. That is the way I would like to work, first tag, then organize in folder structure.
-
-Now that seems not to be a scenario which has been respected? Because I don't see my files... anywhere. Not in master branch nor in the view branch (I already did 'git annex vpop'). If that is not supported and never will be git-annex should not accept data from the outside world if it is currently in view mode.
-
-Now, how do I get my symlinks back? I guess the content is still there, but the links are missing and I don't find any reference or history log to revert that. 'git annex unused' does not show them either.
-
-I hope somebody can help me :)
-
-Cheers,
-Stephan
diff --git a/doc/forum/__34__Pairing__34___more_than_two_computers.mdwn b/doc/forum/__34__Pairing__34___more_than_two_computers.mdwn
deleted file mode 100644
--- a/doc/forum/__34__Pairing__34___more_than_two_computers.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I need some help understanding here.
-
-We use AeroFS at work to sync the normal user files across computers. I'll quite likely be replacing that with git annex as soon as Windows port is stable enough.
-
-How it works is that you create a repo, and share it with one or more users. Then AeroFS discovers what other repos are online and if they're on the local network, and syncs from wherever is most convenient.
-
-This sounds a little like pairing, but with pairing you need to arrange more than 2 devices in a "star" or "chain". This is fine for my own devices, but it becomes brittle if you have lots of devices syncing from each other, which may or may not be online at any given time. The only way around it seems to be to pair each device with each other device, with the labor rising exponentially.
-
-Is this correct? Best compromise for my use case seems to be to just do a star setup and pair everything with an always-on machine. Do you agree?
-
-Thanks! Carlo
diff --git a/doc/forum/__34__Preseeding__34___a_special_remote.mdwn b/doc/forum/__34__Preseeding__34___a_special_remote.mdwn
deleted file mode 100644
--- a/doc/forum/__34__Preseeding__34___a_special_remote.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I have a remote repository that I have yet to add as a remote into git-annex, but which already contains data that I want git-annex to manage. I already know what the SHA256 hashes and sizes of all the files are, and I can arrange them to match what git-annex will expect.
-
-Is there a way that I can tell git-annex about the presence of the data, to save me having to download and re-upload everything, in a way that is safe? What I want seems to be similar to "git annex reinject" but for special remotes (and I'll take care of the renaming), but I don't see anything in the manpage that looks likely.
-
-I can quite easily create and commit the symlinks with correctly predicted names in my master branch. Will git-annex will treat these correctly?
diff --git a/doc/forum/__34__du__34___equivalent_on_an_annex__63__.mdwn b/doc/forum/__34__du__34___equivalent_on_an_annex__63__.mdwn
deleted file mode 100644
--- a/doc/forum/__34__du__34___equivalent_on_an_annex__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-One reason to use git-annex is to save disk space by tossing files you don't use that often.
-
-I can find big files in the repository with git annex find --largerthan=100M, but is there a way to find large *directories*?  In an ordinary filesystem I'd use "du -h" with a maxdepth to get an idea of what parts of a directory are taking up my disk space, but obviously that won't work with git annex because all the content is in .git/annex.  Any ideas?
-
-(I can get a listing of file sizes in a directory with the handy -L flag of ls -- "ls -lL" shows me the sizes of the link targets -- but that won't summarize all the sizes of subdirectories.  Unless my ls-fu is just weak.)
diff --git a/doc/forum/__34__git_annex_get__34___on_windows_fails_with_rsync_error.mdwn b/doc/forum/__34__git_annex_get__34___on_windows_fails_with_rsync_error.mdwn
deleted file mode 100644
--- a/doc/forum/__34__git_annex_get__34___on_windows_fails_with_rsync_error.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-I tried cloning an annex repo between two drives "c:" and "d:". The part with "git clone" itself works, but when I try to execute "git annex get", rsync reports an error about a missing path starting with "/cygdrive".
-
-    Sameer@DESKTOP-6CJGO0T MINGW32 /d/a (annex/direct/master)
-    $ git annex get --not --in here
-    get world.txt (from origin...)
-    rsync: change_dir "/cygdrive/c/scratch/a" failed: No such file or directory (2)
-    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
-    
-      rsync failed -- run git annex again to resume file transfer
-    
-      Unable to access these remotes: origin
-    
-      Try making some of these repositories available:
-            cda3a2c6-7ddc-4164-ad6d-fbb2720b24d7 -- DESKTOP-6CJGO0T:C:\scratch\a [origin]
-    failed
-    git-annex: get: 1 failed
-
-I am running git annex that was installed in the same directory as a 32-bit git version 2.6.4 for windows (mingw32).
-
-The question is, my windows drives are actually visible as "/c" and "/a" ... then why is rsync searching for "/cygdrive/c" etc? This is clearly not a Cygwin installation.
diff --git a/doc/forum/__34__git_annex_lock__34___very_slow_for_big_repo.mdwn b/doc/forum/__34__git_annex_lock__34___very_slow_for_big_repo.mdwn
deleted file mode 100644
--- a/doc/forum/__34__git_annex_lock__34___very_slow_for_big_repo.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I found the command "git annex lock" very slow (much slower than the initial "git annex add" with SHA1), for a not so big directory, when run in a big repo.
-It seems that each underlying git command is not fast, so I thought it would be better to run them once with all files as arguments.
-I had to stop the lock command, and ran "git checkout ." (I did not change any file), is this a correct alternative?
-
-Thanks a LOT for this software, one that I missed since a long time (but wasn't able to write)!
-
-Rafaël
diff --git a/doc/forum/__34__git_annex_sync__34___synced_after_8_hours.mdwn b/doc/forum/__34__git_annex_sync__34___synced_after_8_hours.mdwn
deleted file mode 100644
--- a/doc/forum/__34__git_annex_sync__34___synced_after_8_hours.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Hi,
-
-The git annex seem has problem with many files.
-
-For synchronize, the operation lasts 8 hours. Here the sample for synchronizing to my local remote server (sbackup)
-
-start at **20:12** / end at **04:13** / total time = ~ **8 hours**
-
-    git annex sync sbackup
-    
-    [2015-04-13 20:12:26 CEST] call: git ["--git-dir=.git","--work-tree=.","push","sbackup","+git-annex:synced/git-annex","master:synced/master"]
-    Counting objects: 792155, done.
-    Delta compression using up to 4 threads.
-    Compressing objects: 100% (789727/789727), done.
-    Writing objects: 100% (792155/792155), 75.73 MiB | 2.35 MiB/s, done.
-    Total 792155 (delta 449604), reused 1 (delta 0)
-    To partage@192.168.253.53:/data/samba/git-annex/docshare
-      ae182f0..fad3aca  git-annex -> synced/git-annex
-      e0e67fe..5226a6f  master -> synced/master
-    [2015-04-14 04:13:05 CEST] read: git ["--git-dir=.git","--work-tree=.","push","sbackup","git-annex","master"]
-    ok
-
-Another problem, I do not know exactly how many files I own (i use **find . | wc -l** )
-
-.git = 1250633
-
-documents = 61124
-
-medias = 199504
-
-it seem i own ~250000 files, but in the .git **1.2 millions files**.
-
-The following command also very slow
-
-    git annex info
-
-
-What the best pratices for use git annex with many files > 500 000 or maintenance & reduction/cleaning method
-
-Thanks
diff --git a/doc/forum/__34__permission_denied__34___in_fsck_on_shared_repo.mdwn b/doc/forum/__34__permission_denied__34___in_fsck_on_shared_repo.mdwn
deleted file mode 100644
--- a/doc/forum/__34__permission_denied__34___in_fsck_on_shared_repo.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-i'm getting errors in ``git annex fsck`` on a shared bare git repo with git-annex 3.20120418 local repo version 3:
-
-``git-annex: ${PATH}/${MYREPO}.git/annex/objects/${HA}/${SH}/SHA1-${HASH}/SHA1-${HASH}: setFileMode: permission denied (Operation not permitted)``
-
-the repository is shared among several users in a common group, and the repo is set up with sticky group, and with appropriate umasks, everything should work.
-
-however, even with the file having permissions -rw-rw-r-- in the directory with permissions drwxrwsr-x, owned by someone else but by a group i'm currently in (as verified by issuing `groups`), i get said error message.
-
-a strace reveals that the failing syscall is:
-
-``[pid 17626] chmod("${FILENAME}", 0100555) = -1 EPERM (Operation not permitted)``
-
-(maybe related: git annex looks for the file in another ${HA}/${SH} combination (of three digits instead of two digits each) before, i take it this is just a new feature not used by the data in my repo? also, i should add that the repository dates back to git-annex 0.13.)
-
-as a workaround, i'm currently ``sudo chown``ing all files to me before the check.
-
-why does fsck try to set permissions even if they are ok? is this a bug in my setup, and if yes, how is a shared repository set up correctly?
diff --git a/doc/forum/__91__NEED_HELP__93___manual_ssh_remote_setup_with_shared_key.mdwn b/doc/forum/__91__NEED_HELP__93___manual_ssh_remote_setup_with_shared_key.mdwn
deleted file mode 100644
--- a/doc/forum/__91__NEED_HELP__93___manual_ssh_remote_setup_with_shared_key.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-
-So much time gone by after the kickstarter and now I wanted to give it a kick finally.
-I set up everything on my linux desktop with no problems at all.
-
-I configured a ssh remote with shared encryption key.
-
-Then I tried to use this to share files with a windows Desktop. This is where problems started.
-
-1. Since there is no jabber sync I need to exchange keys manually. But although I read and googled for hours I just found that it would be there in the git repo somewhere in plain text. I didnt find a command to actually display it on the command line.
-2. I need to setup the (existing) ssh remote on windows manually, because I could not make the webapp recognize the ssh-keys from pageant. Also, unfortunately, all examples refer to s3. I didnt even find out which type I had to specify. There seems to be no comprehensive list of repository types for the cmdline and their required arguments respectively at all. The man page says "type=..." for the three-line description of shared encryption setups which appeared like a mockery to me. Since the remote does not have git metadata I also can not use git clone.
-3. The docs say initremote would only be used on fresh remotes, not existing ones. But enableremote only enables remotes that are already configured. So what am I to do here?
-
-Could someone tell me please
-
-1. How to find the shared key
-2. How to add the ssh remote properly
-3. Where 1 and 2 are documented
-
-Thank you!
diff --git a/doc/forum/__91__announce__93___metadata_extration_utility.mdwn b/doc/forum/__91__announce__93___metadata_extration_utility.mdwn
deleted file mode 100644
--- a/doc/forum/__91__announce__93___metadata_extration_utility.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Let me announce 'metatag', a simple metadata extraction utility.
-
-The Design Idea is to make it completely event driven. There are string matching rules over added metadata,
-who invoke engines when matched, which in turn add more metadata and so on.
-Thus the whole metadata extraction process is controlled by those easily configurable rules. Processing a file or
-directory just starts by adding "/=filename" to the metadata, everything else bootstraps from that. After metadata
-got extracted there are exporters which implement different backends for storing this metadata (currently only a
-'print' and a 'gitannex' exporter are implemented)
-
-While still in a infancy state it already works for me. It now needs more rules and engines for metadata extraction
-and some more efforts to 'standardize' generated metadata. I'd like to welcome comments and contributions.
-
-A README about it can be found at
-
- <http://git.pipapo.org/?p=metatag;a=blob_plain;f=README>
-
-The code is available under git from
-
-    git clone git://git.pipapo.org/metatag
-
-To make the contribution barrier as low as possible there is a public pushable 'mob' repository where everyone can
-send changes too at `git://git.pipapo.org/mob/metatag`
-
-after installing it, using it on a annexed directory is like
-
-    metatag -r -O gitannex,gitexclude -o gitannex:-stat ./
-
-There is a mailinglist for the project, you can subscribe at
-
- <http://lists.pipapo.org/cgi-bin/mailman/listinfo/metatag>
diff --git a/doc/forum/__96__git_annex_sync__96___hangs.mdwn b/doc/forum/__96__git_annex_sync__96___hangs.mdwn
deleted file mode 100644
--- a/doc/forum/__96__git_annex_sync__96___hangs.mdwn
+++ /dev/null
@@ -1,113 +0,0 @@
-I am on a direct remote. I just deleted a directory, and would like to commit that change.
-
-After I run `git annex sync` I see a line which says `commit`, and that is all. I tried to wait it out a few hours, but nothing. Why does git annex hang?
-
-Here is the output of `strace git annex sync`:
-
-```
-chymera@zenbookhost /run/media/chymera/data3 $ strace git annex sync
-execve("/usr/bin/git", ["git", "annex", "sync"], [/* 78 vars */]) = 0
-brk(0)                                  = 0x1afa000
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f17d12c4000
-access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
-open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=207886, ...}) = 0
-mmap(NULL, 207886, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f17d1291000
-close(3)                                = 0
-open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\27\0\0\0\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=452672, ...}) = 0
-mmap(NULL, 2548328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f17d0e36000
-mprotect(0x7f17d0ea4000, 2093056, PROT_NONE) = 0
-mmap(0x7f17d10a3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6d000) = 0x7f17d10a3000
-close(3)                                = 0
-open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`#\0\0\0\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=88456, ...}) = 0
-mmap(NULL, 2183720, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f17d0c20000
-mprotect(0x7f17d0c35000, 2093056, PROT_NONE) = 0
-mmap(0x7f17d0e34000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f17d0e34000
-close(3)                                = 0
-open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@p\0\0\0\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=125536, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f17d1290000
-mmap(NULL, 2204816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f17d0a05000
-mprotect(0x7f17d0a1b000, 2093056, PROT_NONE) = 0
-mmap(0x7f17d0c1a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7f17d0c1a000
-mmap(0x7f17d0c1c000, 13456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f17d0c1c000
-close(3)                                = 0
-open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`#\0\0\0\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=31536, ...}) = 0
-mmap(NULL, 2128920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f17d07fd000
-mprotect(0x7f17d0804000, 2093056, PROT_NONE) = 0
-mmap(0x7f17d0a03000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f17d0a03000
-close(3)                                = 0
-open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
-read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\33\2\0\0\0\0\0"..., 832) = 832
-fstat(3, {st_mode=S_IFREG|0755, st_size=1660320, ...}) = 0
-mmap(NULL, 3766680, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f17d0465000
-mprotect(0x7f17d05f3000, 2097152, PROT_NONE) = 0
-mmap(0x7f17d07f3000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18e000) = 0x7f17d07f3000
-mmap(0x7f17d07f9000, 14744, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f17d07f9000
-close(3)                                = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f17d128f000
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f17d128e000
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f17d128d000
-arch_prctl(ARCH_SET_FS, 0x7f17d128e700) = 0
-mprotect(0x7f17d07f3000, 16384, PROT_READ) = 0
-mprotect(0x7f17d0c1a000, 4096, PROT_READ) = 0
-mprotect(0x7f17d0a03000, 4096, PROT_READ) = 0
-mprotect(0x7f17d0e34000, 4096, PROT_READ) = 0
-mprotect(0x7f17d10a3000, 4096, PROT_READ) = 0
-mprotect(0x79b000, 4096, PROT_READ)     = 0
-mprotect(0x7f17d12c5000, 4096, PROT_READ) = 0
-munmap(0x7f17d1291000, 207886)          = 0
-set_tid_address(0x7f17d128e9d0)         = 2218
-set_robust_list(0x7f17d128e9e0, 24)     = 0
-rt_sigaction(SIGRTMIN, {0x7f17d0a0bb10, [], SA_RESTORER|SA_SIGINFO, 0x7f17d0a14d20}, NULL, 8) = 0
-rt_sigaction(SIGRT_1, {0x7f17d0a0bba0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f17d0a14d20}, NULL, 8) = 0
-rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
-getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
-open("/dev/null", O_RDWR)               = 3
-close(3)                                = 0
-rt_sigprocmask(SIG_UNBLOCK, [PIPE], NULL, 8) = 0
-rt_sigaction(SIGPIPE, {SIG_DFL, [PIPE], SA_RESTORER|SA_RESTART, 0x7f17d0499ee0}, {SIG_DFL, [], 0}, 8) = 0
-brk(0)                                  = 0x1afa000
-brk(0x1b1b000)                          = 0x1b1b000
-open("/usr/lib64/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=106086208, ...}) = 0
-mmap(NULL, 106086208, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f17c9f39000
-close(3)                                = 0
-stat(".git", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
-access("/etc/gitconfig", R_OK)          = -1 ENOENT (No such file or directory)
-access("/home/chymera/.config/git/config", R_OK) = -1 ENOENT (No such file or directory)
-access("/home/chymera/.gitconfig", R_OK) = 0
-open("/home/chymera/.gitconfig", O_RDONLY) = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=147, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f17d12c3000
-read(3, "[user]\n\temail = h.chr@mail.ru\n\tn"..., 4096) = 147
-read(3, "", 4096)                       = 0
-close(3)                                = 0
-munmap(0x7f17d12c3000, 4096)            = 0
-access(".git/config", R_OK)             = 0
-open(".git/config", O_RDONLY)           = 3
-fstat(3, {st_mode=S_IFREG|0644, st_size=335, ...}) = 0
-mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f17d12c3000
-read(3, "[core]\n\trepositoryformatversion "..., 4096) = 335
-read(3, "", 4096)                       = 0
-close(3)                                = 0
-munmap(0x7f17d12c3000, 4096)            = 0
-pipe([3, 4])                            = 0
-clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f17d128e9d0) = 2219
-rt_sigaction(SIGINT, {0x4f4d70, [INT], SA_RESTORER|SA_RESTART, 0x7f17d0499ee0}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGHUP, {0x4f4d70, [HUP], SA_RESTORER|SA_RESTART, 0x7f17d0499ee0}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGTERM, {0x4f4d70, [TERM], SA_RESTORER|SA_RESTART, 0x7f17d0499ee0}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGQUIT, {0x4f4d70, [QUIT], SA_RESTORER|SA_RESTART, 0x7f17d0499ee0}, {SIG_DFL, [], 0}, 8) = 0
-rt_sigaction(SIGPIPE, {0x4f4d70, [PIPE], SA_RESTORER|SA_RESTART, 0x7f17d0499ee0}, {SIG_DFL, [PIPE], SA_RESTORER|SA_RESTART, 0x7f17d0499ee0}, 8) = 0
-close(4)                                = 0
-read(3, "", 1)                          = 0
-close(3)                                = 0
-wait4(2219, commit  
-```
diff --git a/doc/forum/_illegal_control_characters_in_pairing_message__59___ignoring.mdwn b/doc/forum/_illegal_control_characters_in_pairing_message__59___ignoring.mdwn
deleted file mode 100644
--- a/doc/forum/_illegal_control_characters_in_pairing_message__59___ignoring.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Currently I am trying to synchronize two folders between my NAS and my main computer. On both machines I can access the web app. However, once I try to pair these machines with a secret phrase I get the following error:
- 
-illegal control characters in pairing message; ignoring
-
-The log on one machine is:
-
-[2016-03-18 14:25:16.861132] main: Pairing in progress
-Generating public/private rsa key pair.
-Your identification has been saved in /var/folders/_v/hkf9zbqs0bgd2vcnmr_qnlgm0000gn/T/git-annex-keygenN92651/key.
-Your public key has been saved in /var/folders/_v/hkf9zbqs0bgd2vcnmr_qnlgm0000gn/T/git-annex-keygenN92651/key.pub.
-The key fingerprint is:
-SHA256:beyV1f5MKFGaaH9p1CRMPmaVcYAmOyc/lhp7HCw668M username@iMac.home
-The key's randomart image is:
-+---[RSA 2048]----+
-|             +=o*|
-|          ..o=.B.|
-|          o++ B o|
-|         ++..B = |
-|        S +*=.= o|
-|         oo.B+ o.|
-|       . ..B o  o|
-|        E o o    |
-|       .o+ .     |
-+----[SHA256]-----+
-[2016-03-18 14:25:26.442301] main: Pairing in progress
- 
-  illegal control characters in pairing message; ignoring
- 
-  illegal control characters in pairing message; ignoring
- 
-  illegal control characters in pairing message; ignoring
- 
-  illegal control characters in pairing message; ignoring
-
-While on the other machine I get:
-
-[2016-03-18 14:25:35 CET] main: Pairing with username@iMac.home:~/Desktop/annex in progress
-
-
-
diff --git a/doc/forum/_preferred_content__58___lastpresent.mdwn b/doc/forum/_preferred_content__58___lastpresent.mdwn
deleted file mode 100644
--- a/doc/forum/_preferred_content__58___lastpresent.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is there any kind of "lastpresent" in the preferred-content expression? If set, git-annex would see if "git log --follow $path -n 1" (or some configurable -n) was present.
diff --git a/doc/forum/add_only_binary_files__63__.mdwn b/doc/forum/add_only_binary_files__63__.mdwn
deleted file mode 100644
--- a/doc/forum/add_only_binary_files__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is there a way to only add binary files with git annex add command?
diff --git a/doc/forum/adding_files_without_hashing_them.mdwn b/doc/forum/adding_files_without_hashing_them.mdwn
deleted file mode 100644
--- a/doc/forum/adding_files_without_hashing_them.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I would like to be able to add files without having to hash its contents (like WORM) but being able to modify them and record its changes. Is this possible? In other words, I would like to provide other not-that-expensive mechanism for identifying files of a particular version.
diff --git a/doc/forum/adding_remote_bup_repo_using_ssh.mdwn b/doc/forum/adding_remote_bup_repo_using_ssh.mdwn
deleted file mode 100644
--- a/doc/forum/adding_remote_bup_repo_using_ssh.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-I have two machines connected to my home network. machine A. Machine A has a git-annex repo which stores the data using a remote bup repo. The bup repo resides on Machine A itself. Now, I want to set up the same kind of environment in Machine B ( git annex repo backed down by bup remote). The only condition is that I need to re-use the bup repo in the machine A. So I went up like this:
-    
-    git clone ssh://192.168.1.33/path/to/git-annex-repo-on-machine-a
-
-This succeeded. The next step was to add a reference to the bup repo on machine A to this new git-annex repo in machine B. I went about like this:
-
-    git annex initremote mybup type=bup encryption=none buprepo=192.168.1.33:/path/to/bup-repo-on-machine-a
-
-This seems to work OK, except the fact that the following shows up:
-
-    Reinitialized existing Git repository in /Users/XXX/.bup/ 
-    Reinitialized existing Git repository in /Users/path/to/bup-repo-on-machine-a
-
-*Q1*: Why does git-annex create bup repos on the local folder while initializaing a remote bup repo?
-
-After that, I tried to get the file from the git repo using 
-
-    git annex get <file>  --from mybup
-
-..And nothing happened. This is the debug output from the last command :
-
-    read: git ["--git-dir=/private/tmp/annexed-setups/.git","--work-tree=/private/tmp/annexed-setups","show-ref","git-annex"]
-    read: git ["--git-dir=/private/tmp/annexed-setups/.git","--work-tree=/private/tmp/annexed-setups","show-ref","--hash","refs/heads/git-annex"]
-    read: git ["--git-dir=/private/tmp/annexed-setups/.git","--work-tree=/private/tmp/annexed-setups","log","refs/heads/git-   annex..c9af31cb3e563657e83b8b8e1f9a8de1ff690e4f","-n1","--pretty=%H"]
-    read: git ["--git-dir=/private/tmp/annexed-setups/.git","--work-tree=/private/tmp/annexed-setups","log","refs/heads/git-annex..b7b2af7f94af4770d5b4da7231bc3e41c0a6129d","-n1","--pretty=%H"]
-    read: git ["--git-dir=/private/tmp/annexed-setups/.git","--work-tree=/private/tmp/annexed-setups","log","refs/heads/git-annex..7b1017c5e68ec5a2b298b899bf723d0093fa0c7c","-n1","--pretty=%H"]
-    chat: git ["--git-dir=/private/tmp/annexed-setups/.git","--work-tree=/private/tmp/annexed-setups","cat-file","--batch"]
-    read: git ["--git-dir=/private/tmp/annexed-setups/.git","--work-tree=/private/tmp/annexed-setups","ls-files","--cached","-z","--","file.iso"]
-
-The file was not obtained from the remote. However, when I did 
-
-    git annex fsck --from mybup
-
-This resolved all the files properly and then when I did a 
-
-    git annex list. 
-
-it showed all files to be reachable from the mybup repo. 
-
-*Q2* Is this the correct workflow? 
-*Q3* Do I need to do a [costly] fsck for bup remote to properly work over ssh?
-
diff --git a/doc/forum/advantages_of_SHA__42___over_WORM.mdwn b/doc/forum/advantages_of_SHA__42___over_WORM.mdwn
deleted file mode 100644
--- a/doc/forum/advantages_of_SHA__42___over_WORM.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Thanks for creating git-annex.
-
-I am confused about the advantages of the SHA* backends over WORM.  The "backends" page in this wiki says that with WORM, files "can be moved around, but should never be added to or changed".  But I don't see any difference to SHA* files as long as the premise of WORM that "any file with the same basename, size, and modification time has the same content" is true.  Using "git annex unlock", WORM files can be modified in the same way as SHA* files.
-
-If the storage I use is dependable (i.e. I don't need SHA checksums for detection of corruption), and I don't need to optimize for the case that the modification date of a file is changed but the contents stay the same, and if it is unlikely that several files will be identical, is there actually any advantage in using SHA*?
diff --git a/doc/forum/alternativeto.net___34__Like__34__.mdwn b/doc/forum/alternativeto.net___34__Like__34__.mdwn
deleted file mode 100644
--- a/doc/forum/alternativeto.net___34__Like__34__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-When I went to alternativeto.net I noticed that SpiderOak is a featured application. I decided to search git-annex and see how "Like"-ed it is in comparison... there were 0 "Like"-s.
-
-I suggest going to <http://alternativeto.net/software/git-annex/> and "Like" git-annex.
diff --git a/doc/forum/android_binary-only_download.mdwn b/doc/forum/android_binary-only_download.mdwn
deleted file mode 100644
--- a/doc/forum/android_binary-only_download.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-It would be really neat if there was a way to get just the `git-annex` binary on Android, without getting the entire APK. This can be useful when one is already using their own shell and rootfs, for example I work with <a href="https://sites.google.com/site/taldewandroid/">this</a>.
-
-This way, one can just use parts of git-annex, without having to have a whole APK and its dependencies, and the space it takes up, etc.
-
-So would you be able to add a download link for this?
-
-
-
-Thanks for the wonderful project!
diff --git a/doc/forum/annex.largefiles__58___two_quesitons.mdwn b/doc/forum/annex.largefiles__58___two_quesitons.mdwn
deleted file mode 100644
--- a/doc/forum/annex.largefiles__58___two_quesitons.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-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
diff --git a/doc/forum/annex_merge_creates___34__synced__47____42____34___branches.mdwn b/doc/forum/annex_merge_creates___34__synced__47____42____34___branches.mdwn
deleted file mode 100644
--- a/doc/forum/annex_merge_creates___34__synced__47____42____34___branches.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi,
-
-when I fetch from a central repository and `git annex merge` a synced/master branch is created. How can I disable this behaviour?
-
-Or is there a better workflow for getting and pushing updates from/to a central git repo?
-
-bye
diff --git a/doc/forum/annexed_file_key_for_web_remote_with_SHA256E_backend.mdwn b/doc/forum/annexed_file_key_for_web_remote_with_SHA256E_backend.mdwn
deleted file mode 100644
--- a/doc/forum/annexed_file_key_for_web_remote_with_SHA256E_backend.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-First off, thanks so much for your hard work, git-annex is amazing.
-
-I just started using the [web as a special remote](http://git-annex.branchable.com/tips/using_the_web_as_a_special_remote/) feature with the SHA256E backend, and I noticed that although the annexed file has the correct backend prefix (SHA256E) it does not have the extension of the file in the URL. The URL is `https://...IMG_1234.JPG` but the annexed file is `SHA256E-...832c99` with no extension.
-
-This is fine for most use cases, but I actually access an S3 remote directly from another app (independent of git-annex) to render photos, and in that app I'm using the extensions to figure out file types, so not having that info is slightly inconvenient.
-
-Is there any way to either:
-
-1. tell git-annex to preserve the extension of a file on the web in the annexed file, or
-2. alternatively, change the annexed filename (add the extension manually) without screwing anything up?
-
-Any help would be much appreciated, thanks!
diff --git a/doc/forum/archaeology_of_deleted_files.mdwn b/doc/forum/archaeology_of_deleted_files.mdwn
deleted file mode 100644
--- a/doc/forum/archaeology_of_deleted_files.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Earlier this week, I somehow lost a ton of files from my annex -- by switching on the command line from indirect to direct mode while the assistant was running, I think. I'm not sure.
-
-Anyway, by "lost" I mean "lost the symlinks to," because git-annex defaults to keeping content around till you tell it otherwise.  So I still had the content in the repos on my two backup drives.  All I needed was the symlinks back.
-
-But how to figure out exactly what I lost and get it back?
-
-I found that out here:
-
-http://stackoverflow.com/questions/953481/restore-a-deleted-file-in-a-git-repo
-
-Here's a magical formula you can use to find every single file deletion in the history of your repo:
-
-    git log --diff-filter=D --summary 
-
-That will give you every commit that deleted things, and what was deleted.
-
-To bring back all the files deleted in a given commit, where COMMITHASH is the commit hash, use this command:
-
-    git checkout COMMITHASH^1 -- .
-
-to bring back only a specific file:
-
-    git checkout COMMITHASH^1 -- path/to/file.txt
-
-to bring back only a subdirectory:
-
-    git checkout COMMITHASH^1 -- sub/directory
-
-that will bring them back into the staging area.  You can see which ones just reappeared by typing:
-
-    git status
-
-then you can actually make the restore permanent by typing: 
-
-    git commit -m "I just resurrected some files"
-
diff --git a/doc/forum/archival_and_multiple_users.mdwn b/doc/forum/archival_and_multiple_users.mdwn
deleted file mode 100644
--- a/doc/forum/archival_and_multiple_users.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-The assistant archival walk-through describes how files get removed from local repo if moved into archive repos.
-What if the files in question aren't needed immediately (and can be archived) for one user of a shared repo, but needed by someone else on their own machine?
-git-annex directory arrangement propagation wouldn't work for this case, it seems.  Could assistant handle this case?
-
-It looks like having a browser of the directory tree in git-annex assistant webpage with say right-click menu with "get" and "drop" would be the most flexible.
-
-Or maybe it could be more about integration with Linux etc file browsers (but then it's system specific, unlike with webapp).
-
diff --git a/doc/forum/armhf_binary.mdwn b/doc/forum/armhf_binary.mdwn
deleted file mode 100644
--- a/doc/forum/armhf_binary.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Does a armhf binary tarball exist anywhere? I'm running Ubuntu trusty on a armhf platform (beagleboard), and the repository package is out of date. I might try to get the standalone armel binary working using multiarch, but that seems only slightly less painful than compiling from scratch.
-
-Or am I better off changing to a debian boot image, and be done with it?
diff --git a/doc/forum/armhf_binary/comment_1_9ca7ff6cb1f5dfc1e5ce8527e7e0a45f._comment b/doc/forum/armhf_binary/comment_1_9ca7ff6cb1f5dfc1e5ce8527e7e0a45f._comment
deleted file mode 100644
--- a/doc/forum/armhf_binary/comment_1_9ca7ff6cb1f5dfc1e5ce8527e7e0a45f._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.7"
- subject="comment 1"
- date="2014-08-15T15:58:02Z"
- content="""
-The standalone armel build should work fine on armhf, assuming that the kernel supports EABI, which I'm pretty sure it does (or multiarch armel would not work).
-"""]]
diff --git a/doc/forum/armhf_binary/comment_2_743ecf263d1ec1bc4f24e32c0a178f2b._comment b/doc/forum/armhf_binary/comment_2_743ecf263d1ec1bc4f24e32c0a178f2b._comment
deleted file mode 100644
--- a/doc/forum/armhf_binary/comment_2_743ecf263d1ec1bc4f24e32c0a178f2b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="justinl"
- ip="184.17.213.135"
- subject="works"
- date="2014-09-10T17:59:48Z"
- content="""
-Yep, the standalone armel build worked perfectly. Thanks!
-"""]]
diff --git a/doc/forum/assistant_and_archive_folder.mdwn b/doc/forum/assistant_and_archive_folder.mdwn
deleted file mode 100644
--- a/doc/forum/assistant_and_archive_folder.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I have a setup with a windows desktop and a linux laptop with both an annex repository, interconnected via a backup repository in the middle (connected via ssh).
-Both computers are setup as clients and all 3 machines are running the assistant.
-
-Today i tried creating an archive folder and a putting some files in it. To my understanding those files should have been dropped in the 2 machines but kept on the server.. instead I have them copied on each machine. Listing where the files are on both computers shows that both know that themselves and the server have a copy, but they don't know anything about each other.
-
-AFAIK it looks like the bug reported in https://git-annex.branchable.com/forum/question_about_assistant_and___47__archive__47__/
-
-laptop: git-annex version: 5.20151116+gitg5416a1a-1~ndall+1
-
-server: git-annex version: 5.20151109-g08bb3b1
-
-windows: the latest build on the website
-
diff --git a/doc/forum/assistant_overzealously_moving_stuff_to_other_repos.mdwn b/doc/forum/assistant_overzealously_moving_stuff_to_other_repos.mdwn
deleted file mode 100644
--- a/doc/forum/assistant_overzealously_moving_stuff_to_other_repos.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Debian Squeeze, git version 1.7.10.4, git-annex version 3.20121211
-
-The machine has a clone of the annex with preferred content string: `present or include=calibre/* or include=img/* or include=mail/* or include=music/* or include=sounds/*`
-
-This, I believe, should mean the assistant should never drop anything.  However for the past two days it's been moving files to an encrypted rsync remote so that there are two copies (there is another copy on an external HDD) and then it's dropping them from the current annex.  I want to keep the files here; can anyone think of any reason why they would be moved away?
diff --git a/doc/forum/assistant_periodical_unused_moves.mdwn b/doc/forum/assistant_periodical_unused_moves.mdwn
deleted file mode 100644
--- a/doc/forum/assistant_periodical_unused_moves.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I am trying a setup to move files from/to work using a usb key that also has a acopy of the whole repository (if I have to access it from somewhere else without git-annex).
-
-At home there's a direct client repository, the usb is an indirect incrementalbackup and at work I have a indirect backup and a direct client repositories.
-
-
-What I am trying to obtain is to have a lightweight repository at home that doesn't hold backups, and the usb key to also move the unused files from home to work as a backup.
-I am trying to make the assistant do it for me and as far as I could read the assistant should periodically move unused files out of repositories of the group client to the (incremental)backup ones.
-
-
-Having the assistant running on home repository and the two work repositories should do the trick? considering that the usb key doesn't spend much time connected to a computer I have no idea how the assistant would do the periodcal move.
-Also i hope i got it right but files from incrementalbackup should be moved to backup repositories when they can be synchronized, but again, I don't know if a 5 minutes mount with the assistant running on the backup repository will actually do it.
diff --git a/doc/forum/assistant_without_watch__63__.mdwn b/doc/forum/assistant_without_watch__63__.mdwn
deleted file mode 100644
--- a/doc/forum/assistant_without_watch__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-"watch" is described as
-
-> With this running as a daemon in the background, you no longer need to manually run git commands  when  manipulating your files.
-
-and "assistant" is described as
-
-> Like watch, but also automatically syncs changes to other remotes.
-
-I would like the behaviour of assistant, without the watch part:
-
-I have an archive of large files, which I think would be useful to manage manually using git.  But I don't want to manually enforce the "numcopies=" requirement, playing with the assistant and webapp it seems really nice to have it take care of that.
-
-Is there currently an "assistant-without-watch" option?   If not, is it planned?
diff --git a/doc/forum/autobuilders_for_git-annex_to_aid_development.mdwn b/doc/forum/autobuilders_for_git-annex_to_aid_development.mdwn
deleted file mode 100644
--- a/doc/forum/autobuilders_for_git-annex_to_aid_development.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-This is a continuation of the conversation from [[the comments|design/assistant/#comment-77e54e7ebfbd944c370173014b535c91]] section in the design of git-assistant. In summary, I've setup an auto builder which should help [[Joey]] have an easier time developing on git-annex on non-linux/debian platforms. This builder is currently running on OSX 10.7 with the 64bit version of Haskell Platform.
-
-The builder output can be found at <http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0/>, the CGI on this site does not work as my OSX workstation is pushing the output from another location.
-
-The builder currently tries to build all branches except 
-
-* debian-stable
-* pristine-tar
-* setup
-
-It also does not build any of the tags as well, Joey had suggested to ignore the bpo named tags, but for now it's easier for me to not build any tags. To continue on this discussion, if anyone wants to setup a gitbuilder instance, here is the build.sh script that I am using.
-
-<pre>
-#!/bin/bash -x
-
-# Macports
-export PATH=/opt/local/bin:$PATH
-
-# Haskell userland
-export PATH=$PATH:$HOME/.cabal/bin
-
-# Macports gnu
-export PATH=/opt/local/libexec/gnubin:$PATH
-
-make || exit 3
-
-make -q test
-if [ "$?" = 1 ]; then
-        # run "make test", but give it a time limit in case a test gets stuck
-        ../maxtime 1800 make test || exit 4
-fi
-</pre>
-
-It's also using the branches-local script for sorting and prioritising the branches to build, this branches-local script can be found at the [autobuild-ceph](https://github.com/ceph/autobuild-ceph/blob/master/branches-local) repository. If there are other people interested in setting up their own instances of gitbuilder for git-annex, please let me know and I will setup an aggregator page to collect status of the builds. The builder runs and updates on a very regular basis.
diff --git a/doc/forum/bainstorming__58___git_annex_push___38___pull.mdwn b/doc/forum/bainstorming__58___git_annex_push___38___pull.mdwn
deleted file mode 100644
--- a/doc/forum/bainstorming__58___git_annex_push___38___pull.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Wouldn't it make sense to offer
-
-    git annex pull
-
-which would basically do
-
-    git pull
-    git annex get
-
-and
-
-    git annex push
-
-which would do
-
-    git annex commit .
-    git annex put # (the proposed "send to default annex" command)
-    git commit -a -m "$HOST $(date +%F-%H-%M-%S)" # or similar
-    git push
-
-Resulting in commands that are totally analogous to git push & pull: Sync all data from/to a remote.
-
-> Update:
-
-This is useful:
-
-    git config [--global] alias.annex-push '!git pull && git annex add . && git annex copy . --to $REMOTE --fast --quiet && git commit -a -m "$HOST $(date +%F--%H-%M-%S-%Z)" && git push'
-
diff --git a/doc/forum/bash_completion.mdwn b/doc/forum/bash_completion.mdwn
deleted file mode 100644
--- a/doc/forum/bash_completion.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I wrote more than 2 years ago a bash completion file for git-annex (did I miss an official version?) I just updated it today to match current version of git-annex, it is far from perfect, still incomplete, and probably buggy, but works for me. I tried to attach the file in case it could be useful to someone, but it seems that I can't; is it ok to paste the code directly?
diff --git a/doc/forum/basic_usage_questions.mdwn b/doc/forum/basic_usage_questions.mdwn
deleted file mode 100644
--- a/doc/forum/basic_usage_questions.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Seeking some clarification:
-
- 1. I'm using direct mode. When I run `git annex sync --content` on repo A, all files get copied to repo B, but they remain hidden under `.git/annex/objects`. Is there a way to _automatically_ put them in repo B's working tree, without having to go to repo B and run `git annex sync` there as well? _(I'm sure I saw that happen earlier, but not anymore?)_
-
- 1. I have two PCs and a portable HD. There are git-annex repos on PC_1 and USB_HD, with each other listed under `git remote`. Now I want to set up git-annex on PC_2. Is it okay to use the same repo path (~/Videos/) on both PCs? I'm concerned that it would confuse the USB_HD repo greatly, as it would end up having two "remotes" with identical paths.
diff --git a/doc/forum/batch_check_on_remote_when_using_copy.mdwn b/doc/forum/batch_check_on_remote_when_using_copy.mdwn
deleted file mode 100644
--- a/doc/forum/batch_check_on_remote_when_using_copy.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-When I copy my local repository with SHA* to a remote repo with SHA*, every single file is checked by itself which seems rather inefficient. When my remote is accessed via ssh, git-annex opens a new connections for every check. If you are not using a ssh key or key agent, this gets tedious...
-
-For all locked files, either git's built-in mechanisms should be used or, if that's not possible, a few hundred checksums (assuming SHA* backend) should be transfered at once and then checked locally before deciding that to transfer.
-
-Once all checks are done, one single transfer session should be started. Creating new sessions and waiting for TCP's slowstart to get going is a lot less than efficient.
-
-
--- RichiH
-
-> (Use of SHA is irrelevant here, copy does not checksum anything.)
-> 
-> I think what you're seeing is
-> that `git annex copy --to remote` is slow, going to the remote repository
-> every time to see if it has the file, while `git annex copy --from remote`
-> is fast, since it looks at what files are locally present.
-> 
-> That is something I mean to improve. At least `git annex copy --fast --to remote`
-> could easily do a fast copy of all files that are known to be missing from
-> the remote repository. When local and remote git repos are not 100% in sync,
-> relying on that data could miss some files that the remote doesn't have anymore,
-> but local doesn't know it dropped. That's why it's a candidate for `--fast`.
-> 
-> I've just implemented that.
-> 
-> While I do hope to improve ssh usage so that it sshs once, and feeds
-> `git-annex-shell` a series of commands to run, that is a much longer-term
-> thing. --[[Joey]]
-
->> FYI, in a repo with 1228 files, all small, repos _completely in sync_.
-
-    % git annex copy . --to foo # 1200 seconds
-    % git annex copy . --to foo --fast # 20 seconds
-
->> RichiH
diff --git a/doc/forum/benefit_of_splitting_a_repository.mdwn b/doc/forum/benefit_of_splitting_a_repository.mdwn
deleted file mode 100644
--- a/doc/forum/benefit_of_splitting_a_repository.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I am evaluating the best strategy to use git-annex to manage my media library. It consists of about 300.000 files totaling 1 TB of data.
-
-My question is, wheither it would be of advantage to split the repo into several smaller ones (Like Photos, Videos, Musik, Books, ...)?
-
-Would this affect performance of certain operations? I.e. Operations that have superlinear (O(n^a) with a > 1) complexity?
-
-I am thinking about "git annex unused", which takes 22 minutes on my machine performed on the full repo. 
-
-
-Do you have more interesting information on using git-annex in this scale?
diff --git a/doc/forum/best_practices_for_importing_photos__63__.mdwn b/doc/forum/best_practices_for_importing_photos__63__.mdwn
deleted file mode 100644
--- a/doc/forum/best_practices_for_importing_photos__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-What are everyone's tips for importing photos to make best use of metadata and views?
-
-Let's assume there's no need to be compatible with a photo manager app, but we may be importing lots of duplicates, and while content deduplication is great, I'd like to avoid naming problems too.
-
-Do you bother to rename your photos?
-
-Do you use EXIF metadata as git-annex metadata? Selectively or wholesale, with all the redundant tags in EXIF?
-
-If you do use a photo manager app, do you need to do anything special to make that work?
-
-Thanks for your responses everyone!
-
--mike
diff --git a/doc/forum/big_overhead.mdwn b/doc/forum/big_overhead.mdwn
deleted file mode 100644
--- a/doc/forum/big_overhead.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-[[!meta title="unreachable git objects"]]
-
-Hi,
-
-I am been seeing quite big overheads using `git-annex`.  Is this is normal?
-
-The `.git/objects` folder is explosive in my system, often being larger
-than the content watched by git-annex.  Here's the actual statistics
-of my git-annex folders, where the fourth column is calculated as col3/(col2-col3).
-
-[[!table  data="""
-folder,size,size .git,relative size
-conf.annex,777536,720100,12.537433
-doc.annex,20351624,11260204,1.2385528
-images.annex,817064,435580,1.1418041
-misc.annex,803328,572476,2.4798399
-music.annex,23756116,9192740,0.63122314"""]]
-
-That is, four of five repos require more space for the `.git` folder than the actual files.  Most of this comes from the `objects` folder.  
-
-Number of files:
-
-[[!table data="""
-folder,no. files,no files .git,relative size
-conf.annex,11350,9539,5.2672557
-doc.annex,84954,66824,3.6858246
-images.annex,92787,91285,60.775632
-misc.annex,95461,95160,316.14618
-music.annex,16414,13520,4.6717346
-"""]]
-
-
-I use the assistant web interface, and direct
-mode.  I use two laptops running Linux that are synchronized
-directly over LAN at home or via a transfer repo on a ssh server
-where git-annex is installed.  The latter is set up using the web interface and the gcrypt repo.
-[Mostly, the transfer repo isn't working
-and I often end up with only symlinks on the computer where I did not edit the file in question, 
-but this is probably unrelated.]
-
-I have previously tried to fix it using `git gc` or `git annex forget`, but it doesn't seem to significantly reduce the sizes, and what it helps isn't persistent.
-
-Is this kind of 'overhead' something that one must accept when using
-`git-annex` or do such numbers indicate that something is wrong?
-
-Thanks.
diff --git a/doc/forum/big_overhead/comment_10_d5f4e353e7f711d8c38cdcc222339bca._comment b/doc/forum/big_overhead/comment_10_d5f4e353e7f711d8c38cdcc222339bca._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_10_d5f4e353e7f711d8c38cdcc222339bca._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 10"
- date="2014-09-18T17:27:36Z"
- content="""
-In the meantime, I've been looking over the Annex.Branch code. 
-
-`stageJournal` is only ever called in code paths that commit the updated index, so those code paths cannot result in dangling objects unless git-annex is interrupted before it can commit. (This may explain some of my own repos having a few dangling refs, that were not commits; I could have ctrl-c'd git-annex.)
-
-It's possible for a forced update of the local git-annex branch, done by eg a push from another repo, to overwrite a commit made to it. In this case, the git-annex index is merged with the branch, resulting in a new commit, and the old commit that was overwritten will indeed be dangling. However, `git annex sync` doesn't overwrite the git-annex branch; it pushes to synced/git-annex, or does a `taggedPush` to a private ref. It is the case that both those pushes are forced pushes, so can overwrite a branch ref and leave the old commit it pointed to dangling. In the case of `taggedPush`, the old commit should be a parent of the new, so it won't dangle. In the case of synced/git-annex being overwritten, the old commit could dangle, but only until whatever repo pushed it syncs again, at which time it should get incorporated as one of the parents of the new synced/git-annex it pushes. So, I don't see how long-term dangling commits could happen this way, except for in the case where a repository stops syncing/goes missing/rebases its git-annex branch (ie, git-annex forget is used). (This may explain the 2 dangling commits I found on elephant; we did delete some clones of that repository recently.)
-
-At this point I'm not convinced that the dangling objects I found in my own repos are due to some systematic problem, the above seems like it could explain them, and the above is not a problem on the class of the one Rasmus is having. Of course, it's hard to be sure you've spotted all possible ways that a resource leak can happen, and that's what these dangling objects basically are.
-"""]]
diff --git a/doc/forum/big_overhead/comment_11_cbf25217e4149f2cfad4e2bf94f2b4ca._comment b/doc/forum/big_overhead/comment_11_cbf25217e4149f2cfad4e2bf94f2b4ca._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_11_cbf25217e4149f2cfad4e2bf94f2b4ca._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 11"
- date="2014-09-18T17:32:09Z"
- content="""
-I knew I *had* used \"Initial commit\" somewhere ... etckeeper uses that message. And commits as root. Could an etckeeper repo have somehow gotten merged into your git-annex repo? Seems strange, and the filenames and contents don't really look like /etc to me, but it otherwise somewhat fits.
-"""]]
diff --git a/doc/forum/big_overhead/comment_12_475d5af95adcfcd3a51e10f270205eb7._comment b/doc/forum/big_overhead/comment_12_475d5af95adcfcd3a51e10f270205eb7._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_12_475d5af95adcfcd3a51e10f270205eb7._comment
+++ /dev/null
@@ -1,71 +0,0 @@
-[[!comment format=mdwn
- username="rasmus"
- ip="146.185.23.178"
- subject="comment 12"
- date="2014-09-19T00:43:56Z"
- content="""
-Hi Joey,
-
-Thanks for giving the thread a more appropriate title and thanks for the helpful messages. 
-
-Let me start with the easy points:
-
-
-* Looking at my log file of installed packages I have never used `etckeeper` on my system.  So unless it could have entered through `annex` then I think we can rule that one out. 
-* According to `git log` the repos are from January 2014 where I restarted my repos. 
-
-
-        commit 029a8e76ab5f66aa4390987130985550a1ccd69c
-        Author: Rasmus <w530@domain.eu>
-        Date:   Thu Jan 23 21:06:13 2014 +0100
-
-        created repository
-
-
-* When I start git repos I typically just use \"init\" so I don't think I did the 2012 commits. 
-* I checked out one of the 74mb files.  When I do `file test.blob` it shows `test.blob: GPG symmetrically encrypted data (CAST5 cipher)`.  But none of my normal passwords worked.  Could such a gpg'ed file be from local network connections where the assistant asks for a passphrase?  I'm pretty sure that my transfer repo has only been using `gcrypt` and I believe I \"restarted\" my repos because I switched to `gcrypt` repos.  Also, my transfer repo is 10Gb as well which sounds big for transfer repo. 
-
-I performed a similar \"analysis\" on the `conf.annex` repo which should contain mostly no binary files (some 16x16 pngs etc).  
-
-`conf.annex` has 727 unreachable objects and 3477 commits in total.  Of these 338 are commits.  Here's an example of a larger commit message of an unreachable commit.
-
-    commit 601c10f9512e8d3502d9dd52ef409560ebb5b7e0
-    Author: root <root@localhost>
-    Date:   Mon Dec 31 19:00:01 2012 -0400
-
-         Initial commit
-
-     diff --git a/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5 b/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5
-     new file mode 100644
-     index 0000000..ea5fcc3
-     Binary files /dev/null and b/6fbbea493cdec9d912d256374199cc4c012022d35524c8789a7aceeb953442a5 differ
-     diff --git a/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
-     new file mode 100644
-     index 0000000..a86c1a9
-     Binary files /dev/null and b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a differ
-     diff --git a/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194 b/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194
-     new file mode 100644
-     index 0000000..ef1d71c
-     Binary files /dev/null and b/9da3fcfc1635c674012c35d90c21adce3c35440e629d64fe117fe349a6b3e194 differ
-     diff --git a/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594 b/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594
-     new file mode 100644
-     index 0000000..61d3e5b
-     Binary files /dev/null and b/ad4ae79c29b3756f7e41257db7454f3c319112d06385a8bc12d28209a82f2594 differ
-     diff --git a/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc b/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc
-     new file mode 100644
-     index 0000000..92e9bd7
-     Binary files /dev/null and b/bd0e9cb492077e0c090bc62892c8de438c51a956c8215b2c68de7caa7e2431cc differ
-
-Across all commits 6006 objects are mentioned, but only 371 are unique. 
-
-I checked out one blob and again `file` reports `GPG symmetrically encrypted data (CAST5 cipher)`.  Interesting for `conf.annex` I get this line when trying to decrypt
-
-    gpg: DBG: cleared passphrase cached with ID: SBF83A0F822D0F664
-
-
-For `doc.annex` I get
-
-    gpg: DBG: cleared passphrase cached with ID: S32DEAD1E8DD06A4D
-
-And on my other computer I see a third ID.  I'm not sure if this means anything when files are symmetrically encrypted, though. 
-"""]]
diff --git a/doc/forum/big_overhead/comment_13_1c8cc992f04fc63179094c494bd25025._comment b/doc/forum/big_overhead/comment_13_1c8cc992f04fc63179094c494bd25025._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_13_1c8cc992f04fc63179094c494bd25025._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="I know what it is now"
- date="2014-09-19T02:43:22Z"
- content="""
-These objects are the ones written by git-remote-gcrypt when pushing to a remote. That's why the weird dates, root pseudo-commit, crazy filenames, and big gpg encrypted blobs. All countermeasures that git-remote-gcrypt uses to keep your encrypted git remote safe and not leak information about what's in it.
-
-So, this is a bug in git-remote-gcrypt. It needs to clean these objects up after pushing them! (Also after failed pushes.)
-"""]]
diff --git a/doc/forum/big_overhead/comment_14_cbfb3d557915258e72c65a4e84df77a9._comment b/doc/forum/big_overhead/comment_14_cbfb3d557915258e72c65a4e84df77a9._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_14_cbfb3d557915258e72c65a4e84df77a9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 14"
- date="2014-09-19T02:59:36Z"
- content="""
-<https://github.com/bluss/git-remote-gcrypt/issues/16>
-"""]]
diff --git a/doc/forum/big_overhead/comment_15_b973529bae549bcbaaae792f0403989b._comment b/doc/forum/big_overhead/comment_15_b973529bae549bcbaaae792f0403989b._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_15_b973529bae549bcbaaae792f0403989b._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="rasmus"
- ip="217.130.110.20"
- subject="comment 15"
- date="2014-09-19T06:29:58Z"
- content="""
-Brilliant!  Thanks for taking time to analyze the issue and taking the bug to `gcrypt`.
-
-[I'm surprised that a different key than my git-annex key is used and that it's a symmetric key, but I will explore the technology on my own].
-"""]]
diff --git a/doc/forum/big_overhead/comment_1_0c184520c30a89bd2604ab7c0eb7ac45._comment b/doc/forum/big_overhead/comment_1_0c184520c30a89bd2604ab7c0eb7ac45._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_1_0c184520c30a89bd2604ab7c0eb7ac45._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm8wY171R5c4u_jPmB6LU6n6Px2xePM4sE"
- nickname="Efraim"
- subject="comment 1"
- date="2014-09-07T14:09:05Z"
- content="""
-have you tried from the command line `git annex unused` to see if you have unused files in your repo? From the assistant, the option under configuration -> Unused files gives you an option to expire old files after a period of time so they get deleted from your repo.
-"""]]
diff --git a/doc/forum/big_overhead/comment_2_13a017c6c84511894ded2d89d86eb541._comment b/doc/forum/big_overhead/comment_2_13a017c6c84511894ded2d89d86eb541._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_2_13a017c6c84511894ded2d89d86eb541._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="rasmus"
- ip="109.201.154.150"
- subject="comment 2"
- date="2014-09-07T15:17:25Z"
- content="""
-Thanks for help, Efraim.
-
-I'm not sure this is it.  On my other laptop, where the above statics were not calculated the `.git` folder of `doc.annex` is 26Gb (contents is 8.6Gb).  Meanwhile, unused files are 0.6Gb.  In `conf.annex` the `.git` folder is 3.2Gb, content is 70Mb and unused files is 2.2Mb.  I used the web interface to find the size of unused files.
-"""]]
diff --git a/doc/forum/big_overhead/comment_3_b4761cacc02396b5bdf34bcf3457cb91._comment b/doc/forum/big_overhead/comment_3_b4761cacc02396b5bdf34bcf3457cb91._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_3_b4761cacc02396b5bdf34bcf3457cb91._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://id.clacke.se/"
- nickname="Claes"
- subject="repack parameters"
- date="2014-09-07T21:53:10Z"
- content="""
-Because git-annex tracks all the events of an annexed file for each repo -- added, dropped, copied etc -- and it tracks these in one object per file in the git-annex branch, it does indeed create a lot of objects. To improve both space and performance I made sure to add `git gc --auto` as a post-commit hook, as the objects in my case can quickly reach the tens or even hundreds of thousands.
-
-To further improve performance and space, you can choose to set `pack.window` and `pack.depth` to vastly higher values than the defaults (10 and 50, respectively), because there is a large amount of objects with very similar content. I did a `git repack --window 2500 --depth 1000 -f -a d` and brought down my repo from 3 GiB (packed!) to 300 MiB. Make sure to have a lot of memory and CPU available when doing this, or it will take forever. You can set `pack.window` ridiculously high if you like, as long as you limit it with `pack.windowMemory`, so that it makes use of all your available memory for comparing objects and finding the optimal delta.
-"""]]
diff --git a/doc/forum/big_overhead/comment_4_633f8538f368220eaca82b8bbfe9b49d._comment b/doc/forum/big_overhead/comment_4_633f8538f368220eaca82b8bbfe9b49d._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_4_633f8538f368220eaca82b8bbfe9b49d._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="rasmus"
- ip="109.201.154.209"
- subject="Re: repack parameters"
- date="2014-09-08T13:20:36Z"
- content="""
-Thanks for your tips, Claes.  I was really aware of `git repack` and that set of parameters.
-
-I didn't mention, but sadly I'd run `git gc` on the repos just before collecting the above numbers.
-
-I tried to repack two repositories -- `doc.annex` and `config.annex` -- using the values you suggested.   However, it did not have any measurable effect (less than 100mb in both cases).  
-
-The number of unused files seem to be (much) less than 500 files in the repos.
-
-BTW: All of the extra size is in the `.git/objects/` folder.  `.git/annex/` is quite small (always much less than 1GB).  Would that indicate that large files are checked in with git sans annex somehow?
-"""]]
diff --git a/doc/forum/big_overhead/comment_5_599092b8d4f1fc8f378796328ef42931._comment b/doc/forum/big_overhead/comment_5_599092b8d4f1fc8f378796328ef42931._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_5_599092b8d4f1fc8f378796328ef42931._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="rasmus"
- ip="109.201.154.183"
- subject="comment 5"
- date="2014-09-08T13:48:03Z"
- content="""
-So `git prune` worked wonders on my repos, getting rid of GBs of stuff in the `.git/objects` folders.  I don't know why they weren't picked up by `git gc`.  In retrospect, it was perhaps a bit careless of me to run `git prune` directly, but hopefully I will be OK. . .
-"""]]
diff --git a/doc/forum/big_overhead/comment_6_adb4b4e7eb4dac7760f3425bae6cbbc2._comment b/doc/forum/big_overhead/comment_6_adb4b4e7eb4dac7760f3425bae6cbbc2._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_6_adb4b4e7eb4dac7760f3425bae6cbbc2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="rasmus"
- ip="193.145.48.43"
- subject="comment 6"
- date="2014-09-10T12:07:53Z"
- content="""
-Seems `git prune` only worked as a temporary fix.  My `doc.annex/.git/objects` is 3.6Gb after two days.  I don't get why `git` sans `annex` is checking in stuff -- which I assume is the reason it's stored in `.git/objects`.
-"""]]
diff --git a/doc/forum/big_overhead/comment_7_a762eb55addf81c1c5350c7968598d0f._comment b/doc/forum/big_overhead/comment_7_a762eb55addf81c1c5350c7968598d0f._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_7_a762eb55addf81c1c5350c7968598d0f._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 7"
- date="2014-09-17T20:20:40Z"
- content="""
-There are a few things that can cause git to leave unreachable objects. These include: Rebasing; interrupting a pull before it updates the refs; running git add on a file and then changing the file's content and adding it a second time before committing.
-
-I can think of one case where this happens when using git-annex at the command line: `git annex add $file; git mv $file other-directory; git commit` will result in a dangling object storing the old symlink target before the file was moved.
-
-It'd be useful to investigate, by using `git fsck --unreachable` to get a list of currently unreachable objects, and then use `git show` to look at the objects and try to determine where they came from. Ie, are they symlink targets or are they git-annex location log files (formatted as columns of timestamps and uuids). Any unreachable commits would be the most useful to investigate.
-
-I see a few loose objects here and there in my annexes, but not very many, and git-gc has cleaned up old ones (> 1 month old). Some of them seem to be location log files. I see those in both repositories where I use the assistant, and repositories where I use only command line git-annex. I was able to find 2 unreachable commits in a repository that runs the assistant full-time; both commits were \"merging origin/synced/git-annex into git-annex\". This suggests to me that perhaps the assistant merged the git-annex branch but that merge was overwritten by another thread that committed changes to the branch at the same time.
-
-You should also check the size of inodes on your system; a thousand small loose objects in .git/objects does not normally take up gigabytes of space; with typical inode sizes it might use up a few megabytes. With 1 mb inodes, those same thousand files would use 1 gb..
-"""]]
diff --git a/doc/forum/big_overhead/comment_8_4a66f57c6c0bdc6123618cb69a719be5._comment b/doc/forum/big_overhead/comment_8_4a66f57c6c0bdc6123618cb69a719be5._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_8_4a66f57c6c0bdc6123618cb69a719be5._comment
+++ /dev/null
@@ -1,65 +0,0 @@
-[[!comment format=mdwn
- username="rasmus"
- ip="217.130.110.20"
- subject="comment 8"
- date="2014-09-18T11:28:45Z"
- content="""
-Hi Joey,
-
-Thanks for your careful reply.  
-
-Easy things first:
-
-I *never* add anything from the terminal, though I may do checks and `git annex get`, since sometimes the assistance actually grab the updated files.  Until recently I started git annex automatically on boot, but at the moment it simply renders my laptop useless for too long -- presumably due to the errors investigated here.
-
-I use btrfs (don't ask me why).  Searching online, I did not find a way to find the size of inodes, but I assume that it's sensible?  tune2fs doesn't work but as I understand it is designed for ext*.
-
-What takes up space in my `.git/objects` is files of several Mb.  So at the moment the `pack` folder is 700mb.  In the next biggest folder there's three files that are 73,4mb and 8 files that are 4kb.  This pattern repeats.  A couple of large files (73,4 shows up quite a bit as well as 45) and many small files. 
-
-I have an astonishing amount of dangling objects.  In the `doc.annex` `git rev-list HEAD --count` gives 27354.  In this repo I have 1108 unreachable blobs and commits, respectively 569 and 539.  This probably explains why `git prune` solves my problem but I don't understand why all these large files reappears when I sync -- even after having run `git prune` on both laptops.  Could they come from the `annex` on my remote server?
-
-`git show` isn't nice on blobs, but here is an example of a dangling commit
-
-
-    commit 478425bef867782e8ff22aca24316e9421288c49
-    Author: root <root@localhost>
-    Date:   Mon Dec 31 19:00:01 2012 -0400
-
-        Initial commit
-
-    diff --git a/6e5039464b41f39088a4aece64ced787aa2b04ec2dd5ac6f6c6ca4b9a06a99e5 b/6e5039464b41f39088a4aece64ced787aa2b04ec2dd5ac6f6c6ca4b9a06a99e5
-    new file mode 100644
-    index 0000000..af12763
-    Binary files /dev/null and b/6e5039464b41f39088a4aece64ced787aa2b04ec2dd5ac6f6c6ca4b9a06a99e5 differ
-    diff --git a/8ae4ee273eb540fb71b78152d10010ea2dd3d1bb82afe410ecf3d811cb72bd6d b/8ae4ee273eb540fb71b78152d10010ea2dd3d1bb82afe410ecf3d811cb72bd6d
-    new file mode 100644
-    index 0000000..0a6af91
-    Binary files /dev/null and b/8ae4ee273eb540fb71b78152d10010ea2dd3d1bb82afe410ecf3d811cb72bd6d differ
-    diff --git a/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a
-    new file mode 100644
-    index 0000000..26d921e
-    Binary files /dev/null and b/91bd0c092128cf2e60e1a608c31e92caf1f9c1595f83f2890ef17c0e4881aa0a differ
-    diff --git a/9f7728197cfcd9792eef1ff5930a4ab580e38e64291037130f1ad0914e34a1fc b/9f7728197cfcd9792eef1ff5930a4ab580e38e64291037130f1ad0914e34a1fc
-    new file mode 100644
-    index 0000000..2a92974
-    Binary files /dev/null and b/9f7728197cfcd9792eef1ff5930a4ab580e38e64291037130f1ad0914e34a1fc differ
-    diff --git a/ac801235d97275e761efa12a76ee009472cae8549a0835d5be8bd3f6657047fb b/ac801235d97275e761efa12a76ee009472cae8549a0835d5be8bd3f6657047fb
-    new file mode 100644
-    index 0000000..543430c
-    Binary files /dev/null and b/ac801235d97275e761efa12a76ee009472cae8549a0835d5be8bd3f6657047fb differ
-    diff --git a/d400d0f616a980ea5e3ef68a1f9d670d1eeccbd27f34d1cb7ea976e1f98e2fb7 b/d400d0f616a980ea5e3ef68a1f9d670d1eeccbd27f34d1cb7ea976e1f98e2fb7
-    new file mode 100644
-    index 0000000..7b7eadd
-    Binary files /dev/null and b/d400d0f616a980ea5e3ef68a1f9d670d1eeccbd27f34d1cb7ea976e1f98e2fb7 differ
-    diff --git a/e988a26fbabe3f498e2a564096948eafb289ccadfb186423c1f63c5a3b2c19db b/e988a26fbabe3f498e2a564096948eafb289ccadfb186423c1f63c5a3b2c19db
-    new file mode 100644
-    index 0000000..3bd1dfa
-    Binary files /dev/null and b/e988a26fbabe3f498e2a564096948eafb289ccadfb186423c1f63c5a3b2c19db differ
-
-There are several things I don't understand.  Why is the author root?  I never run `git annex` with `sudo` or as root.  I think the date is bogus.  I'm pretty sure I wasn't even running `git annex` in 2012 much less working with this repo. . . What is weird is that this is the date for *all* lost commits!  (Same for Author).  Over all lost commits there are 2352 binary files that differ.  Of these there are 284 unique hashes. . .  I don't know what this means other than my repo being seriously messed up.  I don't understand what I did wrong to end up in this state as I have been fairly careful in mainly using the `webapp`.
-
-I wonder if the best way to proceed is to start over, or whether this repo can be recovered.
-
-Thanks,
-Rasmus
-"""]]
diff --git a/doc/forum/big_overhead/comment_9_5fa681ea0d6bd0dcac7142d40df9d54f._comment b/doc/forum/big_overhead/comment_9_5fa681ea0d6bd0dcac7142d40df9d54f._comment
deleted file mode 100644
--- a/doc/forum/big_overhead/comment_9_5fa681ea0d6bd0dcac7142d40df9d54f._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 9"
- date="2014-09-18T16:54:10Z"
- content="""
-That is a very strange commit by every metric. Weird author, weird date, weird filenames in it (not files that git-annex uses!), with apparently some weird binary content (which git-annex would not be committing). Even a weird commit message -- git-annex never makes a commit with a message of \"Initial commit\", and as far as I can tell using `git log -S`, it never has. (OTOH, it's a pretty common example message used in eg, git documentation.) So, I feel pretty sure that dangling commit was not made by git-annex.
-
-I think you need to take a look at some of the 4+mb unreachable blobs, to get some idea of what these files are. One way is to use git-show on the hash of one of the blobs to get its content, and then, perhaps pass it to `file` or `strings`. Or, you could stop the assistant, `git checkout 478425bef867782e8ff22aca24316e9421288c49` and have a look at this strange tree that was apparently committed in 2012 to see what's in there.
-
-It might be possible that the dangling commits come somehow from the remote server. I'm not 100% sure, but I think that a git pack can end up with dangling objects in it, and then git can pull down that pack to get other, non-dangling objects. You should use `git show` on the server on some of the dangling shas to see if they are present there.
-"""]]
diff --git a/doc/forum/btsync_equivalent__63__.mdwn b/doc/forum/btsync_equivalent__63__.mdwn
deleted file mode 100644
--- a/doc/forum/btsync_equivalent__63__.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I am using bit torrent sync to sync folders and files between my server, my laptop and my smartphone.
-How similar, or different, is git-annex?
-
-Btsync allows me to sync files with no centralized server, encrypted, with some revision history (but I believe it is basic).
-
-
-
-/glattering
diff --git a/doc/forum/build_from_source_on_Linux_fails___40__out_of_memory__41__.mdwn b/doc/forum/build_from_source_on_Linux_fails___40__out_of_memory__41__.mdwn
deleted file mode 100644
--- a/doc/forum/build_from_source_on_Linux_fails___40__out_of_memory__41__.mdwn
+++ /dev/null
@@ -1,74 +0,0 @@
-Hi
-
-When trying to do "make" in Linux x64_64, the process fails with an out-of-memory error. "top" shows that memory consumption reached 16GB during build.
-
-Grateful for any recommendations.
-
-Ciaron
-
-    which: no ikiwiki in <snip>
-    if [ "cabal " = ./Setup ]; then ghc --make Setup; fi
-    cabal  configure
-    Resolving dependencies...
-    [ 1 of 31] Compiling Utility.FileSize ( Utility/FileSize.hs, dist/setup/Utility/FileSize.o )
-    [ 2 of 31] Compiling Utility.PosixFiles ( Utility/PosixFiles.hs, dist/setup/Utility/PosixFiles.o )
-    [ 3 of 31] Compiling Utility.FileSystemEncoding ( Utility/FileSystemEncoding.hs, dist/setup/Utility/FileSystemEncoding.o )
-    [ 4 of 31] Compiling Utility.Applicative ( Utility/Applicative.hs, dist/setup/Utility/Applicative.o )
-    [ 5 of 31] Compiling Utility.Data     ( Utility/Data.hs, dist/setup/Utility/Data.o )
-    [ 6 of 31] Compiling Utility.Monad    ( Utility/Monad.hs, dist/setup/Utility/Monad.o )
-    [ 7 of 31] Compiling Utility.Exception ( Utility/Exception.hs, dist/setup/Utility/Exception.o )
-    [ 8 of 31] Compiling Utility.Misc     ( Utility/Misc.hs, dist/setup/Utility/Misc.o )
-    [ 9 of 31] Compiling Utility.Tmp      ( Utility/Tmp.hs, dist/setup/Utility/Tmp.o )
-    [10 of 31] Compiling Utility.Env      ( Utility/Env.hs, dist/setup/Utility/Env.o )
-    [11 of 31] Compiling Utility.UserInfo ( Utility/UserInfo.hs, dist/setup/Utility/UserInfo.o )
-    [12 of 31] Compiling Utility.Path     ( Utility/Path.hs, dist/setup/Utility/Path.o )
-    [13 of 31] Compiling Utility.OSX      ( Utility/OSX.hs, dist/setup/Utility/OSX.o )
-    [14 of 31] Compiling Utility.Process  ( Utility/Process.hs, dist/setup/Utility/Process.o )
-    [15 of 31] Compiling Utility.SafeCommand ( Utility/SafeCommand.hs, dist/setup/Utility/SafeCommand.o )
-    [16 of 31] Compiling Utility.Directory ( Utility/Directory.hs, dist/setup/Utility/Directory.o )
-    [17 of 31] Compiling Utility.ExternalSHA ( Utility/ExternalSHA.hs, dist/setup/Utility/ExternalSHA.o )
-    [18 of 31] Compiling Utility.Network  ( Utility/Network.hs, dist/setup/Utility/Network.o )
-    [19 of 31] Compiling Utility.PartialPrelude ( Utility/PartialPrelude.hs, dist/setup/Utility/PartialPrelude.o )
-    [20 of 31] Compiling Common           ( Common.hs, dist/setup/Common.o )
-    [21 of 31] Compiling Utility.DottedVersion ( Utility/DottedVersion.hs, dist/setup/Utility/DottedVersion.o )
-    [22 of 31] Compiling Git.Version      ( Git/Version.hs, dist/setup/Git/Version.o )
-    [23 of 31] Compiling Utility.FreeDesktop ( Utility/FreeDesktop.hs, dist/setup/Utility/FreeDesktop.o )
-    [24 of 31] Compiling Config.Files     ( Config/Files.hs, dist/setup/Config/Files.o )
-    [25 of 31] Compiling Assistant.Install.AutoStart ( Assistant/Install/AutoStart.hs, dist/setup/Assistant/Install/AutoStart.o )
-    [26 of 31] Compiling Assistant.Install.Menu ( Assistant/Install/Menu.hs, dist/setup/Assistant/Install/Menu.o )
-    [27 of 31] Compiling Build.Version    ( Build/Version.hs, dist/setup/Build/Version.o )
-    [28 of 31] Compiling Build.TestConfig ( Build/TestConfig.hs, dist/setup/Build/TestConfig.o )
-    [29 of 31] Compiling Build.Configure  ( Build/Configure.hs, dist/setup/Build/Configure.o )
-    [30 of 31] Compiling Build.DesktopFile ( Build/DesktopFile.hs, dist/setup/Build/DesktopFile.o )
-    [31 of 31] Compiling Main             ( dist/setup/setup.hs, dist/setup/Main.o )
-    Linking ./dist/setup/setup ...
-      checking version... 5.20150612-gf176464
-      checking UPGRADE_LOCATION... not available
-      checking git... yes
-      checking git version... 1.7.9
-      checking cp -a... yes
-      checking cp -p... yes
-      checking cp --preserve=timestamps... yes
-      checking cp --reflink=auto... no
-      checking xargs -0... yes
-      checking rsync... yes
-      checking curl... yes
-      checking wget... yes
-      checking wget supports -q --show-progress... no
-      checking bup... no
-      checking nice... yes
-      checking ionice... yes
-      checking nocache... no
-      checking gpg... gpg
-      checking lsof... lsof
-      checking git-remote-gcrypt... not available
-      checking ssh connection caching... no
-      checking sha1... sha1sum
-      checking sha256... sha256sum
-      checking sha512... sha512sum
-      checking sha224... sha224sum
-      checking sha384... sha384sum
-    Configuring git-annex-5.20150528...
-    setup: out of memory (requested 1048576 bytes)
-    make: *** [Build/SysConfig.hs] Error 1
-
diff --git a/doc/forum/cabal_install_fails_on_uuid.mdwn b/doc/forum/cabal_install_fails_on_uuid.mdwn
deleted file mode 100644
--- a/doc/forum/cabal_install_fails_on_uuid.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Hey, so I am trying to compile git-annex through cabal but it fails on building uuid. It gives me this strange error:
-
-    Resolving dependencies...
-    Configuring uuid-1.3.1...
-    Building uuid-1.3.1...
-    Preprocessing library uuid-1.3.1...
-    [ 1 of 10] Compiling Data.UUID.Builder ( Data/UUID/Builder.hs, dist/build/Data/UUID/Builder.o )
-    [ 2 of 10] Compiling Data.Word.Util   ( Data/Word/Util.hs, dist/build/Data/Word/Util.o )
-    [ 3 of 10] Compiling Data.UUID.Internal ( Data/UUID/Internal.hs, dist/build/Data/UUID/Internal.o )
-    Data/UUID/Internal.hs:394:20: Not in scope: `BL.fromStrict'
-    Data/UUID/Internal.hs:399:48: Not in scope: `BL.toStrict'
-    cabal: Error: some packages failed to install:
-    git-annex-4.20131002 depends on uuid-1.3.1 which failed to install.
-    uuid-1.3.1 failed during the building phase. The exception was:
-    ExitFailure 1
-
-Any advice on how to proceed?
-
-System is: Debian Wheezy (CrunchBang Waldorf) 64bit
-
-versions are:
-    uuid-dev: 2.20.1-5.3
-    cabal: 1.14.0
diff --git a/doc/forum/can_I_only_add_my_own_files__63__.mdwn b/doc/forum/can_I_only_add_my_own_files__63__.mdwn
deleted file mode 100644
--- a/doc/forum/can_I_only_add_my_own_files__63__.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Hi,
-
-[ sorry for the wrong bugreport in the last version of this entry ]
-
-It seems as if I can only add my own file to the annex, even if I have group write permissions.  Is that correct?  Can that be circumvented other than copying/deleting the large file?
-
-Here is some demonstration:
-
-    > git init
-    > git config user.name dtr
-    > git config user.email dtrn@dtrn.com
-    
-    > dd if/dev/zero of=test2.bin count=1000
-    
-    > ll
-    -rw-rw-r-- 1 dtr dtr 512000 Sep 16  2013 test2.bin
-    
-    > sudo chown someone test2.bin
-    > ll
-    -rw-rw-r-- 1 someone dtr 512000 Sep 16  2013 test2.bin
-    
-    > git annex init
-    > git annex add test2.bin
-    add test2.bin (checksum...) 
-    git-annex: /test-git-annex/.git/annex/objects/Fq/f6/SHA256-s512000--2d4da04b861bb9dbe77c871415931785a18138d6db035f1bbcd0cf8277c6fc23/SHA256-s512000--2d4da04b861bb9dbe77c871415931785a18138d6db035f1bbcd0cf8277c6fc23: setFileMode: permission denied (Operation not permitted)
-    failed
-    git-annex: add: 1 failed
diff --git a/doc/forum/can__39__t_sync_content.mdwn b/doc/forum/can__39__t_sync_content.mdwn
deleted file mode 100644
--- a/doc/forum/can__39__t_sync_content.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-Hi,
-
-I'm completely new to git-annex, I'm trying to follow this guide:
-
-https://git-annex.branchable.com/tips/centralized_git_repository_tutorial/on_GitLab/
-
-All steps succeeded except the `git annex sync --content` which results in the following message:
-
-'Remote origin not usable by git-annex; setting annex-ignore'
-
-Here is an example of the output I receive:
-
-    $ git status
-    On branch master
-    Your branch is up-to-date with 'origin/master'.
-    nothing to commit, working directory clean
-    $
-    $ git push origin master git-annex
-    Everything up-to-date
-    $
-    $ git annex sync --content
-    
-      Remote origin not usable by git-annex; setting annex-ignore
-    commit  ok
-    pull origin
-    ok
-    pull origin
-    ok
-    $
-    $ git config remote.origin.url
-    https://user:pass@gitlab.com/user/repname.git
-
-Is it required to use the ssh protocol in order to get annex working?
-
-I'm using https since I'm behind a firewall, and the ssh protocol always time out. Is there anything I can do?
diff --git a/doc/forum/can_git-annex_replace_ddm__63__.mdwn b/doc/forum/can_git-annex_replace_ddm__63__.mdwn
deleted file mode 100644
--- a/doc/forum/can_git-annex_replace_ddm__63__.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Hi,
-a few years ago I wrote a tool called 'ddm'.  The code is overengineered and the script is more complicated then it should be,
-but I think it demonstrates some good use cases, and I wonder how well git-annex can fulfill the requirements for those use cases - maybe I should remove ddm and start hacking with git-annex instead.
-
-To answer this question, you should read the section about the possible dataset types on http://dieter.plaetinck.be/ddm_a_distributed_data_manager.html, and the example at the bottom of that page. it demonstrates the idea behind the "selection" dataset to always try to keep a subset (the most appropriate, based on the output of some script) of files "checked out".
-the introduction section on https://github.com/Dieterbe/ddm/raw/358f7cf92c0ba7b336dc97638351d4e324461afa/MANUAL should further clarify things, as well as give some more good use cases (as you can see it's a bit more about [semi-]automated workflows then purely tracking what's where)
-
-So I'm not sure, maybe the way to go for me is to make git-annex my "housekeeping about which data is where" backend and make ddm into a set of policies and tools on top of git-annex.
-
-Any input?
-
-Thanks,
-Dieter
diff --git a/doc/forum/canceling_wrong_repository_merge.mdwn b/doc/forum/canceling_wrong_repository_merge.mdwn
deleted file mode 100644
--- a/doc/forum/canceling_wrong_repository_merge.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-so i mistakenly merged two unrelated repos together. i have "canceled" the merge as in reverted it by removing the created files, but then those zillion of small files will stick around the git repository forever.
-
-is there a way to use something like `git annex forget` for this? i know about things like [git rebase --onto](https://sethrobertson.github.io/GitFixUm/fixup.html#remove_deep) but that won't propagate across all repositories... can git-annex give me a hand here? --[[anarcat]]
diff --git a/doc/forum/cannot_sync___39__unused__39___files.mdwn b/doc/forum/cannot_sync___39__unused__39___files.mdwn
deleted file mode 100644
--- a/doc/forum/cannot_sync___39__unused__39___files.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-Hi,
-
-I have setup a remote git-annex repository (ssh into some machine in our local network) which I will call "common_repo".  Multiple contributors will then be cloning this repo into their laptops (I will call "client_repos").
-
-When these client_repos change and do a "git annex sync <common_repo> --content", all the files from their laptops are successfully synchronised.  The problem arises when:
-
-<ol>
-  <li>CLIENT_A creates somefile.csv</li>
-  <li>CLIENT_A commits somefile.csv
-    <br/>i.e.:
-    <br/>&nbsp;&nbsp;&nbsp;&nbsp;git annex add somefile.csv
-    <br/>&nbsp;&nbsp;&nbsp;&nbsp;git commit -a -m "uploaded somefile.csv"
-  </li>
-  <li>CLIENT_A modifies somefile.csv</li>
-  <li> CLIENT_A commits modified somefile.csv
-     <br/>i.e.:
-     <br/>&nbsp;&nbsp;&nbsp;&nbsp;git add somefile.csv
-     <br/>&nbsp;&nbsp;&nbsp;&nbsp;git commit -a -m "updated somefile.csv"
-  </li>
-  <li>CLIENT_A synchronises with common_repo
-     <br/>i.e.: git annex sync <common_repo> --content
-  </li>
-</ol>
-
-If I check the .git/annex/objects of common_repo, I can't seem to find a copy of the unmodified somefile.csv.  It only has a copy of the latest somefile.csv.
-
-This is problematic if one client tries to checkout a revision of the project that uses the original somefile.csv.
-
-I learned that I can change the preferred content of git-annex.  So, the appropriate preset for common_repo seemed to be "backup".  After running the commands in common_repo:
-<blockquote>
-git annex wanted . standard<br/>
-git annex group . backup
-</blockquote>
-
-I've done another test of the scenario above, and common_repo is still missing the previous revision of the file!!  The preferred file content of common_repo should be "include=* or unused".  In my case, the previous version of somefile.csv will probably fall in the "unused" category.  But I still cannot find it.
-
-A workaround is using two commands from the client(s):
-<blockquote>
-git annex copy --to <common_repo> --all<br/>
-git annex sync <common_repo> --content
-</blockquote>
-
-But I can imagine my users forgetting to run 'copy' and my repo will go to shit over time.
-
-Any ideas why I can't synchronise 'unused' files?
diff --git a/doc/forum/central_non-bare_and_git_push.mdwn b/doc/forum/central_non-bare_and_git_push.mdwn
deleted file mode 100644
--- a/doc/forum/central_non-bare_and_git_push.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-hi,
-
-i have a usecase that i think many people have. a cental server which should be non-bare to be able to browse the files also via webdav.
-multiple clients behind nat so only pushes via xmpp are possible.
-
-i set everything up without xmpp, it works but if files are updated, none of the clients gets a git push of course because ssh works only unidirectional.
-i couldnt figure out how to set up xmpp push and have a non-bare central repo at the same time because i have to choose between ssh and xmpp git remote on the clients to the server.
-
-thanks!
diff --git a/doc/forum/checkout_view_to_directory_outside_of_annex.mdwn b/doc/forum/checkout_view_to_directory_outside_of_annex.mdwn
deleted file mode 100644
--- a/doc/forum/checkout_view_to_directory_outside_of_annex.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-i am working on a project where i need to copy many subsets of files stored in a single annex repo to separate folders outside of the annex repo (each subset to a separate folder).
-
-to select each subset, i'm using `git annex metadata --set <tag>=<value> <path>`.
-
-what i would like to do, ideally, is to leverage each `git annex view <tag>=<value>` invocation to directly check out the view's files to a specific directory outside of the annex repo.
-
-the use case is basically the "Copying objects" strategy of the [syncthing special remote discussion](http://git-annex.branchable.com/todo/syncthing_special_remote/), although rather than having the 'directory' special remote contain files in that remote's specific layout, i would like them to be checked out simply with their original file names.
-
-say i have these files in my main annex repo:
-
-    a.pdf (metadata: topic=haskell)
-    b.pdf (metadata: topic=haskell)
-    c.pdf (metadata: topic=iojs)
-    d.pdf (metadata: topic=python)
-    e.pdf (metadata: topic=haskell)
-
-if i issue `git annex view topic=haskell`, i have the files i want in my annex' root:
-
-    a.pdf
-    b.pdf
-    e.pdf
-
-obviously i could then simply run `rsync --exclude .git -aL --delete . ../other/dir`, which is totally fine, but maybe i'm just blindly missing something obvious and i could simply use something like `git annex --work-tree=../other/dir view topic=haskell` and see `a.pdf`, `b.pdf` and `e.pdf` appear in the target directory (i don't need any metadata in that directory, so only the plain files and no .git folder for a remote is fine).
diff --git a/doc/forum/clear_box.com_repository.mdwn b/doc/forum/clear_box.com_repository.mdwn
deleted file mode 100644
--- a/doc/forum/clear_box.com_repository.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Using webapp I cannot get rid of box.com repository, it is locked in 'cleaning out' state for more than two weeks. How can I remove the repository from the list?
diff --git a/doc/forum/cloud_services_to_support.mdwn b/doc/forum/cloud_services_to_support.mdwn
deleted file mode 100644
--- a/doc/forum/cloud_services_to_support.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-git-annex can already be used to store data in several cloud services:
-Amazon S3, rsync.net, Tahoe-LAFS, The Internet Archive.
-
-I would like to support as many other cloud services as possible/reasonable.
-
-* [[swift|todo/wishlist:_swift_backend]]
-* Dropbox (I had been reluctant to go there due to it using a non-free client,
-  which I have no interest in installing, but there is actually an API,
-  and already a
-  [haskell module to use it](http://hackage.haskell.org/package/dropbox-sdk).
-  Would need to register for an API key.
-  <http://www.dropbox.com/developers/start/core>.
-  Annoyingly, Dropbox reviews each app before granting it production status.
-  Whoops my interest level dropped by 99%.)
-
-Post others in the comments. --[[Joey]]
diff --git a/doc/forum/cloudcmd.mdwn b/doc/forum/cloudcmd.mdwn
deleted file mode 100644
--- a/doc/forum/cloudcmd.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-
-Glad to see this project appears to be doing well.  I just wanted to mention that there's a similar project called cloudcmd that has many of the same use cases in spirit: https://github.com/briangu/cloudcmd
-
-Cheers,
-Brian
diff --git a/doc/forum/commit_current_workdir_state_in_direct_mode.mdwn b/doc/forum/commit_current_workdir_state_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/commit_current_workdir_state_in_direct_mode.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I'd like to commit the current workdir state in direct mode in a script. This is what git annex watch does but I can not reliably start and stop git annex watch in a cron script.
-
-Is this already possible with the current api or could we have something like git annex watch --once?
-
-Thank you, Thomas Koch
diff --git a/doc/forum/confused_about_external_drives.mdwn b/doc/forum/confused_about_external_drives.mdwn
deleted file mode 100644
--- a/doc/forum/confused_about_external_drives.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-First off, to get that off my chest: I am not using Gnome, KDE, XFCE or any "desktop manager" (well, not quite true, I use some bits of XFCE, but it's easier to assume I'm not).
-
-So automounting is always a little tricky for me, and I often use `pmount` to mount external drives and flash cards.
-
-Now, I have tried to add an external drive as a backup to one of my git-annex repositories. I zero'd the drive, added a GPT partition (I wanted labels), formatted it as `ext4` and then gave it to my user:
-
-    cfdisk /dev/sdd
-    mkfs -t ext4 /dev/sdd1
-    mount /dev/sdd1 /mnt
-    chown anarcat /mnt
-    umount /mnt
-
-Now, at this step I would have assumed the drive would be seen by the webapp, but that wasn't the case. Maybe I wasn't patient enough? In any case, at some point I got tired and went to the commandline to add the drive as a remote. I did the following:
-
-    mkdir -p /media/ata-WDC_WD15EADS-00P8B0_WD-WMAVU0748851-part1
-    mount /dev/disk/by-id/ata-WDC_WD15EADS-00P8B0_WD-WMAVU0748851-part1 /media/ata-WDC_WD15EADS-00P8B0_WD-WMAVU0748851-part1
-    cd /srv/mp3
-    git annex remote add backup /media/ata-WDC_WD15EADS-00P8B0_WD-WMAVU0748851-part1/mp3
-    git init /media/ata-WDC_WD15EADS-00P8B0_WD-WMAVU0748851-part1/mp3
-    git annex sync
-    git annex copy --to backup
-
-So that worked, and the webapp was now seeing `backup` as yet another repository, but not quite removeable. So failed. Scratching that, I stopped the assistant, and trashed the repository:
-
-    rm -rf /media/ata-WDC_WD15EADS-00P8B0_WD-WMAVU0748851-part1/mp3
-    git remote rm backup
-
-But now, oddly enough, the webapp would see the external drive after being restarted, and I was able to add that drive.
-
-What am I doing wrong? how is the assistant finding those drives? --[[anarcat]]
diff --git a/doc/forum/confusion_with_remotes__44___map.mdwn b/doc/forum/confusion_with_remotes__44___map.mdwn
deleted file mode 100644
--- a/doc/forum/confusion_with_remotes__44___map.mdwn
+++ /dev/null
@@ -1,113 +0,0 @@
-I'm starting out with git-annex and running into some confusion with setting up the remotes.
-
-I have three systems I'm trying to set up (domains edited):
-
-* psychosis: ssh://psychosis.foo.com/vid
-* bacon: ssh://bucket.foo.com/vid
-* bucket: ssh://bucket.bar.org/vid
-
-And one bare repository so that I can have a single place to push/pull:
-
-* origin: https://git.foo.com/jim/vid.git
-
-On psychosis:
-
-    psychosis$ git config --list | grep ^remote | sort
-    remote.bacon.annex-uuid=8f1f0898-f8c1-11e0-9bf2-b387af26ee63
-    remote.bacon.fetch=+refs/heads/*:refs/remotes/bacon/*
-    remote.bacon.url=ssh://bucket.foo.com/vid
-    remote.bucket.annex-uuid=82814942-f8e0-11e0-b053-e70a61e98e19
-    remote.bucket.fetch=+refs/heads/*:refs/remotes/bucket/*
-    remote.bucket.url=ssh://bucket.bar.org/vid
-    remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
-    remote.origin.url=https://git.foo.com/jim/vid.git
-    
-    psychosis$ git annex status
-    supported backends: WORM SHA1 SHA256 SHA512 SHA224 SHA384 SHA1E SHA256E SHA512E SHA224E SHA384E URL
-    supported remote types: git S3 bup directory rsync web hook
-    known repositories: 
-            09c0b436-f8de-11e0-842f-b7644539d57f -- here (psychosis)
-            82814942-f8e0-11e0-b053-e70a61e98e19 -- bucket
-    local annex keys: 2256
-    local annex size: 449 gigabytes
-    total annex keys: 2256
-    total annex size: 449 gigabytes
-    backend usage: 
-            WORM: 2256
-
-**First point of confusion**: Why doesn't "bacon" show up in "git annex status"?  I can "git annex copy --to bacon filename" and it will copy it there.  Is there some step of setting it up that I missed?  I basically just did "git remote add bacon ssh://bucket.foo.com/vid".
-
-Now I've started setting up the remotes on each host:
-
-On bacon:
-   
-    bacon$ git config --list | grep ^remote | sort
-    remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
-    remote.origin.url=https://git.foo.com/jim/vid.git
-    remote.psychosis.annex-uuid=09c0b436-f8de-11e0-842f-b7644539d57f
-    remote.psychosis.fetch=+refs/heads/*:refs/remotes/psychosis/*
-    remote.psychosis.url=ssh://psychosis.foo.com/vid
-    
-    bacon$ git annex status
-    supported backends: WORM SHA1 SHA256 SHA512 SHA224 SHA384 SHA1E SHA256E SHA512E SHA224E SHA384E URL
-    supported remote types: git S3 bup directory rsync web hook
-    known repositories: 
-            09c0b436-f8de-11e0-842f-b7644539d57f -- psychosis
-            8f1f0898-f8c1-11e0-9bf2-b387af26ee63 -- here (bacon)
-    temporary directory size: 366 megabytes (clean up with git-annex unused)
-    local annex keys: 1
-    local annex size: 308 bytes
-    total annex keys: 2256
-    total annex size: 449 gigabytes
-    backend usage: 
-            WORM: 2256
-
-On bucket:
-
-    bucket$ git config --list | grep ^remote | sort
-    remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
-    remote.origin.url=https://git.foo.com/jim/vid.git
-    remote.psychosis.annex-uuid=09c0b436-f8de-11e0-842f-b7644539d57f
-    remote.psychosis.fetch=+refs/heads/*:refs/remotes/psychosis/*
-    remote.psychosis.url=ssh://psychosis.foo.com/vid
-
-    bucket$ git annex status
-    supported backends: WORM SHA1 SHA256 SHA512 SHA224 SHA384 SHA1E SHA256E SHA512E SHA224E SHA384E URL
-    supported remote types: git S3 bup directory rsync web hook
-    known repositories: 
-            09c0b436-f8de-11e0-842f-b7644539d57f -- psychosis
-            82814942-f8e0-11e0-b053-e70a61e98e19 -- here (bucket)
-    temporary directory size: 183 megabytes (clean up with git-annex unused)
-    local annex keys: 3
-    local annex size: 550 megabytes
-    total annex keys: 2256
-    total annex size: 449 gigabytes
-    backend usage: 
-            WORM: 2256
-
-But I'm getting weird results if I try to show the map from psychosis:
-
-    psychosis$ git annex map
-    $ git annex map
-    map /vid/tv ok
-    map bacon (sshing...) 
-    ok
-    map bucket (sshing...) 
-    ok
-    map origin 
-    failed
-    map psychosis (sshing...) 
-    jim@psychosis.foo.com's password: 
-    ok
-    map psychosis (sshing...) 
-    jim@psychosis.foo.com's password: 
-    ok
-    
-      running: dot -Tx11 map.dot
-
-**Second confusion**: it's as if psychosis was considered a new remote each time?
-The generated map has psychosis listed with several redundant links:
-
-![Map](http://jim.sh/~jim/tmp/map.png)
-
-Is this some bug or do I just need to be hit with the clue bat?
diff --git a/doc/forum/converting_a_v5_repo_to_an_always_unlocked_v6_repo.mdwn b/doc/forum/converting_a_v5_repo_to_an_always_unlocked_v6_repo.mdwn
deleted file mode 100644
--- a/doc/forum/converting_a_v5_repo_to_an_always_unlocked_v6_repo.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-Hi,
-I'm trying to convert a v5 classic, symlink repository into a v6 always unloked repository.
-
-
-I'm trying to follow along with: <http://git-annex.branchable.com/tips/unlocked_files>
-but something goes wrong in the process, so I'm sure I'm missing something.
-The repository is about 600G to start with on a ext4 filesystem, and I don't have another 600G of free space on disk, so I'm going with thin mode:
-
-1.       git annex upgrade 
-2.       git config annex.thin true 
-3.       git annex fix 
-4.       git annex unlock
-
-It's all good to this point. Everything gets unlocked and is fine. 
-Then I try to commit the changes with:
-
-     git annex sync
-
-The process seems to take 
-and incredibly long time (several hours) and then ends up running out of space. I check the repository with "du -sh"
-and it's almost double the size. Is there a reason for this? Is there a way to avoid this duplication of data. Shouldn't annex.thin do the trick?
-
-This is also strange: with "git annex info" I get
-
-     local annex keys: 3572
-     local annex size: 933.19 gigabytes
-     annexed files in working tree: 0
-     size of annexed files in working tree: 0 bytes
-
-the annex size should be about 540G and why are there no annexed files in the working tree?
-
-Is there a correct and faster way to migrate my repo to an always unlocked one which won't require hours of time and take all that disk space?
-
-thanks a lot, daniel
diff --git a/doc/forum/copy_and_move__63__.mdwn b/doc/forum/copy_and_move__63__.mdwn
deleted file mode 100644
--- a/doc/forum/copy_and_move__63__.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-My use case is that I [import media](http://ix.io/h6m) from my iphone/gopro to my laptop. I then want to upload them to [Flickr](https://www.flickr.com/) (JPG/PNG) and S3 (MP4). However I want to keep a backup using git-annex onto a external USB drive.
-
-# How do I quickly copy and drop?
-
-I realise I can:
-
-1. git-annex add 2014-*
-* git-annex copy --to 2tbusbdrive
-* git-annex drop 2014-*
-
-But that's several steps. Is there a quicker way?
-
-# How do drop only files I've actually uploaded?
-
-In the past, I've just marked files as uploaded by `touch "$media.uploaded"` once my python Flickr script returns a successful error code. But I have no idea how to tell git-annex that this means the file can now be dropped, providing a copy exists on my **2tbusbdrive**.
-
-# Furthermore keeping a clean deck
-
-Tbh I don't want the old upload files/directories cluttering up my _uploadme_ directory. Can I just delete them or configure drop to remove the filename too?
diff --git a/doc/forum/correct_way_to_add_two_preexisting_datasets.mdwn b/doc/forum/correct_way_to_add_two_preexisting_datasets.mdwn
deleted file mode 100644
--- a/doc/forum/correct_way_to_add_two_preexisting_datasets.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I've been syncronizing my data since long time, mainly using rsync or unison. Thus I had two 3.5Gb datasets set1 (usb drive, hfs+ partition) and set2 (hdd, ext4 ubuntu 13.04 box) which differed only in 50Mb (new on set1 ). This was double checked using diff -r before doing anything.
-
-I created a git annex repo in direct mode for set2 from command line, and after that I let the assistant scan it.
-After that created the repo for set1 and added it to the assistant. I think here comes my mistake (I think).
-
-Instead of keeping them apart, at told assistant to sync with set2.
-Why I think this was a mistake? Because set2 was indexed and set1 no, and I'm seeing a lot of file moving a copying, which in my humble opinion should not happen.
-What I expected it only the difference to be transferred from set1 to set2.
-What it seems to be doing is moving away all content in set1, and copying it back from set2. I think it will end correctly, but with a lot of unnecessary and risky operations.
-
-I think I should have independently added both datasets, let them be scanned and then connect to each other.
-So, now the questions:
-
-1. Is that the correct way to proceed?
-2. What if I have to identical files with different modifying times, I hope they are not synced, right?
-3. Is it posssible to achieve this behaviour of copying only the 50Mb?
-
-Thanks in advance and keep up the good work.
-Best regards,
-             Juan
-
-EDIT: a couple of questions more:
-
-4. after finishing, set2 ended with a lot of symlinks but only in one subfolder. To prevent this should I put numcopies in 2?
-5. This data is composed of input datasets and output simulations. Thus, I need to change them often, but not as often as code and in a very partial way (chunks of 50Mb). For me direct mode is the best (or plain git). However, I was wondering, it is possible to drop some files (even in direct mode) and use simlinks instead?
diff --git a/doc/forum/could_not_read_from_remote_repository.mdwn b/doc/forum/could_not_read_from_remote_repository.mdwn
deleted file mode 100644
--- a/doc/forum/could_not_read_from_remote_repository.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-hi, i'm trying to set up my notebook and desktop pc to sync my documents. so i used local computers in the web app as a sync option, but on my notebook i get the following error:
-
-    [2013-11-26 11:29:03 CET] main: Pairing in progress
-    X11 forwarding request failed
-    /home/max/.ssh/git-annex-shell: line 4: exec: git-annex-shell: not found
-    X11 forwarding request failed on channel 0
-    /home/max/.ssh/git-annex-shell: line 4: exec: git-annex-shell: not found
-    fatal: Could not read from remote repository.
-    
-    Please make sure you have the correct access rights
-    and the repository exists.
-    [2013-11-26 11:29:31 CET] PairListener: Syncing with desk_Private_Dokumente 
-    X11 forwarding request failed on channel 0
-    /home/max/.ssh/git-annex-shell: line 4: exec: git-annex-shell: not found
-    fatal: Could not read from remote repository.
-
-    Please make sure you have the correct access rights
-    and the repository exists.
-
-    merge: refs/remotes/desk_Private_Dokumente/master - not something we can merge
-
-    merge: refs/remotes/desk_Private_Dokumente/synced/master - not something we can merge
-    X11 forwarding request failed
-    /home/max/.ssh/git-annex-shell: line 4: exec: git-annex-shell: not found
-    X11 forwarding request failed on channel 0
-    /home/max/.ssh/git-annex-shell: line 4: exec: git-annex-shell: not found
-    fatal: Could not read from remote repository.
-
-    Please make sure you have the correct access rights
-    and the repository exists.
-
-my desktop succeeded in adding the repository. 
-
-any idea whats going wrong ?
-
-thanks
diff --git a/doc/forum/differenc_in_webapp_icons__63__.mdwn b/doc/forum/differenc_in_webapp_icons__63__.mdwn
deleted file mode 100644
--- a/doc/forum/differenc_in_webapp_icons__63__.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Hi,
-
-I'm wondering what the difference between the network signal and network sync icons are in the web-app?  Nothing stands out to me why some repos have one some the other?
-
diff --git a/doc/forum/difference_between_full_backup_and_number_of_copies__63__.mdwn b/doc/forum/difference_between_full_backup_and_number_of_copies__63__.mdwn
deleted file mode 100644
--- a/doc/forum/difference_between_full_backup_and_number_of_copies__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-If I have three repositories setup in the git annex webui as:
-
-full backup,
-
-and every file put into one of the repos seems to be propagated to the other two,
-
-what is the usage of the setting "number of copies" which is default to 1 but can be increased to 2 or 3? Does this setting matter in this context?
-
-I'm using assistant version 5.20140517.4
diff --git a/doc/forum/difference_between_uninit_and_unlock.mdwn b/doc/forum/difference_between_uninit_and_unlock.mdwn
deleted file mode 100644
--- a/doc/forum/difference_between_uninit_and_unlock.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-What's the difference between
-
-    git annex uninit
-
-and 
-
-    git annex unlock *
-    rm -rf .git
-
-?
diff --git a/doc/forum/do_not_use_git-annex_inside_your_Dropbox.mdwn b/doc/forum/do_not_use_git-annex_inside_your_Dropbox.mdwn
deleted file mode 100644
--- a/doc/forum/do_not_use_git-annex_inside_your_Dropbox.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Do not place git-annex enabled git repository inside your Dropbox folder! 
-
-You will encounter broken symlinks and git-annex complaining about lost files. Dropbox [doesn't preserve case of file names](https://www.dropbox.com/help/145/en) and this breaks storage of annexed files (.git/annex/objects/). For possible recovery see <http://git-annex.branchable.com/bugs/interference_with_Dropbox_results_in_data_loss>.
-
-
diff --git a/doc/forum/dot_git_slash_annex_slash_tmp.mdwn b/doc/forum/dot_git_slash_annex_slash_tmp.mdwn
deleted file mode 100644
--- a/doc/forum/dot_git_slash_annex_slash_tmp.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-When I was checking out disk usage on my home directory, I noticed a bunch of files stored in .git/annex/tmp under their own filenames, rather than in .git/annex/objects.  Checking a couple, they seem to be redundant with stuff in .git/annex/objects.
-
-Is there any way to clean that stuff up?  Will the assistant eventually clean it up?
-
-Thanks!
diff --git a/doc/forum/downloading_from_moodle.mdwn b/doc/forum/downloading_from_moodle.mdwn
deleted file mode 100644
--- a/doc/forum/downloading_from_moodle.mdwn
+++ /dev/null
@@ -1,76 +0,0 @@
-my school uses moodle for our classes.  We have to sign in and then manually click to download each file, assignment and video uploaded.  I asked the school's tech administrator if there was a direct way I could access the videos through the ssh access they've given us to one of the servers, but he said it wasn't possible.
-
-when I click on the link shown, the location I see is: http://moodle.jct.ac.il/mod/resource/view.php?id=135374
-Inspect element gives more information. the response from the server is:
-
-    Remote Address:147.161.6.59:80
-    Request URL:http://moodle.jct.ac.il/mod/resource/view.php?id=135374
-    Request Method:GET
-    Status Code:303 See Other
-    Request Headersview source
-    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
-    Accept-Encoding:gzip,deflate,sdch
-    Accept-Language:en-US,en;q=0.8,he;q=0.6
-    Connection:keep-alive
-    Cookie:visid_incap_97364=qJx2WaKqQfGidGf9VfM6QWrnlFIAAAAAQUIPAAAAAAC5EXcbt00vqNu9jdVDwEDN; __utma=98014340.1409421308.1381214363.1381214363.1390387318.2; __utmz=98014340.1381214363.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); MoodleSession5771=7s1cfqfo4ahdtmna5h7vserg97; MOODLEID1_5771=%257F%25D39%2522N%25B4%25AFY
-    DNT:1
-    Host:moodle.jct.ac.il
-    Referer:http://moodle.jct.ac.il/course/view.php?id=20151
-    User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36
-    Query String Parametersview sourceview URL encoded
-    id:135374
-    Response Headersview source
-    Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
-    Connection:Keep-Alive
-    Content-Encoding:gzip
-    Content-Language:he
-    Content-Length:503
-    Content-Type:text/html
-    Date:Mon, 16 Jun 2014 12:31:22 GMT
-    Expires:Thu, 19 Nov 1981 08:52:00 GMT
-    Keep-Alive:timeout=15, max=100
-    Location:http://moodle.jct.ac.il/pluginfile.php/288409/mod_resource/content/0/movie%205773/150151.5773.week1.wmv?forcedownload=1
-    Pragma:no-cache
-    Server:Apache/2.2.14 (Ubuntu)
-    Vary:Accept-Encoding
-    X-Powered-By:PHP/5.3.2-1ubuntu4.24
-
-this then pulls the following: 
-
-    Remote Address:147.161.6.59:80
-    Request URL:http://moodle.jct.ac.il/pluginfile.php/288409/mod_resource/content/0/movie%205773/150151.5773.week1.wmv?forcedownload=1
-    Request Method:GET
-    Status Code:200 OK
-    Request Headersview source
-    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
-    Accept-Encoding:gzip,deflate,sdch
-    Accept-Language:en-US,en;q=0.8,he;q=0.6
-    Connection:keep-alive
-    Cookie:visid_incap_97364=qJx2WaKqQfGidGf9VfM6QWrnlFIAAAAAQUIPAAAAAAC5EXcbt00vqNu9jdVDwEDN; __utma=98014340.1409421308.1381214363.1381214363.1390387318.2; __utmz=98014340.1381214363.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); MoodleSession5771=7s1cfqfo4ahdtmna5h7vserg97; MOODLEID1_5771=%257F%25D39%2522N%25B4%25AFY
-    DNT:1
-    Host:moodle.jct.ac.il
-    Referer:http://moodle.jct.ac.il/course/view.php?id=20151
-    User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36
-    Query String Parametersview sourceview URL encoded
-    forcedownload:1
-    Response Headersview source
-    Accept-Ranges:bytes
-    Cache-Control:max-age=86400
-    Connection:Keep-Alive
-    Content-Disposition:attachment; filename="150151.5773.week1.wmv"
-    Content-Length:1353673203
-    Content-Type:application/x-forcedownload
-    Date:Mon, 16 Jun 2014 12:31:23 GMT
-    ETag:675e7d2cffd7a79afd8686c59ff2533f9e3508b7
-    Expires:Tue, 17 Jun 2014 12:31:23 GMT
-    Keep-Alive:timeout=15, max=99
-    Last-Modified:Fri, 19 Jul 2013 17:06:54 GMT
-    Pragma:
-    Server:Apache/2.2.14 (Ubuntu)
-    X-Powered-By:PHP/5.3.2-1ubuntu4.24
-
-when I right-click on the second one in the inspect element window, I can select "copy as cURL" i get:
-
-    curl 'http://moodle.jct.ac.il/pluginfile.php/288409/mod_resource/content/0/movie%205773/150151.5773.week1.wmv?forcedownload=1' -H 'DNT: 1' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Accept-Language: en-US,en;q=0.8,he;q=0.6' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Referer: http://moodle.jct.ac.il/course/view.php?id=20151' -H 'Cookie: visid_incap_97364=qJx2WaKqQfGidGf9VfM6QWrnlFIAAAAAQUIPAAAAAAC5EXcbt00vqNu9jdVDwEDN; __utma=98014340.1409421308.1381214363.1381214363.1390387318.2; __utmz=98014340.1381214363.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); MoodleSession5771=7s1cfqfo4ahdtmna5h7vserg97; MOODLEID1_5771=%257F%25D39%2522N%25B4%25AFY' -H 'Connection: keep-alive' --compressed
-
-if I append " > week1.wmv" to the end of that output it downloads fine.  How can I add this file to a git-annex repo?
diff --git a/doc/forum/downloading_mp4_by_default_with_importfeed.mdwn b/doc/forum/downloading_mp4_by_default_with_importfeed.mdwn
deleted file mode 100644
--- a/doc/forum/downloading_mp4_by_default_with_importfeed.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is it possible to download youtube videos in mp4 format by default with importfeed. Without any options git annex often downloads the webm format.  
diff --git a/doc/forum/drop__47__whereis_not_showing_gcrypted_special_ssh_remote.mdwn b/doc/forum/drop__47__whereis_not_showing_gcrypted_special_ssh_remote.mdwn
deleted file mode 100644
--- a/doc/forum/drop__47__whereis_not_showing_gcrypted_special_ssh_remote.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I have my laptop, my server and my usb drive. My server is a gcrypted remote via ssh. My laptop is just a repo that's referenced as a remote with a filepath.
-
-I do git annex copy --to server, and let it copy stuff. I repeat the same thing for the usb drive. 
-
-I run git annex sync and it does the whole sync dance successfully. it pushes stuff to both the usb drive and the server.
-
-Afterwards, I do git annex whereis, and I only get 2 copies showing - my laptop and my usb drive. Likewise, since I set numcopies to 2, it won't let me drop anything at all, because it doesn't know there's a copy on my server.
-
-Anything I can do about this? (What further info do you need?) 
-
-I should probably add that my server is a ubuntu machine, and so it runs version 5.20140412ubuntu1. My laptop runs a more recent 5.20140717-g5a7d4ff.
diff --git a/doc/forum/drop_old_versions_of_a_file.mdwn b/doc/forum/drop_old_versions_of_a_file.mdwn
deleted file mode 100644
--- a/doc/forum/drop_old_versions_of_a_file.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I have a music repository which has multiple versions of a music file(modified id3 tags etc,.) and in my music player same file is showing two times with two different id3 tags, one is from music directory and another is from .git-annex directory which is a older version(which I don't want to see).
-
-I was just wondering if there is a way I can drop old version of a file in android(direct mode).
diff --git a/doc/forum/duplicated_content___40__user_error__41__._How_to_fix__63__.mdwn b/doc/forum/duplicated_content___40__user_error__41__._How_to_fix__63__.mdwn
deleted file mode 100644
--- a/doc/forum/duplicated_content___40__user_error__41__._How_to_fix__63__.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-I have Ubuntu and Debian systems, playing with git-annex. This is not mission critical data, just testing. I ended up with an extra duplicate of the media files on the laptop.
-
-The whereis listing is lots and lots like this:
-
-whereis 00-Unsorted/2008-RobustStats-AmerPsyc.pdf (3 copies)
-        67e69242-d57c-4b50-aaf9-74876b899962
-        9e0bc9e4-f8bf-11e3-b9c1-9b4158540a9d -- pols110.pols.ku.edu_mediashare (
-pdf and mp3)
-        d82d2e6f-9200-49cf-86a3-1d674a768971 -- here (pauljohn@dellap14:~/medias
-hare)
-ok
-
-(I'm pretty sure) This happened because I copied the media files to /home/pauljohn/mediashare/manuscripts manually, and then I used the git-annex assistant to set up the remote linkage to same content, from  the workstation, and it apparently copied in a whole new set. 
-
-How to clean this up? Without erasing everything and starting over?
-
-Can I guess? 
-
-Open a terminal and git remove manually 67e69242-d57c-4b50-aaf9-74876b899962 ???
-
-Thanks in advance if you care to advise me :)
-
-Paul Johnson
-http://pj.freefaculty.org
diff --git a/doc/forum/empty_directory_handling.mdwn b/doc/forum/empty_directory_handling.mdwn
deleted file mode 100644
--- a/doc/forum/empty_directory_handling.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I've just tried using git annex assistant for the first time, to synchronize a shared directory between machines. This shared directory contains a collection of bare git repositories for various projects. Unfortunately this doesn't seem to work, as to be recognised as valid bare repos, they need to have the ref/heads and ref/tags subdirectories. git annex assistant fails to synchronise these, as they are empty.
-
-What should I do? How can I make git annex reproduce the source directory structure when synchronising?
diff --git a/doc/forum/endless_password_prompt_loop.mdwn b/doc/forum/endless_password_prompt_loop.mdwn
deleted file mode 100644
--- a/doc/forum/endless_password_prompt_loop.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-I setup a first repository on local disk, it went fine. Next I tried setting up repo on my nas to clone the files. I installed git-annex on the NAS (it's armel arch) and created the repository via webapp, I entered the password once. Git-annex started syncing the remote repo and after few seconds password pop-up hell broke loose. I was flooded with password-prompt pop-up windows. The synchronization was continuing regardless of correctly/incorrectly entered passwords. What's more, these popups grab the keyboard and you cannot do (appropriate word) with your system.
-
-I checked this topic: http://git-annex.branchable.com/forum/ssh_password/ and ssh config is in place on my computer and on the NAS.
-
-What is causing this and how can I get rid of this?
-
diff --git a/doc/forum/error_in_installation_of_base-4.5.0.0.mdwn b/doc/forum/error_in_installation_of_base-4.5.0.0.mdwn
deleted file mode 100644
--- a/doc/forum/error_in_installation_of_base-4.5.0.0.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hi,
-
-I was trying to install git-annex, but then, I got a warning saying that I need to install base-4.5.0.0 first.
-
-So, I did "sudo cabal install base-4.5.0.0". Everything was going well, until I got this error:
-
-config.status: error: cannot find input file: `base.buildinfo.in'
-cabal: Error: some packages failed to install:
-base-4.5.0.0 failed during the configure step. The exception was:
-ExitFailure 1
-
-I tried to look for information on the internet, but I did not find anything useful.
-
-I know that this is not totally related to git-annex, but anyone has any thoughts on this?
diff --git a/doc/forum/example_of_massively_disconnected_operation.mdwn b/doc/forum/example_of_massively_disconnected_operation.mdwn
deleted file mode 100644
--- a/doc/forum/example_of_massively_disconnected_operation.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-I found this archival drive that had been offline since October 26th 2010. Since I released git-annex 0.02 on October 27th, this must have been made using the very first release of git-annex, ever.
-
-So, I synced it back up! :) --[[Joey]]
-
-<pre>
-commit 4151f4595fe6205d4aed653617ab23eb3335130a
-Author: Joey Hess <id@joeyh.name>
-Date:   Tue Oct 26 02:18:03 2010 -0400
-
-joey> git pull
-remote: Counting objects: 428782, done.
-remote: Compressing objects: 100% (280714/280714), done.
-remote: Total 416692 (delta 150923), reused 389593 (delta 125143)
-Receiving objects: 100% (416692/416692), 44.71 MiB | 495 KiB/s, done.
-Resolving deltas: 100% (150923/150923), completed with 818 local objects.
- * [new branch]      git-annex  -> origin/git-annex
-   1893f9c..9ebcc0e  master     -> origin/master
-Updating 1893f9c..9ebcc0e
-Checking out files: 100% (76884/76884), done.
-joey> git annex version
-git-annex version: 3.20110611
-local repository version: unknown
-default repository version: 3
-supported repository versions: 3
-upgrade supported from repository versions: 0 1 2
-joey> git config annex.version 0
-joey> git annex upgrade
-upgrade . (v0 to v1...) (v1 to v2) (moving content...) (updating symlinks...)  (moving location logs...) (v2 to v3) (merging origin/git-annex into git-annex...)
-
-  git-annex branch created
-  Be sure to push this branch when pushing to remotes.
-ok
-</pre>
diff --git a/doc/forum/exclude_files_from_annex.mdwn b/doc/forum/exclude_files_from_annex.mdwn
deleted file mode 100644
--- a/doc/forum/exclude_files_from_annex.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I'm wanting to do essentially [[/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant/]], that is prevent git-annex from annexing certain files (by extension), and rather manage them in git only.
-
-This seems to work fine, and the assistant auto-adds them to git, and commits when I make changes, when in indirect mode.
-
-However, in a direct mode repository, then the files are automatically annexed, and even if I create them in an indirect repo, and then change it, they are annexed.
-
-Is this expected behaviour? Does the annex.largefiles setting only make sense in indirect mode?
-
-
---Walter
diff --git a/doc/forum/expire_files__44___move_to_other_hosts.mdwn b/doc/forum/expire_files__44___move_to_other_hosts.mdwn
deleted file mode 100644
--- a/doc/forum/expire_files__44___move_to_other_hosts.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Before turning this into a 'todo' item i'd like to discuss the possibilities...
-
-The idea is following:
-
-Having a Laptop with a rather small SSD or some other mobile device i'd like to move files away which are not needed anymore.
-The first thing is that the --to destination should be semi-automatically choosen, including ensuring enough replicas
-
-    git annex move --away <path..>
-
-should pick remotes which are suitable (either by configuration and/or other rules like disk utilization on the remote side).
-
-I am rather new to git-annex and wondering if there is currently already something which gives similar results, esp not need to hand pick the remotes where to move files.
-
-Further on there needs to be some way to find out which files are not needed anymore. On a first thought filtering by 'atime' would be nice, but nowadays mounting with noatime/relatime is common which would make this infeasible. To accomplish this, the assistant could (optionally) manage a lazy-atime by setting inotify or fanotify watches on all annexed files in a repository (close_nowrite) and queue/batch atime updates coarsely together. Then atimes on disk are only lazily updated (after some time expires, when the queue becomes full or at shutdown of the assistant), we can afford to loose some atime updates here in case of unexpected shutdowns (i rather wonder why the kernel has no lazy-atime option).
-
-Then the assistant (or by crontab) one can schedule some regular maintenance. There are certainly plenty of options to consider here, for example a mobile device might prefer only to send files if connected to Wlan, someone wants to move files away until a certain threshold of free disk space is reached etc...
- 
-While at this, the assistant could also watch (fanotify) if someone tries to open a not available (dead symlinked) file, block that request, get the file and then proceed with the request.
-
diff --git a/doc/forum/exporting_annexed_files.mdwn b/doc/forum/exporting_annexed_files.mdwn
deleted file mode 100644
--- a/doc/forum/exporting_annexed_files.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Is there an easy way to export annexed files out of the repository? (e.g. to make a copy elsewhere, send a file by email...)
-
-Thanks,
-Denis.
diff --git a/doc/forum/external_special_remote_protocol_and_threads.mdwn b/doc/forum/external_special_remote_protocol_and_threads.mdwn
deleted file mode 100644
--- a/doc/forum/external_special_remote_protocol_and_threads.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-As the sync command just got a -J option I have started to use threads to transfer new files to multiple remotes in parallel. A question that arises is if I still can assume that only one instance of the special remote will be started. I tend to store quite some state in the special remote program that I use to connect to a cloud server, and running two instances in parallel might run in to all sorts of fun behavior.
-
-That said, I am of course aware that if I run multiple git annex commands I would run into these problems.
diff --git a/doc/forum/failing_to_add_an_usb_drive_made_me_lose_all_symlinks.mdwn b/doc/forum/failing_to_add_an_usb_drive_made_me_lose_all_symlinks.mdwn
deleted file mode 100644
--- a/doc/forum/failing_to_add_an_usb_drive_made_me_lose_all_symlinks.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Dear all,
-        I had (snif!) and indirect repo with 2.7 of pdf files with filenames were manually added by me with author and title, and took years of work. I had them in a git annex repo from quite some time.  
-Now I'm trying to sync them to an usb drive. Main repo lives in an ubuntu box with ext4 filesystem. I failed many times to do this, both on fat and exfat external drives (direct).  
-As I was failing, I tried to to a test on the same local filesystem. So I have my main repo in /home/juan/papers and the other in /tmp/papers.  
-While trying to sync them using the assistant, i noticed that most of the folders and symlinks from the main repo just dissapeared. 
-I still have them in .git/annex/objects but I don't know how to recover the links. 
-I must say I'm an everyday git user, and big fan of git-annex but I'm trying to use it for six months without luck. I think I will quit after recovering the data, if possible.
-
-EDIT 1
--------
-After digging around a bit, I found that I had the keys, and could find out the original filename, for example:
-
-    git log --stat -S 1279
-    commit a6362df13d728037875320a457182acb073d08ea
-    Author: Juan Cardelino <x@gmail.com>
-    Date:   Fri Nov 21 11:25:31 2014 -0200
-
-     2013_august/feature_matching_by_searching_maximum_clique_on_high_order_association.pdf | 1 +
-     LevelSets/fedkiw/stanford2002-06.pdf                                                   | 1 +
-     new/nfa/00106994.pdf                                                                   | 1 +
-     3 files changed, 3 insertions(+)
-
-How can I recover them?
-
-EDIT 2
--------
-Seems that I overwritten my repo with a new repo. Because git log only shows 4 entries from today. Is it possible that the webapp has made that?
diff --git a/doc/forum/faking_location_information.mdwn b/doc/forum/faking_location_information.mdwn
deleted file mode 100644
--- a/doc/forum/faking_location_information.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Hi
-
-I am using git-annex even if people I exchange data with (currently) don‘t use it for there data. My idea behind this is that I would like to know from where I got a file, whom I gave a file and who does (probably) still have a copy of the file. To do this you need to trick git-annex location tracking feature a bit. I successfully managed to achieve this in a simple data exchange which only consisted of me coping over files to one of my git-annex repos. I did the following to make git-annex believe that the files are in two repos without the need to *copy* them around the repos.
-
-This is what I did in this simple case:
-
-1. mounted the drive from someone
-2. made a clone of my git-annex repo on the filesystem which should hold the copy of the data
-3. initialized the cloned repo with `git annex init "Drive from person X"`
-4. imported the files to the cloned repo with `git annex import --duplicate $path_to_files_from_person_x`
-5. `git annex sync` in the cloned repo
-6. `git annex sync` in main repo
-7. `git annex move . --to origin` in the cloned repo
-
-The impotent part (and the limit) here was that you can not sync these two repos after you moved files to the main repo. The problem is that there will be situations where I will have to sync them also after moving files around (for example if I want to store new files in multiple repos (and not just one main repo), or if I also want to copy files over to drives from someone).
-
-Note: I have also worked out a solution to allow someone to choose which files he/she would like to get as described [on superuser.com](http://superuser.com/a/717689).
-
-Are there better ways to fake location information then the thing I came up with (except making multiple repos for one person/drive)? Can multiple remotes be merged to one remote?
diff --git a/doc/forum/files_being_dropped_undesirably.mdwn b/doc/forum/files_being_dropped_undesirably.mdwn
deleted file mode 100644
--- a/doc/forum/files_being_dropped_undesirably.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-I currently am using 3 repositories for my personal annex, and on each of them I'm running the assistant (they are normal git annex repositories). However all my files are migrating to my work desktop. My other two repositories seem to keep dropping them.
-
-Last night on my laptop I did a "git annex get *" to pull _all_ the files onto it. I saw in the .git/annex/daemon.log that each file was being dropped as soon as it was gotten. The output of "git annex get" showed files being transfered across, and the .git/annex/daemon.log showed files being dropped straight away. Currently I'd like to keep all my files on all my repositories (and perhaps later I'll revise that).
-
-Could someone please help me understand why annex is dropping my files, and what I could do to keep them on all my repositories?
-
-Here is the output of a get for a single file:
-
-    ~/Documents/personal-annex $ git annex get 2014/09/15/IMG_1123.JPG
-    get 2014/09/15/IMG_1123.JPG (from pea15.local_Documents_annexpersonal...)
-    SHA256E-s1841221--deeaa13935907ad606f941397bb57432c1eccfd5c361b8c16d2b19bfbe8437a6.JPG
-          1,841,221 100%   11.40MB/s    0:00:00 (xfr#1, to-chk=0/1)
-    ok
-    (Recording state in git...)
-
-
-Here is the corresponding daemon.log output:
-
-    [2014-10-09 09:11:34 AEDT] Committer: Committing changes to git
-    [2ok
-    (Recording state in git...)
-    (Recording state in git...)
-    (Recording state in git...)
-    drop 2014/09/15/IMG_1123.JPG 01(checking pea15.local_Documents_annexpersonal...) 4-10-09 09:11:34 AEDT] Pusher: Syncing with pea15.local_Documents_annexpersonal 
-    [2014-10-09 09:11:35 AEDT] Committer: Committing changes to git
-    To ssh://geoffc@git-annex-pea-15-geoffc_Documents.2Fannex.2Dpersonal/~/Documents/annex-personal/
-       04742c0..d1a5a36  git-annex -> synced/git-annex
-    [2014-10-09 09:11:38 AEDT] Pusher: Syncing with pea15.local_Documents_annexpersonal 
-    Everything up-to-date
-
-
-And here is a snippet from my .git/config:
-
-    [annex]
-            uuid = 57c4e6d1-0c6b-4c49-a235-4119d3864c14
-            version = 5
-            direct = true
-            #diskreserve = 2 gigabyte
-            autoupgrade = ask
-            debug = false
-            expireunused = false
-            autocommit = true
-    [remote "pea15.local_Documents_annexpersonal"]
-            url = ssh://geoffc@git-annex-pea-15-geoffc_Documents.2Fannex.2Dpersonal/~/Documents/annex-personal/
-            fetch = +refs/heads/*:refs/remotes/pea15.local_Documents_annexpersonal/*
-            annex-uuid = 2ef6bbfe-662f-48ba-aa52-8e2f82bcfb15
-            annex-cost = 175.0
diff --git a/doc/forum/files_only_visible_in_.git_annex.mdwn b/doc/forum/files_only_visible_in_.git_annex.mdwn
deleted file mode 100644
--- a/doc/forum/files_only_visible_in_.git_annex.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Dear all, 
-
-I'm a beginner in using git annex and got the following strange situation:
-
-On my PC I have stored all the data and put them to git annex (don' know the standard nomenclature used here, but I guess its called setting up a repository)
-
-On my Laptop I have now also git-annex and can have access to my stored data by git-annex get (so far so good thats git-annex)
-
-Now comes the strange thing: 
-On my laptop, I can see all the links to my data (where it shows me a path like ../../.git/annex/objects/...) but at my PC, where all the data should have been stored, the folder is empty. When I follow the link which is shown on the laptop, on my PC, I get access to the data. Some somehow, the data is still on my PC but not stored in its original folders but in .git/annex/objects/...
-
-How can I get back my original folder from the .git/annex/objects on my PC?
-
-Thank you very much for your help
-Stefan
diff --git a/doc/forum/files_vanishing.mdwn b/doc/forum/files_vanishing.mdwn
deleted file mode 100644
--- a/doc/forum/files_vanishing.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Can anybody help me locate content that seems to have gone missing? 
-
-Setup is two repos, connected via ssh, both direct mode, both debian machines, repo A with 5.20150731-1 (testing), repo B with 5.20141125 (stable).
-
-Both repos where synchronising (in this case transfering files from A to B), when I was copying a few more hundred files (second set) into a folder in repo A. In the webapp I have seen the assistant pick them up and transfer them to repo B. This took an hour or so, after which I can still see the name of nine files from the second set (and "... and 626 more") in the status messages on the right as added and the same number of files as uploaded.
-
-Unfortunately, from the second set of files only the first two files can be found in A and B, none of the other few hundred.
-
-Running git-annex fsck in repo A did not return any errors.
-
-I would appreciate any pointers,
-Felix
diff --git a/doc/forum/first-time_setup_git-annex.mdwn b/doc/forum/first-time_setup_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/first-time_setup_git-annex.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I have a git installation on my web server (web faction hosting). It allows me to run repositories from my hosting account. 
-
-What I want is to use git-annex as a dropbox replacement. Specifically, the central repository being my web server and then using local installations on my 2 mac laptops (primarily), access through browser on windows, and access on android as well (browser or some other method). 
-
-I'm looking at the install instructions, walkthrough, etc. What I'm initially not clear on is whether I need to install git-annex on my (linux centOS) webserver and any machine through which I'm accessing the repo? Seems like that would be the case of course, but I wanted to validate. 
-
-Am I going to run into issues that folks might already be able to warn me about? Anything I need to know? 
diff --git a/doc/forum/flickrannex_--_not_sure_I_get_it.mdwn b/doc/forum/flickrannex_--_not_sure_I_get_it.mdwn
deleted file mode 100644
--- a/doc/forum/flickrannex_--_not_sure_I_get_it.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-flickrannex -- is it a way to upload your images to flickr by putting them in a git annex directory, and make them retrievable from it handily that way?
-
-Or is it a hack to exploit flickr's free storage, by allowing you to somehow wrap your files in images and uploading them?
-
-My python and knowledge of how git annex's hooks work is not good enough for me to be certain by reading the code.
-
-Thanks
diff --git a/doc/forum/folder_size_question.mdwn b/doc/forum/folder_size_question.mdwn
deleted file mode 100644
--- a/doc/forum/folder_size_question.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-For test purposes I copied a folder into my local repository to do some tests. 
-I now had a look at the original folder size and the size of the repository and compared it to the original folder and the repo is about 2x bigger. How come?
-=> http://screencast.com/t/Tvqe5P22Ux
diff --git a/doc/forum/freebsd_git-annex_seems_to_be_in_an_upgrade_loop.mdwn b/doc/forum/freebsd_git-annex_seems_to_be_in_an_upgrade_loop.mdwn
deleted file mode 100644
--- a/doc/forum/freebsd_git-annex_seems_to_be_in_an_upgrade_loop.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-I installed git-annex on my freenas running freebsd according to the instructions on this site. 
-every now and then it'll pop up (when using the webapp) telling me git-annex has been updated, do I want to restart. 
-if I say yes, the webapp dies, I have to manually stop git annex assistant --stop and after a few minutes of using the webapp it again tells me it has been updated...
-
-only saw this in the logs:
-UpgradeWatcher: A new version of git-annex has been installed. 
-
-
-Also, I connected 2 repos (on my NAS with freebsd and on my Macbook) but the NAS one can't connect to the MAcbook via SSH
-ssh: connect to host 192.168.178.33 port 22: Connection refused 
-
-How is this supposed to work? Obviously for now it shows its only syncing metadata with my MACbook: 
-syncing enabled (metadata only)
-
-Also, both repositories are bare, direct but when a file got pulled from the NAS to the MACbook it was a symlink and not the file itself, so what's wrong here?
-
diff --git a/doc/forum/fsck_gives_false_positives.mdwn b/doc/forum/fsck_gives_false_positives.mdwn
deleted file mode 100644
--- a/doc/forum/fsck_gives_false_positives.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-
-I use git-annex 3.20120123 on a debian-testing amd-64 machine with software RAID6 and LVM2 on it. I needed to move the whole `/home` directory to another LV (the new LV is on encrypted PV, the old LV is encrypted and not properly aligned; I'm changing from encrypted `/home` only to encrypted everything except `/boot`), so I have used the `rsync -aAXH` from a `ro` mounted `/home` to a new LV mounted on `/mnt/home_2`. After the move was complete I run the `git annex fsck` on my (4TB of) data. The fsck finds some files bad, and moves them to the `..../bad` directory. So far so good, this is how it should be, right? But then- I have a file with sha1sum of all my files. So - I checked the 'bad' file against that. It was OK. Then I computed the SHA256 of the file - this is used by `git annex fsck`. It was OK, too. So how did it happen, that the file was marked as bad? Do I miss something here? Could it be related to the hardware (HDDs) and silent data corruption? Or is it the undesirable effect of rsync? Or maybe the fsck is at fault here?
-
-Any ideas?
-
diff --git a/doc/forum/ga-ncdu.mdwn b/doc/forum/ga-ncdu.mdwn
deleted file mode 100644
--- a/doc/forum/ga-ncdu.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I've just written a quick script which provides an output which ncdu will use.
-
-It uses the size from the key for apparent size and the size of the file (if present) for the disk size so 'a' toggles between total size of the annex and the actually used disk space.
-
-Is there anyone else interested in having this? If so, I'll tidy it up and release it :)
diff --git a/doc/forum/ga-ncdu/comment_1_cde3f7bbd099b303bacdaa5e1588b71e._comment b/doc/forum/ga-ncdu/comment_1_cde3f7bbd099b303bacdaa5e1588b71e._comment
deleted file mode 100644
--- a/doc/forum/ga-ncdu/comment_1_cde3f7bbd099b303bacdaa5e1588b71e._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="andy"
- subject="comment 1"
- date="2015-03-28T22:03:53Z"
- content="""
-I'd take a look. I just downloaded ncdu prompted by your comment, and that would be helpful to get sane output regarding my annexed files.
-"""]]
diff --git a/doc/forum/ga-ncdu/comment_2_8d369dc264ccaf80490c1cb37a330239._comment b/doc/forum/ga-ncdu/comment_2_8d369dc264ccaf80490c1cb37a330239._comment
deleted file mode 100644
--- a/doc/forum/ga-ncdu/comment_2_8d369dc264ccaf80490c1cb37a330239._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="markusk"
- subject="Sounds nice !"
- date="2015-03-28T22:41:45Z"
- content="""
-
-I would be very glad if you would release it!
-"""]]
diff --git a/doc/forum/ga-ncdu/comment_3_c5ce3b663de76b50754de70b3fb23bf0._comment b/doc/forum/ga-ncdu/comment_3_c5ce3b663de76b50754de70b3fb23bf0._comment
deleted file mode 100644
--- a/doc/forum/ga-ncdu/comment_3_c5ce3b663de76b50754de70b3fb23bf0._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="CandyAngel"
- subject="comment 3"
- date="2015-04-12T22:12:53Z"
- content="""
-Whelp, didn't realise it had been over two weeks! Got caught up in other stuff (VR).
-
-[Here's the bitbucket repository!](https://bitbucket.org/CandyAngel/ga-ncdu)
-
-I've coded my own JSON output so it doesn't depend on any non-core Perl modules.
-
-Please let me know of any bugs, feature requests etc. Feedback would be appreciated, even just letting me know you are using it would be great!
-
-    ga-ncdu.pl ~/mah_annex | ncdu -f-
-"""]]
diff --git a/doc/forum/gadu_-_git-annex_disk_usage.mdwn b/doc/forum/gadu_-_git-annex_disk_usage.mdwn
deleted file mode 100644
--- a/doc/forum/gadu_-_git-annex_disk_usage.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Based on the thread over at [[forum/__34__du__34___equivalent_on_an_annex__63__]] I decided to finally write a du like utility for git-annex.  A 0.01 version is up over at <http://git-annex.mysteryvortex.com/git-annex-utils.html>.  It works, but I intend to make it smarter about handling git repos and annexed files, as well as adding more of the options available in the standard du utility.
-
-Currently it will tally up the sizes of links that look like they are annexed files.  I plan to make it actually interact with git and git-annex to verify the files are annexed and enable options like tallying files only from specific remotes, only missing files, not double counting files which are annexed multiple times but stored only once, etc...
-
-I'll have time to work on this on the weekends, and plan to get my git repo up soon.  After gadu is mostly complete I might work on some other tools.
-
-Releases are signed with a PGP key with fingerprint 5E1A 65D7 D5E9 56F1 C239  43DF C6C8 9A0B 6003 8953 (available on the website)
diff --git a/doc/forum/gcrypt_os_x_app_vs_brew.mdwn b/doc/forum/gcrypt_os_x_app_vs_brew.mdwn
deleted file mode 100644
--- a/doc/forum/gcrypt_os_x_app_vs_brew.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Gcrypt remotes work when using the git-annex command bundled in the git-annex.app. But gcrypt doesn't work when git-annex is installed via home-brew (brew install git-annex).
-
-The initial push will work, any subsequent commands (push/pull) will fail with:
-
-    gpg: anonymous recipient; trying secret key...
-    gpg: anonymous recipient; trying secret key...
-    gpg: anonymous recipient; trying secret key...
-    gpg: anonymous recipient; trying secret key...
-    gpg: decryption failed: No secret key
-    gcrypt: Failed to decrypt manifest!
-
-In both cases (app/brew) it tries the same keys. The app version will use its own version of gpg, which will trigger password prompts. With the brew version gpgtools is used, so I won't get any prompts. (Keychain)
-
-I tried "echo i | gpg -e -R XX -R XX | gpg -d" with the same recipients as the repo. It works well. 
-
-Has anybody hints or ideas what to try next?
-
-Best, Jean-Louis
diff --git a/doc/forum/get_and_copy_with_bare_repositories.mdwn b/doc/forum/get_and_copy_with_bare_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/get_and_copy_with_bare_repositories.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-is `git annex get` and `git annex copy --to somewhere` expected to work with bare repos? the [[bare repositories]] page doesn't indicate otherwise, but a `git annex get` does plain nothing in my setup.
-
-if it's supposed not to work, there should be an error message saying that and an indication on the [[bare repositories]], otherwise, how can i trace it down?
-
-in case it is just unimplemented for lack of use cases: my setup consists of several laptops using parts of a 200gb+ photo collection, a central trusted server that should host everything, and an external encrypted remote backup. clients *should* copy everything they add to both central locations, but i'd prefer the trusted server to sync the two of them too.
-
-`get` and `copy` usually operate on the current directory, which in case of a bare repo does not contain any relevant files, but i tried explicitly specifying files too. `git annex` should either look them up in master, or always operate on all files (as indexed in the `git-annex` branch) unconditionally.
diff --git a/doc/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.mdwn b/doc/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.mdwn
deleted file mode 100644
--- a/doc/forum/getting_git_annex_to_do_a_force_copy_to_a_remote.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I'm not sure if this is my stupidity or if it's a bug, but
-
-    git annex copy --force --to REMOTE . 
-
-just zip's through really quickly and doesn't actually force a copy to a
-remote location. This is just following up on the
-[[bugs/git-annex_directory_hashing_problems_on_osx]]. I want to just do a force copy of all my data to my portable disk to really make sure that the data is really there. I would similarly would want to make sure I can force a 
-
-    git annex copy --force --from REMOTE .
-
-to pull down files from a remote.
diff --git a/doc/forum/ghost_semitrusted_repositories.mdwn b/doc/forum/ghost_semitrusted_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/ghost_semitrusted_repositories.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-I had one repo on HDD and another in an USB drive. After mount point changed, I went to the HDD repo folder and tried to use git remote-set url to point it to the new location, however I think I ended in a weird state. git-annex info shows this:
-
-    git-annex info
-    repository mode: indirect
-    trusted repositories: 0
-    semitrusted repositories: 5
-        00000000-0000-0000-0000-000000000001 -- web
-        26c0c4ba-6489-4416-a054-670d373f09bd -- juan@invasor.local:/Volumes/sapo_hfs/live/papers
-        61158820-db14-45b9-b9f9-8619d956388e -- [usb_papers]
-        d4456c86-fa2b-43a7-a132-027915390cf6 -- usb_papers
-        fed56814-08c6-11e3-bf3c-af5da9f7f388 -- sapo [here]
-    untrusted repositories: 0
-    transfers in progress: none
-    available local disk space: 255.46 gigabytes (+1 megabyte reserved)
-    local annex keys: 1252
-    local annex size: 2.55 gigabytes
-    annexed files in working tree: 1297
-    size of annexed files in working tree: 2.7 gigabytes
-    bloom filter size: 16 mebibytes (0.3% full)
-    backend usage: 
-        SHA256E: 2549
-
-usb_papers was the original usb repo, and now a new one [usb_papers] shows. webapp shows only sapo[here] and [usb_papers], the other 2 repos are unknown. I was digging around but couldn't find a way to remove them.
-Seems that the webapp managed to use the new URL, but said something about "fixing repo".
-Any suggestions?
-Thanks in advance.
-Best regards,
-              Juan
diff --git a/doc/forum/git-annes_assistant_+_MAC_OSX_questions.mdwn b/doc/forum/git-annes_assistant_+_MAC_OSX_questions.mdwn
deleted file mode 100644
--- a/doc/forum/git-annes_assistant_+_MAC_OSX_questions.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-After spending the whole last night playing with it, I think I have it figured out:
-
-it runs on my Macbook and I have added a free 50GB box.com account as archive and an S3 bucket as full-backup and set the min. number of file occurrences to keep to 2 so IF I delete anything on my Macbook, this should make sure I definitely have 2 more occurrences of each file on two separate storages.
-
-BUT here come the problems/questions
-
-- say I add a folder called: Documents, it has now apparently successfully synced to box.com and S3. I say apparently because there is no tool in the assistant to check
-- I can't seem to figure out how to delete the log of the assistant, its getting quite longish
-- I can't seem to figure out how to upgrade from 5.20140420 to 5.20140421
-- I move a file from a local repo to the archive folder but nothing happens except git-annex recording the move: (Recording state in git...)  /Users/ovi/Sharing/git-annex/Finance/1-564 Erkl. z. Gebiets- u. Steuereigenschaft 08_04.pdf still has writers, not adding [2014-05-09 17:22:43 SAST] Committer: Committing changes to git
-- the assistant doesn'T have any kind of gui for retrieving/deleting/finding stuff - I'm no stranger to the command line but I can't figure out how to add the /Applications/gitannex.app.5.20140421/Contents/MacOS to my path and if I go there and run runshell, most git-annex commands tell me: not in a git repository so all I can do right now, is look at things :-/
-- reading the description on the kickstarter page I must say I expected more. This is in no way comparable to Dropbox. 
-
-Don't get me wrong, this is the most promising project of its kind I came across if I can be pointed in the right direction :-)
-
-P.S. How does it work on the "inside"? i.e. I edit a file and git-annex picks it up and "syncs" - what is synced? The whole file? A diff? How can one restore older versions or even look to see what versions are available?
diff --git a/doc/forum/git-annex__58___map__58___1_failed.mdwn b/doc/forum/git-annex__58___map__58___1_failed.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex__58___map__58___1_failed.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-What exactly does that mean?
-I got that while exploring the git annex command:
-
-shiny-2:git-annex ovi$ pwd
-/Users/ovi/Sharing/git-annex
-shiny-2:git-annex ovi$ git annex map
-map /Users/ovi/Sharing/git-annex ok
-
-  running: dot -Tx11 /Users/ovi/Sharing/git-annex/.git/annex/map.dot
-
-failed
-git-annex: map: 1 failed
diff --git a/doc/forum/git-annex___38___ikiwiki_experiment.mdwn b/doc/forum/git-annex___38___ikiwiki_experiment.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex___38___ikiwiki_experiment.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Hi,
-
-I've been experimenting with combining [ikiwiki](http://ikiwiki.info) with git-annex and it seems to work. Thought I'd post my process. I've [commented](http://ikiwiki.info/todo/git-annex_support/discussion/) on the ikiwiki website as well but perhaps it'd be of interest to git-annex folks.
-
-I have very little understanding of any of the tools involved and have just attempted to make it work using my limited knowledge. I don't use the web interface for ikiwiki which simplifies things.
-
-The [website in question](http://stockholm.kalleswork.net) just went online and is currently an archive of architectural photographs and the site relies heavily on the ikiwiki osm and album plugins.
-
-### Setting things up
-
-To start with I set up the wiki on the server and git clone to into `$wrkdir` on my laptop. I then initialize a git-annex repo in the `$srcdir` on the server. Leaving the `$gitdir` untouched. The `$scrdir` git-annex repo has to be in `direct` mode. Before doing any syncing I add `annex-ignore = true` and `annex-sync = false` to `.git/config` in the origin repo (`$gitdir`): this is to prevent polluting `$gitdir` with git-annex data. The same process is repeated in the `$wrkdir` on the laptop.
-
-### Pushing and syncing
-
-With this setup I can then `git add remote $srcdir`, `git add $file` and `git-push` mdwn files and other lightweight data from the laptop. While `git annex-add`, `git-annex sync` and `git-annex copy --to $srcdir` jpg's and other heavy files. All pure git commands work as expected with ikiwiki and the website recompiles etc.
-
-### Snags
-
-I'm frequently left with (non-dangling) symlinks in the `$srcdir` despite the annex repo being in direct mode. When this happens `git-annex fsck` sorts things out.
-
-Uploading image files does require a bit of manual work. But as this is done less frequently it's not much of an issue for me. I'm guessing that by doing things it the correct order (whatever that might be) I could avoid some of the manual work.
-
-The thing to keep in mind is to never `git-add` the typechanged annexed files in the $srcdir. In general I never use git commands in the $srcdir.
-
-The main problem is the symlinks though as they demand a manual `git-annex fsck`. I have no idea what causes the symlinks in a direct mode repo.
-
-Any comments? 
-
diff --git a/doc/forum/git-annex_across_two_filesystems.mdwn b/doc/forum/git-annex_across_two_filesystems.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_across_two_filesystems.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Hi everyone,
-
-I need some suggestions on how to operate git-annex best in my setup.
-
-I need git-annex mainly for its ability to have directories of all my data on all my nodes but not for the data redundancy it can provide.
-I have one node that contains 2 filesystems that I want to merge in one git-annex repository. One filesystem (lets call it SAFE) is on top of a RAID1 between two 1TB hds. The other (BIG) is on top of a 3TB hd. SAFE holds data I do not want to loose (like digital pictures). BIG holds data that I can loose.
-
-I do not have enough disk space on other nodes to get rid of the RAID1.
-
-This is how I mount my filesystems:
-
-SAFE at ~/AllData/
-
-BIG at ~/AllData/bigfiles/
-
-The root of the git repository is at ~/AllData/ however when I do:
-
-git-annex add ~/AllData/bigfiles/file1
-It says:
-add bigfiles/file1 failed
-
-I assume that is because of file1 being on a different filesystem.
-
-Do I have to create two repositories: one for each filesystem or do you have any ideas on how to use git-annex best in this scenario?
-Having two repositories also has the disadvantage that I need two repositories on all other nodes am I right?
-
-Thanks for you suggestions
-
-
-
diff --git a/doc/forum/git-annex_add_out_of_memory_error.mdwn b/doc/forum/git-annex_add_out_of_memory_error.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_add_out_of_memory_error.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-Greetings all!
-
-I have only been using git-annex for a few days, but I am loving it so far.
-
-I have run into one problem:
-
-At the top of a directory tree with some very large (GB+) blobs, I issue this command:
-
-find . -size +5M  -exec git-annex add --debug {} \;  2>&1 | tee -a ./annex-add.log
-
-When the command completes, I see a number of these types of errors in the log:
-
-    [2015-10-05 21:14:13.502615] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch"]
-    [2015-10-05 21:14:13.521586] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","cat-file","--batch"]
-    [2015-10-05 21:14:13.533095] read: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","diff","--name-only","--diff-filter=T","-z","--","./application/mozilla/firefox/linux/firefox-39.0/media/firefox-39.0.tar.bz2"]
-    [2015-10-05 21:14:13.545739] feed: xargs ["-0","git","--git-dir=.git","--work-tree=.","--literal-pathspecs","add","--"]
-    [2015-10-05 21:14:13.562727] process done ExitSuccess
-    [2015-10-05 21:14:13.564103] chat: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","hash-object","-w","--stdin-paths","--no-filters"]
-    [2015-10-05 21:14:13.56616] feed: git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","update-index","-z","--index-info"]
-    [2015-10-05 21:14:13.58032] process done ExitSuccess
-    fatal: Out of memory, getdelim failed
-    [2015-10-05 21:14:13.582109] process done ExitFailure 128
-    ok
-    (recording state in git...)
-    git-annex: user error (git ["--git-dir=.git","--work-tree=.","--literal-pathspecs","hash-object","-w","--stdin-paths","--no-filters"] exited 128)
-
-I've googled around and searched the forums/bug reports here without much success.
-I have tried setting the queuesize to smaller values, but that does not seem to help.
-
-I am using git-annex version: 5.20150930-g40fdbe9 on RHEL 6.
-
-I am happy to help debug further...
-
-Thanks,
-
-JC
-
-P.S. - Is it normal that some links in the .git dir are created without user write access?
diff --git a/doc/forum/git-annex_and_tagfs.mdwn b/doc/forum/git-annex_and_tagfs.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_and_tagfs.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hi,
-
-Thanks for git-annex, really a great project.
-Another related feature which would be useful to have is described by tagfs [3][] [4][], experimental implementations such as [tagfs over fuse][1], and [tagsistant][2] exist, but having a solution within the power of git-annex would really be attractive.
-
-How hard would this be to implement within the existing infrastructure?
-Thanks.
-
-related post: [[multiple_sym_links___40__for_tagging_photos__41____63__]]
-
-[1]: http://code.google.com/p/tagfs/
-[2]: www.tagsistant.net/
-[3]: http://site.xam.de/2006/01-tagfs.pdf
-[4]: http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&ved=0CE4QFjAF&url=http%3A%2F%2Fweb.mit.edu%2F6.033%2F2011%2Fwwwdocs%2Fwriting-samples%2Fsbezek_dp1.pdf&ei=ILQkUdqxMueR0QWgx4CwDw&usg=AFQjCNE1eWeFxmaxzOLZYVsb0tomqWNQaw&bvm=bv.42661473,d.d2k
diff --git a/doc/forum/git-annex_assistant_with_2_dedicated_servers.mdwn b/doc/forum/git-annex_assistant_with_2_dedicated_servers.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_assistant_with_2_dedicated_servers.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hello,
-
-I am looking for a solution to replicate lots of files between 2 servers (with dedicated IP address) over WAN. (I already looked at GlusterFS, DRBD, Bittorent-Sync and ownCloud, but comments are welcome). Now I am evaluating git-annex but it is (kind of) hard to get the concepts as I am not familiar with git.
-
-I could already connect the servers by following the steps of "remote sharing walkthrough" but I feel that using a 3rd special node (as "transfer repository" / rsync or ssh) is an overhead and should not be needed. But no matter how hard I tried, I couldn't make the 2 servers do a sync without a special node. 
-
-Could you please give me a hint how to do it? Or even better, some detailed steps. :)
-
-Thanks,
-
-David
diff --git a/doc/forum/git-annex_communication_channels.mdwn b/doc/forum/git-annex_communication_channels.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_communication_channels.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Thought I'd ask how y'all are finding the current communication by this forum/website/git repo only.
-
-Would there be a benefit to having an irc channel for git-annex?
-
-Maybe a mailing list? (Any persuasive reason why it would be better than this forum?)
-
-Are the existing RSS feeds on this site, for eg, new [[comments]] and posts to this forum, sufficient to keep up with
-things?
-
---[[Joey]]
diff --git a/doc/forum/git-annex_does_not_protect_files_on_NTFS-Fuse.mdwn b/doc/forum/git-annex_does_not_protect_files_on_NTFS-Fuse.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_does_not_protect_files_on_NTFS-Fuse.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I've read that git-annex probes the host filesystem to determine whether it has the necessary features for an indirect annex. Indirect annexes are supposed to protect annexed files from accidental editing:
-
-    # echo oops > my_cool_big_file
-    bash: my_cool_big_file: Permission denied
-
-I have an NTFS drive to share files between my Windows and Linux systems (dual boot). On Linux fuse sets the file permissions to rwx for the user and nothing for the rest, and this cannot be changed. Files in the annex can be modified as in the above example.
-
-If git-annex detects whether a fs can handle indirect annexes or not, I suggest checking for this case if possible.
diff --git a/doc/forum/git-annex_does_not_respect_preferred_content_settings.mdwn b/doc/forum/git-annex_does_not_respect_preferred_content_settings.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_does_not_respect_preferred_content_settings.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-I have the following vicfg,
-
-    group UUID1 = PodA
-    group UUID2 = PodA
-    group UUID3 = PodA
-    group UUID4 = PodB
-
-    wanted UUID1 = groupwanted
-    wanted UUID2 = groupwanted
-    wanted UUID3 = groupwanted
-    wanted UUID4 = groupwanted
-
-    groupwanted PodA = present and not copies=PodA:1
-    groupwanted PodB = present and not copies=PodB:1
-
-at this point repos 1 2 3 combined has 1 copy of each file and repo 4 has full copy of all files. (used to move files around manually before grouping repos). 
-
-What I am trying to achieve is to have a copy of a file in one of the 3 repos (1 2 3) and one copy in 4. running git annex get --auto starts getting all files, files with copies on other disks. testing using git annex find --want-get --not --in . returns all remaining files not in the repo but has enough copies on other repos both PodA and PodB has copies. numofcopies is set to 2.
diff --git a/doc/forum/git-annex_fails_on_Windows.mdwn b/doc/forum/git-annex_fails_on_Windows.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_fails_on_Windows.mdwn
+++ /dev/null
@@ -1,56 +0,0 @@
-Not sure if this is a bug or user error. I'm trying to use git-annex on Windows 2008 R2, but it isn't working for me. Works fine on Linux. I have a local git repo and then added some binary files to annex. Then I used git annex sync --content to push ennex'd files up to git server. Then I can clone that repo and sync again to pull all the files down. On windows I just get error messages when I try to clone the repo and use annex to init or sync.
-
-git version: 1.8.0.msysgit.0
-git-annex version:
-git-annex version: 5.20150710-g8fd7052
-build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA TorrentP
-arser
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E MD5E SHA256 SHA1 SHA51
-2 SHA224 SHA384 SKEIN256 SKEIN512 MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook extern
-al
-local repository version: unknown
-supported repository version: 5
-upgrade supported from repository versions: 2 3 4
-
-If I try to init the cloned repo:
-
-$ git-annex init
-init  Unknown option: --literal-pathspecs
-usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
-           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
-           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
-           [-c name=value] [--help]
-           <command> [<args>]
-Unknown option: --literal-pathspecs
-usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
-           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
-           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
-           [-c name=value] [--help]
-           <command> [<args>]
-Unknown option: --literal-pathspecs
-usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
-           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
-           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
-           [-c name=value] [--help]
-           <command> [<args>]
-Unknown option: --literal-pathspecs
-usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
-           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
-           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
-           [-c name=value] [--help]
-           <command> [<args>]
-git-annex.exe: git [Param "config",Param "user.name",Param "user"] failed
-
-If I try to sync:
-
-$ git annex sync --content
-Unknown option: --literal-pathspecs
-usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
-           [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]
-           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
-           [-c name=value] [--help]
-           <command> [<args>]
-git-annex: First run: git-annex init
-
-What am I missing? I love the idea of annex and really need it for an urgent project I'm working on, but unfortunately I need to use it with Windows...in addition to Linux.
diff --git a/doc/forum/git-annex_in_sane_language_for_mere_humans_of_us__63__.mdwn b/doc/forum/git-annex_in_sane_language_for_mere_humans_of_us__63__.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_in_sane_language_for_mere_humans_of_us__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-So, you provide ARM build. But you probably don't know that my NAS box runs OABI. No, you don't know, you can't know, and you shouldn't know. The only thing worth knowing is that writing great software in obscure and esoteric languages drastically limits its usage, impact, and collaboration around it. So, any idea of writing git-annex implementation in a sane, interpreted, "just works" language, e.g. Python? Thanks.
diff --git a/doc/forum/git-annex_on_OSX.mdwn b/doc/forum/git-annex_on_OSX.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_on_OSX.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-See [[install/OSX]].
diff --git a/doc/forum/git-annex_on_Samba_share.mdwn b/doc/forum/git-annex_on_Samba_share.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_on_Samba_share.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I want to put my photos into a git-annex repository, syncing it with my girlfriends computer and our NAS.
-If possible, I'd like to be able to add files to the NAS and have them synced, so I guess a special remote doesn't work here.
-
-Unfortunately, git-annex doesn't run on my NAS directly (yet), so I thought of mounting the NAS with CIFS, and creating an annex there that syncs with the local ones.
-While this seems to work fine with one computer, I wonder what will happen if I mount the Samba share on my and my girlfriend's computer at the same time.
-
-In theory, the NAS supports Samba Unix extensions which includes POSIX locking, but a weird bug that prevents you from removing a named pipe from Samba, making git-annex init fail (sent a bug report to Synology). When I disable Unix extensions it works. It then detects a crippled file system though.
-
-Any thoughts?
diff --git a/doc/forum/git-annex_on_Ubuntu_13.04_and_13.10_not_working.mdwn b/doc/forum/git-annex_on_Ubuntu_13.04_and_13.10_not_working.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_on_Ubuntu_13.04_and_13.10_not_working.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-I am trying to get git-annex working on Ubuntu, specifically 13.04 and now 13.10 (I thought upgrading to a new distro. would fix the issue).
-
-I have tried:
-
-  * installing via apt-get install git-annex
-  * installing via cabal (full-build)
-
-Both times git-annex install successfully with no errors. I then start the webapp and create a repository (which git-annex creates successfully), I then add the folders and files I want it to sync. Git-annex finds the files and says it has began syncing them, but it never moves past the first batch of files it 'says' it had started syncing. I have waited 5+ hours at one point and nothing has changed. Also, the webapp is incredibly slow, it takes 15+ seconds to perform ANY action (such as saving options or viewing the logs). The issue definitely isn't my computer as I am using an high-end SSD, core i7, DDR3 RAM, etc... 
-
-Also the logs produce no errors of any kind and actually show git-annex adding files, most of the log entries say add 'filedirectory/filename.txt' as an example.
-
-I have gotten this to successfully work on Fedora, but Ubuntu (13.04/13.10) is having serious problems.
diff --git a/doc/forum/git-annex_on_archlinuxarm__44___armv6.mdwn b/doc/forum/git-annex_on_archlinuxarm__44___armv6.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_on_archlinuxarm__44___armv6.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Hi!
-
-I can't get git-annex to run on my archlinuxARM sytem. It fails with
-
-    $ git annex test
-    error: git-annex died of signal 11
-
- Its a RaspberryPi (model B I think) so its an ARM11 (armv6h if I'm not mistaken). I use archlinuxarm because I am familiar with the distribution and you can have a very lean system. There is a very crude package for git-annex arm and armv7 that is build like this: https://github.com/archlinuxarm/PKGBUILDs/blob/master/alarm/git-annex/PKGBUILD . Crude, because it just takes the debian package, changes the version of libraries where apropriate and packs it as archlinux package. Two problems: 1) It's not been tested on armv6. 2) The 4.20130417 version does not exist anymore on the debian mirrors.
-
-1. The debian package is not marked as armv5 or armv7 specific and is runs on the RaspberryPi with Raspbian (but in an pretty old version if I remember correctly). So I would have imagined it runs on armv6h in general.\\
-2. I just did the same magic as in the linked PKGBUILD with a more current version to build the package but it still crashes. Can I get the old version anywhere to check if it works with that? 
-
-
-Cheers,
-  Hannes
-
-Background for whoever's interested :)
-I tried to set up a RaspberryPi to manage my files, contacts and calendars. That shouts out loud for owncloud because of its convenience (caldav, carddav, webdav and a nice interface bundled together). However, compared to git-annex owncloud is unbearably slow (on an RaspberryPi) and lacks git-annex's easy way to keep your files sorted even if you don't have them on your local disk.
-
-For these reasons I tried to install a hybrid git-annex/owncloud system. There, basically, the files are served by owncloud but at the same time also managed (and served) by git-annex (+ssh). As far as I can see that should not have any noticeable side effects in my use case (mostly single user). I have some external hard drives connected to the RaspberryPi of which I will just symlink the appropriate folders to the owncloud 'files' folder. This way I can also just take the drives with me and still have the same (UUID) git annex repository on them. Any comments?
diff --git a/doc/forum/git-annex_on_openSUSE.mdwn b/doc/forum/git-annex_on_openSUSE.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_on_openSUSE.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-I run into some problems installing git-annex on openSuSE:
-
-1) cabal install ends up with the failure:
-
--->>> ExitFailure 1 network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
-
-2) with the tarball the files are not synchronized, only linked
-
-Here the link to the discussion in a suseforum:
-
-https://forums.opensuse.org/showthread.php/506098-How-to-install-git-annex-on-13-1-2
-
-It would be great to see git-annex in the opensuse repos,
-maybe via the open build service, https://build.opensuse.org
-
-Are there other ways to install git-annex on opensuse successfully?
-
-Thanks in advance
-
-saneP
diff --git a/doc/forum/git-annex_pre-commit_eats_all_my_4GB_of_ram.mdwn b/doc/forum/git-annex_pre-commit_eats_all_my_4GB_of_ram.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_pre-commit_eats_all_my_4GB_of_ram.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Hi all,
-
-git-annex basically renders my repository unmanageble.  What is the
-best and save (!) way to recover?
-
-Here is my situation:
-
-I have a fairly large repository with ~8000 managed files taking about
-65GB of disk space.
-
-git-annex worked well there.  But some programs choke on the
-symlinks.  So, I converted the repository to direct mode.  The
-transition worked well.
-
-Now git status reports a type change for the ~8000 files.
-
-But as soon as I run
-
-    git commit -m "typechange" even-only-one-of-the-files
-
-the process `git-annex pre-commit .` eats 3.5GB of ram, where I
-usually kill it, as I only have 4GB of ram....
-
--- Andreas
diff --git a/doc/forum/git-annex_sync_content_available_from_which_version__63__.mdwn b/doc/forum/git-annex_sync_content_available_from_which_version__63__.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_sync_content_available_from_which_version__63__.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Hi,
-
-I'm on a centos 6.4 64bits & installed git-annex
-version : git-annex-3.20120522-2.1.el6.x86_64
-
-From my understanding of the help page, I should be able to sync content with :
-
-git annex sync --content
-
-but it is not recognized. The help tells me I may be able to use "get" but I'm unclear how...
-
-Thanks for any help
diff --git a/doc/forum/git-annex_teams___47___groups.mdwn b/doc/forum/git-annex_teams___47___groups.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_teams___47___groups.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi,
-
-Does git-annex (preferably assistant) have any management of users / groups or teams? Our use case is we have many users which should only have access to certain folders (repos). Is this a planned feature or any manual way to work around this for now?
-
-Thanks!
diff --git a/doc/forum/git-annex_unused_not_dropping_deleted_files.mdwn b/doc/forum/git-annex_unused_not_dropping_deleted_files.mdwn
deleted file mode 100644
--- a/doc/forum/git-annex_unused_not_dropping_deleted_files.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-I've been organizing my music collection deleted/replaces some files but git-annex unused does not show any unused files even though they are deleted and all repos are in sync.
-
-
-    git log --stat --all -S'SHA256E-s8034842--5c3475d7fef6f0c3545721f34e7cbfb6727a00708bdde192f0f1d53af251b444'
-    commit a0fecdc02f7564f8bce9726f6b934fefc11de58b
-    Date:   Thu Sep 12 17:04:53 2013 +0300
-
-        Deleted
-
-     .../Dido - Sitting On the Roof of the World.mp3    |    1 -
-     1 file changed, 1 deletion(-)
-
-    commit 7f216228fc0e6298f0290ee1d8646bc9b16eca10
-    Date:   Mon Aug 5 03:49:55 2013 +0200
-
-        Initial Import
-
-     .../Dido - Sitting On the Roof of the World.mp3    |    1 +
-     1 file changed, 1 insertion(+)`
-
-even though the file is deleted its still present in annex objects,
-
-    find .git -name '*5c3475d7fef6f0c3545721f34e7cbfb6727a00708bdde192f0f1d53af251b444*' -exec ls -al '{}' \;
-    total 7856
-    dr-xr-xr-x 2 user user    4096 Sep  9 01:24 .
-    drwxrwxr-x 3 user user    4096 Sep  9 01:24 ..
-    -r--r--r-- 1 user user 8034842 Aug  5 04:52 SHA256E-s8034842--5c3475d7fef6f0c3545721f34e7cbfb6727a00708bdde192f0f1d53af251b444.mp3
-    -r--r--r-- 1 user user 8034842 Aug  5 04:52 .git/annex/objects/Jz/74/SHA256E-s8034842--5c3475d7fef6f0c3545721f34e7cbfb6727a00708bdde192f0f1d53af251b444.mp3/SHA256E-s8034842--5c3475d7fef6f0c3545721f34e7cbfb6727a00708bdde192f0f1d53af251b444.mp3
-
-I got around 200 files that should be deleted but not showing up in unused. I though maybe one of the dead repos is causing the problem so i did a,
-
-    git annex forget --drop-dead
-
-and synced all repos. Still I can not get them to drop.
diff --git a/doc/forum/git-assistant_clarification.mdwn b/doc/forum/git-assistant_clarification.mdwn
deleted file mode 100644
--- a/doc/forum/git-assistant_clarification.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I've noticed that if I'm using git-assistant, it wants to pull down all my files from other repos onto my laptop, even after I've dropped them.  (My laptop is set up as "client," my usb drive and an ssh server as "backup".)
-
-I want to use git annex to save space on my laptop, but of course when I'm running the assistant, it pulls everything down there, even things I've manually dropped.
-
-Is my "I want to save space, with a partial archive on my laptop" use case simply out of scope for the assistant?  So I should just be using the command line for my needs?  That's fine if that's the case.
-
-Or maybe something like this is what I should be doing?  http://git-annex.branchable.com/assistant/archival_walkthrough/  ?  so instead of manually "git annex drop"-ping files in place, I should set up a directory called "archive" on my machine, from which files will magically disappear and get backed up elsewhere?
-
-If it's the case that a directory named "archive" in your checkout has the magical property of having the assistant drop and archive its contents, that's awesome, maybe just what I need, but if that behavior is spelled out in so many words anywhere I managed to miss it.
-
-Apologies for all these questions, just enjoying the software immensely and wanting to get to know it.
diff --git a/doc/forum/git-like_git-annex_diff.mdwn b/doc/forum/git-like_git-annex_diff.mdwn
deleted file mode 100644
--- a/doc/forum/git-like_git-annex_diff.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-It took me some trial and error to get `git-annex diffdriver` to work close to the way I wanted (basically, the same way `git diff` works in a normal git repository with `color.ui` set to `always` with `git config`, so I thought I'd put my notes here for others:
-
-* Install `colordiff` (I couldn't figure out what `git`'s actual default diff program was or if it was possible to use it outside of `git diff`, so I went with this.
-* Create a wrapper script to pass to `git-annex diffdriver`. `LANG=C` was to avoid a warning produced by `perl` when it runs `colordiff`. `exit 0` is needed because `colordiff`/`diff` has a non-zero exit status when the files it is passed are not identical and `git` expects the external diff program to exit with status 0:
-
-        #!/usr/bin/env bash                                                             
-        LANG=C colordiff -c "$1" "$2"                                                   
-        exit 0
-
-* Put the wrapper script somewhere on `PATH`, make it executable, and name it something like `git-annex-diff-wrapper`.
-* Configure the repo to use the wrapper: `git config diff.external "git-annex diffdriver -- git-annex-diff-wrapper --"`
diff --git a/doc/forum/git-remote-gcrypt.mdwn b/doc/forum/git-remote-gcrypt.mdwn
deleted file mode 100644
--- a/doc/forum/git-remote-gcrypt.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Back in January Joey [mentioned](http://git-annex.branchable.com/design/assistant/blog/day_179__brief_updates/) the [git-remote-gcrypt](https://github.com/blake2-ppc/git-remote-gcrypt) and possibly adding support for it in the Assistant. I think this would be a great addition. Now that the first big Android push is complete, is there a schedule for this feature?
diff --git a/doc/forum/git-status_typechange_in_direct_mode.mdwn b/doc/forum/git-status_typechange_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/git-status_typechange_in_direct_mode.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-Hi all,
-
-how can I get rid of all those 'typechange' messages in `git status`
-when in direct mode?
-
-Here is an example session:
-
-    > git init
-    Initialized empty Git repository in /some/path/.git/
-    > git config user.name dtrn
-    > git config user.email drn@drn.com
-    > git annex init
-    init  ok
-    (Recording state in git...)
-    > git annex direct
-    commit
-    # On branch master
-    #
-    # Initial commit
-    #
-    nothing to commit (create/copy files and use "git add" to track)
-    ok
-    direct  ok
-    > dd if=/dev/zero of=testfile.bin count=1000
-    1000+0 records in
-    1000+0 records out
-    512000 bytes (512 kB) copied, 0.00317424 s, 161 MB/s
-    > git annex add testfile.bin
-    add testfile.bin (checksum...) ok
-    (Recording state in git...)
-    > git commit -m "annexed testfile.bin"
-    ok
-    [master (root-commit) 281e740] annexed testfile.bin
-     1 file changed, 1 insertion(+)
-     create mode 120000 testfile.bin
-    >  git status
-    # On branch master
-    # Changes not staged for commit:
-    #   (use "git add <file>..." to update what will be committed)
-    #   (use "git checkout -- <file>..." to discard changes in working directory)
-    #
-    #       typechange: testfile.bin
-    #
-    no changes added to commit (use "git add" and/or "git commit -a")
-
-
-Regards,
-Andreas
diff --git a/doc/forum/git-subtree_support__63__.mdwn b/doc/forum/git-subtree_support__63__.mdwn
deleted file mode 100644
--- a/doc/forum/git-subtree_support__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hi,
-
-I am a happy user of [git-subtree](http://github.com/apenwarr/git-subtree), and I wonder whether it integrates nicely with git-annex?
-
-My use-case looks like this: I have two annex repositories -- one at home and one at work. The annex at work is a strict subset of the one at home, i.e. all files that I have at work ought to be part of the annex at home, but not the other way round. Now, I realize that I could have one annex and selectively copy files to the checked out copy at work, but I don't want to do that because I don't want to have (broken) symlinks for all kinds of stuff visible on my machine at work that is not supposed to be there (such as MP3 files, etc.). Instead, I would like to use git-subtree to import the work annex into a sub-directory of the one at home, so that both annex are logically separate, but still the one at home always contains everything that the one at work contains.
-
-Is that possible?
-
-And if not, is there maybe another way to accomplish this kind of thing?
diff --git a/doc/forum/git_annex_add_crash_and_subsequent_recovery.mdwn b/doc/forum/git_annex_add_crash_and_subsequent_recovery.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_add_crash_and_subsequent_recovery.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Perhaps stupidly I added some very large bare git repos into a git-annex.
-
-This took a very long time, used lot's of memory, and then crashed.  I didn't catch the error (which is annoying) - sorry about that.  IIRC it is the same error if one Ctrl-c's the addition.
-
-I ran `git annex add .` a second time and eventually killed it (I perhaps should have waited - I now think it was working).
-
-A `git annex unannex` fixed up some files but somehow I managed to end up with tonnes of files all sym-linked into the git annex object directory but not somehow recognised as annexed files.  I'm assuming that they somehow didn't make it into git annex's meta-data layer (or equivalent).
-
-Commands such as `git annex {fsck,whereis,unannex} weirdfile` immediately returned without error.
-
-I've now spent a lot of manual time copying the files back. Doing the following, not the cleverest but I was a little panicky about my data...
-
-    find . -type l -exec mv \{} \{}.link \; #Move link names out of the way
-    find . -type l -exec cp \{} \{}.cp \; #Copy follows links so we can copy target back to link location
-    find . -type f -name "*.link.cp" | xargs -n 1 rename 's/\.link\.cp//' #Change to original name
-    find . -type l -exec rm \{} \; #Ditch the links
-    git annex unused
-    git annex dropunused `seq 9228`
-
-9228 files were found to be unused, this gives an idea of the scale of the number of "lost" files for want of a better term.
-
-A pretty poor bug report as these things go.  Anyone any idea what might have happened (it didn't seem space or memory related)?  Or how I might have fixed it a little more cleverly?
-
-For reference I am using stable Debian, git annex version 3.20111011.
-
diff --git a/doc/forum/git_annex_add_freezes_on_direct_repo.mdwn b/doc/forum/git_annex_add_freezes_on_direct_repo.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_add_freezes_on_direct_repo.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-I've found that running git annex add on a directory in a direct repository freezes. Example output:
-
-    > git annex add Signs\ \(2002\ Film\) --debug
-    
-    [2015-02-22 10:10:04 GMT] read: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","ls-files","--others","--exclude-standard","-z","--","Signs (2002 Film)"]
-    [2015-02-22 10:10:04 GMT] chat: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","cat-file","--batch"]
-    add Signs (2002 Film)/VIDEO_TS/VIDEO_TS.BUP [2015-02-22 10:10:04 GMT] chat: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","check-attr","-z","--stdin","annex.backend","annex.numcopies","--"]
-    [2015-02-22 10:10:05 GMT] chat: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","hash-object","-t","blob","-w","--stdin","--no-filters"]
-    [2015-02-22 10:10:05 GMT] chat: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","cat-file","--batch"]
-    ok
-    add Signs (2002 Film)/VIDEO_TS/VIDEO_TS.IFO [2015-02-22 10:10:05 GMT] chat: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","hash-object","-t","blob","-w","--stdin","--no-filters"]
-    ok
-
-Lots of files, ending in:
-
-    add Signs (2002 Film)/VIDEO_TS/VTS_13_1.VOB [2015-02-22 10:56:49 GMT] chat: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","hash-object","-t","blob","-w","--stdin","--no-filters"]
-    ok
-    [2015-02-22 10:56:49 GMT] read: git ["--git-dir=/Volumes/plato/Films/.git","--work-tree=/Volumes/plato/Films","-c","core.bare=false","ls-files","--modified","-z","--","Signs (2002 Film)"]
-
-
-It then hung for just under two hours before I hit ctrl+C. The files are on a remote SMB server mounted via OS X (hence direct mode) and git annex is being run on an OS X machine. git version 2.3.0, git-annex version 5.20150205. Both installed using homebrew. Any thoughts?
diff --git a/doc/forum/git_annex_alternative.mdwn b/doc/forum/git_annex_alternative.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_alternative.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I really like git-annex and am thankfull to its creator!
-
-I especially like the high level of abstraction it provides when handling backups or syncing.
-
-But git and my ext4 filesystem and HDD just hate the amount of files/folder/symlinks it throws at them and I am asking, what the alternatives are. I am especially looking for the numcopies and "--auto" functionallity. 
-
-
-Most alternatives I checked out (eps. distributed redundant filesystems) come up with other burdens or restrictions.
-
-Do you have any experience with different systems?
diff --git a/doc/forum/git_annex_assistant_-_Changing_repository_information.mdwn b/doc/forum/git_annex_assistant_-_Changing_repository_information.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_assistant_-_Changing_repository_information.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Here's one thing I don't fully understand yet. If I add a remote repository, like an archive repository on Box—or if I want to change a transfer repository to an archive repository—do I need to add it or change it separately on each of my computers? Or just one? 
diff --git a/doc/forum/git_annex_assistant__44___share_with_other_devices.mdwn b/doc/forum/git_annex_assistant__44___share_with_other_devices.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_assistant__44___share_with_other_devices.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I am trying to share files between my PC at home at that at work using the walkthrough here: http://git-annex.branchable.com/assistant/remote_sharing_walkthrough/. However, I don't have the option on my machine to "Share with other devices". Any ideas why this would be missing? I am using Ubuntu 13.04 if that helps. 
-
-Update: it now works after a software update, I guess I just had an older version of git-annex. Now, I have version 4.20130723. 
diff --git a/doc/forum/git_annex_assistant_repository_history__63__.mdwn b/doc/forum/git_annex_assistant_repository_history__63__.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_assistant_repository_history__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi,
-
-Even after googling for a while, I'm still having a hard time finding an answer for this:
-
-How can I access the revision history information for an annex-assistant repository?  For example, to recover a file on one computer that another computer deleted.  Or, to view how another computer modified a file.
-
-Thanks!
diff --git a/doc/forum/git_annex_copy_--fast_--to_blah_much_slower_than_--from_blah.mdwn b/doc/forum/git_annex_copy_--fast_--to_blah_much_slower_than_--from_blah.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_copy_--fast_--to_blah_much_slower_than_--from_blah.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I keep a repo synced between machines over ssh. Assuming all the files are in sync, so no actual file transfer needs to takes place, when I do
-
-```
-git annex copy --fast --quiet --to blah
-```
-
-is quite slow, about 10 seconds, using 100% CPU on one core, just to decide nothing needs to be done. On the other hand, doing
-
-```
-  git annex copy --fast --quiet --from blah
-```
-
-takes about 1 second.
-
-I'm confused, as it seems to me that, since I'm using --fast, both transactions should use only locally available data, and both should need about the same amount of computing. Am I missing something? Can this be fixed?
diff --git a/doc/forum/git_annex_drop_not_freeing_space_on_filesystem.mdwn b/doc/forum/git_annex_drop_not_freeing_space_on_filesystem.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_drop_not_freeing_space_on_filesystem.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I am using git-annex to store the output of a build process that produces large binary files (~1GB). These files are built on a number of workers which then commit the files to a central server (git annex add && copy to origin)
-
-I am trying to delete some of the older builds but have been unable to see any disk space be freed on the server (Disk usage is identical before and after the delete).
-
-    df -h 
-    mcchicken-srv://repo 284G 114G 157G  43% /srv/repo
-
-To delete the files I have performed the following:
-
-* git clone <repo-url>
-* git annex drop <1gb_file>
-* git rm <1gb_file>
-* git commit
-* git annex sync
-* [log into server]
-* git annex sync
-* git annex unused
-* git annex dropunused
-
-
-I have also tried other variations of the above technique that I have found online, but to no avail.
-
-In all cases the files appear to not be in the repo when a clone is performed, However the disk usage on the server never decreases.
-
-How would I delete the older builds in a manner that will free up disk space?
diff --git a/doc/forum/git_annex_get_--want-get_another__95__repo.mdwn b/doc/forum/git_annex_get_--want-get_another__95__repo.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_get_--want-get_another__95__repo.mdwn
+++ /dev/null
@@ -1,68 +0,0 @@
-Hi,
-
-Git-annex is really awesome. It has made my life really easier when having to
-move files around.
-
-Yet, I have been struggling with a use case that I cannot get working with git
-annex.
-
-In short, my request is: could it be possible to have --want-get and --want-drop
-accept a repository as argument to match the preferred content of that
-repository instead of here?
-
-Now, let me explain why I need this:a
-
-All my files are stored into a NAS accessible via a local network.
-
-I have an annex in my desktop computer. Using preferred content (via "git annex
-wanted") and "git annex get|drop --auto", I am able to almost automatically
-handle what files are put into my computer. What I do is to "git annex wanted"
-to indicate what I want to be here and launch a home made script that basically
-does "git annex get --auto" and "git annex drop --auto".
-
-Let's say I have a android phone to which I connect via ssh over adb. It
-contains a git repository but few files are in it. It has no wifi and so no
-access to the network, meaning no access to the NAS.
-
-The links between annexes then looks like:
-
-    NAS <-> Computer <-> Phone
-
-When I want to put a file into my phone, I generally launch "git annex get file"
-from my computer (then I get the file from the NAS) and "git annex copy --to
-phone file".
-
-I want to be able to automatise this a bit by playing with preferred content
-(like I do with my computer). This means that I want to launch "git annex
-wanted" to edit the preferred content of the phone annex and then "git annex get
---auto" and launch "git annex copy --auto --to phone". This way, when I am not
-in front of my computer, I can still from my phone run "git annex wanted here
-'preferred content'" and hope for my synchronisation scripts (run in my
-computer) to put the good files into my phone.
-
-Obviously those commands won't work since the git annex get --auto command will
-only get what my computer wants, not what my phone wants.
-
-The intuitive (IMHO) way to do would be to launch:
-
-    git annex get --want-get phone
-	git annex copy --auto --to phone
-	git annex drop --auto
-
-With "--want-get repository" meaning, "Matches files that the preferred content
-settings for the repository make it want to get.".
-
-For the time being, I succeed in doing this with
-
-	OLD_WANTED=$(git annex wanted here)
-	git annex wanted here $(git annex wanted phone)
-	git annex copy --auto --to phone
-	git annex wanted ${OLD_WANTED}
-	git annex drop --auto
-
-This is complicated and adds two extra commits in the git-annex branch (one for
-each setting of git annex wanted) each time I call the script.
-
-What do you think?
-
-Thanks for reading.
diff --git a/doc/forum/git_annex_get_creates_a_new_uuid.mdwn b/doc/forum/git_annex_get_creates_a_new_uuid.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_get_creates_a_new_uuid.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-From git-annex(1), init should precede any operation of git-annex as a safety feature.
-
-However git cloning a repo and running `git annex get` created a new uuid for that repo, which got
-propagated via sync.
-
-Is this intended behaviour?
diff --git a/doc/forum/git_annex_info__58___local_annex_keys__63__.mdwn b/doc/forum/git_annex_info__58___local_annex_keys__63__.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_info__58___local_annex_keys__63__.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-When I run `git annex info`, it stops to ask me for "local annex keys":
-
-    $ git annex info
-    repository mode: indirect
-    trusted repositories: 0
-    semitrusted repositories: 3
-            00000000-0000-0000-0000-000000000001 -- web
-            1xxxxxx7-6xx1-4xx1-8xx8-5xxxxxxxxxx1 -- here (usbdisk)
-            bxxxxxx6-bxxe-4xx2-bxxe-fxxxxxxxxxxf -- origin (local)
-    untrusted repositories: 0
-    transfers in progress: none
-    available local disk space: 36.25 gigabytes (+1 megabyte reserved)
-    local annex keys: 
-
-What are these "local annex keys"? 
-
-*Edit*: Ah! it wasn't asking me anything, just echoing my keystrokes. It was counting keys stored in the annex, and taking a while. Sorry for the noise!
-
-    [...]
-    local annex keys: 19586
-    local annex size: 33.96 gigabytes
-    annexed files in working tree: 19814
-    size of annexed files in working tree: 35.12 gigabytes
-    bloom filter size: 16 mebibytes (3.9% full)
-    backend usage: 
-            SHA256E: 39400
-
diff --git a/doc/forum/git_annex_ls___47___metadata_in_git_annex_whereis.mdwn b/doc/forum/git_annex_ls___47___metadata_in_git_annex_whereis.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_ls___47___metadata_in_git_annex_whereis.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I just started experimenting with git annex, and I found that I would like to have a way to figure out metadata (well, size. Maybe modification date) of a non-local file. I first checked if there is "git annex ls" (which could list known files in an ls-like way) and found "git annex whereis" as somewhat a replacement, but it does not give metadata information.
diff --git a/doc/forum/git_annex_on_osx_only_creating_symlinks__63____63__.mdwn b/doc/forum/git_annex_on_osx_only_creating_symlinks__63____63__.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_on_osx_only_creating_symlinks__63____63__.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-I'm testing out git-annex between a few computers one being a mac (osx 10.9) and a laptop (linux mint 16).  With a vps running git annex as a transfer annex.
-
-Anyway sync is *almost* working...
-
-When I add files on my mac's annex they upload, and go to my laptop as they should.
-
-When I add files on my laptop's annex they upload, and the mac "downloads" them but only creates broken symlinks to the files.
-
-
-I looked in the log and nothing out of the ordinary is happening... is this a bug with the osx version or what?
-
-
-**more info**  
-
-* the symlink on the osx annex is symlinking to a file in .git/annex/objects  
-* the osx annex changes the aliases to real files every time I restart the git annex daemon  
-
-Thanks!
diff --git a/doc/forum/git_annex_sync__58___only_git-annex.mdwn b/doc/forum/git_annex_sync__58___only_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_sync__58___only_git-annex.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Hi,
-
-i have an already existing git repository with a branch (*master*) and i added git annex to it (*git annex init*). Now i want to synchronise the file tracking information with annex through *git annex sync*, but keep the master branch unsynchronised (i want push/pull it manually as there are not only annexed files but also code). What is the best approach for my setup?
diff --git a/doc/forum/git_annex_sync_dies___40__sometimes__41__.mdwn b/doc/forum/git_annex_sync_dies___40__sometimes__41__.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_sync_dies___40__sometimes__41__.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-I've set up git annex on my laptop and on a remote server using the gitolite v3 git-annex branch.
-When I 'git annex sync' from my laptop (mac OSX) to the server, and 'git annex copy . --to server' all works fine.
-
-Later, I tried to clone the repository on another machine (linux 2.6.32). again all is well. I 'git annex init' in the new clone and then try to 'git annex sync' -- now I run into problems.
-
-Specifically, the first request for the configlist (when I do 'git annex --debug sync' all is fine until the configlist request) somehow breaks and my ssh session shows:
-
-muxserver_listen bind(): Input/output error
-
-This seems to confuse the client, who now believes that git annex is not installed on the server (it is).
-
-If I issue the same command as git annex via ssh, all seems to work ok with the caveats below:
-
-I have a feeling it's related to the -o 'ControlPersist=yes' argument that git-annex appears to be giving ssh.  If I include this option when I run via ssh, ssh dies:
-
->ssh git@server -o "ControlMaster=auto" -o "ControlPersist=yes" "git-annex-shell 'configlist' '/~/PRJ'"
-command-line: line 0: Bad configuration option: ControlPersist
-
-
-(note that it appears to be ok to leave "ControlMaster=auto" in).
-
-any thoughts?
diff --git a/doc/forum/git_annex_test_on_windows.mdwn b/doc/forum/git_annex_test_on_windows.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_test_on_windows.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-is it worth sharing back git annex test failures occourring on some windows setup ?
-i'm having 3 failures, what kind of report can i produce shall it be of any use ?
-is it enough a test log coming from git annex test > test.log 2>&1 ?
-thanks again
-
diff --git a/doc/forum/git_annex_windows_and_rsync.mdwn b/doc/forum/git_annex_windows_and_rsync.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_windows_and_rsync.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Issue with getting files from a Linux ssh/rsync repo.
-
-I have a centralized repo on a small linux VM that I synchronize my workstations with, most are linux machines but one is a windows one.  I installed msysgit and git-annex for windows, and then run the following:
-
-
-    git clone ssh://user@IP.ADDRESS/home/user/annex annex  
-    cd annex  
-    git annex init 'windows'  
-    git annex copy --from origin  
-
-
-So basically I am just trying to get a copy of the central repo onto this windows machine for starters and get:
-
-
-    rsync: connection unexpectedly closed (0 bytes received so far) [sender]
-    rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1] 
-    rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]  
-    rsync error: error in rsync protoco  rsync failed -- run git annex again to resume file transfer  
-    l dafailed
-    ta stream (code 12) atcopy  
-
-
-And I get this message for every file.
-
-
-I do have cygwin with rsync and ssh installed on this machine previously so I tried on a separate machine thinking there may be compatibility issues with no avail either.  I am not sure if this is an existing issue/work in progress with Windows/git-annex or if it is something I am just experiencing.  
diff --git a/doc/forum/git_annex_with_local_apache_webdav_server.mdwn b/doc/forum/git_annex_with_local_apache_webdav_server.mdwn
deleted file mode 100644
--- a/doc/forum/git_annex_with_local_apache_webdav_server.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Hi, 
-
-trying to make git annex work locally with an apache webdav server.
-
-I have the webdav server working without issue on computers. When we try to init the repository there we get the following error:
-
-WEBDAV_USERNAME=user WEBDAV_PASSWORD=xxxxxx git annex initremote webdavtest type=webdav url=http://webdavserver/webdavsgare/annextest4 encryption=none 
-initremote webdavtest (testing WebDAV server...)
-
-git-annex: WebDAV failed to delete file: "Locked": user error
-failed
-git-annex: initremote: 1 failed
-
-
-Does anyone have any thoughts? I can post config of webdav if it helps, though the error I receive in the error_log of apache is as follows:
-
-This resource is locked and an "If:" header was not supplied to allow access to the resource.  [423, #0]
-
-but I can manage the files through command line, web interface and mounted drive with no issue.
-
-thank you in advance.
-
-Damien
diff --git a/doc/forum/git_pull_remote_git-annex.mdwn b/doc/forum/git_pull_remote_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/git_pull_remote_git-annex.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I thought I'd followed the walk through when initially setting up my repos.
-
-However I find that I have to do the following to sync my annex's.
-
-    git pull remote master
-    git checkout git-annex
-    git pull remote git-annex
-    git checkout master
-    git annex get .
-
-Has something gone wrong? I see no mention of syncing git-annex repos in the walk-through...
diff --git a/doc/forum/git_tag_missing_for_3.20111011.mdwn b/doc/forum/git_tag_missing_for_3.20111011.mdwn
deleted file mode 100644
--- a/doc/forum/git_tag_missing_for_3.20111011.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Well, the subject pretty much says it all :)
diff --git a/doc/forum/git_unannex_speed.mdwn b/doc/forum/git_unannex_speed.mdwn
deleted file mode 100644
--- a/doc/forum/git_unannex_speed.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-It was fast to git annex a bunch of files. But git unannex seems a lot slower. Is there a faster way to get files out of git annex? Or to replace the symlinks with real files and then I could just remove the .git directory? I shouldn't have put so many in as a test but they are there now.
diff --git a/doc/forum/glacier_-_range_retrievals_and_daily_free_retrieval_allowance.mdwn b/doc/forum/glacier_-_range_retrievals_and_daily_free_retrieval_allowance.mdwn
deleted file mode 100644
--- a/doc/forum/glacier_-_range_retrievals_and_daily_free_retrieval_allowance.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-I propose to add some functionality to git-annex, to automatically "throttle" the data retrieval from amazon glacier to stay within the daily free retrieval allowance. If someone would need to get his/her files faster, there should be an option to disable this throttling (or even better, specify the retrieval rate).
-
-As far as I understand glacier, this could be implemented using range retrievals. In short range retrievals enable you, to only retrieve a part of an archive in glacier. This can be used to only retrieve / request so much data, that you stay within the free retrieval allowance. ( please see [Q: Why would I retrieve only a range of an archive?](http://aws.amazon.com/glacier/faqs/#Why_would_I_retrieve_only_a_range_of_an_archive) ).
-
-
-This would be somewhat similar to the [smart retrieval feature in cloudberry](http://blog.cloudberrylab.com/2012/12/introducing-smart-restore-for-amazon.html) .
diff --git a/doc/forum/handling_MP3_metadata_changes.mdwn b/doc/forum/handling_MP3_metadata_changes.mdwn
deleted file mode 100644
--- a/doc/forum/handling_MP3_metadata_changes.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Hello,
-
-I'm still looking for a way to version control the metadata (title, artist, album name, ...) of my MP3s, I wonder if git annex could help for this problem ?
-The method I use now (without git annex) is to export the MP3 metadata to an textual format with one line per tag. 
-It's this textual file I handles with git. 
-The problem is to handle the mapping between the orignal file and the export file with file renaming or moving.
-I consider to use the checksum of the audio content (without metadata, this checksum never changes) to handle this problem.
-Maybe git annex has a different approach (better) to solve this problem ?
-How git annex would be use to solve the orignal problem ?
-
-Regards,
-Emmanuel Berry
diff --git a/doc/forum/hashing_objects_directories.mdwn b/doc/forum/hashing_objects_directories.mdwn
deleted file mode 100644
--- a/doc/forum/hashing_objects_directories.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-I'm wondering how easy the addition of hashing to the directories of the objects would be.
-
-Currently a tree directory structure becomes a flat two level tree under the .git/annex/objects directory ([[internals]]).  This, through the 555 mode on the directory prevents the accidental destruction of content, which is _good_.  However file and directory numbers soon add up in there and as such any file-systems with sub directory limitations will quickly realize the limit (certainly quicker than maybe expected).
-
-Suggestion is therefore to change from 
-
- `.git/annex/objects/SHA1:123456789abcdef0123456789abcdef012345678/SHA1:123456789abcdef0123456789abcdef012345678`
-
-to 
-
- `.git/annex/objects/SHA1:1/2/3456789abcdef0123456789abcdef012345678/SHA1:123456789abcdef0123456789abcdef012345678`
-
-or anything in between to a paranoid
-
- `.git/annex/objects/SHA1:123/456/789/abc/def/012/345/678/9ab/cde/f01/234/5678/SHA1:123456789abcdef0123456789abcdef012345678`
-
-Also the use of a colon specifically breaks FAT32 ([[bugs/fat_support]]), must it be a colon or could an extra directory be used? i.e. `.git/annex/objects/SHA1/*/...`
-
-`git annex init` could also create all but the last level directory on initialization. I'm thinking `SHA1/1/1, SHA1/1/2, ..., SHA256/f/f, ..., URL/f/f, ..., WORM/f/f`
-
-> This is done now with a 2-level hash. It also hashes .git-annex/ log
-> files which were the worse problem really. Scales to hundreds of millions
-> of files with each dir having 1024 or fewer contents. Example:
->
-> `me -> .git/annex/objects/71/9t/WORM-s3-m1300247299--me/WORM-s3-m1300247299--me`
->
-> --[[Joey]]
diff --git a/doc/forum/help_running_git-annex_on_top_of_existing_repo.mdwn b/doc/forum/help_running_git-annex_on_top_of_existing_repo.mdwn
deleted file mode 100644
--- a/doc/forum/help_running_git-annex_on_top_of_existing_repo.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-## Question
-Can git-annex run passively with an existing repo?
-
-## Scenario
-We have an existing web application with large binary assets spread throughout modules in the repo. The project is in constant development with weekly deploys to production and there are many developers working on the project.
-
-## Goal
-We need to maintain the directory structure for these assets without actually committing large binaries to the main remote (hosted on GitHub). I need a solution that has a low barrier of entry when on-boarding new developers. I was thinking maybe a script the is executed on every commit that would filter binaries files based on extensions and commit them to the git-annex remote instead. We are flexible on the type of remote storage type (SSH, S3, etc)
-
-## Notes
-I have gone through the last couple months of forum posts and done a bit of Googling but have come up empty. If anyone can point me in the right direction that would be great. 
-Thanks!
diff --git a/doc/forum/how_do_automated_upgrades_work__63__.mdwn b/doc/forum/how_do_automated_upgrades_work__63__.mdwn
deleted file mode 100644
--- a/doc/forum/how_do_automated_upgrades_work__63__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-When i start the assistant, it's nicely telling me:
-
-<pre>
-[2015-05-27 20:15:20 UTC] Upgrader: An upgrade of git-annex is available.  (version 5.20150522)
-</pre>
-
-That's really cool, but it's not actually upgrading. I looked around the website to understand how that worked and i found [[git-annex-upgrade]] and [[upgrades]] but those pages were not really useful, as they talk more about repository upgrades, and not the automated upgrade system. I was expecting [[upgrades]] to talk a bit about automated upgrades, or maybe the [[install]] page... 
-
-i am running `5.20150508-g883d57f`, with a standalone image installed by root in `/opt`. Should that directory be writable by the user running git-annex to solve this?
-
-Thanks! --[[anarcat]]
diff --git a/doc/forum/how_do_i_manually_sync_my_external_drive__63__.mdwn b/doc/forum/how_do_i_manually_sync_my_external_drive__63__.mdwn
deleted file mode 100644
--- a/doc/forum/how_do_i_manually_sync_my_external_drive__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I am working on rehauling my backup scripts here, and I was originally doing an rsync of everything to an external drive, but now I think I can be smarted and skip my annexes in that rsync, and use git-annex superpowers to do the sync instead.
-
-I have added this to my backup script:
-
-    ( cd /srv/video && git annex copy --to backup . )
-
-And it works, so yaaay. :) However, I feel it could be faster. This seems to check each file one at a time, but doesn't git-annex keep a state of the remote internally, which would allow it to copy over only the missing files, without checking if each file is present individually?
-
-I mean, it's still pretty fast considering the dataset, but I wonder if there isn't some fast/easier way. Keep in mind I am hesitant of using the assistant for this because I am [[confused_about_external_drives]], the [[bugs/webapp takes 100% of the cpu]] and the [[bugs/assistant eats all CPU]]. I would prefer to script this anyways. --[[anarcat]]
diff --git a/doc/forum/how_to_commit_removed_files_as_repo-droped_entries.mdwn b/doc/forum/how_to_commit_removed_files_as_repo-droped_entries.mdwn
deleted file mode 100644
--- a/doc/forum/how_to_commit_removed_files_as_repo-droped_entries.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I have following usecase:
-
-I want to use a central repos for xbmc/kodi where I can play and delete files from kodi somethimes also with a random file manager. But I normaly if a file gets deleted and synced with git annex sync it deletes the file "head" in every repository.
-
-I would like if its only a git annex drop of the content, if thats was the last copy ok then its ok for me that its gone. But if its not the last copy it shhould just delete it from this repo but not delete the heads of the other repositories.
-
-I know that the actual file is still in the other repositories but the entry is gone, I would love if it would be more like a git annex drop instead of a git rm.
-
-Can I do that with setting this repos readonly or is my usecase not supported/doable with git annex?
diff --git a/doc/forum/how_to_decrypt_file_from_encrypted_special_remote__63__.mdwn b/doc/forum/how_to_decrypt_file_from_encrypted_special_remote__63__.mdwn
deleted file mode 100644
--- a/doc/forum/how_to_decrypt_file_from_encrypted_special_remote__63__.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I have an encrypted S3 remote with which I recently ran: 
-
-$> git annex move . --from cloud
-
-which moved all my files to the local repo. When I looked at my S3 bucket, I saw some files left. I then ran:
-
-$> git annex unused --from cloud
-
-to get all the unused data. I dropped each unused data from cloud so that now I think git annex believes it has nothing on the cloud remote.
-
-However there is still one file left on the bucket. Is this normal? (if not I'll create a bug report)
-More importantly, how can I decrypt this file so I can run git log -S'KEY' to figure out what it is (I want to make sure I haven't lost any data).
-
-To be clear, when I currently run 'git annex move . --from cloud' it moves nothing and when I run 'git annex unused --from cloud' it reports no unused data.
diff --git a/doc/forum/how_to_edit_the_git-annex_branch__63__.mdwn b/doc/forum/how_to_edit_the_git-annex_branch__63__.mdwn
deleted file mode 100644
--- a/doc/forum/how_to_edit_the_git-annex_branch__63__.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-as a followup to [[forum/remote-specific_meta-data/]], now i'm thinking of injecting data in the `git-annex` branch. i'm still a little hesitant because [[forum/optimising_lookupkey/]] mentions that i need to "delete or update `.git/annex/index`" when doing so. yet I also saw in the source code there is a `.git/annex/index.lock` file that is being used to avoid concurrent access to that file - is that something that should be watched out for? how do I manage that lockfile? is it mandatory to stage files into the index at first?
-
-maybe i'm just not familiar enough with how git operates internally myself. i've reviewed this section of the progit book again: http://git-scm.com/book/en/v2/Git-Internals-Git-Objects - and i feel i have again some handle on how to do those things, but it seems like a major hurdle to go through just to change a single setting in one git-annex metadata file... wouldn't `enableremote` be sufficient here? I figured to append custom fields to a remote, i could do:
-
-    git annex enableremote myremoteuuid "$(git cat-file -p git-annex:remote.log | grep myremoteuuid) extratag=true"
-
-Would that work at all? Should i operate directly on the git-annex branch myself instead?
-
-Thanks! --[[anarcat]]
diff --git a/doc/forum/how_to_prevent_accidentally_running___96__git_add__96____63__.mdwn b/doc/forum/how_to_prevent_accidentally_running___96__git_add__96____63__.mdwn
deleted file mode 100644
--- a/doc/forum/how_to_prevent_accidentally_running___96__git_add__96____63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I fear that while using git annex I will at some point accidentally `git add` some small files and not notice it until the only way to fix the problem is to rewrite history. What would be the best way to prevent myself from ever `git add`-ing a file into my annex repository instead of `git annex add`-ing it?
-
-And secondly, how can I best search in my git annex repository whether I already did this mistake in the past or not? Currently I'm using this which returns everything that's not a symlink or a git submodule:
-
-    git ls-files -s | awk ' $1 != 120000 && $1 != 160000 { print $4 }'
diff --git a/doc/forum/howto_to_link_to_existing_direct_mode_git-annexes.mdwn b/doc/forum/howto_to_link_to_existing_direct_mode_git-annexes.mdwn
deleted file mode 100644
--- a/doc/forum/howto_to_link_to_existing_direct_mode_git-annexes.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I have created two git-annexes (one on my laptop and one on my work pc) The are using nearly the same files with some files existing only on the pc but not on the laptop as they are too large for the laptop. How do I get the two into sync. I found the manual in the tips section but that will create normal git-annexes with all files linked only. However, I would like to have my exiting file structure unchanged (the way the assistant does it by default)
-
-any ideas?
-
-Gregor
diff --git a/doc/forum/howto_update_feed.mdwn b/doc/forum/howto_update_feed.mdwn
deleted file mode 100644
--- a/doc/forum/howto_update_feed.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I am using the importfeed [1] functionality.
-
-How am I supposed to update the feed/feeds?
-
-I understand that running
-
-    cd annex; git annex importfeed http://url/to/podcast
-
-a second time will 'do the right thing'.  But that is cumbersome as I have to know the url again.  Is there sth like git annex updatefeeds?
-
-
-
-
-[1] http://joeyh.name/blog/entry/git-annex_as_a_podcatcher/
diff --git a/doc/forum/ignore_changes_made_by_a_remote.mdwn b/doc/forum/ignore_changes_made_by_a_remote.mdwn
deleted file mode 100644
--- a/doc/forum/ignore_changes_made_by_a_remote.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-I have two repo one in direct (on windows) and one in indirect mode. From time to time the files in the direct repo are replaced by empty files however running git annex fsck always solves it.
-The problem is that today I did run git annex sync before running git annex fsck and git annex has then created two -variants for each of my files one empty and one with the content.
-I guess the easier for me is to just scrap that repo and make a new one however how do I prevent the changes to propagate now? I guess that if I now run git annex sync on my other repo all those small files are going to have linked created for them there as well.
-
-I hope this is clear,
-Thanks in advance.
diff --git a/doc/forum/importfeed__58___comments_in_file_with_feed_urls.mdwn b/doc/forum/importfeed__58___comments_in_file_with_feed_urls.mdwn
deleted file mode 100644
--- a/doc/forum/importfeed__58___comments_in_file_with_feed_urls.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi,
-
-how can I use comments in the file containing the feed urls.
-
-The hash symbol # causes a bad feed exception.
diff --git a/doc/forum/importfeed_does_not_work_with_youtube_anymore.mdwn b/doc/forum/importfeed_does_not_work_with_youtube_anymore.mdwn
deleted file mode 100644
--- a/doc/forum/importfeed_does_not_work_with_youtube_anymore.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Did youtube change their api? My youtube feeds doesn't work anymore. No problems with other sites.
diff --git a/doc/forum/incompatible_versions__63__.mdwn b/doc/forum/incompatible_versions__63__.mdwn
deleted file mode 100644
--- a/doc/forum/incompatible_versions__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Are versions 0.14 and 0.20110522 incompatible? I can't seem to copy files from a system running 0.14 to one running 20110522.
diff --git a/doc/forum/known_and_local_annex_keys.mdwn b/doc/forum/known_and_local_annex_keys.mdwn
deleted file mode 100644
--- a/doc/forum/known_and_local_annex_keys.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I have a direct repository with the assistant running (v4.20131002). The repo is in the backup group and should be grabbing every known annex file. Yet `git annex status` says:
-
-    local annex keys: 1386
-    local annex size: 94.53 gigabytes
-    known annex keys: 1387
-    known annex size: 94.53 gigabytes
-
-As you can seem there is one more known annex key than there are local ones. Neither `git annex get` nor `git annex sync` changes the numbers. According to `tree` the repo dir contains exactly 1387 files, which means that the missing file must exist on disk. 
-
-1) How do I find out which is the file in question? How do I get it synchronized? 
-
-Yesterday there were 1376 known annex keys. Today there are 1387. For some reason the number of keys went up by 11, and I would like to know how and why. The log suggests that a couple of files have been added from inside the repo directory, but I am positive that these files already existed in the annex directory yesterday, and that I ran `git annex sync` manually without the number of local and/or known keys going up.
-
-2) Why weren't the files synced before? Is there a way to find out whether they were or were not part of the annex yesterday - maybe list all files sorted by the date they were added? 
diff --git a/doc/forum/linux_standalone_tarballs.mdwn b/doc/forum/linux_standalone_tarballs.mdwn
deleted file mode 100644
--- a/doc/forum/linux_standalone_tarballs.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Just saw that there is now a linux standalone tarball, I've a SL5 (RHEL5) based machine which I can churn out git-annex binaries if there is interest.
diff --git a/doc/forum/local_pairing_with_2_mac.mdwn b/doc/forum/local_pairing_with_2_mac.mdwn
deleted file mode 100644
--- a/doc/forum/local_pairing_with_2_mac.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Hey !
-I am trying to find ways to use git annex as a tool to share big binary files for our development projects (such as PSD files).
-Our team has artists that will not use command line tools so I have been testing git-annex assistant with a lot of hope.
-However all the tests I am doing are just failing. °.° '
-
-in this thread I would like to focus on what would seem to me as an easy first approach : local pairing.
-
-So my team and I are on mac. I am just trying to sync 2 computers on the same network. But the process is stuck on the "local pairing in process" step, just after I enter the secret phrase.
-
-I have enabled sshd (preferences -> remote login) on both computers, checked the firewall to authorize git-annex, so I am probably missing something here. 
-the logs on my computer does not say anything usefull ([2013-12-04 22:04:34 CET] main: Pairing in progress) but on the other computer I have this :
-
-git-annex: ssh-keygen failed
-[2013-12-04 22:04:33 CET] PairListener: utku@MacBook-Air-de-utku.local:~/Documents/git-test is sending a pair request.
-dyld: lazy symbol binding failed: Symbol not found: ___strlcpy_chk
- Referenced from: /Applications/git-annex.app/Contents/MacOS/bundle/ssh-keygen
- Expected in: /usr/lib/libSystem.B.dylib
-
-dyld: Symbol not found: ___strlcpy_chk
- Referenced from: /Applications/git-annex.app/Contents/MacOS/bundle/ssh-keygen
- Expected in: /usr/lib/libSystem.B.dylib
-
-git-annex: ssh-keygen failed
-
-Don't know if that helps. I don't know which info I need to provide.
-
-cheers
diff --git a/doc/forum/local_subtree_and_broken_symlinks.mdwn b/doc/forum/local_subtree_and_broken_symlinks.mdwn
deleted file mode 100644
--- a/doc/forum/local_subtree_and_broken_symlinks.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Here's a simple example on a repository with three branches, where we'll be adding images-annex as a subtree into master.
-
-    $ git branch
-        git-annex
-        images-annex
-      * master
-    $ git subtree add --squash --prefix=images/ images-annex
-      Added dir 'images'
-    $ ls
-      FILE_A        FILE_B        images/
-
-...checkout images-annex, make changes, commit...
-
-    $ git checkout master
-    $ git subtree pull --squash --prefix=images/ . images-annex
-      From .
-      * branch images-annex -> FETCH_HEAD
-      Merge made by the 'recursive' strategy.
-      ...(files created/modified/etc)
-
-I have tried a few different methods for merging the subtree in and so far have not been able to keep git-annex links up to date. Running `git-annex fix .` does what it's supposed to but then git sees everything as modified. Is this entirely the expected behavior because of the --prefix? I have not used subtrees much before but the model appears to be very helpful for what I'm trying to do.
diff --git a/doc/forum/location_tracking_cleanup.mdwn b/doc/forum/location_tracking_cleanup.mdwn
deleted file mode 100644
--- a/doc/forum/location_tracking_cleanup.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-I recently started experimenting with git annex, adding files that I've had
-floating across several computers to repositories. During the testing I had
-a few occasions where I wrecked a repository somehow, and decided to wipe it
-and start anew (at this point there was no important files in them so I thought
-this is the easiest way). Well, as it turns out this interacts badly with location
-tracking, since now `git annex whereis` shows files residing in all those destroyed
-repositories, all having same names as some existing repositories. This makes it hard
-to follow whether a repo actually has a file, or was the file only seen in some dead
-repo with the same name.
-
-I planned on cleaning this up by looking up the UUIDs of the now stable, existing
-repos and untrusting all the dead copies (they should effectively disappear from
-git annex´s output then, right?), but I didn't find an easy way to look up the UUID
-of the current repository (maybe this could be included in `git annex status`?)
-I also noticed that untrust cannot remove the trust based on the UUID -- if I try
-it I simply get "there is no git remote named "11908472-...", so I guess untrust
-works with git remote names, which I find a bit confusing, since trust.log logs the
-trust levels based on the UUID. I could just write into trust.log manually, but I'm
-unsure how the changes would get propagated.
-
-What should I do? As a related wishlist item I would ask for some additional mechanisms
-for purging known-dead repositories from the location tracking database. And the ability
-to look up the UUID of the current repo, and to use the UUID to specify repositories when
-applicable (untrust and describe maybe).
diff --git a/doc/forum/lost_in_walkthrough.mdwn b/doc/forum/lost_in_walkthrough.mdwn
deleted file mode 100644
--- a/doc/forum/lost_in_walkthrough.mdwn
+++ /dev/null
@@ -1,78 +0,0 @@
-I'm trying to follow the steps of the "walkthrough" but I'm experiencing the following issue: when
-I sync one repository and do "git annex get ." I don't get the files from the other repository.
-Here is the transcript of the steps I followed - I've put them in a script (ga.sh) so I can replay
-them and show them on the shell while executing.
-Basically I have two repositories, "/tmp/a/annex" and "/tmp/b/annex", the second cloned from
-the first. All the other steps are the same as in the walkthrough.
------------------------------------
-> bash -x ga.sh 
-+ cd /tmp
-+ mkdir a
-+ mkdir b
-+ cd a
-+ mkdir annex
-+ cd annex
-+ git init
-Initialized empty Git repository in /tmp/a/annex/.git/
-+ git annex init a
-init a ok
-(Recording state in git...)
-+ cd /tmp/b
-+ git clone /tmp/a/annex
-Cloning into 'annex'...
-done.
-warning: remote HEAD refers to nonexistent ref, unable to checkout.
-
-+ cd annex
-+ git annex init b
-init b ok
-(Recording state in git...)
-+ git remote add a /tmp/a/annex
-+ cd /tmp/a/annex
-+ git remote add b /tmp/b/annex
-+ dd if=/dev/urandom of=first bs=1024 count=1
-1+0 records in
-1+0 records out
-1024 bytes (1.0 kB) copied, 9.9167e-05 s, 10.3 MB/s
-+ dd if=/dev/urandom of=second bs=1024 count=1
-1+0 records in
-1+0 records out
-1024 bytes (1.0 kB) copied, 0.000241635 s, 4.2 MB/s
-+ git annex add .
-add first (checksum...) ok
-add second (checksum...) ok
-(Recording state in git...)
-+ git commit -am added
-[master (root-commit) 5078564] added
- 2 files changed, 2 insertions(+)
- create mode 120000 first
- create mode 120000 second
-+ git mv first e
-+ mkdir x
-+ git mv second x
-+ git commit -m moved
-fix x/second ok
-(Recording state in git...)
-[master 422492d] moved
- 3 files changed, 1 insertion(+), 1 deletion(-)
- rename first => e (100%)
- delete mode 120000 second
- create mode 120000 x/second
-+ cd /tmp/b/annex
-+ git annex sync a
-(merging origin/git-annex into git-annex...)
-(Recording state in git...)
-commit  
-ok
-git-annex: no branch is checked out
-+ git annex get .
--------------------
-
-The last "git annex get ." does not retrieve the files in /tmp/a/annex ... why?
-I guess the issue starts when cloning /tmp/a/annex where no commit was done.
-
-Emanuele
-
-PS: I'm using git v1.7.9.5 (ubuntu 12.04) and the latest git-annex static binary
-downloaded a few minutes ago from the git-annex website.
-
diff --git a/doc/forum/lsof_resource_use_problems.mdwn b/doc/forum/lsof_resource_use_problems.mdwn
deleted file mode 100644
--- a/doc/forum/lsof_resource_use_problems.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-When the assistant runs lsof on my file system, the lsof process consumes a horrendous amount of memory (>11GB). This forces a large amount of swapping, and brings the system to its knees until the process exits. The same thing occurs when I run lsof manually, but this is currently making the assistant unusable for me. Is this normal when running lsof on a large number of files, or is something wrong with my particular setup?
-
-An example of resource usage from top, and some system details:
-
----
-      PID USERNAME    THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
-    33735 username       1  23    0 28208M 11507M pfault  0   0:07  58.50% lsof
----
-    [username@hostname /mnt/media]$ uname -a
-    FreeBSD hostname 9.2-RELEASE-p10 FreeBSD 9.2-RELEASE-p10 #0 r262572+4fb5adc: Wed Aug  6 17:07:16 PDT 2014     root@build3.ixsystems.com:/fusion/jkh/921/freenas/os-base/amd64/fusion/jkh/921/freenas/FreeBSD/src/sys/FREENAS.amd64  amd64
----
-    [username@hostname /mnt/media]$ lsof -h
-    lsof 4.88
----
-    [username@hostname /mnt/media]$ git annex info
-    repository mode: direct
-    trusted repositories: 0
-    semitrusted repositories: 1
-            d03b21fc-666d-457d-b953-0ca0ac7393d8 -- [hostname_media_indirect]
-    untrusted repositories: 2
-            00000000-0000-0000-0000-000000000001 -- web
-            31497a4d-290e-409a-9fd2-20c7340c245b -- hostname_mnt/media [here]
-    transfers in progress: none
-    available local disk space: 780.1 gigabytes (+10 gigabytes reserved)
-    local annex keys: 41576
-    local annex size: 943.95 gigabytes (+ 49 unknown size)
-    annexed files in working tree: 41887
-    size of annexed files in working tree: 945.14 gigabytes (+ 50 unknown size)
-    bloom filter size: 16 mebibytes (8.3% full)
-    backend usage:
-            SHA512E: 81518
-            WORM: 1846
-            URL: 99
----
-    [username@hostname /mnt/media]$ git annex version
-    git-annex version: 5.20140817
-    build flags: Assistant Webapp Webapp-secure Pairing S3 WebDAV Kqueue XMPP DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
diff --git a/doc/forum/luks_encrypted_disk_support.mdwn b/doc/forum/luks_encrypted_disk_support.mdwn
deleted file mode 100644
--- a/doc/forum/luks_encrypted_disk_support.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Is there a way to easily access, say, a FDE (Full Disk Encrypted) external drive using git-annex?
-
-My use case is that I do not wish to encrypt each file individually - and find it more reliable to use a real filesystem encryption on this external hard drive. --[[anarcat]]
diff --git a/doc/forum/making_good_use_of_my_shiny_new_rsync.net_account.mdwn b/doc/forum/making_good_use_of_my_shiny_new_rsync.net_account.mdwn
deleted file mode 100644
--- a/doc/forum/making_good_use_of_my_shiny_new_rsync.net_account.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-So I got a shiny new rsync.net account, but it's not (yet) big enough for my bloated, kitchen-sink annex.  How do I make the best use of it?   Well, on the whole small files are more valuable to me than large.  Large files are usually replaceable, like ripped DVDs.  Small files are more likely to be family photos and such.  So I shut down the assistant, and I've been doing a series of these:
-
-    git annex copy --to=rsyncnet --smallerthan 10M --not --in=rsyncnet # I called my remote "rsyncnet"
-    
-    git annex copy --to=rsyncnet --smallerthan 20M --not --in=rsyncnet
-    
-    git annex copy --to=rsyncnet --smallerthan 40M --not --in=rsyncnet
-
-until the repo fills up.  With a few of these thrown in to check on my progress and what's ahead.
-
-
-    git annex status . --in=rsyncnet  # how much have I already done?
-    git annex status . --smallerthan 40M --not --in=rsyncnet # how much will this next command copy?
-
-
-It'd be possible to write a script to do all this automagically but at least this time it's easier to do by hand.
-
-Just sharing in case anybody's in a similar situation.
-
-(You could let the assistant do this for you if you configured a preferred content expression designating small files for the rsyncnet remote, of course.)
diff --git a/doc/forum/man_pages_in_the_prebuilt_linux_tarball.mdwn b/doc/forum/man_pages_in_the_prebuilt_linux_tarball.mdwn
deleted file mode 100644
--- a/doc/forum/man_pages_in_the_prebuilt_linux_tarball.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Is there an easy way for a noob to get the man pages, after installing the prebuilt tarball?
diff --git a/doc/forum/managing_multiple_repositories.mdwn b/doc/forum/managing_multiple_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/managing_multiple_repositories.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-I tried about 2 weeks ago using the assistant to create on my netbook and my home laptop 3 repositores, for music, pictures and documents.  Since I was also going to be away from home, I set up jabber pairing and box.com for a transfer repository, and then watched everything crash as I didn't know yet about jabber only really working for 1 repository at a time.
-
-So my new idea is this: one repository at ~/annex, and changing documents, music and pictures to be symlinks to actual documents, music and pictures folders inside ~/annex, allowing me to have just 1 annex to manage.  Is this the best way to put everything together if I want to just jabber pairing (and just 1 jabber account)?
diff --git a/doc/forum/manual_update_of_.git__47__annex__47__objects.mdwn b/doc/forum/manual_update_of_.git__47__annex__47__objects.mdwn
deleted file mode 100644
--- a/doc/forum/manual_update_of_.git__47__annex__47__objects.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Let's suppose that I've manually modified files in .git/annex/objects,
-for example I ran an rsync or some other file synchronization software
-to copy files. As a result, some objects have disappeared, others have
-appeared. After that `git annex whereis .' displays stale information,
-it doesn't take the manual modifications to accound. `git annex fsck'
-seems to fix this, but it runs the rehashing of all new files, so it's
-slow. Is there a fast alternative, which notices all the object file
-changes, trusts them, and just updates .git/annex/index quickly?
diff --git a/doc/forum/many_remotes.mdwn b/doc/forum/many_remotes.mdwn
deleted file mode 100644
--- a/doc/forum/many_remotes.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Thanks Joey for the great work.
-
-I'm using git annex for my tv-shows and movies Folder.
-
-I have 3 USB HDD (ext.150Gb,ext.200Gb, ext.2Tb) and a USB Stick (ATV), which are traveling between 3 Devices
-
-2 Notebooks (Lappi,Kiste) and a Nas.
-
-First of all, I'm made a mistake and mixed the remote Locations from the tvshows folder with the movies folder and did a git annex sync, ( this happened about two weeks ago) 
-I think i can't undo this, only unannex will help.
-
-I've now watched the annex status output and noticed that there are many Remotes, some of them have a timestamp as name.
-
-see log file at http://pastebin.com/79bRVkK6
-
-Running git annex on ubuntu 12.04
-
-    christian@Lappi:~/Serien$ git annex version
-    git-annex version: 4.20130417
-    local repository version: 3
-    default repository version: 3
-    supported repository versions: 3 4
-    upgrade supported from repository versions: 0 1 2
-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS
diff --git a/doc/forum/mesh_configurations.mdwn b/doc/forum/mesh_configurations.mdwn
deleted file mode 100644
--- a/doc/forum/mesh_configurations.mdwn
+++ /dev/null
@@ -1,181 +0,0 @@
-I have a setup where a *source* repository `a` is connected to a *source* repository `b` (through SSH) which is then connected to  *backup* repository `c` (on amazon S3). I was expecting a file added on `a` to be moved to `c` *through* `b`, but that doesn't seem to be happening...
-
-I tried to reproduce with this basic setup:
-
-<pre>
-[1009]anarcat@angela:g-a$ git init a
-Dépôt Git vide initialisé dans /home/anarcat/test/g-a/a/.git/
-[1010]anarcat@angela:g-a$ git init b
-Dépôt Git vide initialisé dans /home/anarcat/test/g-a/b/.git/
-[1011]anarcat@angela:g-a$ git init c
-Dépôt Git vide initialisé dans /home/anarcat/test/g-a/c/.git/
-[1012]anarcat@angela:g-a$ cd a/
-[1013]anarcat@angela:a$ git annex init
-init  ok
-(Recording state in git...)
-[1014]anarcat@angela:a$ git annex group . source
-group . ok
-(Recording state in git...)
-[1015]anarcat@angela:a$ git annex wanted . groupwanted
-wanted . ok
-(Recording state in git...)
-[1036]anarcat@angela:a$ git remote add origin ../b
-[1016]anarcat@angela:a$ cd ../b
-[1025]anarcat@angela:b$ git annex init
-init  ok
-(Recording state in git...)
-[1026]anarcat@angela:b$ git annex group . source
-group . ok
-(Recording state in git...)
-[1027]anarcat@angela:b$ git annex wanted . groupwanted
-wanted . ok
-(Recording state in git...)
-[1038]anarcat@angela:b$ git remote add origin ../c
-[1019]anarcat@angela:b$ cd ../c
-[1021]anarcat@angela:c$ git annex init
-init  ok
-(Recording state in git...)
-[1022]anarcat@angela:c$ git annex group . backup
-group . ok
-(Recording state in git...)
-[1023]anarcat@angela:c$ git annex wanted . groupwanted
-wanted . ok
-(Recording state in git...)
-anarcat@angela:c$ cd ../a
-[1041]anarcat@angela:a$ git annex sync
-commit  ok
-pull origin
-warning: no common commits
-remote: Décompte des objets: 11, fait.
-remote: Compression des objets: 100% (9/9), fait.
-remote: Total 11 (delta 1), reused 0 (delta 0)
-Dépaquetage des objets: 100% (11/11), fait.
-Depuis ../b
- * [nouvelle branche] git-annex  -> origin/git-annex
-
-merge: refs/remotes/origin/master - not something we can merge
-
-merge: refs/remotes/origin/synced/master - not something we can merge
-failed
-(merging origin/git-annex into git-annex...)
-(Recording state in git...)
-(Recording state in git...)
-git-annex: sync: 1 failed
-[1042]anarcat@angela:a1$ cd ../b
-[1043]anarcat@angela:b$ git annex sync
-commit  ok
-pull origin
-warning: no common commits
-remote: Décompte des objets: 11, fait.
-remote: Compression des objets: 100% (9/9), fait.
-remote: Total 11 (delta 1), reused 0 (delta 0)
-Dépaquetage des objets: 100% (11/11), fait.
-Depuis ../c
- * [nouvelle branche] git-annex  -> origin/git-annex
-
-merge: refs/remotes/origin/master - not something we can merge
-
-merge: refs/remotes/origin/synced/master - not something we can merge
-failed
-(merging origin/git-annex into git-annex...)
-(Recording state in git...)
-(Recording state in git...)
-git-annex: sync: 1 failed
-[1063]anarcat@angela:b$ touch bar
-[1064]anarcat@angela:b$ ls
-bar
-[1065]anarcat@angela:b$ ls -al
-total 16K
-drwxr-xr-x 3 anarcat anarcat 4096 aoû 18 14:41 .
-drwxr-xr-x 5 anarcat anarcat 4096 aoû 18 14:33 ..
-lrwxrwxrwx 1 anarcat anarcat  178 aoû 18 14:41 bar -> .git/annex/objects/pX/ZJ/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
-drwxr-xr-x 9 anarcat anarcat 4096 aoû 18 14:41 .git
-[1066]anarcat@angela:b$ git annex sync
-commit  ok
-pull origin
-ok
-push origin
-Décompte des objets: 26, fait.
-Delta compression using up to 2 threads.
-Compression des objets: 100% (22/22), fait.
-Écriture des objets: 100% (26/26), 2.47 KiB | 0 bytes/s, fait.
-Total 26 (delta 5), reused 0 (delta 0)
-To ../c
- * [new branch]      git-annex -> synced/git-annex
- * [new branch]      master -> synced/master
-ok
-[1067]anarcat@angela:b$ cd ../a
-[1068]anarcat@angela:a$ git annex sync
-commit  ok
-pull origin
-remote: Décompte des objets: 8, fait.
-remote: Compression des objets: 100% (6/6), fait.
-remote: Total 8 (delta 1), reused 0 (delta 0)
-Dépaquetage des objets: 100% (8/8), fait.
-Depuis ../b
-   5d3090f..9e345e6  git-annex  -> origin/git-annex
- * [nouvelle branche] master     -> origin/master
- * [nouvelle branche] synced/master -> origin/synced/master
-
-Merge made by the 'recursive' strategy.
- bar | 1 +
- 1 file changed, 1 insertion(+)
- create mode 120000 bar
-
-Already up-to-date.
-ok
-(merging origin/git-annex into git-annex...)
-(Recording state in git...)
-(Recording state in git...)
-push origin
-Décompte des objets: 41, fait.
-Delta compression using up to 2 threads.
-Compression des objets: 100% (36/36), fait.
-Écriture des objets: 100% (41/41), 3.50 KiB | 0 bytes/s, fait.
-Total 41 (delta 20), reused 0 (delta 0)
-To ../b
-   6019ab8..368ca15  master -> synced/master
- * [new branch]      git-annex -> synced/git-annex
-ok
-[1069]anarcat@angela:a$ touch quu^C
-[1069]anarcat@angela:a130$ echo foo > quux
-[1070]anarcat@angela:a$ cd ../b
-[1071]anarcat@angela:b$ ls
-bar  foo
-[1072]anarcat@angela:b$ cd ..
-[1073]anarcat@angela:g-a$ cd a
-[1074]anarcat@angela:a$ git annex list
-here
-|origin
-||web
-|||
-XX_ bar
-XX_ foo
-X__ quux
-[1075]anarcat@angela:a$ git annex list --help
-git-annex: unrecognized option `--help'
-
-Usage: git-annex list [PATH ...] [option ...]
-    --allrepos  show all repositories, not only remotes
-
-To see additional options common to all commands, run: git annex help options
-
-
-[1076]anarcat@angela:a1$ git annex list --allrepos
-here-
-|origin
-||web
-|||anarcat@angela:~/test/g-a/c
-||||
-XX__ bar
-XX__ foo
-X___ quux
-</pre>
-
-why don't the files get copied over to the backup repo by the assistant?
-
-i somewhat understand that files don't get sent from `a` to `b`, but why doesn't the assistant copy the files from `b` to `c`?
-
-i have tried using `required` instead of `wanted` and it doesn't work much better.
-
-tested with `5.20150610+gitg608172f-1~ndall+1` (prod) and `5.20141125` (the above test). --[[anarcat]]
diff --git a/doc/forum/messed_up_annex_by_using_git_checkout.mdwn b/doc/forum/messed_up_annex_by_using_git_checkout.mdwn
deleted file mode 100644
--- a/doc/forum/messed_up_annex_by_using_git_checkout.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-Hello. Linux experienced user here, but with no development or git experience ever. This directly leads me to my biggest trouble with git-annex because I constantly suffer from misunderstanding each and everything. That being said, my problem is the following: I had the terrible idea to have my .thunderbird directory synchronized over several machines, leading the thunderbird profile to total corruption because after a few weeks I finally managed to have multiple machines accessing it. As I started trying to recover, things got worse and this is my last seek for help before starting over by creating the repositories from scratch.
-
-What I did:
-
-1. I did some research on how to recover an old state of the repo, which should not have been a problem because there is a "full backup" repo. I came across this [1] page and the pain started with me looking for my wanted commit to roll-back in "git log" and then did some tries in the way something like, "git checkout -b old-state4 012345678".
-
-2. Of course this recovered the whole repo and not only thunderbird, so I used a file synchronizer to put everything else back into place after the action.
-
-3. Unfortunately, the "branches" seem to have been messed up and the repos are no longer in sync.
-
-This is what the machine says that I have used to create the mess:
-
-    [2016-03-08 19:15:26.915116] Pusher: Syncing with host123
-    (recording state in git...)
-    To ssh://user@10.0.0.1/mnt/foo/bar
-       d35c699..fed0636  git-annex -> synced/git-annex
-       a44bfb2..818b7b5  annex/direct/old_state4 -> synced/old_state4
-
-This is what another machine says:
-
-    [2016-03-08 21:17:48.649949] Pusher: Syncing with host123
-    (recording state in git...)
-    To ssh://user@10.0.0.1/mnt/foo/bar
-    
-       423f50f..4c8fad8  annex/direct/master -> q/annex/direct/master
-       2a67458..fed0636  git-annex  -> host123/git-annex
-       6a1076b..4c8fad8  master     -> host123/master
-       7f55414..818b7b5  old_state4 -> host123/old_state4
-
-Long story, short...
-
-I apologize for being a total git noob while at the same time performing git magic leading into a total desaster.
-However, I hope someone can give me a hint what to do to have the "old_state4" solved?
-
-Also, I really would like to get used to the git internals but since git is quite powerful, I always get overwhelmed because the tutorials out there are either developer-focused (which I'm not in the correct target group) or they simply cover each and everything (which is of no use because I don't want to administrate a GitHub repo but a private git-annex for my files and documents). 
-
-Thank you so much!
-
-
-[1] http://stackoverflow.com/questions/4114095/revert-git-repo-to-a-previous-commit
diff --git a/doc/forum/metadata_limits.mdwn b/doc/forum/metadata_limits.mdwn
deleted file mode 100644
--- a/doc/forum/metadata_limits.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hello,
-
-I was wondering what `The metadata values can contain absolutely anything you like -- but you're recommended to keep it simple and reasonably short.` listed on the [[metadata]] page really means?
-
-
-Here is my use case (which is part of a larger solution)...
-
-I've been storing my photos in git annex for a while (years perhaps), I (or actually the wife) tried to find one and couldn't, so I'm thinking I need to add metadata (Tags and captions, etc) to each picture. I was looking for ways to do so. I was actually considering using gthumb or shotwell or similar to create the tags and somehow pull that out and associate it with the file (either with a plugin or program) and then sort out how to distribute the metadata with the pics. The git annex metadata seems like a reasonable solution for keeping metadata with the pictures. The question is in this case, how long can the text in say a caption tag before git-annex has problems? I could probably do something like caption-<seq> to handle really long captions, but then captions are short by definition, so perhaps I should say description instead. And for this particular use case, I am aware this doesn't solve the problem of actually creating the data, just trying to sort out if get annex metadata to the right solution to tie the metadata to a pic, err file.
-
-
diff --git a/doc/forum/migrate_existing_git_repository_to_git-annex.mdwn b/doc/forum/migrate_existing_git_repository_to_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/migrate_existing_git_repository_to_git-annex.mdwn
+++ /dev/null
@@ -1,66 +0,0 @@
-I have a large git repository with binary files scattered over different branches. I want to switch to git-annex mainly for performance reasons, but I don't want to loose my history.
-
-I tried to rewrite the (cloned) repository with git-filter-branch but failed miserably for several reasons:
-
-* --tree-filter performs its operations in a temporary directory (.git-rewrite/t/) so the symlinks point to the wrong destination (../../.git/annex/).
-* annex log files are stored in .git-annex/ instead of .git-rewrite/t/.git-annex/ so the filter operation misses them
-
-Any suggestions how to proceed?
-
-EDIT 3/2/2010
-I finally got it working for my purposes. Hardest part was preserving the branches while injecting the new `git annex setup` base commit.
-
-#### Clone repository
-    git clone original migrate
-    cd migrate
-    git checkout mybranch
-    git checkout master
-    git remote rm origin
-
-#### Inject `git annex setup` base commit and repair branches
-    git symbolic-ref HEAD refs/heads/newroot
-    git rm --cached *
-    git clean -f -d
-    git annex init master
-    echo \*.rpm annex.backend=SHA1 >> .gitattributes
-    git commit -m "store rpms in git annex" .gitattributes
-    git cherry-pick $(git rev-list --reverse master | head -1)
-    git rebase --onto newroot newroot master
-    git rebase --onto master mybranch~1 mybranch
-    git branch -d newroot
-
-#### Migrate repository
-    mkdir .temp
-    cp .git-annex/* .temp/
-    MYWORKDIR=$(pwd) git filter-branch \
-     --tag-name-filter cat \
-     --tree-filter '
-        mkdir -p .git-annex;
-        cp ${MYWORKDIR}/.temp/* .git-annex/;
-        for rpm in $(git ls-files | grep "\.rpm$"); do
-            echo;
-            git annex add $rpm;
-            annexdest=$(readlink $rpm);
-            if [ -e .git-annex/$(basename $annexdest).log ]; then
-                echo "FOUND $(basename $annexdest).log";
-            else
-                echo "COPY $(basename $annexdest).log";
-                cp ${MYWORKDIR}/.git-annex/$(basename $annexdest).log .git-annex/;
-                cp ${MYWORKDIR}/.git-annex/$(basename $annexdest).log ${MYWORKDIR}/.temp/;
-            fi;
-            ln -sf ${annexdest#../../} $rpm;
-        done;
-        git reset HEAD .git-rewrite;
-        :
-        ' -- $(git branch | cut -c 3-)
-    rm -rf .temp
-    git reset --hard
-
-
-TODO:
-
-* Find a way to repair branches automatically (detect branch points and run appropriate `git rebase` commands)
-
-I'll be happy to try any suggestions to improve this migration script.
-
-P.S. Is there a way to edit comments?
diff --git a/doc/forum/migration_to_git-annex_and_rsync.mdwn b/doc/forum/migration_to_git-annex_and_rsync.mdwn
deleted file mode 100644
--- a/doc/forum/migration_to_git-annex_and_rsync.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-When migrating large file repositories to git-annex that are backuped in a way that uses an rsync-style mechanism (e.g. [dirvish](http://www.dirvish.org/)) and thus keeps incremental backups small by using hardlinks, space can be saved by manually reflecting the migration on the backup. So, instead of making a last pre-git-annex backup, migrating, and duplicating all backupped data with the next backup, I used the <del>attached</del> migrate.py file below, and it saved me roughly a day of backuping.
-
-A note on terminology: "migrating" here means migrating from not using git-annex at all to using it, not to the ``git annex migrate`` command, for which a similar but different solution may be created.
-
-**WARNING**: This is a quickly hacked-together script. It worked for me, but is untested apart from that. It's just a dozen lines of code, so have a look at it and make sure you understand what it does, and what migrate.sh looks like. Take special care as this tampers with your backups, and if something goes wrong, well...
-
-First, have an up-to-date backup; then, git annex init / add etc as described in the [[walkthrough]]. In the directory in which you use git-annex, run:
-
-    $ python migrate.py > migrate.sh
-
-Then copy the resulting migrate.sh to the equivalent location inside your backups and run it there. It will move all files that are now symlinked on the master to their new positions according to the symlinks (inside .git/annex/objects), but not create the symlinks (you will do a backup later anyway).
-
-After that, do a backup as usual. As rsync sees the moved files at their new locations, it will accept them and not duplicate the data.
-
-**migrate.py**:
-
-    #!/usr/bin/env python
-    
-    import os
-    from pipes import quote
-    
-    print "#!/bin/sh"
-    print "set -e"
-    print ""
-    
-    for (dirpath, dirnames, filenames) in os.walk("."):
-    	for f in filenames:
-    		fn = os.path.join(dirpath, f)
-    		if os.path.islink(fn):
-    			link = os.path.normpath(os.path.join(dirpath, os.readlink(fn)))
-    			assert link.startswith(".git/annex/objects/")
-    			print "mkdir -p %s"%quote(os.path.dirname(link))
-    			print "mv %s %s"%(quote(fn), quote(link))
diff --git a/doc/forum/misctmp_filling_up.mdwn b/doc/forum/misctmp_filling_up.mdwn
deleted file mode 100644
--- a/doc/forum/misctmp_filling_up.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-My directory .git/annex/misctmp is quite filled up with files like P39923, P33083, and also with 7 characters P310000 up to P331998. The beginning of these filenames may come from the annexed files, which all start with 'P3'.
-
-There is a total of 12198 of them (4.0TB... yes this repo is quite big ;)).
-
-Each of those has the content of individual annexed files (about 300-400MB targzipped files). Sometimes they are hard liked to each other, up to 8 copies.
-
-Since I have copied+dropped the whole repo content to other repos, there should be nothing left locally. I have verified several of those files (the annexed files which are identical to the misctmp/* files), are they indeed are located elsewhere, and not "here".
-
-So I was wondering if it is safe to remove them, and why are they not listed by git annex unused?
-
-Thanks for your help!!
diff --git a/doc/forum/mistakenly_checked___42__files__42___into_an_annex.__bummer.mdwn b/doc/forum/mistakenly_checked___42__files__42___into_an_annex.__bummer.mdwn
deleted file mode 100644
--- a/doc/forum/mistakenly_checked___42__files__42___into_an_annex.__bummer.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-A couple times working in an annex manually, I accidentally did "git add" instead of "git annex add" and ended up with files checked into my repo instead of symlinks.  So now there is some file content in git, rather than in the annex.  Is there any way to root that out, or is it there forever?  (My limited knowledge of git says: it's there forever, unless maybe you go into the branches where it lives, do an interactive rebase to the time before it was added, remove that commit, replay history, and then garbage collect, but I have no idea if that would suddenly break git annex, and it sounds painful anyway.)
-
-If say I were a neat freak and wanted to just start over with a clean annex, I imagine the thing to do would be to just start the hell over -- and if I wanted to do that, the way to go would be to get into a full repository, do a "git annex uninit" and then throw away the .git directory, then do "git init" and "git annex init" and then "git annex add ." ?
diff --git a/doc/forum/monitoring_disk_usage_by_different_repos_on_same_drive.mdwn b/doc/forum/monitoring_disk_usage_by_different_repos_on_same_drive.mdwn
deleted file mode 100644
--- a/doc/forum/monitoring_disk_usage_by_different_repos_on_same_drive.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I've setup a server using gitolite3 to host repositories for our users. All these repos share the same disk (2.5 Tb ;-). They're mainly used as backup of all contents.
-
-I'd like to monitor disk usage (possibly with statistics related to git-annex specificities) for these repos.
-
-Would anyone suggest a solution (web based maybe), for easily monitoring the growth of the repos storage ?
-
-Thanks in advance.
diff --git a/doc/forum/multiple_repositories_single_backup.mdwn b/doc/forum/multiple_repositories_single_backup.mdwn
deleted file mode 100644
--- a/doc/forum/multiple_repositories_single_backup.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-hi
-
-is it possible to have multiple repositories that share single backup directory ?
-
-for example.
-i have mp3, docs on my laptop as separate repositories. i would like to use single backup directory that is on my usb drive.
diff --git a/doc/forum/multiple_routes_to_same_repository.mdwn b/doc/forum/multiple_routes_to_same_repository.mdwn
deleted file mode 100644
--- a/doc/forum/multiple_routes_to_same_repository.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-I am trying to configure the local repo to be connected with remote computer. It can either find this computer on local network using local host name, or go through public IP host where I have ssh tunnel. First confusing thing is, that when setting up remote server, it successfuly establishes connection, but then asks me if the folder should be git or rsync - I believe this step should be skipped if the git repo is already there. Also choosing repository group should be detected from the repo itself.
-But the real problem is that I cannot add the public IP repo at all. Is this a known limitation?
diff --git a/doc/forum/multiple_sym_links___40__for_tagging_photos__41____63__.mdwn b/doc/forum/multiple_sym_links___40__for_tagging_photos__41____63__.mdwn
deleted file mode 100644
--- a/doc/forum/multiple_sym_links___40__for_tagging_photos__41____63__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I saw a cool page talking about "tagging" photos by using symlinks: http://www.trueelena.org/computers/articles/photo_management_with_git-annex_and_bash.html
-
-so say I have a photo in git annex, called DSC_3285.JPG, which of course is really a symlink to ../.git/annex/objects/Zk/kj/WORM-s5296770-m1338516288--DSC_3285.JPG/WORM-s5296770-m1338516288--DSC_3285.JPG.
-
-I want to make an additional link to that photo in a directory called tags/.
-
-should I link to the symlink (DSC_3285.JPG), or to the annexed file? (../.git/annex/objects/Zk/kj/WORM-s5296770-m1338516288--DSC_3285.JPG/WORM-s5296770-m1338516288--DSC_3285.JPG)
-
-I might occasionally rename DSC_3285.JPG or edit the photo itself. will the git annex commit hooks update both links, or should I prepare a script to update links in tags/ after I change DSC_3285 or the annexed data? 
-
-thank you.
diff --git a/doc/forum/multiple_urls_for_the_same_UUID.mdwn b/doc/forum/multiple_urls_for_the_same_UUID.mdwn
deleted file mode 100644
--- a/doc/forum/multiple_urls_for_the_same_UUID.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-I've been doing a sort of experiment but I'm not sure if it's working or, really, how to even tell.
-
-I have two macbooks that are both configured as clients as well as a USB HDD, an rsync endpoint on a home NAS, and a glacier endpoint.
-
-For the purposes of this example, lets call the macbooks "chrissy" and "brodie". Chrissy's was initially configured with a remote for brodie with the url as
-
-    ssh://Brodie.88195848.members.btmm.icloud.com./Users/akraut/Desktop/annex
-
-This allows me to leverage the "Back To My Mac" free IPv6 roaming I get from Apple.  Now, occasionally, that dns resolution fails. Since I'm frequently on the same network, I can also use the mDNS address of brodie.local. which is much more reliable.
-
-So my brilliant/terrible idea was to put this in my git config:
-
-    [remote "brodie"]
-    	url = ssh://Brodie.88195848.members.btmm.icloud.com./Users/akraut/Desktop/annex
-    	fetch = +refs/heads/*:refs/remotes/brodie/*
-    	annex-uuid = BF4BCA6D-9252-4B5B-BE12-36DD755FAF4B
-    	annex-cost-command = /Users/akraut/Desktop/annex/tools/annex-cost6.sh Brodie.88195848.members.btmm.icloud.com.
-    [remote "brodie-local"]
-    	url = ssh://brodie.local./Users/akraut/Desktop/annex
-    	fetch = +refs/heads/*:refs/remotes/brodie/*
-    	annex-uuid = BF4BCA6D-9252-4B5B-BE12-36DD755FAF4B
-    	annex-cost-command = /Users/akraut/Desktop/annex/tools/annex-cost.sh brodie.local.
-
-Is there any reason why I shouldn't do this? Is annex smart enough to know that it can reach the same remote through both urls? Will the cost calculations be considered and the "local" url chosen if it's cost is less than the other?
-
-(I posted the annex-cost.sh stuff at [[forum/Calculating Annex Cost by Ping Times]].)
diff --git a/doc/forum/new_linux_arm_tarball_build.mdwn b/doc/forum/new_linux_arm_tarball_build.mdwn
deleted file mode 100644
--- a/doc/forum/new_linux_arm_tarball_build.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-I've added an arm build to the autobuilds in [[install/Linux_standalone]].
-
-I'm curious to see how this works out. I tried to make it as self-contained
-as possible. It should work even on systems that do not use glibc, as long
-as the kernel is new enough for the glibc included in it, and supports the
-arm EABI.
-
-If it seems sufficiently useful, I might try to add the webapp to the
-build, which would be somewhat complicated, but doable (since I'm building
-using qemu, it can run a build on amd64 first to get the TH splices).
-
---[[Joey]]
diff --git a/doc/forum/new_microfeatures.mdwn b/doc/forum/new_microfeatures.mdwn
deleted file mode 100644
--- a/doc/forum/new_microfeatures.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-I'm soliciting ideas for new small features that let git-annex do things that currently have to be done manually or whatever.
-
-Here are a few I've been considering:
-
----
-
-* --numcopies would be a useful command line switch.
-  > Update: Added. Also allows for things like `git annex drop --numcopies=2` when in a repo that normally needs 3 copies, if you need
-  > to urgently free up space.
-* A way to make `drop` and other commands temporarily trust a given remote, or possibly all remotes. 
-
-Combined, this would allow `git annex drop --numcopies=2 --trust=repoa --trust=repob` to remove files that have been replicated out to the other 2 repositories, which could be offline. (Slightly unsafe, but in this case the files are podcasts so not really.)
-
-> Update: done --[[Joey]] 
-
----
-
-[[wishlist:_git-annex_replicate]] suggests some way for git-annex to have the smarts to copy content around on its own to ensure numcopies is satisfied. I'd be satisfied with a `git annex copy --to foo --if-needed-by-numcopies`
-
-  > Contrary to the "basic" solution, I would love to have a git annex distribute which is smart enough to simply distribute all data according to certain rules. My ideal, personal use case during the next holidays where I will have two external disks, several SD cards with 32 GB each and a local disk with 20 GB (yes....) would be:
-
-    cd ~/photos.annex # this repository does not have any objects!
-    git annex inject --bare /path/to/SD/card  # this adds softlinks, but does **not** add anything to the index. it would calculate checksums (if enabled) and have to add a temporary location list, though
-    git annex distribute # this checks the config. it would see that my two external disks have a low cost whereas the two remotes have a higher cost.
-     # check numcopies. it's 3
-     # copy to external disk one (cost x)
-     # copy to external disk two (cost x)
-     # copy to remote one (cost x * 2)
-     # remove file from temporary tracking list
-    git annex fsck # everything ok. yay!
-
-Come to think of it, the inject --bare thing is probably not a microfeature. Should I add a new wishlist item for that? -- RichiH
-
-> I've thought about such things before; does not seem really micro and I'm unsure how well it would work, but it would be worth a [[todo]]. --[[Joey]]
-
->> Update: Done as --auto. --[[Joey]] 
-
----
-
-Along similar lines, it might be nice to have a mode where git-annex tries to fill up a disk up to the `annex.diskreserve` with files, preferring files that have relatively few copies. Then as storage prices continue to fall, new large drives could just be plopped in and git-annex used to fill it up in a way that improves the overall redundancy without needing to manually pick and choose.
-
-> Update: git annex get --auto basically does this; you can tune
-> --numcopies on the fly to make it get more files than needed by the
-> current numcopies setting. --[[Joey]] 
-
----
-
-If a remote could send on received files to another remote, I could use my own local bandwith efficiently while still having my git-annex repos replicate data. -- RichiH
-
----
-
-Really micro:
-
-    % grep annex-push .git/config
-        annex-push = !git pull && git annex add . && git annex copy . --to origin --fast --quiet && git commit -a -m "$HOST $(date +%F--%H-%M-%S-%Z)" && git push
-    %
-
--- RichiH
---[[Joey]]
diff --git a/doc/forum/nntp__47__usenet_special_remote.mdwn b/doc/forum/nntp__47__usenet_special_remote.mdwn
deleted file mode 100644
--- a/doc/forum/nntp__47__usenet_special_remote.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Over the last few weeks i've been working on a seperate python nntp project. But decided that it would be fun to make it usable with git-annex.
-
-The code is almost complete. One major feature left(make it usable without a mysql/sqlite database, and without fetching headers). And of course a lot of bugfixes.
-
-I'm wondering if there is any interest in this special remote hook.
-
-The thought is, buy unlimited usenet account, and you can have a git-annex repository without any upper size limit. You want 100GB, well that'll be 10$ a month, want 100000GB, well that'll be 10$ a month.
-
-Of course there are plenty of caveats(retention on server, it is doubtfull the data will stay up for more than 4 years.). Because the code is in python3 i had to use a lot of external tools (uudeview, par2, ydecode/yydecode) and parse their output. Which is a horrid horrid solution. Since the code is nearing "beta" stage i might see if i can improve on that(possibly with ctypes), if there is any interest.
-
-Currently working on freebsd, ubuntu, debian, mac os x(10.7, not tested in 10.8)
-
-The last feature to be done (and this is UUUUUGLY) is to make it get nzb files from a source like this: http://nzbindex.nl/search/?q=GPGHMACSHA (yes, that is my git-annex repo) instead of from a mysql database.
-
-So, this is a call to see if anyone is interested, and if anyone proficient in *NIX want to test it out.
-
-Sincerely
-Tobias
diff --git a/doc/forum/non-bare_repo_on_cloud_remote.mdwn b/doc/forum/non-bare_repo_on_cloud_remote.mdwn
deleted file mode 100644
--- a/doc/forum/non-bare_repo_on_cloud_remote.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Hi,
-
-I wondered if it's possible to have a non-bare repo on a cloud remote. I want to have some sort of Dropbox-like workflow were I simply put stuff into a directory on my drive and it gets synced via SSH to a central VPS so I can also always access it via HTTP, for example.
-
-Regards,
-Lukas
diff --git a/doc/forum/noob_question._VPS_web_assistant.mdwn b/doc/forum/noob_question._VPS_web_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/noob_question._VPS_web_assistant.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi
-
-So I've installed git-annex on my Debian VPS.
-
-How do I find out the URL to access the web UI / assistant?
-
-Thanks!
diff --git a/doc/forum/not_finding_git-annex-shell_on_remote.mdwn b/doc/forum/not_finding_git-annex-shell_on_remote.mdwn
deleted file mode 100644
--- a/doc/forum/not_finding_git-annex-shell_on_remote.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-I have set up an annex on a remote machine and I am connecting via ssh.  But, since it is a managed machine, I installed the git-annex binary in my own ~/bin.  Well, when I try 
-$git annex sync
-
-I get:
-  $git annex sync
-(merging origin/git-annex into git-annex...)
-(Recording state in git...)
-bash: git-annex-shell: command not found
-
-  Remote origin does not have git-annex installed; setting annex-ignore
-commit  ok
-pull origin 
-
-merge: refs/remotes/origin/master - not something we can merge
-
-merge: refs/remotes/origin/synced/master - not something we can merge
-failed
-git-annex: sync: 1 failed
-
-
-The git remote -v looks correct.  So, how do I tell git annex on my local machine where to use $HOME/bin in PATH on the remote machine when syncing  with remotes?
diff --git a/doc/forum/not_getting_file_contents.mdwn b/doc/forum/not_getting_file_contents.mdwn
deleted file mode 100644
--- a/doc/forum/not_getting_file_contents.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have 2 computers successfully exchanging files, but the contexts are incomplete.  Used text files, documents, mp3s as tests. Both computers report in the webapp that they are synched and file names are there.  But file sizes are wrong by 75% less and contents are unusable.  Is there something in the config?  Both machines on LinuxMint 13. 
diff --git a/doc/forum/notify-start_and_notify-finish_for_the_assistant.mdwn b/doc/forum/notify-start_and_notify-finish_for_the_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/notify-start_and_notify-finish_for_the_assistant.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Is there a way to use notify-start and notify-finish, not when using git annex
-on the command line but also when using the assistant ?
-
-I would like to get notifications when I move files to annexed folders for when
-the transfer to the server is finished and such things.
diff --git a/doc/forum/one_annex_versus_many_annexes__63__.mdwn b/doc/forum/one_annex_versus_many_annexes__63__.mdwn
deleted file mode 100644
--- a/doc/forum/one_annex_versus_many_annexes__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I'm curious how other people are using git-annex:
-
- * A single annex containing everything they want to keep track of (albeit with some files only available in some remotes).
- * Several annexes for different purposes.
-
-I'm mostly asking because I don't want to get too far into using git-annex without thinking clearly about which is the most suitable choice for me.  At present I have things split into two annexes, one for things I really wouldn't want to lose (and some of which are somewhat private), and another for comparatively throwaway items.  However, given the possibility of setting different annex.numcopies on different file globs or directories, it seems like it might be kind of silly to make my life more complicated by having more than one annex.
-
-Primarily, I'm curious if there are some implications of the decision that I haven't considered.  It seems like an obvious point that one would want different annexes is if they're used in distinctly different security-level environments (e.g. I'm happy to copy my FLAC (music) files over to my work computer which lives at the office, but I wouldn't want to copy personal financial documents - or even the filenames - there.)
-
--Mike
diff --git a/doc/forum/one_or_many_annexes__63__.mdwn b/doc/forum/one_or_many_annexes__63__.mdwn
deleted file mode 100644
--- a/doc/forum/one_or_many_annexes__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Just a question about other peoples' annex usage.  I've got one uber-annex (in ~/annex of course) where I keep ALL THE THINGS, movies, music, pictures, whatever.
-
-It's very big, of course.  And I worry about doing anything unusual with it (like trying out direct mode) because, hey, that's all my stuff.
-
-Like, just now, I tried flipping it into direct mode, and a handful of files stayed symlinks, which weirded me out.  (Maybe because I had the assistant running while I switched it, and that caused chaos?)  Then I flipped it back to indirect, and a bunch of files were left un-tracked, as real files rather than links!  I kind of freaked out, and did a big "git annex add" to add them all back. I haven't left a bug report because it's not something I want to try again experimentally to reproduce, I just want my repo back, you know?
-
-Anyways, this kind of thing might not happen if I kept multiple small repos.  I was wondering if anybody else worked that way, and what advantages/disadvantages you've found compared to having one super-repo.
diff --git a/doc/forum/optimising_lookupkey.mdwn b/doc/forum/optimising_lookupkey.mdwn
deleted file mode 100644
--- a/doc/forum/optimising_lookupkey.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-to work around [[forum/original_filename_on_s3/]], i need to get the key from a file, and i'm not within the git-annex process. i know there's `git annex lookupkey $FILE`, but that incurs significant overhead because the whole git annex runtime needs to fire up. in my tests, this takes around 25ms on average.
-
-could i optimise this by simply doing a `readlink` call on the git checkout? it sure looks like `readlink | basename` is all I really need, and that can probably be done below 10ms (4ms in my tests). how reliable are those links anyways, and is that what lookupkey does?
-
-similarly, i wonder if it's safe to bypass git-annex and talk straight with git to extract location tracking? i can jump from 90ms to below 10ms for such requests if I turn `git annex find <file>` into the convoluted:
-
-<pre>
-git annex lookupkey $file
-printf $key | md5sum
-git cat-file -p refs/heads/git-annex:$hash/${key}.log
-</pre>
-
-thanks. --[[anarcat]]
diff --git a/doc/forum/original_filename_on_s3.mdwn b/doc/forum/original_filename_on_s3.mdwn
deleted file mode 100644
--- a/doc/forum/original_filename_on_s3.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I understand that [[special_remotes/S3/]] is seen as a "backend" storage mechanism, but since S3 files are available directly on the web, it would be nice to have the real filenames up there.
-
-Is there a way to set that up? I know about [[tips/publishing_your_files_to_the_public/]], but it assumes you have a local git repo with all the data in the first place, something which may not be available...
-
-my use case is that we have ~1TB of files already stored in S3 under specific filenames, and those filenames are how the files are accessed on the main website. changing all those filenames would be a significant burden... i'm not even sure this can be done cheaply on S3 in the first place. --[[anarcat]]
diff --git a/doc/forum/overmounting_repository_at_home.mdwn b/doc/forum/overmounting_repository_at_home.mdwn
deleted file mode 100644
--- a/doc/forum/overmounting_repository_at_home.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Consider the following scenario:
-
-- A Server which holds the full repository
-- A Laptop with a small disk, cloned the repository
-
-Now when i am online i'd just like to mount the repository from the server on over to the client, shadowing the local repository. But when offline and the server is not
-mounted the local repository takes place.
-
-The Question is now what would be a viable concept to get this right. Especially will the assistant become confused when it runs on the server side and locally on the laptop
-while the mount is in effect. Would it be sensible not to mount the whole repository tree but only parts like `.git/annex` or `.git/annex/objects`?
-
-Not tried this yet, but I am wondering whats the most viable approach would be.
diff --git a/doc/forum/partial_synchronisation._android_phone.mdwn b/doc/forum/partial_synchronisation._android_phone.mdwn
deleted file mode 100644
--- a/doc/forum/partial_synchronisation._android_phone.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-hi
-
-i have a repository that is 30 gb large. i would like to sync some content onto my android phone. take mp3's for example. i would like to see whole content on android but my phone does not have that much flash space. i would like to manualy select what folders, files will be copied onto phone.
-
-this use case may not even refer strictly to android devices but even pc's. for exaple i have small ssd drive on laptop. whole contentis kept on some hudge  raid array. i will see whole directory structure but whenever i want a file i will just shedule it for download.
-
-is it possible ? or maybe i just can not find the answer on project page ?
diff --git a/doc/forum/performance_and_multiple_replication_problems.mdwn b/doc/forum/performance_and_multiple_replication_problems.mdwn
deleted file mode 100644
--- a/doc/forum/performance_and_multiple_replication_problems.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Hi,
-
-I just was setting um my git-annex repository and started to sync my whole stuff in it.
-
-Background: I have choosen git-annex to sync my whole stuff (pictures, mp3s, documents, etc) between my pc, notebook and a home-server
-
-My Problems:
-1) When I'm starting the git-annex deamon, the "Performing startup scan" message occurs for hours
-2) git-annex synchronizes folders from the server which already on my pc, and that every time I restart the deamon on client
-
-My Questions:
-For 1) is git-annex when running one repository suitable to manage > 100gb and > 50000 files?
-For 2) do I have to wait until every tasks are completed (everything is committed) to get rid of multiple downloads of the same folders/files
-3) what is the best schema to sync between >2 devices should I use a Mesh or Star Schema (where my server is in the middle)
-
-Thank You in advance!
-Regards J
diff --git a/doc/forum/pgp_issue_in_log_file_after_upgrade_to_5.20140517.mdwn b/doc/forum/pgp_issue_in_log_file_after_upgrade_to_5.20140517.mdwn
deleted file mode 100644
--- a/doc/forum/pgp_issue_in_log_file_after_upgrade_to_5.20140517.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-    [2014-05-18 22:38:21 SAST] main: starting assistant version 5.20140517-g0aed6d9
-    Already up-to-date.
-    
-    (scanning...) [2014-05-18 22:38:22 SAST] Watcher: Performing startup scan
-    gpg: WARNING: unsafe permissions on homedir `/var/folders/m6/zkd11n111m38ff37zbtgq0lr0000gp/T/git-annex-gpg.tmp.0'
-    gpg: keyring `/Applications/git-annex.app/Contents/MacOS/trustedkeys.gpg' created
-    gpg: Signature made Sun May 18 04:16:11 2014 SAST using DSA key ID XXXXXXXX
-    gpg: Can't check signature: public key not found
-    (started...) 
-
-And still facing:
-
-    git-annex-remote-skydrive is not installed in PATH (/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/usr/bin:/bin:/usr/sbin:/sbin)
diff --git a/doc/forum/possible_gpg_issue.mdwn b/doc/forum/possible_gpg_issue.mdwn
deleted file mode 100644
--- a/doc/forum/possible_gpg_issue.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Hi,
-
-I'm having an issue and not sure if it's to do with git-annex or something external. I'm on Ubuntu 14.04, and have been using git-annex for several months without this issue, but it suddenly started (possibly) after several packages were updated via apt-get upgrade.
-
-We have two remotes configured, one is a local (LAN) smb share, the other is on Amazon S3. We're using shared encryption on the S3 remote, and no encryption on the smb remote.
-
-The problem that started happening recently is when copying to the smb remote. There is no problem copying from the remote, and no problem reading or writing to the drive outside of git-annex. However, copying to the remote fails after it seems to copy most or all of the file and then hang on a gpg step. Again, there is no encryption on this remote. The other S3 remote with shared encryption has no issues. Other devices on the LAN, all OS X, have no issues writing to the remote.
-
-I don't have enough info to necessarily claim this is a bug in git-annex, but I'm not sure what to poke at next to try to figure it out. Any help or advice would be greatly appreciated.
-
-Below is the debug output from a failed git annex copy command.
-
-    cw@ubuntu$ git annex copy annexedfile --to smbremote --debug
-    [2014-11-07 15:35:13 PST] read: git ["--git-dir=/repobase/.git","--work-tree=/repobase","show-ref","git-annex"]
-    [2014-11-07 15:35:13 PST] read: git ["--git-dir=/repobase/.git","--work-tree=/repobase","show-ref","--hash","refs/heads/git-annex"]
-    [2014-11-07 15:35:13 PST] read: git ["--git-dir=/repobase/.git","--work-tree=/repobase","log","refs/heads/git-annex..aa8813d486939544701359dc28fa7b0916917961","--oneline","-n1"]
-    [2014-11-07 15:35:13 PST] read: git ["--git-dir=/repobase/.git","--work-tree=/repobase","log","refs/heads/git-annex..097d5b482d6856ce22814a0c2c5eee43e3e030e4","--oneline","-n1"]
-    [2014-11-07 15:35:13 PST] chat: git ["--git-dir=/repobase/.git","--work-tree=/repobase","cat-file","--batch"]
-    [2014-11-07 15:35:13 PST] read: git ["--git-dir=/repobase/.git","--work-tree=/repobase","ls-files","--cached","-z","--","annexedfile"]
-    copy annexedfile (gpg) (to smbremote...) 
-    [2014-11-07 15:35:13 PST] chat: gpg ["--quiet","--trust-model","always","--batch","--passphrase-fd","11","--symmetric","--force-mdc","--no-textmode"]
-    95%           0.0 B/s 0s/mnt/annex/tmp/GPGHMACSHA1--a097a9b653d1facbe7d37d0e8f9f580261d9adef/GPGHMACSHA1--a097a9b653d1facbe7d37d0e8f9f580261d9adef: hClose: does not exist (Host is down)
-    failed                  
-    git-annex: copy: 1 failed
-    cw@ubuntu$
-
-Thanks,
-cw
diff --git a/doc/forum/post-copy__47__sync_hook.mdwn b/doc/forum/post-copy__47__sync_hook.mdwn
deleted file mode 100644
--- a/doc/forum/post-copy__47__sync_hook.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Hi,
-
-I have the following setup:
-- normal git repository with website code.
-- git annex repository to hold large set of binary data (pdfs, flashmovies, etc) that belongs to the site.
-
-I use git annex so I (and other developers) don't need to copy 1.4Gb+ of binary data for every working copy. (Data that is mostly left untouched.) Using git annex copy --to=origin I can simply only add new additions to this media/binary repository, without first pulling all the data. So far so good.
-
-When commits are pushed to a certain branch on the normal git repository, a post-receive hook exports (GIT_WORK_TREE=/data/site/ git checkout $branch -f) the updated repository to an apache documentroot. Thereby updating the staging server of the website.
-
-My question is, how can I do the same thing for my git annex repository? Since post-receive fires on receiving the annex hashes, and not the actual files. Those are rsynced, and I cannot find a way to trigger an action after all files are copied by git annex via rsync.
-
-Any tips?
-
diff --git a/doc/forum/pre-commit_hook_to_use_git_annex_for_only_large_files.mdwn b/doc/forum/pre-commit_hook_to_use_git_annex_for_only_large_files.mdwn
deleted file mode 100644
--- a/doc/forum/pre-commit_hook_to_use_git_annex_for_only_large_files.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-I've wanted to use git-annex for the longest time, but I really only wanted to use it if the files were over a certain size, otherwise, I just want to use regular git.
-
-After writing this pre-commit hook, I wanted to share and get some feedback.
-
-This would be saved as `.git/hooks/pre-commit`
-
-    #!/bin/sh
-    let MAX=1*1024*1024  # 1048576 == 1 MB
-    if [ ! -d '.git/annex/' ]; then
-      /usr/local/bin/git annex init >/dev/null 2>&1
-    fi
-    if git rev-parse --verify HEAD >/dev/null 2>&1; then
-      against=HEAD
-    else
-      # Initial commit: diff against an empty tree object
-      against=$(/usr/local/bin/git hash-object -t tree /dev/null)
-    fi
-    /usr/local/bin/git diff-index --cached $against | \
-      /usr/bin/tr '\t' ' ' | \
-      /usr/bin/cut -d ' ' -f4,6- | \
-      while read line; do
-        sha1=$(/usr/bin/cut -d ' ' -f1 <<< "$line")
-        if [ "$sha1" == "0000000000000000000000000000000000000000" ]; then
-          continue
-        fi
-        size=$(/usr/local/bin/git cat-file -s "$sha1")
-        if [ $size -ge $MAX ]; then
-          file=$(/usr/bin/cut -d ' ' -f2- <<< "$line")
-          /usr/local/bin/git update-index --force-remove "$file"
-          /usr/local/bin/git annex add "$file"
-          /usr/bin/killall -TERM Finder
-        fi
-    done
-    /usr/local/bin/git annex pre-commit .
-
-I also wrote an `Unlock Git Annex File.workflow` service for OS X:
-
-    set gitAnnex to "/Applications/git-annex.app/Contents/MacOS/git-annex"
-
-    tell application "Finder"
-            repeat with theItem in (get selection)
-                    if file type of theItem is "slnk" then
-                            set theFolder to quoted form of POSIX path of (container of theItem as alias)
-                            set filePath to do shell script "/usr/bin/basename " & quoted form of POSIX path of (theItem as text)
-                            set theCommand to "cd " & theFolder & "; " & gitAnnex & " unlock '" & filePath & "'"
-                            do shell script theCommand
-                    end if
-            end repeat
-    end tell
-
-Use Automator to create a new service that receives selected "files or folders" in "Finder.app". Then drag the "Run AppleScript" action to the workflow panel. The script above should be copied into the code area replacing all the default content.
-
-Am I all alone in wanting these types of scripts?
-
-- Peter
diff --git a/doc/forum/preferred_content.mdwn b/doc/forum/preferred_content.mdwn
deleted file mode 100644
--- a/doc/forum/preferred_content.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Hello all,
-
-I'm trying to use "preferred content" with git-annex but I suspect that my version doesn't provide it.
-
-I'm using Debian "wheezy" that packs git-annex 3.20120629.
-
-I appreciate any help you can give.
-
-Thanks.
-
-Zaka.
diff --git a/doc/forum/preferred_content_settings_for_multiple_symlinks.mdwn b/doc/forum/preferred_content_settings_for_multiple_symlinks.mdwn
deleted file mode 100644
--- a/doc/forum/preferred_content_settings_for_multiple_symlinks.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I have my music library in `music/` and some really old files I recently added in `reallyold/`.  There are some MP3s in the really old files and some are the same as my library, so of course git annex is only keeping one copy.  Now, I have an rsync remote, `ma`, which prefers content from `music/` but doesn't want anything from `reallyold/`.  So while right now it is trying to drop stuff, I suspect at some point that it will try to re-add them in virtue of being in `music/`, as I've got a loop.
-
-I want to eliminate this by using the present keyword to disable dropping for stuff in `reallyold/` and `music/`.  Here is my attempt, which doesn't work--I am hoping someone can spot what's wrong.
-
-    (present and include=music/*) or (present and include=reallyold/*) or (exclude=reallyold/* and exclude=video/* and exclude= ...)
-
-Note that music is included by virtue of not being excluded so it should satisfy the third disjunct.  Thanks.
diff --git a/doc/forum/public-web-frontend.mdwn b/doc/forum/public-web-frontend.mdwn
deleted file mode 100644
--- a/doc/forum/public-web-frontend.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Hi,
-
-Use case: I would like to have a "Public" top-level directory in my annex, which gets files in there published over HTTP on a particular server.
-
-How I see doing this:
-
-1. Put my annex to an http server with exported-over-http `/Public/` directory.
-2. Configure a `post-update` hook with the following:
-
-        $ git annex fix
-
-3. Push files on `/Public/` to that annex.
-
-Does it make sense? If yes, are there any gotchas I should beware of?
-
-Thanks.
diff --git a/doc/forum/public__44___read_only_annex_without_location_tracking.mdwn b/doc/forum/public__44___read_only_annex_without_location_tracking.mdwn
deleted file mode 100644
--- a/doc/forum/public__44___read_only_annex_without_location_tracking.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I would like to use a public, read only annex to publish photos. I have a server, running gitolite, with git-annex setup, which I use successfully to sync content between my own devices.
-
-But, with a public annex, I would like the view of the repository available from the server to be that only the server has the content, and not to have, or give out any of the location tracking information about any other annexes?
-
-A more concrete example would be, how do I get a photo in to git annex locally, and then push this to the server for public access, without publishing information about my local repository?
-
-From the public annexes I have looked at, this does not appear to be done. So I am unsure if this is even possible, however it seems a desirable thing to do?
diff --git a/doc/forum/pulling_from_encrypted_remote.mdwn b/doc/forum/pulling_from_encrypted_remote.mdwn
deleted file mode 100644
--- a/doc/forum/pulling_from_encrypted_remote.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Is there a way to pull from an encrypted remote?
-
-Use case:
-
-1. Have annex in an encrypted public rsync remote
-2. Have USB stick with PGP keys (but not the annex repository)
-3. Get to a new computer
-4. Set up a new annex using the PGP keys I have.
-
-1-3 work fine :) However, 4'th is the issue:
-
-How would I do `git pull <remote>` for an encrypted remote? Is it possible?
diff --git a/doc/forum/pure_git-annex_only_workflow.mdwn b/doc/forum/pure_git-annex_only_workflow.mdwn
deleted file mode 100644
--- a/doc/forum/pure_git-annex_only_workflow.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-I’m using git annex to manage my movie collection on various devices – my laptop, a NSLU tucked away somewhere with lots of space, some external hard drives. For this use case, I do not need the full power of git as a version control system, so having to run "git commit" and coming up with commit messages is annoying. Also, this makes sense for a version control system, but not for my media collection:
-
-	$ git annex add Hot\ Fuzz\ -\ English.mkv 
-	add Hot Fuzz - English.mkv (checksum...) ok
-	(Recording state in git...)
-	$ git commit -m 'another movie added'
-	[master 851dc8a] another movie added
-	 1 files changed, 1 insertions(+), 0 deletions(-)
-	 create mode 120000 00 Noch nicht gesehen/Hot Fuzz - English.mkv
-	$ git push jeff
-	Counting objects: 38, done.
-	Delta compression using up to 2 threads.
-	Compressing objects: 100% (20/20), done.
-	Writing objects: 100% (26/26), 2.00 KiB, done.
-	Total 26 (delta 11), reused 0 (delta 0)
-	remote: error: refusing to update checked out branch: refs/heads/master
-	remote: error: By default, updating the current branch in a non-bare repository
-	remote: error: is denied, because it will make the index and work tree inconsistent
-	remote: error: with what you pushed, and will require 'git reset --hard' to match
-	remote: error: the work tree to HEAD.
-	remote: error: 
-	remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
-	remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
-	remote: error: its current branch; however, this is not recommended unless you
-	remote: error: arranged to update its work tree to match what you pushed in some
-	remote: error: other way.
-	remote: error: 
-	remote: error: To squelch this message and still keep the default behaviour, set
-	remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
-	To jeff:/mnt/media/Movies
-	 ! [rejected]        git-annex -> git-annex (non-fast-forward)
-	 ! [remote rejected] master -> master (branch is currently checked out)
-	error: failed to push some refs to 'jeff:/mnt/media/Movies'
-	To prevent you from losing history, non-fast-forward updates were rejected
-	Merge the remote changes (e.g. 'git pull') before pushing again.  See the
-	'Note about fast-forwards' section of 'git push --help' for details.
-
-It seems that to successfully make the new files known to the other side, I have to log into jeff and pull _from_ my current machine.	
-
-What I would like to have is that
-
-* git annex add does not require a commit afterwards.
-* Changes to the files are automatically picked up with the next git-annex call (similar to how etckeeper works).
-* Commands "git annex push" and "git annex pull" that will sync the metadata (i.e. the list of files) in both directions without further manual intervention, at least not until the two repositories have diverged in a way that is not possible to merge sensible.
-
-Summay: git-annex is great. git is not always. Please make it possible to use git annex without having to use git.
diff --git a/doc/forum/purge_files_with_no_copies.mdwn b/doc/forum/purge_files_with_no_copies.mdwn
deleted file mode 100644
--- a/doc/forum/purge_files_with_no_copies.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Hi guys, as a result of some improper handling I am left with a couple of files with no copies scattered all around my repos. Now, while my data loss is unfortunate, it is not tragic. What I would like to do now is to purge all of these files without having to look for them one by one. Is there any easy way to do this? 
-
-Cheers
diff --git a/doc/forum/pushing_to_android.mdwn b/doc/forum/pushing_to_android.mdwn
deleted file mode 100644
--- a/doc/forum/pushing_to_android.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Dear git-annex community, I've just installed git-annex on my CyanogenMod phone. What I'd like to do is to synchronize my music folder from my desktop to my phone. I.e. I'm using [sshelper](http://arachnoid.com/android/SSHelper/index.html) to start OpenSSH server on the phone. The question is, how can I make git and git-annex available to SSHelper's shell so that I can git push to the phone?
diff --git a/doc/forum/question_about_assistant_and___47__archive__47__.mdwn b/doc/forum/question_about_assistant_and___47__archive__47__.mdwn
deleted file mode 100644
--- a/doc/forum/question_about_assistant_and___47__archive__47__.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-I have a git-annex repository located at ~/annex which has been set up using git-annex assistant.
-
-This repository is configured as "client".
-
-My other repository is a huge USB drive configured as "full archive".
-
-Now everything seems to work fine except there is one thing I don't understand:
-
-    alip@client:~/annex> git-annex whereis ./archive/kus.png
-    whereis archive/kus.png (1 copy) 
-        e79a4cf6-4c48-4833-93de-98ba6eb625d6 -- deniz
-    ok
-
-Fine, there is only one copy according to git-annex but the file is still present
-in **this** client repository:
-
-    alip@client:> du -hs ~/annex/archive
-    20G	/home/alip/annex/archive/
-
-How do I free this space? Am I supposed to call git-annex drop manually?
-
-git-annex version: 3.20130124
diff --git a/doc/forum/race_condition_with_drop_-J__63__.mdwn b/doc/forum/race_condition_with_drop_-J__63__.mdwn
deleted file mode 100644
--- a/doc/forum/race_condition_with_drop_-J__63__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-When I run a command like: "git-annex drop . -J 20"
-
-I get: "git-annex: content is locked"
-
-Running with -J 5 works.
-
-EDIT: Even as low as -J 2 runs into problems. The issue is simply more likely to trigger with more threads.
diff --git a/doc/forum/rebuild_location_log_from_encrypted_remote.mdwn b/doc/forum/rebuild_location_log_from_encrypted_remote.mdwn
deleted file mode 100644
--- a/doc/forum/rebuild_location_log_from_encrypted_remote.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-Hi,
-
-I apologize, but I can't retrace my steps, so my problem is not replicable. The current situation is: 1 main repo and 1 directory/encrypted special remote. From the main repo, I see 0 available copy of the files I need. But when I do a fsck I do see the file. The problem is that the location log does not seem to get fixed after fsck, as I cannot use git-annex get to obtain the file, even after the fsck command. 
-
-Do you have any suggestions for next diagnostic/repair steps?
-
-Thanks a lot for your time and answer!
-
-Vincent
-
-macbook% git annex fsck foo.zip --from needle
-fsck foo.zip (gpg) 
-You need a passphrase to unlock the secret key for
-user: “me <email@email.edu>”
-2048-bit RSA key, ID ???????, created 2013-01-11 (main key ID ????????)
-
-(checking needle...) 
-GPGHMACSHA1--d7036fd17214c06c83d53479dcec9554a7dc2109
-    13815014 100%   14.16MB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 13816832 bytes  received 42 bytes  9211249.33 bytes/sec
-total size is 13815014  speedup is 1.00
-(fixing location log) (checksum...) 
-  ** No known copies exist of foo.zip
-failed
-(Recording state in git...)
-git-annex: fsck: 1 failed
-
-
-macbook% git annex get foo.zip
-get foo.zip (not available) 
-  No other repository is known to contain the file.
-failed
-git-annex: get: 1 failed
-macbook% 
diff --git a/doc/forum/receiving_indirect_renames_on_direct_repo___63__.mdwn b/doc/forum/receiving_indirect_renames_on_direct_repo___63__.mdwn
deleted file mode 100644
--- a/doc/forum/receiving_indirect_renames_on_direct_repo___63__.mdwn
+++ /dev/null
@@ -1,254 +0,0 @@
-I've been playing with a mixed setup, and I frequentely end up with conflicts which can be ascribed to mixing direct windows repos with indirect linux one(s), and making renames on the indirect ones.
-Possibly someone can address what I miss of the git-annex/git interaction.  
-
-#### versions involved ####
-
-linux: git-annex version: 4.20131024
-win: git-annex version: 4.20131024-gca7b71e
-
-### Steps to reproduce behaviour ###
-
-###### 1. On linux, i setup bare origin "casa" and client repo "local":
-    
-    [michele@home ~]$ git init --bare casa
-    Initialized empty Git repository in /home/sambahome/michele/casa/
-    [michele@home ~]$ cd casa
-    [michele@home casa]$ git annex init casa
-    init casa ok
-    (Recording state in git...)
-    [michele@home ~]$ cd ..; git clone casa local
-    Cloning into 'local'...
-    done.
-    warning: remote HEAD refers to nonexistent ref, unable to checkout.
-    [michele@home ~]$ cd local; git annex init local
-    init local ok
-    (Recording state in git...)
-    [michele@home local]$ echo lintest > lintest
-    [michele@home local]$ git annex add lintest
-    add lintest (checksum...) ok
-    (Recording state in git...)
-    [michele@home local]$ git annex sync
-    (merging origin/git-annex into git-annex...)
-    (Recording state in git...)
-    commit  
-    ok
-    pull origin 
-    ok
-    push origin 
-    Counting objects: 18, done.
-    Delta compression using up to 4 threads.
-    Compressing objects: 100% (12/12), done.
-    Writing objects: 100% (16/16), 1.48 KiB | 0 bytes/s, done.
-    Total 16 (delta 1), reused 0 (delta 0)
-    To /home/sambahome/michele/casa
-     * [new branch]      git-annex -> synced/git-annex
-     * [new branch]      master -> synced/master
-    ok
-    ```
-    
-###### 2. On windows I clone origin, and I sync empty
-
-    ```cmd
-    M:\>git clone ssh://michele@home/home/michele/casa win
-    Cloning into 'win'...
-    remote: Counting objects: 20, done.
-    remote: Compressing objects: 100% (15/15), done.
-    remote: Total 20 (delta 3), reused 0 (delta 0)
-    Receiving objects: 100% (20/20), done.
-    Resolving deltas: 100% (3/3), done.
-    M:\>cd win
-    M:\win>git annex status
-      Detected a crippled filesystem.
-      Enabling direct mode.
-      Detected a filesystem without fifo support.
-      Disabling ssh connection caching.
-    repository mode: direct
-    trusted repositories: (merging origin/git-annex origin/synced/git-annex into git-annex...)
-    (Recording state in git...)
-    0
-    semitrusted repositories: 4
-            00000000-0000-0000-0000-000000000001 -- web
-            598ecfac-087d-49a3-b48d-beafd0d71805 -- origin (casa)
-            b2699c17-d0bc-40a0-b447-a64ad109b2a2 -- here (ALICUDI:M:\win)
-            bd4166eb-296b-4f0f-a3be-6c25e4c7cbb0 -- local
-    untrusted repositories: 0
-    transfers in progress: none
-    available local disk space: unknown
-    local annex keys: 0
-    local annex size: 0 bytes
-    known annex keys: 1
-    known annex size: 8 bytes
-    bloom filter size: 16 mebibytes (0% full)
-    backend usage:
-            SHA256E: 1
-    ```
-    
-###### 3. I copy content from local to win
-
-    ```bash
-    [michele@home local]$ git annex copy --to origin lintest
-    copy lintest (to origin...) ok
-    (Recording state in git...)
-    [michele@home local]$ git annex sync
-    ...runs ok...
-    ```
-
-###### 4. and
-
-    ```cmd
-    M:\win>git annex sync
-    ...works
-    M:\win>git annex get .
-    ...works
-    M:\win>cat lintest
-    lintest
-    ```
-
-so far so good.
-###### 5. Now the renaming part (performed on linux indirect repo)
-
-    ```bash
-    [michele@home local]$ git mv lintest renamed
-    [michele@home local]$ git annex list
-    here
-    |origin
-    ||web
-    |||
-    XX_ renamed
-    [michele@home local]$ git annex sync
-    ...works
-    ```
-
-###### 6.  now, by issuing sync on windows I start getting a "push issue":
-
-    ```
-    M:\win>git annex sync
-    commit
-    ok
-    pull origin
-    remote: Counting objects: 3, done.
-    remote: Total 2 (delta 0), reused 0 (delta 0)
-    Unpacking objects: 100% (2/2), done.
-    From ssh://home/home/michele/casa
-       c3b7a63..a0854bf  master     -> origin/master
-       c3b7a63..a0854bf  synced/master -> origin/synced/master
-    ok
-    push origin
-    Counting objects: 9, done.
-    Delta compression using up to 2 threads.
-    Compressing objects: 100% (4/4), done.
-    Writing objects: 100% (5/5), 484 bytes, done.
-    Total 5 (delta 1), reused 0 (delta 0)
-    To ssh://michele@home/home/michele/casa
-       6c18669..8cc74a0  git-annex -> synced/git-annex
-     ! [rejected]        master -> synced/master (non-fast-forward)
-    error: failed to push some refs to 'ssh://michele@home/home/michele/casa'
-    hint: Updates were rejected because a pushed branch tip is behind its remote
-    hint: counterpart. Check out this branch and merge the remote changes
-    hint: (e.g. 'git pull') before pushing again.
-    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
-    failed
-    git-annex: sync: 1 failed
-    
-    M:\win>
-    ```
-
-at this stage I tried to issue a git annex merge, git annex sync, leading to same result.
-
-somewhere in the forum I read i could try issuing a git pull origin master (this could be the problem).
-and the result is as such:
-
-    ```
-    M:\win>git pull master
-    fatal: 'master' does not appear to be a git repository
-    fatal: The remote end hung up unexpectedly
-    
-    M:\win>git pull origin master
-    From ssh://home/home/michele/casa
-     * branch            master     -> FETCH_HEAD
-    Updating c3b7a63..a0854bf
-    error: Your local changes to the following files would be overwritten by merge:
-            lintest
-    Please, commit your changes or stash them before you can merge.
-    Aborting
-    
-    M:\win>git status
-    # On branch master
-    # Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
-    #
-    # Changes not staged for commit:
-    #   (use "git add <file>..." to update what will be committed)
-    #   (use "git checkout -- <file>..." to discard changes in working directory)
-    #
-    #       modified:   lintest
-    #
-    no changes added to commit (use "git add" and/or "git commit -a")
-    
-    M:\win>cat lintest
-    lintest
-    ```
-    
-well, ok it appears modified for some weirdness (crlf?), we can live with it.
-
-    ```
-    M:\win>git checkout -->> this replaces files contents with simlink (due to git pull above?)
-    ```
-
-at this stage content is lost, and annex has no knowledge about it.
-
-    ```
-    M:\win>git annex fsck
-    fsck lintest ok
-    
-    M:\win>cat lintest
-    .git/annex/objects/9Z/82/SHA256E-s8--2b721dbe9afe6031cce3004e909dd62e0b4b2f3944438b6a000dffc7ad657715/SHA256E-s8--2b721dbe9afe6031cce3004e90
-    M:\win>git annex list
-    here
-    |origin
-    ||web
-    |||
-    XX_ lintest
-    ```
-
-still I cannot sync, but now i can pull origin master:
-
-    ```cmd
-    M:\win>git pull origin master                          From ssh://home/home/michele/casa                       * branch            master     -> FETCH_HEAD          Updating c3b7a63..a0854bf                              Fast-forward                                            lintest => renamed | 0                                 1 file changed, 0 insertions(+), 0 deletions(-)        rename lintest => renamed (100%)                      
-    ```
-
-this doesnt restore content (annex thinks its already there:
-
-    ```
-    M:\win>cat renamed
-    .git/annex/objects/9Z/82/SHA256E-s8--2b721dbe9afe6031cce3004e909dd62e0b4b2f3944438b6a000dffc7ad657715/SHA256E-s8--2b721dbe9afe6031cce3004e909dd62e0b4b2f3944438b6a000dffc7ad657715
-    ```
-
-I think my mistake is the use of the ```git checkout``` in direct mode. But why is the file detected as modified in the first place ?
-
-note: as long as i didn't drop on origin, i still can recover contents by 'forcing' a content refresh:
-
-    ```
-    M:\win>git annex get renamed --from origin
-    get renamed (from origin...)
-    SHA256E-s8--2b721dbe9afe6031cce3004e909dd62e0b4b2f3944438b6a000dffc7ad657715
-               8 100%    7.81kB/s    0:00:00 (xfer#1, to-check=0/1)
-    
-    sent 30 bytes  received 153 bytes  8.13 bytes/sec
-    total size is 8  speedup is 0.04
-    ok
-    (Recording state in git...)
-    
-    M:\win>cat renamed
-    .git/annex/objects/9Z/82/SHA256E-s8--2b721dbe9afe6031cce3004e909dd62e0b4b2f3944438b6a000dffc7ad657715/SHA256E-s8--2b721dbe9afe6031cce3004e909d
-    M:\win>git annex fsck
-    fsck renamed (fixing direct mode) (checksum...) ok
-    
-    M:\win>cat renamed
-    lintest
-```
-
-
-
-
-
-
diff --git a/doc/forum/recover_deleted_files___63__.mdwn b/doc/forum/recover_deleted_files___63__.mdwn
deleted file mode 100644
--- a/doc/forum/recover_deleted_files___63__.mdwn
+++ /dev/null
@@ -1,66 +0,0 @@
-hi, 
-
-i think of use git-annex as the backbone of a archival systems. at first point no distributed storage, just 1 node.
-but now i run into the topic below ( deleted the "named" symlink of the "object" -- how to recover ?)
-
-maybe someone can enlighten me...
-
-thanks,
-.ka
-
-// about the version. ( debian-squeeze, bpo )
-
-$ git-annex version
-git-annex version: 3.20120629~bpo60+2
-local repository version: 3
-default repository version: 3
-supported repository versions: 3
-upgrade supported from repository versions: 0 1 2
-
-// building up a testcase.
-
-$ git init
-Initialized empty Git repository in ...test2/.git/
-
-$ git annex init
-init  ok
-(Recording state in git...)
-
-$ echo "aaa" > 1.txt
-
-$ echo "bbb" > 2.txt
-
-$ git-annex add .
-add 1.txt (checksum...) ok
-add 2.txt (checksum...) ok
-(Recording state in git...)
-
-$ git commit -a -m "added 2 files"
-fatal: No HEAD commit to compare with (yet)
-fatal: No HEAD commit to compare with (yet)
-[master (root-commit) fc2a5d7] added 2 files
- Committer: userhere user <bla@bla>
-Your name and email address were configured automatically based
-on your username and hostname. Please check that they are accurate.
-...
- 2 files changed, 2 insertions(+), 0 deletions(-)
- create mode 120000 1.txt
- create mode 120000 2.txt
-
-// ok, so far standard. i have now 2 files - lets delete one.
-
-$ rm 2.txt 
-$ ls -l
-lrwxrwxrwx 1 xp xp 176 24. Okt 22:55 1.txt -> .git/annex/objects/Z6/7q/SHA256-s4--17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76/SHA256-s4--17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76
-
-// eek, delete of 2.txt was a bad idea (it was just the symlink) -- try to recover...
-
-$ git-annex fix
-$ git-annex fsck
-fsck 1.txt (checksum...) ok
-$ ls
-1.txt
-
-// still not here.. how to recover the link to 2.txt ???
-// i still see the content of the file in the object folder
-// if I want to use git-annex as the backend of a archival system, this is important.
diff --git a/doc/forum/recovering_from_repo_corruption.mdwn b/doc/forum/recovering_from_repo_corruption.mdwn
deleted file mode 100644
--- a/doc/forum/recovering_from_repo_corruption.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-In my current annex config, I have 4 computers with "traditional" git annexes as well as an external drive that is a git annex, an rsync'd backup annex, and a glacier archive.  Today, one of the computers got a corrupted git repo. It was complaining that a pack file was invalid. In my attempts to fix it, a commit was logged that deleted every file in the annex. I didn't find this out until I did 'git annex sync' and watched git delete everything, then send all those commits to my other 3 systems and the external drive. *facepalm*
-
-Fortunately, I had one of those other systems in direct mode and I copied everything from the annex as a backup. Now, when I try to re-add files to the annex, I'm running into some errors. These appear to be "collisions" within the annex part of the .git folder:
-
-    %  › git annex add House.netspd 
-    add House.netspd (checksum...) 
-    git-annex: /Users/akraut/Desktop/annex/.git/annex/objects/31/Gw/SHA256E-s167433--41e68ea0adb5a4086a0b7b39d0556b9b86523ffb6b498d58f12f96460da315e9/SHA256E-s167433--41e68ea0adb5a4086a0b7b39d0556b9b86523ffb6b498d58f12f96460da315e9.map.tmp62699: openFile: permission denied (Permission denied)
-    failed
-    git-annex: add: 1 failed
-
-Any ideas on what's going on here? Perhaps how to get things added back in or recovered? It seems all the actual file contents are here, but annex doesn't seem to know they're there anymore.
diff --git a/doc/forum/recovery_from_failed_merge.mdwn b/doc/forum/recovery_from_failed_merge.mdwn
deleted file mode 100644
--- a/doc/forum/recovery_from_failed_merge.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Starting the assistant version 5.20140613 on my  repository (~60GB), it performed a merge
-with an offline-repository, deleting a large part of the files.
-Since the repo is in direct mode, I cannot do a git revert. The other repo is not available anymore
-
-Any way of getting them back?
-Also, du shows me that the .git/annex/objects folder has approximately the size of my repo before the incident.
-
diff --git a/doc/forum/reliability__47__completeness_of_XMPP_updates.mdwn b/doc/forum/reliability__47__completeness_of_XMPP_updates.mdwn
deleted file mode 100644
--- a/doc/forum/reliability__47__completeness_of_XMPP_updates.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-This falls into the category of "noob questions" I think.
-
-The one piece of the git-annex assistant puzzle I've never messed with is XMPP pairing.  I'm wondering how well a pair of repos can keep in sync with each other if their only connection is via XMPP.  Will things go badly if changes are made to one while the other is offline?  Do messages get queued up to deliver when they're both online?  (Or do they get queued on the server side so they can be delivered even if one of them is online, makes changes, then goes offline, and the other one comes online later?)
-
-If some xmpp messages don't go through for whatever reason, will the remotes be able to "catch up" with each other later on and make up for lost time?
-
-Just hoping for a general sense of the limitations of XMPP pairing.   TIA.
diff --git a/doc/forum/relying_on_git_for_numcopies.mdwn b/doc/forum/relying_on_git_for_numcopies.mdwn
deleted file mode 100644
--- a/doc/forum/relying_on_git_for_numcopies.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-**&lt;out-of-date-warning&gt;**The main problems this is supposed to solve are addressed in a different way with [[todo/hidden files]] and the `--fast` option introduced in [[batch check on remote when using copy]], so while this is not technically obsolete, the main reasons for it are gone. --[[chrysn]]**&lt;/out-of-date-warning&gt;**
-
-This is a rough sketch of a modification of git-annex to rely more on git commit semantics. It might be flawed due to my lack of understanding of git-annex internals. --[[chrysn]]
-
-Summary
-=========
-
-Currently, [[location tracking]] is only used for informational purposes unless a repository is [[trust]]ed, in which case there is no checking at all. It is proposed to use the location tracking information as a commitment to keep track of a file until another repository takes over responsibility.
-
-git's semantics for atomic commits are proposed to be used, which makes sure that before files are actually deleted, another repository has accepted the deletion.
-
-Modified git-annex-drop behavior
-==========================
-
-The most important (if not only) git-annex command that is affected by this is `git annex drop`. Currently, for dropping a large number of files, every file is checked with another (or multiple, if so configured) host if it's safe to delete.
-
-The new behavior would be to
-
-* decrement the location tracking counter for all files to be dropped,
-* commit that change,
-* try to push it to at least as many repositories that the numcopies constraints are met,
-* revert if that fails,
-* otherwise really drop the files from the backend.
-
-Unlike explicit checking, this never looks at the remote backend if the file is really present -- otoh, git-annex already relies on the files in the backend to not be touched by anyone but git-annex itself, and git-annex would only drop them if they were derefed and committed, in which case git would not accept the push. (git by itself would accept a merged push, but even if the reverting step failed due to a power outage or similar, git-annex would, before really deleting files from the backend, check again if the numcopies restraint is still met, and revert its own delete commit as the files are still present anyway.)
-
-Implications for trust
-==============
-
-The proposed change also changes the semantics of trust. Trust can now be controlled in a finer-grained way between untrusted and semi-trusted, as best illustrated by a use case:
-
-> Alice takes her netbook with her on a trip through Spain, and will fill most of its disk up with pictures she takes. As she expects to meet some old friends during the first days, she wants to take older pictures with her, which are safely backed up at home, so they can be deleted on demand.
->
-> She tells her netbook's repository to dereference the old images (but not other parts of the repository she has not copied anywhere yet) and pushes to the server before leaving. When she adds pictures from her camera to the repository, git-annex can now free up space as needed.
-
-Dereferencing could be implemented as `git annex drop --no-rm` (or `move --no-rm`), freeing space is similar to `dropunused`.
-
-A trusted repository with the new semantics would mean that the repository would not accept dropping anything, just as before.
-
-Advantages / Disadvantages
-=====================
-
-The advantage of this proposal is that the round trips required for dropping something could be greatly reduced.
-
-There should also be simplifications in the `git annex drop` command as it doesn't need to take care of locking any more (git should already do that between checking if HEAD is a parent of the pushed commit and replacing HEAD).
-
-Besides being a major change in git-annex (with the requirement to track hosts' git-annex versions for migration, as the new trust system is incompatible with the old one), no disadvantages of that stragegy are known to the author (hoping for discussion below).
diff --git a/doc/forum/remembering_state.mdwn b/doc/forum/remembering_state.mdwn
deleted file mode 100644
--- a/doc/forum/remembering_state.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-so i am wondering how better to remember the state of a repository.
-
-the use case is this: i have this part of my music collection which i consider to be my "favorites". i would like to have only those on an external hard drive, but also on my portable music player. so i cloned my main music collection to the external hard drive and did `git annex get` on the files i wanted there. now i want to replicate that to the music player - how would i go around doing that? if i clone that repo again, it will all have empty symlinks and i would have to reproduce the same process all over again, which i can script, but it seems a little quirky...
-
-ideas? --[[anarcat]]
diff --git a/doc/forum/remote-specific_meta-data.mdwn b/doc/forum/remote-specific_meta-data.mdwn
deleted file mode 100644
--- a/doc/forum/remote-specific_meta-data.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I know we can associate arbitrary [[metadata]] to files. I'd like to be able to sync *remote* specific metadata (say `ip = 10.0.0.1`) fields around. I was originally thinking of shoving this in the description but I am not sure that (a) it gets synced around and (b) it will scale well enough.
-
-Then I thought we could use the key/value storage, but then the keyname would change with metadata changes so maybe that won't work...? Another option I thought of was to just throw stuff in a separate directory in the git-annex branch.
-
-Thoughts? --[[anarcat]]
diff --git a/doc/forum/remote_server_client_repositories_are_bare__33____63__.mdwn b/doc/forum/remote_server_client_repositories_are_bare__33____63__.mdwn
deleted file mode 100644
--- a/doc/forum/remote_server_client_repositories_are_bare__33____63__.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-I've gone through most of the screen casts and lots of documentation,
-but my first attempt produced an unexpected result.
-
-I wanted to use git-annex is a Dropbox-simplistic setting - syncing
-a directory between my notebook (OSX) and my desktop (OpenSUSE 12.3).
-Running the assistant on OSX and adding a "Remote server" repository,
-changing the repository group to client produced a bare repository
-on the desktop.
-
-Am I missing something obvious?
-
-I've tried a few different version of git-annex, most recently
-
-   git-annex version: 4.20130727-g9399845
-   build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-
-but it remains the same.
diff --git a/doc/forum/removing_remote.log_information_completely.mdwn b/doc/forum/removing_remote.log_information_completely.mdwn
deleted file mode 100644
--- a/doc/forum/removing_remote.log_information_completely.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-in [[forum/remote-specific_meta-data/]], we have learned how to insert our own remote-specific metadata, in remote.log. now, we need a way to remove that data. for some reason, injecting commits in the `git-annex` branch doesn't quite work, because other assistants will overwrite that merge thanks to the [[git-union-merge]] driver.
-
-so far, i have found that it *can* be possible to work around this problem by repeatedly doing commits on the git-annex branch and running `git-annex sync` by hand after. it stumbles and flips around for a while, but eventually does it. it does create nice sparkles in gitk: 
-
-![a tangled mess in gitk](http://i.imgur.com/PD4ne50.png)]
-
-What is the proper way of removing entries from `remote.log`? How about propagating changes to the `synced/git-annex` branch? I can generate commits on `git-annex` using the git-annex index, and on the `git-annex` branch. But how should those changes be propagated to other branches?
-
-Thanks! --[[anarcat]]
diff --git a/doc/forum/renaming_directories_not_supported__63__.mdwn b/doc/forum/renaming_directories_not_supported__63__.mdwn
deleted file mode 100644
--- a/doc/forum/renaming_directories_not_supported__63__.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-I have an annex repository with several of my CDs. They were ripped using MusicBrainz data, causing some directory names to be in Russian. This is something I wanted to change.
-
-I have cloned this repository on my laptop, where I wanted to implement the change.
-
-When I do a git mv Пётр_Ильич_Чайковский P_I_Tchaikovsky on my laptop, I can commit the change. git annex sync also doesn't object
-
-However, the original directory remains on the origin repository, and the renamed directory is not present.
-
-Am I doing something wrong?
-
-
-
-    [master e112a02] Renamed Tchaikovsky directory.
-     9 files changed, 0 insertions(+), 0 deletions(-)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/04 Variations on a Rococo Theme, Op. 33_ Moderato quasi Andante.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/04 Variations on a Rococo Theme, Op. 33_ Moderato quasi Andante.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/05 Variations on a Rococo Theme, Op. 33_ Tema. Moderato semplice.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/05 Variations on a Rococo Theme, Op. 33_ Tema. Moderato semplice.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/06 Variations on a Rococo Theme, Op. 33_ Variazione I. Tempo del Tema.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/06 Variations on a Rococo Theme, Op. 33_ Variazione I. Tempo del Tema.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/07 Variations on a Rococo Theme, Op. 33_ Variazione II. Tempo del Tema.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/07 Variations on a Rococo Theme, Op. 33_ Variazione II. Tempo del Tema.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/08 Variations on a Rococo Theme, Op. 33_ Variazione III. Andante sostenuto.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/08 Variations on a Rococo Theme, Op. 33_ Variazione III. Andante sostenuto.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/09 Variations on a Rococo Theme, Op. 33_ Variazione IV. Andante grazioso.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/09 Variations on a Rococo Theme, Op. 33_ Variazione IV. Andante grazioso.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/10 Variations on a Rococo Theme, Op.,33_ Variazione V. Allegro moderato.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/10 Variations on a Rococo Theme, Op.,33_ Variazione V. Allegro moderato.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/11 Variations on a Rococo Theme, Op. 33_ Variazione VI. Andante.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/11 Variations on a Rococo Theme, Op. 33_ Variazione VI. Andante.flac" (100%)
-     rename "\320\237\321\221\321\202\321\200_\320\230\320\273\321\214\320\270\321\207_\320\247\320\260\320\271\320\272\320\276\320\262\321\201\320\272\320\270\320\271/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/12 Variations on a Rococo Theme, Op. 33_ Variazione VII e Coda. Allegro vivo.flac" => "P_I_Tchaikovsky/Dvo\305\231\303\241k_ Cellokonzert _ Tschaikowsky_ Rokoko-Variationen/12 Variations on a Rococo Theme, Op. 33_ Variazione VII e Coda. Allegro vivo.flac" (100%)
-    frederik@freo:~/Music$ git annex sync
-    commit  ok
-    pull A20 
-    remote: Counting objects: 83, done.
-    remote: Compressing objects: 100% (74/74), done.
-    remote: Total 83 (delta 2), reused 0 (delta 0)
-    Unpacking objects: 100% (83/83), done.
-    From ssh://A20:/mnt/usb1/Music
-       5c0bae2..72eb235  git-annex  -> A20/git-annex
-    ok
-    (merging A20/git-annex into git-annex...)
-    (Recording state in git...)
-    push A20 
-    Counting objects: 284, done.
-    Delta compression using up to 4 threads.
-    Compressing objects: 100% (257/257), done.
-    Writing objects: 100% (284/284), 21.06 KiB | 0 bytes/s, done.
-    Total 284 (delta 153), reused 0 (delta 0)
-    To ssh://A20:/mnt/usb1/Music
-       0a391ea..ad7251c  git-annex -> synced/git-annex
-       4af0061..e112a02  master -> synced/master
-    ok
diff --git a/doc/forum/repair_stuck_on_ls-tree_command.mdwn b/doc/forum/repair_stuck_on_ls-tree_command.mdwn
deleted file mode 100644
--- a/doc/forum/repair_stuck_on_ls-tree_command.mdwn
+++ /dev/null
@@ -1,54 +0,0 @@
-Hi,
-
-I have run the git annex repair command on one of my repositories and it has been running for 38h hours now. I have monitored the process and its sons with htop and it seems that git annex repair is stuck.
-
-It repeatedly launches the following command: 
-
-    git --git-dir=/home/vincent/photos2/.git --work-tree=/home/vincent/photos2 ls-tree --full-tree -z -r -- 5fe5193e079631c0ceac0688ae0a6c1636491b61
-
-I have tried to execute it by hand and it produces a lot of output. I have redirected it into some file in order to count the content produced by this command.
-
-    vincent@berlioz:~/photos2/.git$ git --git-dir=/home/vincent/photos2/.git --work-tree=/home/vincent/photos2 ls-tree --full-tree -z -r -- 5fe5193e079631c0ceac0688ae0a6c1636491b61 > /tmp/ls-tree
-    vincent@berlioz:/tmp$ wc ls-tree 
-           0   232525 11611220 ls-tree
-
-Could this cause some troubles to git-annex ? Maybe my repository is just too big and it demands some time to deal with the whole thing?
-
-Before doing the git annex repair command I have tried to delete a distant annex (hosted on a raspberry pi, running an arm raspbian) from this one, using the git annex webapp website. Since it was kind of stuck I asked webapp to shutdown. I ran git annex repair for some time. It looked like stuck. I stopped it, then tried git fsck. It ran well. I tried git annex fsck, it took all my RAM and swap. The process was eating 14 Giga bytes of memory. I tried git gc and the same memory problem occured. I ran git annex repair again and it has been running for 38 hours now. I am lost. Please help.
-
-    vincent@berlioz:~$ LANG=C apt-cache policy git-annex
-    git-annex:
-      Installed: 5.20141125
-      Candidate: 5.20141125
-      Package pin: 5.20141125
-      Version table:
-     *** 5.20141125 950
-            400 http://ftp.fr.debian.org/debian/ testing/main amd64 Packages
-             50 http://ftp.fr.debian.org/debian/ unstable/main amd64 Packages
-            100 /var/lib/dpkg/status
-         3.20120629 950
-            900 http://ftp.fr.debian.org/debian/ wheezy/main amd64 Packages
-
-    vincent@berlioz:~/photos2$ du -sh .
-    152G	.
-
-Info gathered from another client annex:
-
-    vincent@tigrou:/mnt/mars/images/photos2$ git annex info
-    repository mode: indirect
-    trusted repositories: 0
-    semitrusted repositories: 11
-        8<------------skipped repositories list------------->8
-    untrusted repositories: 1
-    	a357bb9e-7a9d-4112-b74c-13707e2c7f85 -- vincent@rhett:~/photos [gateway]
-    transfers in progress: none
-    available local disk space: 945.91 gigabytes (+1 megabyte reserved)
-    bad keys size: 368 bytes (clean up with git-annex unused)
-    local annex keys: 76070
-    local annex size: 383.91 gigabytes
-    annexed files in working tree: 59117
-    size of annexed files in working tree: 319.73 gigabytes
-    bloom filter size: 16 mebibytes (15.2% full)
-    backend usage: 
-            SHA256E: 101902
-            SHA256: 33285
diff --git a/doc/forum/repo_corruption_in_usb_external_drive.mdwn b/doc/forum/repo_corruption_in_usb_external_drive.mdwn
deleted file mode 100644
--- a/doc/forum/repo_corruption_in_usb_external_drive.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-I'm sorry to ask this again, but I'm not being able to find my previous message regarding this issue. I'm finding very hard to find older posts in forums. Is there a way to search for all my posted messages?
-Anyway, after some automount problems (changed mount point name), my usb repo (direct) ended in a weird state.
-See for instance the screenshot: <http://picpaste.com/git-annex-problem-eZvOl90y.jpg>
-
-In addition making a git-annex info gives the following:
-
- * repository mode: direct
- * trusted repositories: error: refs/heads/master does not point to a valid object!
- * error: refs/heads/synced/git-annex does not point to a valid object!
- * error: refs/heads/synced/master does not point to a valid object!
- * error: refs/remotes/sapo/annex/direct/master does not point to a valid object!
- * error: refs/remotes/sapo/git-annex does not point to a valid object!
- * error: refs/remotes/sapo/master does not point to a valid object!
- * error: refs/synced/1912d5a7-3929-47f0-8e25-a071d7079cc4/git-annex does not point to a valid object!
- * error: refs/synced/1912d5a7-3929-47f0-8e25-a071d7079cc4/master does not point to a valid object!
- * error: refs/heads/master does not point to a valid object!
- * error: refs/heads/synced/git-annex does not point to a valid object!
- * error: refs/heads/synced/master does not point to a valid object!
- * error: refs/remotes/sapo/annex/direct/master does not point to a valid object!
- * error: refs/remotes/sapo/git-annex does not point to a valid object!
- * error: refs/remotes/sapo/master does not point to a valid object!
- * error: refs/synced/1912d5a7-3929-47f0-8e25-a071d7079cc4/git-annex does not point to a valid object!
- * error: refs/synced/1912d5a7-3929-47f0-8e25-a071d7079cc4/master does not point to a valid object!
- * fatal: index file smaller than expected
- * git-annex: failed to read sha from git write-tree
-
-
-What should I do? delete the usb repo and start again. Thank god this is just a trial.
-
-What happens if a file gets corrupted. Lets say it is corrupted in repo A, and fine in repo B. Will the good copy be overridden?
-
-git-repair takes a long time and seems to be stuck there, or maybe it just takes a long time (10Gb repo). Is this normal?
-    > git-annex repair
-    Running git fsck ...
-    Initialized empty Git repository in /tmp/tmprepo.1/.git/
-    Trying to recover missing objects from remote sapo.
-    Unpacking all pack files.
-    Unpacking objects: 100% (348848/348848), done.
-
-
-Thanks in advance.
diff --git a/doc/forum/reserving_space_with_directory_special_remotes.mdwn b/doc/forum/reserving_space_with_directory_special_remotes.mdwn
deleted file mode 100644
--- a/doc/forum/reserving_space_with_directory_special_remotes.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Can diskreserve be done with directory special remotes?
-Where should such per directory remote setting be put?
diff --git a/doc/forum/retrieving_previous_versions.mdwn b/doc/forum/retrieving_previous_versions.mdwn
deleted file mode 100644
--- a/doc/forum/retrieving_previous_versions.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi,
-
-This might be a stupid question, but I did not find any information about it.
-Can I retrieve previous versions of a file?
-Let's say, I wanna do a "git annex get file", but considering a specific commit id. Is it possible? Are all the versions of the files kept inside .git/annex/objects?
-
-Thanks!
diff --git a/doc/forum/root_assistant__63__.mdwn b/doc/forum/root_assistant__63__.mdwn
deleted file mode 100644
--- a/doc/forum/root_assistant__63__.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-How safe (or not) is it to run the assistant as root?
-
-If not safe, what would be a good way to sync directories like /usr/local ?
diff --git a/doc/forum/rsync_asking_for_an_unknown_password.mdwn b/doc/forum/rsync_asking_for_an_unknown_password.mdwn
deleted file mode 100644
--- a/doc/forum/rsync_asking_for_an_unknown_password.mdwn
+++ /dev/null
@@ -1,60 +0,0 @@
-Hello,
-
-I am on OS X, using version 5.20140613.  I installed using brew.
-
-I have a really simple example where I'm trying to use local rsync to test transfer between two repos.  It keeps asking me for a password over and over.  I do not know what password it is.
-
-I'm literally doing just this:
-
-    $ cd annex-tests
-    $ mkdir target
-    $ mkdir source
-    $ cat > source/text
-    hi this is a test
-    $ cd source
-    $ git init
-    Initialized empty Git repository in /Users/me/Documents/annex-tests/source/.git/
-    $ git annex init
-    init  ok
-    (Recording state in git...)
-    $ git annex initremote rsync-login type=rsync rsyncurl=me@localhost:/Users/me/Documents/annex-tests/target encryption=none
-    initremote rsync-login ok
-    (Recording state in git...)
-    $ git annex describe rsync-login "test rsync url with a login"
-    describe rsync-login ok
-    (Recording state in git...)
-    $ git annex add text 
-    add text ok
-    (Recording state in git...)
-    $ git annex sync rsync-login --content
-    commit  ok
-    copy text copy text (checking rsync-login...) Password:
-    Password:
-    Password:
-    Password:
-    Password:
-
-I try a blank password, I try my login password, I tried 'none' (the encryption type), I try everything..  no dice
-
-So right off the bat let me explain a few things.
-
-1 -  Why not use rsa keys?  Because I was having the exact same problem and I wanted to make it even easier and use login/password
-
-2 -  Why not use the webapp since a few forum posts say you can set passwords in there?  because my annex doesn't seem to recognize the command.
-
-    $ git annex webapp
-    git-annex: unknown command webapp
-
-3 -  I verified my rsync command/url appears ok by doing the following.  The password for that command is as expected, it is my username password:
-
-    $ cat > test2
-    hi test
-    $ rsync test2 me@localhost:/Users/me/Documents/annex-tests/target
-    Password:
-    $ cat /Users/me/Documents/annex-tests/target/test2
-    hi test
-
-
-Any help will be appreciated!
-
-
diff --git a/doc/forum/rsync_over_ssh__63__.mdwn b/doc/forum/rsync_over_ssh__63__.mdwn
deleted file mode 100644
--- a/doc/forum/rsync_over_ssh__63__.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-[Walkthrough](http://git-annex.branchable.com/walkthrough/using_ssh_remotes/) says that when using ssh remotes rsync is used for transfering files. Is rsync used via ssh or unsecure?
--- Michael K.
diff --git a/doc/forum/rsync_protocol_mismatch_due_to_encfs_folder.mdwn b/doc/forum/rsync_protocol_mismatch_due_to_encfs_folder.mdwn
deleted file mode 100644
--- a/doc/forum/rsync_protocol_mismatch_due_to_encfs_folder.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-One of my repositories worked just fine for months, until I have decided to put an encfs folder within it. Encfs is encrypting folders and files, resulting in weird file and folder names. However, rsync just seems to fail.
-
-
-This has already been a topic here a few times, for example [1] and [2].
-
-Unfortunately, I have not been lucky enough to recover the situation by the hints given.
-
-
-What I did to investigate is that I have re-run one of the shell commands stuck client-side and appended --debug to gain a deeper look. This is the output:
-
-    $ /opt/git-annex/2016-01-14/exe/ssh --library-path /opt/git-annex/2016-01-14//etc/ld.so.conf.d:/opt/git-annex/2016-01-14//usr/lib/x86_64-linux-gnu/gconv:/opt/git-annex/2016-01-14//usr/lib/x86_64-linux-gnu/audit:/opt/git-annex/2016-01-14//usr/lib:/opt/git-annex/2016-01-14//usr/lib/x86_64-linux-gnu:/opt/git-annex/2016-01-14//lib64:/opt/git-annex/2016-01-14//lib/x86_64-linux-gnu: /opt/git-annex/2016-01-14/shimmed/ssh/ssh -S .git/annex/ssh/user@10.0.0.1 -o ControlMaster=auto -o ControlPersist=yes -T user@10.0.0.1 git-annex-shell 'recvkey' '/mnt/path/to/share/' 'SHA256E-s262670--e004c6e3f87ad2b5d74d206de85de5449c9f263d83e6ef1c87ffb03be8b7e725' --debug --uuid e34522e4-1dab-459c-b295-1fe41e7692e4 '--' 'remoteuuid=07820aec-e2a3-4c60-bd57-b39b7213e056' 'unlocked=1' 'direct=1' 'associatedfile=.encfs_folder/CMG23xCwkemocE-Gq9WHpO-n/1vqfTkJChNm5CgjBsZ--,9r,ZOcSBTxE-Ogz5ytA8R23st52LWf4d9MjRref56VhbEB/4ezakoEn8dqOT8s,K4X,ueSs' '--' dummy rsync --server -pe.Lsfx --log-format=X --inplace . .
-    [2016-03-16 22:52:18.922914] transfer start
-    [2016-03-16 22:52:18.949417] call: rsync ["--server","-t","--inplace","-e.Lsf",".","../../mnt/path/to/share/.git/annex/tmp/SHA256E-s262670--e004c6e3f87ad2b5d74d206de85de5449c9f263d83e6ef1c87ffb03be8b7e725"]
-    protocol version mismatch -- is your shell clean?
-    (see the rsync man page for an explanation)
-    rsync error: protocol incompatibility (code 2) at compat.c(176) [Receiver=3.1.1]
-    [2016-03-16 22:59:05.890987] process done ExitFailure 2
-    [2016-03-16 22:59:05.899506] transfer done
-
-What can I do other than to just move the encfs outside my repository, which is of course the least favorable option for me to do?
-
-[1] <http://git-annex.branchable.com/bugs/protocol_mismatch_after_interrupt/>
-
-[2] <http://git-annex.branchable.com/bugs/rsync__58___protocol_version_mismatch/>
diff --git a/doc/forum/rsync_regression_on_Windows.mdwn b/doc/forum/rsync_regression_on_Windows.mdwn
deleted file mode 100644
--- a/doc/forum/rsync_regression_on_Windows.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-I'm on Windows 7 and msysgit. The rsync that comes with the git-annex installer downloaded on January 19 2015 works fine (rsync version 3.0.9, protocol version 30; git annex version 5.20150113-gcf247cf). The rsync that comes with the current git-annex installer errors out (rsync version 3.1.1  protocol version 31; git annex v ersion 5.20150420-gb0ebb23). I don't think it's a version/protocol mismatch, as I get the error against a server with the same version and protocol.
-
-[[!format sh """
-$ rsync -rvvp anton@myhost:wtmp/ wtmp
-opening connection using: ssh -l anton myhost rsync --server --sender -vv
-pre.iLsfx . wtmp/  (10 args)
-rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
-rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
-
-$ ssh -l anton myhost rsync --version
-rsync  version 3.1.1  protocol version 31
-...
-
-"""]]
-
-Bug or user error?
diff --git a/doc/forum/rsyncing_.git__47__annex__47__objects.mdwn b/doc/forum/rsyncing_.git__47__annex__47__objects.mdwn
deleted file mode 100644
--- a/doc/forum/rsyncing_.git__47__annex__47__objects.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-In short: is it safe to rsync .git/annex/objects/ to other clones?
-
-I'm in the process of migrating a lot of my files to a new backend.  Most them
-still use the old non-file-size-tracking SHA1 backend from when WORM was the
-default.  I have multiple clones that each use about 460 GB of their 500 GB
-drives.
-
-I've noticed that git-annex creates hardlinks to migrated content in
-.git/annex/objects, so I'm able to migrate all content despite only having 40
-GB of free space.  Excellent.
-
-Now I'm planning to `rsync -a --hard-links .git/annex/objects/
-${CLONE}/.git/annex/objects/` to recreate the hardlinks and save space on the
-clones as well.  If I `fsck` afterwards, this should be fine, right?
-
-I've tried this with a test repository and it works but I'd like to be extra
-sure that I'm not missing something crucial.
-
-The alternatives that I'm aware of are:
-
- * making space first: `git annex dropunused "1-20000"` and `git annex get .`
- * running `git annex migrate` in each clone.
-
-I expect rsync to be safer and faster than these alternatives.
diff --git a/doc/forum/s3_bandwidth_limitations_and_next_release.mdwn b/doc/forum/s3_bandwidth_limitations_and_next_release.mdwn
deleted file mode 100644
--- a/doc/forum/s3_bandwidth_limitations_and_next_release.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Is there a way to set bandwidth limits for [[special_remotes/s3]]?
-
-From what i can see in the [[todo/credentials-less_access_to_s3]] patch, the `downloadUrl` function is used, does that mean that the `annex.web-download-command` is used? If that's the case, it's great because it means we can use the `--bwlimit` parameter in `wget` to limit transfers.
-
-But what about uploads? Are there limits there as well?
-
-I'll also abuse this forum to see if/when it will be possible to have a shiny new release to ship that amazing new feature? There seems to be sufficient stuff piled up in the unreleased changelog to warrant a release, no? :) --[[anarcat]]
diff --git a/doc/forum/s3_server_side_encryption.mdwn b/doc/forum/s3_server_side_encryption.mdwn
deleted file mode 100644
--- a/doc/forum/s3_server_side_encryption.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-AWS S3 offers a feature to enable server-side encryption of files.  
-If I understand correctly, this is enabled by sending a specific HTTP header with the request to upload the file in question.   
-So, this header needs to be set every time we want to upload a new file.  
-
-Is this feature already supported / being considered for future versions?
-
-If not, am I correct in assuming it would have to be implemented in https://github.com/joeyh/git-annex/blob/master/Remote/S3.hs ?
-
-Thank you
diff --git a/doc/forum/s3_vs_ssh_Performance_Problems.mdwn b/doc/forum/s3_vs_ssh_Performance_Problems.mdwn
deleted file mode 100644
--- a/doc/forum/s3_vs_ssh_Performance_Problems.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I backup/sync my music using annex. I used to have one repo with 3 clones, one full copy on my vps, one full copy and one partial copy on my laptops. I decided to move all data to s3. Declared my vps repo dead, purged history (I do not care about history for this particular repo) pushed the git repo to a different computer (bare repo no data) and data to s3 (gpg encrypted). I've just finished uploading all files (around 200gb) couple files failed during the initial upload so I did a `git annex copy --quiet --to mys3 --fast` this command used to take 15 20 secs on my laptop when sending data to vps using ssh but now it took 2 hours to complete (pushing mem usage to 90%).
-
-I have one other repo (1.5gb in size 42k files using indirect mode, data gpg encrypted on s3) using the same setup except this repos content has always been on s3  i had the same behavior on this repo too. adding a file and running a copy to push content to s3 took couple hours even if I add a single 1kb file. I used to blame my hard drive, damn thing is slow but now I think this is related to s3. is there any workaround for this?
-
-Both machines are using,
-
-    git-annex version: 4.20130913-gd20a4f2
-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP Feeds Quvi
diff --git a/doc/forum/safely_dropping_git-annex_history.mdwn b/doc/forum/safely_dropping_git-annex_history.mdwn
deleted file mode 100644
--- a/doc/forum/safely_dropping_git-annex_history.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-the git-annex branch of a repository i've had running since 2010 has grown to unmanagable dimensions (5gb in a fresh clone of the git-annex branch, while the master branch has merely 40mb, part of which is due to checked-in files), resulting in git-annex-merges to take in the order of magnitude of 15 minutes. getting an initial clone of the git-annex branch (not the data) takes hours alone in the "remote: Counting objects" phase (admittedly, the origin server is limited in ram, so it spends its time swapping the git process back and forth).
-
-is there a recommended way for how to reset the git-annex branch in a coordinated way? of course, this would have to happen on all copies of the repo at the same time.
-
-the workflow i currently imagine is
-
-* rename all copies of the repository (the_repo → the_repo-old, the_repo.git → the_repo-old.git)
-* clone the old origin repository to a new origin with --single-branch. (this would be *the* oportunity to ``git filter-branch --prune-empty --index-filter 'git rm --cached --ignore-unmatch .git-annex -r' master`` as well, to get rid of commits of pre-whatever versions)
-* ``git annex init`` on the master repository
-* clone it to all the other copies and ``git annex init`` there
-* set all the configuration options (untrusted repos etc) again
-* either
-  * ``git annex reinject`` the files that are already present on the respective machines, or
-  * move the .git/annex/objects files over from the original locations, and use ``git annex fsck`` to make git-annex discover which files it already has, if that works. (i have numcopies=2, thus i'd dare to move instead of copy even when trying this out the first time. complete copies, even of partially checked out clones, will exceed the capacities of most clients)
-
-my questions in that endeavor are:
-
-* is there already a standard workflow for this?
-* if not, will the above do the trick?
-* can anything be done to avoid such problems in future?
diff --git a/doc/forum/scalability_with_lots_of_files.mdwn b/doc/forum/scalability_with_lots_of_files.mdwn
deleted file mode 100644
--- a/doc/forum/scalability_with_lots_of_files.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-What is git-annex's [[scalability]] with large (10k+) number of files and a few (~10) repositories?
-
-I have had difficult times maintaining a music archive of around 20k files, spread around 17 repositories.
-
-`ncdu` tells me, of the actual files in the direct repository:
-
-<pre>
-$ ncdu --exclude .git
- Total disk usage: 109,3GiB  Apparent size: 109,3GiB  Items: 23771
-</pre>
-
-Now looking at the git-annex metadata:
-
-<pre>
-$ time git clone -b git-annex /srv/mp3
-Cloning into 'mp3'...
-done.
-Checking out files: 100% (31207/31207), done.
-0.69user 1.72system 0:04.65elapsed 51%CPU (0avgtext+0avgdata 47732maxresident)k
-40inputs+489552outputs (1major+2906minor)pagefaults 0swaps
-$ git branch
-  annex/direct/master
-* git-annex
-  master
-$ wc -l uuid.log
-7 uuid.log
-$ find -type f | wc
-  31429   62214 3013920
-$ du -sh .
-361M    .
-$ du -sch *  | tail -1
-243M    total
-</pre>
-
-So basically, it looks like the git-annex location tracking takes up around 243M, 361M if we include git's history of it (I assume). This means around 8KiB of storage per file, and 4KiB/file for history (git is doing a pretty good job here). (8KiB kind of makes sense here: one file for the tracking log (4KiB) and another directory to hold it (another 4KiB)...)
-
-Is that about right? Are there ways to compress that somehow? Could I at least drop the *history* of that from git without too much harm - that would already save 120MiB...
-
-That repository is around 18 months old.
-
-(It's interesting to notice the limitation of the "one file per record" storage format here: since git-annex has so many little files, and all of those take at least $blocksize (it seems like it's 4KB here), it takes up space pretty quickly. Another good point for git here: packing files together saves a *lot* of space! Could files be packed *before* being stored in the git-annex branch? or is that totally stupid. :)
-
-Thanks! --[[anarcat]]
diff --git a/doc/forum/schedule_repository___91__expression__93__.mdwn b/doc/forum/schedule_repository___91__expression__93__.mdwn
deleted file mode 100644
--- a/doc/forum/schedule_repository___91__expression__93__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-what sort of options can we use in the expression field? from the [git annex bible](http://git-annex.branchable.com/git-annex/) it suggests for incremental fscks, but I'm wondering if it can run shell scripts or `git annex importurl` lines too.
diff --git a/doc/forum/security_risk_presented_by_remote.log__63__.mdwn b/doc/forum/security_risk_presented_by_remote.log__63__.mdwn
deleted file mode 100644
--- a/doc/forum/security_risk_presented_by_remote.log__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I am curious if remote.log in the repository (or anything in the repository for that matter) gives someone access to the data stored in the special remotes.
-
-If I'm using an encrypted s3 special remote, and someone gets access to the entire repository, will they be able to decrypt things? Or is the gpg stuff stored completely separately and therefore completely unaccessable, even if someone got access to the entire contents of the git repository?
-
-What is the cipher and the cipherkeys stored in git show git-annex:remote.log?
diff --git a/doc/forum/seems_to_build_fine_on_haskell_platform_2011.mdwn b/doc/forum/seems_to_build_fine_on_haskell_platform_2011.mdwn
deleted file mode 100644
--- a/doc/forum/seems_to_build_fine_on_haskell_platform_2011.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-This is just a comment on git-annex building on haskell platform 2011.2.0.0 on archlinux. It just works.
diff --git a/doc/forum/shared_cipher_tries_to_use_gpg.mdwn b/doc/forum/shared_cipher_tries_to_use_gpg.mdwn
deleted file mode 100644
--- a/doc/forum/shared_cipher_tries_to_use_gpg.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I tried 
-
-    git annex initremote encsharedtest type=directory encryption=shared directory=/home/lee/gitannexplay
-
-and got errors:
-
-    initremote encsharedtest gpg: error reading key: public key not found
-
-Looks like it thinks "shared" should be the name of a key rather than an instruction to use the shared cipher.
-Am I doing something wrong?
diff --git a/doc/forum/some_symlinks_left_in_direct_mode.mdwn b/doc/forum/some_symlinks_left_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/some_symlinks_left_in_direct_mode.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Dear all,
-   I have a repository in direct mode which still has some symlinks pointing to .git/annex/objects. Is there a way to turn them back into regular files. I don't recall why this happen, I guess I started on indirect mode and after that I converted it to direct mode.
-Thanks in advance.
-Best regards,
-              Juan
diff --git a/doc/forum/something_really_good_happened_with_3.20130124.mdwn b/doc/forum/something_really_good_happened_with_3.20130124.mdwn
deleted file mode 100644
--- a/doc/forum/something_really_good_happened_with_3.20130124.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-The web app used to be unresponsive without manual refreshes.  Now it's all snappy and responsive and quickly reflects what the assistant is doing.
-
-It used to be a complete crapshoot whether the assistant actually shut down when you told it to (either on the command line or through the webapp).  I used to have to manually kill leftover assistants and child processes routinely.  Now... you want it gone, and it's gone instantly, every time.
-
-Something really good happened with this last version, thank you joey!
diff --git a/doc/forum/sparse_git_checkouts_with_annex.mdwn b/doc/forum/sparse_git_checkouts_with_annex.mdwn
deleted file mode 100644
--- a/doc/forum/sparse_git_checkouts_with_annex.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-I checked in my music collection into git annex (about 25000 files) and i'm really impressed by the performance of git annex (after i've done an git-repack). Now i'm also moving my movies into the same git-annex, but i have the following layout of my disk drives:
-
-* small raid-1 for important stuff (music, documents), which is also backupped (aka: raid)
-* big bulk data store (aka: media)
-
-In the git-annex the following layout of files is used:
-
-* documents/ <- on raid
-* music/ <- on raid
-* videos/ <- on media
-
-Now i didn't simply clone the raid-annex to media, but did an sparse-checkout (possible since version 1.7.0)
-
-* raid: .git-annex/, documents/ and music
-* media: .git-annex/, videos/
-
-As you can see i have to checkout the .git-annex directory with the file-logs twice which slows down git operations. Everything else works fine until now. git-annex doesn't have any problem, that only a part of the symlinks are present, which is really great. Is there a possibility to sparse checkout the .git-annex directory also? Perhaps splitting the log files in .git-annex/ into N subfolders, corresponding to the toplevel subfolders, like this?
-
-Before:
-
-     $ ls .git-annex
-     00 01 02....
-
-After:
-
-     $ ls .git-annex
-     documents/ music/ videos/
-     $ ls .git-annex/documents
-     00 01 02....
-
-This would make it possible to checkout only the part of the log files which i'm interested in.
diff --git a/doc/forum/special_remote_for_IMAP.mdwn b/doc/forum/special_remote_for_IMAP.mdwn
deleted file mode 100644
--- a/doc/forum/special_remote_for_IMAP.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-I have implemented a special remote that stores files as email messages on an imap server. You need   to install three utilities that the hooks invoke to deal with the email: mutt, imaputils, and         munpack. I use mutt to send the email with the file as a mime attachment; imaputils talks to the imap server to check for and retrieve the message containing the desired file; and munpack extracts and    decodes the attachment to get our file back.
-
-Several programs could be used in place of mutt, but the latter has a convenient command-line option  for attaching files; mutt is of course available in the repositories of most linux distributions.
-
-imaputils is a perl program available at http://sourceforge.net/projects/imaputils/
-It has several perl library dependencies that you might need to download using the cpan tool.
-What imaputils does for you is provide a command line tool for interacting with the mail server. You  can search for mail with a particular subject (for example), delete mail, retrieve messages, and in   general do anything that you can do with a mail client such as mutt, but from the command line rather than a curses interface. This allows you to in turn write scripts that talk to imap servers.
-
-munpack is part of the mpack package. This is included in the Ubuntu and Debian repositories, and can probably be easily obtained for most linuxes. munpack extracts and decodes mime attachments from the  command line.
-
-I define the special remote with
-
-    git annex initremote hogneygmail type=hook encryption=gitannex hooktype=hogneygmail
-
-The pgp key "gitannex" is a key established just for this purpose, that has no passphrase. This       allows me to use encryption transparently. You could also use encryption=shared if your version of    git-annex is recent enough. I also did
-
-    git annex untrust hogneygmail
-
-Here are the hooks:
-
-        hogneygmail-store-hook = mutt -n -s $ANNEX_KEY -a $ANNEX_FILE -- {email address} < /dev/null
-        hogneygmail-checkpresent-hook = "(imaputils.pl --conf {imap config file} --subject $ANNEX_KEY --count | grep -q \"1 messages\" -) && echo $ANNEX_KEY"
-        hogneygmail-retrieve-hook =  "imaputils.pl --conf {imap config file} --subject $ANNEX_KEY --display | munpack -fq && mv $ANNEX_KEY $ANNEX_FILE; rm $ANNEX_KEY.desc"
-        hogneygmail-remove-hook = "imaputils.pl --conf {imap config file} --subject $ANNEX_KEY --delete"
-
-The bits inside of the curly brackets, for example {email address}, are what you need to specialize   for your particular case (removing the brackets as well). The {imap config file} is a file that       contains some configuration for imaputils. In my case it contains
-
-    ssl
-    pass {password}
-    host {mail host}
-    user {mail username}
-    box  {name of mailbox to check}
-
-The first line tells imaputils to use ssl, and the third line is the address of the mail host. I      include my username and password so I won't need to type these in repeatedly. Of course this means    that you need to protect this file carefully.
-
-
-
-The operation of the hooks is pretty straightforward. The store-hook attaches the file to an          otherwise empty email message with a subject equal to the name of the key, and mails it off. Note     that if you use encryption then the keys generated by git-annex here will not be the same ones you    see on your local disc. The checkpresent-hook asks the imap server how many emails have the subject   equal to the key we are looking for; only if the reply contains "1 messages" are we sure the right    one is there. The retrieve-hook uses the "--display" option to imaputils to stream the message, pipes it to munpack to silently extract the attachment (which is our (encrypted) file), and moves the       result into the file contents. It then cleans up by deleting the .desc file that I can't prevent      munpack from leaving on the disk, even when the message is blank. The remove-hook passes the "--      delete" option to imaputils to supposedly delete the target message from the mail server.
-
-I've performed very limited testing of this, and my knowledge of git and, especially, git-annex is    very primitive, so I'm sure this could be vastly improved. In my testing with gmail this seems to     work fine, except that messages do not get deleted from the server - I don't know why.
-
-I've developed this as an experiment and proof of concept, and have no knowledge of whether actually  using this is in accord with the terms of service of gmail or any other mail service you might be     using, nor whether it is safe or a good idea.
-
--- Lee
diff --git a/doc/forum/special_remote_for_iPods.mdwn b/doc/forum/special_remote_for_iPods.mdwn
deleted file mode 100644
--- a/doc/forum/special_remote_for_iPods.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I know versions of this question have been asked before, but I'm looking for a different answer.
-
-I would like a braindead special remote that can be used with devices such as portable music players. No symbolic links, no hashing, no rewriting of the filenames. The remote can be untrusted, file identity can be checked with just the filename and maybe the size. The "directory" special remote with the WORM backend seems to come closest, but does too much. 
-
-Should I just try to roll it using hooks?
diff --git a/doc/forum/speed_up_assistant_startup_on_large_repositories.mdwn b/doc/forum/speed_up_assistant_startup_on_large_repositories.mdwn
deleted file mode 100644
--- a/doc/forum/speed_up_assistant_startup_on_large_repositories.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Starting the assistant on a repository with a huge amount of files (f.e. `annexed files in working tree: 22087`) takes a very long time. Is there a way to speed it up? F.e. just checking the file stamps and comparing them with the last assistant run time? Checking if the files are modified could be done with the regular repository check. Thoughts?
diff --git a/doc/forum/ssh_key_setup_woes_in_Android.mdwn b/doc/forum/ssh_key_setup_woes_in_Android.mdwn
deleted file mode 100644
--- a/doc/forum/ssh_key_setup_woes_in_Android.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I'm trying to set up a ssh remote on Android using the latest 5.20140421. For some
-reason the assistant fails to set up passwordless login on the remote server. It
-adds the required line in `.ssh/authorized_keys` on the server side, but it still
-keeps asking for the password for every connection. Nothing suspicious appears in
-the assistant's log. Also, if I set up a ssh remote on a different directory on the
-same server, a new key is generated and added to `authorized_keys`, but the passwordless
-login still doesn't work.
-
-I didn't file a bug since this would make for a very lousy bug report. How could I
-look more into what's causing this? Where should the generated keys reside on the
-Android filesystem?
-
-I think it would be useful for the assistant to check that the generated ssh keys are
-working properly, and inform the user and/or try to set them up again if there is a
-problem, instead of silently falling back to asking for the login password on the console.
diff --git a/doc/forum/ssh_password.mdwn b/doc/forum/ssh_password.mdwn
deleted file mode 100644
--- a/doc/forum/ssh_password.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Currently I have my netbook running git annex and a raspberry pi as a remote storage set up as a git repository.  I currently have it set up so that from the terminal i can just do 'ssh pi@mypi -p XXX -C' and it has the password saved.  Currently I'm having a problem that any time I add a file to my annex folder on my netbook I have to reenter my password for ssh-askpass for it to upload the file.  Once that file is uploaded, it looks to me like it closes the connection and then reopens it and asks for my password again.
-
-I'm looking in ~/.ssh/ and I'm sure that something there needs to be edited or copied, I'm not really sure what though.  Any suggestions?
diff --git a/doc/forum/ssh_password/comment_1_a3e5a41e1d4da683d577976b134b11ee._comment b/doc/forum/ssh_password/comment_1_a3e5a41e1d4da683d577976b134b11ee._comment
deleted file mode 100644
--- a/doc/forum/ssh_password/comment_1_a3e5a41e1d4da683d577976b134b11ee._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://a-or-b.myopenid.com/"
- ip="203.45.2.230"
- subject="comment 1"
- date="2013-05-30T00:08:52Z"
- content="""
-It sounds like you don't have the ssh-agent set up properly in your environment.
-
-Try starting the git annex agent from the command line and see if that helps.  If it works then it is a problem with environment variables.
-"""]]
diff --git a/doc/forum/ssh_password/comment_2_fa261676a99d49d4b237b0d43048d76d._comment b/doc/forum/ssh_password/comment_2_fa261676a99d49d4b237b0d43048d76d._comment
deleted file mode 100644
--- a/doc/forum/ssh_password/comment_2_fa261676a99d49d4b237b0d43048d76d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 2"
- date="2013-05-30T15:49:27Z"
- content="""
-If you set this repository up using the git-annex webapp, and choosing \"remote ssh server\", it will generate a new ssh key, stored in `~/.ssh/git-annex/`, and it will configure `~/.ssh/config` to use this key for a special made-up hostname which is used in the url for the git remote. On the server, it will set up `~/.ssh/authorized_keys` to allow this ssh key to connect without a password and run git-annex-shell.
-
-I don't know if you used the webapp to set this up. If not, you can try to replicate this setup on your own. If you did and it's not working, you now know where all the peices it sets up are, to figure out what went wrong.
-"""]]
diff --git a/doc/forum/ssh_vs_cifs__47__webdav.mdwn b/doc/forum/ssh_vs_cifs__47__webdav.mdwn
deleted file mode 100644
--- a/doc/forum/ssh_vs_cifs__47__webdav.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hello,
-
-I'm new to git-annex and I would like to know which is the best method to deploy it for my case. I would like to have a central repo in my Synology NAS but with files to be able to browse files (not a bare repo). This repo will not have remotes configured. The mobile clients will use the central repo to exchange files. I thinks that this setup is totally valid x-D. Now my question is more related to how to share the repo in the Synology NAS. I am considering to use cifs/webdav for LAN/WAN access to the repo or SSH for LAN/WAN access. Which is the recommended setup? Which is the most optimum setup in terms of bandwidth or cpu usage (the CPU of my synology NAS is ARM). Thanks in advance and for this great piece of software!
-
-Best regards,
-
-Christian
diff --git a/doc/forum/start_assistant_from_command_line.mdwn b/doc/forum/start_assistant_from_command_line.mdwn
deleted file mode 100644
--- a/doc/forum/start_assistant_from_command_line.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I wanted to try out this probably great piece of software you wrote, alas I do not use a Debian distro with managed software menus (i.e. I use OpenBox), so I cannot simply open the assistant through my programs-menu. In fact, to do that I'd need the command to start the assistant so I can add it manually myself. Sadly, the man page did not gave me any advices... :(
-
-Any chance to give me the terminal command to start the assistant?
-
-***
-edit: just to update the thread: everythings okay now. Thanks for this great program!
-
-the commands (as posted by Paul):
-
-    git annex assistant
-    git annex webapp
diff --git a/doc/forum/store_annex_in_different_place_on_hard_drive.mdwn b/doc/forum/store_annex_in_different_place_on_hard_drive.mdwn
deleted file mode 100644
--- a/doc/forum/store_annex_in_different_place_on_hard_drive.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-I have the following setup on my work computer. The /home folder has limited space, but excellent backups, so I would like to keep my main repository there.
-The /scratch/ folder has no backup, but has faster read/write speed, and more storage space. Is there a way to keep the main repo in /home, but somehow store the large annexed files on /scratch. I am open to making a remote repository, but the standard "git annex get" workflow will simply copy large files into the /home directory, which is what i want to avoid altogther. Can I just make a symlink from "/home/<username>/repo/.git/annex" to "/scratch/repodata" somehow? Thanks!
diff --git a/doc/forum/switching_backends.mdwn b/doc/forum/switching_backends.mdwn
deleted file mode 100644
--- a/doc/forum/switching_backends.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-so git annex migrate can switch a file from using one backend to the other.
-
-I've done that with a bunch of files.
-
-The old files should become "unused" right?  But they don't seem to be.  "git annex unused" still shows me only 2 unused files, and I've just migrated dozens of files from SHA256 to SHA256E.  
-
-Is it possible they're still "used" by other repos?  I have two other repos, one reached by SSH and one on a USB drive.  Neither one of them is "bare."  So maybe those files are still used by the "master" branches there, I thought... I went over and did "git annex sync" on each.  Still my newly migrated files are not showing up as "unused."  
-
-I'm worried that my repo is going to bloat with unused files with the SHA256 backend, which mysteriously do not show up as "unused" in git annex unused, if I migrate any more.
-
-any ideas what piece of the puzzle I could be missing here?
-
diff --git a/doc/forum/switching_to__47__from_direct_mode_while_assistant_is_running.mdwn b/doc/forum/switching_to__47__from_direct_mode_while_assistant_is_running.mdwn
deleted file mode 100644
--- a/doc/forum/switching_to__47__from_direct_mode_while_assistant_is_running.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Is that really unsafe?  Because I did that and the switch to direct mode seemed to leave a lot of files still as links, and when I panicked and switched back to indirect mode, a whole lot of stuff seemed to have become unannexed and I reannexed it.
-
diff --git a/doc/forum/sync_between_indirect_and_direct_mode.mdwn b/doc/forum/sync_between_indirect_and_direct_mode.mdwn
deleted file mode 100644
--- a/doc/forum/sync_between_indirect_and_direct_mode.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-I have a music repository(direct mode) in my Nexus 5 which I want to sync with remote repository(indirect mode).
-
-When I run 'git annex sync --content', it did not sync the content but when I changed remote repository to direct mode, content got synced.
-
-Do I need to set some configuration ?
-Is it possible to sync content between direct and indirect mode repositories ?
diff --git a/doc/forum/sync_stages_deletions_on_remote.mdwn b/doc/forum/sync_stages_deletions_on_remote.mdwn
deleted file mode 100644
--- a/doc/forum/sync_stages_deletions_on_remote.mdwn
+++ /dev/null
@@ -1,72 +0,0 @@
-I'm having an issue with 2 repos: one on my laptop, the other on my NAS. Both are in indirect mode, running Arch Linux, and have the latest Git version. Laptop has git-annex 5.20140411-gda795e0, NAS has 5.20140319-g9aa31b7 (from prebuilt tarballs).
-
-The issue is quite simple. When I `git-annex add` new files on my laptop, commit them, and then `git-annex sync` them, they show up as staged for deletion on my NAS.
-
-    laptop $ git annex add some-file
-    laptop $ git commit -m "Add some-file"
-    laptop $ git annex sync
-    commit  ok
-    pull ds413j 
-    ok
-    push ds413j 
-    Counting objects: 133, done.
-    Delta compression using up to 8 threads.
-    Compressing objects: 100% (78/78), done.
-    Writing objects: 100% (80/80), 10.64 KiB | 0 bytes/s, done.
-    Total 80 (delta 12), reused 0 (delta 0)
-    To ssh://**/**
-       1dcd188..8ef4249  git-annex -> synced/git-annex
-       c0f45a6..21711d6  master -> synced/master
-    ok
-    laptop $ ssh $NAS
-    nas $ git status
-    On branch master
-    Changes to be committed:
-      (use "git reset HEAD <file>..." to unstage)
-
-            deleted:    some-file
-
-    nas $
-
-If I run `git annex sync` on the NAS, it will create a new commit that deletes that file. So I have to play with `git reset`/`git checkout` by hand to make sure that the new file won't be deleted.
-
-I'm not sure when this started, but I think it was after I did some stupid mistake (`git checkout -B master synced/master`, kill a `git annex sync` with Ctrl+C, or something else that even resulted in my non-bare repo to have "bare=true" in .git/config...). And I haven't yet been able to fix this.
-
-Any idea what can have caused this, how to fix it, and how to prevent it from happening again in the future?
-
-.git/config on NAS:
-
-    [core]
-            repositoryformatversion = 0
-            filemode = true
-            logallrefupdates = true
-    [annex]
-            uuid = d54ae60a-1f59-403c-923f-32ea3bf2d00f
-            version = 5
-            diskreserve = 1 megabyte
-            autoupgrade = ask
-            debug = false
-
-.git/config on laptop:
-
-    [core]
-            repositoryformatversion = 0
-            filemode = true
-            bare = false
-            logallrefupdates = true
-    [branch "master"]
-    [annex]
-            uuid = f20cb506-945d-4c78-af1a-0aa884bb899b
-            version = 5
-            diskreserve = 20 gigabytes
-            autoupgrade = ask
-            debug = false
-            expireunused = 7d
-            genmetadata = true
-    [push]
-            default = matching
-    [remote "ds413j"]
-            url = ssh://**/**
-            fetch = +refs/heads/*:refs/remotes/ds413j/*
-            annex-uuid = d54ae60a-1f59-403c-923f-32ea3bf2d00f
-            annex-sync = true
diff --git a/doc/forum/syncing_home_directories.mdwn b/doc/forum/syncing_home_directories.mdwn
deleted file mode 100644
--- a/doc/forum/syncing_home_directories.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi,
-
-I synchronize home directories on a couple of machines using unison.  Is there a recommended way to do the equivalent using git-annex? 
-
-Thanks,
-
-John
diff --git a/doc/forum/syncing_music_to_my_android_device.mdwn b/doc/forum/syncing_music_to_my_android_device.mdwn
deleted file mode 100644
--- a/doc/forum/syncing_music_to_my_android_device.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Hi!
-
-So I am not sure how to deal with this issue right now. I have described in [[bugs/direct_cripple_mode_crippled_my_other_non-crippled_repos/]] how it takes a long time to replicate my `mp3` repository to another, crippled, filesystem (namely, FAT32). I am not sure what is going on there, but is seems difficult to setup an external device with only a subset of my music *and* keeping a proper directory structure in place.
-
-When I `git clone` the git-annex repository onto the device, it fails because it (apparently?) transfers all the files and runs out of space. I have also tried to `git init; git annex init; git remote add [...] ; git annex sync` with similar failure modes. All those tests take a long time and I would prefer avoiding to have to reproduce those again, but I will if necessary. :) There is over 20 000 files in the git-annex repository, and about 115GB of data in there. `.git` is about 130MB on a fresh clone on a non-crippled filesystem.
-
-Basically, my workaround so far has been to use a bare repository on the device: it works fairly well! I can transfer files to it with `git annex copy --to` and the clone is actually much faster. 
-
-This was working well on my Nokia N900 device, as the music player was fairly smart and could figure out that similar album tags belonged together. It did have trouble finding all the files (as it does a inotify on all the directories it finds, which obviously runs out of ram on that bit git-annex), but after a few restarts it worked.
-
-On this new Android 5.1 device (Cyanogenmod 12.1, to be more accurate), things don't go so well. The music player finds all the files much faster, but unfortunately, each song is put in a separate album, because they are all in different directories (because this is a bare repository).
-
-This is an issue that a [[todo/dumb__44___unsafe__44___human-readable_backend/]] would solve, but since that approach doesn't seem feasible right now, I am wondering how I can manage to deploy that repository more reliably.
-
-This is also similar to [[forum/usability__58___creating_an_archive_on_a_new_external_drive/]].
-
-Thanks for any advice! -- [[anarcat]]
diff --git a/doc/forum/syncing_non-git_trees_with_git-annex.mdwn b/doc/forum/syncing_non-git_trees_with_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/syncing_non-git_trees_with_git-annex.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-I have a bunch of directory trees with large data files scattered over various computers and disk drives - they contain photos, videos, music, and so on.  In many cases I initially copied one of these trees from one machine to another just as a cheap and dirty backup, and then made small modifications to both trees in ways I no longer remember. For example, I returned from a trip with a bunch of new photos, and then might have rotated some of them 90 degrees on one machine, and edited or renamed them on another.
-
-What I want to do now is use git-annex as a way of initially synchronising the trees, and then fully managing them on an ongoing basis.  Note that the trees are *not* yet git repositories.  In order to be able to detect straight-forward file renames, I believe that [[the SHA1 backend|tips/using_the_SHA1_backend]] probably makes the most sense.
-
-I've been playing around and arrived at the following setup procedure.  For the sake of discussion, I assume that we have two trees `a` and `b` which live in the same directory referred to by `$td`, and that all large files end with the `.avi` suffix.
-
-     # Setup git in 'a'.
-     cd $td/a
-     git init
-
-     # Setup git-annex in 'a'.
-     echo '* annex.backend=SHA1' > .gitattributes
-     git add .gitattributes
-     git commit -m'use SHA1 backend'
-     git annex init
-
-     # Annex all large files.
-     find -name \*.avi | xargs git annex add
-     git add .
-     git commit -m'Initial import'
-
-     # Setup git in 'b'.
-     cd $td/b
-     git clone -n $td/a new
-     mv new/.git .
-     rmdir new
-     git reset # reset git index to b's wd - hangover from cloning from 'a'
-
-     # Setup git-annex in 'b'.
-     # This merges a's (origin's) git-annex branch into the local git-annex branch.
-     git annex init
-
-     # Annex all large files - because we're using SHA1 backend, some
-     # should hash to the same keys as in 'a'.
-     find -name \*.avi | xargs git annex add
-     git add .
-     git commit -m'Changes in b tree'
-
-     git remote add a $td/a
-
-     # Now pull changes in 'b' back to 'a'.
-     cd $td/a
-     git remote add b $td/b
-     git pull b master
-
-This seems to work, but have I missed anything?
diff --git a/doc/forum/taskwarrior.mdwn b/doc/forum/taskwarrior.mdwn
deleted file mode 100644
--- a/doc/forum/taskwarrior.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I try to sync my taskWarrior files .task/*.data with git-annex ... but there is two problem :
-
-- i need to chmod 755 my files because taskWarrior doesn't recognize them, or say "problem with permission" 
-
-- taskwarrior seems crazy with symbolic link used by git-annex, undo not work, task appear multiple times , etc.
-
-Is there any solution ?
-Any user experienced the same problem?
-
-Thanks
-Sr.
diff --git a/doc/forum/taskwarrior/comment_1_1c3a29e7d292cb602d9d349f8009b51e._comment b/doc/forum/taskwarrior/comment_1_1c3a29e7d292cb602d9d349f8009b51e._comment
deleted file mode 100644
--- a/doc/forum/taskwarrior/comment_1_1c3a29e7d292cb602d9d349f8009b51e._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U"
- nickname="Richard"
- subject="comment 1"
- date="2013-08-06T12:44:11Z"
- content="""
-* You could try metastore (not merge friendly), git-cache-meta (pretty minimal) or metamonger (not done yet) to sync your file permissions
-* Look into direct mode to avoid symlinks
-* Alternatively, check your taskwarrior files into git, not git-annex, to avoid symlinks
-"""]]
diff --git a/doc/forum/taskwarrior/comment_2_4b3d70501763f6d36c927ae37bbd33c2._comment b/doc/forum/taskwarrior/comment_2_4b3d70501763f6d36c927ae37bbd33c2._comment
deleted file mode 100644
--- a/doc/forum/taskwarrior/comment_2_4b3d70501763f6d36c927ae37bbd33c2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/FHnTlSBo1eCGJRwueeKeB6.RCaPbGMPr5jxx8A--#ce0d8"
- nickname="Hamza"
- subject="comment 2"
- date="2014-04-14T15:27:48Z"
- content="""
-Using direct mode would replace symlinks with actual files.
-"""]]
diff --git a/doc/forum/telehash_syncing.mdwn b/doc/forum/telehash_syncing.mdwn
deleted file mode 100644
--- a/doc/forum/telehash_syncing.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hi
-
-I have read some info about telehash. It looks verry promising. I was wondering though how syncing will work. For example. I have 2 computers. Normal PC and a laptop. Mostly only one is on at a time. 
-
-* Sync messages will be sent over telehash protocoll ?
-* What if I push some changes (they will be synced to a shared repository) and laptop is not online. How will git-annex know what to sync from a shared repository ?
-* Do you plan to send files/commits directly to online clients ? If 2 friends are online at the same time.
-* What will happen with data on a shared repository if all clients have synced content ? Will it be deleted since it is not longer needed ?
-
-I was thinking of a model where you sync directly (if possible), and just drop shared content to repo for offline users. Whan everyone have pulled content it may be removed from shared repo.
diff --git a/doc/forum/tell_us_how_you__39__re_using_git-annex.mdwn b/doc/forum/tell_us_how_you__39__re_using_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/tell_us_how_you__39__re_using_git-annex.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Tell your git-annex stories here. Feel free to give as little or as much detail
-as appropriate about how you're using it. How's it working out for you?
-
-See [[testimonials]] for some other stories.
-
-[[!meta author=Joey]]
diff --git a/doc/forum/test_whether_a_file_is_already_annexed.mdwn b/doc/forum/test_whether_a_file_is_already_annexed.mdwn
deleted file mode 100644
--- a/doc/forum/test_whether_a_file_is_already_annexed.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I am storing the pictures I took over the years with git-annex. Frequently I come across messy old directories with lots of pictures inside and I want to know which ones were already annexed - or which ones were not. Is there a quick way to test whether the content of a given file is already annexed? I mean computing the key (hash) of the given file and testing whether it is already present among the annex objects.
diff --git a/doc/forum/time_profiling_the_assistant.mdwn b/doc/forum/time_profiling_the_assistant.mdwn
deleted file mode 100644
--- a/doc/forum/time_profiling_the_assistant.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-From the repo (commit ecc548) I built git-annex with stack issuing this command:
-
-    stack install --executable-profiling --library-profiling --ghc-options="-rtsopts -auto-all"
-
-then I run the output executable with +RTS -p like
-
-    git-annex version +RTS -p
-
-and obtain the corresponding git-annex.prof with the time profile.
-
-What I am unable to do is to get a time profile of the assistant: if I kill it the git-annex.prof file is empty, same happens if I stop the assistant with
-
-    git-annex assistant --stop
-
-So... is there another way to time-profile a git-annex command? Am I missing something in this procedure?
-
-Any advice is welcome :)
-
--- zarel
diff --git a/doc/forum/tips__58___special__95__remotes__47__hook_with_tahoe-lafs.mdwn b/doc/forum/tips__58___special__95__remotes__47__hook_with_tahoe-lafs.mdwn
deleted file mode 100644
--- a/doc/forum/tips__58___special__95__remotes__47__hook_with_tahoe-lafs.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-This is work in progress, since there is now a [[special_remotes/hook]] for users to plug in whatever they want as a remote, here's my recipe for using tahoe-lafs as a remote, this is a copy and paste the relavent section from my .git/config file
-
-        tahoe-store-hook = tahoe put $ANNEX_FILE tahoe:$ANNEX_KEY
-        tahoe-retrieve-hook = tahoe get tahoe:$ANNEX_KEY $ANNEX_FILE
-        tahoe-remove-hook = tahoe rm tahoe:$ANNEX_KEY
-        tahoe-checkpresent-hook = tahoe ls tahoe:$ANNEX_KEY 2>&1 || echo FAIL
-
-Where `tahoe:` is a tahoe-lafs alias, ideally you should create a new alias (DIR-CAP or whatever the terminolgy is) to store your files, I just used the default `tahoe:` alias for testing.
-
-The only quirk I've noticed is this...
-
-<pre>
-$ git annex whereis .
-whereis frink.jar (2 copies) 
-  	084603a8-7243-11e0-b1f5-83102bcd7953  -- here (testtest)
-   	1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a
-ok
-</pre>
-
-1d1bc312-7243-11e0-a9ce-5f10c0ce9b0a is my [[!google tahoe-lafs]] remote, but there is no label/description on it. The checkpresent-hook was a little confusing when I was setting it up, I'm currently unsure if I am doing the right thing or not with my hook. My get and put commands are a little verbose for now, i might redirect it to /dev/null once I am happier with the overall performance/behaviour my setup.
-
-Other than the quirks above, I am able to put and get files from my tahoe-lafs remote. The only thing that I have not figured out is how to "remove a file" on the remote to free up space on the remote.
diff --git a/doc/forum/trusted_repositories__58___fatal__58___not_a_git_repo.mdwn b/doc/forum/trusted_repositories__58___fatal__58___not_a_git_repo.mdwn
deleted file mode 100644
--- a/doc/forum/trusted_repositories__58___fatal__58___not_a_git_repo.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-When issuing a `git annex info`, I get:
-
-~~~
-$ git-annex info
-repository mode: indirect
-trusted repositories: fatal: Not a git repository: '/home/micas/Music/.git' fatal: Not a git repository: '/home/micas/Music/.git' 0
-semitrusted repositories: 3
-	00000000-0000-0000-0000-000000000001 -- web
- 	85f8a5ea-6278-11e2-9978-ebb59e8f37a2 -- here (Music annex backup)
- 	9aff38f2-6447-11e2-8c89-ef50e6c0ea6c -- backupone (Music annex backupone)
-untrusted repositories: 0
-transfers in progress: none
-available local disk space: 174.28 gigabytes (+1 megabyte reserved)
-local annex keys: 5348
-local annex size: 25.62 gigabytes
-annexed files in working tree: 5374
-size of annexed files in working tree: 25.68 gigabytes
-bloom filter size: 16 mebibytes (1.1% full)
-backend usage: 
-	SHA256: 10692
-	SHA256E: 30
-~~~
-
-The troubling part (I think) is `trusted repositories: fatal: Not a git repository: '/home/micas/Music/.git' fatal: Not a git repository: '/home/micas/Music/.git' 0`
-
-Is there a command I can use to show all the uuid of known remotes? I thought I had marked all remotes pointing to /home/micas/Music/.git as `dead`
-
-Is there another reason for the output? How can I get trusted repos back to 0?
-
-**EDIT:**
-
-I removed the folder (was not a git repo at the time of the error) `/home/micas/Music` and the error went away.
diff --git a/doc/forum/two_lines_back_to_remote__63__.mdwn b/doc/forum/two_lines_back_to_remote__63__.mdwn
deleted file mode 100644
--- a/doc/forum/two_lines_back_to_remote__63__.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-`git annex map` generates a diagram roughly like this:
-
-    +------+    +-------+
-    |laptop| -> |usbdisk|
-    |      | <- |       |
-    |      | <- |       |
-    +------+    +-------+
-
-Why are there *two* lines back from the disk to the laptop?
-
diff --git a/doc/forum/ui.mdwn b/doc/forum/ui.mdwn
deleted file mode 100644
--- a/doc/forum/ui.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I just briefly tried git-annex. It's an interesting concept.
-
-My main frustration so far: I find it difficult to visualise and use the annex. Shell script contortions can obviously show you anything, but I don't have the ready knowledge to compose them. It would be nice to have some more user-friendly commands or even a GUI.
-
-'annex whereis' is fine for one file, but unweildly for many (e.g. a directory whose contents are always together, never divided between repositories). Is it possible to treat a given directory and all its contents as a single object?
-
-It is not clear what files are immediately available. Sometimes you don't care about annexed files that aren't stored in the current repository. Might it be nice to temporarily remove or hide symlinks for files that are not here right now? Then you could treat the repository more like a normal file heirarchy. Or how about something like 'git annex ls' to show only currently available files?
-
-assistant and sharebox fs sound like great basic synch options, but it would be really cool to have a fuse fs somewhere between raw git-annex and assistant. Putting a file in the directory would trigger git-annex to add it and sync. rm <file> on that new file would not work by default because it's the only copy. rm --annex to get rid of the file from all repos. mv/cp <file> <remote> to transfer between repos. ls to show only the files that are here now, ls --annex to display complete information in a clear way (well-formatted, colorized). Something like that.
-
-This has just been a random brain dump from a new user, hopefully it made some sense.
diff --git a/doc/forum/ui/comment_1_f3e3446b05d6b573e29e6cad300fb635._comment b/doc/forum/ui/comment_1_f3e3446b05d6b573e29e6cad300fb635._comment
deleted file mode 100644
--- a/doc/forum/ui/comment_1_f3e3446b05d6b573e29e6cad300fb635._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.140"
- subject="comment 1"
- date="2013-07-20T19:51:19Z"
- content="""
-It's pretty easy to configure ls to show broken symlinks in a different color. Run dircolors, and alias ls='ls --color==auto'. Then you can see which files are not there at a glance.
-
-The Linux file manager's I've tried (nautilus and thunar) also shows which files are present; you get a X on the icon of annexed files that are not present.
-"""]]
diff --git a/doc/forum/ui/comment_2_b493ee97eb2378e72c12f3d137109580._comment b/doc/forum/ui/comment_2_b493ee97eb2378e72c12f3d137109580._comment
deleted file mode 100644
--- a/doc/forum/ui/comment_2_b493ee97eb2378e72c12f3d137109580._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="http://mylesenglish.myopenid.com/"
- ip="217.39.94.195"
- subject="comment 2"
- date="2013-09-16T19:21:31Z"
- content="""
-This shell function behaves more like ls and shows the files that are present:
-
-    ga-ls () {
-      CWD=`pwd`
-      cd ${1:-.} && git annex find | cut -d / -f 1 | uniq
-      cd ${CWD}
-    }
-
-"""]]
diff --git a/doc/forum/unable_to_clone_annex_repo_in_windows.mdwn b/doc/forum/unable_to_clone_annex_repo_in_windows.mdwn
deleted file mode 100644
--- a/doc/forum/unable_to_clone_annex_repo_in_windows.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-Dear all,
-        I successfuly cloned my annex repo (hosted on gitlab.com) on my windows box (win 7, 64bits), and my data is on an exFat partition. 
-git annex version is 
-----------------
-git-annex version: 6.20160126-g2336107
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload) WebDAV ConcurrentOutput TorrentParser Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
--------------
-However, when I try to initialize annex on the newly cloned repo fails with the following error:
-
-$ git annex init "repo_win"
-init repo_win
-  Detected a filesystem without fifo support.
-
-  Disabling ssh connection caching.
-
-  Detected a crippled filesystem.
-
-  Enabling direct mode.
-
-git-annex: .git\annex\objects\c89\57a\SHA256E-s1339658--e7cfebb4ac9c81a6a060506c537b55aed9f13bd02d861d2b341fb8a79ad6e046.png\: openTempFile: does not exist (No such file or directory)
-failed
-git-annex: init: 1 failed
-
-any hints about this?
-Thanks in advance.
-Best regards,
-             Juan
diff --git a/doc/forum/unannex_alternatives.mdwn b/doc/forum/unannex_alternatives.mdwn
deleted file mode 100644
--- a/doc/forum/unannex_alternatives.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-what is the work flow to get a file that is in git-annex out of there and into git? (current situation: `git-annex add`ed a bunch of pictures, later found make files in there which i'd rather have in git for proper source code control)
-
-the most intuitive thing to do is `git unannex`, which at first seemed to do the right thing, but when committing there came the hook and everything was back to where it was before.
-
-i could disable the hook as a workaround, but that doesn't smell like a good work flow.
-
-the [[man page|git-annex]] does warn that `unannex` is only supposed to be used against unintentional `git annex add`s (probably meaning that it should be used before something is committed), but the alternatives it suggests (`git rm` and `git annex drop`) don't to what i want to do.
-
-am i missing something or is there really no work flow for this? --[[chrysn]]
diff --git a/doc/forum/unknown_response_from_git_cat-file.mdwn b/doc/forum/unknown_response_from_git_cat-file.mdwn
deleted file mode 100644
--- a/doc/forum/unknown_response_from_git_cat-file.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-when running git annex add in my direct mode repository, since a few days ago I only get:
-
-$ git annex add
-git-annex: unknown response from git cat-file (":./Archiv/Someone missing",:./Archiv/Someone Like You Cover-fCvjvEGkTu4.flv)
-
-The :./Archiv/Someone missing part strikes me odd because it so much looks like broken shell meta-character escaping in git-annex, but I doubt that because it stopped working just suddenly.
diff --git a/doc/forum/unlock__47__lock_always_gets_me.mdwn b/doc/forum/unlock__47__lock_always_gets_me.mdwn
deleted file mode 100644
--- a/doc/forum/unlock__47__lock_always_gets_me.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Several times now I've done something like:
-
-    $ git annex unlock movie.avi
-    $ mv /tmp/fixed.avi movie.avi
-    $ git annex lock movie.avi
-
-Oops, I just lost my fixed.avi!  That really feels like the right sequence of operations to me, so I'm always surprised when I make that mistake.  I would like to see the current `lock` renamed to something like `undo-unlock`, or have the behavior changed to be the same as `add`, or maybe warn and require a `--force` when the file has been changed.
-
-If changing current behavior is undesirable, maybe `unlock` could just print a reminder that `git annex add` is the correct next step after making changes?
-
-Failing that, I suppose I could slowly start to learn from my mistakes.
diff --git a/doc/forum/unrelated_repositories_sync.mdwn b/doc/forum/unrelated_repositories_sync.mdwn
deleted file mode 100644
--- a/doc/forum/unrelated_repositories_sync.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-I have no idea how to search for this here, so I'll just go the "lazy web" approach and just ask.
-
-Say I have two "conference" repos. One is the famous [conference procedings](https://github.com/RichiH/conference_proceedings) repo, and another one is a totally unrelated repo of local conferences that are not of world-wide significance. Let's call this second repo `presentations`.
-
-I would like to have my videos of both repos in a single repo.
-
-Can I add the `conference procedings` repo as a git remote to the `presentations` repo and have it do the right thing?
-
-In fact, I'm not even sure what the right thing would be here, I guess that's the first thing I would like to clear up. But I would like to do things like what the new [[metadata]] system does. For example, I would have only the "Debian" directory from `conference procedings` in my `presentations` repo.
-
-How would that work? Would I need to do some [subtree merging](http://git-scm.com/book/ch6-7.html) magic? or `git subtree`? or submodules? or should i just use myrepos and pretend I never brought up this idea?
-
-thanks! -- [[anarcat]]
-
-related: [[tips/migrating_two_seperate_disconnected_directories_to_git_annex/]] - but that creates a merged repo...
diff --git a/doc/forum/unsynced_folder.mdwn b/doc/forum/unsynced_folder.mdwn
deleted file mode 100644
--- a/doc/forum/unsynced_folder.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-If I have an archive with a lot of big files, is it possible to get one of them without using the command line, and without it popping up on other clients of that repository?
-Is it possible to have a folder that will not be synced with other clients but will still download the file when i copy it from archive?
-.gitignore probably wont work because that will not get the file from archive.
diff --git a/doc/forum/update_via_cabal_fails.mdwn b/doc/forum/update_via_cabal_fails.mdwn
deleted file mode 100644
--- a/doc/forum/update_via_cabal_fails.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-I tried to update git-annex via cabal. It fails due to lens not installing:
-
-    juh@sokrates:~$ cabal update
-    Downloading the latest package list from hackage.haskell.org
-    juh@sokrates:~$ cabal install git-annex
-    Resolving dependencies...
-    In order, the following will be installed:
-    lens-4.2 (new version)
-    DAV-0.6.2 (reinstall) changes: http-client-0.3.1.1 -> 0.3.3.1,
-    http-client-tls-0.2.1.1 added, http-types-0.8.4 -> 0.8.5, lens-4.1.2 ->     4.2,
-    network-2.4.1.2 added, optparse-applicative-0.7.0.2 added, xml-    conduit-1.2.0.1
-    -> 1.2.0.2, xml-hamlet-0.4.0.8 added
-    git-annex-5.20140707 (new package)
-    Warning: Note that reinstalls are always dangerous. Continuing anyway...
-    [1 of 1] Compiling Main             ( /tmp/lens-4.2-3107/lens-4.2/Setup.    lhs, /tmp/lens-4.2-3107/lens-4.2/dist/setup/Main.o )
-    Linking /tmp/lens-4.2-3107/lens-4.2/dist/setup/setup ...
-    Configuring lens-4.2...
-    Building lens-4.2...
-    Preprocessing library lens-4.2...
-    
-    src/Control/Lens/Internal/Zoom.hs:47:8:
-        Could not find module `Control.Monad.Trans.Except'
-        Perhaps you meant
-          Control.Monad.Trans.Cont (from transformers-0.3.0.0)
-          Control.Monad.Trans.Error (from transformers-0.3.0.0)
-          Control.Monad.Trans.List (from transformers-0.3.0.0)
-        Use -v to see a list of the files searched for.
-    Failed to install lens-4.2
-    cabal: Error: some packages failed to install:
-    DAV-0.6.2 depends on lens-4.2 which failed to install.
-    git-annex-5.20140707 depends on lens-4.2 which failed to install.
-    lens-4.2 failed during the building phase. The exception was:
-    ExitFailure 1
-
-I am not an experienced user of cabal. So any hints to solve the conflicts are appreciated.
diff --git a/doc/forum/updating_the___34__number_of_copies__34__.mdwn b/doc/forum/updating_the___34__number_of_copies__34__.mdwn
deleted file mode 100644
--- a/doc/forum/updating_the___34__number_of_copies__34__.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Is it possible to let git-annex check and update the "number of copies" or "whereis" information without recalculating the checksome?
-
-The use case is this:
-
-I have a very large "repo1": 300.000 files 1.5 TB.
-
-I copy it using low level tools for performance (clone the partition, netcat over network, or whatever...)
-
-Then i do "git annex init 'repo2'". 
-All files exist in both repos and the simlinks are valid, but git-annex does not know about it. 
-The "git-annex wehereis" only shows "repo1". How can I tell him without rehashing 1.6TB?
-
-Thx
-
diff --git a/doc/forum/usability__58___creating_an_archive_on_a_new_external_drive.mdwn b/doc/forum/usability__58___creating_an_archive_on_a_new_external_drive.mdwn
deleted file mode 100644
--- a/doc/forum/usability__58___creating_an_archive_on_a_new_external_drive.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-story: i got a new drive from the store. plug it in. it's recognized by XFCE and mounted automatically. turns out it's NTFS, but Debian doesn't seem to mind.
-
-go in the assistant, add it as an "External drive", make it a "full backup" and let it sync.
-
-expected result: i see files
-
-actual result: i see a bare git repository.
-
-if i first `git init` the directory so it's not bare, at least i get a better handle on it: i can sync with the assistant, then `git merge synced/master` to see the files.
-
-really confusing to me, sorry if it's a dupe... 
-
-workaround: use the commandline: `git clone <repo>` and `git annex get`. --[[anarcat]]
diff --git a/doc/forum/usability__58___what_are_those_arrow_things__63__.mdwn b/doc/forum/usability__58___what_are_those_arrow_things__63__.mdwn
deleted file mode 100644
--- a/doc/forum/usability__58___what_are_those_arrow_things__63__.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-# Introduction
-
-i want to relate a usability story that happens fairly regularly when I show git-annex to people. the story goes like this.
-
-# The story
-
-Antoine sat down at his computer saying, "i have this great movie collection I want to share with you, my friend, because the fair use provisions allow for that, and I use this great git-annex tool that allows me to sync my movie collection between different places". His friend Charlie, a Linux user only vaguely familiar with the internals of how his operating system or legal system actually works, reads this as "yay free movies" and wholeheartedly agrees to lend himself to the experiment.
-
-Antoine creates a user account for Charlie on his home computer, because he doesn't want to have to do everything himself. "That way you can choose which movies you want, because you probably don't want my complete movie collection!" Charlie emphatically responds: "right, I only have my laptop and this USB key here, so I don't think I can get it all".
-
-Charlie logs into Antoine's computer, named `marcos`. Antoine shows Charlie where the movies are located (`/srv/video`) through the file browser (Thunar, for the record). Charlie inserts his USB key into `marcos` and a new icon for the USB key shows up. Then Charlie finds a video he likes, copies and pastes it into the USB key. But instead of a familiar progress bar, Charlie is prompted with a dialog that says "Le système de fichiers ne gère pas les liens symboliques." (Antoine is french, so excuse him, this weird message says that the filesystem doesn't support symbolic links.) Puzzled, Charlie tries to copy the file to his home directory instead. This works better, but the file has a little arrow on it, which seems odd to Charlie. He then asks Antoine for advice.
-
-Antoine then has no solution but to convert the git-annex repository into direct mode, something which takes a significant amount of time and is actually [[designated as "untrusted"|direct_mode]] in the documentation. In fact, so much so that he actually did [[screw up his repository magnificently|bugs/direct_command_leaves_repository_inconsistent_if_interrupted]] because he freaked out when `git-annex direct` started and interrupted it because he tought it would take too long.
-
-# Technical analysis
-
-Now I understand it is not necessarily `git-annex`'s responsability if Thunar (or Nautilus, for that matter), doesn't know how to properly deal with symlinks (hint: just dereference the damn thing already). Maybe I should file a bug about this against thunar? I also understand that symlinks are useful to ensure the security of the data hosted in `git-annex`, and that I could have used direct mode in the first place. But I like to track changes in git to those files, and direct mode makes that really difficult.
-
-I didn't file this as a bug because I want to start the conversation, but maybe it should qualify as a usability bug. As things stand, this is one of the biggest hurdle in teaching people about git annex.
-
-(The other being "how do i actually use git annex to sync those files instead of just copying them by hand", but that's for another story!)
-
--- [[anarcat]]
-
-# Followup
-
-Here is a bug report filed against Thunar, with a patch to fix this behavior: https://bugzilla.xfce.org/show_bug.cgi?id=11065
-
-Similar bugs would need to be filed against Nautilus, at the very least, but probably other file managers, which makes this task a little daunting, to say the least. -- [[anarcat]]
diff --git a/doc/forum/use_existing_ssh_keys__63__.mdwn b/doc/forum/use_existing_ssh_keys__63__.mdwn
deleted file mode 100644
--- a/doc/forum/use_existing_ssh_keys__63__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi, a new user trying out git-annex 3.20130124 here. So far looks really promising, thanks.
-
-I setup a local annex using the assistant webapp. I then created a rsync cloud repo over ssh to my shell box in a nearby data center for it. Works ok. I already have ssh key setup inclding ssh-agent for quick logins to the server. It would be great if you could configure the assistant to use these existing keys instead of creating a new set of keys. Maybe keep the defaults as is, but provide the config for this hidden behind "trust me, I know what I'm doing" check box or something.
-
-Thanks again, I keep researching.
diff --git a/doc/forum/using_git-annex_with_lightroom.mdwn b/doc/forum/using_git-annex_with_lightroom.mdwn
deleted file mode 100644
--- a/doc/forum/using_git-annex_with_lightroom.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-I'm using git-annex to sync my photos across multiple computers, and it works beautifully. I would also like to sync Lightroom catalogues. The photo editing program creates a *.lrdata directory where it stores the edits in its own tree format. Merging two such directories obviously creates a mess. 
-
-Is there an elegant way to tell git-annex to treat the whole directory as a single file and overwrite the whole directory structure at once? I'm guessing the same problem occurs with mac os packages.
-
-Many thanks!
-Alex
diff --git a/doc/forum/version_3_upgrade.mdwn b/doc/forum/version_3_upgrade.mdwn
deleted file mode 100644
--- a/doc/forum/version_3_upgrade.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-after upgrading to git-annex 3, i'm stuck with diverging git-annex branches -- i didn't manage to follow this line in the directions:
-
-> After this upgrade, you should make sure you include the git-annex branch when git pushing and pulling.
-
-could you explain how to do that in a littel more detail? git pull seems to only merge master, although i have these ``.git/config`` settings:
-
-    [branch "git-annex"]
-    	remote = origin
-    	merge = git-annex
diff --git a/doc/forum/view_from_numeric_values.mdwn b/doc/forum/view_from_numeric_values.mdwn
deleted file mode 100644
--- a/doc/forum/view_from_numeric_values.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Hi Joey,
-
-it would be nice when views could take numeric comparisons as filters.
-
-    git annex metadata -s length=273.0 john_cage_4_33.mp3
-
-    git annex view length<=300
-
-... here is the catch, < and > don't work well in shell, this needs some other Syntax. I think the underlying machinery (using numeric comparisons instead globs) should be quite trivial. Any Ideas about a Syntax?
diff --git a/doc/forum/view_including_files_with_no_tags.mdwn b/doc/forum/view_including_files_with_no_tags.mdwn
deleted file mode 100644
--- a/doc/forum/view_including_files_with_no_tags.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Hi
-
-Is it possible to create a view which also includes files with no tag?
-
-I use something like `git annex view 'rating=*'` to view files sorted by rating but this view does not include files which don‘t have a rating yet. What I was looking for is a way to show tagged files and untagged files in one view.
diff --git a/doc/forum/views___40__branches__41___never_get_deleted.mdwn b/doc/forum/views___40__branches__41___never_get_deleted.mdwn
deleted file mode 100644
--- a/doc/forum/views___40__branches__41___never_get_deleted.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Hello everyone,
-I would like to know if this is normal behavior or if it's a problem with my repository:
-
-Whenever I set a view with 
-
-git annex view attr="\*"'
-
-a new branch representing the selected view gets created, as expected. The problem is that when I switch back to master ('git checkout master' or even 'git annex vpop') the view branch stays there, and all subsequent operations on the annex also consider the view branch, resulting a great slowdown if one has done many views (attr="this", attr="that", etc.). Is this normal? If so, why is it necessary for the branch to stay on? Does it speed up going back to the branch? Redoing git annex view attr="*" does not seem to take less time. 
-
-Am I doing it wrong? Should I be deleting used view branches on my own? How?
-
-thanks for your replies.
-
-**EDIT:** I just found out that even if I delete view branches with git branch -D "views/attr=_" (which I'm not sure I should be doing), the branches are still checked when doing "git annex unused". That is, "git annex unused" lists "checking..." a whole lot of past views/branches which are not even there anymore (not listed with "git branch"). I also suspect that this is preventing deleted (git-rm) files from being collected from "unused". Is this a problem with my repo? Any way to fix this?
-
-=== git-annex version: **5.20140529-gb71f9bf** ===
diff --git a/doc/forum/vlc_and_git-annex.mdwn b/doc/forum/vlc_and_git-annex.mdwn
deleted file mode 100644
--- a/doc/forum/vlc_and_git-annex.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I used to save movies with the srt subtitle files next to them. 
-
-Usually vlc finds it because it's on the same directory than the movie file, however with git annex the link is located on another folder.
-So after adding movies to git, the subtitles doesn't load anymore.
-
-couldn't find a quick fix. I'm thinking a bash script, but wanted to discuss it here with all annex users.
-
-I know It's out of annex scope, but I think a movie archive is a great scenario for git-annex.
-most of my HD is filled up with movies from the camcorder, screencast, etc... 
-And we usually don't modify those files
-
diff --git a/doc/forum/web-browser_for_the_repository.mdwn b/doc/forum/web-browser_for_the_repository.mdwn
deleted file mode 100644
--- a/doc/forum/web-browser_for_the_repository.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Hi!
-
-I am a teacher and I would like to organize my school-files with git-annex in combination with a wiki. In the wiki I would like to outline lessons with included pictures (and links) of work-sheets etc. git-annex would help me to transfer and organize all the files. 
-
-Now I'm searching for a web-browser for a git-annex-repository, like the source-browser of trac (or gitweb). Actually I would really like to use trac (or dokuwiki) for my school-project. I tried trac with a bare-annex-repos, but it only shows the hash-links. In the web-assistent of annex I couldn't find such a feature.
-
-
-Is there any web-browser for a git-annex-repository?
-
--- Tobias 
diff --git a/doc/forum/webapp__58___disabling_a_paired_repository.mdwn b/doc/forum/webapp__58___disabling_a_paired_repository.mdwn
deleted file mode 100644
--- a/doc/forum/webapp__58___disabling_a_paired_repository.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-I had two repositories, on different machines, created with the assistant, so they were both direct mode.
-
-After pairing each with the other, so that files were merrily flowing back and forth, I happened to do the following:
- * on machine A, in the dashboard
- * click on the 'actions' emnu for the repository on machine B
- * select 'disable'
-
-Result: all references to the repo on machine B have disappeared from the assistant in machine A.
-
-On machine B, I still have the pairing with machine A, and selecting the 'sync now' action seems to be working.
-
-The thing I am curious about is the behaviour on machine A - why is it that I cannot find any reference to it any more in the assistant, so that I can re-enable it?
diff --git a/doc/forum/webapp___47___assistant_without_watch.mdwn b/doc/forum/webapp___47___assistant_without_watch.mdwn
deleted file mode 100644
--- a/doc/forum/webapp___47___assistant_without_watch.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I did not recieve feedback on my comment [1], so I try to post my question again but more clearly.
-
-Is it possible to run the assistent/the webapp without the functionality of 'git annex watch'?
-
-I'd like to use the assistant and to have the automatic syncing but I do not want the local repository to be watched.  Instead I prefer to manually add/drop my files.
-
-I do not see the 'pause button' mentioned in my earlier question [1].
-
-[1] http://git-annex.branchable.com/forum/webapp_and_manual_mode/
diff --git a/doc/forum/webapp_and_manual_mode.mdwn b/doc/forum/webapp_and_manual_mode.mdwn
deleted file mode 100644
--- a/doc/forum/webapp_and_manual_mode.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Somehow I seemingly have not understood the manual mode.
-
-If I have a file in my repository, that is not yet in the annex (or in git), and I start the webapp, that file is automatically added to git-annex (and git).
-
-Why is that?
-
-And how can I use the webapp without such interference?
diff --git a/doc/forum/webapp_does_not_start.mdwn b/doc/forum/webapp_does_not_start.mdwn
deleted file mode 100644
--- a/doc/forum/webapp_does_not_start.mdwn
+++ /dev/null
@@ -1,72 +0,0 @@
-Sorry, I have again an issue :(
-
-What could be the problem that the webapp is not starting (in Windows)? git annex just exists without messages, connection to localhost failes of course
-
-    me@laptop /cygdrive/c/Data
-    $ git annex --verbose --debug webapp
-    
-    me@laptop /cygdrive/c/Data
-    $
-
-If I run it within an annexed directory I get at least one message - but it still immideately exits:
-
-    me@laptop /cygdrive/c/Data/annex
-    $ git annex --verbose --debug webapp
-    [2014-07-11 19:06:58 Pacific Daylight Time] chat: git-annex ["--verbose","--debug","webapp"]
-
-    me@laptop /cygdrive/c/Data/annex
-    $
-
-    git-annex version: 5.20140707-g8116d10
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 2 3 4
-
-
-EDIT:
-1.) Interestingly, also "git annex test" fails:
-
-    [...]
-    ok
-    push origin To C:/Data/.t\repo
-       bcc4611..91f5218  git-annex -> synced/git-annex
-       6f47922..92c578a  annex/direct/master -> synced/master
-    
-    ok
-    add ../dir2/foo ok
-    (Recording state in git...)
-    FAIL
-          Exception: .t/tmprepo9/.git/annex/journal: getDirectoryContents: permission denied (Access is denied.)
-
-    2 out of 83 tests failed
-      (This could be due to a bug in git-annex, or an incompatability
-       with utilities, such as git, installed on this system.)
-
-
-
-2.) There's really something very weird going on. At the beginning it worked. Then it stopped (as per above). Sometimes, when I start it using "Git Bash" it works. But then not any more.
-3.) Rebooting the machine does not help
-
-EDIT once again:
-4.) I am afraid there is something big broken. Suddenly I could start the daemon again. The thing I did was to delete my complete annex.
-But if I shutdown the daemon now I get:
-
-    $ git annex webapp
-    Launching web browser on file://C:\cygwin\tmp\webapp85796.html
-    
-      Detected a filesystem without fifo support.
-    
-      Disabling ssh connection caching.
-    
-      Detected a crippled filesystem.
-    
-      Enabling direct mode.
-    
-    (Recording state in git...)
-    WebApp crashed: ExitFailu
-
-... and the whole loop starts again. webapp daemon does not start as long as I delete the annex. Interestingly this is independent from %USERPROFILE%\.config. Deleting this directory does not change anything. So somehow git-annex "knows" that there is somewhere an annex and fails if it is.
-
diff --git a/doc/forum/webapp_listen_port_with_autostart.mdwn b/doc/forum/webapp_listen_port_with_autostart.mdwn
deleted file mode 100644
--- a/doc/forum/webapp_listen_port_with_autostart.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-To start the webapp on a X-less server it's possible to use the parameter `--listen` and then connect from a client with X to it.
-
-How can I start the webapp on all annex repos on this server like on a client with `assistant --autostart`? Would be nice to start the assistant on all configured repos which listens on a defined port, f.e. `git annex assistant --autostart --listen 0.0.0.0:8888`. It would be even nicer to have a parameter to chose a autostart configuration file, f.e. `git annex assistant --autostart --autostart-config /etc/git-annex/autostart --listen 0.0.0.0:8888`, so this could end up in a real server application, a init script would be easy to write...
diff --git a/doc/forum/weird_view_file_naming.mdwn b/doc/forum/weird_view_file_naming.mdwn
deleted file mode 100644
--- a/doc/forum/weird_view_file_naming.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Very quick one, if anyone has to share experience with views (i would find them useful to get partial checkout views, as long as I can find a special setup to preserve the tree/filenames hyerarchy): 
-
-by using (filtering) views I am getting file names changed to include the (orignal) dir name,
-for instance:
-
-2008/pippo.doc
-
-after a git annex view 2008/=*, comes out as pippo_%2008%.doc
-is this avoidable ?
-
-(i've been trying to follow metadata walkthrough etc. but i always get the dirname in the filename between percents...)
-
-btw: version is 5.20141105
diff --git a/doc/forum/what_happens_to_deleted_files__63__.mdwn b/doc/forum/what_happens_to_deleted_files__63__.mdwn
deleted file mode 100644
--- a/doc/forum/what_happens_to_deleted_files__63__.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-I have two repositories: A(direct) and B(indirect). At some point, I performed the following steps:
-
-1. Add a file in A.
-2. Sync A.
-3. Sync B, but not get all files.
-4. In B, remove a file F that was newly added in A, using `git rm` and `git commit`.
-5. Now get all files from A.
-
-This results in all "current" files being copied from A to B, but not file F.
-
-If I checkout a branch in B for an older commit which still had file F, I can see the symlink created in the branch. But now if I try to get the file in B from A, annex says that the remote is not available: 
-
-    sameerds@gajanan:/mnt/mandos/test$ git annex get
-    get IMG_0570.JPG 
-      Unable to access these remotes: A
-    
-      Try making some of these repositories available:
-      	530e4f81-474d-4b0b-9f13-4beb7361302c -- A
-    failed
-    git-annex: get: 1 failed
-
-The remote for A exists in the listing for `git remote`, and `git annex sync` does not make this error message go away. If I checkout `master` again, then everything works fine.
-
-But of course, this a different problem from my original one. It would a way to bring all files from the remote, that are ever used by any commit reachable in the local git history, irrespective of the currently checkout out commit. Perhaps an option `--deep-copy` to the standard `git annex get`.
diff --git a/doc/forum/whereis_command_with_file_names_instead_of_hashes.mdwn b/doc/forum/whereis_command_with_file_names_instead_of_hashes.mdwn
deleted file mode 100644
--- a/doc/forum/whereis_command_with_file_names_instead_of_hashes.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Hi
-
-I have a laptop, server and a regular PC. Laptop and PC are using same "backup" repo on server. Thay all get notified via ssh. My goal is to have synchronization and backup in one remote repo. When I wan to list all files on all repos i do:
-
-    git-annex whereis -A (some files do fail. Don't know why)
-
-But that displays hashes. Not file names. How can to list file names on all repos instead of hashes ?
diff --git a/doc/forum/why_doesn__39__t___96__git_annex_fix__96___fix_a_link__63__.mdwn b/doc/forum/why_doesn__39__t___96__git_annex_fix__96___fix_a_link__63__.mdwn
deleted file mode 100644
--- a/doc/forum/why_doesn__39__t___96__git_annex_fix__96___fix_a_link__63__.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-We have the correct symlink:
-
-    $ ls -lh Sita_Sings_the_Blues_480p_2150kbps.mp4 
-    lrwxrwxrwx 1 user user 204 Apr  8 20:22 Sita_Sings_the_Blues_480p_2150kbps.mp4 -> .git/annex/objects/6q/Wz/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4
-
-The object is in place:
-
-    $ ls -lh .git/annex/objects/6q/Wz/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4
-    -r-------- 1 user user 1,4G Dec 28  2010 .git/annex/objects/6q/Wz/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4
-
-Now I move the symlink, which becomes broken:
-
-    $ mv Sita_Sings_the_Blues_480p_2150kbps.mp4 Videos/
-
-I try to fix the symlink:
-
-    $ git annex sync
-    $ git annex fix Videos/Sita_Sings_the_Blues_480p_2150kbps.mp4 
-
-But it stays broken:
-
-    $ ls -lh Videos/Sita_Sings_the_Blues_480p_2150kbps.mp4 
-    lrwxrwxrwx 1 user user 204 Apr  8 20:22 Videos/Sita_Sings_the_Blues_480p_2150kbps.mp4 -> .git/annex/objects/6q/Wz/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4/SHA256E-s1463013630--2a18a317a536d8e2d28e7916a45a007679b7192102a71067de488c9faa6aab45.mp4
-
-Ah, when I try to `git mv Sita_Sings_the_Blues_480p_2150kbps.mp4 Videos/`, 
-I am warned that the link is not under version control. How did the symlink get 
-made in the first place, if not by git-annex? It should be known, right?
-
-After I `git annex add`, I can `git mv` and then `git annex fix`.
-
-How did I get into the state where I have a symlink pointing at an imported
-object, which is not under version control?
diff --git a/doc/forum/windows_port__63__.mdwn b/doc/forum/windows_port__63__.mdwn
deleted file mode 100644
--- a/doc/forum/windows_port__63__.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Any progress on Windows port? That would be very nice to have!
-Depending on the scale of it, I might be able to help.
diff --git a/doc/forum/wishlist__58___get__47__drop_via_webapp_file_explorer.mdwn b/doc/forum/wishlist__58___get__47__drop_via_webapp_file_explorer.mdwn
deleted file mode 100644
--- a/doc/forum/wishlist__58___get__47__drop_via_webapp_file_explorer.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Know what'd be a sweet feature?  A file explorer in the webapp that lets you get and drop files (for a Manual local repository).  Especially when the webapp becomes available on Android.  I'd love to be able to select what is and isn't present on a small device by some means other than moving files around.
diff --git a/doc/forum/wishlist__58___make_copy_stop_on_exhausted_disk_space.mdwn b/doc/forum/wishlist__58___make_copy_stop_on_exhausted_disk_space.mdwn
deleted file mode 100644
--- a/doc/forum/wishlist__58___make_copy_stop_on_exhausted_disk_space.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-I'm trying to distribute a large annex to a number of smaller archive drives.
-
-While copying to a directory special remote, the current behaviour is to continue trying copying files into a remote, even as diskspace there has been exhausted.
-It would make sense for git-annex copy to actually stop instead.
diff --git a/doc/forum/working_without_git-annex_commits.mdwn b/doc/forum/working_without_git-annex_commits.mdwn
deleted file mode 100644
--- a/doc/forum/working_without_git-annex_commits.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Is it possible to use git-annex without having [[location tracking]] commits in the style of "got a video I want to rewatch on the plane" or "freed up space" in the main tree?
-
-I consider these changes to be volatile, and irrelevant to the archive history. While they are unproblematic when it comes to merging, they make the commit tree rather complicated, especially with multiple users (as opposed to a single user managing his files on an external disk, a server and his laptop). Some users might even want to contribute to a shared repository without reporting on what they checked out.
-
-As a minimal solution, I configured a repository to ``.gitignore`` ``.git-annex/*:*.log``, but even when using modes that do not require that information (``git annex copy --from`` instead of ``git annex get``), that failes when git-annex tried to git-add ignored files.
-
-A more elaborate solution might be to keep location tracking information in a branch on its own (as suggested in [[todo/branching]]), keeping the main tree clean of such commits. A stealth user could then configure that branch to never be pushed. (Alternatively, if git-annex respects .gitignore and doesn't try to check in changes on ignored files, he could locally ``.gitignore`` ``.git-annex/*:*.log``.)
-
-> A stealth user can simply avoid pushing, and so keep their repository 
-> in a forked state, that can still pull changes from origin.
-> 
-> Beyond that, [[todo/branching]] is the best solution.
-> 
-> I don't think that gitignoring the log files is a good plan, because
-> if the files are left modified and uncommitted, git will not be able to 
-> merge other changes it pulls. The automerging of log files only works
-> if any local changes to them have been committed.
-> 
-> It would be possible to add a knob that
-> simply blocks all local modifications to the log files. --[[Joey]]
diff --git a/doc/forum/workspace.xml_file_disappeared__44___broken_symlink_showed_up.mdwn b/doc/forum/workspace.xml_file_disappeared__44___broken_symlink_showed_up.mdwn
deleted file mode 100644
--- a/doc/forum/workspace.xml_file_disappeared__44___broken_symlink_showed_up.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-I am running git-annex on Mac OS 10.9 and syncing to a Linux device that was attached to a Synology NAS.  Both were running December versions of git-annex.
-
-While working on an application in IntelliJ my workspace.xml file disappeared.  It went from being a real file to being a symlink to a location that didn't exist.
-
-The symlink looks like this: workspace.xml -> ../../../.git/annex/objects/M2/8W/SHA256E-s68106--90e9cc4f617c9034db1bf462d058b82c59ade0be58de1d3a3e2f8c02606631c2.xml/SHA256E-s68106--90e9cc4f617c9034db1bf462d058b82c59ade0be58de1d3a3e2f8c02606631c2.xml
-
-I tried git-annex fsck and I get this message: ** No known copies exist of XXXXXXX/workspace.xml
-
-"XXXXXXX" is a path I needed to obscure I can see it in the git-annex repo but it is a reference to a symlink that doesn't exist
-
-It was mentioned in another thread ( http://git-annex.branchable.com/forum/git_annex_on_osx_only_creating_symlinks__63____63__/ ) that this could happen if I did a forced drop but I do not use git-annex on the command line.  I'm using the assistant and having it manage all of my files for me.
-
-I tried looking at the log for it and it shows this:
-
-<pre>
-timmattison$ /Applications/git-annex.app/Contents/MacOS/git-annex log XXXXXXX/.idea/workspace.xml 
-- 2014-01-03 19:49:58 XXXXXXX/.idea/workspace.xml | d6747880-b355-4d41-b4e5-d1ad3afcb4a5 -- timmattison@MacBook-Pro.local:~/Desktop/annex
-+ 2014-01-03 17:08:32 XXXXXXX/.idea/workspace.xml | d6747880-b355-4d41-b4e5-d1ad3afcb4a5 -- timmattison@MacBook-Pro.local:~/Desktop/annex
-(Recording state in git...)
-</pre>
-
-So I can see that the git-annex thinks the file was deleted but what really happened is that IntelliJ just modified it.  workspace.xml files are modified very often when working in IntelliJ.
-
-Is this a known bug that has been fixed in the new version (2013-12-30 or later)?
-
-Thanks,
-Tim
diff --git a/doc/future_proofing.mdwn b/doc/future_proofing.mdwn
deleted file mode 100644
--- a/doc/future_proofing.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-Imagine putting a git-annex drive in a time capsule. In 20, or 50, or 100
-years, you'd like its contents to be as accessible as possible to whoever
-digs it up.
-
-This is a hard problem. git-annex cannot completely solve it, but it does
-its best to not contribute to the problem. Here are some aspects of the
-problem:
-
-* How are files accessed? Git-annex carefully adds minimal complexity
-  to access files in a repository. Nothing needs to be done to extract
-  files from the repository; they are there on disk in the usual way,
-  with just some symlinks pointing at the annexed file contents.
-  Neither git-annex nor git is needed to get at the file contents.
-  
-  (Also, git-annex provides an "uninit" command that moves everything out
-  of the annex, if you should ever want to stop using it.)
-
-* What file formats are used? Will they still be readable? To deal with
-  this, it's best to stick to plain text files, and the most common
-  image, sound, etc formats. Consider storing the same content in multiple
-  formats.
-
-* What filesystem is used on the drive? Will that filesystem still be
-  available? Whatever you choose to use, git-annex can put files on it.
-  Even if you choose (ugh) FAT.
-
-* What is the hardware interface of the drive? Will hardware still exist
-  to talk to it?
-
-* What if some of the data is damaged? git-annex facilitates storing a
-  configurable number of [[copies]] of the file contents. The metadata
-  about your files is stored in git, and so every clone of the repository
-  means another copy of that is stored. Also, git-annex uses filenames
-  for the data that encode everything needed to match it back to the
-  metadata. So if a filesystem is badly corrupted and all your annexed
-  files end up in `lost+found`, they can easily be lifted back out into
-  another clone of the repository. Even if the filenames are lost,
-  it's possible to [[tips/recover_data_from_lost+found]].
-
-* What about encrypted special remotes? A 
-  [[fairly simple shell script using standard tools|Decrypting_files_in_special_remotes_without_git-annex]]
-  (gpg and openssl) can decrypt files stored on such
-  a remote, as long as you have access to the encryption keys (which
-  are stored in the git-annex branch of the repository, sometimes
-  encrypted with your gpg key).
diff --git a/doc/future_proofing/comment_1_2614eb2e9b7b23fa9bb4251c0d025909._comment b/doc/future_proofing/comment_1_2614eb2e9b7b23fa9bb4251c0d025909._comment
deleted file mode 100644
--- a/doc/future_proofing/comment_1_2614eb2e9b7b23fa9bb4251c0d025909._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://launchpad.net/~electrichead"
- nickname="electrichead"
- subject="Regarding accessing files in a time capsule..."
- date="2014-08-25T15:51:00Z"
- content="""
-Imagine a rather contrived doomsday scenario: the file paths and/or basenames are important and, for some reason, the symlinks are not present (perhaps they got deleted, or aren't supported). `git` and `git-annex` no longer exist and let's assume knowledge of `git` internals is not useful here. All the *content* is there, stored under hashed file names under `.git/annex/objects`.
-
-I may be missing something obvious but I think options for restoring file paths include:
-
-  - direct mode bypasses this issue; all the files are right there. 
-  - the WORM backend perhaps carries enough information in the object file names to work with.
-  - file content/metadata may be sufficient to easily recreate a sensible directory structure in some cases, so no worries.
-
-These first two options may represent compromises in various use-cases and the last may not be applicable or, if it is, practical. The object-path mapping could trivially be backed up in plain text in lieu of these. Like I said, I may be overlooking something here that makes this unnecessary or even a non-concern (actually, I've convinced myself it's not a serious concern in most of the use-cases I've considered, but crossing i's and dotting t's).
-"""]]
diff --git a/doc/git-annex-adjust.mdwn b/doc/git-annex-adjust.mdwn
--- a/doc/git-annex-adjust.mdwn
+++ b/doc/git-annex-adjust.mdwn
@@ -4,7 +4,7 @@
 
 # SYNOPSIS
 
-git annex adjust --unlock`
+git annex adjust --unlock|--fix`
 
 # DESCRIPTION
 
@@ -32,6 +32,13 @@
 
   Unlock all annexed files in the adjusted branch. This allows
   annexed files to be modified.
+
+* `--fix`
+
+  Fix the symlinks to annexed files to point to the local git annex
+  object directory. This can be useful if a repository is checked out in an
+  unusual way that prevents the symlinks committed to git from pointing at
+  the annex objects.
 
 # SEE ALSO
 
diff --git a/doc/git-annex-copy/comment_1_9be279110a112335bc72ee8c8a347da2._comment b/doc/git-annex-copy/comment_1_9be279110a112335bc72ee8c8a347da2._comment
deleted file mode 100644
--- a/doc/git-annex-copy/comment_1_9be279110a112335bc72ee8c8a347da2._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="tomekwi"
- subject="--all seems to do nothing"
- date="2015-07-03T05:14:37Z"
- content="""
-Hi,
-
-I want to back up all my files including previous versions on an external drive. I’ve tried these two commands – both of them exited instantly without producing any output:
-
-    $ git-annex copy --all --to=external-drive
-    $ git-annex copy --unused --to=external-drive
-"""]]
diff --git a/doc/git-annex-copy/comment_2_599958b0a57d2f8f4383733d28ad9c8d._comment b/doc/git-annex-copy/comment_2_599958b0a57d2f8f4383733d28ad9c8d._comment
deleted file mode 100644
--- a/doc/git-annex-copy/comment_2_599958b0a57d2f8f4383733d28ad9c8d._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="tomekwi"
- subject="comment 2"
- date="2015-07-03T05:17:12Z"
- content="""
-By the way I’m running 5.20140717 – the version distributed by Fedora.
-"""]]
diff --git a/doc/git-annex-copy/comment_3_a9408822e314c32bebf8230f9d40216b._comment b/doc/git-annex-copy/comment_3_a9408822e314c32bebf8230f9d40216b._comment
deleted file mode 100644
--- a/doc/git-annex-copy/comment_3_a9408822e314c32bebf8230f9d40216b._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 3"""
- date="2015-07-06T17:39:58Z"
- content="""
-Commenting on a man page is not the right way to report a problem. File a
-bug report.
-
-FWIW, copy --all works fine in my tests. Of course, there are certianly
-situations where it copies nothing. Eg, if there are no files with ontents
-in the repository for it to copy.
-"""]]
diff --git a/doc/git-annex-copy/comment_4_44dcb42a011cc203655bccca06de2e10._comment b/doc/git-annex-copy/comment_4_44dcb42a011cc203655bccca06de2e10._comment
deleted file mode 100644
--- a/doc/git-annex-copy/comment_4_44dcb42a011cc203655bccca06de2e10._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="b@526b37d9a821b5f9ce4e48014422239233ded155"
- nickname="b"
- subject="Fetch files from two (or more) remotes simultaneously?"
- date="2016-03-21T22:47:42Z"
- content="""
-Let's assume that user has two slow remotes. Is it possible to fetch the data from both to at least partially speed-up the process?
-"""]]
diff --git a/doc/git-annex-copy/comment_5_fe7c2c6617b3a5ca153af2225fc66498._comment b/doc/git-annex-copy/comment_5_fe7c2c6617b3a5ca153af2225fc66498._comment
deleted file mode 100644
--- a/doc/git-annex-copy/comment_5_fe7c2c6617b3a5ca153af2225fc66498._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 5"""
- date="2016-04-04T20:30:33Z"
- content="""
-If you run `git annex copy --from slowremote1` in one terminal and at the
-same time run `git annex copy --from slowremote2` in another terminal,
-the two processes will cooperatively get the files, spreading the load 
-amoung the remotes. This works because git-annex avoids downloading a file
-if the same file is already being downloaded by a different process.
-"""]]
diff --git a/doc/git-annex-direct/comment_1_5d6f9e9393e534e027ddcd555861196b._comment b/doc/git-annex-direct/comment_1_5d6f9e9393e534e027ddcd555861196b._comment
deleted file mode 100644
--- a/doc/git-annex-direct/comment_1_5d6f9e9393e534e027ddcd555861196b._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="tomekwi"
- subject="direct mode within a directory?"
- date="2015-06-13T13:03:33Z"
- content="""
-Hi, is it possible to enable direct mode only on a single directory?
-
-I can’t use symlinks on a part of my repo because of interoperability with http://tagspaces.org . And I don’t want to have all of my repo in direct mode.
-"""]]
diff --git a/doc/git-annex-direct/comment_2_ef8ac748470549776c1ee299b062add2._comment b/doc/git-annex-direct/comment_2_ef8ac748470549776c1ee299b062add2._comment
deleted file mode 100644
--- a/doc/git-annex-direct/comment_2_ef8ac748470549776c1ee299b062add2._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="tomekwi"
- subject="…"
- date="2015-06-13T13:07:49Z"
- content="""
-Using submodules to split the repo doesn’t work cleanly for me, by the way.
-"""]]
diff --git a/doc/git-annex-drop/comment_1_ecb863aea64eadbaeb7759c5cb0bf5a5._comment b/doc/git-annex-drop/comment_1_ecb863aea64eadbaeb7759c5cb0bf5a5._comment
deleted file mode 100644
--- a/doc/git-annex-drop/comment_1_ecb863aea64eadbaeb7759c5cb0bf5a5._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="zpeters@669a56d871ec94de11e1bf63f4a21e80ea90b2fa"
- nickname="zpeters"
- subject="Choose which remote to lock when dropping"
- date="2016-05-03T23:37:09Z"
- content="""
-I might have a unique situation but i have a git annex repo that has multiple remotes for the same actual location.  I have a server at home and when i'm \"out in the world\" i use it's external IP and when i'm at home i use it's internal IP.  It appears that when i do an git annex drop on my laptop to compares and locks whichever remote is alphabetically first.  
-
-What i'm wondering is is there a way to tell git annex which remote i want to compare against?  For example when i'm remote i want to do something like \"git annex drop . --compare remoteServer\"
-
-Thank you!
-"""]]
diff --git a/doc/git-annex-drop/comment_2_c9017041b01d803b346b1b14b8d1e066._comment b/doc/git-annex-drop/comment_2_c9017041b01d803b346b1b14b8d1e066._comment
deleted file mode 100644
--- a/doc/git-annex-drop/comment_2_c9017041b01d803b346b1b14b8d1e066._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2016-05-04T17:23:41Z"
- content="""
-@zpeters, the order that remotes are accessed are ordered by cost.
-
-You can configure the costs of remotes by setting remote.$name.annex-cost
-to eg 100 to make it be checked first or 300 to make it be checked later.
-
-There's also a remote.$name.annex-cost-command that runs a command to get
-the cost. You could perhaps use that to detect which network you're on and
-alter the costs appropriately.
-"""]]
diff --git a/doc/git-annex-enableremote.mdwn b/doc/git-annex-enableremote.mdwn
--- a/doc/git-annex-enableremote.mdwn
+++ b/doc/git-annex-enableremote.mdwn
@@ -1,6 +1,6 @@
 # NAME
 
-git-annex enableremote - enables use of an existing special remote
+git-annex enableremote - enables git-annex to use a remote
 
 # SYNOPSIS
 
@@ -8,15 +8,22 @@
 
 # DESCRIPTION
 
-Enables use of an existing special remote in the current repository,
-which may be a different repository than the one in which it was
-originally created with the initremote command.
+Enables use of an existing remote in the current repository.
 
-The name of the remote is the same name used when originally
+This is often used to enable use of a special (non-git) remote, by
+a different repository than the one in which it was
+originally created with the initremote command. 
+
+It can also be used to explicitly enable a git remote,
+so that git-annex can store the contents of files there. First
+run `git remote add`, and then `git annex enableremote` with the name of
+the remote.
+
+When enabling a special remote, specify the same name used when originally
 creating that remote with `git annex initremote`. Run 
 `git annex enableremote` without any name to get a list of
 special remote names. Or you can specify the uuid or description of the
-remote.
+special remote.
   
 Some special remotes may need parameters to be specified every time they are
 enabled. For example, the directory special remote requires a directory=
@@ -51,6 +58,9 @@
 a new clone, it will will attempt to enable the special remote. Of course,
 this works best when the special remote does not need anything special
 to be done to get it enabled.
+
+(This command also can be used to enable a remote that git-annex has been
+prevented from using by the `remote.<name>.annex-ignore` setting.)
 
 # SEE ALSO
 
diff --git a/doc/git-annex-importfeed/comment_1_d0197108d07873040e46577df1faadbd._comment b/doc/git-annex-importfeed/comment_1_d0197108d07873040e46577df1faadbd._comment
deleted file mode 100644
--- a/doc/git-annex-importfeed/comment_1_d0197108d07873040e46577df1faadbd._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="joseph.rawson.works@85a210ab8c0e37a0b2d6bb235738b20e23e8878f"
- nickname="joseph.rawson.works"
- subject="Replacing dashes with underscores"
- date="2015-12-28T22:39:49Z"
- content="""
-An example rss item entry:
-
-    <item><title>00135929509939-04</title><guid isPermaLink=\"false\">http://40.media.tumblr.com/01a46c39dc0e0f3447fbed4f0807047f/tumblr_nyoj75VlaG1sgxjc6o3_1280.jpg</guid><enclosure url=\"http://40.media.tumblr.com/01a46c39dc0e0f3447fbed4f0807047f/tumblr_nyoj75VlaG1sgxjc6o3_1280.jpg\" length=\"0\" type=\"\"/></item>
-
-Using --template '${itemtitle}${extension}'
-
-The resulting filename is **00135929509939_04.jpg** (The dash was replaced with an underscore).
-
-I decided to just change all the filenames in each blog repository to use underscores, however, I thought you might want to know about this.
-"""]]
diff --git a/doc/git-annex-importfeed/comment_2_25d4ed016e98609066597a8d2b956f87._comment b/doc/git-annex-importfeed/comment_2_25d4ed016e98609066597a8d2b956f87._comment
deleted file mode 100644
--- a/doc/git-annex-importfeed/comment_2_25d4ed016e98609066597a8d2b956f87._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2016-01-01T20:04:02Z"
- content="""
-All spaces and punctuation (other than '.') and other wacky stuff are replaced with
-'_' when git-annex builds a filename from some untrusted source like a
-feed.
-
-I think it makes sense to do that even for '-', at least if it's at the
-start of a filename. "--force" is not a filename you want to let a feed
-inject into your work tree. I could perhaps be convinced to let '-'
-elsewhere in the filename through unmunged, but simplicity and consistency
-suggests it's just as good to always munge it.
-"""]]
diff --git a/doc/git-annex-importfeed/comment_3_bce2b233e4d42fc87a2e17d51e2c2606._comment b/doc/git-annex-importfeed/comment_3_bce2b233e4d42fc87a2e17d51e2c2606._comment
deleted file mode 100644
--- a/doc/git-annex-importfeed/comment_3_bce2b233e4d42fc87a2e17d51e2c2606._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="umeboshi"
- subject="comment 3"
- date="2016-01-02T21:02:51Z"
- content="""
-I just thought it was surprising behavior, especially when ```git-annex addurl --file 123-45.ext $url``` preserves the dash in the filename, yet the rss I constructed to add multiple urls, with files, didn't do this.
-
-The new ```--batch --with-files``` options to addurl will eliminate the need to create specially crafted rss files.
-
-Thanks! :)
-"""]]
diff --git a/doc/git-annex-initremote.mdwn b/doc/git-annex-initremote.mdwn
--- a/doc/git-annex-initremote.mdwn
+++ b/doc/git-annex-initremote.mdwn
@@ -21,20 +21,11 @@
 to this command. Different types of special remotes need different
 configuration values. The command will prompt for parameters as needed.
 
-All special remotes support encryption. You can either specify
+All special remotes support encryption. You can specify
 `encryption=none` to disable encryption, or specify
 `encryption=hybrid keyid=$keyid ...` to specify a GPG key id (or an email
-address associated with a key).
-
-There are actually three schemes that can be used for management of the
-encryption keys. When using the encryption=hybrid scheme, additional
-GPG keys can be given access to the encrypted special remote easily
-(without re-encrypting everything). When using encryption=shared,
-a shared key is generated and stored in the git repository, allowing
-anyone who can clone the git repository to access it. Finally, when using
-encryption=pubkey, content in the special remote is directly encrypted
-to the specified GPG keys, and additional ones cannot easily be given
-access.
+address associated with a key). For details about ways to configure
+encryption, see <https://git-annex.branchable.com/encryption/>
 
 If you anticipate using the new special remote in other clones of the
 repository, you can pass "autoenable=true". Then when [[git-annex-init]](1)
diff --git a/doc/git-annex-unused/comment_1_029c4bee59e48806c9f3d83579fdbb90._comment b/doc/git-annex-unused/comment_1_029c4bee59e48806c9f3d83579fdbb90._comment
deleted file mode 100644
--- a/doc/git-annex-unused/comment_1_029c4bee59e48806c9f3d83579fdbb90._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="mark@6b90344cdab3158eacb94a3944460d138afc9bef"
- nickname="mark"
- subject="Special remotes"
- date="2016-01-08T21:12:45Z"
- content="""
-Does this work for special remotes? Or only remotes that are full repositories?
-"""]]
diff --git a/doc/git-union-merge.mdwn b/doc/git-union-merge.mdwn
deleted file mode 100644
--- a/doc/git-union-merge.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-# NAME
-
-git-union-merge - Join branches together using a union merge
-
-# SYNOPSIS
-
-git union-merge ref ref newref
-
-# DESCRIPTION
-
-Does a union merge between two refs, storing the result in the
-specified newref.
-
-The union merge will always succeed, but assumes that files can be merged
-simply by concatenating together lines from all the oldrefs, in any order.
-So, this is useful only for branches containing log-type data.
-
-Note that this does not touch the checked out working copy. It operates
-entirely on git refs and branches.
-
-# EXAMPLE
-
-	git union-merge git-annex origin/git-annex refs/heads/git-annex 
-
-Merges the current git-annex branch, and a version from origin,
-storing the result in the git-annex branch.
-
-# BUGS
-
-File modes are not currently merged.
-
-# AUTHOR
-
-Joey Hess <id@joeyh.name>
-
-<http://git-annex.branchable.com/>
-
-Warning: Automatically converted into a man page by mdwn2man. Edit with care
diff --git a/doc/how_it_works.mdwn b/doc/how_it_works.mdwn
deleted file mode 100644
--- a/doc/how_it_works.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-This page gives a high-level view of git-annex. For a detailed
-low-level view, see [[the_man_page|git-annex]] and [[internals]].
-
-You do not need to read this page to get started with using git-annex. The
-[[walkthrough]] provides step-by-step instructions.
-
-Still reading? Ok. Git's man page calls it "a stupid content
-tracker". With git-annex, git is instead "a stupid filename and metadata"
-tracker. The contents of annexed files are not stored in git, only the
-names of the files and some other metadata remain there.
-
-The contents of the files are kept by git-annex in a distributed key/value
-store consisting of every clone of a given git repository. That's a fancy
-way to say that git-annex stores the actual file content somewhere under
-`.git/annex/`. (See [[internals]] for details and note that in
-[[direct_mode]] the file contents are left in the work tree.)
-
-That was the values; what about the keys? Well, a key is calculated for a
-given file when it's first added into git-annex. Normally this uses a hash
-of its contents, but various [[backends]] can produce different sorts of
-keys. The file that gets checked into git is just a symlink to the key
-under `.git/annex/`. If the content of a file is modified, that produces
-a different key (and the symlink is changed).
-
-A file's content can be [[transferred|transferring_data]] from one
-repository to another by git-annex. Which repositories contain a given
-value is tracked by git-annex (see [[location_tracking]]). It stores this
-tracking information in a separate branch, named "git-annex". All you ever
-do with the "git-annex" branch is push/pull it around between repositories,
-to [[sync]] up git-annex's view of the world.
-
-That's really all there is to it. Oh, there are [[special_remotes]] that
-let values be stored other places than git repositories (anything from
-Amazon S3 to a USB key), and there's a pile of commands listed in
-[[the_man_page|git-annex]] to handle moving the values around and managing
-them. But if you grok the description above, you can see through all that.
-It's really just symlinks, keys, values, and a git-annex branch to store
-additional metadata.
-
----
-
-Next: [[install]] or [[walkthrough]]
diff --git a/doc/how_it_works/comment_1_b3bdd6a06d5764db521ae54878131f5f._comment b/doc/how_it_works/comment_1_b3bdd6a06d5764db521ae54878131f5f._comment
deleted file mode 100644
--- a/doc/how_it_works/comment_1_b3bdd6a06d5764db521ae54878131f5f._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="minor suggestion"
- date="2013-08-10T14:31:31Z"
- content="""
-The contents of large files are not stored in git, only the names of the files and some other metadata remain there.
-
-Would this read better to the newbie as:
-
-The contents of 'annexed' files are not stored in git, only the names of the files and some other metadata remain there.
-
-First time for me, the note about large files made me think that maybe annex operated on files above a certain size.
-"""]]
diff --git a/doc/how_it_works/comment_2_2a8ce5859040d815e6234fc18f5f1961._comment b/doc/how_it_works/comment_2_2a8ce5859040d815e6234fc18f5f1961._comment
deleted file mode 100644
--- a/doc/how_it_works/comment_2_2a8ce5859040d815e6234fc18f5f1961._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm4cjowB3PaZP00vEr255d1GdUBikE9Qdg"
- nickname="Matthew"
- subject="clarification about what is moved / stored and where"
- date="2014-02-10T12:53:44Z"
- content="""
-Just to support Nigel's comment; it's good to be precise and clear about what happens to the files from the start.
-I've sent a similar suggestion to the mailing list.
-
-"""]]
diff --git a/doc/how_it_works/comment_3_806c0fe325942a425e43afb9b78327ec._comment b/doc/how_it_works/comment_3_806c0fe325942a425e43afb9b78327ec._comment
deleted file mode 100644
--- a/doc/how_it_works/comment_3_806c0fe325942a425e43afb9b78327ec._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="G.nius.ck@d885edcfde63422ee84e5ee501b7aa545e91298d"
- nickname="G.nius.ck"
- subject="What do you mean by &quot;git-annex&quot; branch?"
- date="2016-01-09T16:04:29Z"
- content="""
-Branches usually mean different versions of your repo, not entirely different content! Why are branches being used for this?
-"""]]
diff --git a/doc/how_it_works/comment_4_0ef6b8c9dbd5a7f9b9f274dc6f9988f0._comment b/doc/how_it_works/comment_4_0ef6b8c9dbd5a7f9b9f274dc6f9988f0._comment
deleted file mode 100644
--- a/doc/how_it_works/comment_4_0ef6b8c9dbd5a7f9b9f274dc6f9988f0._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2016-01-11T16:21:00Z"
- content="""
-A git branch can be used to name any tree ref. In this case we're using
-"git-annex" as the name of a branch that is not connected to the rest of
-the content in the repository.
-"""]]
diff --git a/doc/index.mdwn b/doc/index.mdwn
deleted file mode 100644
--- a/doc/index.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-[[!inline raw=yes pages="summary"]]
-
-[[!sidebar content="""
-[[!inline feeds=no template=bare pages=sidebar]]
-"""]]
-
-<table>
-<tr>
-<td width="33%" valign="top">[[!inline feeds=no template=bare pages=links/key_concepts]]</td>
-<td width="33%" valign="top">[[!inline feeds=no template=bare pages=links/the_details]]</td>
-<td width="33%" valign="top">[[!inline feeds=no template=bare pages=links/other_stuff]]</td>
-</tr>
-</table>
-
-<table>
-<tr>
-<td width="50%" valign="top">[[!inline feeds=no template=bare pages=use_case/bob]]</td>
-<td width="50%" valign="top">[[!inline feeds=no template=bare pages=use_case/alice]]</td>
-</tr>
-</table>
-
-If that describes you, or if you're some from column A and some from column
-B, then git-annex may be the tool you've been looking for to expand from
-keeping all your small important files in git, to managing your large
-files with git.
-
-<table>
-<tr>
-<td width="50%" valign="top">[[!inline feeds=no template=bare pages=footer/column_a]]</td>
-<td width="50%" valign="top">[[!inline feeds=no template=bare pages=footer/column_b]]</td>
-</tr>
-</table>
-
-----
-
-git-annex is [[Free Software|license]], written in [Haskell](http://www.haskell.org/).
-You can [[contribute]]!
-
-git-annex's wiki is powered by [Ikiwiki](http://ikiwiki.info/) and
-hosted by [Branchable](http://branchable.com/).
diff --git a/doc/install.mdwn b/doc/install.mdwn
deleted file mode 100644
--- a/doc/install.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-## Pick your OS
-
-[[!table format=dsv header=yes data="""
-detailed instructions             | quick install
-[[OSX]]                           | [download git-annex.app](https://downloads.kitenet.net/git-annex/OSX/current/)
-&nbsp;&nbsp;[[OSX/Homebrew]]      | `brew install git-annex`
-[[Android]]                       | [download git-annex.apk](https://downloads.kitenet.net/git-annex/android/current/) **beta**
-[[Linux|linux_standalone]]        | [download prebuilt linux tarball](https://downloads.kitenet.net/git-annex/linux/current/)
-&nbsp;&nbsp;[[Debian]]            | `apt-get install git-annex`
-&nbsp;&nbsp;[[Ubuntu]]            | `apt-get install git-annex`
-&nbsp;&nbsp;[[Fedora]]            | `yum install git-annex`
-&nbsp;&nbsp;[[FreeBSD]]           | `pkg install hs-git-annex`
-&nbsp;&nbsp;[[ArchLinux]]         | `pacman -S git-annex`
-&nbsp;&nbsp;[[NixOS]]             | `nix-env -i git-annex`
-&nbsp;&nbsp;[[Gentoo]]            | `emerge git-annex`
-&nbsp;&nbsp;[[Void]]            | `xbps-install git-annex`
-&nbsp;&nbsp;[[ScientificLinux5]]  |
-&nbsp;&nbsp;[[openSUSE]]          | 
-&nbsp;&nbsp;[[Docker]]            | 
-[[Windows]]                       | [download installer](https://downloads.kitenet.net/git-annex/windows/current/) **beta**
-"""]]
-
-All the download links above use https for security. For added security, see
-[[verifying_downloads]].
-
-## Building it yourself
-
-git-annex is [[Free Software|license]], written in [Haskell](http://www.haskell.org/).
-Experienced users should not find it too hard to build and install
-it [[from source|fromsource]].
-
-## See also
-
- * [[autobuild overview|builds]]
- * [[upgrades]]
diff --git a/doc/install/Android.mdwn b/doc/install/Android.mdwn
deleted file mode 100644
--- a/doc/install/Android.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Now git-annex can be used on Android!
-
-[[Documentation for using git-annex on Android|/android]]
-
-## Android app
-
-First, ensure your Android device is configured to allow installation
-of the app. Go to Setup -&gt; Security, and enable "Unknown Sources".
-
-Then download the git-annex.apk for your version of Android, and 
-open it to install.
-
-* [Android 5.0 git-annex.apk](http://downloads.kitenet.net/git-annex/android/current/5.0/git-annex.apk)
-* [Android 4.4 and 4.3 git-annex.apk](http://downloads.kitenet.net/git-annex/android/current/4.3/git-annex.apk)
-* [Android 4.0 to 4.2 git-annex.apk](http://downloads.kitenet.net/git-annex/android/current/4.0/git-annex.apk)
-
-## autobuilds
-
-A daily build is also available, thanks to Mesar Hameed and the University
-of Bath CS department.
-
-* [Android 5.0 git-annex.apk](http://downloads.kitenet.net/git-annex/autobuild/android/5.0/git-annex.apk)
-* [Android 4.4 and 4.3 git-annex.apk](http://downloads.kitenet.net/git-annex/autobuild/android/4.3/git-annex.apk)
-* [Android 4.0 to 4.2 git-annex.apk](http://downloads.kitenet.net/git-annex/autobuild/android/4.0/git-annex.apk)
-* [build logs](http://downloads.kitenet.net/git-annex/autobuild/android/)
-
-## building it yourself
-
-git-annex can be built from source for Android.
-
-1. Run `standalone/android/buildchroot` as root (requires debootstrap).
-   This builds a chroot with a `builder` user.
-   The rest of the build will run in this chroot as that user.
-2. In the chroot, run `standalone/android/install-haskell-packages`
-3. Finally, once the chroot is set up, you can build an Android binary
-   with `make android`, and `make androidapp` will build the complete APK.
diff --git a/doc/install/Android/comment_10_225f2c6fe255be93702cfbd4dc172f3b._comment b/doc/install/Android/comment_10_225f2c6fe255be93702cfbd4dc172f3b._comment
deleted file mode 100644
--- a/doc/install/Android/comment_10_225f2c6fe255be93702cfbd4dc172f3b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://id.clacke.se/"
- nickname="clacke"
- subject="+1 F-Droid"
- date="2013-09-24T18:36:48Z"
- content="""
-Availability in F-Droid would be really neat. I imagine the unusual build requirements would require some work though.
-"""]]
diff --git a/doc/install/Android/comment_10_4b565e73f02f0e84bdf7e686b0d7bf5f._comment b/doc/install/Android/comment_10_4b565e73f02f0e84bdf7e686b0d7bf5f._comment
deleted file mode 100644
--- a/doc/install/Android/comment_10_4b565e73f02f0e84bdf7e686b0d7bf5f._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://lj.rossia.org/users/imz/"
- ip="79.165.57.121"
- subject="re F-Droid"
- date="2014-05-03T14:58:02Z"
- content="""
-See also <http://git-annex.branchable.com/todo/custom_f-droid_repo/>.
-"""]]
diff --git a/doc/install/Android/comment_11_3e7980603749665fafbdeb1b7ab068a5._comment b/doc/install/Android/comment_11_3e7980603749665fafbdeb1b7ab068a5._comment
deleted file mode 100644
--- a/doc/install/Android/comment_11_3e7980603749665fafbdeb1b7ab068a5._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnG-DZQa3d3Jn7K2q36TlbmZ8v2YuV-23M"
- nickname="Fer"
- subject="Android x86?"
- date="2015-03-23T06:55:35Z"
- content="""
-Hello, looks like the binaries compiled for ARM, anyone succeeded building for Android x86?
-"""]]
diff --git a/doc/install/Android/comment_11_4e970633d9073fcf4bc33f3fff2525b2._comment b/doc/install/Android/comment_11_4e970633d9073fcf4bc33f3fff2525b2._comment
deleted file mode 100644
--- a/doc/install/Android/comment_11_4e970633d9073fcf4bc33f3fff2525b2._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmK0703vNSIQsP1mGf-4MAPnsBZiSc6yVo"
- nickname="Emre"
- subject="What am I missing?"
- date="2013-10-15T21:54:07Z"
- content="""
-I've setup repositories on both my linux PC & android mini pc and added jabber account on both. They are both at my home network. They detected each other fine. But when it comes to syncing files, there's a message which says \"Unable to download files from your other devices\" with a button for \"add a cloud repository\". I don't need to add a cloud repository since both computers are at the same network? Or am I missing something in the architecture of git-annex that even to sync two local computers in the same LAN, annex would still need an external repo? (and if so, why would that be?)
-I'm not really willing to add an external repository as I intend to add large files and I don't want that they are first uploaded using a slow connection & then re-downloaded.
-What am I missing?
-"""]]
diff --git a/doc/install/Android/comment_12_87da4f379a0276b662583e7e22061218._comment b/doc/install/Android/comment_12_87da4f379a0276b662583e7e22061218._comment
deleted file mode 100644
--- a/doc/install/Android/comment_12_87da4f379a0276b662583e7e22061218._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="64.134.31.139"
- subject="comment 12"
- date="2013-10-16T16:05:45Z"
- content="""
-To make computers on your network directly communicate, they must be connected together using the user interface. This is normally using the local pairing interface. But local pairing does not yet work on Android. The best you can do to instead on your Android device, add the Linux PC as a ssh server. This will let the Android device send/receive files directly with it over the local network.
-"""]]
diff --git a/doc/install/Android/comment_1_f9ced494a530e6ae3e76cfbaddb89f5d._comment b/doc/install/Android/comment_1_f9ced494a530e6ae3e76cfbaddb89f5d._comment
deleted file mode 100644
--- a/doc/install/Android/comment_1_f9ced494a530e6ae3e76cfbaddb89f5d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://josh.easyid.net/"
- ip="208.100.171.144"
- subject="Minimum version of Android?"
- date="2013-06-18T22:05:02Z"
- content="""
-Does this require 4.x?
-"""]]
diff --git a/doc/install/Android/comment_2_74cccae04ea23a8600069c7e658143aa._comment b/doc/install/Android/comment_2_74cccae04ea23a8600069c7e658143aa._comment
deleted file mode 100644
--- a/doc/install/Android/comment_2_74cccae04ea23a8600069c7e658143aa._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.193"
- subject="comment 2"
- date="2013-06-25T17:58:57Z"
- content="""
-I have not heard of anyone using older than 4.x with success. In particular, several people reported 2.3 doesn't work.
-"""]]
diff --git a/doc/install/Android/comment_3_82c7cb31d19d4e18ca5548da5ca19a79._comment b/doc/install/Android/comment_3_82c7cb31d19d4e18ca5548da5ca19a79._comment
deleted file mode 100644
--- a/doc/install/Android/comment_3_82c7cb31d19d4e18ca5548da5ca19a79._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmhfodZquCI_EEl-f3h7HkROTszlsQL6yA"
- nickname="Joe"
- subject="comment 3"
- date="2013-07-04T15:06:36Z"
- content="""
-Is it safe to upgrade by installing a daily build over an existing version? Will that overwrite any settings? 
-"""]]
diff --git a/doc/install/Android/comment_4_cebaa8ee5bbed27d9b2d032ca7bdec6e._comment b/doc/install/Android/comment_4_cebaa8ee5bbed27d9b2d032ca7bdec6e._comment
deleted file mode 100644
--- a/doc/install/Android/comment_4_cebaa8ee5bbed27d9b2d032ca7bdec6e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.4.193"
- subject="comment 4"
- date="2013-07-05T00:53:00Z"
- content="""
-It is safe to re-install, all your data and settings are stored in /sdcard and will not be touched, even if you delete the app!
-"""]]
diff --git a/doc/install/Android/comment_8_34f7c42050fa48769a6bfae60d72e477._comment b/doc/install/Android/comment_8_34f7c42050fa48769a6bfae60d72e477._comment
deleted file mode 100644
--- a/doc/install/Android/comment_8_34f7c42050fa48769a6bfae60d72e477._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmrb8I1K5jjNr7ZrLSvgmkeQGjYauPeGJU"
- nickname="Martin"
- subject="comment 8"
- date="2013-08-18T16:44:02Z"
- content="""
-Any chance that older versions of Android will be supported in the future?
-"""]]
diff --git a/doc/install/Android/comment_9_f3d289b78d6bdb3cc65689495a8439a5._comment b/doc/install/Android/comment_9_f3d289b78d6bdb3cc65689495a8439a5._comment
deleted file mode 100644
--- a/doc/install/Android/comment_9_f3d289b78d6bdb3cc65689495a8439a5._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="http://openlifechallenge.wordpress.com/"
- nickname="O"
- subject="Add to F-Droid"
- date="2013-09-08T09:56:38Z"
- content="""
-Hi,
-Really enjoy this app for Android! Super simple to use but it would be great if you could fix a folder navigator option when choosing location for device repo, right now it does not work. 
-
-Could you also add it to the F-Droid repository?
-"""]]
diff --git a/doc/install/ArchLinux.mdwn b/doc/install/ArchLinux.mdwn
deleted file mode 100644
--- a/doc/install/ArchLinux.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-There is now an [official git-annex package for Arch](https://www.archlinux.org/packages/community/x86_64/git-annex/), so to install it:
-
-	pacman -S git-annex
-
-There are at least four non non-official packages for git-annex in the Arch Linux User Repository. Any of these may be installed manually per [AUR guidelines](https://wiki.archlinux.org/index.php/AUR_User_Guidelines#Installing_packages) or using a wrapper such as [`yaourt`](https://wiki.archlinux.org/index.php/yaourt) shown below.
-
-1. The simplest method is to use the [git-annex-bin](https://aur.archlinux.org/packages/git-annex-bin/) package based on the [prebuilt Linux tarballs](http://downloads.kitenet.net/git-annex/linux/current/). This package includes many of the binary shims from the pre-built package. Although common Linux system utilities have been stripped in favor of normal dependencies, the pre-configured Haskell libraries included out of the box make this an easy install. The disadvantage is the resulting installation is a bit on the heavy side at nearly 100M.
-
-       $ yaourt -Sy git-annex-bin
-
-2. A git-annex package is available in the haskell-core AUR <https://wiki.archlinux.org/index.php/ArchHaskell>
-
-3. A development package is available at [git-annex-git](https://aur.archlinux.org/packages/git-annex-git/) that functions similarly to the source package but builds directly from the HEAD of the git repository rather that the last official release.
-
-       $ yaourt -Sy git-annex-git
-
-4. A Cabal sandbox build is also available
-
-       $ yaourt -Sy git-annex-cabal
-
-Finally you may choose to forgo the Arch Linux package system entirely and install git-annex directly through cabal.
-
-    $ pacman -S git rsync curl wget gnupg openssh cabal-install
-    $ cabal update
-    $ cabal install git-annex --bindir=$HOME/bin
diff --git a/doc/install/ArchLinux/comment_2_e5f923e6d81cfb3fba7a72f60baaf4ab._comment b/doc/install/ArchLinux/comment_2_e5f923e6d81cfb3fba7a72f60baaf4ab._comment
deleted file mode 100644
--- a/doc/install/ArchLinux/comment_2_e5f923e6d81cfb3fba7a72f60baaf4ab._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://olivier.mehani.name/"
- nickname="olivier-mehani"
- subject="Stalling when creating repository in assistant"
- date="2013-09-13T05:09:49Z"
- content="""
-I am experiencing a weird issue with any install I've had on this one (and only) ArchLinux machine: all of aur/git-annex 4.20130516-1, aur/git-annex-bin-4.20130909-1, aur/git-annex-standalone-4.20130909-1 and a Cabal install just stall when trying to create the initial Git annex repo in the webapp.
-
-When started, it offers me to create the annex in ~/annex/ or ~/Desktop/annex/, where ~ gets turned into /home/USER when I press “Make repository”, but nothing else happens. This is regardless of if that repo exists when I try to create it or start the webapp.
-
-If I start the webapp from an existing annex (now in ~/annex), it seems to work a bit better, but any other remote (SSH) server that I try to add fails. I just get a fleeting Bootstrap message box when I click “Check this server”, and nothing in the logs of eithr git annex webapp or the ssh logs of the server.
-
-Any idea? Where should I look for more debug information?
-.
-
-"""]]
diff --git a/doc/install/ArchLinux/comment_3_8e607cd883ec174571e9dfe3b25bfd05._comment b/doc/install/ArchLinux/comment_3_8e607cd883ec174571e9dfe3b25bfd05._comment
deleted file mode 100644
--- a/doc/install/ArchLinux/comment_3_8e607cd883ec174571e9dfe3b25bfd05._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.2.134"
- subject="comment 3"
- date="2013-09-13T15:35:59Z"
- content="""
-Please post a [[bug report|bugs]] and start the webapp with the --debug option.
-"""]]
diff --git a/doc/install/ArchLinux/comment_4_a378391dd218859f381c479259dd8fe3._comment b/doc/install/ArchLinux/comment_4_a378391dd218859f381c479259dd8fe3._comment
deleted file mode 100644
--- a/doc/install/ArchLinux/comment_4_a378391dd218859f381c479259dd8fe3._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://olivier.mehani.name/"
- nickname="olivier-mehani"
- subject="comment 4"
- date="2013-09-16T01:23:58Z"
- content="""
-Done [0]. Not much debug output, unfortunately...
-
-[0] http://git-annex.branchable.com/bugs/Assistant_stalls_when_adding__47__creating_repo_on_ArchLinux/?updated
-"""]]
diff --git a/doc/install/ArchLinux/comment_6_1d597d6a95f9c2df7dae6e98813e4865._comment b/doc/install/ArchLinux/comment_6_1d597d6a95f9c2df7dae6e98813e4865._comment
deleted file mode 100644
--- a/doc/install/ArchLinux/comment_6_1d597d6a95f9c2df7dae6e98813e4865._comment
+++ /dev/null
@@ -1,36 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmqWbWVRH2k9spSMqKfIXBP1G3ekkj9Igg"
- nickname="Rado"
- subject="problem installing using cabal: language-javascript missing"
- date="2014-03-28T22:38:04Z"
- content="""
-Configuring gnuidn-0.2.1...
-cabal: The program c2hs is required but it could not be found.
-Failed to install gnuidn-0.2.1
-Configuring language-javascript-0.5.9...
-cabal: The program happy version >=1.18.5 is required but it could not be
-found.
-Failed to install language-javascript-0.5.9
-cabal: Error: some packages failed to install:
-git-annex-5.20140320 depends on language-javascript-0.5.9 which failed to
-install.
-gnuidn-0.2.1 failed during the configure step. The exception was:
-ExitFailure 1
-hjsmin-0.1.4.6 depends on language-javascript-0.5.9 which failed to install.
-language-javascript-0.5.9 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
-yesod-static-1.2.2.4 depends on language-javascript-0.5.9 which failed to
-install.
-[r-c@rc-laptop ~]$ cabal install language-javascript
-Resolving dependencies...
-Configuring language-javascript-0.5.9...
-cabal: The program happy version >=1.18.5 is required but it could not be
-found.
-Failed to install language-javascript-0.5.9
-cabal: Error: some packages failed to install:
-language-javascript-0.5.9 failed during the configure step. The exception was:
-ExitFailure 1
-
-Can you help how to solve?
-"""]]
diff --git a/doc/install/ArchLinux/comment_7_2d708977e2fad6b68803494576382df5._comment b/doc/install/ArchLinux/comment_7_2d708977e2fad6b68803494576382df5._comment
deleted file mode 100644
--- a/doc/install/ArchLinux/comment_7_2d708977e2fad6b68803494576382df5._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://alerque.com/"
- nickname="Caleb"
- subject="dep problems"
- date="2014-03-28T22:50:37Z"
- content="""
-@rado The Haskel dependencies can be a nightmare to sort out for the un-initiated. You can side-step the whole issue by uninstalling the pre-built version that that has all the dependencies built in out of the box.
-
-Just grab the git-annex-bin package from the AUR and be done with it. (The -bin and -standalone packages recently merged so there is just -bin now).
-"""]]
diff --git a/doc/install/ArchLinux/comment_7_97d611f1ae6d4fbe91f84f9fe739f368._comment b/doc/install/ArchLinux/comment_7_97d611f1ae6d4fbe91f84f9fe739f368._comment
deleted file mode 100644
--- a/doc/install/ArchLinux/comment_7_97d611f1ae6d4fbe91f84f9fe739f368._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="dropped"
- subject="Correct way to install git-annex directly through cabal."
- date="2015-07-27T12:01:34Z"
- content="""
-The effective way to install git-annex and resolve dependencies:
-
-    $ sudo pacman -S gsasl git rsync curl wget gnupg openssh cabal-install
-    $ cabal update
-    $ cabal install c2hs
-    $ cabal install git-annex --bindir=$HOME/bin
-    $ sudo cp ~/bin/git-annex /usr/lib/git-core
-"""]]
diff --git a/doc/install/ArchLinux/comment_8_5b5f5e0b64e5bfb1ea12e8b251c6fb5f._comment b/doc/install/ArchLinux/comment_8_5b5f5e0b64e5bfb1ea12e8b251c6fb5f._comment
deleted file mode 100644
--- a/doc/install/ArchLinux/comment_8_5b5f5e0b64e5bfb1ea12e8b251c6fb5f._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmqWbWVRH2k9spSMqKfIXBP1G3ekkj9Igg"
- nickname="Rado"
- subject="I solved it installing dependencies....but dont know hot to start it..."
- date="2014-03-29T07:45:19Z"
- content="""
-cabal install gsasl
-cabal install happy
-cabal install language-javascript
-cabal install alex
-cabal install c2hs
-
-after installing writing in terminal: git-annex, git-annex webapp does nothing...
-can you help how to start git-annex?
-"""]]
diff --git a/doc/install/Debian.mdwn b/doc/install/Debian.mdwn
deleted file mode 100644
--- a/doc/install/Debian.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-## Debian testing or unstable
-
-Debian unstable and testing are usually fairly up to date, so this should be enough:
-
-	sudo apt install git-annex
-
-## Debian 8.0 "jessie"
-
-	sudo apt install git-annex
-
-There is also a backport for jessie, even though it is [often out of date](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760787).
-
-Follow the instructions to [enable backports](http://backports.debian.org/Instructions/).
-
-	sudo apt -t jessie-backports install git-annex
-
-## Debian 7.0 "wheezy":
-
-	sudo apt-get install git-annex
-
-Note: This version does not include support for the [[assistant]].
-A backport is available with the assistant and other new features.
-
-Follow the instructions to [enable backports](http://backports.debian.org/Instructions/).
-
-	sudo apt-get -t wheezy-backports install git-annex
-
-## Debian 6.0 "squeeze"
-
-Follow the instructions to [enable backports](http://backports.debian.org/Instructions/).
-
-	sudo apt-get -t squeeze-backports install git-annex
-
-## Standalone backports for all releases
-
-If the version shipped with Debian is too old, 
-the [NeuroDebian team](http://neuro.debian.net/) provides a
-[standalone build package](http://neuro.debian.net/pkgs/git-annex-standalone.html)
-that is regularly updated and that should work across all releases of
-Debian.
diff --git a/doc/install/Debian/comment_11_b44ed53973ac26eedd3838df28f74a7e._comment b/doc/install/Debian/comment_11_b44ed53973ac26eedd3838df28f74a7e._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_11_b44ed53973ac26eedd3838df28f74a7e._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="chris"
- subject="Easy"
- date="2014-12-23T08:18:31Z"
- content="""
-Easy to install.
-"""]]
diff --git a/doc/install/Debian/comment_14_a34e23d9aa3027012ab1236aa4f7d5cb._comment b/doc/install/Debian/comment_14_a34e23d9aa3027012ab1236aa4f7d5cb._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_14_a34e23d9aa3027012ab1236aa4f7d5cb._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="Miles"
- ip="88.175.62.104"
- subject="installed git-annex on debian but cannot find it"
- date="2013-08-19T23:29:24Z"
- content="""
-I am an absolute beginner when it comes to linux in debian in particular. I installed git-annex via the root terminal, but now I do not know where to find it. I searched for in the file system but could not locate it. Any help is appreciated.
-"""]]
diff --git a/doc/install/Debian/comment_15_20d8271ba3f6cfe3c8849c3d41607630._comment b/doc/install/Debian/comment_15_20d8271ba3f6cfe3c8849c3d41607630._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_15_20d8271ba3f6cfe3c8849c3d41607630._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawk_GWOEjK4Sn4hUB6ofFlE3CNeC7tO56J8"
- nickname="John"
- subject="Re:  installed git-annex on debian but cannot find it "
- date="2013-08-20T00:50:28Z"
- content="""
-@Miles - The command is git annex webapp to bring up the web interface.
-"""]]
diff --git a/doc/install/Debian/comment_16_89f67da4a4a6a626a7db9c6674b244b6._comment b/doc/install/Debian/comment_16_89f67da4a4a6a626a7db9c6674b244b6._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_16_89f67da4a4a6a626a7db9c6674b244b6._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm9ocq1Kb0WL-cz-LPpvd2Xm-q8tIQvqXA"
- nickname="Dominik"
- subject="debian squeeze"
- date="2014-05-16T22:58:52Z"
- content="""
-I'm tring to set up a bare repo on a debian squeeze server and sync it to windows client. Unfortunately the direct mode does not seem to be available for the git-annex version (3.20120629~bpo60+2
-) in the squeeze-backports 
-
-Would you be able to update the version in that repository? Thank you for your hard work! Git-annex is awesome
-"""]]
diff --git a/doc/install/Debian/comment_17_ef7f3e88d61833e51f0302e938343818._comment b/doc/install/Debian/comment_17_ef7f3e88d61833e51f0302e938343818._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_17_ef7f3e88d61833e51f0302e938343818._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="216.145.95.162"
- subject="comment 17"
- date="2014-05-17T17:03:31Z"
- content="""
-Debian squeeze has an extremely ancient ghc compiler, and it would be a mammoth undertaking to build current git-annex using that. 
-
-Use the linux standalone build instead.
-"""]]
diff --git a/doc/install/Debian/comment_1_029486088d098c2d4f1099f2f0e701a9._comment b/doc/install/Debian/comment_1_029486088d098c2d4f1099f2f0e701a9._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_1_029486088d098c2d4f1099f2f0e701a9._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawla7u6eLKNYZ09Z7xwBffqLaXquMQC07fU"
- nickname="Matthias"
- subject="squeeze-backports update?"
- date="2011-08-17T12:34:46Z"
- content="""
-Is there going to be an update of git-annex in debian squeeze-backports to a version that supports repository version 3?
-Thx
-"""]]
diff --git a/doc/install/Debian/comment_2_648e3467e260cdf233acdb0b53313ce0._comment b/doc/install/Debian/comment_2_648e3467e260cdf233acdb0b53313ce0._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_2_648e3467e260cdf233acdb0b53313ce0._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joey.kitenet.net/"
- nickname="joey"
- subject="Re: squeeze-backports update?"
- date="2011-08-17T15:34:29Z"
- content="""
-Yes, I uploaded it last night.
-"""]]
diff --git a/doc/install/Debian/comment_3_4d922e11249627634ecc35bba4044d9e._comment b/doc/install/Debian/comment_3_4d922e11249627634ecc35bba4044d9e._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_3_4d922e11249627634ecc35bba4044d9e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkstq9oH1vHXY_VP0nYO9Gg3eKnKerDGRI"
- nickname="Hadi"
- subject="ARM"
- date="2012-07-31T15:13:06Z"
- content="""
-is there any package for Debian armhf? I'd love to install git-annex on my raspberry pi
-"""]]
diff --git a/doc/install/Debian/comment_4_2a93ab18b05ccb90e7acc5885866fca2._comment b/doc/install/Debian/comment_4_2a93ab18b05ccb90e7acc5885866fca2._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_4_2a93ab18b05ccb90e7acc5885866fca2._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 4"
- date="2012-07-31T15:41:43Z"
- content="""
-Yes, git-annex is available for every Debian architecture which supports Haskell, including all arm ports:
-
-<pre>git-annex | 3.20120629         | wheezy            | source, amd64, armel, armhf, i386, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc</pre>
-"""]]
diff --git a/doc/install/Debian/comment_7_1bccc7bf7a4ef61a9b30024b9b22ba7d._comment b/doc/install/Debian/comment_7_1bccc7bf7a4ef61a9b30024b9b22ba7d._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_7_1bccc7bf7a4ef61a9b30024b9b22ba7d._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://mey.vn/"
- ip="46.65.14.106"
- subject="libc6 dep version on amd64"
- date="2013-05-28T15:28:47Z"
- content="""
-hi Joey,
-
-i see from the release notes of the 4.20130521 release that the Debian package should now be built with libc6 2.13, which appears to be the case except for the amd64 arch (hence the amd64 package won't install as is on Wheezy on amd64) - is this a build glitch or is 2.14 needed on amd64 (i imagine as a dependency of one of git-annex's deps on that arch)?
-
-thanks!
-"""]]
diff --git a/doc/install/Debian/comment_8_5b5a3b0e8abe8831a6a15a4e258d14fd._comment b/doc/install/Debian/comment_8_5b5a3b0e8abe8831a6a15a4e258d14fd._comment
deleted file mode 100644
--- a/doc/install/Debian/comment_8_5b5a3b0e8abe8831a6a15a4e258d14fd._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 8"
- date="2013-05-29T16:23:10Z"
- content="""
-@mey.vn, Debian packages of git-annex, as uploaded to the Debian repositories, are built with whatever libc version the Debian autobuilder is running. You cannot, in general, install packages from Debian unstable into stable without upgrading your libc6.
-
-The release notes were not talking about the Debian packages, but about the [[Linux_standalone]] tarballs. Those are built with libc 2.13.
-"""]]
diff --git a/doc/install/Docker.mdwn b/doc/install/Docker.mdwn
deleted file mode 100644
--- a/doc/install/Docker.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-There is not yet a pre-built Docker image for git-annex. However, it's
-easy to add it to an image.
-
-For example:
-
-	docker run -i -t joeyh/debian-unstable apt-get install git-annex
diff --git a/doc/install/Fedora.mdwn b/doc/install/Fedora.mdwn
deleted file mode 100644
--- a/doc/install/Fedora.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-git-annex is available in recent versions of Fedora.
-[status](http://koji.fedoraproject.org/koji/packageinfo?packageID=14145)
-
-Should be as simple as: `yum install git-annex`
-
-Note: Fedora's build does not currently include the git-annex webapp.
-
-----
-
-To install the latest version of git-annex on Fedora 18 and later, you can use `cabal`:
-
-<pre>
-# Install dependencies
-sudo yum install libxml2-devel gnutls-devel libgsasl-devel ghc cabal-install happy alex libidn-devel
-# Update the cabal list
-cabal update
-# Install c2hs, required by dependencies of git-annex, but not automatically installed
-cabal install --bindir=$HOME/bin c2hs
-# Install git-annex
-cabal install --bindir=$HOME/bin git-annex
-</pre>
-
-----
-
-Older version? Here's an installation recipe for Fedora 14 through 15.
-
-<pre>
-sudo yum install ghc cabal-install
-git clone git://git-annex.branchable.com/ git-annex
-cd git-annex
-git checkout ghc7.0
-cabal update
-cabal install --only-dependencies
-cabal configure
-cabal build
-cabal install --bindir=$HOME/bin
-</pre>
-
-Note: You can't just use `cabal install git-annex`, because Fedora does
-not yet ship ghc 7.4.
diff --git a/doc/install/Fedora/comment_1_c4db84e672ad4b45b522db735706b00f._comment b/doc/install/Fedora/comment_1_c4db84e672ad4b45b522db735706b00f._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_1_c4db84e672ad4b45b522db735706b00f._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://mebus.myopenid.com/"
- ip="2a01:198:3eb:0:4a5b:39ff:fea4:55b3"
- subject="RPM of version 4.2"
- date="2013-07-30T01:09:54Z"
- content="""
-Hi!
-
-Isn't there an rpm package of version 4.2 available for Fedora 17 or 18?
-
-Thanks!
-
-Mebus
-
-
-"""]]
diff --git a/doc/install/Fedora/comment_2_f98c488c09bef86e2b0414589ce9e141._comment b/doc/install/Fedora/comment_2_f98c488c09bef86e2b0414589ce9e141._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_2_f98c488c09bef86e2b0414589ce9e141._comment
+++ /dev/null
@@ -1,25 +0,0 @@
-[[!comment format=mdwn
- username="http://mebus.pip.verisignlabs.com/"
- nickname="Bussard"
- subject="comment 2"
- date="2013-07-30T20:41:07Z"
- content="""
-When I try to build in from source on Fedora 17, I get this error:
-
-[ 77 of 163] Compiling Utility.DiskFree ( Utility/DiskFree.hs, dist/build/git-annex/git-annex-tmp/Utility/DiskFree.o )
-[ 78 of 163] Compiling Utility.Url      ( Utility/Url.hs, dist/build/git-annex/git-annex-tmp/Utility/Url.o )
-
-Utility/Url.hs:111:88:
-    Couldn't match expected type `Maybe URI' with actual type `URI'
-    In the second argument of `fromMaybe', namely
-      `(newURI `relativeTo` u)'
-    In the expression: fromMaybe newURI (newURI `relativeTo` u)
-    In an equation for `newURI_abs':
-        newURI_abs = fromMaybe newURI (newURI `relativeTo` u)
-
-Any help?
-
-Mebus
-
-
-"""]]
diff --git a/doc/install/Fedora/comment_3_d872acf8865fe7c99a9b712db5b38ea4._comment b/doc/install/Fedora/comment_3_d872acf8865fe7c99a9b712db5b38ea4._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_3_d872acf8865fe7c99a9b712db5b38ea4._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.21"
- subject="comment 3"
- date="2013-07-30T21:25:32Z"
- content="""
-Edit Utility/Url.hs and play around with the version in the `MIN_VERSION_network` define.  It seems to me that your system needs to build with the #else branch of the #ifdef, despite having a version of the haskell network package older than 2.4.0. It's possible that the haskell network package has been modified by Fedora.
-"""]]
diff --git a/doc/install/Fedora/comment_4_93b3402e4c51e1a5c96f907bb528164b._comment b/doc/install/Fedora/comment_4_93b3402e4c51e1a5c96f907bb528164b._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_4_93b3402e4c51e1a5c96f907bb528164b._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkJafmCf-sg9_OM0pynFYM3AO4WCgJiaMI"
- nickname="Michele"
- subject="installing on fc19"
- date="2013-10-18T21:05:56Z"
- content="""
-i share my experience in installing from source on fc19, I must admit these are useful only for haskell novices:
-should cabal complain about missing libffi.so.5 (as it happened to me), do 
-
-     yum install compat-libffi
-
-and you'll get the missing library (the shipping version with fc19 is libffi.so.6)
-also: in order for the git annex to be picked up globally or better to end up in the default path i had to:
-
-     cabal install --global 
-"""]]
diff --git a/doc/install/Fedora/comment_5_0427e0503764b29e57abf9e97155136b._comment b/doc/install/Fedora/comment_5_0427e0503764b29e57abf9e97155136b._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_5_0427e0503764b29e57abf9e97155136b._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="http://mebus.myopenid.com/"
- ip="2a01:198:3eb:0:4a5b:39ff:fea4:55b3"
- subject="Error on Fedora 19"
- date="2013-10-19T14:57:12Z"
- content="""
-On Fedora 19, I am getting this error:
-
-http://pastebin.com/raw.php?i=c9SNjbXV
-
-Mebus
-
-
-
-"""]]
diff --git a/doc/install/Fedora/comment_6_1b1b38a79251fe2e8c1e4debbe3bc3c5._comment b/doc/install/Fedora/comment_6_1b1b38a79251fe2e8c1e4debbe3bc3c5._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_6_1b1b38a79251fe2e8c1e4debbe3bc3c5._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://mebus.myopenid.com/"
- ip="2a01:198:3eb:0:4a5b:39ff:fea4:55b3"
- subject="comment 6"
- date="2013-10-19T15:09:34Z"
- content="""
-Worked! I forgot to install c2hs.
-
-Mebus
-
-
-"""]]
diff --git a/doc/install/Fedora/comment_7_4832d271dcc63a6cd1c40fe38ad5e367._comment b/doc/install/Fedora/comment_7_4832d271dcc63a6cd1c40fe38ad5e367._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_7_4832d271dcc63a6cd1c40fe38ad5e367._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkJafmCf-sg9_OM0pynFYM3AO4WCgJiaMI"
- nickname="Michele"
- subject="building fails on fedora 19"
- date="2014-05-26T15:31:10Z"
- content="""
-latest version (git-annex-5.20140517) during cabal install git-annex I encounter this:
-
-[[!format sh \"\"\"
-[266 of 457] Compiling Remote.WebDAV    ( Remote/WebDAV.hs, dist/build/git-annex/git-annex-tmp/Remote/WebDAV.o )
-
-Remote/WebDAV.hs:380:32:
-    Constructor `StatusCodeException' should have 3 arguments, but has been given 2
-    In the pattern: StatusCodeException s _
-    In an equation for `matchStatusCodeException':
-        matchStatusCodeException want (StatusCodeException s _)
-          | s == want = Just ()
-          | otherwise = Nothing
-Failed to install git-annex-5.20140517
-cabal: Error: some packages failed to install:
-git-annex-5.20140517 failed during the building phase. The exception was:
-ExitFailure 1
-\"\"\"]]
-"""]]
diff --git a/doc/install/Fedora/comment_8_80e167cde1a6511683a8f6e8029c0da6._comment b/doc/install/Fedora/comment_8_80e167cde1a6511683a8f6e8029c0da6._comment
deleted file mode 100644
--- a/doc/install/Fedora/comment_8_80e167cde1a6511683a8f6e8029c0da6._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.176"
- subject="comment 8"
- date="2014-05-27T16:08:14Z"
- content="""
-@Michele, you seem to have an old version of the haskell DAV library installed. The simple solutions is probably `cabal install DAV` to upgrade to the new one.
-
-(The complex solution is to edit the file and copy the line 2 lines above the error, or fix the ifdefs somehow to work with whatever combination of versions of DAV and http-client or http-conduit you have installed.)
-"""]]
diff --git a/doc/install/FreeBSD.mdwn b/doc/install/FreeBSD.mdwn
deleted file mode 100644
--- a/doc/install/FreeBSD.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-git-annex is in FreeBSD ports in
-[devel/git-annex](http://www.freshports.org/devel/hs-git-annex/)
diff --git a/doc/install/Gentoo.mdwn b/doc/install/Gentoo.mdwn
deleted file mode 100644
--- a/doc/install/Gentoo.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Gentoo users can: `emerge git-annex`
-
-A possibly more up-to-date version is in the haskell portage overlay.
diff --git a/doc/install/Linux_standalone.mdwn b/doc/install/Linux_standalone.mdwn
deleted file mode 100644
--- a/doc/install/Linux_standalone.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-If your Linux distribution does not have git-annex packaged up for you,
-you can either build it [[fromsource]], or you can use a handy
-prebuilt tarball of the most recent release.
-
-This tarball should work on most Linux systems. It has basically no
-dependencies and is self-contained.
-
-* x86-32: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-i386.tar.gz)
-* x86-64: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-amd64.tar.gz)
-* x86-32, for ancient kernels: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-i386-ancient.tar.gz)
-* arm: [download tarball](https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-armel.tar.gz)
-
-To use, just unpack the tarball, `cd git-annex.linux` and run `./runshell`
--- this sets up an environment where you can use `git annex`, as well
-as everything else included in the bundle.
-
-Alternatively, you can unpack the tarball, and add the directory to your
-`PATH`, or symlink the programs in the directory to a directory in your
-PATH. This lets you use `git annex`, without overriding your system's
-own versions of git, etc.
-
-The arm version can be installed on NAS devices and other embedded ARM
-linux systems.
-
-* [[tips/Synology_NAS_and_git_annex]]
-* [[forum_thread|forum/new_linux_arm_tarball_build]]
-
-The build for ancient kernels is for use with Linux kernel versions
-such as 2.6.32. It will work on both 32 and 64 bit systems.
-
-## autobuilds
-
-An hourly autobuild is also available, thanks to Mesar Hameed and the University
-of Bath CS department.
-
-* x86-32: [download tarball](https://downloads.kitenet.net/git-annex/autobuild/i386/git-annex-standalone-i386.tar.gz) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/i386/))
-* x86-64: [download tarball](https://downloads.kitenet.net/git-annex/autobuild/amd64/git-annex-standalone-amd64.tar.gz) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/amd64/))
-* x86-32, for ancient kernels: [download tarball](https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/git-annex-standalone-i386-ancient.tar.gz) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/i386-ancient/))
-
-The arm autobuilder runs daily, and is hosted at [WetKnee Books](http://www.wetknee.com/).
-
-* arm: [download tarball](https://downloads.kitenet.net/git-annex/autobuild/armel/git-annex-standalone-armel.tar.gz) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/armel/))
-
-## technical details
-
-The way those tarballs are built is described in [joeyh's blog](http://joeyh.name/blog/entry/completely_linux_distribution-independent_packaging/).
diff --git a/doc/install/NixOS.mdwn b/doc/install/NixOS.mdwn
deleted file mode 100644
--- a/doc/install/NixOS.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Users of the [Nix package manager](http://nixos.org/) can install it by running:
-
-    nix-env -i git-annex
-
-When including it in a NixOS configuration.nix file, the name of the reference to the package is
-
-    haskellPackages.gitAnnex
-
-The build status of the package within Nix can be seen on the [Hydra Build
-Farm](http://hydra.nixos.org/job/nixpkgs/trunk/gitAndTools.gitAnnex).
diff --git a/doc/install/NixOS/comment_1_4e487ddd2654a8a992c1538b9c3bf003._comment b/doc/install/NixOS/comment_1_4e487ddd2654a8a992c1538b9c3bf003._comment
deleted file mode 100644
--- a/doc/install/NixOS/comment_1_4e487ddd2654a8a992c1538b9c3bf003._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn3p4i4lk_zMilvjnJ9sS6g2nerpgz0Fjc"
- nickname="Matthias"
- subject="build failure"
- date="2014-06-09T15:13:18Z"
- content="""
-Building git-annex with Nix 1.7 fails for me. Error:
-
-    trying https://git.samba.org/?p=rsync.git;a=commitdiff_plain;h=0dedfbce2c1b851684ba658861fe9d620636c56a
-      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
-                                     Dload  Upload   Total   Spent    Left  Speed
-    100  2277    0  2277    0     0   2805      0 --:--:-- --:--:-- --:--:--  5735
-    output path `/nix/store/w6l1c3cdr52arymv3zgwly7razwnsdll-CVE-2014-2855.patch' should have sha256 hash `1jpwwdf07naqxc8fv1lspc95jgk50j5j3wvf037bjay2qzpwjmvf', instead has `0j1pqmwsqc5mh815x28izi4baki2y2r5q8k7ma1sgs4xsgjc4rk8'
-    building path(s) `/nix/store/85v7c8b3ygpfj8m8bk98kcygf29qcbq7-cacert-20131205.pem.bz2'
-    cannot build derivation `/nix/store/im9p1y2xbh08yrwp5yggj1ii884wv3ql-rsync-3.1.0.drv': 1 dependencies couldn't be built
-    killing process 2599
-    cannot build derivation `/nix/store/sl48cnm06m7mcqxjfj2b0yv8am3blqr3-git-annex-5.20140517.drv': 1 dependencies couldn't be built
-    error: build of `/nix/store/sl48cnm06m7mcqxjfj2b0yv8am3blqr3-git-annex-5.20140517.drv' failed
-
-Someone has an idea what Nix expects me to do in this situation?
-"""]]
diff --git a/doc/install/OSX.mdwn b/doc/install/OSX.mdwn
deleted file mode 100644
--- a/doc/install/OSX.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-## git-annex.app
-
-[[!img /assistant/osx-app.png align=right link=/assistant]]
-For easy installation, use the prebuilt app bundle.
-
-* 10.11 El Capitan / 10.10 Yosemite / 10.9 Mavericks: [git-annex.dmg](https://downloads.kitenet.net/git-annex/OSX/current/10.10_Yosemite/git-annex.dmg)
-
-To run the [[git-annex_assistant|/assistant]], just
-install the app, look for the icon, and start it up. 
-
-To use git-annex at the command line, you can add
-`git-annex.app/Contents/MacOS` to your `PATH`
-
-Alternatively, from the command line you can run
-`git-annex.app/Contents/MacOS/runshell`, which makes your shell use all the
-programs bundled inside the app, including not just git-annex, but git, and
-several more. Handy if you don't otherwise have git installed.
-
-## autobuilds
-
-[[Joey]] autobuilds the app for 10.10 Yosemite
-(also reported to work on 10.9 Mavericks and 10.11 El Capitan).
-Thanks to Kevin McKenzie for hosting the autobuilder.
-
-* [autobuild of git-annex.dmg](https://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-yosemite/git-annex.dmg) ([build logs](https://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-yosemite/))
-
-## using Homebrew
-
-git-annex is now [[available in Homebrew|Homebrew]] (source) as well as [[available in Homebrew Cask|Homebrew-cask]] (binary).
-
-## using MacPorts
-
-git-annex is not available in MacPorts, but can be built from source using
-MacPorts tools. See [[MacPorts]].
-
-## building it yourself
-
-See [[porting]].
diff --git a/doc/install/OSX/Homebrew-cask.mdwn b/doc/install/OSX/Homebrew-cask.mdwn
deleted file mode 100644
--- a/doc/install/OSX/Homebrew-cask.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-[Homebrew Cask](http://caskroom.io) has a [cask](https://github.com/caskroom/homebrew-cask/blob/master/Casks/git-annex.rb) for git-annex.
-
-Homebrew cask users can simply run `brew cask install git-annex` to install git-annex and git-annex-shell from the OSX binary images.
diff --git a/doc/install/OSX/Homebrew.mdwn b/doc/install/OSX/Homebrew.mdwn
deleted file mode 100644
--- a/doc/install/OSX/Homebrew.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-[Homebrew](http://brew.sh/) has [a formula](https://github.com/Homebrew/homebrew/commits/master/Library/Formula/git-annex.rb) for git-annex.
-
-Homebrew users can simply run `brew install git-annex` to install git-annex.
-
-## buiding git-annex from sources
-
-This is the old recipe for building git-annex from source, using
-packages from homebrew. Useful if you want a newer version than the version
-in homebrew.
-
-<pre>
-brew install haskell-platform git ossp-uuid md5sha1sum coreutils gnutls libidn gsasl pkg-config libxml2
-brew link libxml2 --force
-cabal update
-mkdir $HOME/bin
-PATH=$HOME/bin:$PATH
-PATH=$HOME/.cabal/bin:$PATH
-cabal install c2hs --bindir=$HOME/bin
-cabal install gnuidn
-cabal install git-annex --bindir=$HOME/bin
-</pre>
diff --git a/doc/install/OSX/MacPorts.mdwn b/doc/install/OSX/MacPorts.mdwn
deleted file mode 100644
--- a/doc/install/OSX/MacPorts.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-This is not a recommended way to install git-annex. Use [[HomeBrew]] or the
-prebuilt app bundle instead.
-
-But if you really want to use MacPorts:
-
-Install the Haskell Platform from [[http://hackage.haskell.org/platform/mac.html]].
-The version provided by Macports is too old to work with current versions of git-annex.
-Then execute
-
-<pre>
-sudo port install git ossp-uuid md5sha1sum coreutils gnutls libxml2 libgsasl pkgconfig
-sudo cabal update
-PATH=$HOME/bin:$PATH
-cabal install c2hs git-annex --bindir=$HOME/bin
-</pre>
-
-## PATH setup
-
-Do not forget to add to your PATH variable your ~/bin folder. In your .bashrc, for example:
-<pre>
-PATH=$HOME/bin:$PATH
-</pre>
-
-See also:
-
-* [[forum/OSX__39__s_haskell-platform_statically_links_things]]
-* [[forum/OSX__39__s_default_sshd_behaviour_has_limited_paths_set]]
diff --git a/doc/install/OSX/MacPorts/comment_3_47a77a03040fe628109bd54f82f9ad7a._comment b/doc/install/OSX/MacPorts/comment_3_47a77a03040fe628109bd54f82f9ad7a._comment
deleted file mode 100644
--- a/doc/install/OSX/MacPorts/comment_3_47a77a03040fe628109bd54f82f9ad7a._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlDDW-g2WLLsLpcnCm4LykAquFY_nwbIrU"
- nickname="Daniel"
- subject="comment 3"
- date="2013-01-15T15:22:43Z"
- content="""
-Installing via the MacPorts method. I ran into this error.
-
-    \"_locale_charset\", referenced from: _localeEncoding in libHSbase-4.5.1.0.a(PrelIOUtils.o) 
-    ld: symbol(s) not found for architecture x86_64
-
-I was able to solve and get git-annex to build buy providing the --extra-lib-dirs parameter
-
-    cabal install c2hs git-annex --bindir=$HOME/bin --extra-lib-dirs=/usr/lib
-
-Cheers, [Daniel Wozniak](http://woz.io)
-"""]]
diff --git a/doc/install/OSX/comment_10_e5172de344908f85ce6cf976e3c3806b._comment b/doc/install/OSX/comment_10_e5172de344908f85ce6cf976e3c3806b._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_10_e5172de344908f85ce6cf976e3c3806b._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!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/install/OSX/comment_11_8d53c477b441ab0984257b21003c7cc7._comment b/doc/install/OSX/comment_11_8d53c477b441ab0984257b21003c7cc7._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_11_8d53c477b441ab0984257b21003c7cc7._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!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.
-"""]]
diff --git a/doc/install/OSX/comment_12_17b84f51de6bed88e373350b194c8a8d._comment b/doc/install/OSX/comment_12_17b84f51de6bed88e373350b194c8a8d._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_12_17b84f51de6bed88e373350b194c8a8d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="andrew.grangaard@bf525d11f8ebfbfb0976f7df2301aa0f36668f59"
- nickname="andrew.grangaard"
- subject="10.10 build works on El Capitan (10.11)"
- date="2016-02-02T01:30:45Z"
- content="""
-The OSX 10.10 build works fine on my 10.11 El Capitan machine.   Updated this page to reflect that.
-
-git-annex is also in 'brew cask', automating installation from the OSX binaries.   I've sent  [PR 18105](https://github.com/caskroom/homebrew-cask/pull/18105) to the brew cask team to get the cask to work for 10.11.
-"""]]
diff --git a/doc/install/OSX/comment_13_f4b39e2009274539d60b29711a4a2c8d._comment b/doc/install/OSX/comment_13_f4b39e2009274539d60b29711a4a2c8d._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_13_f4b39e2009274539d60b29711a4a2c8d._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="lhunath@3b4ff15f4600f3276d1776a490b734fca0f5c245"
- nickname="lhunath"
- subject="The application cannot be opened because its executable is missing."
- date="2016-05-05T04:33:06Z"
- content="""
-Just downloaded the DMG, copied the .app into /Applications and ran it; does nothing, from terminal:
-
-$ open -W /Applications/git-annex.app
-The application cannot be opened because its executable is missing.
-
-$ /Applications/git-annex.app/Contents/MacOS/git-annex-webapp
-$
-unable to start webapp in repository /Users/lhunath/annex: Not in a git repository.
-Launching web browser on file:///var/folders/np/v9byg9092bbf31jw5cydzszm0000gn/T/webapp1622650073984943658.html
-
-$ /Applications/git-annex.app/Contents/MacOS/git-annex version
-git-annex version: 6.20160427-gd0036b9
-build flags: Assistant Webapp Pairing Testsuite S3(multipartupload)(storageclasses) WebDAV FsEvents XMPP ConcurrentOutput TorrentParser MagicMime Feeds Quvi
-key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-"""]]
diff --git a/doc/install/OSX/comment_14_5581b7d1c09e6a78419d626bb25261b6._comment b/doc/install/OSX/comment_14_5581b7d1c09e6a78419d626bb25261b6._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_14_5581b7d1c09e6a78419d626bb25261b6._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 14"""
- date="2016-05-10T17:22:03Z"
- content="""
-I don't know what needs to be put where in the app to make `open`
-run git-annex-webapp. There is already a Info.plist file that I thought was
-supposed to handle that. If someone wants to help make `open` work please
-be my guest.
-"""]]
diff --git a/doc/install/OSX/comment_20_3e6a3c00444badf2cf7a9ee3d54af11e._comment b/doc/install/OSX/comment_20_3e6a3c00444badf2cf7a9ee3d54af11e._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_20_3e6a3c00444badf2cf7a9ee3d54af11e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnEgT3Gxm4AAK4zu3ft5-PsUmY6dr1F-gE"
- nickname="David"
- subject="OSX app bundle"
- date="2013-06-05T17:35:49Z"
- content="""
-I'm using the annex assistant from the annex bundle for the convenience, but sometimes I use git-annex directly from the command line. I have /Applications/git-annex.app/Contents/MacOS/ in my path, but is there any way you could build the app bundle with the manpage in there so I could add it to my MANPATH?  
-"""]]
diff --git a/doc/install/OSX/comment_25_db90984062a07576a4777b2d743161f1._comment b/doc/install/OSX/comment_25_db90984062a07576a4777b2d743161f1._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_25_db90984062a07576a4777b2d743161f1._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnyMzZZLS1xGW1raqc_9Md6Ksdkvx5rUJU"
- nickname="Michael"
- subject="confusion with bundled programs"
- date="2013-10-02T21:39:11Z"
- content="""
-I have fiddled with the fresh (as of Oct 2nd) build of assistant on OS X 10.8.5, and there has been a lot of problems with bundled software
-
-bundled git is an old 1.7.x version which keeps saying in the daemon logs it is too old to honor .gitignores etc
-at the same time I have git 1.8.4 installed through homebrew which works very nicely throughout my system
-
-I also have homebrew-installed gpg2:
-
-$ gpg2 --version
-gpg (GnuPG) 2.0.21
-libgcrypt 1.5.3
-
-(and have briefly experimented with using GPGSuite from gpgtools.org, which kept bailing with invalid autolocate directive in gpg.conf)
-
-however there is some unidentifiable gpg binary bundled with the assistant, which cannot connect to gpg-agent from gpg2, and doesn't work with GPGSuite (see above)
-
-is there a way to completely forgo usage of bundled software and have the webapp use whatever is already available on the system?
-
-"""]]
diff --git a/doc/install/OSX/comment_2_25552ff2942048fafe97d653757f1ad6._comment b/doc/install/OSX/comment_2_25552ff2942048fafe97d653757f1ad6._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_2_25552ff2942048fafe97d653757f1ad6._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 2"
- date="2012-07-24T15:09:29Z"
- content="""
-I've moved some outdated comments about installing on OSX to [[old_comments]].
-And also moved away some comments that helped build the instructions above.
-"""]]
diff --git a/doc/install/OSX/comment_4_25cac8bcd84a5210fc0a5243260b8cc7._comment b/doc/install/OSX/comment_4_25cac8bcd84a5210fc0a5243260b8cc7._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_4_25cac8bcd84a5210fc0a5243260b8cc7._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"
- nickname="Pere"
- subject="Snow Leopard"
- date="2013-01-18T15:51:48Z"
- content="""
-Hi,
-
-Are there plans to provide a git-annex.app that works on Snow Leopard? 
-
-Currently there are only installers for the Lions.
-
-http://downloads.kitenet.net/git-annex/OSX/current/
-
-Thanks :-)
-
-
-"""]]
diff --git a/doc/install/OSX/comment_5_39b4b748b4586bf32b37edfefef84bba._comment b/doc/install/OSX/comment_5_39b4b748b4586bf32b37edfefef84bba._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_5_39b4b748b4586bf32b37edfefef84bba._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.3.194"
- subject="comment 5"
- date="2013-01-18T17:25:36Z"
- content="""
-What we need to provide a Snow Leopard or other version build, is access to a box running that version of OSX, or someone with a box that doesn't mind compiling stuff and setting up the autobuilder (not very hard).
-"""]]
diff --git a/doc/install/OSX/comment_6_1a9c91ef43edc4148947f202ff604114._comment b/doc/install/OSX/comment_6_1a9c91ef43edc4148947f202ff604114._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_6_1a9c91ef43edc4148947f202ff604114._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"
- nickname="Pere"
- subject="Snow Leopard"
- date="2013-01-18T17:57:40Z"
- content="""
-If the process is very automatic I might contribute. I mean, if you tell me, install this and that package and run this script once a week, I might be able to help. I have a MacBook from 2007 with Snow Leopard. I also have macports installed, but I'm not a programmer.
-"""]]
diff --git a/doc/install/OSX/comment_7_892f7e65f95f43697164267c4b71c0d5._comment b/doc/install/OSX/comment_7_892f7e65f95f43697164267c4b71c0d5._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_7_892f7e65f95f43697164267c4b71c0d5._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.3.194"
- subject="comment 7"
- date="2013-01-18T20:16:52Z"
- content="""
-If you can get it to build using the instructions for Brew (or MacPorts) on this page, it's easy to get from there to a distributable app.
-"""]]
diff --git a/doc/install/OSX/comment_8_b94193a0583605920effa7179a6164d9._comment b/doc/install/OSX/comment_8_b94193a0583605920effa7179a6164d9._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_8_b94193a0583605920effa7179a6164d9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.7"
- subject="comment 8"
- date="2014-08-15T19:26:07Z"
- content="""
-@David, the bundle contains the man page since a while.
-
-@Michael, the best way to get a git-annex that does not use those bundled programs is probably to instead install it using homebrew.
-"""]]
diff --git a/doc/install/OSX/comment_9_f11f726d1fee3c4c91f3c984e792037d._comment b/doc/install/OSX/comment_9_f11f726d1fee3c4c91f3c984e792037d._comment
deleted file mode 100644
--- a/doc/install/OSX/comment_9_f11f726d1fee3c4c91f3c984e792037d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn3p4i4lk_zMilvjnJ9sS6g2nerpgz0Fjc"
- nickname="Matthias"
- subject="Why different versions?"
- date="2014-09-23T10:59:32Z"
- content="""
-Why are there different versions for 10.7, 10.8, 10.9 anyway? Is it not possible to produce an executable compatible with all these? I mean, it's the same architecture and executable format, not? I guess there has to be a reason, explanations are welcome :-)
-"""]]
diff --git a/doc/install/OSX/old_comments.mdwn b/doc/install/OSX/old_comments.mdwn
deleted file mode 100644
--- a/doc/install/OSX/old_comments.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Moved a bunch of outdated comments here, AFAIK all these issues are fixed.
diff --git a/doc/install/OSX/porting.mdwn b/doc/install/OSX/porting.mdwn
deleted file mode 100644
--- a/doc/install/OSX/porting.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-If you cannot get a OSX build of git-annex suitable for your computer,
-from eg [[HomeBrew]] or the regular [[OSX]] prebuilt app, you
-can try building git-annex from source on OSX, using haskell's cabal package
-manager.
-
-For general instructions on building git-annex from source see
-[[install/fromsource]]
diff --git a/doc/install/OSX/porting/comment_10_cd2120552ef894a37933b328136fa4cc._comment b/doc/install/OSX/porting/comment_10_cd2120552ef894a37933b328136fa4cc._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_10_cd2120552ef894a37933b328136fa4cc._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"
- nickname="Pere"
- subject="Segmentation Fault"
- date="2013-01-19T16:10:08Z"
- content="""
-I guess my adventure ends here. :'(
-"""]]
diff --git a/doc/install/OSX/porting/comment_11_740fa80e2e54e6fb570f820ff1f56440._comment b/doc/install/OSX/porting/comment_11_740fa80e2e54e6fb570f820ff1f56440._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_11_740fa80e2e54e6fb570f820ff1f56440._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc"
- nickname="Eric"
- subject="Updating to latest build"
- date="2013-01-25T06:05:35Z"
- content="""
-What is the appropriate way to update to the latest build of git-annex using cabal?
-"""]]
diff --git a/doc/install/OSX/porting/comment_12_a84028080578a8b60115b6c4ef823627._comment b/doc/install/OSX/porting/comment_12_a84028080578a8b60115b6c4ef823627._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_12_a84028080578a8b60115b6c4ef823627._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"
- nickname="Pere"
- subject="git annex on Snow Leopard"
- date="2013-01-25T14:36:52Z"
- content="""
-Is there any way I can try to solve or by-pass the Segmentation Fault I commeted before? 
-"""]]
diff --git a/doc/install/OSX/porting/comment_13_d6f1db401858ffea23c123db49f5b296._comment b/doc/install/OSX/porting/comment_13_d6f1db401858ffea23c123db49f5b296._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_13_d6f1db401858ffea23c123db49f5b296._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.3.125"
- subject="comment 13"
- date="2013-02-05T19:46:29Z"
- content="""
-@eric `cabal update && cabal upgrade git-annex`
-"""]]
diff --git a/doc/install/OSX/porting/comment_14_035f856923276b0edad879e196e94097._comment b/doc/install/OSX/porting/comment_14_035f856923276b0edad879e196e94097._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_14_035f856923276b0edad879e196e94097._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmCmNS-oUgYfNg85-LPuxzTZJUp0sIgprM"
- nickname="Jonas"
- subject="more homebrew"
- date="2013-02-16T19:46:47Z"
- content="""
-i had macports installed. then i installed brew, instaled haskell via brew. i needed to set 
-    PATH=$HOME/bin:/usr/local/bin:$PATH
-"""]]
diff --git a/doc/install/OSX/porting/comment_15_336e0acb00e84943715e69917643a69e._comment b/doc/install/OSX/porting/comment_15_336e0acb00e84943715e69917643a69e._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_15_336e0acb00e84943715e69917643a69e._comment
+++ /dev/null
@@ -1,35 +0,0 @@
-[[!comment format=mdwn
- username="https://launchpad.net/~wincus"
- nickname="Juan Moyano"
- subject="git annex on Snow Leopard"
- date="2013-03-26T16:02:54Z"
- content="""
-I'm having the same issue as @Pere, with a newer version of DAV :(
-
-cabal: Error: some packages failed to install:
-DAV-0.3.1 failed during the building phase. The exception was:
-ExitFailure 11
-git-annex-4.20130323 depends on shakespeare-css-1.0.3 which failed to install.
-persistent-1.1.5.1 failed during the building phase. The exception was:
-ExitFailure 11
-persistent-template-1.1.3.1 depends on persistent-1.1.5.1 which failed to
-install.
-shakespeare-css-1.0.3 failed during the building phase. The exception was:
-ExitFailure 11
-yesod-1.1.9.2 depends on shakespeare-css-1.0.3 which failed to install.
-yesod-auth-1.1.5.3 depends on shakespeare-css-1.0.3 which failed to install.
-yesod-core-1.1.8.2 depends on shakespeare-css-1.0.3 which failed to install.
-yesod-default-1.1.3.2 depends on shakespeare-css-1.0.3 which failed to
-install.
-yesod-form-1.2.1.3 depends on shakespeare-css-1.0.3 which failed to install.
-yesod-json-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.
-yesod-persistent-1.1.0.1 depends on shakespeare-css-1.0.3 which failed to
-install.
-yesod-static-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.
-
-
-
-*Any ideas?*
-
-
-"""]]
diff --git a/doc/install/OSX/porting/comment_16_1befafa862b7d07b1f6e57c0182497cf._comment b/doc/install/OSX/porting/comment_16_1befafa862b7d07b1f6e57c0182497cf._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_16_1befafa862b7d07b1f6e57c0182497cf._comment
+++ /dev/null
@@ -1,36 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc"
- nickname="Bret"
- subject="Snow Leopard Issues"
- date="2013-04-14T20:17:17Z"
- content="""
-I was able to build snow leopard completely for the first time over last night (it took a very long time to build all the tools and dependancies).  Woohoo!
-
-The way I was able to fully build on a 32-bit 10.6 machine was this
-
-1. Delete ~/.ghc and ~/.cabal.  They were full of random things and were causing problems.
-2. `brew uninstall ghc and haskell-platform`
-3. `brew update`
-4. `brew install git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2`
-5. `brew upgrade git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2` (Some of these were already installed/up to date.
-6. `brew link libxml2`
-7. `brew install haskell-platform`  (This takes a long, long time).
-8. `cabal update` (assuming you have added `~/.cabal/bin` to your path
-9. `cabal install cablal-install`
-10. `cabal install c2hs`
-11. `cabal install git-annex`
-
-
-It also appears to be running fairly smoothly than it had in the past on a 32-bit SL system.  Thats also neat.  
-
-The problem is that it seems to not really work as git annex though, probably due to the error relating you get when you start up the webapp:
-Running
-`git annex webapp` 
-The browser starts up, and I get 3 of these errors:
-`Watcher crashed: Need at least OSX 10.7.0 for file-level FSEvents`
-
-Pairing with a local computer appears to work to systems running 10.7, but when you complete the process, they never show up in the repository list.
-
-
-Also on a side note, when running `git annex webapp` it triggers the opening of an html file in whatever the default html file handler is.  I edit a lot of html, so for me that is usually a text editor.  I had to change the file handler to open html files with my web browser for the `git annex webapp` to actually work.  Is there a way to change that so that `git annex webapp` uses the default web browser for the system rather than the default html file handler?
-"""]]
diff --git a/doc/install/OSX/porting/comment_17_19c08b2c6c2c5cd88bf96d2bcbbd9055._comment b/doc/install/OSX/porting/comment_17_19c08b2c6c2c5cd88bf96d2bcbbd9055._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_17_19c08b2c6c2c5cd88bf96d2bcbbd9055._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 17"
- date="2013-04-16T20:31:10Z"
- content="""
-@Bret, the assistant relies on FSEvents pretty heavily. It seems to me your best bet is to upgrade OSX to a version that supports FSEvents.
-
-You can certainly use the rest of git-annex on Snow Leopard without FSEvents.
-"""]]
diff --git a/doc/install/OSX/porting/comment_18_537fad5d8854e765499d47602d1ab398._comment b/doc/install/OSX/porting/comment_18_537fad5d8854e765499d47602d1ab398._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_18_537fad5d8854e765499d47602d1ab398._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc"
- nickname="Bret"
- subject="Can't update"
- date="2013-04-18T00:58:19Z"
- content="""
-The laptop is one of the first macbook pro's with a 32 bit chip, which apple dropped support for in 10.7, so the furthest it can update to is 10.6.x. :(
-"""]]
diff --git a/doc/install/OSX/porting/comment_19_18d4377f4ded5604d395d73783ba82c9._comment b/doc/install/OSX/porting/comment_19_18d4377f4ded5604d395d73783ba82c9._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_19_18d4377f4ded5604d395d73783ba82c9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://edheil.wordpress.com/"
- ip="99.54.57.201"
- subject="comment 19"
- date="2013-04-18T02:05:34Z"
- content="""
-sounds like a prime candidate for a nice lightweight linux distro ;)
-"""]]
diff --git a/doc/install/OSX/porting/comment_22_6b5f44a98f9d37a1c6ecfe19a60fe6c5._comment b/doc/install/OSX/porting/comment_22_6b5f44a98f9d37a1c6ecfe19a60fe6c5._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_22_6b5f44a98f9d37a1c6ecfe19a60fe6c5._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"
- nickname="Andrew"
- subject="comment 22"
- date="2013-07-25T02:19:53Z"
- content="""
-Rather than specifying --bindir on the command line for cabal, I edited my ~/.cabal/config to add this line:
-
-    symlink-bindir: /usr/local/bin
-
-This installs the binaries to ~/.cabal/bin but symlinks them into /usr/local/bin alongside the links that homebrew installs. Additionally, I symlinked /usr/local/bin/git-annex-shell to /usr/local/bin/git-annex which made things work great from remote hosts via ssh.
-"""]]
diff --git a/doc/install/OSX/porting/comment_23_3d82a270dd4b0159f4aab5675166e1e3._comment b/doc/install/OSX/porting/comment_23_3d82a270dd4b0159f4aab5675166e1e3._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_23_3d82a270dd4b0159f4aab5675166e1e3._comment
+++ /dev/null
@@ -1,30 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmL8pteP2jbYJUn1M3CbeLDvz2SWAA1wtg"
- nickname="Kristian"
- subject="Build failure using Haskel Platform"
- date="2013-09-15T18:49:01Z"
- content="""
-I get this error when I try to build git-annex using \"cabal install git-annex\"
-
-    [ 34 of 347] Compiling Utility.Misc     ( Utility/Misc.hs, dist/build/git-annex/git-annex-tmp/Utility/Misc.o )
-    [ 35 of 347] Compiling Utility.Process  ( Utility/Process.hs, dist/build/git-annex/git-annex-tmp/Utility/Process.o )
-    [ 36 of 347] Compiling Utility.Network  ( Utility/Network.hs, dist/build/git-annex/git-annex-tmp/Utility/Network.o )
-    [ 37 of 347] Compiling Utility.SRV      ( Utility/SRV.hs, dist/build/git-annex/git-annex-tmp/Utility/SRV.o )
-    
-    Utility/SRV.hs:70:54:
-        Couldn't match expected type `Maybe
-                                        [(Int, Int, Integer, B8.ByteString)]'
-                    with actual type `Either
-                                        dns-1.0.0:Network.DNS.Internal.DNSError
-                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'
-        In the third argument of `maybe', namely `r'
-        In the second argument of `($)', namely
-          `maybe [] (orderHosts . map tohosts) r'
-        In a stmt of a 'do' block:
-          return $ maybe [] (orderHosts . map tohosts) r
-    Failed to install git-annex-4.20130909
-    cabal: Error: some packages failed to install:
-    git-annex-4.20130909 failed during the building phase. The exception was:
-    ExitFailure 1
-
-"""]]
diff --git a/doc/install/OSX/porting/comment_24_b9d3563a2cc3d769f27876e028dc344d._comment b/doc/install/OSX/porting/comment_24_b9d3563a2cc3d769f27876e028dc344d._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_24_b9d3563a2cc3d769f27876e028dc344d._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.128"
- subject="comment 24"
- date="2013-09-17T15:56:17Z"
- content="""
-@Kristian, a new version of the DNS library has caused this. A workaround is to pass `-f-DNS` to the cabal command.
-
-I am in the process of adding support for the new DNS library version in git now.
-
-By the way, please [[file_a_bug|bugs]] if you have a big ugly looking build failure like that, so as to not clutter up this page.
-"""]]
diff --git a/doc/install/OSX/porting/comment_27_2a60108a440231ba83f5a54b6bcc5488._comment b/doc/install/OSX/porting/comment_27_2a60108a440231ba83f5a54b6bcc5488._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_27_2a60108a440231ba83f5a54b6bcc5488._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"
- nickname="Carlo"
- subject="comment 27"
- date="2013-10-16T09:40:23Z"
- content="""
-The [FSevents framework itself has been around since leopard](http://arstechnica.com/apple/2007/10/mac-os-x-10-5/7/).
-
-[This fsevents wrapper project](https://github.com/rastersize/CDEvents) supports snow leopard and even leopard, maybe it will provide some clues on how it was done.
-
-I'm guessing it would be worth it, [snow leopard is still the most popular OSX as of April](http://www.patentlyapple.com/patently-apple/2013/04/snow-leopard-remains-the-most-popular-version-of-os-x.html). From my own experience, snow leopard is a huge life extender for 2+ year old hardware. Lion just makes them sluggishly painful to use.
-
-Maybe someone could volunteer an SL machine for remote development? Sorry, mine are tied down :(
-"""]]
diff --git a/doc/install/OSX/porting/comment_27_d453510b9bb62072a4c663206c12c8a4._comment b/doc/install/OSX/porting/comment_27_d453510b9bb62072a4c663206c12c8a4._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_27_d453510b9bb62072a4c663206c12c8a4._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="64.134.31.139"
- subject="comment 27"
- date="2013-10-16T15:14:53Z"
- content="""
-The git-annex assistant uses **file level** FSevents to detect which files have been changed. Would it be possible to make it work with older versions that don't provide file-level events? Probably. The code for BSD kqueue deals with similar limitations in needing to scan the directory to find the files that actually changed. If someone cares about old versions of OSX and wants to do that work I'll happily support you.
-"""]]
diff --git a/doc/install/OSX/porting/comment_28_0970bfd63137ea48701dff6aea1b4bcb._comment b/doc/install/OSX/porting/comment_28_0970bfd63137ea48701dff6aea1b4bcb._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_28_0970bfd63137ea48701dff6aea1b4bcb._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="http://alan.petitepomme.net/"
- nickname="Alan Schmitt"
- subject="dbus support?"
- date="2013-10-18T08:24:11Z"
- content="""
-Hello,
-
-I just compiled git-annex using cabal on OS X, and I see there is no dbus support:
-
-    Assistant/Threads/NetWatcher.hs:26:0:
-         warning: #warning Building without dbus support; will poll for network connection changes
-    
-    Assistant/Threads/MountWatcher.hs:33:0:
-         warning: #warning Building without dbus support; will use mtab polling
-
-Is this problematic? I see I can install dbus using homebrew. If I do so, will I have dbus support (after recompiling git-annex)?
-"""]]
diff --git a/doc/install/OSX/porting/comment_29_8622ed56c6a8034c20fb311418d94003._comment b/doc/install/OSX/porting/comment_29_8622ed56c6a8034c20fb311418d94003._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_29_8622ed56c6a8034c20fb311418d94003._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"
- nickname="Carlo"
- subject="comment 29"
- date="2013-10-18T15:58:59Z"
- content="""
-I think I dragged you out of dev mode for commenting unnecessarily, sorry about that. Apparently, [Lion](http://www.redmondpie.com/os-x-lion-vs-os-x-snow-leopard-head-to-head-performance-showdown/) and [Mountain Lion are fine on older hardware](http://apple.stackexchange.com/questions/58453/will-mountain-lion-make-an-older-computer-run-faster-or-slower). For a while [a daemon cause Lion slowdowns for a day after upgrade](https://discussions.apple.com/message/15719036) for a while, which was enough to cause a reputation.
-"""]]
diff --git a/doc/install/OSX/porting/comment_30_ce58633ef5b2f8f4caa7e626358f33be._comment b/doc/install/OSX/porting/comment_30_ce58633ef5b2f8f4caa7e626358f33be._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_30_ce58633ef5b2f8f4caa7e626358f33be._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="64.134.31.139"
- subject="comment 30"
- date="2013-10-19T15:31:45Z"
- content="""
-@Alan you don't need to install dbus on OSX. The polling code will work. On the other hand if you'd like to experiment with installing dbus and report back, perhaps it's worth a try. It's nice when the git-annex assistant can instantly detect when drives are plugged in, and then the network connection changes and react to it. On Linux, dbus gives it that capability.
-"""]]
diff --git a/doc/install/OSX/porting/comment_31_09084a7b3cf06bfa3add0f4991476ffe._comment b/doc/install/OSX/porting/comment_31_09084a7b3cf06bfa3add0f4991476ffe._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_31_09084a7b3cf06bfa3add0f4991476ffe._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://alan.petitepomme.net/"
- nickname="Alan Schmitt"
- subject="dbus and homebrew"
- date="2013-10-20T17:25:04Z"
- content="""
-I'm trying to build git-annex with dbus support, and even though I installed dbus (through homebrew), at the end of compilation I get the warning about \"building without dbus\". Is there something special I need to do for git-annex to see I have installed dbus?
-
-(Also, it tells me at the beginning that I don't have gcrypt, but libgcrypt is installed.)
-"""]]
diff --git a/doc/install/OSX/porting/comment_32_a46d8e3e7795b9afb1e1c2be943d12af._comment b/doc/install/OSX/porting/comment_32_a46d8e3e7795b9afb1e1c2be943d12af._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_32_a46d8e3e7795b9afb1e1c2be943d12af._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="64.134.31.139"
- subject="comment 32"
- date="2013-10-21T22:47:14Z"
- content="""
-You probably need to install libdbus dev stuff, and then the haskell dbus library. But it's certainly going to need code changes to make git-annex use dbus in any way on OSX, assuming there are even useful dbus events generated for network connections and drives being mounted on OSX.
-
-It was saying \"gcrypt\" when it meant \"git-remote-gcrypt\".
-"""]]
diff --git a/doc/install/OSX/porting/comment_33_203a36322b3c453c05c8906c64e62e06._comment b/doc/install/OSX/porting/comment_33_203a36322b3c453c05c8906c64e62e06._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_33_203a36322b3c453c05c8906c64e62e06._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://alan.petitepomme.net/"
- nickname="Alan Schmitt"
- subject="comment 33"
- date="2013-10-23T11:39:51Z"
- content="""
-I installed the haskell DBus library, but it's still not picking it up. Is there some additional option to pass to cabal, or is it supposed to find it automatically?
-"""]]
diff --git a/doc/install/OSX/porting/comment_34_874ff01f27911baf6ef0f559d5d5f5a0._comment b/doc/install/OSX/porting/comment_34_874ff01f27911baf6ef0f559d5d5f5a0._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_34_874ff01f27911baf6ef0f559d5d5f5a0._comment
+++ /dev/null
@@ -1,27 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn3rK4VDzxyhmrIc18z7F5OuXvEbUsgUac"
- nickname="Srinath"
- subject="build issue with brew technique on Darwin Kernel Version 13.0.0"
- date="2014-02-15T02:17:16Z"
- content="""
-Following the Mac OS X brew instructions from the top of the board, I got the following error:
-
-[5 of 5] Compiling Yesod            ( Yesod.hs, dist/build/Yesod.o )
-In-place registering yesod-1.2.5...
-Installing library in /Users/srinathv/.cabal/lib/yesod-1.2.5/ghc-7.6.3
-Registering yesod-1.2.5...
-Installed yesod-1.2.5
-cabal: Error: some packages failed to install:
-git-annex-5.20140210 depends on libxml-sax-0.7.4 which failed to install.
-libxml-sax-0.7.4 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to
-install.
-
-
-Then I perused the comments and did:
-$brew link libmxl2 --force
-$cabal install git-annex --bindir=$HOME/bin
-
-with success.  
-"""]]
diff --git a/doc/install/OSX/porting/comment_8_38d9c2eea1090674de2361274eab5b0e._comment b/doc/install/OSX/porting/comment_8_38d9c2eea1090674de2361274eab5b0e._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_8_38d9c2eea1090674de2361274eab5b0e._comment
+++ /dev/null
@@ -1,29 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"
- nickname="Pere"
- subject="I couldn't install it on Snow Leopard"
- date="2013-01-19T15:04:27Z"
- content="""
-Bad news, it looks like I'm not able to install git-annex to my machine: When I run
-
-    sudo cabal install c2hs git-annex --bindir=$HOME/bin
-
-I get the following error:
-
-    cabal: Error: some packages failed to install:
-    DAV-0.3 failed during the building phase. The exception was:
-    ExitFailure 11
-    git-annex-3.20130114 depends on yesod-core-1.1.7.1 which failed to install.
-    yesod-1.1.7.2 depends on yesod-core-1.1.7.1 which failed to install.
-    yesod-auth-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.
-    yesod-core-1.1.7.1 failed during the building phase. The exception was:
-    ExitFailure 11
-    yesod-default-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.
-    yesod-form-1.2.0.2 depends on yesod-core-1.1.7.1 which failed to install.
-    yesod-json-1.1.2 depends on yesod-core-1.1.7.1 which failed to install.
-    yesod-persistent-1.1.0.1 depends on yesod-core-1.1.7.1 which failed to
-    install.
-    yesod-static-1.1.1.2 depends on yesod-core-1.1.7.1 which failed to install.
-
-What does *ExitFailure 11* mean?
-"""]]
diff --git a/doc/install/OSX/porting/comment_9_35bf3812db6f3ef25da9b3bc84f147c5._comment b/doc/install/OSX/porting/comment_9_35bf3812db6f3ef25da9b3bc84f147c5._comment
deleted file mode 100644
--- a/doc/install/OSX/porting/comment_9_35bf3812db6f3ef25da9b3bc84f147c5._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.3.194"
- subject="comment 9"
- date="2013-01-19T16:02:35Z"
- content="""
-sig11 is a Segmentation Fault, probably from a C library used by DAV for HTTP in this case.
-"""]]
diff --git a/doc/install/ScientificLinux5.mdwn b/doc/install/ScientificLinux5.mdwn
deleted file mode 100644
--- a/doc/install/ScientificLinux5.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-For SL6/CentOS6 install the EPEL repo and yum install git-annex. 
-
-I was waiting for my backups to be done hence this article, as I was using
-_git-annex_ to manage my files and I decided I needed to have
-git-annex on a SL5 based machine. SL5 is just an opensource
-clone/recompile of RHEL5.
-
-I haven't tried to install the newer versions of Haskell Platform and
-GHC in a while on SL5 to install git-annex. But the last time I checked
-when GHC7 was out, it was a pain to install GHC on SL5.
-
-However I have discovered that someone has gone through the trouble of
-packaging up GHC and Haskell Platform for RHEL based distros.
-
-* <http://justhub.org/download> - Packaged GHC and Haskell Platform
-  RPM's for RHEL based systems.
-
-I'm primarily interested in installing _git-annex_ on SL5 based
-systems. The installation process goes as such...
-
-First install GHC and Haskell Platform (you need root for these
-following steps)
-
-    $ wget http://sherkin.justhub.org/el5/RPMS/x86_64/justhub-release-2.0-4.0.el5.x86_64.rpm
-    $ rpm -ivh justhub-release-2.0-4.0.el5.x86_64.rpm
-    $ yum install haskell
-
-The RPM's don't place the files in /usr/bin, so you must add the
-following to your .bashrc (from here on you don't need root if you
-don't want things to be system wide)
-
-    $ export PATH=/usr/hs/bin:$PATH
-
-Once the GHC packages are installed and are in your execution path, using
-cabal to build git-annex just makes life easier, it
-should install all the needed dependancies. See "minimal build with cabal
-and stackage" in [[fromsource]] for instructions.
diff --git a/doc/install/Ubuntu.mdwn b/doc/install/Ubuntu.mdwn
deleted file mode 100644
--- a/doc/install/Ubuntu.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-## Saucy
-
-	sudo apt-get install git-annex
-
-Warning: The version of git-annex shipped in Ubuntu Saucy had
-[a bug that can cause problems when creating repositories using the webapp](http://git-annex.branchable.com/bugs/Freshly_initialized_repo_has_staged_change___34__deleted:_uuid.log__34__/).
-
-## Raring
-	
-	sudo apt-get install git-annex
-
-Note: This version is too old to include the [[assistant]] or its WebApp,
-but is otherwise usable.
-
-## Precise
-
-	sudo apt-get install git-annex
-
-Note: This version is too old to include the [[assistant]] or its WebApp,
-but is otherwise usable.
-
-## Precise PPA
-
-<https://launchpad.net/~fmarier/+archive/git-annex>
-
-A newer version of git-annex, including the [[assistant]] and WebApp.
-(Maintained by François Marier)
-
-	sudo add-apt-repository ppa:fmarier/git-annex
-	sudo apt-get update
-	sudo apt-get install git-annex
-
-If you don't have add-apt-repository installed run this command first:
-
-	sudo apt-get install software-properties-common python-software-properties
-
-
-## Oneiric
-
-	sudo apt-get install git-annex
-
-Warning: The version of git-annex shipped in Ubuntu Oneiric
-had [a bug that prevents upgrades from v1 git-annex repositories](https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/875958).
-If you need to upgrade such a repository, get a newer version of git-annex.
-
-## backport
-
-If the version shipped with Ubuntu is too old, 
-the [NeuroDebian team](http://neuro.debian.net/) provides a
-[standalone build package](http://neuro.debian.net/pkgs/git-annex-standalone.html)
-that is regularly updated and that should work across all releases of
-Ubuntu.
diff --git a/doc/install/Ubuntu/Phone.mdwn b/doc/install/Ubuntu/Phone.mdwn
deleted file mode 100644
--- a/doc/install/Ubuntu/Phone.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Ubuntu is available on multiple phones, and as they are running Ubuntu, git-annex can be installed.
-
-## Installation
-
-Use phablet-config writable-image to make the image writable.
-
-Then install git-annex using apt (apt install git-annex).
-
-## Issues
-
-The Debian package does not include the webapp:
-git-annex version: 5.20141125
-build flags: Assistant Pairing Testsuite S3 Inotify DBus DesktopNotify XMPP DNS Feeds Quvi TDFA CryptoHash
-key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-remote types: git gcrypt S3 bup directory rsync web tahoe glacier ddar hook external
-
-### Application Compatibility
-
-I have had difficulties getting the Music app to play music in a git-annex repository.
-
diff --git a/doc/install/Ubuntu/comment_10_490e065314693423ab6969d8ae6978fe._comment b/doc/install/Ubuntu/comment_10_490e065314693423ab6969d8ae6978fe._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_10_490e065314693423ab6969d8ae6978fe._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkdiXn5s1wX2Zncy1S7_h-yPTv2gt0bmmY"
- nickname="Jacob"
- subject="comment 10"
- date="2013-10-16T11:43:36Z"
- content="""
-would be great to get the PPA updated with the latest git-annex; i'm finding synchronisation bugs (ie. updates made to word documents aren't replicated), and discovered its rather old now.
-"""]]
diff --git a/doc/install/Ubuntu/comment_11_4ebac3fb43de854ed1a3b1d2ea94011a._comment b/doc/install/Ubuntu/comment_11_4ebac3fb43de854ed1a3b1d2ea94011a._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_11_4ebac3fb43de854ed1a3b1d2ea94011a._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="fmarier"
- ip="207.134.53.206"
- subject="Re: comment 10"
- date="2013-10-16T13:43:37Z"
- content="""
-Jacob: make sure you have the right URL for the PPA: https://launchpad.net/~fmarier/+archive/git-annex
-
-It used to be in my main PPA, now it's in a separate PPA by itself. The package was removed from the original PPA (hence it won't update) but is fully up to date in the new one.
-"""]]
diff --git a/doc/install/Ubuntu/comment_12_38f69dffe2db0d15e4c4e5cb47f40ef8._comment b/doc/install/Ubuntu/comment_12_38f69dffe2db0d15e4c4e5cb47f40ef8._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_12_38f69dffe2db0d15e4c4e5cb47f40ef8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmNu4V5fvpLlBhaCUfXXOB0MI5NXwh8SkU"
- nickname="Adam"
- subject="Raring?"
- date="2013-11-01T20:28:04Z"
- content="""
-I'm also on Raring and the latest version available is 3.20121112ubuntu4, nearly a year old.  The PPA is only for Precise.  The tarball is a daily snapshot, and I would much rather run a released version right now.  What can I do?  Can't the PPA be built automatically for Raring and Saucy?
-"""]]
diff --git a/doc/install/Ubuntu/comment_13_7964374bb2332940677eea570bdb0b69._comment b/doc/install/Ubuntu/comment_13_7964374bb2332940677eea570bdb0b69._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_13_7964374bb2332940677eea570bdb0b69._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawntodrSgODU27WUCyN2PV7TC14YMkyaoxQ"
- nickname="Dennis"
- subject="Ubuntu Trusty 14.04"
- date="2015-01-24T03:20:48Z"
- content="""
-I am searching for current packages for Ubuntu Trusty 14.04. The version shipped is 5.20140412ubuntu1, but I would like to try a more recent version to see if an issue I experience still persists. Is there any up-to-date PPA available for Trusty?
-"""]]
diff --git a/doc/install/Ubuntu/comment_14_b511063001af2e2170bef657cf016ff2._comment b/doc/install/Ubuntu/comment_14_b511063001af2e2170bef657cf016ff2._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_14_b511063001af2e2170bef657cf016ff2._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawltxdgYMUK4CMJh3jC8AlegwyoiHA9Ka7o"
- nickname="Justin"
- subject="Trusty PPA"
- date="2015-01-27T18:24:50Z"
- content="""
-@Dennis, I just got a backport of the latest release (5.20150113) running under trusty.  This was my first attempt at backporting software and it ended up being a fairly big project.  I had to pull in a lot of haskell dependencies from vivid in order to get this to build.
-
-I'll attempt to keep this PPA up-to-date as long as I don't have to do too much more build dep wrangling.
-
-<https://launchpad.net/~jtgeibel/+archive/ubuntu/ppa?field.series_filter=trusty>
-"""]]
diff --git a/doc/install/Ubuntu/comment_1_d1c511153fe94bf33e19a1281f1c92f2._comment b/doc/install/Ubuntu/comment_1_d1c511153fe94bf33e19a1281f1c92f2._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_1_d1c511153fe94bf33e19a1281f1c92f2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY"
- nickname="Pedro"
- subject="comment 1"
- date="2013-05-20T15:53:25Z"
- content="""
-Note that the fmarier ppa includes more than just git-annex. I've asked the author if he could segregate git-annex into a separate ppa.
-"""]]
diff --git a/doc/install/Ubuntu/comment_2_ad13886c1c1f76d1cd995ea7b7d8471c._comment b/doc/install/Ubuntu/comment_2_ad13886c1c1f76d1cd995ea7b7d8471c._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_2_ad13886c1c1f76d1cd995ea7b7d8471c._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlQ7ZdQxAps4v0cl5J3wKGWD8243Gy8-m0"
- nickname="Phil"
- subject="PPA Package Pinning"
- date="2013-05-23T21:18:14Z"
- content="""
-@Pedro, see <http://askubuntu.com/a/170265> for blocking all packages except git-annex from François's repo.
-"""]]
diff --git a/doc/install/Ubuntu/comment_3_a08817322739b03cf0fec97283b16f1a._comment b/doc/install/Ubuntu/comment_3_a08817322739b03cf0fec97283b16f1a._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_3_a08817322739b03cf0fec97283b16f1a._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://openid.fmarier.org/"
- nickname="fmarier"
- subject="New PPA only contains git-annex"
- date="2013-06-15T07:45:13Z"
- content="""
-As Pedro suggested, I've moved my git-annex backport to a separate PPA with only git-annex and the 220 Haskell packages it depends on.
-"""]]
diff --git a/doc/install/Ubuntu/comment_4_fe0997e56136bd30749f0995cbf19b56._comment b/doc/install/Ubuntu/comment_4_fe0997e56136bd30749f0995cbf19b56._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_4_fe0997e56136bd30749f0995cbf19b56._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmhGq_ii5HaDkp9nx2m9qIMe-xxI4HV5wo"
- nickname="Jeff"
- subject="Packages way out of date"
- date="2013-07-27T19:02:38Z"
- content="""
-I'm setting up git-annex for myself (wanting to use the assistant to build myself a replacement for dropbox/box/ownCloud, etc.) and I installed the ubuntu package. Unfortunately, it is way out of date (3.20120406: amd64 i386). I didn't think to check the version. It's deceiving as the UI's are all the same, but it doesn't seem to work at all (syncing fails to remote servers, odd things happen with symlinking files to git object files, changing file permissions). 
-
-It gives a bad first intro into git-annex on ubuntu (*nix?) machines. It might be best just to point people at the cabal install for now so we get the lastest and greatest.
-
-Anyway, thanks for the great tool, I'm looking forward to using it.
-"""]]
diff --git a/doc/install/Ubuntu/comment_5_fbb5306a162db1a1ee9efa3523aac952._comment b/doc/install/Ubuntu/comment_5_fbb5306a162db1a1ee9efa3523aac952._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_5_fbb5306a162db1a1ee9efa3523aac952._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.246.110"
- subject="comment 5"
- date="2013-07-27T20:12:33Z"
- content="""
-Jeff, AFAIK the 3.20120406 in precise does not include the assistant at all. The Precise PPA is well up-to-date. 
-I don't think git-annex has anyone in Ubuntu updating the package, so it's whatever version is synced periodically from Debian.
-
-(AFAICS, all the problems Jeff had were due to manually creating an indirect mode repository when he expected direct mode.)
-"""]]
diff --git a/doc/install/Ubuntu/comment_6_a97e7f0e62ac685c3ded423bddeaa67f._comment b/doc/install/Ubuntu/comment_6_a97e7f0e62ac685c3ded423bddeaa67f._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_6_a97e7f0e62ac685c3ded423bddeaa67f._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmhGq_ii5HaDkp9nx2m9qIMe-xxI4HV5wo"
- nickname="Jeff"
- subject="comment 6"
- date="2013-07-27T21:51:11Z"
- content="""
-Ah, does it only have the webapp? I was able to boot the webapp and see messages, and it looked mostly the same, I assumed it was broken since no syncing was happening, but that would be due to the assistant not being there.
-
-I guess it's hard as a new user that goes straight for the easy/out-of-the box solution, via the assistant, after watching your video on it. I just assumed things were broken since I was seeing slightly different things. I didn't understand that the assistant was separate from the webapp (and was missing).
-
-Maybe mentioning the minimum required version on the assistant page to at least prompt users to check the version they're getting? I assumed following the link to the install guide, and installing the package for Ubuntu, would give me what I needed.
-
-
-"""]]
diff --git a/doc/install/Ubuntu/comment_7_921a223fd7e679b9ced3d8ba5ce688e0._comment b/doc/install/Ubuntu/comment_7_921a223fd7e679b9ced3d8ba5ce688e0._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_7_921a223fd7e679b9ced3d8ba5ce688e0._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmhGq_ii5HaDkp9nx2m9qIMe-xxI4HV5wo"
- nickname="Jeff"
- subject="comment 7"
- date="2013-07-27T21:53:45Z"
- content="""
-I see how I missed this page too. I just saw the `apt-get install git-annex` and didn't even register Ubuntu as a link with more information.
-"""]]
diff --git a/doc/install/Ubuntu/comment_8_1f943cb084fa8e21bc6ee5fc3118f02f._comment b/doc/install/Ubuntu/comment_8_1f943cb084fa8e21bc6ee5fc3118f02f._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_8_1f943cb084fa8e21bc6ee5fc3118f02f._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.246.110"
- subject="comment 8"
- date="2013-07-27T21:53:57Z"
- content="""
-The webapp is part of the assistant. I was told Precise didn't have it, but IIRC they were working on fixing that build, and perhaps that has happened now.
-"""]]
diff --git a/doc/install/Ubuntu/comment_9_c2f8b35ada873acb1ce593b04e2899fe._comment b/doc/install/Ubuntu/comment_9_c2f8b35ada873acb1ce593b04e2899fe._comment
deleted file mode 100644
--- a/doc/install/Ubuntu/comment_9_c2f8b35ada873acb1ce593b04e2899fe._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://openid.stackexchange.com/user/2eeca722-8d1c-41fe-8fda-13af7eaff6ae"
- nickname="Diggory"
- subject="Outdated in 13.04"
- date="2013-10-08T16:36:10Z"
- content="""
-13.04 Raring also has fairly outdated packages: 3.20121112ubuntu4
-Is there a PPA or some such for this? I suppose since Saucy will be out soon this is less critical, but would still be useful.
-
-These don't have direct mode, which (I think; I haven't tested it yet) is the feature I've been waiting for.
-"""]]
diff --git a/doc/install/Windows.mdwn b/doc/install/Windows.mdwn
deleted file mode 100644
--- a/doc/install/Windows.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-git-annex now does Windows!
-
-* First, [install Git for Windows](http://git-scm.com/downloads)  
-  Important: **Get the 32 bit version not the 64 bit version.**  
-  (Note that msysgit is no longer supported.)
-* Then, [install git-annex](https://downloads.kitenet.net/git-annex/windows/current/)
-
-This port is now in reasonably good shape for command-line use of
-git-annex. The assistant and webapp are also usable. There are some known
-problems and parts that don't work. See [[todo/windows_support]] for
-current status.
-
-To verify that the build of git-annex works in your Windows system, you are
-encouraged to run the test suite before using git-annex on real data. After
-installation, run `git annex test`. There will be a lot of output; the
-important thing is that it should end with "All tests passed".
-
-## autobuilds
-
-A daily build is also available, thanks to Yury V. Zaytsev and
-[NEST](http://nest-initiative.org/).
-
-* [download](https://downloads.kitenet.net/git-annex/autobuild/windows/) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/))
-
-## building it yourself
-
-To build git-annex from source on Windows, you need to install
-[Git for Windows](http://git-scm.com/downloads), and
-[Stack](http://haskellstack.org/).
-
-You also need to install rsync and wget for windows.
-They need to be linked with the same MINGW32 libraries that come with Git
-for Windows. One way is to download them from
-<https://downloads.kitenet.net/git-annex/windows/assets/>.
-Put them somewhere in PATH.
-
-Then open Git Bash, [[clone git-annex|download]], and in
-git-annex's source tree, run "stack build" to download and build
-all dependencies and git-annex. "stack install" will install git-annex.
-
-(To build the git-annex installer, you also need to install the NullSoft
-installer system. The script `standalone/windows/build.sh` is
-used to make the builds linked to above.)
diff --git a/doc/install/Windows/comment_1_e5e5c7b75859493a7d94cbf7df746fb9._comment b/doc/install/Windows/comment_1_e5e5c7b75859493a7d94cbf7df746fb9._comment
deleted file mode 100644
--- a/doc/install/Windows/comment_1_e5e5c7b75859493a7d94cbf7df746fb9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="jpfeifer@4c6cf56b857caa324cbbc9f133705fb2fb3f9bef"
- nickname="jpfeifer"
- subject="Compatibility with recent version of Git for Windows"
- date="2015-09-02T17:58:41Z"
- content="""
-Git for Windows now has a 64 bit version. Thus, the installation path must be adjusted accordingly. This page should note that git annex must be installed in the same folder as git itself.
-"""]]
diff --git a/doc/install/Windows/comment_2_ef329ea100b36a1180e232a1f97369d6._comment b/doc/install/Windows/comment_2_ef329ea100b36a1180e232a1f97369d6._comment
deleted file mode 100644
--- a/doc/install/Windows/comment_2_ef329ea100b36a1180e232a1f97369d6._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="eren.m.dursun@73116dce47e54243c7ee1637f1289afb02f07f4b"
- nickname="eren.m.dursun"
- subject="Re: Compatibility with recent version of Git for Windows"
- date="2015-11-29T19:24:03Z"
- content="""
-To install git-annex next to 64bit git on Windows:
-
-Start cmd.exe with administrator privileges and run
-mklink /J \"C:\Program Files (x86)\Git\" \"C:\Program Files\Git\"
-to add a sym-link. Install git-annex.
-"""]]
diff --git a/doc/install/Windows/comment_3_10fb90bc434b4da189ed7235818ef30f._comment b/doc/install/Windows/comment_3_10fb90bc434b4da189ed7235818ef30f._comment
deleted file mode 100644
--- a/doc/install/Windows/comment_3_10fb90bc434b4da189ed7235818ef30f._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 3"""
- date="2015-11-30T19:05:36Z"
- content="""
-@eren, some of the programs included with git-annex need to use libraries
-from Git for Windows. In particular, I think you'll find that rsync doesn't
-work if you use the 64 bit Git for Windows.
-"""]]
diff --git a/doc/install/comment_1_0aa16754fb08d8f2a54c8c3f78b6c187._comment b/doc/install/comment_1_0aa16754fb08d8f2a54c8c3f78b6c187._comment
deleted file mode 100644
--- a/doc/install/comment_1_0aa16754fb08d8f2a54c8c3f78b6c187._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm7eqCMh_B7mxE0tnchbr0JoYu11FUAFRY"
- nickname="Stéphane"
- subject="Old versions from distributions (e.g. Debian stable) fail with online instructions."
- date="2014-06-28T15:36:12Z"
- content="""
-Hello everyone.
-
-Be aware that your distribution's package may be very old.
-For example, at the time I write this, latest Debian stable is Debian 7.5 which is 2 months old.
-But git-annex package there is two *years* old (tomorrow, it will be exactly two yezrs old).
-
-So, beware.  If following [online walkthrough](https://git-annex.branchable.com/walkthrough/), either install a more recent git-annex (e.g. from [Debain backports](http://backports.debian.org/Instructions/)) or follow instructions from your local `/usr/share/doc/git-annex/html/walkthrough.html` instead.
-"""]]
diff --git a/doc/install/fromsource.mdwn b/doc/install/fromsource.mdwn
deleted file mode 100644
--- a/doc/install/fromsource.mdwn
+++ /dev/null
@@ -1,102 +0,0 @@
-So you want to build git-annex from source. This is encouraged for
-users with experience building code from source. But the build may
-require some care and feeding. This page will start with the easy
-methods and work up to the harder ones.
-
-## prerequisites
-
-Start by installing the 
-[Haskell Platform](http://hackage.haskell.org/platform/).
-
-In Debian, this is as simple as:
-
-	sudo apt-get install haskell-platform
-
-## downloading the source code
-
-The easiest way is using git; see [[download]] or just:
-
-	git clone git://git-annex.branchable.com/ git-annex
-
-Or, you can use cabal to get the source code:
-
-	cabal update; cabal unpack git-annex
-
-## building from source on Debian
-
-This is the method used by git-annex's author, and so it's the one most
-likely to work without problems.
-
-First, install everything git-annex needs to build:
-
-	sudo apt-get build-dep git-annex
-
-Now you can build git-annex by running either `make` or `cabal build`
-inside the source tree.
-
-## building from source with stack
-
-Using stack automates nearly everything, will work on many systems,
-and avoids build failures due to fast-changing haskell libraries.
-
-First, [install stack](https://github.com/commercialhaskell/stack/blob/master/doc/install_and_upgrade.md)
-It will be part of the Haskell Platform soon. On Debian unstable/testing:
-
-	sudo apt-get install haskell-stack zlib1g-dev libtinfo-dev
-
-Use stack to install all dependencies and git-annex:
-
-	stack setup
-	stack install git-annex
-
-Move git-annex into some directory that is in your PATH:
-
-	mv ~/.local/bin/git-annex ~/bin # or /usr/local/bin/ or whatever
-
-Note that this build produces a git-annex without the build flags
-XMPP, DBUS, and MagicMime.
-These optional features require installing additional C libraries.
-To try to build with these features 
-enabled, pass extra parameters when running stack: 
-`--flag git-annex:XMPP --flag git-annex:DBUS --flag git-annex:MagicMime`
-
-## minimal build from source with cabal
-
-This can be done anywhere, and builds git-annex without some optional
-features that require harder-to-install C libraries. This is plenty to let
-you get started with git-annex, but it does not include the assistant or
-webapp.
-
-Be warned that this involves building a lot of Haskell libraries from
-source, and so it has a lot of moving parts, and it's not uncommon for it
-to be broken from time to time.
-
-Inside the source tree, run:
-
-	cabal install -j -f"-assistant -webapp -webdav -pairing -xmpp -dns -dbus -magicmime" --only-dependencies
-	cabal configure -f"-assistant -webapp -webdav -pairing -xmpp -dns -dbus -magicmime"
-	cabal build -j
-	PATH=$HOME/bin:$PATH
-	cabal install --bindir=$HOME/bin
-
-## full build from source with cabal
-
-To build with all features enabled, including the assistant and webapp,
-you will need to install several C libraries and their headers,
-including libgnutls, libgsasl, libxml2, libmagic, and zlib. How to do
-that for your OS is beyond the scope of this page. 
-
-Once the C libraries are installed, run inside the source tree:
-
-	cabal install -j --only-dependencies
-	cabal configure
-	cabal build -j
-	PATH=$HOME/bin:$PATH
-	cabal install --bindir=$HOME/bin
-
-## EKG
-
-When building with cabal, you can optionally enable the 
-[[EKG monitoring interface|ekg]]. This is great for debugging resource
-usage problems, but not for general-purpose builds.
-Just pass `-f+EKG` to `cabal configure`
diff --git a/doc/install/fromsource/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment b/doc/install/fromsource/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_10_7ebe353b05d4df29897dc9a4f45c8a91._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.246.110"
- subject="comment 10"
- date="2013-07-27T17:49:07Z"
- content="""
-@Henning; see the [[OSX]] page for full installation instructions for OSX. Which include all the neccesary brew incantations.
-"""]]
diff --git a/doc/install/fromsource/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment b/doc/install/fromsource/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_11_0d06702e6e0ae3cd331cf748a9f6f273._comment
+++ /dev/null
@@ -1,44 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"
- nickname="Gregor"
- subject="Installation on tonidoplug"
- date="2013-08-03T07:19:54Z"
- content="""
-I tried various ways to install git-annex on my [TonidoPlug](http://www.tonidoplug.com/).
-
-System Info:
-
-	root@TonidoPlug2:~# uname -a
-	Linux TonidoPlug2 2.6.31.8-topkick1281p2-001-004-20101214 #1 Thu Jun 16 10:06:20 CST 2011 armv5tel GNU/Linux
-
-`apt-get` didn't work.
-
-	root@TonidoPlug2:~# apt-get install git-annex
-	Reading package lists... Done
-	Building dependency tree       
-	Reading state information... Done
-	E: Unable to locate package git-annex
-
-The Linux standalone installation results in an error message like this, when calling `git-annex` (or `git annex`)
-
-	~$ git-annex.linux/git-annex
-	/home/gitolite/git-annex.linux/bin/git-annex: 1: Syntax error: \")\" unexpected
-
-(git-annex.linux/bin/git-annex is a binary file and works fine on other distros)
-
-When installing with cabal, I get the error message (tried as root and gitolite user)
-
-	~$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
-	Resolving dependencies...
-	cabal: cannot configure git-annex-4.20130802. It requires base >=4.5 && <4.8
-	For the dependency on base >=4.5 && <4.8 there are these packages:
-	base-4.5.0.0, base-4.5.1.0, base-4.6.0.0 and base-4.6.0.1. However none of
-	them are available.
-	base-4.5.0.0 was excluded because of the top level dependency base -any
-	base-4.5.1.0 was excluded because of the top level dependency base -any
-	base-4.6.0.0 was excluded because of the top level dependency base -any
-	base-4.6.0.1 was excluded because of the top level dependency base -any
-
-Any help is appreciated.
-Thanks for providing git-annex. I started cleaning up my backups with it yesterday and really like it.
-"""]]
diff --git a/doc/install/fromsource/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment b/doc/install/fromsource/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_12_b93ca271dffca3f948645d3e1326c1d9._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="2001:4978:f:21a::2"
- subject="comment 12"
- date="2013-08-07T16:31:30Z"
- content="""
-The Linux standalone builds for i386 and amd64 will not work on Arm systems.
-
-There are builds of git-annex for arm in eg, Debian. You should be able to use one of those if this system is running Debian. You may need to upgrade to eg, Debian stable, which includes git-annex.
-
-It looks like you have an old and/or broken GHC compiler too. You could upgrade that to a newer version (eg from Debian stable) and build it that way, but it seems like the long way around if you have a Debian system there.
-"""]]
diff --git a/doc/install/fromsource/comment_13_3dac019cda71bf99878c0a1d9382323b._comment b/doc/install/fromsource/comment_13_3dac019cda71bf99878c0a1d9382323b._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_13_3dac019cda71bf99878c0a1d9382323b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlXEIT2PEAuHuInLP4UYVzWE0lceMYd2lA"
- nickname="Gregor"
- subject="TonidoPlug"
- date="2013-08-09T17:46:28Z"
- content="""
-@Joey Thanks for the answer. I didn't want to mess around too much with the TonidoPlug. I am currently setting up a raspberry pi, which works fine. 
-"""]]
diff --git a/doc/install/fromsource/comment_14_14b46470593f84f8c3768a91cb77bdab._comment b/doc/install/fromsource/comment_14_14b46470593f84f8c3768a91cb77bdab._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_14_14b46470593f84f8c3768a91cb77bdab._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlfIVXjkzrYE9qJAO2A0H7K6tKGMaSgc3U"
- nickname="Daniel"
- subject="Problems with cryptocipher"
- date="2013-08-22T01:36:50Z"
- content="""
-I had problems following these directions on recent releases of Fedora/Ubuntu. The install attempts failed on cryptocipher-0.3.1, which I think came as a dependency of Yesod.
-I was able to work around this by installing yesod-platform with cabal first, then installing git-annex.
-"""]]
diff --git a/doc/install/fromsource/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment b/doc/install/fromsource/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_15_c3a5b0aad28a90e0bb8da31a430578eb._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="77.247.181.162"
- subject="git-annex assistant on Arm"
- date="2013-08-23T03:07:11Z"
- content="""
-I'd like to use the assistant's power on a Raspberry Pi to build an always-on file/sync server. Is there a way to get the assistant running on Arm? I know there's a Debian package, but it's Version 3.20120629 and comes without the assistant. Has anyone ever successfully built a recent git-annex version on Arm? What would I need in order to do it myself? 
-"""]]
diff --git a/doc/install/fromsource/comment_16_4faf214f97f9516898d7c17d743ef825._comment b/doc/install/fromsource/comment_16_4faf214f97f9516898d7c17d743ef825._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_16_4faf214f97f9516898d7c17d743ef825._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.63"
- subject="comment 16"
- date="2013-08-23T17:37:52Z"
- content="""
-The git-annex assistant can easily be built on arm. But not the webapp. It's entirely possible to use the assistant without the webapp though; you just have to make the git repository and configure the remotes by hand, and then the assistant will sync them the same way the webapp does.
-
-It is possible but very involved to build the webapp for arm. I do not anticipate doing it in the Debian package until ghc gets proper template haskell support for arm. See [[forum/Webapp_on_ARM]]
-"""]]
diff --git a/doc/install/fromsource/comment_17_2a9d6807a3a13815c824985521757167._comment b/doc/install/fromsource/comment_17_2a9d6807a3a13815c824985521757167._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_17_2a9d6807a3a13815c824985521757167._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="77.247.181.162"
- subject="comment 17"
- date="2013-08-23T18:51:51Z"
- content="""
-Thanks for the quick answer. I will try to build git-annex with just the assistant, as you suggest, and once it works set up the server by hand as you suggest. 
-
-BTW: Awesome job you're doing with git-annex. I appreciate your enthusiasm.
-"""]]
diff --git a/doc/install/fromsource/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment b/doc/install/fromsource/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_18_1efa0c7a963ec452fc6336fbe4964f6e._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="96.47.226.20"
- subject="git-annex assistant for the Raspberry Pi"
- date="2013-09-04T03:58:37Z"
- content="""
-It took a while and a few tries, but I finally built the git-annex binary including the assistant on a Raspberry Pi. The build comes without the flags webapp, webdav, and dbus as these rely on a Template Haskell compiler that hasn't been ported to Arm architecture yet. 
-
-I put the binary up on Github in case anyone's interested: <https://github.com/tradloff/git-annex-RPi>
-"""]]
diff --git a/doc/install/fromsource/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment b/doc/install/fromsource/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_19_6f42f9234f9ff6a2ca6bbb4d2643843e._comment
+++ /dev/null
@@ -1,44 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlu7K3h7Ry1uDAU_ERYGuqt0LoGNJqGuRo"
- nickname="Nathan"
- subject="Cabal installing git-annex on Ubuntu 12.04 Precise with GHC 7.6.3"
- date="2013-09-25T22:39:04Z"
- content="""
-I now realize [there is a Ubuntu 12.04 Precise PPA with a current
-version of
-git-annex](http://git-annex.branchable.com/install/Ubuntu/), so that's
-probably a better choice, but here's how I cabal isntalled git-annex.
-
-1. Apt install non-cabal dependencies:
-
-       sudo aptitude install c2hs libgsasl7-dev libxml2-dev
-
-2. Manually cabal install yesod-platform to avoid the [cryptocipher problem 
-   mentioned above](
-   http://git-annex.branchable.com/install/cabal/#comment-1807da37dc144b572b76aaf4b574bb54):
-
-       cabal install yesod-platform
-
-3. Cabal install git-annex with DNS flag disabled:
-
-       cabal install git-annex -f\"-dns\"
-
-I was getting this error building git-annex before disabling the DNS flag:
-
-    Utility/SRV.hs:70:54:
-        Couldn't match expected type `Maybe
-                                        [(Int, Int, Integer, B8.ByteString)]'
-                    with actual type `Either
-                                        dns-1.0.0:Network.DNS.Internal.DNSError
-                                        [(Int, Int, Int, dns-1.0.0:Network.DNS.Internal.Domain)]'
-        In the third argument of `maybe', namely `r'
-        In the second argument of `($)', namely
-          `maybe [] (orderHosts . map tohosts) r'
-        In a stmt of a 'do' block:
-          return $ maybe [] (orderHosts . map tohosts) r
-
-Looking at Utiltity/SRV.hs, it appears that disabling the DNS flag
-just makes git annex use a different DNS library (ADNS), not
-actually disable DNS lookups.
-
-"""]]
diff --git a/doc/install/fromsource/comment_1_9d085e460553fa045999ab7cb945cdec._comment b/doc/install/fromsource/comment_1_9d085e460553fa045999ab7cb945cdec._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_1_9d085e460553fa045999ab7cb945cdec._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="azul"
- ip="91.36.153.149"
- subject="cabal fails to resolve dependencies"
- date="2014-06-19T08:49:05Z"
- content="""
-I tried this on ubuntu 14.04 without any previous haskell installs and cabal failed to resolve the dependencies:
-
-rejecting: optparse-applicative-0.9.0 (conflict: hjsmin =>
-optparse-applicative>=0.7 && <0.9)
-
-[full log](paste.debian.net/105771/)
-"""]]
diff --git a/doc/install/fromsource/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment b/doc/install/fromsource/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_1_f04df6bcd50d1d01eb34868bb00ac35c._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlJemqsekZTC5dvc-MAByUWaBvsYE-mFUo"
- nickname="Gábor"
- subject="Cabal dependencies"
- date="2013-05-12T12:52:20Z"
- content="""
-After finishing the installation the cabal way, here are the packages I installed. It is possible that there are other packages I installed previously as dependency for other packages.
-
-    $ lsb_release -a
-    No LSB modules are available.
-    Distributor ID:	Ubuntu
-    Description:	Ubuntu 12.04.2 LTS
-    Release:	12.04
-    Codename:	precise
-    
-    $ apt-get install cabal-install libgnutls28-dev libgsasl7-dev c2hs libghc-libxml-sax-dev zlib1g-dev libghc-zlib-dev
-    $ cabal install git-annex --bindir=$HOME/bin
-"""]]
diff --git a/doc/install/fromsource/comment_20_0f553be2a4c666e3bed58b2bce549406._comment b/doc/install/fromsource/comment_20_0f553be2a4c666e3bed58b2bce549406._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_20_0f553be2a4c666e3bed58b2bce549406._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlkA6XinbeOdnEDxEGQUWyjqPGh0kdMXr4"
- nickname="Blake"
- subject="Updating git-annex via cabal"
- date="2013-10-09T21:21:22Z"
- content="""
-What is the best way to update git-annex and the dependencies via cabal? Just the `$ cabal install *` commands again?
-"""]]
diff --git a/doc/install/fromsource/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment b/doc/install/fromsource/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_21_f91a6ec21e96eced73ea9579fd8cbd15._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.4.22"
- subject="comment 21"
- date="2013-10-11T17:09:33Z"
- content="""
-If you run the \"cabal update\" command followed by the \"cabal install\" command it'll upgrade git-annex.
-"""]]
diff --git a/doc/install/fromsource/comment_22_2f27b78215f97ade1986ca806c634cb3._comment b/doc/install/fromsource/comment_22_2f27b78215f97ade1986ca806c634cb3._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_22_2f27b78215f97ade1986ca806c634cb3._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="96.44.189.100"
- subject="&quot;Could not find module Crypto.Hash&quot; error when building git-annex "
- date="2013-10-21T19:55:12Z"
- content="""
-Lately I get this error message when trying to build git-annex-v4.20131002:
-
-    Utility/Hash.hs:7:8:
-        Could not find module `Crypto.Hash'
-        Perhaps you meant
-    	  Crypto.HMAC (needs flag -package crypto-api-0.10.2)
-        Use -v to see a list of the files searched for.
-
-crypto-api-0.10.2 is installed as a debian dev package. All the dependencies are met. I have no idea what's going on.  
-"""]]
diff --git a/doc/install/fromsource/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment b/doc/install/fromsource/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_23_c34d2b1d95830a3e58671a5b566a1758._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="64.134.31.139"
- subject="comment 23"
- date="2013-10-21T22:09:05Z"
- content="""
-git-annex needs cryptohash version 0.10.0 or greater. You appear to have an old version. You can cabal `configure -f-CryptoHash` if it's for some reason failing to disable the cryptohash support despite the declared dependency not being met.
-"""]]
diff --git a/doc/install/fromsource/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment b/doc/install/fromsource/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_24_40cbde8ec067b3a860e6df1a9bea5f76._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="37.130.227.133"
- subject="comment 24"
- date="2013-10-22T17:55:32Z"
- content="""
-I fixed the error by installing a newer version of cryptohash. Thanks for pointing out the culprit. 
-"""]]
diff --git a/doc/install/fromsource/comment_25_8a7664e6f9271718dc607a0782366c5b._comment b/doc/install/fromsource/comment_25_8a7664e6f9271718dc607a0782366c5b._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_25_8a7664e6f9271718dc607a0782366c5b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="141.138.141.208"
- subject="Bad version on Hackage"
- date="2013-10-30T18:56:25Z"
- content="""
-Quick note: The latest version in the Hackage repository (git-annex-4.20131024) fails to build, due to a faulty version of Assistant/Threads/Cronner.hs. 
-"""]]
diff --git a/doc/install/fromsource/comment_26_bd455c732639728bce2bfc39e32871d2._comment b/doc/install/fromsource/comment_26_bd455c732639728bce2bfc39e32871d2._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_26_bd455c732639728bce2bfc39e32871d2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.47"
- subject="comment 26"
- date="2013-11-01T16:33:25Z"
- content="""
-@RaspberryPie that only affected builds without the webapp, in any case it's fixed now.
-"""]]
diff --git a/doc/install/fromsource/comment_27_c080e9239b6eec88d329c28da7bb4141._comment b/doc/install/fromsource/comment_27_c080e9239b6eec88d329c28da7bb4141._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_27_c080e9239b6eec88d329c28da7bb4141._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="37.221.160.203"
- subject="comment 27"
- date="2013-11-02T12:52:18Z"
- content="""
-Okay, the error doesn't show up anymore. I didn't even get to Cronner though, because this time I got a different error:
-
-    Assistant/Alert.hs:195:20:
-        Couldn't match expected type `Assistant ()' with actual type `()'
-        Expected type: Maybe Remote -> Assistant ()
-          Actual type: Maybe Remote -> ()
-        In the expression: noop
-        In an equation for `notFsckedNudge': notFsckedNudge _ = noop
-
-This is from trying to compile 4.20131101 with `-f\"-webapp -webdav\"`
-"""]]
diff --git a/doc/install/fromsource/comment_28_15951dd070a675300420eea137a28ef9._comment b/doc/install/fromsource/comment_28_15951dd070a675300420eea137a28ef9._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_28_15951dd070a675300420eea137a28ef9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.47"
- subject="comment 28"
- date="2013-11-02T17:40:18Z"
- content="""
-Unfortunate about that. I've fixed it in git.
-
-(It would be best to file bug reports about build failures to avoid cluttering up this page.)
-"""]]
diff --git a/doc/install/fromsource/comment_29_ac082dca67f4a29b06070c0283130f52._comment b/doc/install/fromsource/comment_29_ac082dca67f4a29b06070c0283130f52._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_29_ac082dca67f4a29b06070c0283130f52._comment
+++ /dev/null
@@ -1,39 +0,0 @@
-[[!comment format=mdwn
- username="robohack"
- ip="24.67.98.78"
- subject="cabal install failing due to problems building pcre-light-0.4"
- date="2013-11-21T20:17:10Z"
- content="""
-After a fresh install of Haskell, and following the instructions above, I end up with the following rather bizarre and unexpected problem:
-
-	$ cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
-	Resolving dependencies...
-	Configuring pcre-light-0.4...
-	Building pcre-light-0.4...
-	Preprocessing library pcre-light-0.4...
-	Base.hsc:103:18: error: pcre.h: No such file or directory
-	Base.hsc: In function ‘main’:
-	Base.hsc:402: error: ‘PCRE_ANCHORED’ undeclared (first use in this function)
-	Base.hsc:402: error: (Each undeclared identifier is reported only once
-	Base.hsc:402: error: for each function it appears in.)
-	Base.hsc:405: error: ‘PCRE_AUTO_CALLOUT’ undeclared (first use in this function)
-
-(followed by an error for every other macro that was expected to be defined in the header...)
-
-	compiling dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c failed (exit code 1)
-	command was: /usr/bin/gcc -c dist/build/Text/Regex/PCRE/Light/Base_hsc_make.c -o dist/build/Text/Regex/PCRE/Light/Base_hsc_make.o -m64 -fno-stack-protector -m64 -fno-stack-protector -m64 -D__GLASGOW_HASKELL__=700 -Ddarwin_BUILD_OS -Ddarwin_HOST_OS -Dx86_64_BUILD_ARCH -Dx86_64_HOST_ARCH -I/sw/lib/ghc-7.0.4/bytestring-0.9.1.10/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/base-4.3.1.0/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include -Idist/build/autogen -include dist/build/autogen/cabal_macros.h -I/sw/lib/ghc-7.0.4/include/
-	Failed to install pcre-light-0.4
-	cabal: Error: some packages failed to install:
-	git-annex-3.20120230 depends on pcre-light-0.4 which failed to install.
-	pcre-light-0.4 failed during the building phase. The exception was:
-	ExitFailure 1
-
-This is a somewhat older Mac OS X 10.6.8 system.
-
-I do have PCRE already installed via Fink, and pcre.h is in /sw/include.  I see other -I/sw/... things in the compile command above, but obviously /sw/include is not one of them.
-
-Any clues for me?
-
-(Why the heck does git-annex need pcre in particular anyway???  I saw another regex library get installed earlier somewhere in this (massive) process.)
-
-"""]]
diff --git a/doc/install/fromsource/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment b/doc/install/fromsource/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_2_a69d17c55e56a707ec6606d5cdddee25._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="E: Unable to locate package libghc-libxml-sax-dev"
- date="2013-05-30T15:05:47Z"
- content="""
-I get an error from the command as above:
-$ sudo apt-get install cabal-install libgnutls28-dev libgsasl7-dev c2hs libghc libxml-sax-dev zlib1g-dev libghc-zlib-dev
-
-$ lsb_release -a
-No LSB modules are available.
-Distributor ID:	Ubuntu
-Description:	Ubuntu 12.04.2 LTS
-Release:	12.04
-Codename:	precise
-
-"""]]
diff --git a/doc/install/fromsource/comment_2_b7954521d9ab40622b665f278dd72e17._comment b/doc/install/fromsource/comment_2_b7954521d9ab40622b665f278dd72e17._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_2_b7954521d9ab40622b665f278dd72e17._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="azul"
- ip="91.36.173.120"
- subject="conflict solved"
- date="2014-06-20T06:13:09Z"
- content="""
-`apt-get install happy alex libghc-hjsmin-dev`
-solved the problem for me. The hjsmin lib was probably crucial. It seems a bunch of dependencies can also be installed as debs rather than through cabal.
-`standalone/android/buildchroot-inchroot` gave me a clue.
-"""]]
diff --git a/doc/install/fromsource/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment b/doc/install/fromsource/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_30_ad639c07cb79e89406e95c1dafce3a01._comment
+++ /dev/null
@@ -1,35 +0,0 @@
-[[!comment format=mdwn
- username="robohack"
- ip="24.67.98.78"
- subject="hmmm... ok, the PCRE problem was odd, but now this:"
- date="2013-11-21T20:30:54Z"
- content="""
-The PCRE problem is solved trivially in my case with a couple more cabal install options, though the need for these seems oddly dissatisfying given the reams of other stuff that was successfully built and installed without these options.
-
-Now however I seem to have encountered a deeper problem:
-
-	$ cabal install git-annex --bindir=$HOME/bin --extra-include-dirs=/sw/include --extra-lib-dirs=/sw/lib               
-	Resolving dependencies...
-	[1 of 1] Compiling Main             ( /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/Setup.hs, /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/Main.o )
-	Linking /var/folders/7h/7hWHR5m8HPKOnUEvQU7HU++++TI/-Tmp-/git-annex-3.20120230-84797/git-annex-3.20120230/dist/setup/setup ...
-	hsc2hs Utility/StatFS.hsc
-	perl -i -pe 's/^{-# INCLUDE.*//' Utility/StatFS.hs
-	ghc -O2 -Wall -ignore-package monads-fd --make configure
-	
-	Utility/StatFS.hsc:54:8:
-	    Could not find module `GHC.Foreign':
-	      Use -v to see a list of the files searched for.
-	make: *** [Build/SysConfig.hs] Error 1
-	Configuring git-annex-3.20120230...
-	Building git-annex-3.20120230...
-	Preprocessing executable 'git-annex' for git-annex-3.20120230...
-	
-	Git/Version.hs:11:18:
-	    Could not find module `Build.SysConfig':
-	      Use -v to see a list of the files searched for.
-	Failed to install git-annex-3.20120230
-	cabal: Error: some packages failed to install:
-	git-annex-3.20120230 failed during the building phase. The exception was:
-	ExitFailure 1
-
-"""]]
diff --git a/doc/install/fromsource/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment b/doc/install/fromsource/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_31_4763b24a29627d55f465b9ea260ea7ec._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="robohack"
- ip="24.67.98.78"
- subject="a different error trying to build from the git repo...."
- date="2013-11-21T21:14:54Z"
- content="""
-I'm using the ghc7.0 branch because Fink's GHC is still at 7.0.4....
-
-	$ cabal build                                
-	Building git-annex-3.20120523...
-	Preprocessing executable 'git-annex' for git-annex-3.20120523...
-	[ 78 of 163] Compiling Utility.Url      ( Utility/Url.hs, dist/build/git-annex/git-annex-tmp/Utility/Url.o )
-	
-	Utility/Url.hs:111:88:
-	    Couldn't match expected type `Maybe URI' with actual type `URI'
-	    In the second argument of `fromMaybe', namely
-	      `(newURI `relativeTo` u)'
-	    In the expression: fromMaybe newURI (newURI `relativeTo` u)
-	    In an equation for `newURI_abs':
-	        newURI_abs = fromMaybe newURI (newURI `relativeTo` u)
-
-"""]]
diff --git a/doc/install/fromsource/comment_32_1d34c294486c85b1149675fa5861ae35._comment b/doc/install/fromsource/comment_32_1d34c294486c85b1149675fa5861ae35._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_32_1d34c294486c85b1149675fa5861ae35._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.64"
- subject="comment 32"
- date="2013-11-22T16:27:36Z"
- content="""
-@robohack, the ghc7.0 branch is not being maintained, and is so old I don't recommend it. To build it against current cabal you will probably need to version its dependency on network to an older version than 2.4.0. 
-
-Also, git-annex has not depended on pcre for a long time. But you're building thoroughly old version so get to trip over every bug that's been reported for the past 2 years..
-"""]]
diff --git a/doc/install/fromsource/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment b/doc/install/fromsource/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_33_8d4dfc33cada6091c30d3a43ce404b8b._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn3p4i4lk_zMilvjnJ9sS6g2nerpgz0Fjc"
- nickname="Matthias"
- subject="Build failure"
- date="2014-03-20T09:10:44Z"
- content="""
-I followed the instructions and the invocation of
-
-    cabal install git-annex --bindir=$HOME/bin -f\"-assistant -webapp -webdav -pairing -xmpp -dns\"
-
-resulted in the following error:
-
-    Test.hs:107:41: Not in scope: `errMessage'
-    Failed to install git-annex-5.20140306
-    cabal: Error: some packages failed to install:
-    git-annex-5.20140306 failed during the building phase. The exception was:
-    ExitFailure 1
-
-I used the Haskell Platform for Mac OS X (10.8)
-
-"""]]
diff --git a/doc/install/fromsource/comment_34_38451e751add6daf479b559c4b6a7c61._comment b/doc/install/fromsource/comment_34_38451e751add6daf479b559c4b6a7c61._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_34_38451e751add6daf479b559c4b6a7c61._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://openid.stackexchange.com/user/a05bb829-932b-49f2-85a9-00dcda8b5e20"
- nickname="Christian Pietsch"
- subject="Re: Build failure"
- date="2014-03-20T13:56:16Z"
- content="""
-I get exactly the same error message as Matthias when attempting the minimal Cabal install on openSUSE 12.2 (x86_64) Linux.
-"""]]
diff --git a/doc/install/fromsource/comment_35_4d44e4531e6686bd340f26836ad40026._comment b/doc/install/fromsource/comment_35_4d44e4531e6686bd340f26836ad40026._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_35_4d44e4531e6686bd340f26836ad40026._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.102"
- subject="comment 35"
- date="2014-03-20T16:06:22Z"
- content="""
-The `errMessage` build failure is due to a new version of optparse-applicative. I've added support for it in git master.
-"""]]
diff --git a/doc/install/fromsource/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment b/doc/install/fromsource/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_36_2a095a5af53a356bd29abd22a9cb1bea._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkNcHu5T1Pxzl-r2co9vf6SxXYWubv2P04"
- nickname="Matthew"
- subject="I did indeed get problems on Ubuntu 13.04"
- date="2014-06-25T01:01:43Z"
- content="""
-The issues I had were version mismatches when resolving dependencies of git-annex.
-
-It seems that when you install haskell-platform package with apt-get, it installs a bunch of haskell dependencies as apt packages, yet those aren't needed for any other system packages.  So some people here who complain about version mismatches might not have intended to install any Haskell libraries with apt, they just come along for the ride by default.
-
-I can't remember the exact ones, but I ended up uninstalling some of the stuff that gets auto-installed along with haskell-platform, and using cabal to build those.  Then all the git-annex dependencies worked.
-
-Why 13.04 in this day and age?  Using Zentyal as a home server/gateway, and it currently runs on 13.04.
-
-This method might not work if you installed other apt packages that _do_ need those apt-based Haskell libraries.   But if git-annex is all you need that uses the Haskell platform, might work.
-"""]]
diff --git a/doc/install/fromsource/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment b/doc/install/fromsource/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_37_f33e1a4575dccc20b0d3d7c00e6db709._comment
+++ /dev/null
@@ -1,69 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmveNWaFIL1zEehHr_0416bKBzsul5tGlE"
- nickname="Daniel"
- subject="Install fails horribly"
- date="2014-07-10T23:11:51Z"
- content="""
-```
-lyriondesktop:/home/zilti/tmp # cabal install c2hs
-Resolving dependencies...
-Configuring c2hs-0.17.2...
-Building c2hs-0.17.2...
-Preprocessing executable 'c2hs' for c2hs-0.17.2...
-[ 1 of 26] Compiling Data.DLists      ( src/Data/DLists.hs, dist/build/c2hs/c2hs-tmp/Data/DLists.o )
-[ 2 of 26] Compiling Control.StateTrans ( src/Control/StateTrans.hs, dist/build/c2hs/c2hs-tmp/Control/StateTrans.o )
-
-src/Control/StateTrans.hs:77:1: Warning:
-    Module `Prelude' does not export `catch'
-[ 3 of 26] Compiling Data.Errors      ( src/Data/Errors.hs, dist/build/c2hs/c2hs-tmp/Data/Errors.o )
-[ 4 of 26] Compiling Data.Attributes  ( src/Data/Attributes.hs, dist/build/c2hs/c2hs-tmp/Data/Attributes.o )
-[ 5 of 26] Compiling Text.Lexers      ( src/Text/Lexers.hs, dist/build/c2hs/c2hs-tmp/Text/Lexers.o )
-[ 6 of 26] Compiling Control.StateBase ( src/Control/StateBase.hs, dist/build/c2hs/c2hs-tmp/Control/StateBase.o )
-[ 7 of 26] Compiling Data.NameSpaces  ( src/Data/NameSpaces.hs, dist/build/c2hs/c2hs-tmp/Data/NameSpaces.o )
-[ 8 of 26] Compiling C2HS.C.Attrs     ( src/C2HS/C/Attrs.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Attrs.o )
-[ 9 of 26] Compiling C2HS.C.Builtin   ( src/C2HS/C/Builtin.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Builtin.o )
-[10 of 26] Compiling Paths_c2hs       ( dist/build/autogen/Paths_c2hs.hs, dist/build/c2hs/c2hs-tmp/Paths_c2hs.o )
-[11 of 26] Compiling C2HS.Config      ( src/C2HS/Config.hs, dist/build/c2hs/c2hs-tmp/C2HS/Config.o )
-[12 of 26] Compiling C2HS.Switches    ( src/C2HS/Switches.hs, dist/build/c2hs/c2hs-tmp/C2HS/Switches.o )
-[13 of 26] Compiling C2HS.Version     ( src/C2HS/Version.hs, dist/build/c2hs/c2hs-tmp/C2HS/Version.o )
-[14 of 26] Compiling System.CIO       ( src/System/CIO.hs, dist/build/c2hs/c2hs-tmp/System/CIO.o )
-[15 of 26] Compiling Control.State    ( src/Control/State.hs, dist/build/c2hs/c2hs-tmp/Control/State.o )
-[16 of 26] Compiling C2HS.State       ( src/C2HS/State.hs, dist/build/c2hs/c2hs-tmp/C2HS/State.o )
-[17 of 26] Compiling C2HS.CHS.Lexer   ( src/C2HS/CHS/Lexer.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS/Lexer.o )
-
-src/C2HS/CHS/Lexer.hs:612:16: Warning:
-    Defined but not used: `lexeme'
-[18 of 26] Compiling C2HS.CHS         ( src/C2HS/CHS.hs, dist/build/c2hs/c2hs-tmp/C2HS/CHS.o )
-[19 of 26] Compiling C2HS.Gen.Header  ( src/C2HS/Gen/Header.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Header.o )
-[20 of 26] Compiling C2HS.C.Trav      ( src/C2HS/C/Trav.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Trav.o )
-[21 of 26] Compiling C2HS.C.Names     ( src/C2HS/C/Names.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Names.o )
-[22 of 26] Compiling C2HS.C           ( src/C2HS/C.hs, dist/build/c2hs/c2hs-tmp/C2HS/C.o )
-[23 of 26] Compiling C2HS.Gen.Monad   ( src/C2HS/Gen/Monad.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Monad.o )
-
-src/C2HS/Gen/Monad.hs:227:10: Warning:
-    Orphan instance: instance Read Ident
-[24 of 26] Compiling C2HS.C.Info      ( src/C2HS/C/Info.hs, dist/build/c2hs/c2hs-tmp/C2HS/C/Info.o )
-[25 of 26] Compiling C2HS.Gen.Bind    ( src/C2HS/Gen/Bind.hs, dist/build/c2hs/c2hs-tmp/C2HS/Gen/Bind.o )
-
-src/C2HS/Gen/Bind.hs:971:43: Warning:
-    In the use of `posColumn' (imported from Language.C.Data.Position):
-    Deprecated: \"column number information is inaccurate in presence of macros - do not rely on it.\"
-
-src/C2HS/Gen/Bind.hs:789:10: Warning:
-    Orphan instance: instance Num CInteger
-[26 of 26] Compiling Main             ( src/Main.hs, dist/build/c2hs/c2hs-tmp/Main.o )
-Linking dist/build/c2hs/c2hs ...
-Installing executable(s) in /root/.cabal/bin
-Installed c2hs-0.17.2
-lyriondesktop:/home/zilti/tmp # cabal install git-annex
-Resolving dependencies...
-Configuring gnuidn-0.2.1...
-cabal: The program c2hs is required but it could not be found.
-Failed to install gnuidn-0.2.1
-cabal: Error: some packages failed to install:
-git-annex-5.20140709 depends on gnuidn-0.2.1 which failed to install.
-gnuidn-0.2.1 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
-```
-"""]]
diff --git a/doc/install/fromsource/comment_38_5c1e96221154a4ae4ebd636232044ced._comment b/doc/install/fromsource/comment_38_5c1e96221154a4ae4ebd636232044ced._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_38_5c1e96221154a4ae4ebd636232044ced._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.2"
- subject="comment 38"
- date="2014-07-11T18:30:55Z"
- content="""
-@Daniel, I suggest you either follow the instuctions above, or if you don't want to follow the instructions, follow the error messages. :P In this case, the instructions say to do:
-
-> PATH=$HOME/bin:$PATH
-> cabal install c2hs --bindir=$HOME/bin
-
-Which is exactly to work around the problem that we can see in your transcript: `Installing executable(s) in /root/.cabal/bin` 
-
-Also, to reiterate the top of the page: If you are not comfortable tracking down and dealing with library build problems, installing git-annex with cabal is probably not the right choice for you!
-
-"""]]
diff --git a/doc/install/fromsource/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment b/doc/install/fromsource/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_39_a86057d7e6d47113330f79e1812c3a5d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkftzaCvV7EDKVDfJhsQZ3E1Vn-0db516w"
- nickname="Edward"
- subject="GHC 7.8 Issue"
- date="2014-08-20T20:06:01Z"
- content="""
-Just an FYI: I tried to \"cabal install --only-dependencies\" with GHC 7.8 and it fails because DAV-1.0.1 is pulling in lens-3.10.3 which is not compatible with GHC 7.8 due to changes in Typeable. 
-
-I don't have enough experience with cabal to figure out why it's not trying to use a newer version of lens.
-"""]]
diff --git a/doc/install/fromsource/comment_3_55bed050bdb768543dbe1b86edec057d._comment b/doc/install/fromsource/comment_3_55bed050bdb768543dbe1b86edec057d._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_3_55bed050bdb768543dbe1b86edec057d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 3"
- date="2013-05-30T15:25:29Z"
- content="""
-If you're installing git-annex with cabal, there is no need to install any haskell library packages with apt-get. That includes libghc-libxml-sax-dev and libghc-zlib-dev. Without those, the apt-get line may work to install the C libraries needed for cabal to install the haskell libraries. 
-
-However, see the the [[Ubuntu]] page for much easier ways to get git-annex installed.
-"""]]
diff --git a/doc/install/fromsource/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment b/doc/install/fromsource/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_3_a3bf3ce57ea73515a059267f25b816eb._comment
+++ /dev/null
@@ -1,23 +0,0 @@
-[[!comment format=mdwn
- username="azul"
- ip="91.36.173.120"
- subject="c2hs required for cabal to install dependencies"
- date="2014-06-20T06:35:35Z"
- content="""
-Next thing i ran into was missing c2hs.
-So
-`apt-get install c2hs` before running the cabal install otherwise...
-
-<pre>
-$ cabal install git-annex --only-dependencies
-Resolving dependencies...
-Configuring gnuidn-0.2.1...
-cabal: The program c2hs is required but it could not be found.
-Failed to install gnuidn-0.2.1
-cabal: Error: some packages failed to install:
-gnuidn-0.2.1 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.6 depends on gnuidn-0.2.1 which failed to install.
-</pre>
-
-"""]]
diff --git a/doc/install/fromsource/comment_45_d9cccbb9620cc8218e72b5380fd89a05._comment b/doc/install/fromsource/comment_45_d9cccbb9620cc8218e72b5380fd89a05._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_45_d9cccbb9620cc8218e72b5380fd89a05._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.22"
- subject="no need for c2hs"
- date="2014-09-16T19:28:09Z"
- content="""
-The c2hs mentioned in some of the above comments is not needed any longer; ghc 7.6.3 and newer come with a hsc2hs command that is used.
-"""]]
diff --git a/doc/install/fromsource/comment_46_954de34275d33bc4590927f911761563._comment b/doc/install/fromsource/comment_46_954de34275d33bc4590927f911761563._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_46_954de34275d33bc4590927f911761563._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.22"
- subject="comment 46"
- date="2014-09-16T19:33:11Z"
- content="""
-Britt's comment is spot on, but git-annex tries pretty hard to work with lots of older versions of haskell libraries, as well as the latest and greatest. So it should be ok to install haskell libraries with apt-get and use them to build git-annex, as the (revised) instructions above show.
-
-What tends not to work so well is use apt-get to install older versions of haskell libraries and then cabal install on top to add newer stuff. Gets complicated and I'd recommend not going there. The instructions above show using either apt-get or cabal to install the haskell libraries, but not both.
-"""]]
diff --git a/doc/install/fromsource/comment_47_6de25c1e450e1e3b1d18d2c76235ccb8._comment b/doc/install/fromsource/comment_47_6de25c1e450e1e3b1d18d2c76235ccb8._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_47_6de25c1e450e1e3b1d18d2c76235ccb8._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="thnetos"
- subject="Where to start reading the source code?"
- date="2014-12-15T22:04:06Z"
- content="""
-Do you have any recommendations for the overall haskell architecture of the project? Where to start looking if I want to read through the source code?
-"""]]
diff --git a/doc/install/fromsource/comment_48_9c08300c5d172ba9223042a00c8acb2b._comment b/doc/install/fromsource/comment_48_9c08300c5d172ba9223042a00c8acb2b._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_48_9c08300c5d172ba9223042a00c8acb2b._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""where to start reading the source code"""
- date="2015-01-05T20:58:50Z"
- content="""
-@thnetos, great question!
-
-Annex.hs is a key starting place, as it defines git-annex's main monad.
-If you like learning code bases bottom-up, Types/* has files for
-the main data types used in git-annex, such as Key and UUID and Remote and
-GitConfig.
-
-Command/* gets you the implementation of any particular git-annex command
-you are interested in. Or Remote/* for any particular special remote.
-
-I recommend running "make tags" and then your editor should be able to use
-the tags file to bounce around in the source code.
-"""]]
diff --git a/doc/install/fromsource/comment_49_c8370525547b435d963a2c1192a21124._comment b/doc/install/fromsource/comment_49_c8370525547b435d963a2c1192a21124._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_49_c8370525547b435d963a2c1192a21124._comment
+++ /dev/null
@@ -1,93 +0,0 @@
-[[!comment format=mdwn
- username="dave@2ab82f485adf7e2ce787066e35f5f9789bff430b"
- nickname="dave"
- subject="apt-get build-dep fails"
- date="2015-07-09T00:07:32Z"
- content="""
-    hobbes@namagiri:~/src$ sudo apt-get build-dep git-annex
-    Reading package lists... Done
-    Building dependency tree       
-    Reading state information... Done
-    E: Build-Depends dependency for git-annex cannot be satisfied because the package libghc-hamlet-dev cannot be found
-
-Hmm, deprecated in favor of libghc-shakespear-dev, according to http://hackage.haskell.org/package/hamlet ...
-
-    hobbes@namagiri:~/src/apt-get-source-git-annex$ grep -iR build-depends.*hamlet|tr , \\n
-    git-annex_5.20141125.dsc:Build-Depends: debhelper (>= 9)
-     ghc (>= 7.4)
-     cabal-install
-     libghc-mtl-dev (>= 2.1.1)
-     libghc-missingh-dev
-     libghc-data-default-dev
-     libghc-hslogger-dev
-     libghc-pcre-light-dev
-     libghc-sha-dev
-     libghc-cryptohash-dev
-     libghc-dataenc-dev
-     libghc-utf8-string-dev
-     libghc-hs3-dev (>= 0.5.6)
-     libghc-dav-dev (>= 1.0) [amd64 i386 kfreebsd-amd64 kfreebsd-i386 powerpc]
-     libghc-quickcheck2-dev
-     libghc-monad-control-dev (>= 0.3)
-     libghc-exceptions-dev (>= 0.6)
-     libghc-transformers-dev
-     libghc-unix-compat-dev
-     libghc-dlist-dev
-     libghc-uuid-dev
-     libghc-json-dev
-     libghc-aeson-dev
-     libghc-ifelse-dev
-     libghc-bloomfilter-dev
-     libghc-edit-distance-dev
-     libghc-hinotify-dev [linux-any]
-     libghc-stm-dev (>= 2.3)
-     libghc-dbus-dev (>= 0.10.3) [linux-any]
-     libghc-fdo-notify-dev (>= 0.3) [linux-any]
-     libghc-yesod-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-yesod-static-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-yesod-default-dev [i386 amd64 kfreebsd-amd64 powerpc]
-     libghc-hamlet-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-shakespeare-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-clientsession-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-warp-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-warp-tls-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-wai-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-wai-extra-dev [i386 amd64 kfreebsd-i386 kfreebsd-amd64 powerpc]
-     libghc-securemem-dev
-     libghc-byteable-dev
-     libghc-dns-dev
-     libghc-case-insensitive-dev
-     libghc-http-types-dev
-     libghc-http-conduit-dev
-     libghc-blaze-builder-dev
-     libghc-crypto-api-dev
-     libghc-network-multicast-dev
-     libghc-network-info-dev [linux-any kfreebsd-any]
-     libghc-safesemaphore-dev
-     libghc-network-protocol-xmpp-dev (>= 0.4.3-1+b1)
-     libghc-gnutls-dev (>= 0.1.4)
-     libghc-xml-types-dev
-     libghc-async-dev
-     libghc-feed-dev (>= 0.3.9.2)
-     libghc-regex-tdfa-dev [!mipsel !s390]
-     libghc-regex-compat-dev [mipsel s390]
-     libghc-tasty-dev (>= 0.7) [!sparc]
-     libghc-tasty-hunit-dev [!sparc]
-     libghc-tasty-quickcheck-dev [!sparc]
-     libghc-tasty-rerun-dev [!sparc]
-     libghc-optparse-applicative-dev [!sparc]
-     lsof [!kfreebsd-i386 !kfreebsd-amd64 !hurd-any]
-     ikiwiki
-     perlmagick
-     git (>= 1:2.0)
-     rsync
-     wget
-     curl
-     openssh-client
-     git-remote-gcrypt (>= 0.20130908-6)
-     llvm-3.4 [armel armhf]
-    
-I think that's the bug, right there: *git-annex_5.20141125.dsc*.
-
-I hope this helps.
-"""]]
diff --git a/doc/install/fromsource/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment b/doc/install/fromsource/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_4_2ff7f8a3b03bea7e860248829d595bd1._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Re: Comment 3"
- date="2013-05-30T15:48:44Z"
- content="""
-@Joey Many thanks.
-I am new to Haskell (vaguely looked at it with DARCS) and git-annex.
-After installing with apt-get on Ubuntu 12.04 LTS I found webapp was missing, hence have come here.
-I am going through the correct steps now, it should be awesome when done.
-
-This seems to be a long build process (still going on my old laptop, much longer than apt-get).
-Ubuntu git-annex packages from 13.10 Saucy I think are updated to include webapp.
-"""]]
diff --git a/doc/install/fromsource/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment b/doc/install/fromsource/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_4_765334858ef1eedff2c5d89ed42aa7f6._comment
+++ /dev/null
@@ -1,37 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawld54zdyk6b0W4jXnssSO_j2Nn3W1uVsUE"
- nickname="Paul"
- subject="comment 4"
- date="2014-08-24T11:53:11Z"
- content="""
-@azul, thanks for hints, but it still fails. No wonders though - this is Haskell, kids.
-
-~~~~
-$ cabal install git-annex --only-dependencies
-Resolving dependencies...
-cabal: Could not resolve dependencies:
-trying: git-annex-5.20140817
-trying: git-annex-5.20140817:+webapp
-trying: git-annex-5.20140817:+s3
-trying: git-annex-5.20140817:+dns
-trying: dns-1.4.3
-trying: yesod-1.2.6.1
-trying: yesod-auth-1.3.4.2
-trying: http-client-0.3.7.1
-trying: http-client-0.3.7.1:+network-uri
-trying: hS3-0.5.8
-trying: hxt-9.3.1.6
-trying: hxt-9.3.1.6:-network-uri
-rejecting: network-2.6.0.1, 2.6.0.0 (conflict: hxt-9.3.1.6:network-uri =>
-network>=2.4 && <2.6)
-rejecting: network-2.5.0.0, 2.4.2.3, 2.4.2.2, 2.4.2.1, 2.4.2.0, 2.4.1.2,
-2.4.1.1, 2.4.1.0, 2.4.0.1, 2.4.0.0, 2.3.2.0, 2.3.1.1, 2.3.1.0, 2.3.0.14,
-2.3.0.13, 2.3.0.12, 2.3.0.11, 2.3.0.10, 2.3.0.9, 2.3.0.8, 2.3.0.7, 2.3.0.6,
-2.3.0.5, 2.3.0.4, 2.3.0.3, 2.3.0.2, 2.3.0.1, 2.3 (conflict:
-http-client-0.3.7.1:network-uri => network>=2.6)
-rejecting: network-2.2.3.1, 2.2.3, 2.2.1.10, 2.2.1.9, 2.2.1.8, 2.2.1.7,
-2.2.1.6, 2.2.1.5, 2.2.1.4, 2.2.1.3, 2.2.1.2, 2.2.1.1, 2.2.1, 2.2.0.1, 2.2.0.0,
-2.1.0.0, 2.0 (conflict: dns => network>=2.3)
-~~~~
-
-"""]]
diff --git a/doc/install/fromsource/comment_50_c1ce6084ba1e96afa30e18f0f6433aa4._comment b/doc/install/fromsource/comment_50_c1ce6084ba1e96afa30e18f0f6433aa4._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_50_c1ce6084ba1e96afa30e18f0f6433aa4._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 50"""
- date="2015-07-15T15:54:15Z"
- content="""
-Yes, Debian has a by now very outdated version of git-annex.
-
-You can clone git-annex's git repo and build a debian package from there;
-it's been updated for these changes.
-"""]]
diff --git a/doc/install/fromsource/comment_51_514bac1020c4227a23380d1675184fc7._comment b/doc/install/fromsource/comment_51_514bac1020c4227a23380d1675184fc7._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_51_514bac1020c4227a23380d1675184fc7._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="reyman64@f52a9d695f5dc1d5b0788fbb9877e9401fae7421"
- nickname="reyman64"
- subject="Error with Url.hs"
- date="2015-11-06T13:37:41Z"
- content="""
-Hi,
-With minimal compilation for git-annex-5.20151102.1
-and
-Cabal version is : 1.22.4.0
-Ghc version is : 7.10.2 
-
-I have an error on url.hs:45
-binary operator not found before lexical element \" ( \"
-
-any idea ?
-
-"""]]
diff --git a/doc/install/fromsource/comment_52_df7d36e4d169fbc4199026d7af1aa581._comment b/doc/install/fromsource/comment_52_df7d36e4d169fbc4199026d7af1aa581._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_52_df7d36e4d169fbc4199026d7af1aa581._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 52"""
- date="2015-11-06T16:48:16Z"
- content="""
-@reyman64 missing dependency on http-client in that configuration.
-I've fixed this in git.
-"""]]
diff --git a/doc/install/fromsource/comment_53_e4bb31024aa4a317be2f45667b6d6f9f._comment b/doc/install/fromsource/comment_53_e4bb31024aa4a317be2f45667b6d6f9f._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_53_e4bb31024aa4a317be2f45667b6d6f9f._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="reyman64@f52a9d695f5dc1d5b0788fbb9877e9401fae7421"
- nickname="reyman64"
- subject="comment 53"
- date="2015-11-06T17:07:21Z"
- content="""
-Great that works now, thanks :)
-"""]]
diff --git a/doc/install/fromsource/comment_54_d7fabada8101596954ed7e401a8c460b._comment b/doc/install/fromsource/comment_54_d7fabada8101596954ed7e401a8c460b._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_54_d7fabada8101596954ed7e401a8c460b._comment
+++ /dev/null
@@ -1,31 +0,0 @@
-[[!comment format=mdwn
- username="reyman64@f52a9d695f5dc1d5b0788fbb9877e9401fae7421"
- nickname="reyman64"
- subject="Error on compile"
- date="2016-01-20T22:50:01Z"
- content="""
-Hi, i have an error with last pulled version on my system : 
-
-[17 of 23] Compiling Text.Feed.Constructor ( src/Text/Feed/Constructor.hs, dist/build/Text/Feed/Constructor.o )
-
-src/Text/Feed/Constructor.hs:131:5: Warning:
-    Pattern match(es) are non-exhaustive
-    In a case alternative: Patterns not matched: XMLFeed _
-[18 of 23] Compiling Text.Feed.Export ( src/Text/Feed/Export.hs, dist/build/Text/Feed/Export.o )
-[19 of 23] Compiling Text.Feed.Import ( src/Text/Feed/Import.hs, dist/build/Text/Feed/Import.o )
-[20 of 23] Compiling Text.Feed.Util   ( src/Text/Feed/Util.hs, dist/build/Text/Feed/Util.o )
-[21 of 23] Compiling Text.Feed.Query  ( src/Text/Feed/Query.hs, dist/build/Text/Feed/Query.o )
-
-src/Text/Feed/Query.hs:66:53:
-    Module ‘Data.Time.Locale.Compat’ does not export ‘rfc822DateFormat’
-
-src/Text/Feed/Query.hs:66:71:
-    Module
-    ‘Data.Time.Locale.Compat’
-    does not export
-    ‘iso8601DateFormat’
-cabal: Error: some packages failed to install:
-feed-0.3.11.1 failed during the building phase. The exception was:
-ExitFailure 1
-
-"""]]
diff --git a/doc/install/fromsource/comment_55_0592c3d36ab569cd777009a491e25ba2._comment b/doc/install/fromsource/comment_55_0592c3d36ab569cd777009a491e25ba2._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_55_0592c3d36ab569cd777009a491e25ba2._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 55"""
- date="2016-01-22T15:56:01Z"
- content="""
-@reyman64, that's a failure to build the feed package, not git-annex.
-See <http://hackage.haskell.org/package/feed> for a pointer to its bug
-tracker.
-
-The best way to avoid running into such problems is to use stack rather
-than cabal to build git-annex, since that avoids using bleeding-edge and
-thus frequently broken versions of the dependencies.
-"""]]
diff --git a/doc/install/fromsource/comment_57_13a198daa871e001b02b9df2e8d7c446._comment b/doc/install/fromsource/comment_57_13a198daa871e001b02b9df2e8d7c446._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_57_13a198daa871e001b02b9df2e8d7c446._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 57"""
- date="2016-01-26T18:50:30Z"
- content="""
-Check out the tag for the release of git-annex that you want to build to
-avoid building from master, which may not be ready. In this case, I was
-adjusting some build flags this morning and hadn't tried a stack build yet.
-
-git-annex-shell is just a symlink to git-annex. I guess that stack install 
-bypasses the code that makes cabal install set up that symlink. You can make
-the symlink yourself I suppose.
-"""]]
diff --git a/doc/install/fromsource/comment_57_efac370d382fc79e1f207e8090e0f06b._comment b/doc/install/fromsource/comment_57_efac370d382fc79e1f207e8090e0f06b._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_57_efac370d382fc79e1f207e8090e0f06b._comment
+++ /dev/null
@@ -1,45 +0,0 @@
-[[!comment format=mdwn
- username="reyman64@740e43250854ada1b8484b3bc44b53be03367d70"
- nickname="reyman64"
- subject="problem with latest pull and stack"
- date="2016-01-26T16:49:05Z"
- content="""
-
-Is there a tag in github to download the latest dev build  (if i want to compile a build with v6 repository for example) ? 
-
-Because after a recent `git pull` (commit `65f44423d1b9407a9c0e4a2b2e7e24b701f6dc32`
- ) on master, i have this error on `stack install` :
-
-Also, `git-annex-shell` is not created by stack install, is it normal ? 
-
-```
-[reyman64@web504 git-annex]$ stack install git-annex --local-bin-path /home/reyman64/bin
-Invalid flag specification:
-- Package 'git-annex' does not define the following flags (specified in stack.yaml):
-  feed
-  quvi
-  tahoe
-  webapp-secure
-- Flags defined by package 'git-annex':
-  git-annex:android
-  git-annex:androidsplice
-  git-annex:assistant
-  git-annex:benchmark
-  git-annex:concurrentoutput
-  git-annex:cryptonite
-  git-annex:dns
-  git-annex:ekg
-  git-annex:network-uri
-  git-annex:pairing
-  git-annex:production
-  git-annex:s3
-  git-annex:tdfa
-  git-annex:testsuite
-  git-annex:torrentparser
-  git-annex:webapp
-  git-annex:webdav
-```
-
-Best,
-SR.
-"""]]
diff --git a/doc/install/fromsource/comment_58_64b44da5ec93fe4f50ad8b856823558d._comment b/doc/install/fromsource/comment_58_64b44da5ec93fe4f50ad8b856823558d._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_58_64b44da5ec93fe4f50ad8b856823558d._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="reyman64@740e43250854ada1b8484b3bc44b53be03367d70"
- nickname="reyman64"
- subject="comment 58"
- date="2016-01-26T19:09:05Z"
- content="""
-Ok thanks for your answer :) 
-
-"""]]
diff --git a/doc/install/fromsource/comment_5_4aea55dc5b24d84e0953382ccfea1a01._comment b/doc/install/fromsource/comment_5_4aea55dc5b24d84e0953382ccfea1a01._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_5_4aea55dc5b24d84e0953382ccfea1a01._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmfEGTjv4GsWkSG2lpuBitRDxVkml7yEQg"
- nickname="Britt"
- subject="Installing debs"
- date="2014-09-16T02:16:28Z"
- content="""
-@azul - the problem with installing dependencies from apt-get is that the Ubuntu haskell packages are rather old. It shouldn't be this way (and it has gotten a LOT better - I suggest installing the newest version of the Haskell Platform that you can), but often cabal will complain about a package it is unable to install because it failed on the install of that package's dependencies. You should try to cabal install $FAILED_DEPENDENCY (not an actual env variable), and you will often get more informative error messages - some packages require non-haskell dependencies (take gtk3, for instance) which cabal doesn't know how to handle at this point, because that would require some cross platform foo (cabal install runs on Windows and OSX, which don't have native package managers at all). 
-
-@Paul - It looks like you ran into a bug, because http-client no longer depends on network>=2.6, it now can take network 2.4 - 2.6 or 2.6 or greater. If you try again it should work. 
-
-Please don't be put off by haskell because of things like this - git annex is a very large and complicated project, and developing on large projects such as this pretty much require you to have pretty recent versions of all haskell packages. I really suggest you take a look at this book http://learnyouahaskell.com/introduction. Haskell is a beautiful language and it doesn't have to be esoteric, academic, or difficult at all. It's obvious since you are attempting to build this from source that you are either interested in haskell or you are only interested in the development of git-annex. Either way, it would behoove you to read that book. It is short, full of great examples, and it even has pleasant illustrations. It may look like a children's book, but by the end of it you will know how to use all of the major monads (you may not know what a monad is, but that isn't really that important anyway - you just need to know how they are used).
-"""]]
diff --git a/doc/install/fromsource/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment b/doc/install/fromsource/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_5_8789fc27466714faa5a3a7a6b8ec6e5d._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Re: Comment 3"
- date="2013-05-30T16:29:12Z"
- content="""
-At the end of the build I got these errors:
-Registering yesod-static-1.1.2.3...
-Installing library in /home/nrb/.cabal/lib/yesod-static-1.1.2.3/ghc-7.4.1
-Registering yesod-static-1.1.2.3...
-cabal: Error: some packages failed to install:
-c2hs-0.16.4 depends on language-c-0.3.2.1 which failed to install.
-dbus-0.10.4 depends on libxml-sax-0.7.4 which failed to install.
-git-annex-4.20130521.2 depends on libxml-sax-0.7.4 which failed to install.
-language-c-0.3.2.1 failed during the configure step. The exception was:
-ExitFailure 1
-libxml-sax-0.7.4 failed during the configure step. The exception was:
-ExitFailure 1
-network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to
-install.
-
-One way I could fix this myself is to put together a VM with 13.10 or Debian in it and work inside that.
-Or if I can get help to fix my issues here that would be great ;)
-"""]]
diff --git a/doc/install/fromsource/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment b/doc/install/fromsource/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_6_5afb2d081e8b603bc338cd460ad9317d._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Some errors after the build"
- date="2013-05-30T16:38:37Z"
- content="""
-    Registering yesod-static-1.1.2.3...
-    Installing library in /home/nrb/.cabal/lib/yesod-static-1.1.2.3/ghc-7.4.1
-    Registering yesod-static-1.1.2.3...
-    cabal: Error: some packages failed to install:
-    c2hs-0.16.4 depends on language-c-0.3.2.1 which failed to install.
-    dbus-0.10.4 depends on libxml-sax-0.7.4 which failed to install.
-    git-annex-4.20130521.2 depends on libxml-sax-0.7.4 which failed to install.
-    language-c-0.3.2.1 failed during the configure step. The exception was:
-    ExitFailure 1
-    libxml-sax-0.7.4 failed during the configure step. The exception was:
-    ExitFailure 1
-    network-protocol-xmpp-0.4.5 depends on libxml-sax-0.7.4 which failed to
-    install.
-
-"""]]
diff --git a/doc/install/fromsource/comment_7_129c4f2e404c874e5adfa52902a81104._comment b/doc/install/fromsource/comment_7_129c4f2e404c874e5adfa52902a81104._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_7_129c4f2e404c874e5adfa52902a81104._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="krig"
- ip="46.194.28.123"
- subject="Could not resolve dependencies for yesod"
- date="2013-06-25T06:14:18Z"
- content="""
-I'm having problems installing from cabal, and it seems related to yesod. I found an older discussion on something similar, where a constraint to require a newer version of yesod had been added, but I haven't figured out what was done to solve it.
-
-The problem seems to be that git-annex requires yesod < 1.2, but cabal is unable to install an older version.
-
-    $ cabal install git-annex --bindir=$HOME/bin
-    Resolving dependencies...
-    cabal: Could not resolve dependencies:
-    trying: git-annex-4.20130601
-    trying: git-annex-4.20130601:+webapp
-    rejecting: yesod-1.2.1.1, 1.2.1, 1.2.0.1, 1.2.0 (conflict:
-    git-annex-4.20130601:webapp => yesod(<1.2))
-    trying: yesod-1.1.9.3
-    $
-
-From what I can tell, the problem is fixed in github master since yesod >= 1.2 is supported again.
-"""]]
diff --git a/doc/install/fromsource/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment b/doc/install/fromsource/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_8_738c108f131e3aab0d720bc4fd6a81fd._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.193"
- subject="comment 8"
- date="2013-06-25T17:16:46Z"
- content="""
-git-annex 4.20130621 once again builds with the current version of yesod.
-"""]]
diff --git a/doc/install/fromsource/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment b/doc/install/fromsource/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment
deleted file mode 100644
--- a/doc/install/fromsource/comment_9_5ddbba419d96a7411f7edddaa4d7b739._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl7dGdYtCHb7xleEOp6n8yaUQ4UtaiAEEs"
- nickname="Henning"
- subject="libxml-sax Error on OS X fresh install"
- date="2013-07-27T13:11:23Z"
- content="""
-I had - maybe the same problem as Nigel - with ExitFailure 1 libxml-sax-0.7.4 .
-
-I could fix this by forcing the link of libxml2 package with \"brew link libxml2 --force\". Maybe you should update your guide. I had this problem on 2 different machines running both the current versions of OS X.
-
-After this the build finished successfull. Maybe this helps.
-"""]]
diff --git a/doc/install/openSUSE.mdwn b/doc/install/openSUSE.mdwn
deleted file mode 100644
--- a/doc/install/openSUSE.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Haskell Platform is now [officially available for openSUSE](http://software.opensuse.org/package/haskell-platform) via 1-Click Install. 
-
-At the time of writing, there are [unofficial packages of git-annex](http://software.opensuse.org/package/git-annex) available for openSUSE.  It should also be possible to build it via cabal or from source as described on the [[install]] page.
diff --git a/doc/install/verifying_downloads.mdwn b/doc/install/verifying_downloads.mdwn
deleted file mode 100644
--- a/doc/install/verifying_downloads.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-When you download a git-annex package from downloads.kitenet.net,
-as listed in [[install]], you should use a https connection. That provides
-some security, but here's some more.
-
-The downloaded package's integrity can be verified by checking that
-it was signed using the right GPG key, specifically the git-annex
-distribution signing key. To do this, you need to download the .sig
-file accompanying your package. Just append .sig to the url. 
-
-For example, on Linux:
-
-	$ wget https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-amd64.tar.gz
-	$ wget https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-amd64.tar.gz.sig
-
-You can then download the public key, and check that the package is signed
-with it.
-
-	$ wget https://downloads.kitenet.net/git-annex/gpg-pubkey.asc
-	$ gpg --import gpg-pubkey.asc
-	$ gpg --verify git-annex-standalone-*.tar.gz.sig
-
-(The git-annex assistant can automatically upgrade git-annex, and when it
-does, it always checks the signature like that.)
-
-But, how do you know that the gpg-pubkey.asc you downloaded
-is the right key? The answer is the GPG web of trust. 
-
-* Joey Hess generates these git-annex packages,
-  and has a GPG key, [C910D9222512E3C7 Joey Hess <id@joeyh.name>](http://pgp.cs.uu.nl/stats/2512E3C7.html), which has
-  been verified and signed by many people.
-* Joey's GPG key has signed the git-annex distribution signing key.
-
-Don't take this page's word about this, check it yourself!
diff --git a/doc/internals.mdwn b/doc/internals.mdwn
deleted file mode 100644
--- a/doc/internals.mdwn
+++ /dev/null
@@ -1,280 +0,0 @@
-In the world of git, we're not scared about internal implementation
-details, and sometimes we like to dive in and tweak things by hand. Here's
-some documentation to that end.
-
-## The .git/ directory
-
-### `.git/annex/objects/aa/bb/*/*`
-
-This is where locally available file contents are actually stored.
-Files added to the annex get a symlink or pointer file checked into git,
-that points to the file content.
-
-First there are two levels of directories used for hashing, to prevent
-too many things ending up in any one directory.
-See [[hashing]] for details.
-
-Each subdirectory has the [[name_of_a_key|key_format]] in one of the
-[[key-value_backends|backends]]. The file inside also has the name of the key.
-This two-level structure is used because it allows the write bit to be removed
-from the subdirectories as well as from the files. That prevents accidentally
-deleting or changing the file contents. See [[lockdown]] for details.
-
-In [[direct_mode]], file contents are not stored in here, and instead
-are stored directly in the file. However, the same symlinks are still
-committed to git, internally.
-
-Also in [[direct_mode]], some additional data is stored in these directories.
-`.cache` files contain cached file stats used in detecting when a file has
-changed, and `.map` files contain a list of file(s) in the work directory
-that contain the key.
-
-### `.git/annex/tmp/`
-
-This directory contains partially transferred objects.
-
-### `.git/annex/misctmp/`
-
-This is a temp directory for miscellaneous other temp files.
-
-While .git/annex/objects and .git/annex/tmp can be put on different
-filesystems if desired, .git/annex/misctmp 
-has to be on the same filesystem as the work tree and git repository.
-
-### `.git/annex/bad/`
-
-git-annex fsck puts any bad objects it finds in here.
-
-### `.git/annex/transfers/`
-
-Contains information files for uploads and downloads that are in progress,
-as well as any that have failed. Used especially by the assistant.
-It is safe to delete these files.
-
-### `.git/annex/ssh/`
-
-ssh connection caching files are written in here. It is safe to delete
-these files.
-
-### `.git/annex/index`
-
-This is a git index file which git-annex uses to stage files
-when preparing commits to the git-annex branch.
-
-It's pretty safe to delete this file if git-annex is not currently running.
-It will be re-created as necessary.
-
-### `.git/annex/journal/`
-
-git-annex uses this to journal changes to the git-annex branch,
-before committing a set of changes.
-
-## The git-annex branch
-
-This branch is managed by git-annex, with the contents listed below.
-
-This branch is not connected to your master, etc branches. It it used for
-internal tracking of information about git-annex repositories and annexed
-objects.
-
-The files stored in this branch are all designed to be auto-merged
-using git's [[union merge driver|git-union-merge]]. So each line
-has a timestamp, to allow the most recent information to be identified.
-
-### `uuid.log`
-
-Records the UUIDs of known repositories, and associates them with a
-description of the repository. This allows git-annex to display something
-more useful than a UUID when it refers to a repository that does not have
-a configured git remote pointing at it.
-
-The file format is simply one line per repository, with the uuid followed by a
-space and then the description, followed by a timestamp. Example:
-
-	e605dca6-446a-11e0-8b2a-002170d25c55 laptop timestamp=1317929189.157237s
-	26339d22-446b-11e0-9101-002170d25c55 usb disk timestamp=1317929330.769997s
-
-## `numcopies.log`
-
-Records the global numcopies setting.
-
-The file format is simply a timestamp followed by a number.
-
-## `remote.log`
-
-Holds persistent configuration settings for [[special_remotes]] such as
-Amazon S3.
-
-The file format is one line per remote, starting with the uuid of the
-remote, followed by a space, and then a series of var=value pairs,
-each separated by whitespace, and finally a timestamp.
-
-Encrypted special remotes store their encryption key here,
-in the "cipher" value. It is base64 encoded, and unless shared [[encryption]]
-is used, is encrypted to one or more gpg keys. The first 256 bytes of
-the cipher is used as the HMAC SHA1 encryption key, to encrypt filenames
-stored on the special remote. The remainder of the cipher is used as a gpg
-symmetric encryption key, to encrypt the content of files stored on the special
-remote.
-
-## `trust.log`
-
-Records the [[trust]] information for repositories. Does not exist unless
-[[trust]] values are configured.
-
-The file format is one line per repository, with the uuid followed by a
-space, and then either `1` (trusted), `0` (untrusted), `?` (semi-trusted),
-`X` (dead) and finally a timestamp.
-
-Example:
-
-	e605dca6-446a-11e0-8b2a-002170d25c55 1 timestamp=1317929189.157237s
-	26339d22-446b-11e0-9101-002170d25c55 ? timestamp=1317929330.769997s
-
-Repositories not listed are semi-trusted.
-
-## `group.log`
-
-Used to group repositories together.
-
-The file format is one line per repository, with the uuid followed by a space,
-and then a space-separated list of groups this repository is part of,
-and finally a timestamp.
-
-## `preferred-content.log`
-
-Used to indicate which repositories prefer to contain which file contents.
-
-The file format is one line per repository, with the uuid followed by a space,
-then a boolean expression, and finally a timestamp.
-
-Files matching the expression are preferred to be retained in the
-repository, while files not matching it are preferred to be stored
-somewhere else.
-
-## `required-content.log`
-
-Used to indicate which repositories are required to contain which file
-contents.
-
-File format is identical to preferred-content.log.
-
-## `group-preferred-content.log`
-
-Contains standard preferred content settings for groups. (Overriding or
-supplementing the ones built into git-annex.)
-
-The file format is one line per group, staring with a timestamp, then a
-space, then the group name followed by a space and then the preferred
-content expression.
-
-## `aaa/bbb/*.log`
-
-These log files record [[location_tracking]] information
-for file contents. These are placed in two levels of subdirectories
-for hashing. See [[hashing]] for details.
-
-The name of the key is the filename, and the content
-consists of a timestamp, either 1 (present) or 0 (not present) or X (dead),
-and the UUID of the repository that has or lacks the file content.
-
-Example:
-
-	1287290776.765152s 1 e605dca6-446a-11e0-8b2a-002170d25c55
-	1287290767.478634s 0 26339d22-446b-11e0-9101-002170d25c55
-
-## `aaa/bbb/*.log.web`
-
-These log files record urls used by the
-[[web_special_remote|special_remotes/web]] and sometimes by other remotes.
-Their format is similar to the location tracking files, but with urls
-rather than UUIDs.
-
-## `aaa/bbb/*.log.rmt`
-
-These log files are used by remotes that need to record their own state
-about keys. Each remote can store one line of data about a key, in
-its own format.
-
-Example:
-
-	1287290776.765152s e605dca6-446a-11e0-8b2a-002170d25c55 blah blah
-	1287290767.478634s 26339d22-446b-11e0-9101-002170d25c55 foo=bar
-
-## `aaa/bbb/*.log.met`
-
-These log files are used to store arbitrary [[design/metadata]] about keys.
-Each key can have any number of metadata fields. Each field has a set of
-values.
-
-Lines are timestamped, and record when values are added (`field +value`),
-but also when values are removed (`field -value`). Removed values
-are retained in the log so that when merging an old line that sets a value
-that was later unset, the value is not accidentally added back.
-
-For example:
-
-	1287290776.765152s tag +foo +bar author +joey
-	1291237510.141453s tag -bar +baz
-
-The value can be completely arbitrary data, although it's typically
-reasonably short. If the value contains any whitespace
-(including \r or \n), it will be base64 encoded. Base64 encoded values
-are indicated by prefixing them with "!".
-
-## `aaa/bbb/*.log.cnk`
-
-These log files are used when objects are stored in chunked form on
-remotes. They record the size(s) of the chunks, and the number of chunks.
-
-For example, this logs that a remote has an object stored using both
-9 chunks of 1 mb size, and 1 chunk of 10 mb size.
-
-	1287290776.765152s e605dca6-446a-11e0-8b2a-002170d25c55:10240 9
-	1287290776.765153s e605dca6-446a-11e0-8b2a-002170d25c55:102400 1
-
-(When those chunks are removed from the remote, the 9 is changed to 0.)
-
-## `schedule.log`
-
-Used to record scheduled events, such as periodic fscks.
-
-The file format is simply one line per repository, with the uuid followed by a
-space and then its schedule, followed by a timestamp.
-
-There can be multiple events in the schedule, separated by "; ".
-
-The format of the scheduled events is the same described in
-[[git-annex-schedule]].
-
-Example:
-
-	42bf2035-0636-461d-a367-49e9dfd361dd fsck self 30m every day at any time; fsck 4b3ebc86-0faf-4892-83c5-ce00cbe30f0a 1h every year at any time timestamp=1385646997.053162s
-
-## `activity.log`
-
-Used to record the times of activities, such as fscks.
-
-Example:
-
-	42bf2035-0636-461d-a367-49e9dfd361dd Fsck timestamp=1422387398.30395s
-
-## `transitions.log`
-
-Used to record transitions, eg by `git annex forget`
-
-Each line of the file is a transition, followed by a timestamp.
-
-Example:
-
-	ForgetGitHistory 1387325539.685136s
-	ForgetDeadRemotes 1387325539.685136s
-
-## `difference.log`
-
-Used when a repository has fundamental differences from other repositories,
-that should prevent merging.
-
-Example:
-
-	e605dca6-446a-11e0-8b2a-002170d25c55 [ObjectHashLower] timestamp=1422387398.30395s
diff --git a/doc/internals/comment_1_4b8ed353dca4f484b3b6eb463fa02fd8._comment b/doc/internals/comment_1_4b8ed353dca4f484b3b6eb463fa02fd8._comment
deleted file mode 100644
--- a/doc/internals/comment_1_4b8ed353dca4f484b3b6eb463fa02fd8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="stoile"
- ip="2a01:198:242:0:219:66ff:fef2:c021"
- subject="tmp missing"
- date="2013-11-16T12:16:48Z"
- content="""
-There's no information about .git/annex/tmp here.
-"""]]
diff --git a/doc/internals/comment_2_c19232d5cc4976c2e5b014aef6e8d9ec._comment b/doc/internals/comment_2_c19232d5cc4976c2e5b014aef6e8d9ec._comment
deleted file mode 100644
--- a/doc/internals/comment_2_c19232d5cc4976c2e5b014aef6e8d9ec._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.246"
- subject="comment 2"
- date="2013-11-16T17:23:02Z"
- content="""
-.git/annex/tmp is not very interesting. It's a temporary file directory. When transferring a key's content, git-annex uses a stable filename, which allows resuming interrupted downloads, or cleaning up aborted downloads with `git annex unused`.
-"""]]
diff --git a/doc/internals/comment_3_5a26ee5aab274f321a4ea6f8527f53bd._comment b/doc/internals/comment_3_5a26ee5aab274f321a4ea6f8527f53bd._comment
deleted file mode 100644
--- a/doc/internals/comment_3_5a26ee5aab274f321a4ea6f8527f53bd._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="zardoz"
- ip="134.147.14.84"
- subject="comment 3"
- date="2014-09-15T10:34:36Z"
- content="""
-Some documentation that would be nice having added in the appropriate places:
-
-* Exactly how is the index file being used? Is this just a copy of the git index file that we would get when checking out the git-annex branch? Why is the file kept around? Which sort of operations are done on the index, e.g. when doing git annex add?
-
-* For all time-stamped data-structures: Exactly which significance does the time-stamp have? E.g., for uuid.log, is this the date the name was changed?
-"""]]
diff --git a/doc/internals/comment_4_81293b180fb09105ec158fdfef73d249._comment b/doc/internals/comment_4_81293b180fb09105ec158fdfef73d249._comment
deleted file mode 100644
--- a/doc/internals/comment_4_81293b180fb09105ec158fdfef73d249._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- subject=".git/annex/tmp third-party use?"
- date="2015-06-09T20:21:39Z"
- content="""
-can `.git/annex/tmp` be used by third party software to import stuff in git-annex? the idea here would be to accept uploads from a web form in `.git/annex/tmp` then move it into place in the proper location once the upload is complete (then do a git-annex-add or let the assistant import it). --[[anarcat]]
-"""]]
diff --git a/doc/internals/comment_5_354012b6a9ac11160eb926234d38051f._comment b/doc/internals/comment_5_354012b6a9ac11160eb926234d38051f._comment
deleted file mode 100644
--- a/doc/internals/comment_5_354012b6a9ac11160eb926234d38051f._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2015-06-09T20:25:03Z"
- content="""
-It's ok to put files in .git/annex/tmp if they're formatted as git-annex
-key filenames. Of course, you should avoid overwriting the content of files
-already there.
-
-Files not formatted as keys should be kept out of .git/annex/tmp; it's ok
-to put them in .git/annex/misctmp.
-"""]]
diff --git a/doc/internals/hashing.mdwn b/doc/internals/hashing.mdwn
deleted file mode 100644
--- a/doc/internals/hashing.mdwn
+++ /dev/null
@@ -1,43 +0,0 @@
-In both the .git/annex directory and the git-annex branch, two levels of
-hash directories are used, to avoid issues with too many files in one
-directory.
-
-Two separate hash methods are used. 
-
-* hashdirmixed is only used for non-bare git repositories.
-  (We'd like to stop using this, but it'd be too annoying to change
-  all the git-annex symlinks!)
-
-* hashdirlower is used for bare git repositories, the 
-  git-annex branch, and on special remotes as well.
-
-Note that `git annex find` and `git annex examinekey` can be used with
-the `--format` option to find the hash directories. The explanation
-below is only for completeness.
-
-## new hash format
-
-This uses two directories, each with a three-letter name, such as "f87/4d5"
-
-The directory names come from the md5sum of the [[key|key_format]].
-
-For example:
-
-	echo -n	"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | md5sum
-
-## old hash format
-
-This uses two directories, each with a two-letter name, such as "pX/1J"
-
-It takes the md5sum of the key, but rather than a string, represents it as 4
-32bit words. Only the first word is used. It is converted into a string by the
-same mechanism that would be used to encode a normal md5sum value into a
-string, but where that would normally encode the bits using the 16 characters
-0-9a-f, this instead uses the 32 characters "0123456789zqjxkmvwgpfZQJXKMVWGPF".
-The first 2 letters of the resulting string are the first directory, and the
-second 2 are the second directory.
-
-## chunk keys
-
-The same hash directory is used for a chunk key as would be used for the
-key that it's a chunk of.
diff --git a/doc/internals/hashing/comment_1_9153e4f4f9335e524cf1b96a51bef41f._comment b/doc/internals/hashing/comment_1_9153e4f4f9335e524cf1b96a51bef41f._comment
deleted file mode 100644
--- a/doc/internals/hashing/comment_1_9153e4f4f9335e524cf1b96a51bef41f._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnlotDRSLW2JVXY3SLSwhrcHteqUHhTtoY"
- nickname="Péter"
- subject="comment 1"
- date="2014-01-31T00:45:47Z"
- content="""
-The correct old hash value for the empty file SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 is pX/ZJ .
-
-The text describes the old hash value computation incorrectly, because it doesn't mention that 1 bit is skipped between each group of 5 bits. See the sample implementation in display_32bits_as_dir in https://github.com/joeyh/git-annex/blob/master/Locations.hs
-"""]]
diff --git a/doc/internals/hashing/comment_2_086ea37acf15e2a8694b8386222b73f6._comment b/doc/internals/hashing/comment_2_086ea37acf15e2a8694b8386222b73f6._comment
deleted file mode 100644
--- a/doc/internals/hashing/comment_2_086ea37acf15e2a8694b8386222b73f6._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="comment 2"
- date="2014-12-04T20:26:47Z"
- content="""
-1c to support  Péter's statement:
-
-    $> git annex examinekey --format='${hashdirmixed}' \"SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\"
-    pX/ZJ/%  
-"""]]
diff --git a/doc/internals/hashing/comment_3_19b7d20ca392078f14f9f10992f288ec._comment b/doc/internals/hashing/comment_3_19b7d20ca392078f14f9f10992f288ec._comment
deleted file mode 100644
--- a/doc/internals/hashing/comment_3_19b7d20ca392078f14f9f10992f288ec._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="josch"
- subject="any particular reason for the chosen characters for base32 encoding"
- date="2015-01-31T17:13:57Z"
- content="""
-are the characters \"0123456789zqjxkmvwgpfZQJXKMVWGPF\" chosen randomly for the base32 encoding or was there a reason to choose exactly these?
-"""]]
diff --git a/doc/internals/hashing/comment_4_7642d6ce5fd4d37d464b05d0b4f869c6._comment b/doc/internals/hashing/comment_4_7642d6ce5fd4d37d464b05d0b4f869c6._comment
deleted file mode 100644
--- a/doc/internals/hashing/comment_4_7642d6ce5fd4d37d464b05d0b4f869c6._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2015-02-04T17:14:24Z"
- content="""
-The only reason for the letter choice is that it avoids making random
-words with possibly unintentional meanings..
-"""]]
diff --git a/doc/internals/hashing/comment_5_b0cb207a85cda5a0ff2ea71caca22c0d._comment b/doc/internals/hashing/comment_5_b0cb207a85cda5a0ff2ea71caca22c0d._comment
deleted file mode 100644
--- a/doc/internals/hashing/comment_5_b0cb207a85cda5a0ff2ea71caca22c0d._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- subject="why md5sum?"
- date="2015-02-13T15:59:46Z"
- content="""
-why the extra processing to generate the hashing directories?
-
-we already have a hash here, for example, `SHA256E-s8242375--5f82490990812ad3feabb02355750710a9d94283ab256d1c691c3bf8d7d9fbe3.ogg` has a loon `5f82490990812ad3feabb02355750710a9d94283ab256d1c691c3bf8d7d9fbe3` hash. Why not use the first characters of that? This is will not change for a give file, and has a higher chance of generating collisions (which is a good thing here, because we can reuse directories).
-
-In other words, why aren't the hashes of `SHA256E-s8242375--5f82490990812ad3feabb02355750710a9d94283ab256d1c691c3bf8d7d9fbe3.ogg` simply `5f8/249`? --[[anarcat]]
-"""]]
diff --git a/doc/internals/hashing/comment_6_edb5c3388b5ac3481403c7accf9bb3f2._comment b/doc/internals/hashing/comment_6_edb5c3388b5ac3481403c7accf9bb3f2._comment
deleted file mode 100644
--- a/doc/internals/hashing/comment_6_edb5c3388b5ac3481403c7accf9bb3f2._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""re: why md5sum?"""
- date="2015-02-17T21:51:59Z"
- content="""
-Not all types of keys contain hashes.
-"""]]
diff --git a/doc/internals/hashing/comment_7_843592cf125be06fb316be43b85b0524._comment b/doc/internals/hashing/comment_7_843592cf125be06fb316be43b85b0524._comment
deleted file mode 100644
--- a/doc/internals/hashing/comment_7_843592cf125be06fb316be43b85b0524._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="giomasce"
- subject="Python implementation"
- date="2015-03-22T22:38:54Z"
- content="""
-I wrote a Python implementation of the two hashing functions for a project of mine. [Here it is](https://gist.github.com/giomasce/a7802bda1417521c5b30), hoping it can be helpful for somone.
-
-"""]]
diff --git a/doc/internals/key_format.mdwn b/doc/internals/key_format.mdwn
deleted file mode 100644
--- a/doc/internals/key_format.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-A git-annex key has this format:
-
-	BACKEND[-sNNNN][-mNNNN][-SNNNN-CNNNN]--NAME
-
-For example:
-
-	SHA256E-s31390--f50d7ac4c6b9031379986bc362fcefb65f1e52621ce1708d537e740fefc59cc0.mp3
-
-* The backend is one of the [[key-value_backends|backends]], which
-  are always upper-cased.
-* The name field at the end has a format dependent on the backend. It is
-  always the last field, and is prefixed with "--". Unlike other fields,
-  it may contain "-" in its content. It should not contain newline
-  characters or "/"; otherwise nearly anything goes. 
-* The "-s" field is optional, and is the size of the content in bytes.
-* The "-m" field is optional, and is the mtime of the file when it was
-  added to git-annex, expressed as seconds from the epoch.
-  This is currently only used by the WORM backend.
-* The "-S" and "-C" fields are only used for keys that are chunks
-  of some other key. "-S" is the size of the chunk, and "-c" is the chunk
-  number (starting at 1).
-* Other fields could be added in the future, if needed.
-
-git-annex always puts the fields in the order shown above when serializing
-a key. It can parse keys with the fields in other orders (although the name
-field must always come last).
-
-The `git annex examinekey` command can be used to extract information from
-a key.
diff --git a/doc/internals/lockdown.mdwn b/doc/internals/lockdown.mdwn
deleted file mode 100644
--- a/doc/internals/lockdown.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-Object files stored in `.git/annex/objects` are each put in their own directory.
-This allows the write bit to be removed from both the file, and its directory,
-which prevents accidentially deleting or changing the file contents.
-
-The reasoning for doing this follows:
-
-Normally with git, once you have committed a file, editing the file in the
-working tree cannot cause you to lose the committed version. This is an
-important property of git. Of course you can `rm -rf .git` and delete
-commits if you like (before you've pushed them). But you can't lose a
-committed version of the file because of something you do with the working
-tree version.
-
-It's easy for git to do this, because committing a file makes a copy of it.
-But git-annex does not make a local copy of a file added to it, because
-the file could be very large.
-
-So, it's important for git-annex to find another way to preserve the expected
-property that once committed, you cannot accidentially lose a file.
-The most important protection it makes is just to remove the write bit of
-the file. Thus preventing programs from modifying it.
-
-But, that does not prevent any program that might follow the symlink and
-delete the symlinked file. This might seem an unlikely thing for a program to
-do at first, but consider a command like:
-`tar cf foo.tar foo --remove-files --dereference`
-
-When I tested this, I didn't know if it would remove the file foo symlinked
-to or not! It turned out that my tar doesn't remove it. But it could
-have easily went the other way.
-
-Rather than needing to worry about every possible program that might
-decide to do something like this, git-annex removes the write bit from the
-directory containing the annexed object, as well as removing the write
-bit from the file. (The only bad consequence of this is that `rm -rf .git`
-doesn't work unless you first run `chmod -R +w .git`)
-
-----
-
-It's known that this lockdown mechanism is incomplete. The worst hole in
-it is that if you explicitly run `chmod +w` on an annexed file in the working
-tree, this follows the symlink and allows writing to the file. It would be
-better to make the files fully immutable. But most systems either don't
-support immutable attributes, or only let root make files immutable.
diff --git a/doc/internals/lockdown/comment_1_caa8b378e8c35177083e6cc2f6937180._comment b/doc/internals/lockdown/comment_1_caa8b378e8c35177083e6cc2f6937180._comment
deleted file mode 100644
--- a/doc/internals/lockdown/comment_1_caa8b378e8c35177083e6cc2f6937180._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnLM6CIUo2loSFNTLPDdBgAEoz9ehP2hz8"
- nickname="Duncan"
- subject="Having the write bit not set can cause problems with automated usage (e.g. build systems)"
- date="2014-12-02T23:16:57Z"
- content="""
-I'm using a git-annex to store build artefacts on a remote bare repo. Some of these artefacts are used in subsequent builds, which clone the artefacts repo, and use 'git annex get' to retrieve the artefacts of interest. 
-
-Unfortunately, I've had to add a little kludge along the following lines to my build script fragment:
-
-    git annex get ${file}
-    find .git/annex/objects -type d -exec chmod +w {} \;
-
-This is necessary because I need to ensure that the cloned git repo is able to be deleted at all times (I'm using yocto/openembedded and it may want to delete the clone for a variety of reasons).
-"""]]
diff --git a/doc/internals/lockdown/comment_2_7bf74adb5556b7fc74a94e751c5fd3d6._comment b/doc/internals/lockdown/comment_2_7bf74adb5556b7fc74a94e751c5fd3d6._comment
deleted file mode 100644
--- a/doc/internals/lockdown/comment_2_7bf74adb5556b7fc74a94e751c5fd3d6._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm_YXzEdPHzbSGVwtmTR7g1BqDtTnIBB5s"
- nickname="Matthias"
- subject="File immutability"
- date="2015-01-07T12:06:15Z"
- content="""
-# setcap cap_linux_immutable+ep /usr/bin/git-annex
-
-After doing that, git-annex is able to make files immutable, so the additional directory is not needed any more.
-Even on file systems / in environments where that is not possible, in some situations file lookup speed is way more important than not being able to delete the target of a symlink.
-
-I have no idea how to code in Haskell, so if somebody else could add an appropriate always/never/only-when-necessary config option I'd be very happy, and my media server would not have any more hiccups when switching songs …
-"""]]
diff --git a/doc/license.mdwn b/doc/license.mdwn
deleted file mode 100644
--- a/doc/license.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-git-annex is Free Software.
-
-The majority of git-annex is licensed under the [[GPL]], version 3 or
-higher.
-
-The git-annex webapp is licensed under the [[AGPL]], version 3 or higher.
-Note that builds of git-annex that include the webapp may be licensed
-under the AGPL as a whole. git-annex built without the webapp does
-not include this code, so remains GPLed.
-
-git-annex contains a variety of other code, artwork, etc copyright by
-others, under a variety of licences, including the BSD,
-MIT, and Apache 2.0 licenses. For details, see
-[this file](http://source.git-annex.branchable.com/?p=source.git;a=blob_plain;f=debian/copyright;hb=HEAD).
diff --git a/doc/links/key_concepts.mdwn b/doc/links/key_concepts.mdwn
deleted file mode 100644
--- a/doc/links/key_concepts.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-### key concepts
-
-* [[git-annex man page|git-annex]]
-* [[how_it_works]]
-* [[special_remotes]]
-* [[sync]]
-* [[direct_mode]]
diff --git a/doc/links/other_stuff.mdwn b/doc/links/other_stuff.mdwn
deleted file mode 100644
--- a/doc/links/other_stuff.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-### other stuff
-
-* [[testimonials]]
-* [[privacy]]
-* [[what git annex is not|not]]
-* [[related_software]]
-* [[public git-annex repos|publicrepos]]
-* [[thanks]]
-* [[sitemap]]
diff --git a/doc/links/the_details.mdwn b/doc/links/the_details.mdwn
deleted file mode 100644
--- a/doc/links/the_details.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-### the details
-
-* [[encryption]]
-* [[key-value backends|backends]]
-* [[bare_repositories]]
-* [[submodules]]
-* [[internals]]
-* [[scalability]]
-* [[design]]
diff --git a/doc/location_tracking.mdwn b/doc/location_tracking.mdwn
deleted file mode 100644
--- a/doc/location_tracking.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-git-annex keeps track of in which repositories it last saw a file's content.
-This location tracking information is stored in the git-annex branch.
-Repositories record their UUID and the date when they get or drop 
-a file's content.
-
-This location tracking information is useful if you have multiple
-repositories, and not all are always accessible. For example, perhaps one
-is on a home file server, and you are away from home. Then git-annex can
-tell you what git remote it needs access to in order to get a file:
-
-	# git annex get myfile 
-	get myfile (not available)
-	  I was unable to access these remotes: home
-
-Another way the location tracking comes in handy is if you put repositories
-on removable USB drives, that might be archived away offline in a safe
-place. In this sort of case, you probably don't have a git remotes
-configured for every USB drive. So git-annex may have to resort to talking
-about repository UUIDs. If you have previously used "git annex init"
-to attach descriptions to those repositories, it will include their
-descriptions to help you with finding them:
-
-	# git annex get myfile
-	get myfile (not available)
-	  Try making some of these repositories available:
-	  	c0a28e06-d7ef-11df-885c-775af44f8882  -- USB archive drive 1
-	  	e1938fee-d95b-11df-96cc-002170d25c55
-
-In certain cases you may want to configure git-annex to [[trust]]
-that location tracking information is always correct for a repository.
diff --git a/doc/logo-old-bw.svg b/doc/logo-old-bw.svg
deleted file mode 100644
--- a/doc/logo-old-bw.svg
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="640px"
-   height="480px"
-   id="svg3134"
-   version="1.1"
-   inkscape:version="0.48.3.1 r9886"
-   sodipodi:docname="New document 11">
-  <defs
-     id="defs3136" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.77472527"
-     inkscape:cx="317.41844"
-     inkscape:cy="245.16312"
-     inkscape:current-layer="layer1"
-     inkscape:document-units="px"
-     showgrid="false"
-     inkscape:window-width="800"
-     inkscape:window-height="564"
-     inkscape:window-x="0"
-     inkscape:window-y="12"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata3139">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <path
-       style="fill:#000000"
-       d="m 302.43431,440.4468 c -14.88228,-4.33874 -18.89443,-6.47398 -28.38217,-15.10481 -13.08558,-11.90371 -17.72561,-23.29726 -17.72561,-43.52501 0,-18.30772 4.14768,-29.96528 14.34194,-40.30981 7.27131,-7.37848 18.36439,-13.25052 25.03206,-13.25052 4.73347,0 4.8315,0.27458 4.8315,13.5325 l 0,13.5325 -6.57204,3.04787 c -9.16684,4.25125 -13.05127,12.36242 -12.09267,25.25093 1.53891,20.69072 13.75689,28.81207 43.34566,28.81207 14.25099,0 19.3577,-0.72886 23.91428,-3.41316 12.51899,-7.37499 18.80704,-23.65294 14.28477,-36.97908 -2.56222,-7.55028 -13.65238,-17.88336 -19.19364,-17.88336 -3.36269,0 -3.73837,1.31029 -3.73837,13.03841 l 0,13.0384 -11.88928,-0.55077 -11.88929,-0.55079 0,-25.90026 0,-25.90027 35.19228,0 35.19228,0 0.57499,9.7126 c 0.49269,8.32267 0.0845,9.71665 -2.85343,9.74093 -8.20311,0.0677 -8.706,2.84359 -2.15276,11.88256 6.12053,8.44215 6.33349,9.33743 6.33349,26.62529 0,15.38301 -0.65924,19.1446 -4.70538,26.84845 -9.93611,18.91837 -28.93477,29.1492 -56.00199,30.15722 -10.88743,0.40545 -20.4551,-0.28006 -25.84662,-1.85189 z m -45.65485,-139.01542 0,-13.87514 65.62885,0 65.62884,0 0,13.87514 0,13.87514 -65.62884,0 -65.62885,0 0,-13.87514 z m 49.45942,-38.8504 0,-15.72516 -24.72971,0 -24.72971,0 0,-12.95013 0,-12.95014 24.72971,0 24.72971,0 0,-16.65017 0,-16.65017 15.21829,0 15.21828,0 0,16.65017 0,16.65017 25.68085,0 25.68085,0 0,12.89643 0,12.89645 -25.20528,0.51619 -25.20528,0.51621 -0.5525,15.26265 -0.5525,15.26266 -15.14135,0 -15.14136,0 0,-15.72516 z m 90.58314,-28.97078 c -1.413,-6.87082 -1.79669,-6.34506 5.78198,-7.92291 5.58749,-1.16331 6.09939,-0.83956 7.33692,4.64003 1.45579,6.44604 -0.79787,9.0505 -7.87441,9.1001 -3.02463,0.0211 -4.34501,-1.44337 -5.24449,-5.81722 z m -160.69546,0.49827 c -1.79783,-1.10787 -2.17745,-3.37832 -1.25087,-7.48118 1.23754,-5.47959 1.74944,-5.80335 7.33693,-4.64004 7.57866,1.57785 7.19497,1.05209 5.78198,7.92291 -1.24077,6.03343 -6.10031,7.75249 -11.86804,4.19831 z m 190.42463,-6.76941 c -1.85277,-5.87101 -1.66966,-6.25919 3.83255,-8.12458 3.17805,-1.07743 5.9948,-1.95896 6.25947,-1.95896 0.91633,0 4.67209,11.70301 3.97372,12.38219 -0.38574,0.37517 -3.27056,1.39869 -6.41068,2.27453 -5.34046,1.48954 -5.83503,1.19409 -7.65506,-4.57318 z m -216.85329,0.64986 c -3.40034,-0.87401 -6.18243,-1.85733 -6.18243,-2.18515 0,-0.32782 0.94953,-3.24505 2.11007,-6.48271 1.73496,-4.84015 2.83405,-5.67166 6.18243,-4.67733 7.88037,2.34017 8.42794,3.15845 6.18018,9.23554 -1.96709,5.31825 -2.52062,5.59264 -8.29025,4.10965 z m 245.52541,-10.67191 c -2.12815,-5.48318 -2.11652,-5.49574 11.85359,-12.82409 22.7641,-11.94143 40.5838,-25.97488 57.05249,-44.93026 l 7.53031,-8.66734 5.41145,4.25151 5.41145,4.25151 -17.60152,17.90565 c -16.73035,17.01941 -37.6183,32.42395 -56.39658,41.59159 -10.27596,5.01677 -10.722,4.96367 -13.26119,-1.57857 z m -286.33038,-6.27889 c -21.55151,-11.9442 -31.63729,-19.70355 -49.98909,-38.45829 l -16.54083,-16.90401 5.39695,-4.24028 5.39696,-4.24026 7.53031,8.66734 c 16.46869,18.95538 34.28839,32.98883 57.05248,44.93026 13.97012,7.32835 13.98175,7.34091 11.8536,12.82409 -1.17162,3.01872 -3.03333,5.48856 -4.13709,5.48856 -1.10378,0 -8.55726,-3.63034 -16.56329,-8.06741 z m 375.66016,-70.84688 c -3.97648,-2.69927 -4.05764,-3.18834 -1.36824,-8.24615 2.7937,-5.254 2.98784,-5.31188 8.50732,-2.53606 6.47782,3.25777 6.35114,2.92151 3.44074,9.13364 -2.52039,5.37967 -4.60478,5.70447 -10.57982,1.64857 z M 89.683687,134.84263 c -2.910382,-6.21213 -3.037055,-5.87587 3.440759,-9.13364 5.520337,-2.77624 5.713305,-2.71854 8.512274,2.54533 2.72546,5.12566 2.63957,5.52893 -1.77689,8.3432 -6.255304,3.98601 -7.594703,3.75504 -10.176143,-1.75489 z M 558.86885,114.49806 c -4.66412,-2.46246 -4.94939,-3.21135 -3.14292,-8.25101 1.09275,-3.04849 2.20334,-5.54273 2.46799,-5.54273 1.15984,0 12.46263,4.10838 12.46263,4.52996 0,2.20567 -4.45138,12.10382 -5.41738,12.04614 -0.68234,-0.0407 -3.54898,-1.29279 -6.37032,-2.78236 z M 76.248436,107.82834 c -1.1486,-3.20438 -2.088367,-6.03672 -2.088367,-6.2941 0,-0.42158 11.30279,-4.529954 12.462632,-4.529954 0.264646,0 1.376722,2.498376 2.471297,5.551964 1.832586,5.11256 1.553673,5.77145 -3.524022,8.32508 -7.178882,3.61035 -6.90035,3.70158 -9.32154,-3.05299 z M 568.27869,86.478917 c -4.16144,-1.0576 -4.15124,-1.435966 0.47558,-17.673656 4.71707,-16.554414 4.76128,-15.866207 -0.95115,-14.804204 -3.51666,0.653779 -4.75571,0.08973 -4.75571,-2.164633 0,-1.67682 1.09334,-3.456779 2.42964,-3.95547 1.33629,-0.498709 4.53447,-4.218875 7.10707,-8.267031 3.85384,-6.064326 5.73436,-7.360301 10.68013,-7.360301 4.78765,0 6.24005,0.919681 7.17525,4.543462 0.64491,2.498894 2.13408,6.869564 3.30925,9.712599 4.714,11.40422 2.47433,18.328434 -4.06643,12.571786 -3.92535,-3.4548 -3.4906,-4.351652 -9.63904,19.885132 -2.24473,8.848659 -3.45803,9.62341 -11.76459,7.512316 z M 62.514449,66.506779 57.950276,48.599557 52.639,52.662624 c -2.921206,2.234675 -5.630041,3.75306 -6.019648,3.374157 -0.389608,-0.378884 0.859281,-4.428205 2.775301,-8.998492 1.916001,-4.570287 3.965028,-9.76649 4.553405,-11.547134 0.734891,-2.224093 3.046111,-3.237533 7.383397,-3.237533 5.021102,0 8.14882,1.812001 15.277977,8.851138 4.930401,4.868122 8.964349,10.279427 8.964349,12.025124 0,4.517598 -2.081195,3.939726 -6.8916,-1.913568 -2.299596,-2.798153 -4.818203,-4.473179 -5.596904,-3.722293 -0.778719,0.750904 0.522064,8.499468 2.890599,17.219014 2.368555,8.719565 3.936551,16.213492 3.484473,16.653149 -0.452097,0.439676 -3.422934,1.3053 -6.601862,1.923613 l -5.779866,1.12422 -4.564172,-17.90724 z"
-       id="path3050"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>
diff --git a/doc/logo-old.png b/doc/logo-old.png
deleted file mode 100644
Binary files a/doc/logo-old.png and /dev/null differ
diff --git a/doc/logo-old.svg b/doc/logo-old.svg
deleted file mode 100644
--- a/doc/logo-old.svg
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="640px"
-   height="480px"
-   id="svg3134"
-   version="1.1"
-   inkscape:version="0.48.3.1 r9886"
-   sodipodi:docname="git-annex.svg">
-  <defs
-     id="defs3136" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.77472527"
-     inkscape:cx="398.6665"
-     inkscape:cy="232.05718"
-     inkscape:current-layer="layer1"
-     inkscape:document-units="px"
-     showgrid="false"
-     inkscape:window-width="1024"
-     inkscape:window-height="566"
-     inkscape:window-x="0"
-     inkscape:window-y="12"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata3139">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       id="g4187"
-       transform="matrix(2.0184211,0,0,1.9796558,-320.30102,-235.1316)">
-      <path
-         sodipodi:nodetypes="cccccccccccccccccccccccccssscssssssssscssssssssssscccssssscccssssssssssssssssssscssssssssssscsssssssccscsssssssssscc"
-         inkscape:connector-curvature="0"
-         id="path3050"
-         d="m 306.53525,253.83733 0,-8.5 -13,0 -13,0 0,-7 0,-7 13,0 13,0 0,-9 0,-9 8,0 8,0 0,9 0,9 13.5,0 13.5,0 0,6.97097 0,6.97098 -13.25,0.27902 -13.25,0.27903 -0.29044,8.25 -0.29044,8.25 -7.95956,0 -7.95956,0 z m 47.61806,-15.65972 c -0.74279,-3.71392 -0.94449,-3.42973 3.03949,-4.28261 2.93725,-0.62881 3.20635,-0.45381 3.8569,2.5081 0.76528,3.48431 -0.41943,4.89211 -4.13945,4.91892 -1.59,0.0114 -2.2841,-0.78019 -2.75694,-3.14441 z m -84.47495,0.26933 c -0.94509,-0.59884 -1.14465,-1.8261 -0.65756,-4.04384 0.65055,-2.96191 0.91965,-3.13691 3.8569,-2.5081 3.98398,0.85288 3.78228,0.56869 3.03949,4.28261 -0.65225,3.26128 -3.20683,4.19049 -6.23883,2.26933 z m 100.10308,-3.6591 c -0.97397,-3.17349 -0.87771,-3.38331 2.01471,-4.39162 1.67065,-0.58239 3.15137,-1.05889 3.2905,-1.05889 0.4817,0 2.45604,6.32589 2.08892,6.69301 -0.20278,0.20279 -1.71928,0.75604 -3.36999,1.22946 -2.80739,0.80515 -3.06738,0.64545 -4.02414,-2.47196 z m -113.99619,0.35127 c -1.7875,-0.47243 -3.25,-1.00395 -3.25,-1.18115 0,-0.1772 0.49915,-1.75406 1.10923,-3.50413 0.91204,-2.61627 1.48981,-3.06573 3.25,-2.52826 4.14258,1.26494 4.43043,1.70725 3.24882,4.99213 -1.03407,2.8747 -1.32505,3.02302 -4.35805,2.22141 z m 129.06865,-5.76854 c -1.11873,-2.96385 -1.11262,-2.97064 6.23124,-6.93187 11.96671,-6.45476 21.33423,-14.04033 29.99155,-24.28638 l 3.95856,-4.685 2.84471,2.29809 2.84471,2.29809 -9.25283,9.67863 c -8.79487,9.19959 -19.77532,17.52628 -29.64675,22.48171 -5.4019,2.71174 -5.63638,2.68304 -6.97119,-0.85327 z m -150.51915,-3.39396 c -11.32927,-6.45626 -16.6312,-10.65046 -26.27844,-20.78805 l -8.69524,-9.13721 2.83709,-2.29202 2.83709,-2.29201 3.95856,4.685 c 8.65732,10.24605 18.02484,17.83162 29.99155,24.28638 7.34386,3.96123 7.34997,3.96802 6.23124,6.93187 -0.6159,1.63172 -1.59457,2.96676 -2.1748,2.96676 -0.58024,0 -4.49841,-1.96233 -8.70705,-4.36072 z m 197.47834,-38.29522 c -2.09037,-1.45905 -2.13303,-1.72341 -0.71926,-4.45733 1.4686,-2.83997 1.57066,-2.87126 4.47216,-1.37083 3.40528,1.76094 3.33869,1.57918 1.80874,4.93705 -1.32493,2.9079 -2.42066,3.08347 -5.56164,0.89111 z m -239.11733,-2.89111 c -1.52994,-3.35787 -1.59653,-3.17611 1.80875,-4.93705 2.90195,-1.50066 3.00339,-1.46947 4.47476,1.37584 1.43273,2.7706 1.38758,2.98858 -0.93408,4.50979 -3.28831,2.15458 -3.99241,2.02973 -5.34943,-0.94858 z m 246.64289,-10.99695 c -2.45185,-1.33105 -2.60181,-1.73585 -1.65218,-4.45996 0.57444,-1.64782 1.15826,-2.99604 1.29738,-2.99604 0.60971,0 6.5514,2.22072 6.5514,2.4486 0,1.19224 -2.34002,6.54254 -2.84783,6.51136 -0.35869,-0.022 -1.86564,-0.6988 -3.34877,-1.50396 z m -253.70558,-3.60522 c -0.6038,-1.73208 -1.09782,-3.26306 -1.09782,-3.40218 0,-0.22788 5.94169,-2.4486 6.5514,-2.4486 0.13912,0 0.72372,1.35046 1.29912,3.00103 0.96336,2.76352 0.81674,3.11967 -1.85252,4.5 -3.77382,1.95152 -3.6274,2.00083 -4.90018,-1.65025 z M 444.28525,158.648 c -2.1876,-0.57167 -2.18224,-0.77619 0.25,-9.55323 2.47969,-8.94824 2.50293,-8.57624 -0.5,-8.00219 -1.84865,0.35339 -2.5,0.0485 -2.5,-1.17006 0,-0.90638 0.57475,-1.86851 1.27722,-2.13807 0.70247,-0.26957 2.3837,-2.28045 3.73607,-4.46862 2.0259,-3.27798 3.01446,-3.9785 5.61437,-3.9785 2.51679,0 3.28029,0.49712 3.77191,2.4559 0.33902,1.35074 1.12185,3.71324 1.73962,5.25 2.47807,6.16438 1.30071,9.90716 -2.13766,6.79549 -2.06349,-1.86744 -1.83495,-2.35222 -5.06708,10.74861 -1.18002,4.78301 -1.81783,5.20179 -6.18445,4.06067 z m -265.87191,-10.79564 -2.39931,-9.67948 -2.79205,2.19623 c -1.53563,1.20792 -2.95962,2.02866 -3.16443,1.82385 -0.20481,-0.2048 0.45171,-2.3936 1.45893,-4.864 1.00721,-2.4704 2.08435,-5.27913 2.39365,-6.24163 0.38632,-1.2022 1.60129,-1.75 3.88133,-1.75 2.63951,0 4.2837,0.97945 8.03138,4.78435 2.59183,2.63139 4.71241,5.55639 4.71241,6.5 0,2.44192 -1.09405,2.12956 -3.6228,-1.03435 -1.20886,-1.5125 -2.53285,-2.41791 -2.9422,-2.01203 -0.40936,0.40589 0.27444,4.59426 1.51954,9.30748 1.24511,4.71323 2.06938,8.76396 1.83173,9.00161 -0.23766,0.23766 -1.79938,0.70556 -3.47049,1.03978 l -3.03838,0.60768 z"
-         style="fill:#40bf4c;fill-opacity:1" />
-      <path
-         sodipodi:nodetypes="ccccccccc"
-         style="fill:#d8372c;fill-opacity:1"
-         d="m 280.84173,275.15053 0,-7.5 34.5,0 34.5,0 0,7.5 0,7.5 -34.5,0 -34.5,0 z"
-         id="path4113"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:nodetypes="sssssscssssssscccccccsssssss"
-         style="fill:#666666;fill-opacity:1;fill-rule:nonzero"
-         d="m 305.37638,349.62884 c -7.82337,-2.34524 -9.93249,-3.49941 -14.92004,-8.16468 -6.87887,-6.43437 -9.31806,-12.59298 -9.31806,-23.52679 0,-9.89596 2.18037,-16.19728 7.53932,-21.78886 3.82241,-3.98833 9.65386,-7.16237 13.15894,-7.16237 2.48831,0 2.53984,0.14842 2.53984,7.31479 l 0,7.31479 -3.45481,1.64748 c -4.81886,2.29795 -6.86084,6.68232 -6.35692,13.64901 0.80898,11.18406 7.23177,15.57393 22.7861,15.57393 7.49151,0 10.17602,-0.39397 12.57134,-1.84493 6.58103,-3.98644 9.88655,-12.78524 7.50927,-19.98849 -1.34692,-4.08119 -7.17683,-9.66658 -10.08978,-9.66658 -1.76771,0 -1.9652,0.70826 -1.9652,7.04772 l 0,7.04771 -6.25,-0.29771 -6.25,-0.29772 0,-14 0,-14 18.5,0 18.5,0 0.30226,5.25 c 0.259,4.49869 0.0444,5.25219 -1.5,5.26531 -4.31224,0.0366 -4.5766,1.53706 -1.13167,6.42294 3.21746,4.56328 3.32941,5.04721 3.32941,14.3919 0,8.31506 -0.34655,10.34833 -2.47354,14.51253 -5.22325,10.22604 -15.21053,15.75616 -29.43932,16.30103 -5.72334,0.21916 -10.75291,-0.15138 -13.58714,-1.00101 z"
-         id="path4115"
-         inkscape:connector-curvature="0" />
-    </g>
-  </g>
-</svg>
diff --git a/doc/logo-old_small.png b/doc/logo-old_small.png
deleted file mode 100644
Binary files a/doc/logo-old_small.png and /dev/null differ
diff --git a/doc/logo.mdwn b/doc/logo.mdwn
deleted file mode 100644
--- a/doc/logo.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Variants of the git-annex logo.
-
-[[logo_small.png]]
-
-[[logo.svg]]
-
-[[logo-old.png]]
-
-[[logo-old_small.png]]
-
-[[logo-old.svg]]
-
-[[logo-old-bw.svg]]
-
-----
-
-	Copyright: 2007 Henrik Nyh <http://henrik.nyh.se/>
-	           2010 Joey Hess <id@joeyh.name>
-		   2013 John Lawrence
-	License: other
-	  Free to modify and redistribute with due credit, and obviously free to use.
diff --git a/doc/logo_32x32.png b/doc/logo_32x32.png
deleted file mode 100644
Binary files a/doc/logo_32x32.png and /dev/null differ
diff --git a/doc/logo_small.png b/doc/logo_small.png
deleted file mode 100644
Binary files a/doc/logo_small.png and /dev/null differ
diff --git a/doc/meta.mdwn b/doc/meta.mdwn
deleted file mode 100644
--- a/doc/meta.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-This wiki contains [[!pagecount pages="*"]] pages.
-
-Broken links:
-
-[[!brokenlinks ]]
diff --git a/doc/metadata.mdwn b/doc/metadata.mdwn
deleted file mode 100644
--- a/doc/metadata.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-git-annex allows you to store arbitrary metadata about the content of files
-stored in the git-annex repository. The metadata is stored in the
-`git-annex` branch, and so is automatically kept in sync with the rest of
-git-annex's state, such as [[location_tracking]] information.
-
-Some of the things you can do with metadata include:
-
-* Using `git annex metadata file` to show all 
-  the metadata associated with a file.
-* [[tips/metadata_driven_views]]
-* Limiting the files git-annex commands act on to those with
-  or without particular metadata.
-  For example `git annex find --metadata tag=foo --or --metadata tag=bar`
-* Using it in [[preferred_content]] expressions. 
-  For example "metadata=tag=important or not metadata=author=me"
-
-Each file (actually the underlying key) can have any number of metadata
-fields, which each can have any number of values. For example, to tag
-files, the `tag` field is typically used, with values set to each tag that
-applies to the file.
-
-The field names are limited to alphanumerics (and `[_-.]`), and are case
-insensitive. The metadata values can contain absolutely anything you
-like -- but you're recommended to keep it simple and [[reasonably short|forum/metadata_limits]]
-
-Here are some metadata fields that git-annex has special support for:
-
-* `tag` - With each tag being a different value.
-* `year`, `month` - When this particular version of the file came into
-  being.
-* `$field-lastchanged` - This is automatically maintained for each
-  field that's set, and gives the date and time of the most recent
-  change to the field. It cannot be modified directly.
-* `lastchanged` - This is automatically maintained, giving the data and time
-  of the last change to any of the metadata of a file.
-
-To make git-annex automatically set the year and month when adding files,
-run `git config annex.genmetadata true`. Also, see
-[[tips/automatically_adding_metadata]].
-
-git-annex's metadata can be updated in a distributed fashion. For example,
-two users, each with their own clone of a repository, can set and unset
-metadata at the same time, even for the same field of the same file. 
-When they push their changes, `git annex merge` will combine their
-metadata changes in a consistent and (probably) intuitive way.
-
-See [[the metadata design page|design/metadata]] for more details.
diff --git a/doc/metadata/comment_1_d367fdaf0425b59d694bf16059d47192._comment b/doc/metadata/comment_1_d367fdaf0425b59d694bf16059d47192._comment
deleted file mode 100644
--- a/doc/metadata/comment_1_d367fdaf0425b59d694bf16059d47192._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="bremner"
- ip="198.164.160.48"
- subject="access metadata by key?"
- date="2014-03-17T01:26:44Z"
- content="""
-I'm hacking around with using metadata from an external special remote. Those work with keys, not files, so one option would be to add a GETMETADATA to the protocol. It also seems like it would not be too hard to add
-an option  to \"git annex metadata\" to take a key rather than a file.
-"""]]
diff --git a/doc/metadata/comment_2_e15d2b5a405db4ccdb91d6aad4a22983._comment b/doc/metadata/comment_2_e15d2b5a405db4ccdb91d6aad4a22983._comment
deleted file mode 100644
--- a/doc/metadata/comment_2_e15d2b5a405db4ccdb91d6aad4a22983._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.154"
- subject="comment 2"
- date="2014-03-17T19:32:39Z"
- content="""
-I've made `git annex metadata --key` work.
-
-I'll wait and see what you come up with your special remote and add something to the protocol later if it makes sense.
-"""]]
diff --git a/doc/metadata/comment_3_50b17af1cf75ce88c4aef59dcd971b82._comment b/doc/metadata/comment_3_50b17af1cf75ce88c4aef59dcd971b82._comment
deleted file mode 100644
--- a/doc/metadata/comment_3_50b17af1cf75ce88c4aef59dcd971b82._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="madduck"
- subject="Overwriting metadata from json"
- date="2015-04-30T18:42:45Z"
- content="""
-I see that --json allows me to export metadata in a well-parseable format. I'd really like to be able to pipe this into a file, edit the file and then pipe it back to git-annex, causing the metadata for each file to be rewritten from the JSON input. This would make it trivial to write an external metadata editor (like vidir, vorbistagedit, git annex vicfg even… etc.)
-"""]]
diff --git a/doc/metadata/comment_4_237721c5e8f66f303a1828810573a23d._comment b/doc/metadata/comment_4_237721c5e8f66f303a1828810573a23d._comment
deleted file mode 100644
--- a/doc/metadata/comment_4_237721c5e8f66f303a1828810573a23d._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2015-05-01T19:38:36Z"
- content="""
-@madduck, you could file a todo if you want about that.
-
-However, I have my doubts; if the json supposed to include the full set of
-metadata for the file? If so, that seems a potentially expensive interface.
-If not, it would be hard to tell when metadata should be deleted, or when
-multiple values are being set, vs a value being changed. 
-
-The current interface to set metadata deals with these possibilities in a
-compact and sensible way.
-"""]]
diff --git a/doc/metadata/comment_5_fd30444aecfc4792eb4dbfdebc230786._comment b/doc/metadata/comment_5_fd30444aecfc4792eb4dbfdebc230786._comment
deleted file mode 100644
--- a/doc/metadata/comment_5_fd30444aecfc4792eb4dbfdebc230786._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="madduck"
- subject="TODO written"
- date="2015-05-06T14:24:56Z"
- content="""
-@joeyh, yes, it would overwrite all metadata. The idea would be to export with --json, manipulate, import…
-
-http://git-annex.branchable.com/todo/ability_to_set_metadata_from_json/?updated
-"""]]
diff --git a/doc/news.mdwn b/doc/news.mdwn
deleted file mode 100644
--- a/doc/news.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!if test="news/*" then="""
-This is where announcements of new releases, features, and other news is
-posted. git-annex users are recommended to subscribe to this page's RSS
-feed.
-
-[[!inline pages="./news/* and !./news/*/* and !*/Discussion" rootpage="news" show="30"]]
-
-"""
-else="""
-(Please see the changelog.)
-"""]]
diff --git a/doc/news/2013_git-annex_user_survey.mdwn b/doc/news/2013_git-annex_user_survey.mdwn
deleted file mode 100644
--- a/doc/news/2013_git-annex_user_survey.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Similar to the yearly git user survey, I am doing a
-[2013 git-annex user survey](http://git-annex-survey.branchable.com/polls/2013/).
-
-If you use git-annex,
-please take a few minutes to answer my questions!
diff --git a/doc/news/2015_git-annex_user_survey.mdwn b/doc/news/2015_git-annex_user_survey.mdwn
deleted file mode 100644
--- a/doc/news/2015_git-annex_user_survey.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Similar to the yearly git user survey, there is a
-[2015 git-annex user survey](http://git-annex-survey.branchable.com/polls/2015/).
-
-If you use git-annex,
-please take a few minutes to answer the questions!
diff --git a/doc/news/LWN_article.mdwn b/doc/news/LWN_article.mdwn
deleted file mode 100644
--- a/doc/news/LWN_article.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-[Linux Weekly News](http://lwn.net/) has a nice
-[article on git-annex](http://lwn.net/Articles/418337/) in it this week.
diff --git a/doc/news/Presentation_at_FOSDEM.mdwn b/doc/news/Presentation_at_FOSDEM.mdwn
deleted file mode 100644
--- a/doc/news/Presentation_at_FOSDEM.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-git-annex will be briefly presented at FOSDEM, on Sunday February 4th at 15:40.
-[Details](http://fosdem.org/2012/schedule/event/gitannex).
-
-Thanks to Richard Hartmann for making this presentation.
diff --git a/doc/news/git_annex_fall_of_code.mdwn b/doc/news/git_annex_fall_of_code.mdwn
deleted file mode 100644
--- a/doc/news/git_annex_fall_of_code.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Thanks to my recent successful git-annex
-[crowdfunding campaign](http://campaign.joeyh.name/), $1000 has been set
-aside to award others for their contributions to git-annex by
-the end of 2013. This is not a lot of money, but I hope that the
-reward and recognition will encourage some more people to work on git-annex.
-
-You don't need to know Haskell! You could contribute some interesting and
-useful special remote hooks, or write better documentation.
-
-On the other hand, if you have learned Haskell, this might be your first
-chance to make some money with it! Some ideas for things to work on that
-would be particularly award-worthy:
-
-* Port git-annex to IOS, using [ghc-ios](https://github.com/ghc-ios).
-  I don't plan to ever do this myself, but you could make it happen.
-* Get the git-annex assistant working in Windows, building on the existing
-  port to Windows. Otherwise, this is on my roadmap for February.
-* Solve existing [[bugs]] or [[todo]] items. There are more than I can
-  keep up with.
-
-The amount of the awards will vary depending on the size of the
-contribution. Since this is getting started later than is ideal,
-I reserve the right to extend it past the end of the year if I don't get
-enough participants.
-
-If you'd like to participate in this program, just email me at
-<id@joeyh.name>. --[[Joey]]
diff --git a/doc/news/sharebox_a_FUSE_filesystem_for_git-annex.mdwn b/doc/news/sharebox_a_FUSE_filesystem_for_git-annex.mdwn
deleted file mode 100644
--- a/doc/news/sharebox_a_FUSE_filesystem_for_git-annex.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!meta title="sharebox: a FUSE filesystem for git-annex"]]
-
-Christophe-Marie Duquesne has just announced 
-[Sharebox](https://github.com/chmduquesne/sharebox-fs), a FUSE filesystem
-relying on git-annex:
-
-<blockquote>
-<pre>
-What are your goals?  
-Seamless synchronization "à la dropbox".  
-Ability to use with big binary files such as mp3/movies.  
-Entirely decentralized.  
-Don't use unnecessary space  
-Keep it simple: avoid special VCS commands and keep a filesystem  
-interface as much as possible.
-</pre>
-</blockquote>
-
-While still alpha, this is promising. --[[Joey]]
diff --git a/doc/news/version_6.20160412.mdwn b/doc/news/version_6.20160412.mdwn
deleted file mode 100644
--- a/doc/news/version_6.20160412.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-git-annex 6.20160412 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * adjust --unlock: Enters an adjusted branch in which all annexed files
-     are unlocked. The v6 equivilant of direct mode, but much cleaner!
-   * Upgrading a direct mode repository to v6 has changed to enter
-     an adjusted unlocked branch. This makes the direct mode to v6 upgrade
-     able to be performed in one clone of a repository without affecting
-     other clones, which can continue using v5 and direct mode.
-   * init --version=6: Automatically enter the adjusted unlocked branch
-     when filesystem doesn't support symlinks.
-   * ddar remote: fix ssh calls
-     Thanks, Robie Basak
-   * log: Display time with time zone.
-   * log --raw-date: Use to display seconds from unix epoch.
-   * v6: Close pointer file handles more quickly, to avoid problems on Windows.
-   * sync: Show output of git commit.
-   * annex.thin and annex.hardlink are now supported on Windows.
-   * unannex --fast now makes hard links on Windows.
-   * Fix bug in annex.largefiles mimetype= matching when git-annex
-     is run in a subdirectory of the repository.
-   * Fix build with ghc v7.11. Thanks, Gabor Greif."""]]
diff --git a/doc/news/version_6.20160418.mdwn b/doc/news/version_6.20160418.mdwn
deleted file mode 100644
--- a/doc/news/version_6.20160418.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-git-annex 6.20160418 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * smudge: Print a warning when annex.thin is set, as git's smudge
-     interface does not allow honoring that configuration.
-   * webapp: When $HOME is a git repository, and has been initialized for
-     use by git-annex, opening the webapp went ahead and ran the assistant
-     there, annexing all files. Since this is almost certianly not
-     desirable, especially when the user is just opening the webapp from
-     a dekstop menu which happens to run it in $HOME, the webapp will now not
-     treat such a $HOME git repository as a git-annex repository.
-   * webapp: Update url to add gitlab.com ssh key.
-   * Fix bug in v6 mode that prevented treating unlocked executable files
-     as annexed. If you have such files, run git annex init --version=6
-     to update the cache after upgrading to this version of git-annex.
-   * Preserve execute bits of unlocked files in v6 mode.
-   * fsck: Warn when core.sharedRepository is set and an annex object file's
-     write bit is not set and cannot be set due to the file being owned
-     by a different user.
-   * Fix hang when dropping content needs to lock the content on a
-     ssh remote, which occurred when the remote has git-annex version
-     5.20151019 or newer. (The bug was in the client side; the remote
-     git-annex-shell does not need to be upgraded.)"""]]
diff --git a/doc/news/version_6.20160419.mdwn b/doc/news/version_6.20160419.mdwn
deleted file mode 100644
--- a/doc/news/version_6.20160419.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-git-annex 6.20160419 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Fix bug that prevented resuming of uploads to encrypted special remotes
-     that used chunking.
-   * That bug could also expose the names of keys to such remotes when
-     attempting to resume an upload, so it is a minor security issue.
-   * Fix duplicate progress meter display when downloading from a git remote
-     over http with -J.
-   * reinject: When src file's content cannot be verified, leave it alone,
-     instead of deleting it.
-   * reinject: Added new mode which can reinject known files into the annex.
-     For example: git-annex reinject --known /mnt/backup/*
-   * calckey: New plumbing command, calculates the key that would be used
-     to refer to a file.
-   * Fix bug that prevented annex.sshcaching=false configuration from taking
-     effect when on a crippled filesystem. Thanks, divergentdave.
-   * git 2.9.0 is going to prevent git merge from merging in unrelated
-     branches. Since the webapp's pairing etc features often combine
-     together repositories with unrelated histories, work around
-     this behavior change when the assistant merges, by passing
-     --allow-unrelated-histories. Note though that this is not done
-     for git annex sync's merges, so it will follow git's default or
-     configured behavior.
-   * When git-annex is used with a git version older than 2.2.0, disable
-     support for adjusted branches, since GIT\_COMMON\_DIR is needed to update
-     them and was first added in that version of git.
-   * Avoid setting LOCPATH in linux standalone builds that are built with
-     a ghc that has been fixed to not hang when it cannot find locale files.
-   * Isolate test suite from global git config settings."""]]
diff --git a/doc/news/version_6.20160511.mdwn b/doc/news/version_6.20160511.mdwn
deleted file mode 100644
--- a/doc/news/version_6.20160511.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-git-annex 6.20160511 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * Fix bug that sometimes prevented git-annex smudge --clean from consuming
-     all its input, which resulted in git add bypassing git-annex.
-   * Fix build with directory-1.2.6.2.
-   * Improve behavior when a just added http remote is not available
-     during uuid probe. Do not mark it as annex-ignore, so it will be tried
-     again later.
-   * Android: Icon refresh.
-     Thanks, freewheelinfranks.
-   * Added DIRHASH-LOWER to external special remote protocol.
-   * git-annex.cabal: Add Setup-Depends.
-   * stack.yaml: Enable explicit-setup-deps.
-   * Windows: Fix several bugs in propigation of changes from the adjusted
-     branch back to the master branch.
-   * Windows: Fix an over-long temp directory name.
-   * map: Hide dead repositories that are not connected to the graph.
-   * map: Changed colors; red is used for untrusted repositories and grey
-     for dead.
-   * version: Display OS version and architecture too.
-   * Propigate GIT\_DIR and GIT\_WORK\_TREE environment to external special
-     remotes.
-   * Added annex.gnupg-decrypt-options and
-     remote.&lt;name&gt;.annex-gnupg-decrypt-options, which are passed to gpg
-     when it's decrypting data.
-   * fsck: When a key is not previously known in the location log,
-     record something so that reinject --known will work.
-   * In the unusual configuration where annex.crippledfilesystem=true but
-     core.symlinks=true, store object contents in mixed case hash
-     directories so that symlinks will point to them.
-   * Added new encryption=sharedpubkey mode for special remotes.
-     This is useful for makking a special remote that anyone with a clone
-     of the repo and your public keys can upload files to, but only you can
-     decrypt the files stored in it."""]]
diff --git a/doc/not.mdwn b/doc/not.mdwn
deleted file mode 100644
--- a/doc/not.mdwn
+++ /dev/null
@@ -1,70 +0,0 @@
-[[!meta title="what git-annex is not"]]
-
-* git-annex is not a backup system. It may be a useful component of an
-  [[archival|use_case/bob]] system, or a way to deliver files to a backup
-  system. For a backup system that uses git and that git-annex supports
-  storing data in, see [[special_remotes/bup]].
-
-* git-annex is not a filesystem or Dropbox clone. However, the git-annex
-  [[assistant]] is addressing some of the same needs in its own unique ways.
-  (There is also a FUSE filesystem built on top of git-annex, called 
-  [ShareBox](https://github.com/chmduquesne/sharebox-fs).)
-
-* git-annex is not unison, but if you're finding unison's checksumming
-  too slow, or its strict mirroring of everything to both places too
-  limiting, then git-annex could be a useful alternative.
-
-* git-annex is also not a folder mirroring system like [syncthing](https://syncthing.net/) 
-  (although [syncthing could be supported as a special remote](todo/syncthing_special_remote/))
-  or [gut](https://github.com/tillberg/gut), but it can be used to sync
-  files such a way, with certain limitations (for example, it doesn't
-  like syncing `.git` directories so much).
-
-* git-annex is also not a distributed file system like Bittorrent or [ipfs](http://ipfs.io)
-  but both are supported as special remotes with more work in making 
-  [[git-annex more distributed underway|todo/Bittorrent-like_features/]].
-  
-* git-annex is more than just a workaround for git scalability 
-  limitations that might eventually be fixed by efforts like
-  [git-bigfiles](http://caca.zoy.org/wiki/git-bigfiles). In particular,
-  git-annex's [[location_tracking]] allows having many repositories
-  with a partial set of files, that are copied around as desired.
-
-* git-annex is not some flaky script that was quickly thrown together.
-  I wrote it in Haskell because I wanted it to be solid and to compile
-  down to a binary. And it has a fairly extensive test suite. (Don't be
-  fooled by "make test" only showing a few dozen test cases; each test
-  involves checking dozens to hundreds of assertions.)
-
-* git-annex is not [git-media](https://github.com/schacon/git-media),
-  although they both approach the same problem from a similar direction.
-  I only learned of git-media after writing git-annex, but I probably
-  would have still written git-annex instead of using it. 
-  git-media uses git smudge filters (recently supported in git-annex as
-  well; see [[tips/unlocked_files]]) and may be a tighter fit for certain
-  situations. It lacks git-annex's support for widely distributed storage,
-  using only a single backend data store. It also does not support
-  partial checkouts of file contents, like git-annex does.
-
-* git-annex is similarly not [git-fat](https://github.com/jedbrown/git-fat),
-  which also uses git smudge filters, and also lacks git-annex's widely
-  distributed storage and partial checkouts.
-
-* Similarly, git-annex is not [git-lfs](https://github.com/github/git-lfs),
-  which also uses git smudge filters, and appears to lack git-annex's
-  widely distributed storage and partial checkouts.
-
-* git-annex is also not [boar](http://code.google.com/p/boar/),
-  although it shares many of its goals and characteristics. Boar implements
-  its own version control system, rather than simply embracing and
-  extending git. And while boar supports distributed clones of a repository,
-  it does not support keeping different files in different clones of the
-  same repository, which git-annex does, and is an important feature for
-  large-scale archiving.
-
-* git-annex is not the [Mercurial largefiles extension](http://mercurial.selenic.com/wiki/LargefilesExtension).
-  Although mercurial and git have some of the same problems around large
-  files, and both try to solve them in similar ways (standin files using
-  mostly hashes of the real content).
-
-See also the [[related_software]] page for software that git-annex *is* similar to.
diff --git a/doc/not/comment_10_d8fb9add7e98dadea2a39f8827f75447._comment b/doc/not/comment_10_d8fb9add7e98dadea2a39f8827f75447._comment
deleted file mode 100644
--- a/doc/not/comment_10_d8fb9add7e98dadea2a39f8827f75447._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.87"
- subject="comment 10"
- date="2013-12-11T15:40:35Z"
- content="""
-@Zellyn, what you describe does not sound unreasonable. But it's hard to say if it's a backup. For example, if you delete a file from the archive folder, and that happened to be the only copy of the file, it's gone.
-
-It's definitely possible to use git-annex in backup-like ways, but what I want to discourage is users thinking that just putting files into git-annex means that they have a backup. Proper backups need to be designed, and tested. It helps to use software that is explicitly designed as a backup solution. git-annex is more about file distribution, and some archiving, than backups.
-"""]]
diff --git a/doc/not/comment_11_6c23aba5a9c341f2d5e2007e4b43f2ea._comment b/doc/not/comment_11_6c23aba5a9c341f2d5e2007e4b43f2ea._comment
deleted file mode 100644
--- a/doc/not/comment_11_6c23aba5a9c341f2d5e2007e4b43f2ea._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkQafKy7hNSEolLs6TvbgUnkklTctUY9LI"
- nickname="Zellyn"
- subject="Backup"
- date="2013-12-11T17:38:39Z"
- content="""
-@joeyh - ok, good to know. So as long as I realize I need to sync with my hard drives before deleting, it should work fine as a backup solution. Sweet!
-"""]]
diff --git a/doc/not/comment_12_a0ef1a045257659f0f8722e4987e0ccc._comment b/doc/not/comment_12_a0ef1a045257659f0f8722e4987e0ccc._comment
deleted file mode 100644
--- a/doc/not/comment_12_a0ef1a045257659f0f8722e4987e0ccc._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkRtPz8CAz_1sBR0Rf-b8OlQQ49v9JxOIE"
- nickname="John"
- subject="re: Not an backup"
- date="2014-02-05T10:45:45Z"
- content="""
-@joeyh.name But if I set numcopies=2 it won't let me drop the file right? I don't think we are mean to directly modify the archive; but if we do would git-annex detect the corruption and discourage us from dropping the other file?
-"""]]
diff --git a/doc/not/comment_13_c5c20576388f18daba3af913b44fb001._comment b/doc/not/comment_13_c5c20576388f18daba3af913b44fb001._comment
deleted file mode 100644
--- a/doc/not/comment_13_c5c20576388f18daba3af913b44fb001._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="206.74.132.139"
- subject="comment 13"
- date="2014-02-06T17:00:59Z"
- content="""
-Yes, git-annex ensures your configured [[numcopies|copies]] is met before dropping a file.
-"""]]
diff --git a/doc/not/comment_14_837e3699014b73e8f2bd2a668eea9eef._comment b/doc/not/comment_14_837e3699014b73e8f2bd2a668eea9eef._comment
deleted file mode 100644
--- a/doc/not/comment_14_837e3699014b73e8f2bd2a668eea9eef._comment
+++ /dev/null
@@ -1,23 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmhufs6QGCQXnUEc6qrCcQIZTomUDKNeAQ"
- nickname="Jeff"
- subject="Git annex in a strange direct with .git/annex/objects mode"
- date="2014-04-21T21:03:24Z"
- content="""
-I'm doing something perhaps unreasonable and weird, and I'm wondering if there's a better way.
-
-I'm running a wget -mbc of a particular web site.  It replicates down to a tree.
-Then I'm ingesting the content into git annex via the normal 'git annex add' sequence.
-
-Later, when I'm going to update my replica of the website, I am running a 'git annex unlock' on the whole tree (90 gig in this case), and then running the 'wget -mbc ; git annex add' command sequence again.
-
-Is there any mechanism to convince git-annex to scan the file, and ingest (copy) it into objects if it is new content, while leaving the original files unlocked?   This would give me the ability to avoid the 'git annex unlock' copy operation, which is lengthy.
-
-I'm aware this is inherently space inefficient.
-
-I'm sure there's some other problem with this idea that I'm missing.
-
-Thanks.
-
-
-"""]]
diff --git a/doc/not/comment_15_ac7396ca125abb80a42f9aaaf61a6ab4._comment b/doc/not/comment_15_ac7396ca125abb80a42f9aaaf61a6ab4._comment
deleted file mode 100644
--- a/doc/not/comment_15_ac7396ca125abb80a42f9aaaf61a6ab4._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 15"
- date="2014-05-16T18:59:47Z"
- content="""
-@Jeff, why did you post that comment here? Please use the [[forum]] for questions.
-
-(You may find it useful to use direct mode, or `git annex import --skip-duplicates` or something.)
-"""]]
diff --git a/doc/not/comment_1_ab41bec1ccc884e71780cb9458439170._comment b/doc/not/comment_1_ab41bec1ccc884e71780cb9458439170._comment
deleted file mode 100644
--- a/doc/not/comment_1_ab41bec1ccc884e71780cb9458439170._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://bergey.dreamwidth.org/"
- ip="66.80.90.109"
- subject="git-media"
- date="2012-07-14T15:42:05Z"
- content="""
-I haven't used git-media, but from the README it looks as though they now support several backends.  Might want to update the (very helpful!) comparison.
-"""]]
diff --git a/doc/not/comment_2_0e19ff7deb5ed65f2bc685d4c516d816._comment b/doc/not/comment_2_0e19ff7deb5ed65f2bc685d4c516d816._comment
deleted file mode 100644
--- a/doc/not/comment_2_0e19ff7deb5ed65f2bc685d4c516d816._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc"
- nickname="Bret"
- subject="Sparkleshare"
- date="2012-09-06T08:09:17Z"
- content="""
-How does [sparkleshare](http://sparkleshare.org/) and git-annex (and git-annex assistant) compare? 
-"""]]
diff --git a/doc/not/comment_3_bab9584c41a25dda934ad230e3eb732d._comment b/doc/not/comment_3_bab9584c41a25dda934ad230e3eb732d._comment
deleted file mode 100644
--- a/doc/not/comment_3_bab9584c41a25dda934ad230e3eb732d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.236"
- subject="comment 3"
- date="2012-09-06T14:50:43Z"
- content="""
-My understanding of sparkleshare (I've not used it) is that it uses a regular git repository, so has git's problems with large files and will not support partial checkouts. However, you might want to try it out and see if it works for you.
-"""]]
diff --git a/doc/not/comment_4_b2a0d5a45ab8ddd66c29dde9412d7a12._comment b/doc/not/comment_4_b2a0d5a45ab8ddd66c29dde9412d7a12._comment
deleted file mode 100644
--- a/doc/not/comment_4_b2a0d5a45ab8ddd66c29dde9412d7a12._comment
+++ /dev/null
@@ -1,51 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo"
- nickname="Stefan"
- subject="Sparkleshare"
- date="2012-09-15T01:28:05Z"
- content="""
-Hi,
-
-I used sparkleshare lately in a project involving 3 computers and 2 people. and for ascii texts and even a few smaller binary things it works ok.
-
-But it does \"to much\" for media. at least at the moment, it just uses git for saving the data. That has a possitive and a negative aspect.
-
-possitive:
-
-1. you have a full history, if you delete a file its not gone for ever, so if you change it, the older version is still recoverable.
-2. if you would as example use it from a laptop in a train without internet and you use a git server in the internet for the central server, and would change some files, then you or somebody else would write on the same txt file as example (html or something... latex...) you would be able to merge this files.
-3. its not totaly bad for backup, because you can restore old files even if you delete it localy, because it will hold all history
-
-
-negative:
-
-1. for bigger data its cracy. if you use it for movies as example, you would in git annex delete some stuff you want not to see anytime again, so you would delete it everywhere. and its really away, not beeing still there in the history
-2. git as it is has issues with saving/transfairing very big files, and its slow on even mid-sized files lets say 100 5mb big files it would be slow. because at the moment sparkleshare uses git all this disatvantages are there.
-3. as many clients you use lets say a projekt with 10 people, each of them have all files and all the history of this projekt/directory on their pc.
-4. you need a central data-store git folder you can use a seperate pc for that or save it on a client, if you use a client for that you have to save the data double on this pc.
-
-(so you see for big files even if git would handle them faster you would waste massivly hard disk space) but again for pdfs a few pictures text files even some office files and stuff <100mb its great and easy to do.
-
-
-I try it in a few words, sparkleshare is like dropbox but with file history ( I think dropbox dont have that???) but because git is not designed (yet) for big files it works somewhat ok for < 100mb stuff if you go very much higher > 1GB it will not be optimal.
-
-git annex dont saves the data itself in git but only the locations and the checksums. so its more like a adress book of your data. its a abstraction layer to your data, you can see on as many devises as you want even without no netzwerk internet connection active and only a very small hd see all your 5 Terrabyte of Data you might have, and move around directories sort around them... delete stuff you dont want if you can deside that by the name... and then  when you come back to the connection you sync your actions and it does it to the files.
-
-And one big feature like joey said is that you cannot partialy load files from the repos to your device if it has as example only enough space for 1/10 of it.
-
-There is another thing, but because it is \"only\" a abstraction layer, it is theoreticaly easy to implement extentions to save your data on anything not only git repositories...
-
-Sparkleshare will switch to something else than git, maybe but then it will switch to this single protocol and stick to that. because it does not abstract stuff so hard.
-
-btw there is a alternative out there it forces you not to use git as vcs but you have to use a vcs (like git) and you dont have to use the client written in mono but only a smaller python script:
-
-http://www.mayrhofer.eu.org/dvcs-autosync
-
-but the idea behind it is the same except this 2 points ;)
-
-
-but many free software developers dont like mono, so the change that it gets more love from more people is not totaly unlikely.
-
-
-So way to long post but hope that helps somebody ;)
-"""]]
diff --git a/doc/not/comment_5_f2829ecbe80a61aa9a8411d2403de69e._comment b/doc/not/comment_5_f2829ecbe80a61aa9a8411d2403de69e._comment
deleted file mode 100644
--- a/doc/not/comment_5_f2829ecbe80a61aa9a8411d2403de69e._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo"
- nickname="Stefan"
- subject="comment 5"
- date="2012-09-15T01:35:06Z"
- content="""
-or to make it more simple ;)
-
-sparkleshare is for proejects and maybe backup your documents folder
-
-annex is for managing big binary files that not get modified most of the time and only added/synced or deleted.
-
-hope thats on the point, try to start using it also now, but am a bit blowen away what it all can do and what not... and how to get a good use case, and mixing media-management with backup of home and thinking on solving that all with annex without having it used ever ;)
-"""]]
diff --git a/doc/not/comment_6_547fc59b19ad66d7280c53a7f923ea08._comment b/doc/not/comment_6_547fc59b19ad66d7280c53a7f923ea08._comment
deleted file mode 100644
--- a/doc/not/comment_6_547fc59b19ad66d7280c53a7f923ea08._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlatTbI0K-qydpeYHl37iseqPNvERcdIMk"
- nickname="Tiago"
- subject="comment 6"
- date="2012-09-27T10:17:18Z"
- content="""
-Stefan: \"annex is for managing big binary files that not get modified most of the time and only added/synced or deleted.\"
-
-While this is true,  the kickstarter title for assistant was \"Like dropbox\", and dropbox makes it transparent to edit files and they work with the filesystem.
-So with assistant, lock/unlock should be automated and transparent to the user. Otherwise it's confusing and not simple at all to use, and at least OSX keeps giving errors because of the way it handles aliases.
-So something like sharebox is essential to be included in assistant in my opinion.
-
-"""]]
diff --git a/doc/not/comment_7_581e23cca0219711f8a4500a8d5d20fc._comment b/doc/not/comment_7_581e23cca0219711f8a4500a8d5d20fc._comment
deleted file mode 100644
--- a/doc/not/comment_7_581e23cca0219711f8a4500a8d5d20fc._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="l3iggs"
- ip="24.130.145.126"
- subject="comment 7"
- date="2013-02-03T03:57:05Z"
- content="""
-hi joey,
-
-i'm excited by your project here but also confused by its direction. the kickstarter page has the header: \"git-annex assistant: Like DropBox, but with your own cloud.\" this page says \"git-annex is not a ... DropBox clone.\" these seem to be in direct opposition.
-
-i'm looking for what is described by the header on your kickstarter page. i assume your backers are looking for the the same thing (a self hosted DropBox). for my use, dropbox is perfect, except for the fact that i have to pay a monthly fee to store my data on someone else's server when i would like to buy my own storage medium and run some open source dropbox clone on my own server.
-
-can you explain more clearly what dropbox features your project lacks (/will lack)? and why where is a difference between your fundraising page and this one?
-
-maybe i'm just confused by the difference between git-annex and git-annex assistant. does git-annex assistant truely aim to be a dropbox clone?
-"""]]
diff --git a/doc/not/comment_8_5c61457f117de38ef487e5cc2780d554._comment b/doc/not/comment_8_5c61457f117de38ef487e5cc2780d554._comment
deleted file mode 100644
--- a/doc/not/comment_8_5c61457f117de38ef487e5cc2780d554._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="http://edheil.wordpress.com/"
- ip="99.54.57.201"
- subject="comment 8"
- date="2013-02-04T03:17:06Z"
- content="""
-It's pretty much exactly what he said:
-
-> git-annex is not a filesystem or DropBox clone. However, the git-annex assistant is addressing some of the same needs in its own unique ways. 
-
-The git-annex assistant is not exactly like DropBox; it's not a drop-in replacement that works exactly the way dropbox works.  But as it stands, right now, it can (like Dropbox) run in the background and make sure that all of your files in a special directory are mirrored to another place (a USB drive, or a server to which you have SSH access, or another computer on your home network, or another computer somewhere else which has access to the same USB drive from time to time, or has accesss to the same SSH server or S3 repository or....
-
-It works as is but is still under heavy development and features are being added rapidly.  For example, up until a month or two ago, the files in your annex were replaced with softlinks whose content resided in a hidden directory. This caused some problems esp. on OS X where native programs don't handle softlinked files very gracefully. So Joey added an entirely new way of operating called \"direct mode\" which uses ordinary files, much like Dropbox does.
-
-So -- what you should expect from git-annex assistant is a program which solves many of the same problems Dropbox does (keeping a set of files magically in sync across computers) but does it in its own way, which won't be *exactly* like Dropbox; it will be more flexible but might require a little learning to figure out exactly how to use it the way you want.  It's possible to get a very Dropbox-like system out of the box, especially now that you don't need to use softlinks, if you've got a place on the network you can use as a central remote repository for your files, or if you only want to synchronize two or more computers on the same local network.
-
-\"git-annex\" itself is the plumbing used by git-annex assistant, or to put it another way, the engine that the assistant has under the hood.  Git-annex itself is extremely simple and stable but should only be used by people already familiar with the command line, perhaps even people already familiar with git.
-
-That's my point of view as an enthusiastic user.  Joey may have his own perspective to share. :)
-
-
-
-
-"""]]
diff --git a/doc/not/comment_9_69aa47398a3c13ce64f146de985b727d._comment b/doc/not/comment_9_69aa47398a3c13ce64f146de985b727d._comment
deleted file mode 100644
--- a/doc/not/comment_9_69aa47398a3c13ce64f146de985b727d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkQafKy7hNSEolLs6TvbgUnkklTctUY9LI"
- nickname="Zellyn"
- subject="Not a backup system..."
- date="2013-12-10T20:55:05Z"
- content="""
-I'd like to understand the \"not a backup system\" point better. My current plan was to use git annex assistant to save my annex folder onto two hard drives, one at home and one at work. Step two is to move most big stuff into .../archive/... folders, and step three is to add an annex folder on my wife's laptop, so we can use the hard drives to back up everything.
-
-Does that sound unreasonable?
-"""]]
diff --git a/doc/polls.mdwn b/doc/polls.mdwn
deleted file mode 100644
--- a/doc/polls.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-* [[2015 git-annex user survey|2015]]
-* [[2013 git-annex user survey|2013]]
-* [[old polls|design/assistant/polls]]
diff --git a/doc/polls/2013.mdwn b/doc/polls/2013.mdwn
deleted file mode 100644
--- a/doc/polls/2013.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-This has moved to a separate site due to load issues.
-
-<http://git-annex-survey.branchable.com/polls/2013/>
-
-Any votes you made here were carried over, so no need to vote twice!
diff --git a/doc/preferred_content.mdwn b/doc/preferred_content.mdwn
deleted file mode 100644
--- a/doc/preferred_content.mdwn
+++ /dev/null
@@ -1,70 +0,0 @@
-git-annex tries to ensure that the configured number of [[copies]] of your
-data always exist, and leaves it up to you to use commands like `git annex
-get` and `git annex drop` to move the content to the repositories you want
-to contain it. But often, it can be good to have more fine-grained
-control over which content is wanted by which repositories. Configuring
-this allows the git-annex assistant as well as 
-`git annex get --auto`, `git annex drop --auto`, `git annex sync --content`,
-etc to do smarter things.
-
-Preferred content settings can be edited using `git
-annex vicfg`, or viewed and set at the command line with `git annex wanted`.
-Each repository can have its own settings, and other repositories will
-try to honor those settings when interacting with it.
-(So there's no local `.git/config` for preferred content settings.)
-
-The idea is that you write an expression that files are matched against.
-If a file matches, the repository wants to store its content.
-If it doesn't, the repository wants to drop its content
-(if there are enough copies elsewhere to allow removing it).
-
-## writing expressions
-
-[[!template id=note text="""
-### [[quickstart|standard_groups]]
-
-Rather than writing your own preferred content expression, you can use
-several standard ones included in git-annex that are tuned to cover different
-common use cases.
-
-You do this by putting a repository in a group,
-and simply setting its preferred content to "standard" to match whatever
-is standard for that group. See [[standard_groups]] for a list.
-"""]]
-
-See the man page [[git-annex-preferred-content]] for details on the syntax
-of preferred content expressions.
-
-An example:
-
-	include=*.mp3 and (not largerthan=100mb) and exclude=old/*
-
-This makes all .mp3 files, and all other files that are less than 100 mb in
-size be preferred content. It excludes all files under the "old" directory.
-
-## upgrades
-
-It's important that all clones of a repository can understand one-another's
-preferred content expressions, especially when using the git-annex
-assistant. So using newly added keywords can cause a problem if
-an older version of git-annex is in use elsewhere.
-
-Before git-annex version 5.20140320, when git-annex saw a keyword it
-did not understand, it defaulted to assuming *all* files were
-preferred content. From version 5.20140320, git-annex has a nicer fallback
-behavior: When it is unable to parse a preferred content expression,
-it assumes all files that are currently present are preferred content.
-
-Here are recent changes to preferred content expressions, and the version
-they were added in.
-
-* "nothing" 6.201600202
-* "anything" 5.20150616
-* "standard" 5.20140314  
-  (only when used in a more complicated expression; "standard" by
-  itself has been supported for a long time)
-* "groupwanted=" 5.20140314
-* "metadata=" 5.20140221
-* "lackingcopies=", "approxlackingcopies=", "unused=" 5.20140127
-* "inpreferreddir=" 4.20130501
-* "metadata=field&lt;number" etc 6.20160227
diff --git a/doc/preferred_content/comment_10_d9eb7d8efe731cbcdb456fc56935d886._comment b/doc/preferred_content/comment_10_d9eb7d8efe731cbcdb456fc56935d886._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_10_d9eb7d8efe731cbcdb456fc56935d886._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="grawity@2ea26be48562f66fcb9b66307da72b1e2e37453f"
- nickname="grawity"
- subject="default settings?"
- date="2016-01-28T09:32:45Z"
- content="""
-Could you clarify how the _default_ (empty) preferred content setting works? Is it equivalent to `anything`, or more magical than that?
-
-(Asking because I noticed that `annex find --in . --want-drop` in such a repo matches basically all files, even the ones that `annex sync --content` just retrieved. Likewise, it retrieves files while `annex find --not --in . --want-get` lists nothing. I'm fine with the sync behavior here, but somewhat worried that a _future_ `annex sync --content` would actually decide to drop everything... I'm running 6.20160126 with numcopies=1.)
-
-Also, what happens if I use `standard` for a repo that's not in any group?
-"""]]
diff --git a/doc/preferred_content/comment_10_f0bce3c67f293eaba97b92f0942876b6._comment b/doc/preferred_content/comment_10_f0bce3c67f293eaba97b92f0942876b6._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_10_f0bce3c67f293eaba97b92f0942876b6._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.4.22"
- subject="comment 10"
- date="2013-10-11T17:12:00Z"
- content="""
-Georg, `drop --auto` will only drop files that are not preferred content. I'd need to know what preferred content expression you're using to say more.
-"""]]
diff --git a/doc/preferred_content/comment_11_fa7249ebbd7d5b499b486311c0a8f96d._comment b/doc/preferred_content/comment_11_fa7249ebbd7d5b499b486311c0a8f96d._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_11_fa7249ebbd7d5b499b486311c0a8f96d._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 11"""
- date="2016-01-29T17:30:52Z"
- content="""
-@grawity, the empty (or unset) preferred content setting causes a default behavior to
-be used. What the default is varies depending on what you're doing. For
-example, if you're running `git annex drop --auto`, it defaults to dropping
-everything when there's no preferred content setting. On the other hand,
-`git annex sync --content` defaults to getting everything. So, this is
-diffent than using "anything".
-
-If you use "standard" and the repo is not in exactly one of the standard
-groups, it behaves the same as if you'd given it an unparseable preferred
-content setting. It will want all files it has and none it doesn't have.
-"""]]
diff --git a/doc/preferred_content/comment_1_7d45e21dfb016e9ffa4715346dd0c1a6._comment b/doc/preferred_content/comment_1_7d45e21dfb016e9ffa4715346dd0c1a6._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_1_7d45e21dfb016e9ffa4715346dd0c1a6._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlgyVag95OnpvSzQofjyX0WjW__MOMKsl0"
- nickname="Sehr"
- subject="Interplay with numcopies"
- date="2012-12-05T20:41:26Z"
- content="""
-How does the preferred content settings interfere with the numcopies setting?
-
-I could not get behind it. E.g. a case I do not unterstand:
-
-I have a preferred setting evaluating to true and still 
-
-    git annex get --auto
-
-does nothing, if the number of copies produced would surpass the numcopies setting.
-
-
-Thx
-"""]]
diff --git a/doc/preferred_content/comment_2_1ccd90b009245667ad59f4d29d2a3a37._comment b/doc/preferred_content/comment_2_1ccd90b009245667ad59f4d29d2a3a37._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_2_1ccd90b009245667ad59f4d29d2a3a37._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.253.113"
- subject="comment 2"
- date="2012-12-06T17:24:29Z"
- content="""
-Yeah, that didn't make sense. I've fixed it, so it gets files if needed for either numcopies or preferred content.
-"""]]
diff --git a/doc/preferred_content/comment_4_384025b5fa23a3f175985a081438149f._comment b/doc/preferred_content/comment_4_384025b5fa23a3f175985a081438149f._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_4_384025b5fa23a3f175985a081438149f._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.8.117"
- subject="comment 4"
- date="2012-12-10T19:46:01Z"
- content="""
-It was a bug in the backup group's preferred content pagespec, introduced by the changes I made to fix the previous problem. Now fixed.
-"""]]
diff --git a/doc/preferred_content/comment_4_6a9bc657bc7415f0e118357d8c6664c6._comment b/doc/preferred_content/comment_4_6a9bc657bc7415f0e118357d8c6664c6._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_4_6a9bc657bc7415f0e118357d8c6664c6._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="http://edheil.wordpress.com/"
- ip="173.162.44.162"
- subject="comment 4"
- date="2012-12-07T20:24:18Z"
- content="""
-Built a new copy of git-annex yesterday.  I have a \"client\" on my macbook, and two \"backup\"s, one on an external HD, one on an ssh git remote.
-
-git annex get --auto works beautifully!
-
-It doesn't seem to work for copying content *to* a place where it's needed, though.
-
-If I drop a file from my \"backup\" USB drive, and then go back to my macbook and do a \"git annex sync\" and \"git annex copy --to=usbdrive --auto\" it does not send the file out to the USB drive, even though by preferred content settings, the USB drive should \"want\" the file because it's a backup drive and it wants all content.
-
-Similarly, if I add a new file on my macbook and then do a \"git annex copy --to=usbdrive auto\" it does not get copied to the USB drive.
-
-Is this missing functionality, or should the preferred content setting for remotes only affect the assistant?
-"""]]
diff --git a/doc/preferred_content/comment_5_f0a957e67297c4bb5a8778c11b3c9fd4._comment b/doc/preferred_content/comment_5_f0a957e67297c4bb5a8778c11b3c9fd4._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_5_f0a957e67297c4bb5a8778c11b3c9fd4._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="http://edheil.wordpress.com/"
- ip="173.162.44.162"
- subject="comment 5"
- date="2012-12-11T16:03:04Z"
- content="""
-thanks!
-
-"""]]
diff --git a/doc/preferred_content/comment_6_b434c0e2aaa132020fd4a01551285376._comment b/doc/preferred_content/comment_6_b434c0e2aaa132020fd4a01551285376._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_6_b434c0e2aaa132020fd4a01551285376._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"
- nickname="Andrew"
- subject="comment 6"
- date="2013-01-10T03:00:52Z"
- content="""
-Is there a way to change these definitions for a given annex?
-
-ie: in this repo make \"client\" mean
-
-    present and exclude=*/archive/* and exclude=archive/*
-"""]]
diff --git a/doc/preferred_content/comment_7_c4acaa237bf1a8512c5e8ea4cdbd11b9._comment b/doc/preferred_content/comment_7_c4acaa237bf1a8512c5e8ea4cdbd11b9._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_7_c4acaa237bf1a8512c5e8ea4cdbd11b9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.7.238"
- subject="comment 7"
- date="2013-01-10T03:51:38Z"
- content="""
-The expressions used for \"standard\" are built in.
-
-But, you can use \"groupwanted\" instead, see documentation above.
-"""]]
diff --git a/doc/preferred_content/comment_9_f82538be42428691d7cab60a7add2e74._comment b/doc/preferred_content/comment_9_f82538be42428691d7cab60a7add2e74._comment
deleted file mode 100644
--- a/doc/preferred_content/comment_9_f82538be42428691d7cab60a7add2e74._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkC0W3ZQERUaTkHoks6k68Tsp1tz510nGo"
- nickname="Georg"
- subject="drop only files located in archive"
- date="2013-10-08T17:53:08Z"
- content="""
-Is there a way to drop only the files that are located in an \"archive\" directory?
-I want to drop all files when calling
-
-    git annex drop --auto
-
-if I move them to the archive. But I want to keep the files that are outside of the archive, even if they are already present in other repos. As far as I have seen and tested, as soon as I have the files in an other repo all files get dropped, also the ones outside the archive directory. Or do I have to increase \"numcopies\" in order to circumvent the \"(not copies=semitrusted+:1)\" case?
-"""]]
diff --git a/doc/preferred_content/standard_groups.mdwn b/doc/preferred_content/standard_groups.mdwn
deleted file mode 100644
--- a/doc/preferred_content/standard_groups.mdwn
+++ /dev/null
@@ -1,128 +0,0 @@
-git-annex comes with some built-in [[preferred_content]] settings, that can
-be used with repositories that are in special groups. To make a
-repository use one of these, just set its preferred content expression
-to "standard", and put it in one of these groups. For example, to put the current
-repository in the manual group and use this group to control the preferred
-content, run
-
-    git annex wanted . standard
-    git annex group . manual
-
-In the webapp, just edit the repository and select the group.
-
-(Note that most of these standard expressions also make the repository
-want to get any content that is only currently available on untrusted and
-dead repositories. So if an untrusted repository gets connected,
-any repository that can will back it up.)
-
-The following standard groups are available:
-
-### client
-
-All content in the current working tree is wanted, unless it's for a
-file in a "archive" directory, which has reached an archive repository.
-
-`(include=* and ((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1)))) or approxlackingcopies=1`
-
-### transfer
-
-Use for repositories that are used to transfer data between other
-repositories, but do not need to retain data themselves. For
-example, a repository on a server, or in the cloud, or a small
-USB drive used in a sneakernet.
-
-The preferred content expression for these causes them to get and retain
-data until all clients have a copy.
-
-`not (inallgroup=client and copies=client:2) and ($client)`
-
-(Where $client is a copy of the preferred content expression used for
-clients.)
-
-The "copies=client:2" part of the above handles the case where
-there is only one client repository. It makes a transfer repository
-speculatively  prefer content in this case, even though it as of yet
-has nowhere to transfer it to. Presumably, another client repository
-will be added later.
-
-### backup
-
-All content is wanted. Even content of old/deleted files.
-
-`anything`
-
-### incrementalbackup
-
-Only wants content that's not already backed up to another backup
-or incremental backup repository.
-
-`((not copies=backup:1) and (not copies=incrementalbackup:1)) or approxlackingcopies=1`
-
-### smallarchive
-
-Only wants content that's located in an "archive" directory, and
-only if it's not already been archived somewhere else.
-
-`((include=*/archive/* or include=archive/*) and not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1`
-
-### archive
-
-All content is wanted, unless it's already been archived somewhere else.
-
-`(not (copies=archive:1 or copies=smallarchive:1)) or approxlackingcopies=1`
-
-Note that if you want to archive multiple copies (not a bad idea!),
-you can set `git-annex groupwanted archive` to a version of 
-the above preferred content expression with a larger number of copies
-than 1. Then make the archive repositories have a preferred
-content expression of "groupwanted" in order to use your modified
-version.
-
-### source
-
-Use for repositories where files are often added, but that do not need to
-retain files for local use. For example, a repository on a camera, where
-it's desirable to remove photos as soon as they're transferred elsewhere.
-
-The preferred content expression for these causes them to only retain
-data until a copy has been sent to some other repository.
-
-`not (copies=1)`
-
-### manual
-
-This gives you nearly full manual control over what content is stored in the
-repository. This allows using the [[assistant]] without it trying to keep a
-local copy of every file. Instead, you can manually run `git annex get`,
-`git annex drop`, etc to manage content. Only content that is already
-present is wanted.
-
-The exception to this manual control is that content that a client
-repository would not want is not wanted. So, files in archive
-directories are not wanted once their content has 
-reached an archive repository.
-
-`present and ($client)`
-
-(Where $client is a copy of the preferred content expression used for
-clients.)
-
-### public
-
-This is used for publishing information to a repository that can be
-publically accessed. Only files in a directory with a particular name
-will be published. (The directory can be located anywhere in the
-repository.)
-
-`inpreferreddir`
-
-The name of the directory can be configured using
-`git annex enableremote $remote preferreddir=$dirname`
-
-### unwanted
-
-Use for repositories that you don't want to exist. This will result
-in any content on them being moved away to other repositories. (Works
-best when the unwanted repository is also marked as untrusted or dead.)
-
-`not anything`
diff --git a/doc/privacy.mdwn b/doc/privacy.mdwn
deleted file mode 100644
--- a/doc/privacy.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-git-annex users entrust it with data that is often intensively private.
-Here's some things to know about how to maintain your privacy while using
-git-annex.
-
-## browsing this web site
-
-This website supports https. [Use it.](https://git-annex.branchable.com/privacy/)
-
-## repository contents
-
-In general, anyone who can clone a git repository gets the ability to see
-all current and past filenames in the repository, and their contents.
-It's best to assume this also holds true for git-annex, as a general rule.
-
-There are some obvious exceptions: If you `git annex dropunused` old
-content from all your repositories, then it's *gone*. If you `git annex
-move` files to a offline drive then only those with physical access can see
-their content. (The names of the files are still visible to anyone with a
-clone of the repository.)
-
-git-annex can encrypt data stored in special remotes. This allows you to
-store files in the cloud without exposing their file names, or their
-contents. See [[design/encryption]] for details.
-
-When using the shared encryption method, the encryption key gets stored
-in git, and so anyone who has a clone of your repository can decrypt files
-from the encrypted special remote.
-
-When using encryption with a GPG key or keys, only those with access to the
-GPG key can decrypt the content of files stored in an encrypted special
-remote.
-
-## bug reporting
-
-When you file a [[bug|bugs]] report on git-annex, you may need to provide
-debugging output or details about your repository. In general, git-annex
-does not sanitize `--debug` output at all, so it may include the names of
-files or other repository details. You should review any debug or other
-output you post, and feel free to remove identifying information.
-
-Note that the git-annex assistant *does* sanitize XMPP protocol information
-logged when debugging is enabled.
-
-If you prefer not to post information publically, you can send a GPG
-encrypted mail to Joey Hess <id@joeyh.name> (gpg key ID 2512E3C7).
-Or you can post a public bug report, and send a followup email with private
-details.
diff --git a/doc/publicrepos.mdwn b/doc/publicrepos.mdwn
deleted file mode 100644
--- a/doc/publicrepos.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-git-annex repositories are often kept private, but here's a list of some of
-the public repositories that you can clone to try out git-annex.
-
-* [downloads.kitenet.net](http://downloads.kitenet.net/)  
-  `git clone https://downloads.kitenet.net/.git/`  
-  Various downloads of things produced by Joey Hess, including git-annex
-  builds and videos.
-
-* debconf-share (currently unavailable via IPv4)  
-  `git clone http://annex.debconf.org/debconf-share/.git/`  
-  [DebConf](http://debconf.org/) Media, photos, videos, etc.
-
-* [conference-proceedings](https://github.com/RichiH/conference_proceedings)  
-  `git clone https://github.com/RichiH/conference_proceedings.git`  
-  A growing collection of videos of technology conferences.
-  Submit a pull request to add your own!
-
-* [ocharles's papers](https://github.com/ocharles/papers)  
-  Lots of CS papers read by [Oliver](http://ocharles.org.uk/blog/).
-
-* [rejuvyesh's papers](https://github.com/rejuvyesh/papers)   
-  Quite a few AI papers read by [rejuvyesh](http://rejuvyVesh.com)
-
-* [MRI brain scan data](http://studyforrest.org/pages/access.html)  
-  `git clone http://psydata.ovgu.de/forrest_gump/.git studyforrest`  
-  High-resolution, ultra-highfield fMRI dataset on auditory perception.
-
-* [gst-integration-testsuites](http://cgit.freedesktop.org/gstreamer/gst-integration-testsuites)  
-  GStreamer integration testsuite media assets management
-
-* [ccc-media-annex](https://github.com/ntnn/ccc-media-annex)  
-  `git clone https://github.com/ntnn/ccc-media-annex`  
-  git-annex repository using [the CDN](http://media.ccc.de/) of the German [CCC](http://www.ccc.de/).  
-  Contains a lot of talks (mostly in German) held on events from the CCC as well as other stuff.
-
-* [ifarchive](https://gitlab.com/umeboshi2/ifarchive.git)  
-  A slightly outdated mirror of http://ifarchive.org.  Scripts should probably be written
-  to update the archive regularly.
-
-
-This is a wiki -- add your own public repository to the list!
-See [[tips/centralized_git_repository_tutorial]].
diff --git a/doc/related_software.mdwn b/doc/related_software.mdwn
deleted file mode 100644
--- a/doc/related_software.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-Some folks have built other software on top of git-annex, or that is
-designed to interoperate with it.
-
-* The [[git-annex assistant|assistant]] is included in git-annex,
-  and extends its use cases into new territory.
- 
-* [gitlab-shell](https://gitlab.com/gitlab-org/gitlab-shell) supports
-  git-annex. So git-annex can be used with repositories served by GitLab,
-  including gitlab.com, or deploy your own.
-  [See GitLab's announcement](https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/)
-
-* Emacs Org mode can auto-commit attached files to git-annex.
-
-* [git annex darktable integration](https://github.com/xxv/darktable-git-annex)
-
-* [Magit](http://github.com/magit/magit), an Emacs mode for Git, has
-  [an extension](https://github.com/magit/magit-annex) for git annex.
-
-* [DataLad](http://datalad.org/) uses git-annex to provide access to
-  scientific data available from various sources.
-
-* The [Baobáxia](https://github.com/RedeMocambos/baobaxia) project
-  built by the Brazilian [Mocambos network](http://www.mocambos.net/)
-  is [using git-annex to connect isolated communities](http://www.modspil.dk/itpolitik/baob_xia.html).
-  Repositories sync over satellite internet and/or sneakernet.
-
-* The [Isuma Media Players project](http://isuma-media-players.readthedocs.org/en/latest/index.html)
-  uses git-annex to "create a two-way, distributed content distribution
-  network for communities with poor connexions to the internet".
-
-* [The Japanese American Legacy Project](http://www.densho.org/)
-  uses git-annex to manage upwards of 100 terabytes of collections,
-  transporting them from small cultural heritage sites on USB drives.
-  User interface is a [Django web app](https://github.com/densho).
-
-* [[forum/gadu_-_git-annex_disk_usage]] is a du like utility that
-  is git-annex aware.
-
-* [sizes](http://hackage.haskell.org/package/sizes) is another du-like
-  utility, with a `-A` switch that enables git-annex support.
-
-* [git-annex-watcher](https://github.com/rubiojr/git-annex-watcher)
-  is a status icon for your desktop.
-
-See also [[not]] for software that is *not* related to git-annex, but similar.
diff --git a/doc/repomap.png b/doc/repomap.png
deleted file mode 100644
Binary files a/doc/repomap.png and /dev/null differ
diff --git a/doc/required_content.mdwn b/doc/required_content.mdwn
deleted file mode 100644
--- a/doc/required_content.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Required content settings can be configured to do more complicated
-things than just setting the required number of [[copies]] of your data.
-For example, you could require that data be archived in at least two
-archival repositories, and also require that one copy be stored offsite.
-
-The format of required content expressions is the same as
-[[preferred_content]] expressions.
-
-Required content settings can be edited using `git annex vicfg`
-or set using `git annex required`.
-Each repository can have its own settings, and other repositories will
-try to honor those settings when interacting with it.
-
-While [[preferred_content]] expresses a preference, it can be overridden
-by simply using `git annex drop`. On the other hand, required content
-settings are enforced; `git annex drop` will refuse to drop a file if
-doing so would violate its required content settings.
-(Although even this can be overridden using `--force`).
diff --git a/doc/required_content/comment_1_b9576aaa31258e9bdf18a4eac8d61bfb._comment b/doc/required_content/comment_1_b9576aaa31258e9bdf18a4eac8d61bfb._comment
deleted file mode 100644
--- a/doc/required_content/comment_1_b9576aaa31258e9bdf18a4eac8d61bfb._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnG-DZQa3d3Jn7K2q36TlbmZ8v2YuV-23M"
- nickname="Fer"
- subject="Command line?"
- date="2015-03-17T13:31:34Z"
- content="""
-Th expression format in the file is the same as preferred, but the latter can be set through command line (git-annex wanted REPO EXP), but I can't find any way to set required through command line. Is there any way, in the works, or not planned?
-
-Thanks!
-"""]]
diff --git a/doc/required_content/comment_2_d475f4afc84a58afe7af6d492de3ebe5._comment b/doc/required_content/comment_2_d475f4afc84a58afe7af6d492de3ebe5._comment
deleted file mode 100644
--- a/doc/required_content/comment_2_d475f4afc84a58afe7af6d492de3ebe5._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2015-04-29T18:04:52Z"
- content="""
-`git annex required` was recently added to the CLI.
-"""]]
diff --git a/doc/scalability.mdwn b/doc/scalability.mdwn
deleted file mode 100644
--- a/doc/scalability.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-git-annex is designed for scalability. The key points are:
-
-* Arbitrarily large files can be managed. The only constraint
-  on file size are how large a file your filesystem can hold.
-
-  While git-annex does checksum files by default, there
-  is a [[WORM_backend|backends]] available that avoids the checksumming
-  overhead, so you can add new, enormous files, very fast. This also
-  allows it to be used on systems with very slow disk IO.
-
-* Memory usage should be constant. This is a "should", because there
-  can sometimes be leaks (and this is one of haskell's weak spots),
-  but git-annex is designed so that it does not need to hold all
-  the details about your repository in memory.
-
-* Many files can be managed. The limiting factor is git's own
-  limitations in scaling to repositories with a lot of files, and as git
-  improves this will improve. Scaling to hundreds of thousands of files
-  is not a problem, scaling beyond that and git will start to get slow.
-
-  To some degree, git-annex works around inefficiencies in git; for
-  example it batches input sent to certain git commands that are slow
-  when run in an enormous repository.
-
-* It can use as much, or as little bandwidth as is available. In
-  particular, any interrupted file transfer can be resumed by git-annex.
-
-## scalability tips
-
-* If the files are so big that checksumming becomes a bottleneck, consider
-  using the [[WORM_backend|backends]]. You can always `git annex migrate`
-  files to a checksumming backend later on.
-
-* If you're adding a huge number of files at once (hundreds of thousands),
-  you'll soon notice that git-annex periodically stops and say
-  "Recording state in git" while it runs a `git add` command that
-  becomes increasingly expensive. Consider adjusting the `annex.queuesize`
-  to a higher value, at the expense of it using more memory.
-
diff --git a/doc/scalability/comment_1_a6656ae397277719d67d0953a28fe1d8._comment b/doc/scalability/comment_1_a6656ae397277719d67d0953a28fe1d8._comment
deleted file mode 100644
--- a/doc/scalability/comment_1_a6656ae397277719d67d0953a28fe1d8._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmiPEySoakXDQ4OUAmC9neEOZW17W1KvlU"
- nickname="Francesco Saverio"
- subject="Default value of annex.queuesize"
- date="2015-01-14T15:45:46Z"
- content="""
-What is the default value of :
-
-    annex.queuesize 
-
-Without knowing the default value it is impossible to increase it :) thank you
-"""]]
diff --git a/doc/scalability/comment_2_71c7c3aa97284602d0f64c11a98d1782._comment b/doc/scalability/comment_2_71c7c3aa97284602d0f64c11a98d1782._comment
deleted file mode 100644
--- a/doc/scalability/comment_2_71c7c3aa97284602d0f64c11a98d1782._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2015-01-15T18:56:42Z"
- content="""
-annex.queuesize default is documented on the man page. Currently 10240
-commands.
-"""]]
diff --git a/doc/shortcuts.mdwn b/doc/shortcuts.mdwn
deleted file mode 100644
--- a/doc/shortcuts.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!if test="enabled(shortcut)"
-     then="This wiki has shortcuts **enabled**."
-     else="This wiki has shortcuts **disabled**."]]
-
-This page controls what shortcut links the wiki supports.
-
-* [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]
-* [[!shortcut name=iki url="http://ikiwiki.info/%S/"]]
-* [[!shortcut name=rfc url="https://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
-* [[!shortcut name=cve url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
-* [[!shortcut name=hackage url="http://hackage.haskell.org/package/%s"]]
-* [[!shortcut name=commit url="http://source.git-annex.branchable.com/?p=source.git;a=commitdiff;h=%s"]]
diff --git a/doc/sidebar.mdwn b/doc/sidebar.mdwn
deleted file mode 100644
--- a/doc/sidebar.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!img logo_small.png link=no]]
-
-* [[install]]
-* [[assistant]]
-* [[walkthrough]]
-* [[tips]]
-* [[bugs]]
-* [[todo]]
-* [[forum]]
-* [[comments]]
-* [[contact]]
-* [Flattr this](http://flattr.com/thing/84843/git-annex)
diff --git a/doc/sitemap.mdwn b/doc/sitemap.mdwn
deleted file mode 100644
--- a/doc/sitemap.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-[[!map pages="page(*) and !*/discussion and !recentchanges
-and !bugs/* and !examples/*/* and !news/* and !tips/* and !videos/*
-and !design/assistant/blog/*
-and !forum/* and !todo/* and !users/* and !ikiwiki/*"]]
diff --git a/doc/special_remotes.mdwn b/doc/special_remotes.mdwn
deleted file mode 100644
--- a/doc/special_remotes.mdwn
+++ /dev/null
@@ -1,110 +0,0 @@
-git-annex can transfer data to and from configured git remotes.
-Normally those remotes are normal git repositories (bare and non-bare;
-local and remote), that store the file contents in their own git-annex
-directory.
-
-But, git-annex also extends git's concept of remotes, with these special
-types of remotes. These can be used just like any normal remote by git-annex.
-They cannot be used by other git commands though.
-
-* [[S3]] (Amazon S3, and other compatible services)
-* [[Amazon_Glacier|glacier]]
-* [[bup]]
-* [[ddar]]
-* [[gcrypt]] (encrypted git repositories!)
-* [[directory]]
-* [[rsync]]
-* [[webdav]]
-* [[tahoe]]
-* [[web]]
-* [[bittorrent]]
-* [[xmpp]]
-* [[hook]]
-
-The above special remotes are built into git-annex, and can be used
-to tie git-annex into many cloud services.
-
-Here are specific instructions
-for using git-annex with various services:
-
-* [[Amazon_S3|tips/using_Amazon_S3]]
-* [[Amazon_Glacier|tips/using_Amazon_Glacier]]
-* [Amazon Cloud drive](https://github.com/DanielDent/git-annex-remote-rclone)
-* [[tips/Internet_Archive_via_S3]]
-* [[Box.com|tips/using_box.com_as_a_special_remote]]
-* [[Google drive|tips/googledriveannex]]
-* [[Google Cloud Storage|tips/using_Google_Cloud_Storage]]
-* [[Mega.co.nz|tips/megaannex]]
-* [[SkyDrive|tips/skydriveannex]]
-* [[OwnCloud|tips/owncloudannex]]
-* [[Flickr|tips/flickrannex]]
-* [[IMAP|forum/special_remote_for_IMAP]]
-* [[Usenet|forum/nntp__47__usenet special remote]]
-* [chef-vault](https://github.com/3ofcoins/knife-annex/)
-* [hubiC](https://github.com/Schnouki/git-annex-remote-hubic)
-* [pCloud](https://github.com/tochev/git-annex-remote-pcloud)
-* [[ipfs]]
-* [Ceph](https://github.com/mhameed/git-annex-remote-ceph)
-* [Backblaze's B2](https://github.com/encryptio/git-annex-remote-b2)
-* [Dropbox](https://github.com/DanielDent/git-annex-remote-rclone)
-* [Openstack Swift / Rackspace cloud files / Memset Memstore](https://github.com/DanielDent/git-annex-remote-rclone)
-* [Microsoft One Drive](https://github.com/DanielDent/git-annex-remote-rclone)
-* [Yandex Disk](https://github.com/DanielDent/git-annex-remote-rclone)
-
-Want to add support for something else? [[Write your own!|external]]
-
-## Ways to use special remotes
-
-There are many use cases for a special remote. You could use it as a
-backup. You could use it to archive files offline in a drive with
-encryption enabled so if the drive is stolen your data is not. You could
-git annex move --to specialremote large files when your local drive is
-getting full, and then git annex move the files back when free space is
-again available. You could have one repository copy files to a special
-remote, and then git annex get them on another repository, to transfer the
-files between computers that do not communicate directly. 
-
-The git-annex assistant makes it easy to set up rsync remotes using this
-last scenario, which is referred to as a transfer repository, and arranges
-to drop files from the transfer repository once they have been transferred
-to all known clients.
-
-None of these use cases are particular to particular special remote types.
-Most special remotes can all be used in these and other ways. It largely
-doesn't matter for your use what underlying transport the special remote
-uses.
-
-## Unused content on special remotes
-
-Over time, special remotes can accumulate file content that is no longer
-referred to by files in git. Normally, unused content in the current
-repository is found by running `git annex unused`. To detect unused content
-on special remotes, instead use `git annex unused --from`. Example:
-
-	$ git annex unused --from mys3
-	unused mys3 (checking for unused data...) 
-	  Some annexed data on mys3 is not used by any files in this repository.
-	    NUMBER  KEY
-	    1       WORM-s3-m1301674316--foo
-	  (To see where data was previously used, try: git log --stat -S'KEY')
-	  (To remove unwanted data: git-annex dropunused --from mys3 NUMBER)
-	$ git annex dropunused --from mys3 1
-	dropunused 12948 (from mys3...) ok
-
-## Testing special remotes
-
-To make sure that a special remote is working correctly, you can use the
-`git annex testremote` command. This expects you to have set up the remote
-as usual, and it then runs a lot of tests, using random data. It's
-particularly useful to test new implementations of special remotes.
-
-By default it will upload and download files of around 1MiB to the remote
-it tests; the `--size` parameter can adjust it test using smaller files.
-
-It's safe to use this command even when you're already storing data in a
-remote; it won't touch your existing files stored on the remote.
-
-For most remotes, it also won't bloat the remote with any data, since
-it cleans up the stuff it uploads. However, the bup, ddar, and tahoe
-special remotes don't support removal of uploaded files, so be careful
-with those.
diff --git a/doc/special_remotes/S3.mdwn b/doc/special_remotes/S3.mdwn
deleted file mode 100644
--- a/doc/special_remotes/S3.mdwn
+++ /dev/null
@@ -1,97 +0,0 @@
-This special remote type stores file contents in a bucket in Amazon S3
-or a similar service.
-
-See [[tips/using_Amazon_S3]], 
-[[tips/Internet_Archive_via_S3]], and [[tips/using_Google_Cloud_Storage]]
-for usage examples.
-
-## configuration
-
-The standard environment variables `AWS_ACCESS_KEY_ID` and 
-`AWS_SECRET_ACCESS_KEY` are used to supply login credentials
-for Amazon. You need to set these only when running
-`git annex initremote`, as they will be cached in a file only you
-can read inside the local git repository.
-
-A number of parameters can be passed to `git annex initremote` to configure
-the S3 remote.
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]].
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-* `chunk` - Enables [[chunking]] when storing large files.
-  `chunk=1MiB` is a good starting point for chunking.
-
-* `embedcreds` - Optional. Set to "yes" embed the login credentials inside
-  the git repository, which allows other clones to also access them. This is
-  the default when gpg encryption is enabled; the credentials are stored
-  encrypted and only those with the repository's keys can access them.
-
-  It is not the default when using shared encryption, or no encryption.
-  Think carefully about who can access your repository before using
-  embedcreds without gpg encryption.
-
-* `datacenter` - Defaults to "US". Other values include "EU",
-  "us-west-1", "us-west-2", "ap-southeast-1", "ap-southeast-2", and
-  "sa-east-1".
-
-* `storageclass` - Default is "STANDARD".  
-  Consult S3 provider documentation for pricing details and available
-  storage classes.
-
-  When using Amazon S3, if you have configured git-annex to preserve
-  multiple [[copies]], consider setting this to "REDUCED_REDUNDANCY"
-  to save money. 
-  
-  Or, if the remote will be used for backup or archival,
-  and so its files are Infrequently Accessed, "STANDARD_IA" is also a
-  good choice to save money. (Requires a git-annex built with aws-0.13.0)
-
-  When using Google Cloud Storage, to make a nearline bucket, set this to
-  "NEARLINE". (Requires a git-annex built with aws-0.13.0)
-
-  Note that changing the storage class of an existing S3 remote will
-  affect new objects sent to the remote, but not objects already
-  stored there.
-
-* `host` and `port` - Specify in order to use a different, S3 compatable
-  service.
-
-* `requeststyle` - Set to "path" to use path style requests, instead of the
-  default DNS style requests. This is needed with some S3 services.
-
-* `bucket` - S3 requires that buckets have a globally unique name, 
-  so by default, a bucket name is chosen based on the remote name
-  and UUID. This can be specified to pick a bucket name.
-
-* `public` - Set to "yes" to allow public read access to files sent
-  to the S3 remote. This is accomplished by setting an ACL when each 
-  file is uploaded to the remote. So, changes to this setting will
-  only affect subseqent uploads.
-
-* `publicurl` - Configure the URL that is used to download files
-  from the bucket when they are available publically.
-  (This is automatically configured for Amazon S3 and the Internet Archive.)
-
-* `partsize` - Amazon S3 only accepts uploads up to a certian file size,
-  and storing larger files requires a multipart upload process.
-
-  Setting `partsize=1GiB` is recommended for Amazon S3 when not using
-  chunking; this will cause multipart uploads to be done using parts
-  up to 1GiB in size. Note that setting partsize to less than 100MiB
-  will cause Amazon S3 to reject uploads.
-
-  This is not enabled by default, since other S3 implementations may
-  not support multipart uploads or have different limits,
-  but can be enabled or changed at any time.
-
-* `fileprefix` - By default, git-annex places files in a tree rooted at the
-  top of the S3 bucket. When this is set, it's prefixed to the filenames
-  used. For example, you could set it to "foo/" in one special remote,
-  and to "bar/" in another special remote, and both special remotes could
-  then use the same bucket.
-
-* `x-amz-meta-*` are passed through as http headers when storing keys
-  in S3. see [the Internet Archive S3 interface documentation](https://archive.org/help/abouts3.txt) for example headers.
diff --git a/doc/special_remotes/S3/comment_10_c366f020c9b97a365e21878a33360079._comment b/doc/special_remotes/S3/comment_10_c366f020c9b97a365e21878a33360079._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_10_c366f020c9b97a365e21878a33360079._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 10"
- date="2013-05-23T20:04:03Z"
- content="""
-You can enable a special remote on a clone by running `git annex enableremote $name`, where $name is the name you used to originally create the special remote. (Older versions of git-annex used `git annex initremote` to enable the special remote on the clone.)
-
-(Just in case, I have verified that embedcreds does cause the cipher= to be stored in the remote.log. It does.)
-"""]]
diff --git a/doc/special_remotes/S3/comment_11_c1da387e082d91feec13dde91ccb111a._comment b/doc/special_remotes/S3/comment_11_c1da387e082d91feec13dde91ccb111a._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_11_c1da387e082d91feec13dde91ccb111a._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="basak"
- ip="2001:8b0:1c8::2"
- subject="comment 11"
- date="2013-05-24T09:38:40Z"
- content="""
-Thanks Joey - initremote on my slightly older version appears to work. I'll use `enableremote` when I can.
-
-> (Just in case, I have verified that embedcreds does cause the cipher= to be stored in the remote.log. It does.)
-
-This doesn't do what I expect. The documentation suggests that my S3 _login_ credentials would be stored. I understand that the cipher would be stored; but isn't this a separate concept? Instead, I'm being asked to set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`; my understanding was that git-annex will keep them in the repository for me, so that I don't have to set them after running `initremote` before cloning. This works, apart from surviving the cloning. I'm using `encryption=shared`; does this affect anything? Or am I using a version of git-annex (3.20121112ubuntu3) that's too old?
-"""]]
diff --git a/doc/special_remotes/S3/comment_12_59c3ecab7dbc8be53258460473cac21c._comment b/doc/special_remotes/S3/comment_12_59c3ecab7dbc8be53258460473cac21c._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_12_59c3ecab7dbc8be53258460473cac21c._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 12"
- date="2013-05-24T15:33:12Z"
- content="""
-Ah -- No, your AWS creds are not stored. While some other special remotes, like webdav, can store all necessary credentials, it's not done for AWS. I didn't want git-annex to be responsible for someone accidentially publishing their AWS creds to their friends, since that could cost them a lot of money.
-"""]]
diff --git a/doc/special_remotes/S3/comment_13_0789a21d980825188bb09f7fc8bba8be._comment b/doc/special_remotes/S3/comment_13_0789a21d980825188bb09f7fc8bba8be._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_13_0789a21d980825188bb09f7fc8bba8be._comment
+++ /dev/null
@@ -1,33 +0,0 @@
-[[!comment format=mdwn
- username="basak"
- ip="2001:8b0:1c8::2"
- subject="comment 13"
- date="2013-05-24T15:47:14Z"
- content="""
-That's not what the documentation here says! It even warns me: \"Think carefully about who can access your repository before using embedcreds without gpg encryption.\"
-
-My use case:
-
-Occasional use of EC2, and a desire to store some persistent stuff in S3, since the dataset is large and I have limited bandwidth. I want to destroy the EC2 instance when I'm not using it, leaving the data in S3 for later.
-
-If I use git-annex to manage the S3 store, then I get the ability to clone the repository and destroy the instance. Later, I can start a new instance, push the repo back up, and would like to be able to then pull the data back out of S3 again.
-
-I'd really like the login credentials to persist in the repository (as the documentation here says it should). Even if I have to add a --yes-i-know-my-s3-credentials-will-end-up-available-to-anyone-who-can-see-my-git-repo flag. This is because I use some of my git repos to store private data, too.
-
-If I use an Amazon IAM policy as follows, I can generate a set of credentials that are limited to access to a particular prefix of a specific S3 bucket only - effectively creating a sandboxed area just for git-annex:
-
-    { 
-      \"Statement\": [{\"Sid\": \"Stmt1368780615583\",
-                     \"Action\": [\"s3:GetObject\", \"s3:PutObject\", \"s3:DeleteObject\"],
-                     \"Effect\": \"Allow\",
-                     \"Resource\": [\"arn:aws:s3:::bucketname/prefix/*\"]}
-                    ],
-      \"Statement\": [{\"Sid\": \"Stmt1368781573129\",
-                    \"Action\": [\"s3:GetBucketLocation\"],
-                    \"Effect\": \"Allow\",
-                    \"Resource\": [\"arn:aws:s3:::bucketname\"]}
-                   ]
-    }
-
-Doing this means that I have a different set of credentials for every annex, so it would be really useful to be able have these stored and managed within the repository itself. Each set is limited to what the annex stores, so there is no bigger compromise I have to worry about apart from the compromise of the data that the annex itself manages.
-"""]]
diff --git a/doc/special_remotes/S3/comment_14_29574a51d5831c51e2e765eb2c06e567._comment b/doc/special_remotes/S3/comment_14_29574a51d5831c51e2e765eb2c06e567._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_14_29574a51d5831c51e2e765eb2c06e567._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 14"
- date="2013-05-24T16:45:25Z"
- content="""
-I apologise for incorrect information. I was thinking about defaults when using the webapp.
-
-I have verified that embedcreds=yes stores the AWS creds, always.
-
-
-"""]]
diff --git a/doc/special_remotes/S3/comment_15_ceb9048c743135f6beca57a23505f0a3._comment b/doc/special_remotes/S3/comment_15_ceb9048c743135f6beca57a23505f0a3._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_15_ceb9048c743135f6beca57a23505f0a3._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawne_amN4fko4p5cRY_9EYwaYuJKNn7LRio"
- nickname="Tobias"
- subject="different s3 storage URLs"
- date="2013-08-23T08:59:32Z"
- content="""
-Is it possible to change the S3 endpoint hosts? I'm running a radosgw with S3 support which I'd like to define as S3 remote for git-annex
-"""]]
diff --git a/doc/special_remotes/S3/comment_16_7b79f8b5ef88a2775d61b5ac5774d3e0._comment b/doc/special_remotes/S3/comment_16_7b79f8b5ef88a2775d61b5ac5774d3e0._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_16_7b79f8b5ef88a2775d61b5ac5774d3e0._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.63"
- subject="comment 16"
- date="2013-08-23T17:39:56Z"
- content="""
-Yes, you can specify the host to use when setting up the remote. It's actually documented earlier on this very page, if ou search for \"host\". Any S3 compatabile host will probably work -- the Internet Archive's S3 does, for example.
-"""]]
diff --git a/doc/special_remotes/S3/comment_17_52d3510016c099d083553f9b3fa40db9._comment b/doc/special_remotes/S3/comment_17_52d3510016c099d083553f9b3fa40db9._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_17_52d3510016c099d083553f9b3fa40db9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlc-3pdibcizrdz4WmZooECL0k6AvM1cWc"
- nickname="Joe"
- subject="S3 file/folder names"
- date="2015-02-19T22:22:26Z"
- content="""
-Is there a way to tell the S3 backend to store the files as they are named locally, instead of by hashed content name? i.e., I've annexed foo/bar.txt and annex puts it in s3 as mybucket.name/foo/bar.txt instead of mybucket.name/GPGHMACSHA1-random.txt
-
-Or should I just write a script to s3cmd sync my annex, and add the S3/cloudfront distribution URL as a web remote?
-"""]]
diff --git a/doc/special_remotes/S3/comment_18_0dcb84048563fc9e45b66ca8f365f320._comment b/doc/special_remotes/S3/comment_18_0dcb84048563fc9e45b66ca8f365f320._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_18_0dcb84048563fc9e45b66ca8f365f320._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="darkfeline"
- subject="Sharing S3 bucket between repos"
- date="2015-10-09T01:16:25Z"
- content="""
-What are the implications of sharing an S3 remote/bucket between two repositories with using fileprefix?  Can this be used to \"deduplicate\" files shared between repositories?
-"""]]
diff --git a/doc/special_remotes/S3/comment_19_9d0d622b6202698f09eb06c097579fbb._comment b/doc/special_remotes/S3/comment_19_9d0d622b6202698f09eb06c097579fbb._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_19_9d0d622b6202698f09eb06c097579fbb._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 19"""
- date="2015-10-12T17:10:21Z"
- content="""
-@darkfeline I suppose you're talking about two completely disjoint git
-repositories, and not two clones of the same parent repo.
-
-If you don't use fileprefix, and have the same file in two disjoint
-repositories, git-annex will pick the same key for it in both cases, and
-so you'll get deduplication, but only if you don't use different
-fileprefixes.
-
-And this will mostly work pretty well. The danger is, if you drop the file
-from the S3 repo, because say, it's not used anymore in one repository,
-then you're also removing it from the S3 repo as used by the other
-repository. If that was the last copy of the file, that may not be what you
-want.
-"""]]
diff --git a/doc/special_remotes/S3/comment_1_4a1f7a230dad6caa84831685b236fd73._comment b/doc/special_remotes/S3/comment_1_4a1f7a230dad6caa84831685b236fd73._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_1_4a1f7a230dad6caa84831685b236fd73._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY"
- nickname="Matt"
- subject="environment variables"
- date="2012-05-29T12:40:25Z"
- content="""
-Just noting that the environment variables `ANNEX_S3_ACCESS_KEY_ID` and `ANNEX_S3_SECRET_ACCESS_KEY` seem to have been changed to `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
-"""]]
diff --git a/doc/special_remotes/S3/comment_20_ce4ce50d51675ee4746a2528d4bea750._comment b/doc/special_remotes/S3/comment_20_ce4ce50d51675ee4746a2528d4bea750._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_20_ce4ce50d51675ee4746a2528d4bea750._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="cantora@432fae6be728a32ac472387df86a8922f059d4a6"
- nickname="cantora"
- subject="How to view configuration of special remotes?"
- date="2015-12-08T08:29:12Z"
- content="""
-I don't remember which gpg key my s3 remote is using, but I can't seem to get git annex to tell me about the configuration of my s3 remote, which has the gpg key ID that I need to find (I need to restore it from many backed up keys, but need to know which one). Is there a way to view the remote metadata? I was hoping to see a command like `git annex remoteinfo NAME`. (git annex version: `5.20140408-gb37d538`).
-"""]]
diff --git a/doc/special_remotes/S3/comment_21_26cbfd805dd45a80121f5e2079afba37._comment b/doc/special_remotes/S3/comment_21_26cbfd805dd45a80121f5e2079afba37._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_21_26cbfd805dd45a80121f5e2079afba37._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 21"""
- date="2015-12-10T15:20:43Z"
- content="""
-@cantora with a recent enough version of git-annex, `git annex info
-$theremotename` will show quite a lot of information about a special
-remote, including encryption details.
-"""]]
diff --git a/doc/special_remotes/S3/comment_22_55a7e513713285b8ced84c8cfd525364._comment b/doc/special_remotes/S3/comment_22_55a7e513713285b8ced84c8cfd525364._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_22_55a7e513713285b8ced84c8cfd525364._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="tim@5431dd39464df207b7d46d3cf1bc74c82123ac68"
- nickname="tim"
- subject="Sharing S3 bucket without fileprefix"
- date="2016-04-13T19:02:24Z"
- content="""
-I was hoping to use the same bucket for multiple repo's (100+) with a lot of files in common. Dropping unused files would not be an issue for me, so from what I read above this should be possible.
-However I cannot get initremote nor enableremote to add a repo with an existing uuid. How do I add an already initialized bucket to a new git annex repo?
-"""]]
diff --git a/doc/special_remotes/S3/comment_23_b503ce70a4f008be580a069420361686._comment b/doc/special_remotes/S3/comment_23_b503ce70a4f008be580a069420361686._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_23_b503ce70a4f008be580a069420361686._comment
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 23"""
- date="2016-04-13T19:13:35Z"
- content="""
-@tim, are the git-annex repositories going to be connected? If so,
-`git-annex initremote` the S3 remote to one, merge it into the next
-repo, and then `git annex enableremote` the S3 remote there.
-
-That's the sane way. If you want for some reason to have multiple separate
-git-annex repositories, that all try to use the same S3 bucket, without
-knowing about one-another, I have to recommend against it. You're setting
-yourself up to shoot yourself in the foot, and quite possibly lose data.
-
-While you can `git annex enableremote` the same bucket repeatedly in the
-different repositories, each time it will be given a different uuid, and
-since the uuid is stored in the bucket, this will prevent `git annex
-enableremote` from being used for the old uuid, since it will see the
-bucket has a different uuid now.
-"""]]
diff --git a/doc/special_remotes/S3/comment_2_5b22d67de946f4d34a4a3c7449d32988._comment b/doc/special_remotes/S3/comment_2_5b22d67de946f4d34a4a3c7449d32988._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_2_5b22d67de946f4d34a4a3c7449d32988._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.81.112"
- subject="comment 2"
- date="2012-05-29T19:10:46Z"
- content="""
-Thanks, I've fixed that. (You could have too.. this is a wiki ;)
-"""]]
diff --git a/doc/special_remotes/S3/comment_3_bcab2bd0f168954243aa9bcc9671bd94._comment b/doc/special_remotes/S3/comment_3_bcab2bd0f168954243aa9bcc9671bd94._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_3_bcab2bd0f168954243aa9bcc9671bd94._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY"
- nickname="Matt"
- subject="comment 3"
- date="2012-05-30T00:26:33Z"
- content="""
-Thanks! Being new here, I didn't want to overstep my boundaries. I've gone ahead and made a small edit and will do so elsewhere as needed.
-"""]]
diff --git a/doc/special_remotes/S3/comment_4_38c0b062997fde1ad28facc05d973e83._comment b/doc/special_remotes/S3/comment_4_38c0b062997fde1ad28facc05d973e83._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_4_38c0b062997fde1ad28facc05d973e83._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmX5gPNK35Dub-HzR0Yb3KXllbqc0rYRYs"
- nickname="Eduardo"
- subject="bucket/folder s3 remotes"
- date="2012-08-09T10:52:07Z"
- content="""
-it'd be really nice being able to configure a S3 remote of the form `<bucket>/<folder>` (not really a folder, of course, just the usual prefix trick used to simulate folders at S3). The remote = bucket architecture is not scalable at all, in terms of number of repositories.
-
-how hard would it be to support this?
-
-thanks, this is the only thing that's holding us back from using git-annex, nice tool!
-"""]]
diff --git a/doc/special_remotes/S3/comment_5_409bc2b56382417cf26bb222fb783ba7._comment b/doc/special_remotes/S3/comment_5_409bc2b56382417cf26bb222fb783ba7._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_5_409bc2b56382417cf26bb222fb783ba7._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 5"
- date="2012-08-09T18:01:06Z"
- content="""
-I guess this could be useful if you have a *lot* of buckets already in use at S3, or if you want to be able to have a lot of distinct S3 special remotes. Implemented the `fileprefix` setting. Note that I have not tested it, beyond checking it builds, since I let my S3 account expire. Your testing would be appreciated.
-
-"""]]
diff --git a/doc/special_remotes/S3/comment_6_78da9e233882ec0908962882ea8c4056._comment b/doc/special_remotes/S3/comment_6_78da9e233882ec0908962882ea8c4056._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_6_78da9e233882ec0908962882ea8c4056._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnY9ObrNrQuRp8Xs0XvdtJJssm5cp4NMZA"
- nickname="alan"
- subject="Rackspace Cloud Files support?"
- date="2012-08-23T21:00:11Z"
- content="""
-Any chance I could bribe you to setup Rackspace Cloud Files support?  We are using them and would hate to have a S3 bucket only for this.
-
-https://github.com/rackspace/python-cloudfiles
-"""]]
diff --git a/doc/special_remotes/S3/comment_7_6af9781004d982d8e6b20a83ad29eead._comment b/doc/special_remotes/S3/comment_7_6af9781004d982d8e6b20a83ad29eead._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_7_6af9781004d982d8e6b20a83ad29eead._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc"
- nickname="Eric"
- subject="S3 Remote Future Proof?"
- date="2013-01-20T09:21:50Z"
- content="""
-Joey, I'm curious to understand how future proof an S3 remote is.  Can I restore my files without git-annex?
-"""]]
diff --git a/doc/special_remotes/S3/comment_8_0fa68d584ee7f6b5c9058fba7e911a11._comment b/doc/special_remotes/S3/comment_8_0fa68d584ee7f6b5c9058fba7e911a11._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_8_0fa68d584ee7f6b5c9058fba7e911a11._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="68.119.100.5"
- subject="comment 8"
- date="2013-01-20T20:37:09Z"
- content="""
-If encryption is not used, the files are stored in S3 as-is, and can be accessed directly. They are stored in a hashed directory structure with the names of their key used, rather than the original filename. To get back to the original filename, a copy of the git repo would also be needed.
-
-With encryption, you need the gpg key used in the encryption, or, for shared encryption, a symmetric key which is stored in the git repo.
-
-See [[future proofing]] for non-S3 specific discussion of this topic.
-"""]]
diff --git a/doc/special_remotes/S3/comment_9_7ad757b3865b04967c79af0a263bb3b0._comment b/doc/special_remotes/S3/comment_9_7ad757b3865b04967c79af0a263bb3b0._comment
deleted file mode 100644
--- a/doc/special_remotes/S3/comment_9_7ad757b3865b04967c79af0a263bb3b0._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="basak"
- ip="2001:8b0:1c8::2"
- subject="Recovering from a clone"
- date="2013-05-22T18:32:05Z"
- content="""
-How do I recover a special remote from a clone, please? I see that `remote.log` has most of the details, but my remote is not configured on my clone and I see no obvious way to do it. And I used `embedcreds`, but the only credentials I can see are stored in .git/annex/creds/ so did not survive a clone. I'm confused because the documentation here for `embedcreds` says that clones should have access.
-
-As a workaround, it looks like copying the remote over from `.git/config` as well as the credentials from `.git/annex/creds/` seems to work. Is there some other way I'm supposed to do this, or is this the intended way?
-"""]]
diff --git a/doc/special_remotes/bittorrent.mdwn b/doc/special_remotes/bittorrent.mdwn
deleted file mode 100644
--- a/doc/special_remotes/bittorrent.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-Similar to the [[web]] special remote, git-annex can use BitTorrent as
-a source for files that are added to the git-annex repository.
-
-It supports both `.torrent` files, and `magnet:` links. When you run `git
-annex addurl` with either of these, it will download the contents of the
-torrent and add it to the git annex repository.
-
-See [[tips/using_the_web_as_a_special_remote]] for usage examples.
-
-git-annex uses [aria2](http://aria2.sourceforge.net/) to download torrents.
-
-If git-annex is not built using the haskell torrent library to parse
-torrents, it also needs the `btshowmetainfo` program, from either
-bittornado or the original BitTorrent client.
-
-## notes
-
-Currently git-annex only supports downloading content from a torrent; 
-it cannot upload or remove content.
-
-Multi-file torrents are supported; to handle them, `git annex addurl`
-will add a directory containing all the files from the torrent.
-
-It's hard to say if a torrent is healthy enough to let a file be downloaded
-from it, and harder to predict if a torrent will stay healthy. So,
-git-annex takes a cautious approach and when dropping a file, won't
-treat this special remote as one of the required [[copies]]. It's probably
-a good idea to configure git-annex to fully distrust this remote, by
-running `git annex untrust bittorrent`
-
-This feature is available only from version `5.20141219`.
diff --git a/doc/special_remotes/bup.mdwn b/doc/special_remotes/bup.mdwn
deleted file mode 100644
--- a/doc/special_remotes/bup.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-This special remote type stores file contents in a 
-[bup](http://github.com/bup/bup) repository. By using git-annex
-in the front-end, and bup as a remote, you get an easy git-style
-interface to large files, and easy backups of the file contents using git.
-
-This is particularly well suited to collaboration on projects involving
-large files, since both the git-annex and bup repositories can be
-accessed like any other git repository.
-
-See [[walkthrough/using_bup]] for usage examples.
-
-Each individual key is stored in a bup remote using `bup split`, with
-a git branch named the same as the key name. Content is retrieved from
-bup using `bup join`. All other bup operations are up to you -- consider
-running `bup fsck --generate` in a cron job to generate recovery blocks,
-for example; or clone bup's git repository to further back it up.
-
-## configuration
-
-These parameters can be passed to `git annex initremote` to configure bup:
-
-* `buprepo` - Required. This is passed to `bup` as the `--remote`
-  to use to store data. To create the repository,`bup init` will be run.
-  Example: "buprepo=example.com:/big/mybup" or "buprepo=/big/mybup"
-  (To use the default `~/.bup` repository on the local host, specify "buprepo=")
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]]. Note that using encryption will prevent
-  de-duplication of content stored in the buprepo.
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-Options to pass to `bup split` when sending content to bup can also
-be specified, by using `git config annex.bup-split-options`. This
-can be used to, for example, limit its bandwidth.
-
-## notes
-
-[[git-annex-shell]] does not support bup, due to the wacky way that bup
-starts its server. So, to use bup, you need full shell access to the server.
diff --git a/doc/special_remotes/bup/comment_10_f78c1ed97d2e4c6ebffaa7482cfe0c9b._comment b/doc/special_remotes/bup/comment_10_f78c1ed97d2e4c6ebffaa7482cfe0c9b._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_10_f78c1ed97d2e4c6ebffaa7482cfe0c9b._comment
+++ /dev/null
@@ -1,23 +0,0 @@
-[[!comment format=mdwn
- username="http://sekenre.wordpress.com/"
- nickname="sekenre"
- subject="Synchronizing Bup repositories"
- date="2013-05-07T16:46:34Z"
- content="""
-Hi All,
-
-I managed to answer my questions above about copying changes between local bup repositories efficiently.
-
-You run the following commands 
-
-    git annex copy . --to bup_repo_1                      # Uses bup split in the background (slow)
-    rsync -av /mnt/repodisk1/repo/ /mnt/repodisk2/repo/ \
-    --exclude=config --exclude=*.bloom --exclude=*.midx   # rsync without bup-specific indices (speed depends on delta between repositories)
-    BUP_DIR=/mnt/repodisk2/repo/ bup midx -a && bup bloom # rebuild bup-specific indices on the target (this is extremely fast)
-    git annex copy . --to bup_repo_2                      # Records file is now available in repo2 (also extremely fast)
-
-Now `git annex whereis` will show the correct location and `git annex get <file> --from bup_repo_2` will work.
-
-So far in my testing I haven't found any problems...
-
-"""]]
diff --git a/doc/special_remotes/bup/comment_11_b53bceb0058acf4d1ab12ea4853ee443._comment b/doc/special_remotes/bup/comment_11_b53bceb0058acf4d1ab12ea4853ee443._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_11_b53bceb0058acf4d1ab12ea4853ee443._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"
- nickname="Tim"
- subject="bup location data not synced through annex assistant"
- date="2013-05-15T15:08:54Z"
- content="""
-I set up 2 servers running git annex assistant, both with a ~/annex dir and an additional ~/annex-bup bup repo. There is no additional cloud repository.
-For test, I added my /etc dir which uploaded correctly from server1, but which never arrived on server2
-
-    bup@bup1:~/annex/etc$ git annex whereis updatedb.conf
-    whereis updatedb.conf (3 copies) 
-  	    687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- here (bup@bup1:~/annex)
-   	    adfc1307-771f-40e9-b794-bae2e1f21b8b -- bup2-annex-bup
-   	    e4e0ac0b-992a-4312-a4ac-fc8d3d9f7c0f -- bup1-annex-bup
-    ok
-
-    bup@bup2:~/annex/etc$ git annex whereis updatedb.conf
-    whereis updatedb.conf (1 copy) 
-  	    687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- bup1 (bup@bup1:~/annex)
-    ok
-
-As you can see, server 2 just doesn't know the data is already on it's own disk in it's local bup repo.
-Is there a reason this data does not get synced? Should I set up a transfer repo?
-"""]]
diff --git a/doc/special_remotes/bup/comment_12_65d923226cf6120349d807c5c60f640c._comment b/doc/special_remotes/bup/comment_12_65d923226cf6120349d807c5c60f640c._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_12_65d923226cf6120349d807c5c60f640c._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"
- nickname="Tim"
- subject="my bad"
- date="2013-05-15T15:39:31Z"
- content="""
-Sorry, looks like I did initremote twice on the same folder, instead of enableremote the second time...
-"""]]
diff --git a/doc/special_remotes/bup/comment_12_fca579678edde073716f099c767767e1._comment b/doc/special_remotes/bup/comment_12_fca579678edde073716f099c767767e1._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_12_fca579678edde073716f099c767767e1._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkEYZEqLf3Aj_FGV7S0FvsMplmGqqb555M"
- nickname="Sergiusz"
- subject="bup-join local-arch/2014-12-03-235617 "
- date="2014-12-04T19:38:07Z"
- content="""
-How can I restore the previous commit from bup archives created with bup-split? Yes, I know I can use bup-join local-arch~1 git notation, but I would like to use bup-join local-arch/2014-12-03-235617 (bup-ls local-arch results) ...but this method does not work ...
-
-s.
-"""]]
diff --git a/doc/special_remotes/bup/comment_13_ce960bc69b27dfc2a233c9baa5b2cd2b._comment b/doc/special_remotes/bup/comment_13_ce960bc69b27dfc2a233c9baa5b2cd2b._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_13_ce960bc69b27dfc2a233c9baa5b2cd2b._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="darkfeline@e6d098788a13ce41f3141a2dfc1bd31b401e83f0"
- nickname="darkfeline"
- subject="buprepo doesn't work properly"
- date="2015-08-17T12:59:25Z"
- content="""
-The buprepo parameter doesn't seem to work properly, at least for local repos.  For example, I added a bup remote with buprepo=/media/hdd/bup, yet when I try to move files onto it, it still tries to use /home/foo/.bup (the default path).  I suppose git-annex should be setting the envvar BUP_DIR before calling bup?
-
-I can do it manually like BUP_DIR=/media/hdd/bup git annex move --to hdd foo, but that almost seems to defeat the purpose...
-"""]]
diff --git a/doc/special_remotes/bup/comment_14_940b778f97377e83dc16439c0c7e5b38._comment b/doc/special_remotes/bup/comment_14_940b778f97377e83dc16439c0c7e5b38._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_14_940b778f97377e83dc16439c0c7e5b38._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 14"""
- date="2015-08-19T18:30:16Z"
- content="""
-@darkfeline, setting buprepo= causes git-annex to run bup with -r. 
-You can verify this by using the --debug switch.
-
-IIRC, bup still creates ~/.bup when used this way, but doesn't store the
-contents of annexed files there. It uses it only to store some small index
-files, which are also stored in the repo specified with -r. This seems
-weird, but I don't think this is a bug on bup's part; it seems to
-intentionally do that, using path names in ~/.bup that are constructed to
-not conflict when -r is used with different repositories.
-I suppose bup has a good reason to do this, though I don't know what the
-reason is.
-
-I can blow ~/.bup away, run "bup init" to make a fresh clean ~/.bup,
-and then git-annex can still get the content of files from the buprepo=
-repository. So, it seems that buprepo= is working ok.
-"""]]
diff --git a/doc/special_remotes/bup/comment_1_96179a003da4444f6fc08867872cda0a._comment b/doc/special_remotes/bup/comment_1_96179a003da4444f6fc08867872cda0a._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_1_96179a003da4444f6fc08867872cda0a._comment
+++ /dev/null
@@ -1,43 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkgbXwQtPQSG8igdS7U8l031N8sqDmuyvk"
- nickname="Albert"
- subject="Error with bup and gnupg"
- date="2012-10-22T20:56:56Z"
- content="""
-Hello,
-
-I get this error when trying to use git-annex with bup and gnupg:
-
-<pre>
-move importable_pilot_surveys.tar (gpg) (checking localaseebup...) (to localaseebup...) 
-Traceback (most recent call last):
-  File \"/usr/lib/bup/cmd/bup-split\", line 133, in <module>
-    progress=prog)
-  File \"/usr/lib/bup/bup/hashsplit.py\", line 167, in split_to_shalist
-    for (sha,size,bits) in sl:
-  File \"/usr/lib/bup/bup/hashsplit.py\", line 118, in _split_to_blobs
-    for (blob, bits) in hashsplit_iter(files, keep_boundaries, progress):
-  File \"/usr/lib/bup/bup/hashsplit.py\", line 86, in _hashsplit_iter
-    bnew = next(fi)
-  File \"/usr/lib/bup/bup/helpers.py\", line 86, in next
-    return it.next()
-  File \"/usr/lib/bup/bup/hashsplit.py\", line 49, in blobiter
-    for filenum,f in enumerate(files):
-  File \"/usr/lib/bup/cmd/bup-split\", line 128, in <genexpr>
-    files = extra and (open(fn) for fn in extra) or [sys.stdin]
-IOError: [Errno 2] No such file or directory: '-'
-</pre>
-
-
-I was able to work-around this issue by altering /usr/lib/bup/cmd/bup-split (though I don't think its a bup bug) to just pull from stdin:
-
-files = [sys.stdin]
-
-on ~ line 128.
-
-Any ideas? Also, do you think that bup's data-deduplication does anything when gnupg is enabled, i.e. is it just as well to use a directory remote with gnupg?
-
-Thanks! Git annex rules!
-
-Albert
-"""]]
diff --git a/doc/special_remotes/bup/comment_2_612b038c15206f9f3c2e23c7104ca627._comment b/doc/special_remotes/bup/comment_2_612b038c15206f9f3c2e23c7104ca627._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_2_612b038c15206f9f3c2e23c7104ca627._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.23"
- subject="comment 2"
- date="2012-10-23T20:01:43Z"
- content="""
-@Albert, thanks for reporting this bug (but put them in [[bugs]] in future please).
-
-This is specific to using the bup special remote with encryption. Without encryption it works. And no, it won't manage to deduplicate anything that's encrypted, as far as I know. 
-
-I think bup-split must have used - for stdin in the past, but now, it just reads from stdin when no file is specified, so I've updated git-annex.
-"""]]
diff --git a/doc/special_remotes/bup/comment_3_1186def82741ddab1ade256fb2e59e6f._comment b/doc/special_remotes/bup/comment_3_1186def82741ddab1ade256fb2e59e6f._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_3_1186def82741ddab1ade256fb2e59e6f._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="http://sekenre.wordpress.com/"
- nickname="sekenre"
- subject="Bup remotes in git-annex assistant"
- date="2013-03-13T12:54:56Z"
- content="""
-Hi,
-
-Is the bup remote available via the Assistant user interface?
-
-Unrelated question;
-
-If you are syncing files between two bup repos on local usb drives, does it use git to sync the changes or does it use \"bup split\" to re-add the file? (Basically, is the syncing as efficient as possible using git-annex or would I have to go to a lower level)
-
-Many Thanks,
-Sek
-"""]]
diff --git a/doc/special_remotes/bup/comment_4_7d22a805dd2914971e7ca628ceea69be._comment b/doc/special_remotes/bup/comment_4_7d22a805dd2914971e7ca628ceea69be._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_4_7d22a805dd2914971e7ca628ceea69be._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 4"
- date="2013-03-13T16:05:50Z"
- content="""
-I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.
-
-Your two bup repos would be synced using bup-split.
-"""]]
diff --git a/doc/special_remotes/bup/comment_6_5942333cde09fd98e26c4f1d389cb76f._comment b/doc/special_remotes/bup/comment_6_5942333cde09fd98e26c4f1d389cb76f._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_6_5942333cde09fd98e26c4f1d389cb76f._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnZWCbRYPVnwscdkdEDwgQHZJLwW6H_AHo"
- nickname="Tobias"
- subject="bup fail?"
- date="2013-03-31T21:05:32Z"
- content="""
-I've run into problems storing a huge number of files in the bup repo. It seems that thousands of branches are a problem. I don't know if it's a problem of git-annex, bup, or the filesystem.
-
-How about adding an option to store tree/commit ids in git-annex instead of using branches in bup?
-"""]]
diff --git a/doc/special_remotes/bup/comment_7_cb1a0d3076e9d06e7a24204478f6fa98._comment b/doc/special_remotes/bup/comment_7_cb1a0d3076e9d06e7a24204478f6fa98._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_7_cb1a0d3076e9d06e7a24204478f6fa98._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 7"
- date="2013-04-02T21:24:06Z"
- content="""
-`bup-split` uses a git branch to name the objects stored in the bup repository. So it will be limited by any scalability issues affecting large numbers of git branches. I don't know what those are.
-
-Yes, it would be possible to make git-annex store this in the git-annex branch instead.
-"""]]
diff --git a/doc/special_remotes/bup/comment_8_4cbc67e5911748d13cee3c483d7ece8a._comment b/doc/special_remotes/bup/comment_8_4cbc67e5911748d13cee3c483d7ece8a._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_8_4cbc67e5911748d13cee3c483d7ece8a._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"
- nickname="Yung-Chin"
- subject="re scaling issue"
- date="2013-05-03T14:57:51Z"
- content="""
-Tobias/joey,
-
-I think there are at least two scaling issues that may be causing you trouble. One is that bup writes pack+idx files rather than bare objects, and if you send 1 file per call to bup-split, you end up with a pair of pack and idx files for each such call. When you later try to retrieve a blob, bup currently just calls git, and git will have to traverse all these tiny idx files looking for the right hash (bare objects you could at least find by name). You can probably ameliorate the pain by calling git repack (look at the -a and --max-pack-size switches) on your bup repository. The other is the \"thousands of branches\" issue, and I think \"git pack-refs --all\" (that's again on your bup repository) might help a little bit. 
-
-It would certainly help performance if you could store blob/tree ids in git-annex instead of branch names. For small files, all bup would need to store is a blob, but currently you end up storing a blob, a tree, and a commit (and looking-up all of those, plus the ref too, on calling bup-join). (you might want to patch bup-split, so it would allow you to ask it for \"--blob-or-tree\", because currently if you say you pass it -b for blob-ids, then for bigger files you get a series of IDs, whereas you'd be much better off with a tree-id there)
-"""]]
diff --git a/doc/special_remotes/bup/comment_9_ca7096a759961af375e6bd49663b45b3._comment b/doc/special_remotes/bup/comment_9_ca7096a759961af375e6bd49663b45b3._comment
deleted file mode 100644
--- a/doc/special_remotes/bup/comment_9_ca7096a759961af375e6bd49663b45b3._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"
- nickname="Yung-Chin"
- subject="comment 9"
- date="2013-05-03T16:34:05Z"
- content="""
-Thinking about this some more, a very elegant way to make a bup remote could actually be to just pass the whole .git/annex tree into bup-index/save (you could avoid sending some files by only bup-indexing select subtrees, or by using --exclude-*'s, but you'd run bup-save over the whole .git/annex tree). You could then use bup-restore to retrieve files or whole subtrees, and you'd refer to the files you're retrieving by their actual pathname under which they live in .git/annex (if that doesn't make sense it's because I've misunderstood how git-annex is organised!), so something like \"bup restore branch_name/latest/.git/annex/aa/bb/sha-of-some-sort\" would work - that's cute, right? And you'd only have 1 branch.
-
-However... somebody who is good with lazy-evaluation would need to rework bup.vfs: currently, if you'd call bup-restore on a path like that, it would instantiate a _lot_ of vfs-nodes you don't need - to begin with, it would make a node for every commit you ever made (on any branch!) - on a big repository you'd wait ages for it to just find the commit objects...
-"""]]
diff --git a/doc/special_remotes/comment_10_e9881290486a1770bd260f8650ada9c6._comment b/doc/special_remotes/comment_10_e9881290486a1770bd260f8650ada9c6._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_10_e9881290486a1770bd260f8650ada9c6._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkQqKSVY98PVGDIaYZdK9CodJdbh7cFfhY"
- nickname="Ashwin"
- subject="Rackspace Cloud Files support"
- date="2013-03-22T08:20:40Z"
- content="""
-It'd be really cool to have Rackspace cloud files support. Like the guy above me said, I would submit a patch but not if I have to learn Haskell first :)
-"""]]
diff --git a/doc/special_remotes/comment_11_e01b5cc5a0d81b071e93e27e7b91fe2a._comment b/doc/special_remotes/comment_11_e01b5cc5a0d81b071e93e27e7b91fe2a._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_11_e01b5cc5a0d81b071e93e27e7b91fe2a._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="andy"
- ip="99.48.75.171"
- subject="Re: Webhook special remote"
- date="2013-04-12T08:54:47Z"
- content="""
-@Alex: You might see if the newly-added [[todo/wishlist: allow configuration of downloader for addurl]] could be made to do what you need... I've not played around with it yet, but perhaps you could set the downloader to be something that can sort out the various URLs and send them to the correct downloading tool?
-"""]]
diff --git a/doc/special_remotes/comment_12_13237170ef5b6646e0e25d3421af3fe5._comment b/doc/special_remotes/comment_12_13237170ef5b6646e0e25d3421af3fe5._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_12_13237170ef5b6646e0e25d3421af3fe5._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="How to establish local preference for (special) remotes"
- date="2013-05-22T14:06:48Z"
- content="""
-Sorry if it is RTFM... If I have multiple original (reachable) remotes, how could I establish my preference for which one to be used in any given location?
-
-usecase: if I clone a repository within amazon cloud instance -- I would now prefer if this (or all -- user-wide configuration somehow?) repository 'get's load from URLs originating in the cloud of this zone (e.g. having us-east-1.s3.amazonaws.com/ in their URLs).
-"""]]
diff --git a/doc/special_remotes/comment_13_1a36a0483a9db04d36e0234a192ebad8._comment b/doc/special_remotes/comment_13_1a36a0483a9db04d36e0234a192ebad8._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_13_1a36a0483a9db04d36e0234a192ebad8._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmkBwMWvNKZZCge_YqobCSILPMeK6xbFw8"
- nickname="develop"
- subject="Remote costs"
- date="2013-05-22T14:15:03Z"
- content="""
-This should be implemented with costs
-
-I refer you too: http://git-annex.branchable.com/design/assistant/blog/day_213__costs/
-
-This has been implemented in the assistant, so if you use that, changing priority should be as simple as changing the order of the remotes on the web interface. Whichever remote is highest on the list, is the one your client will fetch from.
-"""]]
diff --git a/doc/special_remotes/comment_14_a8419963dc024b1d9eb73807596012dc._comment b/doc/special_remotes/comment_14_a8419963dc024b1d9eb73807596012dc._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_14_a8419963dc024b1d9eb73807596012dc._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 14"
- date="2013-05-22T14:30:00Z"
- content="""
-You do not need to use the assistant to configure the costs of remotes. Just set `remote.<name>.annex-cost` to appropriate values. See also the documentation for the `remote.<name>.annex-cost-command` which allows your own code to calculate costs.
-"""]]
diff --git a/doc/special_remotes/comment_15_95ccfdd22a2391daa99e0beb04adedd6._comment b/doc/special_remotes/comment_15_95ccfdd22a2391daa99e0beb04adedd6._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_15_95ccfdd22a2391daa99e0beb04adedd6._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="remotes costs"
- date="2013-05-22T18:33:11Z"
- content="""
-Thank you -- that is nice!
-
-Could costs be presented in 'whereis' and 'status' commands? e.g. like we know APT repositories priorities from  apt-cache policy -- now I do not see them (at least in 4.20130501... updating to sid's 0521 now)
-
-"""]]
diff --git a/doc/special_remotes/comment_16_b9d238fb15ad7628e33c90b071e07bb0._comment b/doc/special_remotes/comment_16_b9d238fb15ad7628e33c90b071e07bb0._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_16_b9d238fb15ad7628e33c90b071e07bb0._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="compression -- storage and transfer"
- date="2013-05-22T18:48:59Z"
- content="""
-Is there any remote which would not only compress during transfer (I believe rsync does that, right?) but also store objects compressed?
-
-I thought bup would do both -- but it seems that git annex receives data uncompressed from a bup remote, and bup remote requires ssh access.
-
-In my case I want to make publicly available files which are binary blobs which could be compressed very well.  It would be a pity if I waste storage on my end and also incur significant traffic, which could be avoided if data load was transferred compressed.  May be HTTP compression (http://en.wikipedia.org/wiki/HTTP_compression) could somehow be used efficiently for this purpose (not sure if load then originally could already reside in a compressed form to avoid server time to re-compress it)?
-"""]]
diff --git a/doc/special_remotes/comment_17_cc21b81a8f809f6efa5f5b6332513fc3._comment b/doc/special_remotes/comment_17_cc21b81a8f809f6efa5f5b6332513fc3._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_17_cc21b81a8f809f6efa5f5b6332513fc3._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="Re: compression -- storage and transfer"
- date="2013-05-22T19:17:33Z"
- content="""
-ha -- apparently it is trivial to configure apache to serve pre-compressed files (e.g. see http://stackoverflow.com/questions/75482/how-can-i-pre-compress-files-with-mod-deflate-in-apache-2-x) and they arrive compressed to client with
-
-Content-Encoding: gzip
-
-but unfortunately git-annex doesn't like those (fails to \"verify\") -- do you think it could be implemented for web \"special remotes\"? that would be really nice -- then I could store such load on another website, and addurl links to the compressed content
-"""]]
diff --git a/doc/special_remotes/comment_18_3fe750118ff1edbe91a110b86fb5b662._comment b/doc/special_remotes/comment_18_3fe750118ff1edbe91a110b86fb5b662._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_18_3fe750118ff1edbe91a110b86fb5b662._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- nickname="joey"
- subject="comment 18"
- date="2013-05-23T23:25:02Z"
- content="""
-All special remotes store files compressed when you enable encryption. Not otherwise, though.
-
-As far as the web special remote and pre-compressed files, files are downloaded from the web using `wget` or (of wget is not available) `curl`. So if you can make it work with those commands, it should work.
-"""]]
diff --git a/doc/special_remotes/comment_19_6794eb52bd87c28ef1df3172aa7d5780._comment b/doc/special_remotes/comment_19_6794eb52bd87c28ef1df3172aa7d5780._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_19_6794eb52bd87c28ef1df3172aa7d5780._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="http://yarikoptic.myopenid.com/"
- nickname="site-myopenid"
- subject="compressed storage/transfer -- gzip Content-Type"
- date="2013-05-25T06:41:37Z"
- content="""
-FWIW -- eh -- unfortunately it seems not that transparent.  wget seems to not support decompression at all, curl can do with explicit --compressed, BUT it doesn't distinguish url to a \"natively\" .gz file and pre-compressed content.  And I am not sure if it is possible to anyhow reliably distinguish the two urls.  In the case of obtaining pre-compressed file from my sample apache server the only difference in the http response header is that it gets \"compound\" ETag:
-compare ETag: \"3acb0e-17b38-4dd5343744660\" (for directly asking zeros100.gz) vs \"3acb0e-17b38-4dd5343744660;4dd5344e1537e\" (requesting zeros100) where portion past \";\" I guess signals the caching tag for gzipping, but not exactly sure on that since it seems to be not a part of standard.  Also for zeros100 I am getting \"TCN: choice\"... once again not sure if that is any how reliably indicative for my purpose.  So I guess there is no good way ATM via Content-Type request.
-"""]]
diff --git a/doc/special_remotes/comment_1_961276c18e9353ca8e25cad53e7ec51f._comment b/doc/special_remotes/comment_1_961276c18e9353ca8e25cad53e7ec51f._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_1_961276c18e9353ca8e25cad53e7ec51f._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawk9nck8WX8-ADF3Fdh5vFo4Qrw1I_bJcR8"
- nickname="Jon Ander"
- subject="MediaFire"
- date="2013-01-17T12:17:54Z"
- content="""
-MediaFire offers 50GB of free storage (max size 200MB). It would be great to support it as a new special remote.
-"""]]
diff --git a/doc/special_remotes/comment_20_6b7242721f2f2c77b634568cb737e3e3._comment b/doc/special_remotes/comment_20_6b7242721f2f2c77b634568cb737e3e3._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_20_6b7242721f2f2c77b634568cb737e3e3._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"
- nickname="Bence"
- subject="Testing a special remote"
- date="2013-11-24T08:24:36Z"
- content="""
-Is there a unit test or integration test to check for the behavior of a special remote implementation and/or validity?
-
-I don't speak Haskell, so maybe there are some in the source but maybe I wouldn't recognize, so I haven't checked. If there are any tests how should I use it?
-
-Thank you,
-Bence
-"""]]
diff --git a/doc/special_remotes/comment_22_308afc586b86c66bbb3437d63864d9cb._comment b/doc/special_remotes/comment_22_308afc586b86c66bbb3437d63864d9cb._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_22_308afc586b86c66bbb3437d63864d9cb._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmp1ThsNNAbSn46ju-gwFELfStlhl8usJo"
- nickname="donkeyicydragon"
- subject="Enhancing special remotes as backup spaces"
- date="2014-04-22T21:08:49Z"
- content="""
-Hi Joey,
-
-I am thinking about using google drive as an encrypted backup for my important files. However, I fear that if all my git annex repositories are unrecoverable that the encrypted data on the special remote will not help me much. Assuming I have backed up my gpg key I still get a bunch of decrypted files but the folder structure is lost. Would it be possible to implement something like a safety feature that also uploads an (encrypted) tar of all symlinks (pointing to the respective encrypted files) of the (current/or master-branch) git working tree? 
-
-I am almost sure this is already implementable using hooks however I could not find information on which types of hooks are available. I am looking for one that is triggered once after all copy/move operations to a special remote are finished. Can you point me in the right direction?
-
-Marek
-
-
-"""]]
diff --git a/doc/special_remotes/comment_23_0f5440e0e54cf7ac2a68b1ba115b0930._comment b/doc/special_remotes/comment_23_0f5440e0e54cf7ac2a68b1ba115b0930._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_23_0f5440e0e54cf7ac2a68b1ba115b0930._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 23"
- date="2014-05-16T19:11:00Z"
- content="""
-@donkeyicydragon one way to accomplish that would be to just tar up `.git` -- excluding `.git/annex/objects` and add that to git-annex like any other file. You could make a git post-commit hook that does that, but that seems overboard.
-
-Or, you could just make a git clone of your repo to a local removable drive, and use that as a local backup.
-"""]]
diff --git a/doc/special_remotes/comment_23_96ef232e13bc2dc102a667a06c856ee7._comment b/doc/special_remotes/comment_23_96ef232e13bc2dc102a667a06c856ee7._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_23_96ef232e13bc2dc102a667a06c856ee7._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="craig@6ddb6e2c94325e18a0d631a06e63fdc111ab1f12"
- nickname="craig"
- subject="Replicating my key for encrypted special remotes"
- date="2015-10-17T16:29:24Z"
- content="""
-I'm using git annex assistant to auto backup my pictures off-site to glacier.  The files in glacier are encrypted.  However, if I lose my main machine, I've also lost the encryption key, which makes my off-site backup useless.  I figured I could fix this by creating a manual mode remote on a usb drive that I keep on my keychain.  I figured this would replicate the encryption key (as I might want to pull down files from the full backup glacier remote), but would not replicate the files themselves, as I have more pictures than space on the usb drive.
-
-However, it seems the that the new remote is configured to only talk to my main machine and not glacier; the encryption key is not in the .git/ directory.  How do I ensure that I've got an off-site copy of the glacier encryption key?
-
-Thanks,
-Craig
-"""]]
diff --git a/doc/special_remotes/comment_24_2c9eda62766c9d5000346a092fe5d0d8._comment b/doc/special_remotes/comment_24_2c9eda62766c9d5000346a092fe5d0d8._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_24_2c9eda62766c9d5000346a092fe5d0d8._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 24"""
- date="2015-10-19T17:32:16Z"
- content="""
-@craig, all of git-annex's information about a special remote is stored in
-the git-annex branch in git, so any clone of the git repository is
-sufficient to back that up. You can run `git annex enableremote`
-in an clone to enable an existing special remote.
-
-The only catch is that, if you have chosen to initremote a special remote
-using a gpg key, with `encryption=shared keyid=whatever`, you'll of course
-also need that gpg key to to use it. If you run `git annex info $myremote`
-it will tell you amoung other things, any gpg keys that are used by that
-remote.
-"""]]
diff --git a/doc/special_remotes/comment_25_d9f298f284d66fb0aff029eb01f1ce23._comment b/doc/special_remotes/comment_25_d9f298f284d66fb0aff029eb01f1ce23._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_25_d9f298f284d66fb0aff029eb01f1ce23._comment
+++ /dev/null
@@ -1,90 +0,0 @@
-[[!comment format=mdwn
- username="craig@6ddb6e2c94325e18a0d631a06e63fdc111ab1f12"
- nickname="craig"
- subject="Replicating my key for encrypted special remotes"
- date="2015-10-25T19:00:56Z"
- content="""
-Cool, thanks.  I see the gpg key in remote.log in the git-annex branch, so it's saved, which is the thing I care about most.  I'm now sure I could recover my data in a DR scenario.  However, I seem to be missing something with enableremote and how this is all supposed to work.
-
-My main repo is ~/local/pics and here's the result of git annex info glacier:
-
-    11:45:24 [24623]; git annex info glacier
-    remote: glacier
-    description: glacier backup [glacier]
-    uuid: e34c5f10-2a97-4477-a248-b96e050557dc
-    trust: semitrusted
-    cost: 1050.0
-    type: glacier
-    creds: stored locally
-    glacier vault: ...snip...
-    encryption: encrypted (encryption key stored in git repository)
-    chunking: none
-    remote annex keys: 27519
-    remote annex size: 47.95 gigabytes
-
-I used git annex assistant to create a manual mode remote on my usb key.  This created a annex-pics directory on the usb key with a bare repo.
-
-    11:50:50 [24626]; pwd
-    /media/craig/KINGSTON/annex-pics
-    11:50:51 [24627]; ls
-    annex  branches  config  description  HEAD  hooks  info  objects  refs
-
-I then did a git clone from the bare repo into a tmp dir:
-
-    11:52:48 [24670]; git clone /media/craig/KINGSTON/annex-pics annex-pics
-    Cloning into 'annex-pics'...
-    done.
-
-But when I enable the glacier remote, which I'd have to do in a DR scenario, I get an error:
-
-    11:53:29 [24672]; git annex enableremote glacier
-    (merging origin/git-annex into git-annex...)
-    (recording state in git...)
-    git-annex: Unknown special remote name.
-    Known special remotes: gitannexpics
-
-It knows about the remote, but hasn't assigned a name to it:
-
-    11:53:36 [24673]; git annex info glacier
-    git-annex: glacier is not a directory or an annexed file or a remote or a uuid
-    11:53:49 [24674]; git annex info
-    repository mode: indirect
-    trusted repositories: 0
-    semitrusted repositories: 7
-            00000000-0000-0000-0000-000000000001 -- web
-            00000000-0000-0000-0000-000000000002 -- bittorrent
-            082b6805-3264-4f1b-8e15-a5cd0cef3e7f -- craig@jester:~/local/pics
-            71132283-1a3b-47f8-a548-1d5fb2f645d4 -- craig@jester:~/tmp/annex-pics [here]
-            a4598ad6-390c-40cf-a71d-edfe7511b20c -- craig@storage:~/local/pics
-            d4ee044d-e0e0-4012-b6cd-353da37b9867 -- KINGSTON [origin]
-            e34c5f10-2a97-4477-a248-b96e050557dc -- glacier backup
-    untrusted repositories: 1
-            3796b34c-61af-4e45-a276-07097c1ac6f9 -- craig@desktop:~/local/pics
-    transfers in progress: none
-    available local disk space: 414.4 gigabytes (+1 megabyte reserved)
-    local annex keys: 0
-    local annex size: 0 bytes
-    annexed files in working tree: 33204
-    size of annexed files in working tree: 48.38 gigabytes (+ 148 unknown size)
-    bloom filter size: 32 mebibytes (0% full)
-    backend usage: 
-            SHA1: 148
-            SHA256E: 33056
-
-Doing a git annex info on the uuid does something, but I'm not clear what it does:
-
-    11:53:56 [24675]; git annex info e34c5f10-2a97-4477-a248-b96e050557dc
-    remote annex keys: 27519
-    remote annex size: 47.95 gigabytes
-
-An enable remote on the uuid doesn't work either:
-
-    11:57:33 [24678]; git annex enableremote e34c5f10-2a97-4477-a248-b96e050557dc
-    git-annex: Unknown special remote name.
-    Known special remotes: gitannexpics
-
-I feel like I'm missing a step.  What am I missing?
-
-Thanks,
-Craig
-"""]]
diff --git a/doc/special_remotes/comment_26_606c1bee71a265f9df3a8cf50fce9a21._comment b/doc/special_remotes/comment_26_606c1bee71a265f9df3a8cf50fce9a21._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_26_606c1bee71a265f9df3a8cf50fce9a21._comment
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 26"""
- date="2015-10-26T17:36:26Z"
- content="""
-@craig, this can be slightly confusing, since `git-annex enableremote`
-uses the same name that you used when creating the remote in the first
-place, with `git-annex initremote`... which might be different than
-the name used for that remote in some repository or other, and from
-the description shown in `git annex into`.
-
-Since every remote listed by `git annex info` is apparently a regular git
-repo, not a special remote, with the exception of the glacier one, process
-of deduction suggests that the "gitannexpics" special remote is the same as
-the glacier one.
-
-I've made some changes now, so `git annex enableremote` will list the
-uuid and description, along with the name used by enableremote, and
-will accept any one of those things to specify which remote to enable.
-"""]]
diff --git a/doc/special_remotes/comment_27_b37c6ed2444bd7e8b4d7937abdfcbd1c._comment b/doc/special_remotes/comment_27_b37c6ed2444bd7e8b4d7937abdfcbd1c._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_27_b37c6ed2444bd7e8b4d7937abdfcbd1c._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="alex@7ca398785b94de08e4386b708f32ff9f1af381c7"
- nickname="alex"
- subject="backblaze support"
- date="2015-11-04T19:58:34Z"
- content="""
-Backblaze B2 with unlimited storage at $.005/GB/mo seems to be a great option for a special remote.
-Is it feasible to add support for it?
-I'd love to contribute financially.
-
-https://www.backblaze.com/b2
-
-"""]]
diff --git a/doc/special_remotes/comment_28_c7ab32e1e63fc114b3b2f56bab62eafa._comment b/doc/special_remotes/comment_28_c7ab32e1e63fc114b3b2f56bab62eafa._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_28_c7ab32e1e63fc114b3b2f56bab62eafa._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="craig@6ddb6e2c94325e18a0d631a06e63fdc111ab1f12"
- nickname="craig"
- subject="Thanks"
- date="2015-11-16T05:34:35Z"
- content="""
-Sorry, didn't post a follow up, but git annex enableremote did exactly what I expected.  Thanks.
-"""]]
diff --git a/doc/special_remotes/comment_29_8393a14f084d022986c8245ee01f4198._comment b/doc/special_remotes/comment_29_8393a14f084d022986c8245ee01f4198._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_29_8393a14f084d022986c8245ee01f4198._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="encryptio@2557a3f5b4ef0cddf8f011d7dbb3e76d46ed9c79"
- nickname="encryptio"
- subject="git-annex-remote-b2"
- date="2015-12-04T03:19:29Z"
- content="""
-I wrote an external remote for [Backblaze's B2](https://www.backblaze.com/b2/cloud-storage.html) object storage service: [git-annex-remote-b2](https://github.com/encryptio/git-annex-remote-b2). I can't be arsed to write a full page on it, but the README covers everything an experienced git-annex user needs to know to use it.
-"""]]
diff --git a/doc/special_remotes/comment_2_97543acfa7434e332ebea5672e446317._comment b/doc/special_remotes/comment_2_97543acfa7434e332ebea5672e446317._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_2_97543acfa7434e332ebea5672e446317._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.7.238"
- subject="comment 2"
- date="2013-01-17T16:44:25Z"
- content="""
-Mediafire does not appear to offer any kind of API for its storage.
-"""]]
diff --git a/doc/special_remotes/comment_30_8e5b17431507ee2115b992e5156b749b._comment b/doc/special_remotes/comment_30_8e5b17431507ee2115b992e5156b749b._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_30_8e5b17431507ee2115b992e5156b749b._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4"
- subject="anyone saw/worked on backend for watchdox service? (not free one but needed :-/)"
- date="2015-12-08T19:45:02Z"
- content="""
-subject
-"""]]
diff --git a/doc/special_remotes/comment_31_20ac13d009a4f451eb895ca16446ba88._comment b/doc/special_remotes/comment_31_20ac13d009a4f451eb895ca16446ba88._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_31_20ac13d009a4f451eb895ca16446ba88._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="openmedi"
- subject="comment 31"
- date="2015-12-09T20:18:48Z"
- content="""
-How does git-annex handle space issues with special remotes? For example my Owncloud instance has 100 GB space. What happens if I run out of space on that remote? Does git-annex handle that gracefully? Do I have to do something? Can I set a sort of \"quota\"?
-"""]]
diff --git a/doc/special_remotes/comment_32_8dea734fed26e5d9336a2da5bd81eabc._comment b/doc/special_remotes/comment_32_8dea734fed26e5d9336a2da5bd81eabc._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_32_8dea734fed26e5d9336a2da5bd81eabc._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 32"""
- date="2015-12-10T15:15:42Z"
- content="""
-@openmedi git-annex doesn't currently keep track of how much space it's
-using on a special remote. It's actually quite a difficult problem to do
-that in general, since multiple distributed clones of a repository can be
-uploading to the same special remote at the same time.
-
-If it runs out of space and transfers fail, git-annex will handle the
-failures semi-gracefully, which is to say nothing will stop it from trying
-again or trying to send other data, but it will certianly be aware that
-files are not reaching the special remote.
-
-If a particular storage service has a way to check free space, it would not
-be hard to make git-annex's special remote implementation check it and
-avoid trying transfers when it's full.
-"""]]
diff --git a/doc/special_remotes/comment_33_317c4d5edc9de8159c3b03a3e161e257._comment b/doc/special_remotes/comment_33_317c4d5edc9de8159c3b03a3e161e257._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_33_317c4d5edc9de8159c3b03a3e161e257._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="grawity@2ea26be48562f66fcb9b66307da72b1e2e37453f"
- nickname="grawity"
- subject="comment 33"
- date="2016-05-02T18:41:53Z"
- content="""
-I'm trying to write a remote (for smb:// support via GNOME's Gvfs), and I can't seem to find a way to change an existing special remote's parameters?
-
-Even when marked as \"dead\" (the closest to deleting a remote that I could find), it still blocks subsequent `annex initremote` calls with the same name.
-
-Also, ideally I'd want to reuse the same name _and_ keep the same UUID (e.g. when the backend is moved/renamed). Though of course there are situations where a new UUID would be wanted as well... (I guess that could depend on whether the remote is currently \"dead\" or not?)
-"""]]
diff --git a/doc/special_remotes/comment_34_31256dd4b74d344aa49902adec4bcf02._comment b/doc/special_remotes/comment_34_31256dd4b74d344aa49902adec4bcf02._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_34_31256dd4b74d344aa49902adec4bcf02._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="grawity@2ea26be48562f66fcb9b66307da72b1e2e37453f"
- nickname="grawity"
- subject="comment 34"
- date="2016-05-02T18:43:33Z"
- content="""
-Hmm, I just found that `annex enableremote` accepts parameters to be modified; that should work for now.
-
-Though I still wonder about situations where one wants to add a new empty remote with new UUID, but reuse the old name...
-"""]]
diff --git a/doc/special_remotes/comment_35_5801755d10149f0d3971fef0b6e1b62f._comment b/doc/special_remotes/comment_35_5801755d10149f0d3971fef0b6e1b62f._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_35_5801755d10149f0d3971fef0b6e1b62f._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 35"""
- date="2016-05-03T17:12:42Z"
- content="""
-@grawity yes, enableremote is the way to change configuration of an
-existing special remote.
-
-The special remote names are a bit funky; to keep the user from needing to
-enter in a long uuid when enabling a particular special remote, a name
-has to be recorded for the remote, and that becomes shared across clones
-of that repository, in a way that the names of git remotes are not
-normally. (Normally, my "origin" might be your "upstream" etc.) 
-
-While it could ignore dead remotes when initializing a new remote with an
-existing name, then if the old remote got brought back from the dead, there
-would be a naming conflict. So, I think it's best to not go down that path,
-to avoid the undead horrors lurking there. ;-)
-"""]]
diff --git a/doc/special_remotes/comment_3_9229776623c234204c8b164edff95da0._comment b/doc/special_remotes/comment_3_9229776623c234204c8b164edff95da0._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_3_9229776623c234204c8b164edff95da0._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawk9nck8WX8-ADF3Fdh5vFo4Qrw1I_bJcR8"
- nickname="Jon Ander"
- subject="MediaFire REST API"
- date="2013-01-17T16:53:41Z"
- content="""
-Wouldn't this be enough? http://developers.mediafire.com/index.php/REST_API
-"""]]
diff --git a/doc/special_remotes/comment_4_3bbda479d13f6bf393dcd59ed94ddeaa._comment b/doc/special_remotes/comment_4_3bbda479d13f6bf393dcd59ed94ddeaa._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_4_3bbda479d13f6bf393dcd59ed94ddeaa._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"
- nickname="Andrew"
- subject="JABOF special remote"
- date="2013-01-19T08:34:32Z"
- content="""
-Similar to a JABOD, this would be Just A Bunch Of Files. I already have a NAS with a file structure conducive to serving media to my TV. However, it's not capable (currently) of running git-annex locally. It would be great to be able to tell annex the path to a file there as a remote much like a web remote from \"git annex addurl\". That way I can safely drop all the files I took with me on my trip, while annex still verifies and counts the file on the NAS as a location.
-
-There are some interesting things to figure out for this to be efficient. For example, SHAs of the files. Maybe store that in a metadata file in the directory of the files? Or perhaps use the WORM backend by default?
-"""]]
diff --git a/doc/special_remotes/comment_5_f7000975d38077828ab11a99095b39eb._comment b/doc/special_remotes/comment_5_f7000975d38077828ab11a99095b39eb._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_5_f7000975d38077828ab11a99095b39eb._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.3.194"
- subject="comment 5"
- date="2013-01-19T16:05:13Z"
- content="""
-The web special remote is recently able to use file:// URL's, so you can just point to files on some arbitrary storage if you want to.
-"""]]
diff --git a/doc/special_remotes/comment_6_5d2bd7c1e1493d3c3784708a9b0bc001._comment b/doc/special_remotes/comment_6_5d2bd7c1e1493d3c3784708a9b0bc001._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_6_5d2bd7c1e1493d3c3784708a9b0bc001._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlBia1J9-PoXgZYj2LASf7Bs__IqK3T8qQ"
- nickname="Greg"
- subject="Rackspace US/UK"
- date="2013-01-30T11:33:12Z"
- content="""
-It'd be awesome to be able to use Rackspace as remote storage as an alternative to S3, I would submit a patch, but know 0 Haskell :D
-"""]]
diff --git a/doc/special_remotes/comment_7_af01ee5ce31b1490af565cb087d65277._comment b/doc/special_remotes/comment_7_af01ee5ce31b1490af565cb087d65277._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_7_af01ee5ce31b1490af565cb087d65277._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn-UoTjMBsVh6q4HNViGwJi-5FNaCVQB7E"
- nickname="Nico"
- subject="Rapidshare"
- date="2013-02-02T16:49:58Z"
- content="""
-Would it be possible to support Rapidshare as a new special remote?
-They offer unlimited storage for 6-10€ per month. It would be great for larger backups.
-Their API can be found here: http://images.rapidshare.com/apidoc.txt
-"""]]
diff --git a/doc/special_remotes/comment_8_3d4ffec566d68d601eafe8758a616756._comment b/doc/special_remotes/comment_8_3d4ffec566d68d601eafe8758a616756._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_8_3d4ffec566d68d601eafe8758a616756._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlRThEwuPnr8_bcuuCTQ0rQd3w6AfeMiLY"
- nickname="Alex"
- subject="'webhook' special remote?"
- date="2013-02-24T15:05:27Z"
- content="""
-Is there any chance a special remote that functions like a hybrid of 'web' and 'hook'? At least in theory, it should be relatively simple, since it would only support 'get' and the only meaningful parameters to pass would be the URL and the output file name.
-
-Maybe make it something like git config annex.myprogram-webhook 'myprogram $ANNEX_URL $ANNEX_FILE', and fetching could work by adding a --handler or --type parameter to addurl.
-
-The use case here is anywhere that simple 'fetch the file over HTTP/FTP/etc' isn't workable - maybe it's on rapidshare and you need to use plowshare to download it; maybe it's a youtube video and you want to use youtube-dl, maybe it's a chapter of a manga and you want to turn it into a CBZ file when you fetch it.
-
-"""]]
diff --git a/doc/special_remotes/comment_9_26af468952f0403171370b56e127830a._comment b/doc/special_remotes/comment_9_26af468952f0403171370b56e127830a._comment
deleted file mode 100644
--- a/doc/special_remotes/comment_9_26af468952f0403171370b56e127830a._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlRThEwuPnr8_bcuuCTQ0rQd3w6AfeMiLY"
- nickname="Alex"
- subject="comment 9"
- date="2013-02-24T15:13:16Z"
- content="""
-A *ridiculously* cool possibility would be to allow them to match against URLs and then handle those (youtube-dl for youtube video URLs, for instance), but that would be additional work on your end and isn't really necessary.
-"""]]
diff --git a/doc/special_remotes/ddar.mdwn b/doc/special_remotes/ddar.mdwn
deleted file mode 100644
--- a/doc/special_remotes/ddar.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-This special remote type stores file contents in a
-[ddar](https://github.com/basak/ddar) repository. This provides easy
-de-duplication when you use git-annex to manage many files that are similar.
-
-Unlike bup, ddar uses its own storage format, which allows for both creation
-and deletion of de-deduplicated files. In addition to using local storage, ddar
-archives can be remote, providing that ddar is installed on the remote machine
-and ssh is available to it.
-
-See [[walkthrough/using_ddar]] for usage examples.
-
-## encryption
-
-Encryption is nominally supported, but is not useful. Since effective
-encryption necessarily obfuscates file contents, similar areas across different
-files are no longer visible to ddar and cannot be de-duplicated.
-
-## compression
-
-The same caveat with encryption also generally applies to compression, since
-file compression changes file contents such that similar regions across files
-no longer appear similar. An exception is `gzip --rsyncable`, which is
-specifically designed to work around this issue. This is the only compression
-mechanism with which de-duplication remains effective.
-
-## configuration
-
-These parameters can be passed to `git annex initremote` to configure ddar:
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]]. However, note that encryption renders all de-duplication
-ineffective.
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-* `ddarrepo` - Required. This is passed to `ddar` as the path to the ddar
-  archive to use. If it doesn't exist, the ddar repository will be created
-  automatically when a file is first copied to it. To use a remote ddar
-  repository, use a colon (`:`) to separate the hostname from the remote path.
-  Example: "ddarrepo=example.com:/big/myddar" or "ddarrepo=/big/myddar"
diff --git a/doc/special_remotes/directory.mdwn b/doc/special_remotes/directory.mdwn
deleted file mode 100644
--- a/doc/special_remotes/directory.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-This special remote type stores file contents in directory.
-
-One use case for this would be if you have a removable drive that
-you want to use to sneakernet files between systems (possibly with
-[[encrypted|encryption]] contents). Just set up both systems to use
-the drive's mountpoint as a directory remote.
-
-Note that directory remotes have a special directory structure
-(by design, the same as the [[rsync|rsync]] remote).
-If you just want two copies of your repository with the files "visible"
-in the tree in both, the directory special remote is not what you want.
-Instead, you should use a regular `git clone` of your git-annex repository.
-
-## configuration
-
-These parameters can be passed to `git annex initremote` to configure the
-remote:
-
-* `directory` - The path to the directory where the files should be stored
-  for the remote. The directory must already exist. Typically this will
-  be an empty directory, or a directory already used as a directory remote.
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]].
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-* `chunk` - Enables [[chunking]] when storing large files.
-
-* `chunksize` - Deprecated version of chunk parameter above.  
-  Do not use for new remotes. It is not safe to change the chunksize
-  setting of an existing remote.
-
-Setup example:
-
-	# git annex initremote usbdrive type=directory directory=/media/usbdrive/ encryption=none
-	# git annex describe usbdrive "usb drive on /media/usbdrive/"
diff --git a/doc/special_remotes/directory/comment_12._comment b/doc/special_remotes/directory/comment_12._comment
deleted file mode 100644
--- a/doc/special_remotes/directory/comment_12._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.2.25"
- subject="comment 2"
- date="2013-07-19T13:54:10Z"
- content="""
-@Laura the directory special remote requires files to
-be in a particular directory structure with special names
-git-annex comes up with. So you can't use it on an existing
-tree of files like that.
-
-What you can do is use the [[web_special_remote|web]],
-with a `file://` url to point to the files wherever
-they are stored. So for example,
-`git annex addurl file:///media/dvd/file`
-"""]]
diff --git a/doc/special_remotes/external.mdwn b/doc/special_remotes/external.mdwn
deleted file mode 100644
--- a/doc/special_remotes/external.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-There are three ways to implement a new special remote:
-
-1. Using the [[hook]] special remote to tell git-annex what commands
-   to run to store and retrieve data. This is the easiest way, and
-   is great for prototyping.
-2. Writing it in Haskell and adding it to git-annex.
-3. Writing a program in any language you like that speaks the
-   [[design/external_special_remote_protocol]].
-
-The rest of this page concentrates on writing new external special remotes.
-It's not hard!
-
-* All you need is to make a program with a name like `git-annex-remote-$bar`.
-* Install it in PATH.
-* When the user runs `git annex initremote foo type=external externaltype=$bar`,
-  it will use your program.
-* See [[design/external_special_remote_protocol]] for what the program
-  needs to do. There's an example at the end of this page.
-* If things don't seem to work, pass `--debug` and you'll see, amoung other
-  things, a transcript of git-annex's communication with your program.
-* If you build a new special remote, please add it to the list
-  of [[special_remotes]].
-
-Here's an example of using an external special remote to add torrent
-support to git-annex: [[external/git-annex-remote-torrent]]
-
-Here's a simple shell script example, which can easily be adapted
-to run whatever commands you need. Or better, re-written in some better
-language of your choice.
-
-[[!inline pages="special_remotes/external/example.sh" feeds=no]]
diff --git a/doc/special_remotes/external/example.sh b/doc/special_remotes/external/example.sh
deleted file mode 100644
--- a/doc/special_remotes/external/example.sh
+++ /dev/null
@@ -1,206 +0,0 @@
-#!/bin/sh
-# git-annex external special remote program
-# 
-# This is basically the same as git-annex's built-in directory special remote.
-# 
-# Install in PATH as git-annex-remote-directory
-#
-# Copyright 2013 Joey Hess; licenced under the GNU GPL version 3 or higher.
-
-set -e
-
-# This program speaks a line-based protocol on stdin and stdout.
-# When running any commands, their stdout should be redirected to stderr
-# (or /dev/null) to avoid messing up the protocol.
-runcmd () {
-	"$@" >&2
-}
-
-# Gets a value from the remote's configuration, and stores it in RET
-getconfig () {
-	ask GETCONFIG "$1"
-}
-
-# Stores a value in the remote's configuration.
-setconfig () {
-	echo SETCONFIG "$1" "$2"
-}
-
-# Sets LOC to the location to use to store a key.
-calclocation () {
-	ask DIRHASH "$1"
-	LOC="$mydirectory/$RET/$1"
-}
-
-# Asks for some value, and stores it in RET
-ask () {
-	echo "$1" "$2"
-	read resp
-	# Tricky POSIX shell code to split first word of the resp,
-	# preserving all other whitespace
-	case "${resp%% *}" in
-		VALUE)
-			RET="$(echo "$resp" | sed 's/^VALUE \?//')"
-		;;
-		*)
-			RET=""
-		;;
-	esac
-}
-
-# This remote doesn't need credentials to access it,
-# but many of them will. Here's how to handle requiring the user
-# set MYPASSWORD and MYLOGIN when running initremote. The creds
-# will be stored securely for later use, so the user only needs
-# to provide them once.
-setupcreds () {
-	if [ -z "$MYPASSWORD" ] || [ -z "$MYLOGIN" ]; then
-		echo INITREMOTE-FAILURE "You need to set MYPASSWORD and MYLOGIN environment variables when running initremote."
-	else
-		echo SETCREDS mycreds "$MYLOGIN" "$MYPASSWORD"	
-		echo INITREMOTE-SUCCESS
-	fi
-}
-
-getcreds () {
-	echo GETCREDS mycreds
-	read resp
-	case "${resp%% *}" in
-		CREDS)
-			MYLOGIN="$(echo "$resp" | sed 's/^CREDS \([^ ]*\) .*/\1/')"
-			MYPASSWORD="$(echo "$resp" | sed 's/^CREDS [^ ]* //')"
-		;;
-	esac
-
-}
-
-# This has to come first, to get the protocol started.
-echo VERSION 1
-
-while read line; do
-	set -- $line
-	case "$1" in
-		INITREMOTE)
-			# Do anything necessary to create resources
-			# used by the remote. Try to be idempotent.
-			# 
-			# Use GETCONFIG to get any needed configuration
-			# settings, and SETCONFIG to set any persistent
-			# configuration settings.
-			# 
-			# (Note that this is not run every time, only when
-			# git annex initremote or git annex enableremote is
-			# run.)
-
-			# The directory provided by the user
-			# could be relative; make it absolute,
-			# and store that.
-			getconfig directory
-			mydirectory="$(readlink -f "$RET")" || true
-			setconfig directory "$mydirectory"
-			if [ -z "$mydirectory" ]; then
-				echo INITREMOTE-FAILURE "You need to set directory="
-			else
-				if mkdir -p "$mydirectory"; then
-					setupcreds
-				else
-					echo INITREMOTE-FAILURE "Failed to write to $mydirectory"
-				fi
-			fi
-		;;
-		PREPARE)
-			# Use GETCONFIG to get configuration settings,
-			# and do anything needed to get ready for using the
-			# special remote here.
-			getcreds
-			getconfig directory
-			mydirectory="$RET"
-			if [ -d "$mydirectory" ]; then
-				echo PREPARE-SUCCESS
-			else
-				echo PREPARE-FAILURE "$mydirectory not found"
-			fi
-		;;
-		TRANSFER)
-			key="$3"
-			file="$4"
-			case "$2" in
-				STORE)
-					# Store the file to a location
-					# based on the key.
-					# XXX when at all possible, send PROGRESS
-					calclocation "$key"
-					mkdir -p "$(dirname "$LOC")"
-					# Store in temp file first, so that
-					# CHECKPRESENT does not see it
-					# until it is all stored.
-					mkdir -p "$mydirectory/tmp"
-					tmp="$mydirectory/tmp/$key"
-					if runcmd cp "$file" "$tmp" \
-					   && runcmd mv -f "$tmp" "$LOC"; then
-						echo TRANSFER-SUCCESS STORE "$key"
-					else
-						echo TRANSFER-FAILURE STORE "$key"
-					fi
-
-					mkdir -p "$(dirname "$LOC")"
-					# The file may already exist, so
-					# make sure we can overwrite it.
-					chmod 644 "$LOC" 2>/dev/null || true
-				;;
-				RETRIEVE)
-					# Retrieve from a location based on
-					# the key, outputting to the file.
-					# XXX when easy to do, send PROGRESS
-					calclocation "$key"
-					if runcmd cp "$LOC" "$file"; then
-						echo TRANSFER-SUCCESS RETRIEVE "$key"
-					else
-						echo TRANSFER-FAILURE RETRIEVE "$key"
-					fi
-				;;
-			esac
-		;;
-		CHECKPRESENT)
-			key="$2"
-			calclocation "$key"
-			if [ -e "$LOC" ]; then
-				echo CHECKPRESENT-SUCCESS "$key"
-			else
-				if [ -d "$mydirectory" ]; then
-					echo CHECKPRESENT-FAILURE "$key"
-				else
-					# When the directory does not exist,
-					# the remote is not available.
-					# (A network remote would similarly
-					# fail with CHECKPRESENT-UNKNOWN
-					# if it couldn't be contacted).
-					echo CHECKPRESENT-UNKNOWN "$key" "this remote is not currently available"
-				fi
-			fi
-		;;
-		REMOVE)
-			key="$2"
-			calclocation "$key"
-			# Note that it's not a failure to remove a
-			# key that is not present.
-			if [ -e "$LOC" ]; then
-				if runcmd rm -f "$LOC"; then
-					echo REMOVE-SUCCESS "$key"
-				else
-					echo REMOVE-FAILURE "$key"
-				fi
-			else
-				echo REMOVE-SUCCESS "$key"
-			fi
-		;;
-		*)
-			# The requests listed above are all the ones
-			# that are required to be supported, so it's fine
-			# to say that any other request is unsupported.
-			echo UNSUPPORTED-REQUEST
-		;;
-	esac	
-done
-
-# XXX anything that needs to be done at shutdown can be done here
diff --git a/doc/special_remotes/external/git-annex-remote-ipfs b/doc/special_remotes/external/git-annex-remote-ipfs
deleted file mode 100644
--- a/doc/special_remotes/external/git-annex-remote-ipfs
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/bin/sh
-# This is a git-annex external special remote program,
-# which adds experimental ipfs support to git-annex.
-#
-# Install in PATH as git-annex-remote-ipfs
-#
-# Copyright 2015 Joey Hess; licenced under the GNU GPL version 3 or higher.
-
-set -e
-
-# use ipfs: as a prefix to indicate when an "url" is really stored in ipfs
-isipfsurl () {
-	echo "$1" | egrep -q "^ipfs:"
-}
-
-# convert an ipfs: url to an address that the ipfs client understands
-urltoaddress () {
-	echo "$1" | sed -e 's/^ipfs://'
-}
-
-addresstourl () {
-	echo "ipfs:$1"
-}
-
-# Gets a VALUE response and stores it in $RET
-getvalue () {
-	read resp
-	# Tricky POSIX shell code to split first word of the resp,
-	# preserving all other whitespace
-	case "${resp%% *}" in
-		VALUE)
-			RET="$(echo "$resp" | sed 's/^VALUE \?//')"
-		;;
-		*)
-		RET=""
-		;;
-	esac
-}
-
-# Get a list of all known ipfs addresses for a key,
-# storing it in a temp file.
-getaddrs () {
-        key="$1"
-        tmp="$2"
-
-        echo GETURLS "$key"
-        getvalue
-        while [ -n "$RET" ]; do
-                if isipfsurl "$RET"; then
-                        echo "$RET" >> "$tmp"
-                fi
-                getvalue
-        done
-}
-
-# This has to come first, to get the protocol started.
-echo VERSION 1
-
-while read line; do
-	set -- $line
-	case "$1" in
-		INITREMOTE)
-			echo INITREMOTE-SUCCESS
-		;;
-		PREPARE)
-			echo PREPARE-SUCCESS
-		;;
-		CLAIMURL)
-			url="$2"
-			if isipfsurl "$url"; then
-				echo CLAIMURL-SUCCESS
-			else
-				echo CLAIMURL-FAILURE
-			fi
-		;;
-		CHECKURL)
-			url="$2"
-			# TODO if size of file can be quickly determined
-			# (without downloading it) return the size
-			# instead of UNKNOWN
-			echo CHECKURL-CONTENTS UNKNOWN "$(urltoaddress "$url")"
-		;;
-		TRANSFER)
-			key="$3"
-			file="$4"
-			case "$2" in
-				STORE)
-					addr=$(ipfs add -q "$file" </dev/null) || true
-					if [ -z "$addr" ]; then
-						echo TRANSFER-FAILURE STORE "$key" "ipfs add failed"
-					else
-						echo "SETURIPRESENT" "$key" "$(addresstourl "$addr")"
-						echo TRANSFER-SUCCESS STORE "$key"
-					fi
-				;;
-				RETRIEVE)
-					addrtmp=$(mktemp)
-					getaddrs "$key" "$addrtmp"
-					addr="$(urltoaddress "$(head "$addrtmp")")" || true
-					rm -f "$addrtmp"
-					if [ -z "$addr" ]; then
-						echo TRANSFER-FAILURE RETRIEVE "$key" "no known ipfs address for this key"
-					else
-						if ! ipfs get --output="$file" "$addr" >&2 </dev/null; then
-							echo TRANSFER-FAILURE RETRIEVE "$key" "failed downloading ipfs $addr"
-						else
-							echo TRANSFER-SUCCESS RETRIEVE "$key"
-						fi
-					fi
-				;;
-			esac
-		;;
-		CHECKPRESENT)
-			key="$2"
-			echo CHECKPRESENT-FAILURE "$key"
-		;;
-		REMOVE)
-			key="$2"
-			echo REMOVE-FAILURE "$key" "cannot remove content from ipfs (instead, run ipfs gc to clear your local ipfs cache)"
-		;;
-		*)
-			echo UNSUPPORTED-REQUEST
-		;;
-	esac	
-done
diff --git a/doc/special_remotes/external/git-annex-remote-torrent b/doc/special_remotes/external/git-annex-remote-torrent
deleted file mode 100644
--- a/doc/special_remotes/external/git-annex-remote-torrent
+++ /dev/null
@@ -1,203 +0,0 @@
-#!/bin/sh
-# This is a demo git-annex external special remote program,
-# which adds basic torrent download support to git-annex.
-#
-# Uses aria2c. Also needs the original bittorrent (or bittornado) for the
-# btshowmetainfo command.
-# 
-# Install in PATH as git-annex-remote-torrent
-#
-# Enable remote by running:
-#  git annex initremote torrent type=external encryption=none externaltype=torrent
-#  git annex untrust torrent
-#
-# Copyright 2014 Joey Hess; licenced under the GNU GPL version 3 or higher.
-
-set -e
-
-# This program speaks a line-based protocol on stdin and stdout.
-# When running any commands, their stdout should be redirected to stderr
-# (or /dev/null) to avoid messing up the protocol.
-runcmd () {
-	"$@" >&2
-}
-
-# Gets a VALUE response and stores it in $RET
-getvalue () {
-	read resp
-	# Tricky POSIX shell code to split first word of the resp,
-	# preserving all other whitespace
-	case "${resp%% *}" in
-		VALUE)
-			RET="$(echo "$resp" | sed 's/^VALUE \?//')"
-		;;
-		*)
-		RET=""
-		;;
-	esac
-}
-
-# Get a list of all known torrent urls for a key,
-# storing it in a temp file.
-geturls () {
-	key="$1"
-	tmp="$2"
-
-	echo GETURLS "$key"
-	getvalue
-	while [ -n "$RET" ]; do
-		if istorrent "$RET"; then
-			echo "$RET" >> "$tmp"
-		fi
-		getvalue
-	done
-}
-
-# Does the url end in .torrent?
-# Note that we use #N on the url to indicate which file
-# from a multi-file torrent is wanted.
-istorrent () {
-	echo "$1" | egrep -q "\.torrent(#.*)?$"
-}
-
-# Download a single file from a torrent.
-#
-# Note: Does not support resuming interrupted transfers.
-# Note: Does not feed progress info back to git-annex, and since
-# the destination file is only populated at the end, git-annex will fail
-# to display a progress bar for this download.
-downloadtorrent () {
-	torrent="$1"
-	n="$2"
-	dest="$3"
-
-	tmpdir="$(mktemp -d)"
-
-	# aria2c will create part of the directory structure
-	# contained in the torrent. It may download parts of other files
-	# in addition to the one we asked for. So, we need to find
-	# out the filename we want, and look for it.
-	wantdir="$(btshowmetainfo "$torrent" | grep "^directory name: " | sed "s/^directory name: //" || true)"
-	if [ -n "$wantdir" ]; then
-		wantfile="$(btshowmetainfo "$torrent" | grep '^   ' | sed 's/^   //' | head -n "$n" | tail -n 1 | sed 's/ ([0-9]*)$//')"
-		if ! runcmd aria2c --select-file="$n" "$torrent" -d "$tmpdir"; then
-			false
-		fi
-	else
-		wantfile="$(btshowmetainfo "$torrent" | egrep "^file name.*: " | sed "s/^file name.*: //")"
-		wantdir=.
-		if ! runcmd aria2c "$torrent" -d "$tmpdir"; then
-			false
-		fi
-	fi
-	if [ -e "$tmpdir/$wantdir/$wantfile" ]; then
-		mv "$tmpdir/$wantdir/$wantfile" "$dest"
-		rm -rf "$tmpdir"
-	else
-		rm -rf "$tmpdir"
-		false
-	fi
-}
-
-# This has to come first, to get the protocol started.
-echo VERSION 1
-
-while read line; do
-	set -- $line
-	case "$1" in
-		INITREMOTE)
-			echo INITREMOTE-SUCCESS
-		;;
-		PREPARE)
-			echo PREPARE-SUCCESS
-		;;
-		CLAIMURL)
-			url="$2"
-			if istorrent "$url"; then
-				echo CLAIMURL-SUCCESS
-			else
-				echo CLAIMURL-FAILURE
-			fi
-		;;
-		CHECKURL)
-			url="$2"
-			# List contents of torrent.
-			tmp=$(mktemp)
-			if ! runcmd curl -o "$tmp" "$url"; then
-				echo CHECKURL-FAILURE
-			else
-				oldIFS="$IFS"
-			IFS="
-"
-				printf "CHECKURL-MULTI"
-				n=0
-				for l in $(btshowmetainfo "$tmp" | grep '^   ' | sed 's/^   //'); do
-					# Note that the file cannot contain spaces.
-					file="$(echo "$l" | sed 's/ ([0-9]*)$//' | sed 's/ /_/g')"
-					size="$(echo "$l" | sed 's/.* (\([0-9]*\))$/\1/')"
-					n=$(expr $n + 1)
-					printf " $url#$n $size $file"
-				done
-				if [ "$n" = 0 ]; then
-					file="$(btshowmetainfo "$tmp" | egrep "^file name.*: " | sed "s/^file name.*: //")"
-					size="$(btshowmetainfo "$tmp" | egrep "^file size.*: " | sed "s/^file size.*: \([0-9]*\).*/\1/")"
-					printf " $url $size $file"
-				fi
-				printf "\n"
-				IFS="$oldIFS"
-			fi
-			rm -f "$tmp"
-		;;
-		TRANSFER)
-			key="$3"
-			file="$4"
-			case "$2" in
-				STORE)
-					echo TRANSFER-FAILURE STORE "$key" "upload not supported"
-				;;
-				RETRIEVE)
-					urltmp=$(mktemp)
-					geturls "$key" "$urltmp"
-					url="$(head "$urltmp")" || true
-					rm -f "$urltmp"
-					if [ -z "$url" ]; then
-						echo TRANSFER-FAILURE RETRIEVE "$key" "no known torrent urls for this key"
-					else
-						tmp=$(mktemp)
-						if ! runcmd curl -o "$tmp" "$url"; then
-							echo TRANSFER-FAILURE RETRIEVE "$key" "failed downloading torrent file from $url"
-						else
-							filenum="$(echo "$url" | sed 's/(.*#\(\d*\)/\1/')"
-							if downloadtorrent "$tmp" "$filenum" "$file"; then
-								echo TRANSFER-SUCCESS RETRIEVE "$key"
-							else
-								echo TRANSFER-FAILURE RETRIEVE "$key" "failed to download torrent contents from $url"
-							fi
-						fi
-						rm -f "$tmp"					
-					fi
-				;;
-			esac
-		;;
-		CHECKPRESENT)
-			key="$2"
-			# Let's just assume that torrents are never present
-			# for simplicity.
-			echo CHECKPRESENT-UNKNOWN "$key" "cannot reliably check torrent status"
-		;;
-		REMOVE)
-			key="$2"
-			# Remove all torrent urls for the key.
-			tmp=$(mktemp)
-			geturls "$key" "$tmp"
-			for url in $(cat "$tmp"); do
-				echo SETURLMISSING "$key" "$url"
-			done
-			rm -f "$tmp"
-			echo REMOVE-SUCCESS "$key"
-		;;
-		*)
-			echo UNSUPPORTED-REQUEST
-		;;
-	esac	
-done
diff --git a/doc/special_remotes/gcrypt.mdwn b/doc/special_remotes/gcrypt.mdwn
deleted file mode 100644
--- a/doc/special_remotes/gcrypt.mdwn
+++ /dev/null
@@ -1,52 +0,0 @@
-[git-remote-gcrypt](https://github.com/joeyh/git-remote-gcrypt/)
-adds support for encrypted remotes to git. The git-annex gcrypt special
-remote allows git-annex to also store its files in such repositories.
-Naturally, git-annex encrypts the files it stores too, so everything
-stored on the remote is encrypted.
-
-See [[tips/fully_encrypted_git_repositories_with_gcrypt]] for some examples
-of using gcrypt.
-
-## configuration
-
-These parameters can be passed to `git annex initremote` to configure
-gcrypt:
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  Required. See [[encryption]].
-
-* `keyid` - Specifies the gpg key to use for encryption of both the files
-  git-annex stores in the repository, as well as to encrypt the git
-  repository itself. May be repeated when multiple participants
-  should have access to the repository.
-
-* `gitrepo` - Required. The path or url to the git repository
-  for gcrypt to use. This repository should be either empty, or an existing
-  gcrypt repositry.
-
-* `chunk` - Enables [[chunking]] when storing large files.
-
-* `shellescape` - See [[rsync]] for the details of this option.
-
-## notes
-
-For git-annex to store files in a repository on a remote server, you need
-shell access, and `rsync` must be installed. Those are the minimum
-requirements, but it's also recommended to install git-annex on the remote
-server, so that [[git-annex-shell]] can be used.
-
-While you can use git-remote-gcrypt with servers like github, git-annex
-can't store files on them. In such a case, you can just use
-git-remote-gcrypt directly.
-
-If you use encryption=hybrid, you can add more gpg keys that can access
-the files git-annex stored in the gcrypt repository. However, due to the
-way git-remote-gcrypt encrypts the git repository, you will need to somehow
-force it to re-push everything again, so that the encrypted repository can
-be decrypted by the added keys. Probably this can be done by setting
-`GCRYPT_FULL_REPACK` and doing a forced push of branches.
-
-Recent versions of git-annex configure `remote.<name>`gcrypt-publish-participants` when
-setting up a gcrypt repository. This is done to avoid unncessary gpg
-passphrase prompts, but it does publish the gpg keyids that can decrypt the
-repository. Unset it if you need to obscure that.
diff --git a/doc/special_remotes/glacier.mdwn b/doc/special_remotes/glacier.mdwn
deleted file mode 100644
--- a/doc/special_remotes/glacier.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-This special remote type stores file contents in Amazon Glacier.
-
-To use it, you need to have [glacier-cli](http://github.com/basak/glacier-cli)
-installed.
-
-The unusual thing about Amazon Glacier is the multiple-hour delay it takes
-to retrieve information out of Glacier. To deal with this, commands like
-"git-annex get" request Glacier start the retrieval process, and will fail
-due to the data not yet being available. You can then wait approximately 
-four hours, re-run the same command, and this time, it will actually
-download the data.
-
-## configuration
-
-The standard environment variables `AWS_ACCESS_KEY_ID` and 
-`AWS_SECRET_ACCESS_KEY` are used to supply login credentials
-for Amazon. You need to set these only when running
-`git annex initremote`, as they will be cached in a file only you
-can read inside the local git repository.
-
-A number of parameters can be passed to `git annex initremote` to configure
-the Glacier remote.
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]].
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-* `embedcreds` - Optional. Set to "yes" embed the login credentials inside
-  the git repository, which allows other clones to also access them. This is
-  the default when gpg encryption is enabled; the credentials are stored
-  encrypted and only those with the repository's keys can access them.
-
-  It is not the default when using shared encryption, or no encryption.
-  Think carefully about who can access your repository before using
-  embedcreds without gpg encryption.
-
-* `datacenter` - Defaults to "us-east-1".
-
-* `vault` - By default, a vault name is chosen based on the remote name
-  and UUID. This can be specified to pick a vault name.
-
-* `fileprefix` - By default, git-annex places files in a tree rooted at the
-  top of the Glacier vault. When this is set, it's prefixed to the filenames
-  used. For example, you could set it to "foo/" in one special remote,
-  and to "bar/" in another special remote, and both special remotes could
-  then use the same vault.
diff --git a/doc/special_remotes/hook.mdwn b/doc/special_remotes/hook.mdwn
deleted file mode 100644
--- a/doc/special_remotes/hook.mdwn
+++ /dev/null
@@ -1,111 +0,0 @@
-This special remote type lets you store content in a remote of your own
-devising, configured via some simple hooks.
-
-It's not recommended to use this remote type when another like [[rsync]]
-or [[directory]] will do. If your hooks are not carefully written, data
-could be lost. 
-
-If you're building a special remote for others to use,
-instead consider building an [[external_special_remote|external]].
-
-## example
-
-Here's a simple example that stores content on clay tablets. If you
-implement this example in the real world, I'd appreciate a tour
-next Apert! :) --[[Joey]]
-
-	# git config annex.cuneiform-store-hook 'tocuneiform < "$ANNEX_FILE" | tablet-writer --implement=stylus --title="$ANNEX_KEY" | tablet-proofreader | librarian --shelve --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2'
-	# git config annex.cuneiform-retrieve-hook 'librarian --get --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" | tablet-reader --implement=coffee --implement=glasses --force-monastic-dedication | fromcuneiform > "$ANNEX_FILE"'
-	# git config annex.cuneiform-remove-hook 'librarian --get --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" | goon --hit-with-hammer'
-	# git config annex.cuneiform-checkpresent-hook 'librarian --find --force-distrust-catalog --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" --shout-title'
-	# git annex initremote library type=hook hooktype=cuneiform encryption=none
-	# git annex describe library "the reborn Library of Alexandria (upgrade to bronze plates pending)"
-
-Can you spot the potential data loss bugs in the above simple example?
-(Hint: What happens when the `tablet-proofreader` exits nonzero?)
-
-## configuration
-
-These parameters can be passed to `git annex initremote`:
-
-* `hooktype` - Required. This specifies a collection of hooks to use for
-  this remote.
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]].
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-* `chunk` - Enables [[chunking]] when storing large files.
-
-## hooks
-
-Each type of hook remote is specified by a collection of hook commands.
-Each hook command is run as a shell command line, and should return nonzero
-on failure, and zero on success.
-
-These environment variables are used to communicate with the hook commands:
-
-* `ANNEX_KEY` - name of a key to store, retrieve, remove, or check.
-* `ANNEX_FILE` - a file containing the key's content
-* `ANNEX_HASH_1` - short stable value, based on the key, can be used for hashing
-  into 1024 buckets.
-* `ANNEX_HASH_2` - another hash value, can be used for a second level of hashing
-
-The settings to use in git config for the hook commands are as follows:
-
-* `annex.$hooktype-store-hook` - Command run to store a key in the special remote.
-  `ANNEX_FILE` contains the content to be stored.
-
-* `annex.$hooktype-retrieve-hook` - Command run to retrieve a key from the special remote.
-  `ANNEX_FILE` is a file that the retrieved content should be written to.
-  The file may already exist with a partial
-  copy of the content (or possibly just garbage), to allow for resuming
-  of partial transfers.
-
-* `annex.$hooktype-remove-hook` - Command to remove a key from the special remote.
-
-* `annex.$hooktype-checkpresent-hook` - Command to check if a key is present
-  in the special remote. Should output the key name to stdout, on its own line,
-  if and only if the key has been actively verified to be present in the
-  special remote (caching presence information is a very bad idea);
-  all other output to stdout will be ignored.
-
-## combined hook program
-
-This interface is deprecated -- it's better, and not much harder,
-to write an [[external_special_remote|external]]!
-
-Rather than setting all of the above hooks, you can write a single
-program that handles everything, and set a single hook to make it be used.
-
-	# git config annex.demo-hook /usr/local/bin/annexdemo
-	# git annex initremote mydemorepo type=hook hooktype=demo encryption=none
-
-The program just needs to look at the `ANNEX_ACTION` environment variable
-to see what it's being asked to do. For example:
-
-[[!format sh """
-#!/bin/sh
-set -e
-case "$ANNEX_ACTION" in
-	store)
-		demo-upload "$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY" < "$ANNEX_FILE"
-	;;
-	retrieve)
-		demo-download "$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY" > "$ANNEX_FILE"
-	;;
-	remove)
-		demo-nuke "$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY"
-	;;
-	checkpresent)
-		if demo-exists "$ANNEX_HASH_1/$ANNEX_HASH_2/$ANNEX_KEY"; then
-			echo "$ANNEX_KEY"
-		fi
-	;;
-	*)
-		echo "unknown ANNEX_ACTION: $ANNEX_ACTION" >&2
-		exit 1
-	;;
-esac
-"""]]
diff --git a/doc/special_remotes/hook/comment_1_6a74a25891974a28a8cb42b87cb53c26._comment b/doc/special_remotes/hook/comment_1_6a74a25891974a28a8cb42b87cb53c26._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_1_6a74a25891974a28a8cb42b87cb53c26._comment
+++ /dev/null
@@ -1,32 +0,0 @@
-[[!comment format=mdwn
- username="helmut"
- ip="89.0.176.236"
- subject="Asynchronous hooks?"
- date="2012-10-13T09:46:14Z"
- content="""
-Is there a way to use asynchronous remotes? Interaction with git annex would have to
-split the part of initiating some action from completing it.
-
-I imagine I could `git annex copy` a file to an asynchronous remote and the command
-would almost immediately complete. Later I would learn that the transfer is
-completed, so the hook must be able to record that information in the `git-annex`
-branch. An additional plumbing command seems required here as well as a way to
-indicate that even though the store-hook completed, the file is not transferred.
-
-Similarly `git annex get` would immediately return without actually fetching the
-file. This should already be possible by returning non-zero from the retrieve-hook.
-Later the hook could use plumbing level commands to actually stick the received file
-into the repository.
-
-The remove-hook should need no changes, but the checkpresent-hook would be more like
-a trigger without any actual result. The extension of the plumbing required for the
-extension to the receive-hook could update the location log. A downside here is that
-you never know when a fsck has completed.
-
-My proposal does not include a way to track the completion of actions, but relies on
-the hook to always complete them reliably. It is not clear that this is the best road
-for asynchronous hooks.
-
-One use case for this would be a remote that is only accessible via uucp. Are there
-other use cases? Is the drafted interface useful?
-"""]]
diff --git a/doc/special_remotes/hook/comment_2_ee7c43b93c5b787216334f019643f6a0._comment b/doc/special_remotes/hook/comment_2_ee7c43b93c5b787216334f019643f6a0._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_2_ee7c43b93c5b787216334f019643f6a0._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"
- nickname="Bence"
- subject="More environment variables"
- date="2013-07-09T10:28:58Z"
- content="""
-Could you please include the original filename+path in the environment variables (_next to ANNEX_KEY & ANNEX_FILE_)? Like ANNEX_FILENAME and ANNEX_PATH.
-
-Having these infos in a hook would help eg. a flickr backend to be more usefull. [Tags](http://www.flickr.com/help/tags/) would contain the ANNEX_KEY and the image title could be the original filename (ANNEX_FILENAME). Also, having directory path (ANNEX_PATH) for the given file, the uploading process could put images into the proper sets/collections. Voila, you have a \"filesystem based\" flickr image gallery (almost like flickrfs).
-
-Other backends, like AmazonS3 having [meta data](http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html) also could benefit from this. 
-
-To build the Death Star further, an _annex.$hooktype-**sync**-hook_ would instruct the backend to sync data, eg. place or move images/files in the proper image-sets/directories after they are moved/repositioned in git-annex, but that would be the backend's job, not git-annex's. Maybe the sync-hook would be called when _git annex sync_ is called. This is just an idea.
-
-While writing this, a new hook for sharing came into my mind: _annex.$hooktype-**share**-hook_.
-Calling this on a file/directory (_git annex share my_image_to_share.jpg_) would return a publicly shareable (short)url pointing to the file/directory. This would work for web-backends like AmazonS3, flickr, DropBox, Google Drive, ...
-"""]]
diff --git a/doc/special_remotes/hook/comment_3_2593291795e732994862d08bf2ed467b._comment b/doc/special_remotes/hook/comment_3_2593291795e732994862d08bf2ed467b._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_3_2593291795e732994862d08bf2ed467b._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"
- nickname="Tobias"
- subject="comment 3"
- date="2013-07-09T10:54:58Z"
- content="""
-I have requested this before. But it doesn't seem to be entirely doable because some items may have multiple equally correct filenames/paths. And some items may have zero filenames/paths.
-
-That said I hope a solution can be found because I really want this feature too. And would implement it in all my hooks.
-
-And for some of the cases i don't really see it as an issue. If you have a public flickr repo with clean(unencrypted) files. It is because you want to access existing files. If an object has no filename/path the hook could/would/should just ignore the file, sure this means no backup of old versions of files, but you can have other backends for those versions.
-
-The bigger issue is with the same file existing multiple places in the annex, which filename/path should be used? And the filename/path can change between sync(if it is deleted from one of the positions). I personally still see this as being entirely doable. The key for downloading would always be the same, so worst case scenario is the image may be duplicated on flickr. Or that the picture only one of the multiple folders it should be in on flickr. Still, i see these issues as being minor, and that usability would increase if this was implemented, even with these caveats.
-
-And there probably is some issues I haven't realized/know about.
-
-"""]]
diff --git a/doc/special_remotes/hook/comment_4_35d79b5ffa5a19056efcdc805070bc4b._comment b/doc/special_remotes/hook/comment_4_35d79b5ffa5a19056efcdc805070bc4b._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_4_35d79b5ffa5a19056efcdc805070bc4b._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"
- nickname="Bence"
- subject="checkpresent success and failure"
- date="2013-07-31T13:06:21Z"
- content="""
-What value should be returned in the \"checkpresent-hook\" to signal that the given file does not exist in the given backend? 
-
-Should the called hook process return an exit code less or greater then zero? In this case the following is displayed: 
->(user error (sh [\"-c\",\"name_of_the_process\"] exited 1)) failed
-
-This tells that the process failed (no internet connection or something that prevents the process from doing its job) and not that result is false, which would mean the file/entry does not exist in the given backend.
-If the return code is zero the file is treated as existing file/entry (no matter what I write to stderr).
-
-Also I think, the \"checkpresent\" block misses the ending ;; in the example.
-
-Here is my work-in-progress hook: https://gist.github.com/parhuzamos/31bf4516eea434e0d248
-"""]]
diff --git a/doc/special_remotes/hook/comment_5_6fbf1e963fa3ea4b2eb8ca5a3819762d._comment b/doc/special_remotes/hook/comment_5_6fbf1e963fa3ea4b2eb8ca5a3819762d._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_5_6fbf1e963fa3ea4b2eb8ca5a3819762d._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.21"
- subject="comment 5"
- date="2013-07-31T16:25:55Z"
- content="""
-The checkpresent hook should always exit 0 unless there was an exceptional condition (eg, perhaps it cannot check if the file exists one way or the other). Like the documentation for it says, the important thing is what it outputs to stdout, which should contain the key name if it's present, and should not contain the key name if it's not present.
-
-I hope you post to this website about your special remote when you get it fully working!
-"""]]
diff --git a/doc/special_remotes/hook/comment_6_e0ab48d5333e5de85f016b097e6fdac1._comment b/doc/special_remotes/hook/comment_6_e0ab48d5333e5de85f016b097e6fdac1._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_6_e0ab48d5333e5de85f016b097e6fdac1._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"
- nickname="Bence"
- subject="comment 6"
- date="2013-07-31T17:34:50Z"
- content="""
-Roger that.
-
-If this is acceptable: [terminal output screenshot](http://i.imgur.com/lsJJYwF.png), than I'm almost done and will publish soon.
-(Of course a REST API using client would much be better, but this is just the start.)
-
-"""]]
diff --git a/doc/special_remotes/hook/comment_7_cc2b1243c2c36e63241513bcaddfea67._comment b/doc/special_remotes/hook/comment_7_cc2b1243c2c36e63241513bcaddfea67._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_7_cc2b1243c2c36e63241513bcaddfea67._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.0.21"
- subject="comment 7"
- date="2013-07-31T17:42:22Z"
- content="""
-If I were you I'd suppress that \"File not found\" error.
-
-Hook special remotes *can* output messages to stderr, and it's also fine to output eg, progress bars to stdout when seding/receving files. But unnecessary cluttery output should be avoided.
-"""]]
diff --git a/doc/special_remotes/hook/comment_8_bbae315233bda48eb04662dfd48cf1ae._comment b/doc/special_remotes/hook/comment_8_bbae315233bda48eb04662dfd48cf1ae._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_8_bbae315233bda48eb04662dfd48cf1ae._comment
+++ /dev/null
@@ -1,30 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg"
- nickname="Bence"
- subject="checkpresent again"
- date="2013-08-01T23:18:38Z"
- content="""
-In the current [HEAD](https://github.com/joeyh/git-annex/commit/bb74db6ef094324062adcf26a677113ee6fd0e58) the \"checkpresent\" method in [Hook.hs](https://github.com/joeyh/git-annex/blob/master/Remote/Hook.hs#L145) is missing a \"return\" while other hooks have a return value eg. [Directory.hs](https://github.com/joeyh/git-annex/blob/master/Remote/Directory.hs#L241), [Rsync.hs](https://github.com/joeyh/git-annex/blob/master/Remote/Rsync.hs#L272), ...
-
-
-I noticed that if my *checkpresent* hook does not output anything (to be exact: I commented out all the lines in the block) it behaves strangely. I copied the test file to \"copyrepo\", removed it by hand (so git-annex does not know about the change) and executed a fsck.
-
-    ~/annex5/test1/123 $ git annex fsck --from copyrepo --fast
-    fsck somefile.1 (checking copyrepo...) (fixing location log) 
-      ** Based on the location log, somefile.1
-      ** was expected to be present, but its content is missing.
-    failed
-
-running the check again
-
-    ~/annex5/test1/123 $ ga fsck --from copyrepo --fast
-    fsck somefile.1 (checking copyrepo...) ok
-
-and running the check again without --fast
-
-    ~/annex5/test1/123 $ ga fsck --from copyrepo
-    fsck somefile.1 (checking copyrepo...) ok
-
-It thinks, the file is in the repo but it is not.
-
-"""]]
diff --git a/doc/special_remotes/hook/comment_9_037523d1994c702239ca96791156fe65._comment b/doc/special_remotes/hook/comment_9_037523d1994c702239ca96791156fe65._comment
deleted file mode 100644
--- a/doc/special_remotes/hook/comment_9_037523d1994c702239ca96791156fe65._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.145"
- subject="comment 9"
- date="2013-08-01T23:51:48Z"
- content="""
-The behavior you show with `fsck --from` is that the first time it's run against the damaged remote it notices the file is not present using the checkpresent hook. It then updates the location log. The subsequent times it's run, it sees that the location log says the file is not present in the remote. It verifies this is the case by calling the checkpresent hook. Since the two data sources agree, and numcopies is still satisfied, it prints \"ok\". There does not seem to be a bug here.
-
-(`return` in Haskell does not do what you would expect to happen in a traditional imperative language. It does not alter control flow, and any function using `return` can be mechanically converted to one that does not use `return`.)
-"""]]
diff --git a/doc/special_remotes/ipfs.mdwn b/doc/special_remotes/ipfs.mdwn
deleted file mode 100644
--- a/doc/special_remotes/ipfs.mdwn
+++ /dev/null
@@ -1,85 +0,0 @@
-This special remote stores file contents in [ipfs](http://ipfs.io/).
-
-Warning: As this page is being written, ipfs is still considered alpha
-quality code, not suitable for production use. Still, it's fun to play
-with, has some nice features and great potential, and git-annex can
-keep your data safe while you're using ipfs.
-
-## prerequisites
-
-* git-annex version 5.20150305 or newer.
-* Install [[external/git-annex-remote-ipfs]] somewhere in PATH
-  and `chmod +x` the script.
-* Install [go-ipfs](https://github.com/jbenet/go-ipfs) somewhere in PATH.
-* Run `ipfs init` and start the `ipfs daemon`
-
-(Note that this special remote does not use ipfs's FUSE support; it
-communicates with ipfs using the `ipfs` command-line utility.)
-
-## configuration
-
-These parameters can be passed to `git annex initremote` to configure the
-remote:
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]]. Note that this is git-annex's encryption, not ipfs's
-  encryption.
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-Setup example:
-
-	# git annex initremote ipfs type=external externaltype=ipfs encryption=none
-
-## content distribution
-
-After `git annex copy --to ipfs`, a file will typically only have
-been copied to your computer's local ipfs object store. It will not reach
-other ipfs nodes on the network until they request the content.
-
-If you set up a clone of your repository on another computer, and install
-ipfs and enable the ipfs remote there, you can proceed with using it to get
-files that have been stored in ipfs:
-
-	# git annex sync
-	# git annex enableremote ipfs
-	# git annex copy --from ipfs
-
-## content removal
-
-Removing content from ipfs requires all nodes that have a copy to decide to
-delete it. This is not something git-annex can arrange to happen, or
-reliably tell has happened, so `git annex drop --from ipfs` will always fail.
-
-## using ipfs addresses
-
-Once a file has been copied to ipfs, you can use `git annex whereis`
-to look up the ipfs address of the file:
-
-	# git annex whereis somefile
-	whereis somefile
-		ed1c811d-fe42-4436-aa75-56566c990aa8 -- ipfs
-	
-	ipfs: ipfs:QmYgXEfjsLbPvVKrrD4Hf6QvXYRPRjH5XFGajDqtxBnD4W
-
-In the example above, the ipfs address for the file is
-`QmYgXEfjsLbPvVKrrD4Hf6QvXYRPRjH5XFGajDqtxBnD4W`. You can give this
-address to any other ipfs user and they can use it to download the file!
-
-You can also use ipfs addresses with `git annex addurl`. For example:
-
-	# git annex addurl ipfs:QmYgXEfjsLbPvVKrrD4Hf6QvXYRPRjH5XFGajDqtxBnD4W --file somefile
-
-That's a real file; try it!
-
-## future directions
-
-While perhaps useful, this is just a proof of concept. It's particularly
-lacking in that it doesn't integrate well git-annex's [[location_tracking]]
-with ipfs. 
-
-Tracking which ipfs nodes have a copy of an annexed object
-would make this special remote work better. In particular, git-annex does
-not currently trust ipfs to contain a copy of an object, since it has no
-way of keeping track of which which ipfs nodes might contain it. So, eg, 
-`git annex drop` will refuse to trust ipfs.
diff --git a/doc/special_remotes/ipfs/comment_1_d1b2da148715476015716a2f866558b9._comment b/doc/special_remotes/ipfs/comment_1_d1b2da148715476015716a2f866558b9._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_1_d1b2da148715476015716a2f866558b9._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- subject="about copying to the local store"
- date="2015-03-07T13:16:02Z"
- content="""
-there's a [discussion](https://github.com/jbenet/go-ipfs/issues/875) happening upstream about how copying to the local datastore could be avoided.
-"""]]
diff --git a/doc/special_remotes/ipfs/comment_2_564271a8660d7bbade6e4ed396fcfb57._comment b/doc/special_remotes/ipfs/comment_2_564271a8660d7bbade6e4ed396fcfb57._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_2_564271a8660d7bbade6e4ed396fcfb57._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"
- nickname="rob.syme"
- subject="Finding IPFS hash"
- date="2015-05-26T04:55:32Z"
- content="""
-I'm using git-annex version: 5.20150522-gb199d65
-
-The example above gives the ipfs hash for the file, but when I run whereis, the hash is not reported:
-
-    $ git annex whereis test.txt
-    whereis test.txt (2 copies) 
-            1bd0f840-2247-4888-9237-596515788671 -- rob@rob-G60JX:/tmp/gitannextest [here]
-            adf361b3-7b1a-43e1-8360-937f7e436e90 -- [ipfs]
-    ok
-
-Is there a way for git-annex to report the file's ipfs hash ID?
-"""]]
diff --git a/doc/special_remotes/ipfs/comment_3_b8c7e402e0ee63d659ae33e3e2504ca2._comment b/doc/special_remotes/ipfs/comment_3_b8c7e402e0ee63d659ae33e3e2504ca2._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_3_b8c7e402e0ee63d659ae33e3e2504ca2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"
- nickname="rob.syme"
- subject="Finding IPFS hash"
- date="2015-05-26T05:08:38Z"
- content="""
-I see now that git-annex only reports the ipfs hash when the remote is unencrypted. It the ipfs hash not reported for encrypted ipfs remotes for security reasons?
-"""]]
diff --git a/doc/special_remotes/ipfs/comment_4_06611859079239659ba7d73d655f517e._comment b/doc/special_remotes/ipfs/comment_4_06611859079239659ba7d73d655f517e._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_4_06611859079239659ba7d73d655f517e._comment
+++ /dev/null
@@ -1,23 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2015-05-27T19:02:30Z"
- content="""
-@rob.syme, the reason that does not work when using encryption
-is that git-annex internally generates an encrypted key, and stores
-that on IPFS. The ipfs special remote records the IPFS address
-that can be used for a key, but it's recorded on the encrypted
-key, which is not the one you're querying with whereis.
-
-This is a general problem with git-annex; ipfs is probably the
-first special remote that exposes the problem.
-
-Anyway, I'm not sure what benefit knowing the IPFS address of a file
-encrypted by git-annex is. You need to use git-annex to decrypt it, in
-general. You might be able to use your gpg key to decrypt it, if the
-special remote was set up using pubkey encryption, but that's not going to
-help anyone else you give the IPFS address to access the encrypted data..
-
-Does your use case involve pinning the IPFS address, or something like
-that?
-"""]]
diff --git a/doc/special_remotes/ipfs/comment_5_ba7d08b2bcb6614102c48b4cb3de5b1a._comment b/doc/special_remotes/ipfs/comment_5_ba7d08b2bcb6614102c48b4cb3de5b1a._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_5_ba7d08b2bcb6614102c48b4cb3de5b1a._comment
+++ /dev/null
@@ -1,30 +0,0 @@
-[[!comment format=mdwn
- username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"
- nickname="rob.syme"
- subject="Finding IPFS hash"
- date="2015-11-18T14:55:33Z"
- content="""
-The use case is only very silly - I just wanted to look directly at the data stored at that IPFS hash - it was not important and certainly not worth changing the way git-annex stores its keys.
-
-On a new machine with a new version of git-annex, I can no longer initialize a new IFPS remote:
-
-    ⟫ ipfs version
-    ipfs version 0.3.10-dev
-
-    ⟫ git annex version
-    git-annex version: 5.20151116-gbe86081
-    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP ConcurrentOutput DNS Feeds Quvi TDFA TorrentParser Database
-    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 SHA1E SHA1 MD5E MD5 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web bittorrent webdav tahoe glacier ddar hook external
-    local repository version: 5
-    supported repository version: 5
-    upgrade supported from repository versions: 0 1 2 4
-
-    ⟫ git annex initremote ipfs type=external externaltype=ipfs encryption=none
-    initremote ipfs 
-    git-annex: git-annex-remote-ipfs: createProcess: runInteractiveProcess: exec: does not exist (No such file or directory)
-    failed
-    git-annex: initremote: 1 failed
-
-It looks like I'm missing a binary somewhere, but I'm not sure which one is missing.
-"""]]
diff --git a/doc/special_remotes/ipfs/comment_6_8621bbd87982f73cf401cfa09d95d1e4._comment b/doc/special_remotes/ipfs/comment_6_8621bbd87982f73cf401cfa09d95d1e4._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_6_8621bbd87982f73cf401cfa09d95d1e4._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 6"""
- date="2015-11-18T16:22:51Z"
- content="""
-@rob.syme I think that error message is pretty clear: git-annex-remote-ipfs
-is not present in your PATH or perhaps is not executable.
-
-(Still, the error message could be improved a bit, doing that now.)
-"""]]
diff --git a/doc/special_remotes/ipfs/comment_7_062f266f26b5788b418de6955bff442d._comment b/doc/special_remotes/ipfs/comment_7_062f266f26b5788b418de6955bff442d._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_7_062f266f26b5788b418de6955bff442d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="rob.syme@92895c98b16fd7a88bed5f10913c522ebfd76c31"
- nickname="rob.syme"
- subject="git-annex-remote-ipfs"
- date="2015-11-19T14:46:03Z"
- content="""
-Silly me - I messed up my bashrc. Fixed now, thanks!
-"""]]
diff --git a/doc/special_remotes/ipfs/comment_8_eedf260df630192b49557bfc84c9ce82._comment b/doc/special_remotes/ipfs/comment_8_eedf260df630192b49557bfc84c9ce82._comment
deleted file mode 100644
--- a/doc/special_remotes/ipfs/comment_8_eedf260df630192b49557bfc84c9ce82._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="anarcat"
- subject="git remote"
- date="2016-03-24T14:15:06Z"
- content="""
-there is now a [git remote for IPFS](https://github.com/cryptix/git-remote-ipfs). I *believe* it suffers from the same problem as all files within ipfs, namely that the contents are duplicated inside the repo. However, it certainly make for an interesting decentralised way of sharing metadata. --[[anarcat]]
-"""]]
diff --git a/doc/special_remotes/rsync.mdwn b/doc/special_remotes/rsync.mdwn
deleted file mode 100644
--- a/doc/special_remotes/rsync.mdwn
+++ /dev/null
@@ -1,60 +0,0 @@
-This special remote type rsyncs file contents to somewhere else.
-
-Setup example:
-
-	# git annex initremote myrsync type=rsync rsyncurl=rsync://rsync.example.com/myrsync keyid=id@joeyh.name encryption=shared
-	# git annex describe myrsync "rsync server"
-
-Or for using rsync over SSH
-
-	# git annex initremote myrsync type=rsync rsyncurl=ssh.example.com:/myrsync keyid=id@joeyh.name encryption=shared
-	# git annex describe myrsync "rsync server"
-
-## configuration
-
-These parameters can be passed to `git annex initremote` to configure rsync:
-
-* `rsyncurl` - Required. This is the url or `hostname:/directory` to 
-  pass to rsync to tell it where to store content.
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]].
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-* `shellescape` - Optional. Set to "no" to avoid shell escaping normally
-  done when using rsync over ssh. That escaping is needed with typical
-  setups, but not with some hosting providers that do not expose rsynced
-  filenames to the shell. You'll know you need this option if `git annex get`
-  from the special remote fails with an error message containing a single
-  quote (`'`) character. If that happens, you can run enableremote
-  setting shellescape=no.
-
-* `chunk` - Enables [[chunking]] when storing large files.  
-  This is typically not a win for rsync, so no need to enable it.
-  But, it makes this interoperate with the [[directory]] special remote.
-
-The `annex-rsync-options` git configuration setting can be used to pass
-parameters to rsync.
-
-## annex-rsync-transport
-
-You can use the `annex-rsync-transport` git configuration setting to choose
-whether we run rsync over ssh or rsh.  This setting is also used to specify
-parameters that git annex will pass to ssh/rsh.
-
-ssh is the default transport; if you'd like to run rsync over rsh, modify your
-.git/config to include
-
-        annex-rsync-transport = rsh
-
-under the appropriate remote.
-
-To pass parameters to ssh/rsh, include the parameters after "rsh" or
-"ssh".  For example, to configure ssh to use the private key at
-`/path/to/private/key`, specify
-
-         annex-rsync-transport = ssh -i /path/to/private/key
-
-Note that environment variables aren't expanded here, so for example, you
-cannot specify `-i $HOME/.ssh/private_key`.
diff --git a/doc/special_remotes/tahoe.mdwn b/doc/special_remotes/tahoe.mdwn
deleted file mode 100644
--- a/doc/special_remotes/tahoe.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-This special remote stores file contents using
-[Tahoe-LAFS](http://tahoe-lafs.org/). There are a number of commercial
-providers, or you can build your own tahoe storage grid.
-
-Since Tahoe-LAFS encrypts all data stored in it, git-annex does not do any
-additional encryption of its own.
-
-Note that data stored in a tahoe remote cannot be dropped from it, as 
-Tahoe-LAFS does not support removing data once it is stored in the Tahoe grid.
-This, along with Tahoe's ability to recover data when some nodes fail,
-makes a tahoe special remote an excellent choice for storing backups.
-
-Typically you will have an account on a Tahoe-LAFS storage grid, which
-is represented by an "introducer furl". You need to supply this to
-git-annex in the `TAHOE_FURL` environment variable when initializing the
-remote. git-annex will then generate a tahoe configuration directory for
-the remote under `~/.tahoe/git-annex/`, and automatically start the tahoe
-daemon as needed.
-
-## configuration
-
-These parameters can be passed to `git annex initremote` to configure
-the tahoe remote.
-
-* `shared-convergence-secret` - Optional. Can be useful to set to
-  allow tahoe to deduplicate information. By default, a new
-  shared-convergence-secret is created for each tahoe remote.
-
-* `embedcreds` - Optional. Set to "yes" embed the tahoe credentials 
-  (specifically the introducer-furl and shared-convergence-secret)
-  inside the git repository, which allows other clones to also use them
-  in order to access the tahoe grid.
-
-  Think carefully about who can access your git repository, and
-  whether you want to give them access to your tahoe system before
-  using embedcreds!
-
-Setup example:
-
-	# TAHOE_FURL=... git annex initremote tahoe type=tahoe embedcreds=yes
-
-## old version of tahoe special remote
-
-An older implementation of tahoe for git-annex used
-the hook special remote. It is not compatible with this newer
-implementation. See
-[[tahoe-lafs|forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs]].
diff --git a/doc/special_remotes/web.mdwn b/doc/special_remotes/web.mdwn
deleted file mode 100644
--- a/doc/special_remotes/web.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-git-annex can use the WWW as a special remote, downloading urls to files.
-See [[tips/using_the_web_as_a_special_remote]] for usage examples.
-
-## notes
-
-Currently git-annex only supports downloading content from the web; 
-it cannot upload to it or remove content.
-
-This special remote uses arbitrary urls on the web as the source for content.
-git-annex can also download content from a normal git remote, accessible by
-http.
diff --git a/doc/special_remotes/web/comment_1_0bd570025f6cd551349ea88a4729ac8e._comment b/doc/special_remotes/web/comment_1_0bd570025f6cd551349ea88a4729ac8e._comment
deleted file mode 100644
--- a/doc/special_remotes/web/comment_1_0bd570025f6cd551349ea88a4729ac8e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://olivier.berger.myopenid.com/"
- nickname="obergix"
- subject="Which URL prefix are supported ?"
- date="2013-08-17T08:44:05Z"
- content="""
-It is not clear whether only http:// URLs are supported. Can you list others ?
-"""]]
diff --git a/doc/special_remotes/web/comment_2_333141cc9ec6c26ffd19aa95303a91e3._comment b/doc/special_remotes/web/comment_2_333141cc9ec6c26ffd19aa95303a91e3._comment
deleted file mode 100644
--- a/doc/special_remotes/web/comment_2_333141cc9ec6c26ffd19aa95303a91e3._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="2001:4978:f:21a::2"
- subject="comment 2"
- date="2013-08-17T08:59:11Z"
- content="""
-When it says \"arbitrary urls\", it means it. The only requirement is that the url be well formed and that wget or whatever command you have it configured to use via annex.web-download-command knows how to download it.
-"""]]
diff --git a/doc/special_remotes/webdav.mdwn b/doc/special_remotes/webdav.mdwn
deleted file mode 100644
--- a/doc/special_remotes/webdav.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-This special remote type stores file contents in a WebDAV server.
-
-## configuration
-
-The environment variables `WEBDAV_USERNAME` and `WEBDAV_PASSWORD` are used
-to supply login credentials. You need to set these only when running
-`git annex initremote`, as they will be cached in a file only you 
-can read inside the local git repository.
-
-A number of parameters can be passed to `git annex initremote` to configure
-the webdav remote.
-
-* `encryption` - One of "none", "hybrid", "shared", or "pubkey".
-  See [[encryption]].
-
-* `keyid` - Specifies the gpg key to use for [[encryption]].
-
-* `embedcreds` - Optional. Set to "yes" embed the login credentials inside
-  the git repository, which allows other clones to also access them. This is
-  the default when gpg encryption is enabled; the credentials are stored
-  encrypted and only those with the repository's keys can access them.
-
-  It is not the default when using shared encryption, or no encryption.
-  Think carefully about who can access your repository before using
-  embedcreds without gpg encryption.
-
-* `url` - Required. The URL to the WebDAV directory where files will be
-  stored. This can be a subdirectory of a larger WebDAV repository, and will
-  be created as needed. Use of a https URL is strongly
-  encouraged, since HTTP basic authentication is used.
-
-* `chunk` - Enables [[chunking]] when storing large files.
-
-* `chunksize` - Deprecated version of chunk parameter above.  
-  Do not use for new remotes. It is not safe to change the chunksize
-  setting of an existing remote.
-
-Setup example:
-
-	# WEBDAV_USERNAME=id@joeyh.name WEBDAV_PASSWORD=xxxxxxx git annex initremote box.com type=webdav url=https://dav.box.com/dav/git-annex chunk=10mb keyid=id@joeyh.name
diff --git a/doc/special_remotes/xmpp.mdwn b/doc/special_remotes/xmpp.mdwn
deleted file mode 100644
--- a/doc/special_remotes/xmpp.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-XMPP (Jabber) is used by the [[assistant]] as a git remote. This is,
-technically not a git-annex special remote (large files are not transferred
-over XMPP; only git commits are sent).
-
-Typically XMPP will be set up using the web app, but here's how a manual
-set up could be accomplished:
-
-1. xmpp login credentials need to be stored in `.git/annex/creds/xmpp`.
-   Obviously this file should be mode 600. An example file:
-
-	XMPPCreds {xmppUsername = "joeyhess", xmppPassword = "xxxx", xmppHostname = "xmpp.l.google.com.", xmppPort = 5222, xmppJID = "joeyhess@gmail.com"}
-
-2. A git remote is created using a special url, of the form `xmpp::user@host`
-   For the above example, it would be `url = xmpp::joeyhess@gmail.com`
-
-3. The uuid of one of the other clients using XMPP should be configured
-   using the `annex.uuid` setting, the same as is set up for other remotes.
-
-With the above configuration, the [[assistant]] will use xmpp remotes much as
-any other git remote. Since XMPP requires a client that is continually running
-to see incoming pushes, the XMPP remote cannot be used with git at the
-command line.
-
-## XMPP server support status
-[[!table  data="""
-Provider|Status|Type|Notes
-[[Gmail|http://gmail.com]]|Working|?|Google Apps: [setup your SRV records](http://www.olark.com/gtalk/check_srv) or configure `.git/annex/creds/xmpp` manually
-[[Coderollers|http://www.coderollers.com/xmpp-server/]]|Working|[[Openfire|http://www.igniterealtime.org/projects/openfire/]]
-[[jabber.me|http://jabber.me/]]|Working|[[Tigase|http://www.tigase.org/]]
-[[xmpp.ru.net|https://www.xmpp.ru.net]]|Working|[[jabberd2|http://jabberd2.org/]]
-[[jabber.org|http://jabber.org]]|Working|[[Isode M-Link|http://www.isode.com/products/m-link.html]]
--|Working|[[Prosody|http://prosody.im/]]|No providers tested.
--|Working|[[Metronome|http://www.lightwitch.org/]]|No providers tested.
--|[[Failing|http://git-annex.branchable.com/forum/XMPP_authentication_failure/]]|ejabberd|[[Authentication bug|https://support.process-one.net/browse/EJAB-1632]]: Fixed in debian unstable (>= 2.1.10-5) and stable (>=2.1.10-4+deb7u1)
--|[[Failing|http://git-annex.branchable.com/forum/XMPP_authentication_failure/#comment-4ce5aeabd12ca3016290b3d8255f6ef1]]|jabberd14|No further information
-"""]]
-List of providers: [[http://xmpp.net/]]
-
-See also: [[xmpp_protocol_design_notes|design/assistant/xmpp]]
diff --git a/doc/special_remotes/xmpp/comment_1_568247938929a2934e8198fca80b7184._comment b/doc/special_remotes/xmpp/comment_1_568247938929a2934e8198fca80b7184._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_1_568247938929a2934e8198fca80b7184._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"
- nickname="Tobias"
- subject="User defined server"
- date="2013-04-17T09:45:59Z"
- content="""
-It would be nice if you could expand the XMPP setup in the assistant to support an \"advanced\" settings view where a custom server could be defined.
-
-Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.
-
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_2_9fc3f512020b7eb2591d6b7b2e8de2d7._comment b/doc/special_remotes/xmpp/comment_2_9fc3f512020b7eb2591d6b7b2e8de2d7._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_2_9fc3f512020b7eb2591d6b7b2e8de2d7._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"
- nickname="Andrew"
- subject="comment 2"
- date="2013-04-17T22:28:39Z"
- content="""
-Yeah, I agree, this would be nice. 
-
-For your own domain, you can configure DNS like this: [[http://support.google.com/a/bin/answer.py?hl=en&answer=34143]] to make XMPP find the right server. But for some that's not an option and the \"advanced\" mode would be useful in that case.
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_3_48ddbba1402d89acaea07cff747c48e0._comment b/doc/special_remotes/xmpp/comment_3_48ddbba1402d89acaea07cff747c48e0._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_3_48ddbba1402d89acaea07cff747c48e0._comment
+++ /dev/null
@@ -1,28 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="46.19.143.203"
- subject="Missing prerequisites for XMPP syncing?"
- date="2013-09-17T06:53:59Z"
- content="""
-I set up two fresh annexes that can talk via XMPP and no other way. After I fire up the assistants I expect them to sync their metadata, but nothing happens. One log gives me an 'XMPPClient: received: [\"Unknown message\"]' message every two minutes. The other one doesn't contain the string XMPP at all, not once. So my suspicion is that this particular version of git-annex doesn't support XMPP, which is weird because:
-
-    $ git annex version
-    git-annex version: 4.20130909
-    build flags: Assistant Pairing Testsuite S3 Inotify XMPP DNS Feeds
-    local repository version: 3
-    default repository version: 3
-    supported repository versions: 3 4
-    upgrade supported from repository versions: 0 1 2
-
-This is the version output from the other machine: 
-
-    $ git annex version
-    git-annex version: 4.20130827
-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-    local repository version: 3
-    default repository version: 3
-    supported repository versions: 3 4
-    upgrade supported from repository versions: 0 1 2
-
-What am I missing? Are there more build flags for XMPP than the one called XMPP? (Also, no, I can't just copy versions between machines b/c the architectures are different. And yep, the one giving me trouble is ARM.)
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_4_59857879abaae22bde444a215e00bf18._comment b/doc/special_remotes/xmpp/comment_4_59857879abaae22bde444a215e00bf18._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_4_59857879abaae22bde444a215e00bf18._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.14.105"
- subject="comment 4"
- date="2013-09-19T21:07:35Z"
- content="""
-If you have the XMPP flag in your git-annex build, it will support XMPP. Are you sure you set up the xmpp creds file and the xmpp special remote correctly on the ARM machine? (I assume it has no webapp, so you had to set that up manually..)
-
-Here's how you can do that manually:
-
-1. Run git-annex on a machine with the webapp, set up XMPP, and copy the .git/annex/creds/xmpp to the machine without the webapp.
-2. On the machine without the webapp, add a git remote that has its \"url = xmpp::loginname@xmppserver.com\" and its annex-uuid set to the annex.uuid of the repository on the first machine.
-3. Run git-annex assistant on the machine without the webapp.
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_5_583ee374bd34fcc9ae26c2fd690e8c47._comment b/doc/special_remotes/xmpp/comment_5_583ee374bd34fcc9ae26c2fd690e8c47._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_5_583ee374bd34fcc9ae26c2fd690e8c47._comment
+++ /dev/null
@@ -1,73 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="37.221.161.234"
- subject="Nope"
- date="2013-09-24T22:05:55Z"
- content="""
-Your guess is right, Joey, I'm configuring by hand as the ARM machine has no webapp. And yes, I'm mostly sure I set up everything correctly. The XMPP account is working, and my configuration of git-annex is all but identical to your example.
-
-Here's what I do. First on the machine with the webapp:
-
-    mkdir ~/test
-    cd ~/test
-    git init
-    git annex init
-    git annex webapp
-
-I set up XMPP from within the webapp. The file ~/test/.git/annex/creds/xmpp is created with the correct credentials. (BTW: The file's default permissions are 620 instead of 600 - is that a bug?)
-
-I add a file or two to the annex for good measure. Then, on the ARM machine:
-
-    mkdir ~/test
-    cd ~/test
-    git init
-    git annex init
-    mkdir .git/annex/creds
-    scp -2 webappmachine:~/test/.git/annex/creds/xmpp .git/annex/creds 
-    chmod 600 .git/annex/creds/xmpp
-    git remote add webappmachine xmpp::login@server
-
-The final step is to edit .git/config on the ARM machine. The [remote] section now looks like this:
-
-    [remote \"webappmachine\"]
-        url = xmpp::login@server
-        fetch = +refs/heads/*:refs/remotes/webappmachine/*
-        annex-uuid = aaaaaaaa-bbbb-cccc-dddddddddddd
-
-where aaaaaaaa-bbbb-cccc-dddddddddddd is the return value of `git config --get annex.uuid` on the webapp machine.
-
-I then run `git annex assistant` on the ARM machine and expect the two machines to synchronize their metadata, e.g. the number of knownn annex keys in the repo. But it doesn't happen.
-
-So I set `debug = true`, restart the assistants and check the log. This is what I get on the webapp machine:
-
-    [2013-09-24 17:45:41 EDT] XMPPClient: connected a5/25577ac4-3248-4c83-8391-bd93708bcf2b
-    [2013-09-24 17:45:41 EDT] XMPPClient: received: [\"Presence from a5/dc9bcde8-fe18-47de-807c-c620019279f2 Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [(Name {nameLocalName = \\"query\\", nameNamespace = Nothing, namePrefix = Nothing},[ContentText \\"\\"])], elementNodes = []})\",\"QueryPresence\"]
-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Presence from a5/900e3b6e-a7f4-4a6a-8d12-ed94de429258 Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [(Name {nameLocalName = \\"push\\", nameNamespace = Nothing, namePrefix = Nothing},[ContentText \\"43357474-abbb-4667-a334-e4615ea6d4a2\\"])], elementNodes = []})\",\"NotifyPush [UUID \\"43357474-abbb-4667-a334-e4615ea6d4a2\\"]\"]
-    [2013-09-24 17:45:42 EDT] XMPPClient: push notification for
-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"symbolic-ref\",\"HEAD\"]
-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"refs/heads/master\"]
-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Pushing \\"a59\\" (CanPush (UUID \\"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\\") [34f875cc7fa1198414f93990af9ab78e6cee893e,6fad42234060361435d6cf2ab4bd40e438c2d05c])\"]
-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"git-annex\"]
-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"--hash\",\"refs/heads/git-annex\"]
-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"log\",\"refs/heads/git-annex..6fad42234060361435d6cf2ab4bd40e438c2d05c\",\"--oneline\",\"-n1\"]
-    [2013-09-24 17:45:42 EDT] chat: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"cat-file\",\"--batch\"]
-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Ignorable Presence from a5/25577ac4-3248-4c83-8391-bd93708bcf2b Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})\"]
-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Unknown message\"]
-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Pushing \\"a59\\" (PushRequest (UUID \\"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\\"))\"]
-    [2013-09-24 17:45:42 EDT] XMPPSendPack: started running push Pushing \"a59\" (PushRequest (UUID \"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\"))
-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"symbolic-ref\",\"HEAD\"]
-    [2013-09-24 17:45:42 EDT] XMPPClient: received: [\"Ignorable Presence from a5/25577ac4-3248-4c83-8391-bd93708bcf2b Just (Element {elementName = Name {nameLocalName = \\"git-annex\\", nameNamespace = Just \\"git-annex\\", namePrefix = Nothing}, elementAttributes = [], elementNodes = []})\"]
-    [2013-09-24 17:45:42 EDT] read: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"show-ref\",\"refs/heads/master\"]
-    [2013-09-24 17:45:42 EDT] call: git [\"--git-dir=/home/pi/test/.git\",\"--work-tree=/home/pi/test\",\"branch\",\"-f\",\"synced/master\"]
-    [2013-09-24 17:45:42 EDT] XMPPSendPack: finished running push Pushing \"a59\" (PushRequest (UUID \"d50c4cc9-e7c0-4ef0-84c6-f11012051eb9\")) False
-
-And from then on, in two-minute intervals:
-
-    [2013-09-24 17:47:42 EDT] XMPPClient: received: [\"Unknown message\"]
-    [2013-09-24 17:49:42 EDT] XMPPClient: received: [\"Unknown message\"]
-    [2013-09-24 17:51:42 EDT] XMPPClient: received: [\"Unknown message\"]
-    
-The log on the ARM machine is rather unhelpful. Actually it doesn't even contain the string \"XMPP\". This looks to me like the webapp machine tries to communicate via Jabber but doesn't get any intelligible answer. And this is the reason I wondered whether the problem lies with my self-compiled ARM git-annex  binary. I actually spent a while compiling 4.20130909 with all flags but webapp and webdav, but the result is still the same. 
-
-Any other ideas what I'm doing wrong here?
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_6_8f0b5bba1271d031a67e7f0c175d67d5._comment b/doc/special_remotes/xmpp/comment_6_8f0b5bba1271d031a67e7f0c175d67d5._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_6_8f0b5bba1271d031a67e7f0c175d67d5._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.152.108.220"
- subject="comment 6"
- date="2013-09-25T18:13:24Z"
- content="""
-If you're not getting an \"XMPPClient: connected\", then my guess would be that your git-annex build's XMPP is screwed up somehow. For example, if it hung forever when connecting to the XMPP server, it would never get as far as printing that message. (If it tried and failed to connect, you'd get a message about the connection having failed.)
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_7_ac7acbded03325b015959d82ae77faf1._comment b/doc/special_remotes/xmpp/comment_7_ac7acbded03325b015959d82ae77faf1._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_7_ac7acbded03325b015959d82ae77faf1._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="RaspberryPie"
- ip="46.165.221.166"
- subject="comment 7"
- date="2013-09-26T03:46:18Z"
- content="""
-I see. Is there a way to check whether the build is corrupt? The build logs gave me nothing. 
-
-Anyway, XMPP is not the most important feature to me. It still bugs me though that it doesn't work when it should.  
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_8_81a9636a1e8a36a58185468a26f8633d._comment b/doc/special_remotes/xmpp/comment_8_81a9636a1e8a36a58185468a26f8633d._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_8_81a9636a1e8a36a58185468a26f8633d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"
- nickname="Carlo"
- subject="comment 8"
- date="2013-10-22T14:30:58Z"
- content="""
-Same setup, same problem... no log output on raspberry pi.
-"""]]
diff --git a/doc/special_remotes/xmpp/comment_9_eda76b826491c96b1ce072aacf9d3adf._comment b/doc/special_remotes/xmpp/comment_9_eda76b826491c96b1ce072aacf9d3adf._comment
deleted file mode 100644
--- a/doc/special_remotes/xmpp/comment_9_eda76b826491c96b1ce072aacf9d3adf._comment
+++ /dev/null
@@ -1,23 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4"
- nickname="Jörn"
- subject="Same problem, no XMPP showing up in daemon.log"
- date="2013-11-21T21:13:16Z"
- content="""
-I have the same setup like @RaspberryPie, except that my server is not running on the Pi but on Debian7-amd64. On my client (OSX, self-compiled using cabal) I can see XMPP log entries like @RaspberryPi, however, on the Debian7 machine (also self-compiled) I do not see any XMPP entry in the daemon.log. Setup regarding .git/annex/creds/xmpp and the special xmpp remote is correct (checked a thousand times).
-
-Do you have any idea what could be wrong, Joey? Thanks a lot.
-
-Output of git annex version:
-
-    git-annex version: 5.20131120
-    build flags: Assistant Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS Feeds Quvi CryptoHash 
-    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-    remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
-    local repository version: 4
-    default repository version: 3
-    supported repository versions: 3 5
-    upgrade supported from repository versions: 0 1 2 4
-
-Jörn
-"""]]
diff --git a/doc/stickers.mdwn b/doc/stickers.mdwn
deleted file mode 100644
--- a/doc/stickers.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Hexagonal sticker design using the [[logo]] with add-on tiles to expand
-the annex.
-
-[[stickers/hex.svg]]
-[download hex.svg](hex.svg)
-
-[[stickers/hexdemos.svg]]
-[download hexdemos.svg](hexdemos.svg)
-
-This complies with <https://github.com/terinjokes/StickerConstructorSpec/>
-and so is intended to combine with other hexagonal stickers.
-
-Some of the add-on tiles contain enough white-space to add other art work
-as desired.
-
-It includes some smaller tiles that can bridge between hexagonal and
-square/regtangular stickers, as illustrated in
-<https://github.com/terinjokes/StickerConstructorSpec/issues/13>.
-
-License: Same as git-annex [[logo]]; Joey would appreciate spare 
-git-annex stickers mailed his way, but does not require it. ;)
diff --git a/doc/stickers/comment_1_96f9b35048793c1cc0902cced82b65c5._comment b/doc/stickers/comment_1_96f9b35048793c1cc0902cced82b65c5._comment
deleted file mode 100644
--- a/doc/stickers/comment_1_96f9b35048793c1cc0902cced82b65c5._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="http://bret.io/"
- subject="Woo!  "
- date="2015-11-19T23:48:01Z"
- content="""
-Rad! Cant wait to add it to:
-
-<img src=\"https://camo.githubusercontent.com/0133cd5cab79bd8e9945d0e89337e2041d157076/68747470733a2f2f63312e737461746963666c69636b722e636f6d2f312f3732302f32313339393337353133395f303564383938316231395f622e6a7067\" height=\"400\">
-
-I like the idea of adapters too :)
-
-https://www.stickermule.com/ and https://hexi.pics/help_en both print high quality spec compliant stickers.
-"""]]
diff --git a/doc/stickers/comment_2_39cfee29eae5e69d88d84b2c65eb83fe._comment b/doc/stickers/comment_2_39cfee29eae5e69d88d84b2c65eb83fe._comment
deleted file mode 100644
--- a/doc/stickers/comment_2_39cfee29eae5e69d88d84b2c65eb83fe._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="CandyAngel"
- subject="comment 2"
- date="2015-11-20T08:37:39Z"
- content="""
-I don't usually like any decals on my stuff.. but I've never come across this before and it looks interesting. I'm really tempted..
-
-However, I wouldn't be able to do it without having some nice way of dealing with tolerance stacking. The overlapping stickers (bottom-right) on the photo above would drive me mad! :)
-
-I went ahead and [raised an issue](https://github.com/terinjokes/StickerConstructorSpec/issues/18) in case they want to deal with this in the specification by having a(some?) guide specification(s) too.
-"""]]
diff --git a/doc/stickers/hex.svg b/doc/stickers/hex.svg
deleted file mode 100644
--- a/doc/stickers/hex.svg
+++ /dev/null
@@ -1,1017 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="220mm"
-   height="110mm"
-   viewBox="0 0 779.52757 389.76378"
-   id="svg5535"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="hex.svg">
-  <defs
-     id="defs5537">
-    <clipPath
-       id="clip1">
-      <path
-         inkscape:connector-curvature="0"
-         d="m 0,340.15625 481.89062,0 L 481.89062,0 0,0 0,340.15625 Z m 0,0"
-         id="path7" />
-    </clipPath>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.32"
-     inkscape:cx="201.37678"
-     inkscape:cy="300.86122"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     showguides="true"
-     inkscape:window-width="800"
-     inkscape:window-height="730"
-     inkscape:window-x="0"
-     inkscape:window-y="12"
-     inkscape:window-maximized="0"
-     units="mm">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3730" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata5540">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="guides"
-     style="display:inline"
-     transform="translate(0,-662.59842)">
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 325.6126,1538.1481 518.7035,1339.6027"
-       id="path4177"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 325.8853,1538.6936 76.9091,-132.8182"
-       id="path3841"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 401.9762,1538.9663 325.3398,1405.0572"
-       id="path3843"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 401.4307,1538.6936 209.9762,1338.5118"
-       id="path4179"
-       inkscape:connector-curvature="0" />
-    <path
-       style="display:none;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 231.27273,631.81675 153.81818,498.18039"
-       id="path3851"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 441.2489,1339.0572 c 0.5455,268.3636 0.5455,268.3636 0.5455,268.3636"
-       id="path4171"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 171.7944,1404.5118 153.2727,1.0909"
-       id="path3849"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 286.8853,1339.0572 -76.9091,133.0909"
-       id="path3847"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path4193"
-       d="m 517.4996,1338.5586 c 0.5454,268.3636 0.5454,268.3636 0.5454,268.3636"
-       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 479.6507,1539.6233 0,-220.6174"
-       id="path4232"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 441.0812,1472.8981 77.5246,133.0646"
-       id="path4230"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 517.0631,1472.8981 c -75.2105,133.4503 -75.2105,133.4503 -75.2105,133.4503"
-       id="path4228"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 516.5216,1472.1481 326.158,1272.5118"
-       id="path4293"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 287.1891,1472.5124 210.8215,1338.2907"
-       id="path4314"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 632.7035,1273.0572 C 442.3398,1472.6936 442.3398,1472.6936 442.3398,1472.6936"
-       id="path4310"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 210.0502,1472.5124 402.5118,1273.1083"
-       id="path4325"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 287.5748,1207.9259 -77.1389,263.0437"
-       id="path4341"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 94.7275,1271.1798 286.032,1472.5124"
-       id="path4339"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 305.4307,1372.3299 -121.6363,69.8182"
-       id="path4367"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 249.2489,1405.0572 0,80.7273"
-       id="path4365"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="304.93979"
-       y="592.7428"
-       id="text5006"
-       sodipodi:linespacing="50%"><tspan
-         sodipodi:role="line"
-         id="tspan5010"
-         x="304.93979"
-         y="592.7428" /></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot5012"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
-         id="flowRegion5014"><rect
-           id="rect5016"
-           width="132.58252"
-           height="37.565048"
-           x="174.56699"
-           y="544.12921" /></flowRegion><flowPara
-         id="flowPara5018" /></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot5020"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
-         id="flowRegion5022"><rect
-           id="rect5024"
-           width="159.09903"
-           height="70.710678"
-           x="150.26019"
-           y="519.82239" /></flowRegion><flowPara
-         id="flowPara5026" /></flowRoot>    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:50%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="243.06796"
-       y="583.90393"
-       id="text5028"
-       sodipodi:linespacing="50%"><tspan
-         sodipodi:role="line"
-         id="tspan5030"
-         x="243.06796"
-         y="583.90393" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="303.64539"
-       y="1196.0898"
-       id="text5032"
-       sodipodi:linespacing="100%"><tspan
-         sodipodi:role="line"
-         id="tspan5034"
-         x="303.64539"
-         y="1196.0898">workshop</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:80.00000119%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="795.43005"
-       y="817.12488"
-       id="text5052"
-       sodipodi:linespacing="80.000001%"><tspan
-         sodipodi:role="line"
-         id="tspan5054"
-         x="795.43005"
-         y="817.12488">&lt;- cut</tspan><tspan
-         sodipodi:role="line"
-         x="795.43005"
-         y="835.12488"
-         id="tspan5056">after</tspan><tspan
-         sodipodi:role="line"
-         x="795.43005"
-         y="853.12488"
-         id="tspan5058">printing -&gt;</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="834.16504"
-       y="53.573872"
-       id="text5060"
-       sodipodi:linespacing="100%"><tspan
-         sodipodi:role="line"
-         id="tspan5062"
-         x="834.16504"
-         y="53.573872" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="1068.3942"
-       y="556.28259"
-       id="text5064"
-       sodipodi:linespacing="100%"><tspan
-         sodipodi:role="line"
-         id="tspan5066"
-         x="1068.3942"
-         y="556.28259" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="31.25"
-       y="1105.4872"
-       id="text3511"
-       sodipodi:linespacing="100%"><tspan
-         sodipodi:role="line"
-         id="tspan3513"
-         x="31.25"
-         y="1105.4872">(remove yellow borders before printing)</tspan></text>
-  </g>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-662.59842)">
-    <path
-       d="m 288.0751,1205.5751 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path3770"
-       inkscape:connector-curvature="0" />
-    <path
-       d="m 172.3513,1271.5836 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path3772"
-       inkscape:connector-curvature="0" />
-    <path
-       d="m 403.2324,1272.7809 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path3776"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path3780"
-       style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 403.0232,1405.6381 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z" />
-    <path
-       d="m 518.2852,1472.9918 -77.0087,0 -38.505,66.6925 38.505,66.6925 77.0087,0 38.505,-66.6925 -38.505,-66.6925 z"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path3782"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccccccccccccccccc"
-       id="path1927"
-       d="m 361.244,1519.695 c -4.9886,-0.6427 -10.1226,-5.3595 -10.8399,-10.8931 -0.6879,-4.6263 0.3046,-10.0263 4.1288,-13.0794 1.6773,-1.1432 3.959,-2.4242 5.971,-2.2718 0.06,2.0481 -0.06,4.5376 0,6.5857 -2.3965,0.2668 -4.7163,2.9908 -4.6681,5.4849 0.059,3.2457 1.4952,6.2278 4.6179,7.1992 3.4541,1.1622 7.4079,0.8316 10.6054,-1.1006 2.6413,-2.058 2.8857,-5.8898 1.5042,-8.8058 -0.6214,-1.6046 -1.961,-2.7827 -3.7792,-2.7777 l 0,5.7124 -5.1268,0 0,-12.2981 15.5251,0 0,4.4225 -4.2524,0.039 c 3.9682,2.2621 4.3749,7.1442 4.1716,10.5313 0.1429,5.8185 -5.6054,10.5624 -11.3067,11.1967 -2.0627,0.1546 -3.808,0.1628 -6.5509,0.054 z"
-       style="fill:#000000;fill-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccc"
-       id="path1925"
-       d="m 350.1524,1491.0078 -0.033,-6.454 29.1036,0 0,6.485 -29.0677,-0.031 z"
-       style="fill:#40bf4c;fill-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccccccccccc"
-       id="path1917"
-       d="m 361.2446,1482.2867 0,-6.9069 -11.283,0 0,-6.0105 11.283,0 0,-7.7504 6.7486,0 0,7.7504 11.2302,0 0,6.0105 -11.2302,0 -0.1112,6.8925 -6.6374,0.014 z"
-       style="fill:#ff0000;fill-opacity:1" />
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m 421.0825,1439.8168 1.0226,11.5259 -3.2195,-1.897 c -0.535,0.8922 -1.1307,1.7304 -1.7687,2.5149 l -4.6621,-3.5184 c 0.4505,-0.5552 0.8728,-1.4186 1.2524,-2.0477 l -3.2025,-1.887 z"
-       id="path2836"
-       sodipodi:nodetypes="cccccccc"
-       inkscape:transform-center-x="-7.5938808"
-       inkscape:transform-center-y="-14.892703" />
-    <path
-       sodipodi:nodetypes="cc"
-       inkscape:connector-curvature="0"
-       id="path4173"
-       d="m 381.5079,1472.0799 c 13.1692,0.9841 18.358,-2.9516 32.181,-19.8195"
-       style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-    <path
-       inkscape:transform-center-y="-14.892703"
-       inkscape:transform-center-x="-7.5938808"
-       sodipodi:nodetypes="cccccccc"
-       id="path4234"
-       d="m 421.0825,1439.8168 1.0226,11.5259 -3.2195,-1.897 c -0.535,0.8922 -1.1307,1.7304 -1.7687,2.5149 l -4.6621,-3.5184 c 0.4505,-0.5552 0.8728,-1.4186 1.2524,-2.0477 l -3.2025,-1.887 z"
-       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:transform-center-y="-14.892703"
-       inkscape:transform-center-x="-7.5938808"
-       sodipodi:nodetypes="cccccccc"
-       id="path4234-6"
-       d="m 421.0825,1439.8168 1.0226,11.5259 -3.2195,-1.897 c -0.535,0.8922 -1.1307,1.7304 -1.7687,2.5149 l -4.6621,-3.5184 c 0.4505,-0.5552 0.8728,-1.4186 1.2524,-2.0477 l -3.2025,-1.887 z"
-       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g4200"
-       transform="matrix(-1,0,0,1,672.584,839.94568)">
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
-         id="path4202"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-7.5938808"
-         inkscape:transform-center-y="-14.892703" />
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4204"
-         d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="295"
-       y="612.36218"
-       id="text4210"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4214"
-         x="295"
-         y="612.36218" /></text>
-    <g
-       id="g4296"
-       transform="translate(56.158,839.78592)">
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path3369"
-         d="m 368.32919,596.00324 c 16.28841,-12.44463 11.95901,-34.92532 5.48374,-49.13832"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 366.86495,534.32461 10.72674,4.33949 -3.1552,2.00212 c 0.55054,0.88265 1.02545,1.79476 1.43327,2.72001 l -5.25579,2.54784 c -0.28914,-0.65386 -0.86528,-1.4231 -1.25249,-2.04757 l -3.13851,1.99153 z"
-         id="path4288"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-4.9547788"
-         inkscape:transform-center-y="-2.0479419" />
-    </g>
-    <g
-       id="g4268"
-       transform="translate(78.15537,281.85591)">
-      <path
-         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path3778"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g4262">
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4264"
-           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-        <path
-           inkscape:transform-center-y="-18.010798"
-           inkscape:transform-center-x="0.7747508"
-           sodipodi:nodetypes="cccccccc"
-           id="path4266"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="g4278"
-       transform="matrix(-1,0,0,1,682.6161,291.09305)">
-      <g
-         id="g4865">
-        <path
-           transform="matrix(-1,0,0,1,646.48904,412.98535)"
-           inkscape:connector-curvature="0"
-           id="path4276"
-           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m 183.90007,86.85828 77.00875,0 38.505,66.6925 -38.505,66.6925 -77.00875,0 -38.505,-66.6925 38.505,-66.6925 z" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
-           id="path4280"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           id="path4282"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="0.7747508"
-           inkscape:transform-center-y="-18.010798" />
-      </g>
-      <g
-         id="g4870">
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4874"
-           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-        <path
-           inkscape:transform-center-y="-18.010798"
-           inkscape:transform-center-x="0.7747508"
-           sodipodi:nodetypes="cccccccc"
-           id="path4876"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <path
-       inkscape:connector-curvature="0"
-       id="path4286"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 518.3442,1339.9866 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z" />
-    <g
-       id="g4300"
-       transform="matrix(-1,0,0,1,903.4486,839.49381)">
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-         d="m 368.32919,596.00324 c 16.28841,-12.44463 11.95901,-34.92532 5.48374,-49.13832"
-         id="path4302"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:transform-center-y="-2.0479419"
-         inkscape:transform-center-x="-4.9547788"
-         sodipodi:nodetypes="cccccccc"
-         id="path4304"
-         d="m 366.86495,534.32461 10.72674,4.33949 -3.1552,2.00212 c 0.55054,0.88265 1.02545,1.79476 1.43327,2.72001 l -5.25579,2.54784 c -0.28914,-0.65386 -0.86528,-1.4231 -1.25249,-2.04757 l -3.13851,1.99153 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       inkscape:connector-curvature="0"
-       id="path4306"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 633.9707,1406.4858 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z" />
-    <path
-       d="m 633.9707,1273.1689 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path4308"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g4329" />
-    <g
-       id="g4353" />
-    <g
-       id="g4386"
-       transform="translate(56.158,839.78592)">
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-         d="m 368.32919,596.00324 c 16.28841,-12.44463 11.95901,-34.92532 5.48374,-49.13832"
-         id="path4388"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:transform-center-y="-2.0479419"
-         inkscape:transform-center-x="-4.9547788"
-         sodipodi:nodetypes="cccccccc"
-         id="path4390"
-         d="m 366.86495,534.32461 10.72674,4.33949 -3.1552,2.00212 c 0.55054,0.88265 1.02545,1.79476 1.43327,2.72001 l -5.25579,2.54784 c -0.28914,-0.65386 -0.86528,-1.4231 -1.25249,-2.04757 l -3.13851,1.99153 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="g4400"
-       transform="translate(391.60209,6.75397)">
-      <g
-         transform="translate(111.34978,210.75404)"
-         id="g4375">
-        <path
-           d="m 231.07321,499.9747 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
-           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path626"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4319"
-           d="m 249.29398,597.77999 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 249.2985,533.94593 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
-           id="path4321"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="-0.8537788"
-           inkscape:transform-center-y="-5.2672031" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-           d="m 192.65946,503.68994 c -5.55525,6.2109 -9.2174,75.03571 -47.31146,41.52113"
-           id="path4347"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:transform-center-y="-5.2672031"
-           inkscape:transform-center-x="-0.8537788"
-           sodipodi:nodetypes="cccccccc"
-           id="path4349"
-           d="m 136.1536,533.7696 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-           d="m 137.82586,596.30242 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
-           id="path4359"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:transform-center-y="-1.9921231"
-           inkscape:transform-center-x="3.1470162"
-           sodipodi:nodetypes="cccccccc"
-           id="path4361"
-           d="m 192.94014,632.35933 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.83015,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4394"
-         d="m 342.11112,710.63678 -39.34085,66.72517"
-         style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4396"
-         d="m 226.78843,777.74764 75.98184,-0.3857"
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4398"
-         d="M 342.11112,843.70142 303.54166,777.36195"
-         style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-    <g
-       transform="translate(245.16964,204.81767)"
-       id="g4622">
-      <path
-         d="m 175.5925,655.30669 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
-         style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path4624"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1"
-         d="m 133.81328,769.36362 c -4.98858,-0.64265 -10.12259,-5.35945 -10.83989,-10.89312 -0.68794,-4.62623 0.30456,-10.02623 4.12875,-13.07935 1.67733,-1.14327 3.959,-2.42422 5.97107,-2.27178 0.0603,2.0481 -0.0603,4.53751 0,6.58561 -2.39655,0.26682 -4.71638,2.99081 -4.6681,5.48492 0.0587,3.24569 1.4952,6.2278 4.61788,7.1992 3.45403,1.16223 7.40791,0.83167 10.60533,-1.10057 2.64137,-2.05802 2.88574,-5.8898 1.50423,-8.8058 -0.62143,-1.60464 -1.96101,-2.78268 -3.77919,-2.77775 l 0,5.71246 -5.12679,0 0,-12.29807 15.52512,0 0,4.42245 -4.25241,0.0393 c 3.96819,2.26207 4.37493,7.14424 4.17158,10.53133 0.14295,5.81845 -5.6054,10.56238 -11.30674,11.19666 -2.06269,0.15465 -3.80795,0.16279 -6.55084,0.0545 z"
-         id="path4626"
-         sodipodi:nodetypes="ccccccccccccccccccc"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#40bf4c;fill-opacity:1"
-         d="m 122.72168,740.67638 -0.0326,-6.45396 29.10361,0 -0.003,6.48504 -29.06768,-0.0311 z"
-         id="path4628"
-         sodipodi:nodetypes="ccccc"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#ff0000;fill-opacity:1"
-         d="m 133.81384,731.95529 0,-6.90684 -11.28293,0 0,-6.01053 11.28293,0 0,-7.75042 6.74866,0 0,7.75042 11.2302,0 0,6.01053 -11.2302,0 -0.11125,6.89243 -6.63741,0.0144 z"
-         id="path4630"
-         sodipodi:nodetypes="ccccccccccccc"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-         d="m 154.07714,721.74852 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
-         id="path4632"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 193.65177,689.48539 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
-         id="path4634"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-7.5938808"
-         inkscape:transform-center-y="-14.892703" />
-      <g
-         transform="matrix(-1,0,0,1,445.15327,89.614307)"
-         id="g4636">
-        <path
-           inkscape:transform-center-y="-14.892703"
-           inkscape:transform-center-x="-7.5938808"
-           sodipodi:nodetypes="cccccccc"
-           id="path4638"
-           d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-           d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
-           id="path4640"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-      </g>
-    </g>
-    <g
-       transform="translate(1119.7747,19.39156)"
-       id="g4642">
-      <g
-         id="g4644"
-         transform="translate(77.454547,62.727274)">
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4646"
-           d="m -106.81811,732.93789 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m -106.81359,669.10383 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
-           id="path4648"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="-0.8537788"
-           inkscape:transform-center-y="-5.2672031" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m -125.35075,635.04064 -39.34085,66.72517"
-           id="path4650"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m -125.35075,768.10528 -38.56946,-66.33947"
-           id="path4652"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-      </g>
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#f9ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m -48.545453,698.36219 39.272726,65.45455 -38.727276,66"
-         id="path4654"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="translate(1120.3201,-101.15389)"
-       id="g4656">
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-         d="m -97.179901,820.75693 c -5.555249,6.2109 -9.217399,75.03571 -47.311459,41.52113"
-         id="path4658"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:transform-center-y="-5.2672031"
-         inkscape:transform-center-x="-0.8537788"
-         sodipodi:nodetypes="cccccccc"
-         id="path4660"
-         d="m -153.68576,850.83659 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m -174.40071,884.06059 75.981839,-0.3857"
-         id="path4662"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4664"
-         d="m -99.000001,883.54402 39.81818,-66.81819"
-         style="fill:none;fill-rule:evenodd;stroke:#fff700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4666"
-         d="m -59.463711,816.94972 -76.753229,0 -38.56946,66.33948"
-         style="fill:none;fill-rule:evenodd;stroke:#f0ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    </g>
-    <g
-       transform="translate(1121.9565,-101.69934)"
-       id="g4668">
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-         d="m -156.10441,923.00578 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
-         id="path4670"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:transform-center-y="-1.9921231"
-         inkscape:transform-center-x="3.1470162"
-         sodipodi:nodetypes="cccccccc"
-         id="path4672"
-         d="m -100.99013,959.06269 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.830147,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m -178.49162,893.69696 75.98184,-0.3857"
-         id="path4674"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4676"
-         d="m -103.90909,893.18039 40.909087,67.09091"
-         style="fill:none;fill-rule:evenodd;stroke:#f3ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4678"
-         d="m -178.63637,893.72584 39.27273,66.81818 76.363637,-0.54545"
-         style="fill:none;fill-rule:evenodd;stroke:#ffe800;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    </g>
-    <g
-       id="g4722"
-       transform="translate(-68.56602,362.48887)">
-      <path
-         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path4384"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:nodetypes="csc"
-         inkscape:connector-curvature="0"
-         id="path4692"
-         d="m 248.23414,597.36687 c -12.08969,-7.29009 -21.44443,-80.08465 -50.01457,-3.56579 -18.39769,49.27419 -42.43019,-41.02463 -51.52732,-48.47894"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
-         id="path4694"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-0.4755438"
-         inkscape:transform-center-y="-5.8683169" />
-    </g>
-    <g
-       id="g4711"
-       transform="matrix(-1,0,0,1,318.82406,215.12694)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4713"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-         d="m 248.23414,597.36687 c -12.08969,-7.29009 -18.12987,-116.54484 -46.70001,-40.02598 -18.39769,49.27419 -45.74475,-4.56444 -54.84188,-12.01875"
-         id="path4715"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="csc" />
-      <path
-         inkscape:transform-center-y="-5.8683169"
-         inkscape:transform-center-x="-0.4755438"
-         sodipodi:nodetypes="cccccccc"
-         id="path4717"
-         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(-1,0,0,1,991.43724,158.30858)"
-       id="g4743">
-      <g
-         id="g4745"
-         transform="translate(111.34978,210.75404)">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4747"
-           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m 231.07321,499.9747 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-           d="m 249.29398,597.77999 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
-           id="path4749"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:transform-center-y="-5.2672031"
-           inkscape:transform-center-x="-0.8537788"
-           sodipodi:nodetypes="cccccccc"
-           id="path4751"
-           d="m 249.2985,533.94593 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4753"
-           d="m 192.65946,503.68994 c -5.55525,6.2109 -9.2174,75.03571 -47.31146,41.52113"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 136.1536,533.7696 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
-           id="path4755"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="-0.8537788"
-           inkscape:transform-center-y="-5.2672031" />
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4757"
-           d="m 137.82586,596.30242 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 192.94014,632.35933 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.83015,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
-           id="path4759"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="3.1470162"
-           inkscape:transform-center-y="-1.9921231" />
-      </g>
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 342.11112,710.63678 -39.34085,66.72517"
-         id="path4761"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 226.78843,777.74764 75.98184,-0.3857"
-         id="path4763"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="M 342.11112,843.70142 303.54166,777.36195"
-         id="path4765"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-    </g>
-    <g
-       id="g4767"
-       transform="matrix(-1,0,0,1,926.46374,167.44204)">
-      <g
-         transform="translate(77.454547,62.727274)"
-         id="g4769">
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-           d="m -106.81811,732.93789 c -7.62767,-9.76104 -74.35507,-18.74907 -10.66556,-55.41105"
-           id="path4771"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:transform-center-y="-5.2672031"
-           inkscape:transform-center-x="-0.8537788"
-           sodipodi:nodetypes="cccccccc"
-           id="path4773"
-           d="m -106.81359,669.10383 -3.05391,11.16099 -2.35772,-2.89913 c -0.81214,0.65008 -1.66238,1.2285 -2.53352,1.74184 l -3.14561,-4.92138 c 0.61552,-0.36371 1.31203,-1.02593 1.88688,-1.48358 l -2.34526,-2.88379 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4775"
-           d="m -125.35075,635.04064 -39.34085,66.72517"
-           style="fill:none;fill-rule:evenodd;stroke:#f8ff00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4777"
-           d="m -125.35075,768.10528 -38.56946,-66.33947"
-           style="fill:none;fill-rule:evenodd;stroke:#ffe900;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         id="path4779"
-         d="m -48.545453,698.36219 39.272726,65.45455 -38.727276,66"
-         style="fill:none;fill-rule:evenodd;stroke:#f9ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    </g>
-    <g
-       id="g4781"
-       transform="matrix(-1,0,0,1,925.91828,46.89659)">
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4783"
-         d="m -97.179901,820.75693 c -5.555249,6.2109 -9.217399,75.03571 -47.311459,41.52113"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m -153.68576,850.83659 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
-         id="path4785"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-0.8537788"
-         inkscape:transform-center-y="-5.2672031" />
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4787"
-         d="m -174.40071,884.06059 75.981839,-0.3857"
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#fff700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m -99.000001,883.54402 39.81818,-66.81819"
-         id="path4789"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#f0ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m -59.463711,816.94972 -76.753229,0 -38.56946,66.33948"
-         id="path4791"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="g4793"
-       transform="matrix(-1,0,0,1,924.28192,46.35114)">
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4795"
-         d="m -156.10441,923.00578 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m -100.99013,959.06269 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.830147,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
-         id="path4797"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="3.1470162"
-         inkscape:transform-center-y="-1.9921231" />
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4799"
-         d="m -178.49162,893.69696 75.98184,-0.3857"
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#f3ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m -103.90909,893.18039 40.909087,67.09091"
-         id="path4801"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ffe800;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m -178.63637,893.72584 39.27273,66.81818 76.363637,-0.54545"
-         id="path4803"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       inkscape:connector-curvature="0"
-       id="path4858"
-       style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 287.2562,1338.4273 -77.0088,0 -38.505,66.6925 38.505,66.6925 77.0088,0 38.505,-66.6925 -38.505,-66.6925 z" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:100%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="9.375"
-       y="558.61218"
-       id="text5571"
-       sodipodi:linespacing="100%"><tspan
-         sodipodi:role="line"
-         id="tspan5573"
-         x="9.375"
-         y="558.61218">git-annex tiling stickers</tspan><tspan
-         sodipodi:role="line"
-         x="9.375"
-         y="593.61218"
-         id="tspan5577">compliant with</tspan><tspan
-         sodipodi:role="line"
-         x="9.375"
-         y="628.61218"
-         id="tspan5575">https://github.com/terinjokes/StickerConstructorSpec/</tspan></text>
-  </g>
-</svg>
diff --git a/doc/stickers/hexdemos.svg b/doc/stickers/hexdemos.svg
deleted file mode 100644
--- a/doc/stickers/hexdemos.svg
+++ /dev/null
@@ -1,628 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:ns2="http://ns.adobe.com/AdobeIllustrator/10.0/"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 744.09448819 1052.3622047"
-   id="svg3720"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="hexdemos.svg">
-  <defs
-     id="defs3722">
-    <clipPath
-       id="clip1">
-      <path
-         inkscape:connector-curvature="0"
-         d="m 0,340.15625 481.89062,0 L 481.89062,0 0,0 0,340.15625 Z m 0,0"
-         id="path7" />
-    </clipPath>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.35"
-     inkscape:cx="375"
-     inkscape:cy="520"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1366"
-     inkscape:window-height="768"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata3725">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g10"
-       clip-path="url(#clip1)"
-       style="clip-rule:nonzero;display:inline"
-       transform="matrix(0.10894991,0,0,0.10894991,528.54623,740.43302)">
-      <path
-         id="path12"
-         d="M 0,340.15625 113.38672,170.07812 0,0 85.039062,0 198.42578,170.07812 85.039062,340.15625 0,340.15625 Z m 0,0"
-         style="fill:#0013ec;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path14"
-         d="M 113.38672,340.15625 226.77344,170.07812 113.38672,0 l 85.03906,0 226.76953,340.15625 -85.03906,0 -70.86328,-106.29688 -70.86719,106.29688 -85.03906,0 z m 0,0"
-         style="fill:#82a7ff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path16"
-         d="m 387.40234,240.94531 -37.79297,-56.6914 132.28125,-0.004 0,56.69531 -94.48828,0 z m 0,0"
-         style="fill:#0013ec;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path18"
-         d="m 330.71094,155.90625 -37.79688,-56.691406 188.97656,-0.0039 0,56.695316 -151.17968,0 z m 0,0"
-         style="fill:#0013ec;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       style="display:inline"
-       transform="matrix(0.47991457,0,0,0.47991457,210.94383,674.58843)"
-       id="Layer_1"
-       ns2:layer="yes"
-       ns2:dimmedPercent="50"
-       ns2:rgbTrio="#4F008000FFFF">
-      <g
-         id="g7">
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 51.986,57.297 c -1.797,0.025 0.34,0.926 2.686,1.287 0.648,-0.506 1.236,-1.018 1.76,-1.516 -1.461,0.358 -2.948,0.366 -4.446,0.229"
-           id="path9" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 61.631,54.893 c 1.07,-1.477 1.85,-3.094 2.125,-4.766 -0.24,1.192 -0.887,2.221 -1.496,3.307 -3.359,2.115 -0.316,-1.256 -0.002,-2.537 -3.612,4.546 -0.496,2.726 -0.627,3.996"
-           id="path11" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 65.191,45.629 c 0.217,-3.236 -0.637,-2.213 -0.924,-0.978 0.335,0.174 0.6,2.281 0.924,0.978"
-           id="path13" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 45.172,1.399 c 0.959,0.172 2.072,0.304 1.916,0.533 1.049,-0.23 1.287,-0.442 -1.916,-0.533"
-           id="path15" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="M 47.088,1.932 46.41,2.072 47.041,2.016 47.088,1.932"
-           id="path17" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 32.372,59.764 -0.252,1.26 c 1.181,1.604 2.118,3.342 3.626,4.596 -1.085,-2.118 -1.891,-2.993 -3.374,-5.856"
-           id="path21" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 35.164,59.654 c -0.625,-0.691 -0.995,-1.523 -1.409,-2.352 0.396,1.457 1.207,2.709 1.962,3.982 l -0.553,-1.63"
-           id="path23" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 84.568,48.916 -0.264,0.662 c -0.484,3.438 -1.529,6.84 -3.131,9.994 1.77,-3.328 2.915,-6.968 3.395,-10.656"
-           id="path25" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="M 45.527,0.537 C 46.742,0.092 48.514,0.293 49.803,0 48.123,0.141 46.451,0.225 44.8,0.438 l 0.727,0.099"
-           id="path27" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="m 2.872,23.219 c 0.28,2.592 -1.95,3.598 0.494,1.889 1.31,-2.951 -0.512,-0.815 -0.494,-1.889"
-           id="path29" />
-        <path
-           style="fill:#a80030"
-           inkscape:connector-curvature="0"
-           ns2:knockout="Off"
-           d="M 0,35.215 C 0.563,33.487 0.665,32.449 0.88,31.449 -0.676,33.438 0.164,33.862 0,35.215"
-           id="path31" />
-      </g>
-    </g>
-    <g
-       id="g4533"
-       transform="matrix(-1,0,0,-1,337.47913,1609.9151)">
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4511"
-         d="m -97.179901,820.75693 c -5.555249,6.2109 -9.217399,75.03571 -47.311459,41.52113"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m -153.68576,850.83659 11.16099,3.05391 -2.89913,2.35772 c 0.65008,0.81214 1.2285,1.66238 1.74184,2.53352 l -4.92138,3.14561 c -0.36371,-0.61552 -1.02593,-1.31203 -1.48358,-1.88688 l -2.88379,2.34526 z"
-         id="path4513"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-0.8537788"
-         inkscape:transform-center-y="-5.2672031" />
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4515"
-         d="m -174.40071,884.06059 75.981839,-0.3857"
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#fff700;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m -99.000001,883.54402 39.81818,-66.81819"
-         id="path4517"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#f0ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m -59.463711,816.94972 -76.753229,0 -38.56946,66.33948"
-         id="path4519"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="g4591"
-       transform="translate(184.79893,205.58643)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4573"
-         style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 175.5925,655.30669 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
-      <path
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccccccccccccccccccc"
-         id="path4575"
-         d="m 133.81328,769.36362 c -4.98858,-0.64265 -10.12259,-5.35945 -10.83989,-10.89312 -0.68794,-4.62623 0.30456,-10.02623 4.12875,-13.07935 1.67733,-1.14327 3.959,-2.42422 5.97107,-2.27178 0.0603,2.0481 -0.0603,4.53751 0,6.58561 -2.39655,0.26682 -4.71638,2.99081 -4.6681,5.48492 0.0587,3.24569 1.4952,6.2278 4.61788,7.1992 3.45403,1.16223 7.40791,0.83167 10.60533,-1.10057 2.64137,-2.05802 2.88574,-5.8898 1.50423,-8.8058 -0.62143,-1.60464 -1.96101,-2.78268 -3.77919,-2.77775 l 0,5.71246 -5.12679,0 0,-12.29807 15.52512,0 0,4.42245 -4.25241,0.0393 c 3.96819,2.26207 4.37493,7.14424 4.17158,10.53133 0.14295,5.81845 -5.6054,10.56238 -11.30674,11.19666 -2.06269,0.15465 -3.80795,0.16279 -6.55084,0.0545 z"
-         style="fill:#000000;fill-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccccc"
-         id="path4577"
-         d="m 122.72168,740.67638 -0.0326,-6.45396 29.10361,0 -0.003,6.48504 -29.06768,-0.0311 z"
-         style="fill:#40bf4c;fill-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccccccccccccc"
-         id="path4579"
-         d="m 133.81384,731.95529 0,-6.90684 -11.28293,0 0,-6.01053 11.28293,0 0,-7.75042 6.74866,0 0,7.75042 11.2302,0 0,6.01053 -11.2302,0 -0.11125,6.89243 -6.63741,0.0144 z"
-         style="fill:#ff0000;fill-opacity:1" />
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:connector-curvature="0"
-         id="path4581"
-         d="m 154.07714,721.74852 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-      <path
-         inkscape:transform-center-y="-14.892703"
-         inkscape:transform-center-x="-7.5938808"
-         sodipodi:nodetypes="cccccccc"
-         id="path4583"
-         d="m 193.65177,689.48539 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g4585"
-         transform="matrix(-1,0,0,1,445.15327,89.614307)">
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
-           id="path4587"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="-7.5938808"
-           inkscape:transform-center-y="-14.892703" />
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4589"
-           d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-      </g>
-    </g>
-    <g
-       transform="translate(12.550131,294.22209)"
-       id="g4612">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4614"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z" />
-      <g
-         id="g4616">
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
-           id="path4618"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           id="path4620"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="0.7747508"
-           inkscape:transform-center-y="-18.010798" />
-      </g>
-    </g>
-    <g
-       id="g4680"
-       transform="matrix(1,0,0,-1,127.78383,1360.044)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4682"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z" />
-      <g
-         id="g4684">
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
-           id="path4686"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           id="path4688"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="0.7747508"
-           inkscape:transform-center-y="-18.010798" />
-      </g>
-    </g>
-    <g
-       transform="matrix(1,2.0107719e-5,2.0107719e-5,-1,-101.29487,1223.1898)"
-       id="g4727">
-      <g
-         id="g4853"
-         transform="matrix(-0.9999191,0.01271977,-0.01271977,-0.9999191,626.31079,1260.0115)"
-         inkscape:transform-center-x="-16.572815"
-         inkscape:transform-center-y="-15.467961">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4729"
-           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-           d="m 248.23414,597.36687 c -12.08969,-7.29009 -18.12987,-116.54484 -46.70001,-40.02598 -18.39769,49.27419 -45.74475,-4.56444 -54.84188,-12.01875"
-           id="path4731"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="csc" />
-        <path
-           inkscape:transform-center-y="-5.8683169"
-           inkscape:transform-center-x="-0.4755438"
-           sodipodi:nodetypes="cccccccc"
-           id="path4733"
-           d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       transform="matrix(0.52225441,0.85278973,-0.85278973,0.52225441,588.38542,265.88987)"
-       id="g4735">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4737"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-         d="m 248.23414,597.36687 c -12.08969,-7.29009 -21.44443,-80.08465 -50.01457,-3.56579 -18.39769,49.27419 -42.43019,-41.02463 -51.52732,-48.47894"
-         id="path4739"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="csc" />
-      <path
-         inkscape:transform-center-y="-5.8683169"
-         inkscape:transform-center-x="-0.4755438"
-         sodipodi:nodetypes="cccccccc"
-         id="path4741"
-         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.52823316,0.84909936,0.84909936,-0.52823316,-149.77447,1484.5351)"
-       id="g4831">
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1"
-         d="m -156.10441,923.00578 c 2.73241,5.35647 49.24076,-69.47997 55.40614,19.54145"
-         id="path4833"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:transform-center-y="-1.9921231"
-         inkscape:transform-center-x="3.1470162"
-         sodipodi:nodetypes="cccccccc"
-         id="path4835"
-         d="m -100.99013,959.06269 -7.22736,-9.03656 3.73144,-0.20046 c -0.0478,-1.03918 -0.0152,-2.067 0.0824,-3.07343 l 5.830147,0.3524 c -0.0681,0.71169 0.0575,1.66452 0.0893,2.39861 l 3.7117,-0.19942 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#fffb00;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m -178.49162,893.69696 75.98184,-0.3857"
-         id="path4837"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4839"
-         d="m -103.90909,893.18039 40.909087,67.09091"
-         style="fill:none;fill-rule:evenodd;stroke:#f3ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4841"
-         d="m -178.63637,893.72584 39.27273,66.81818 76.363637,-0.54545"
-         style="fill:none;fill-rule:evenodd;stroke:#ffe800;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-    </g>
-    <g
-       id="g4843"
-       transform="matrix(-0.48344807,-0.87537304,-0.87537304,0.48344807,910.12857,689.09663)"
-       inkscape:transform-center-x="48.4375"
-       inkscape:transform-center-y="-140.625">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4845"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z" />
-      <g
-         id="g4847">
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
-           id="path4849"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           id="path4851"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="0.7747508"
-           inkscape:transform-center-y="-18.010798" />
-      </g>
-    </g>
-    <g
-       transform="matrix(-1,0,0,1,629.2069,294.58461)"
-       id="g4878">
-      <g
-         id="g4880">
-        <path
-           d="m 183.90007,86.85828 77.00875,0 38.505,66.6925 -38.505,66.6925 -77.00875,0 -38.505,-66.6925 38.505,-66.6925 z"
-           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path4882"
-           inkscape:connector-curvature="0"
-           transform="matrix(-1,0,0,1,646.48904,412.98535)" />
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4884"
-           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-        <path
-           inkscape:transform-center-y="-18.010798"
-           inkscape:transform-center-x="0.7747508"
-           sodipodi:nodetypes="cccccccc"
-           id="path4886"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g4888">
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-           d="m 369.14737,596.54869 c 212.57536,-152.79796 34.16912,123.05809 55.1201,-80.50195"
-           id="path4890"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           id="path4892"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="0.7747508"
-           inkscape:transform-center-y="-18.010798" />
-      </g>
-    </g>
-    <g
-       transform="matrix(0,1,-1,0,962.67982,79.118649)"
-       id="g4906">
-      <path
-         d="m 175.5925,655.30669 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
-         style="display:inline;fill:#ffff00;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path4908"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1"
-         d="m 133.81328,769.36362 c -4.98858,-0.64265 -10.12259,-5.35945 -10.83989,-10.89312 -0.68794,-4.62623 0.30456,-10.02623 4.12875,-13.07935 1.67733,-1.14327 3.959,-2.42422 5.97107,-2.27178 0.0603,2.0481 -0.0603,4.53751 0,6.58561 -2.39655,0.26682 -4.71638,2.99081 -4.6681,5.48492 0.0587,3.24569 1.4952,6.2278 4.61788,7.1992 3.45403,1.16223 7.40791,0.83167 10.60533,-1.10057 2.64137,-2.05802 2.88574,-5.8898 1.50423,-8.8058 -0.62143,-1.60464 -1.96101,-2.78268 -3.77919,-2.77775 l 0,5.71246 -5.12679,0 0,-12.29807 15.52512,0 0,4.42245 -4.25241,0.0393 c 3.96819,2.26207 4.37493,7.14424 4.17158,10.53133 0.14295,5.81845 -5.6054,10.56238 -11.30674,11.19666 -2.06269,0.15465 -3.80795,0.16279 -6.55084,0.0545 z"
-         id="path4910"
-         sodipodi:nodetypes="ccccccccccccccccccc"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#40bf4c;fill-opacity:1"
-         d="m 122.72168,740.67638 -0.0326,-6.45396 29.10361,0 -0.003,6.48504 -29.06768,-0.0311 z"
-         id="path4912"
-         sodipodi:nodetypes="ccccc"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#ff0000;fill-opacity:1"
-         d="m 133.81384,731.95529 0,-6.90684 -11.28293,0 0,-6.01053 11.28293,0 0,-7.75042 6.74866,0 0,7.75042 11.2302,0 0,6.01053 -11.2302,0 -0.11125,6.89243 -6.63741,0.0144 z"
-         id="path4914"
-         sodipodi:nodetypes="ccccccccccccc"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-         d="m 154.07714,721.74852 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
-         id="path4916"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 193.65177,689.48539 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
-         id="path4918"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-7.5938808"
-         inkscape:transform-center-y="-14.892703" />
-      <g
-         transform="matrix(-1,0,0,1,445.15327,89.614307)"
-         id="g4920">
-        <path
-           inkscape:transform-center-y="-14.892703"
-           inkscape:transform-center-x="-7.5938808"
-           sodipodi:nodetypes="cccccccc"
-           id="path4922"
-           d="m 364.9245,600.03084 1.0226,11.52597 -3.21949,-1.89699 c -0.53498,0.89217 -1.13069,1.7304 -1.76867,2.51487 l -4.66214,-3.51845 c 0.45046,-0.55521 0.8728,-1.41853 1.25235,-2.04767 l -3.20246,-1.88696 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1"
-           d="m 325.34987,632.29397 c 13.1692,0.98414 18.35807,-2.95155 32.18101,-19.81947"
-           id="path4924"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc" />
-      </g>
-    </g>
-    <g
-       id="g4926"
-       transform="matrix(0.00271106,0.99999633,-0.99999633,0.00271106,872.97406,-95.227214)"
-       inkscape:transform-center-x="-104.62014"
-       inkscape:transform-center-y="7.2910125">
-      <path
-         d="m 462.58897,499.84363 -77.00875,0 -38.505,66.6925 38.505,66.6925 77.00875,0 38.505,-66.6925 -38.505,-66.6925 z"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path4928"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g4930">
-        <path
-           sodipodi:nodetypes="cc"
-           inkscape:connector-curvature="0"
-           id="path4932"
-           d="m 369.14737,596.54869 c 179.79378,-174.98868 95.13045,83.3911 55.1201,-80.50195"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:0;stroke-opacity:1" />
-        <path
-           inkscape:transform-center-y="-18.010798"
-           inkscape:transform-center-x="0.7747508"
-           sodipodi:nodetypes="cccccccc"
-           id="path4934"
-           d="m 422.69966,500.95772 -6.24535,9.74111 3.73197,-0.18982 c 0.0609,1.03849 0.20054,2.05731 0.40251,3.04807 l 5.7616,-0.95861 c -0.14198,-0.70071 -0.11643,-1.66145 -0.16137,-2.39484 l 3.71224,-0.18884 z"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="g4946"
-       transform="matrix(1,2.0107719e-5,2.0107719e-5,-1,-18.687743,786.98373)">
-      <g
-         inkscape:transform-center-y="-21.861258"
-         inkscape:transform-center-x="-6.0002714"
-         transform="matrix(-0.85808244,-0.51351196,0.51351196,-0.85808244,202.35599,1269.6551)"
-         id="g4948">
-        <path
-           d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
-           style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path4950"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="csc"
-           inkscape:connector-curvature="0"
-           id="path4952"
-           d="m 248.23414,597.36687 c -12.08969,-7.29009 -18.12987,-116.54484 -46.70001,-40.02598 -18.39769,49.27419 -45.74475,-4.56444 -54.84188,-12.01875"
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
-           id="path4954"
-           sodipodi:nodetypes="cccccccc"
-           inkscape:transform-center-x="-0.4755438"
-           inkscape:transform-center-y="-5.8683169" />
-      </g>
-    </g>
-    <g
-       id="g4956"
-       transform="matrix(-0.87044162,0.49227164,-0.49227164,-0.87044162,888.94556,730.52873)">
-      <path
-         d="m 231.51016,498.82244 -77.00876,0 -38.505,66.6925 38.505,66.69249 77.00876,0 38.505,-66.69249 -38.505,-66.6925 z"
-         style="display:inline;fill:#fff6d5;fill-opacity:0;stroke:#edff24;stroke-width:1.5625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path4958"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:nodetypes="csc"
-         inkscape:connector-curvature="0"
-         id="path4960"
-         d="m 248.23414,597.36687 c -12.08969,-7.29009 -21.44443,-80.08465 -50.01457,-3.56579 -18.39769,49.27419 -42.43019,-41.02463 -51.52732,-48.47894"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3, 3, 9, 3;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:none"
-         d="m 136.03878,533.85322 1.62247,11.45695 2.7044,-2.57875 c 0.7237,0.74728 1.49423,1.42828 2.29371,2.04734 l 3.74095,-4.48555 c -0.56476,-0.4384 -1.17222,-1.18315 -1.68478,-1.70962 l 2.6901,-2.56512 z"
-         id="path4962"
-         sodipodi:nodetypes="cccccccc"
-         inkscape:transform-center-x="-0.4755438"
-         inkscape:transform-center-y="-5.8683169" />
-    </g>
-    <rect
-       style="fill:#006e93;fill-opacity:1;fill-rule:evenodd;stroke:#009453;stroke-width:2.09441543;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.80000019;stroke-opacity:1"
-       id="rect5559"
-       width="74.023422"
-       height="96.675735"
-       x="515.27136"
-       y="627.57892"
-       rx="0"
-       ry="0" />
-    <rect
-       ry="0"
-       rx="0"
-       y="627.59033"
-       x="437.39053"
-       height="96.652977"
-       width="75.657951"
-       id="rect5569"
-       style="fill:#ff7f26;fill-opacity:1;fill-rule:evenodd;stroke:#ff5739;stroke-width:2.11716366;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.80000019;stroke-opacity:1" />
-  </g>
-</svg>
diff --git a/doc/submodules.mdwn b/doc/submodules.mdwn
deleted file mode 100644
--- a/doc/submodules.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-[Git submodules](http://git-scm.com/book/en/v2/Git-Tools-Submodules) are
-supported by git-annex since version 5.20150303.
-
-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. (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.
-
-The conversion of .git file to .git symlink mostly won't bother git.
-
-Known problems:
-
-* If you want to delete a whole submodule, `git rm submodule`
-  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`.
diff --git a/doc/summary.mdwn b/doc/summary.mdwn
deleted file mode 100644
--- a/doc/summary.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-git-annex allows managing files with git, without checking the file
-contents into git. While that may seem paradoxical, it is useful when
-dealing with files larger than git can currently easily handle, whether due
-to limitations in memory, time, or disk space.
-
-[[!img assistant/thumbnail.png link=assistant align=right]]
-git-annex is designed for git users who love the command line.
-For everyone else, the [[git-annex assistant|assistant]] turns
-git-annex into an easy to use folder synchroniser.
-
-To get a feel for git-annex, see the [[walkthrough]].
diff --git a/doc/sync.mdwn b/doc/sync.mdwn
deleted file mode 100644
--- a/doc/sync.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-The `git annex sync` command provides an easy way to keep several
-repositories in sync. 
-
-Often git is used in a centralized fashion with a central bare repository
-which changes are pulled and pushed to using normal git commands.
-That works fine, if you don't mind having a central repository.
-
-But it can be harder to use git in a fully decentralized fashion, with no
-central repository and still keep repositories in sync with one another.
-You have to remember to pull from each remote, and merge the appropriate
-branch after pulling. It's difficult to *push* to a remote, since git does
-not allow pushes into the currently checked out branch.
-
-`git annex sync` makes it easier using a scheme devised by Joachim
-Breitner. The idea is to have a branch `synced/master` (actually,
-`synced/$currentbranch`), that is never directly checked out, and serves
-as a drop-point for other repositories to use to push changes.
-
-When you run `git annex sync`, it merges the `synced/master` branch
-into `master`, receiving anything that's been pushed to it. (If there is a
-conflict in this merge, [[automatic_conflict_resolution]] is used to
-resolve it). Then it fetches from each remote, and merges in any changes that
-have been made to the remotes too. Finally, it updates `synced/master`
-to reflect the new state of `master`, and pushes it out to each of the remotes.
-
-This way, changes propagate around between repositories as `git annex sync`
-is run on each of them. Every repository does not need to be able to talk
-to every other repository; as long as the graph of repositories is
-connected, and `git annex sync` is run from time to time on each, a given
-change, made anywhere, will eventually reach every other repository.
-
-The workflow for using `git annex sync` is simple:
-
-* Make some changes to files in the repository, using `git-annex`,
-  or anything else.
-* Run `git annex sync` to save the changes.
-* Next time you're working on a different clone of that repository,
-  run `git annex sync` to update it.
-
-Note that by default, `git annex sync` only synchronises the git
-repositories, but does not transfer the content of annexed files. If you
-want to fully synchronise two repositories content,
-you can use `git annex sync --content`. You can also configure
-[[preferred_content]] settings to make only some content be synced.
diff --git a/doc/sync/comment_10_2cd8ab86f498d6f676f859b552f831eb._comment b/doc/sync/comment_10_2cd8ab86f498d6f676f859b552f831eb._comment
deleted file mode 100644
--- a/doc/sync/comment_10_2cd8ab86f498d6f676f859b552f831eb._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkI9AR8BqG4RPw_Ov2lnDCJWMuM6WMRobQ"
- nickname="Dav"
- subject="Sorry to just be getting back..."
- date="2014-01-26T22:51:28Z"
- content="""
-The URLs in question in this case were read-only github https URLs. In any case, my problems are solved by what you've already suggested. I think a less error-sounding response to read-only https repos sounds nice!
-"""]]
diff --git a/doc/sync/comment_11_7683879f6982c0eb0aa39b66ff5a5ea9._comment b/doc/sync/comment_11_7683879f6982c0eb0aa39b66ff5a5ea9._comment
deleted file mode 100644
--- a/doc/sync/comment_11_7683879f6982c0eb0aa39b66ff5a5ea9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn3p4i4lk_zMilvjnJ9sS6g2nerpgz0Fjc"
- nickname="Matthias"
- subject="sync slow with content switch"
- date="2014-04-22T20:37:05Z"
- content="""
-I noticed that in a test with 2 local repositories and around 2'000 files \"git annex sync\" is still very fast, but \"git annex sync --content\" takes multiple seconds. Is this avoidable?
-
-I have a central repo and client repos. I want to copy all content to the central repo after a commit. Right now, I use \"git annex group central backup\", \"git annex wanted central standard\", and a hook that triggers \"git annex sync --content\" after each commit. Maybe there is a more efficient way to do this? Thanks for sharing thoughts.
-"""]]
diff --git a/doc/sync/comment_12_2fea14fa314ddb7ab645a5cca5a95fd9._comment b/doc/sync/comment_12_2fea14fa314ddb7ab645a5cca5a95fd9._comment
deleted file mode 100644
--- a/doc/sync/comment_12_2fea14fa314ddb7ab645a5cca5a95fd9._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="http://mshri.livejournal.com/"
- ip="129.170.212.202"
- subject="Sync specific branch or ignore a branch during sync"
- date="2014-04-25T15:37:53Z"
- content="""
-
-I too feel that syncing all remotes by default is the right thing to do, but I think it should be limited to the 'master' and 'git-annex' branch. I often create branches that I want to keep local and do not want them to be synced. But I want 'master' and 'git-annex' branches to be synced with all remotes.
-
-So it would be nice to able to set an option to sync all branches or just the 'master' and 'git-annex' or to able to ignore some branches during git annex sync
-
-Shri
-
-"""]]
diff --git a/doc/sync/comment_13_690f66be9cefe28844d8df653b7a0331._comment b/doc/sync/comment_13_690f66be9cefe28844d8df653b7a0331._comment
deleted file mode 100644
--- a/doc/sync/comment_13_690f66be9cefe28844d8df653b7a0331._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="zardoz"
- ip="134.147.14.84"
- subject="comment 13"
- date="2014-05-15T08:28:09Z"
- content="""
-I agree with mshri. It’s confusing to have every local branch wind up on every remote (and it hinders «git annex unused»).
-
-I tried working around this by just including relevant branches in the «fetch» refspec, but this will only work until another remote pushes the branches again.
-"""]]
diff --git a/doc/sync/comment_14_db342785a4dade30b5b75cb95031bed1._comment b/doc/sync/comment_14_db342785a4dade30b5b75cb95031bed1._comment
deleted file mode 100644
--- a/doc/sync/comment_14_db342785a4dade30b5b75cb95031bed1._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="zardoz"
- ip="134.147.14.84"
- subject="comment 14"
- date="2014-05-15T08:58:26Z"
- content="""
-Added a wishlist item <http://git-annex.branchable.com/todo/Allow_syncing_only_selected_branches/>
-"""]]
diff --git a/doc/sync/comment_15_168e0ab10b4084e13df1a3058fa7e8a9._comment b/doc/sync/comment_15_168e0ab10b4084e13df1a3058fa7e8a9._comment
deleted file mode 100644
--- a/doc/sync/comment_15_168e0ab10b4084e13df1a3058fa7e8a9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 15"
- date="2014-05-15T19:53:16Z"
- content="""
-We seem to have some rumor going around that `git annex sync` pushes all branches. It does not. It pushes only the git-annex branch and the currently checked out branch.
-"""]]
diff --git a/doc/sync/comment_16_96096f994fc55f921f2b24b274f998f7._comment b/doc/sync/comment_16_96096f994fc55f921f2b24b274f998f7._comment
deleted file mode 100644
--- a/doc/sync/comment_16_96096f994fc55f921f2b24b274f998f7._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 16"
- date="2014-05-15T19:54:54Z"
- content="""
-@Matthias, `git annex sync --content` has to check each file to see if any other repository wants it. This is necessarily going to get slow when there are a lot of files. The assistant does a similar syncing but uses some tricks to avoid scanning all the files too often, while still managing to keep them all in sync -- it can do this since it's a long-running daemon and is aware when files have changed.
-"""]]
diff --git a/doc/sync/comment_17_44a4ae4685c4bf2b4e7c61897eb3ff80._comment b/doc/sync/comment_17_44a4ae4685c4bf2b4e7c61897eb3ff80._comment
deleted file mode 100644
--- a/doc/sync/comment_17_44a4ae4685c4bf2b4e7c61897eb3ff80._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawm_YXzEdPHzbSGVwtmTR7g1BqDtTnIBB5s"
- nickname="Matthias"
- subject="comment 17"
- date="2015-01-22T22:04:09Z"
- content="""
-git sync … >> fetches from each remote
-
-Well, I have two git annex-ed repositories where \"git remote -v\" properly lists the other repo, and \"git annex sync foo\" manages to pull from foo, but \"git annex sync\" without a remote name simply does a local sync. Also, neither command pushes anything anywhere.
-
-So, where does \"git annex\" get its list of remotes from? What could prevent it from accessing them?
-
-
-"""]]
diff --git a/doc/sync/comment_18_838fb249cd5be83962770d5cc394389a._comment b/doc/sync/comment_18_838fb249cd5be83962770d5cc394389a._comment
deleted file mode 100644
--- a/doc/sync/comment_18_838fb249cd5be83962770d5cc394389a._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 18"""
- date="2015-02-04T19:12:23Z"
- content="""
-If a remote has "remote.<name>.annex-sync" set to false in the git
-config, `git-annex sync` will skip that remote unless you specify the name.
-That's probably what's going on in your case.
-"""]]
diff --git a/doc/sync/comment_19_d409ad20c5a6671f0d0b834232368030._comment b/doc/sync/comment_19_d409ad20c5a6671f0d0b834232368030._comment
deleted file mode 100644
--- a/doc/sync/comment_19_d409ad20c5a6671f0d0b834232368030._comment
+++ /dev/null
@@ -1,23 +0,0 @@
-[[!comment format=mdwn
- username="http://id.clacke.se/"
- nickname="clacke"
- subject="git-config for manual sync-like operations"
- date="2016-04-14T08:21:03Z"
- content="""
-My way of working with git-annex doesn't seem to mesh well with the Assistant or even with `git annex sync`. I seem to have a bit of a control need when it comes to what gets committed when. But here's my workflow approximating what it does, with a twist. I have this in git config on `mylaptop`:
-
-    remote.myserver.fetch=+refs/heads/*:refs/remotes/myserver/*
-    remote.myserver.push=refs/heads/*:refs/remotes/mylaptop/*
-    remote.myserver.push=refs/heads/master:refs/heads/master
-    remote.myserver.push=refs/heads/git-annex:refs/heads/git-annex
-
-I don't need a `synced/git-annex`. If upstream is not up-to-date I fetch and merge. In this case upstream happens to be a bare git repo, so I don't need `synced/master` either. If upstream is non-bare, I use `synced/master` -- or sometimes I keep upstream usually checked out on an orphan branch and just switch into master to check things and then switch away to avoid conflict. If I can avoid it, I prefer not to have several branches where I don't know which one is the latest one.
-
-But here's the twist, look at this row:
-
-    remote.myserver.push=refs/heads/*:refs/remotes/mylaptop/*
-
-If I just do `git push`, close the lid and run into the forest, it may or may not have a non-fastforward event on master and git-annex ... but it always succeeds in pushing to the `mylaptop` remote on my server.
-
-If I have added a batch of files, I usually push first to all my remotes, to get that precious metadata up there. At that point I don't care if there's a conflict upstream. Then I `git annex copy` to wherever, fetch all remotes, `git annex merge`, maybe merge `master` if I have to (usually not), then push to all remotes again. It's less of a bother than it sounds like. I don't even have any handy aliases for this, I prefer to just get the for loop from my command-line history.
-"""]]
diff --git a/doc/sync/comment_1_59681be5568f568f5c54eb0445163dd2._comment b/doc/sync/comment_1_59681be5568f568f5c54eb0445163dd2._comment
deleted file mode 100644
--- a/doc/sync/comment_1_59681be5568f568f5c54eb0445163dd2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://adamspiers.myopenid.com/"
- nickname="Adam"
- subject="very nice"
- date="2012-02-25T15:02:18Z"
- content="""
-Here's a way to get from a starting point of two or more peer directory trees *not* tracked by git or git-annex, to the point where they can be synced in the manner described above: [[forum/syncing_non-git_trees_with_git-annex/]]
-"""]]
diff --git a/doc/sync/comment_2_9301ff5e81d37475f594e74fbe32f24e._comment b/doc/sync/comment_2_9301ff5e81d37475f594e74fbe32f24e._comment
deleted file mode 100644
--- a/doc/sync/comment_2_9301ff5e81d37475f594e74fbe32f24e._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlDDW-g2WLLsLpcnCm4LykAquFY_nwbIrU"
- nickname="Daniel"
- subject="Its just grand"
- date="2013-01-04T14:45:35Z"
- content="""
-I cam upon git-annex a few months ago. I saw immidiately how it could help with some frustrations I've been having. One in particlar is keeping my vimrc in sync accross multiple locations and platforms. I finally took the time to give it a try after I finally hit my boiling point this morning. I went through the [walkthrough](http://git-annex.branchable.com/walkthrough/) and now I have an annax everywhere I need it. `git annex sync` and my vimrc is up-to-date, simply grand!
-
-Thanks so much for making git-annex, 
-[Daniel Wozniak](http://woz.io)
-"""]]
diff --git a/doc/sync/comment_3_49560003da47490e4fabd4ab0089f2d7._comment b/doc/sync/comment_3_49560003da47490e4fabd4ab0089f2d7._comment
deleted file mode 100644
--- a/doc/sync/comment_3_49560003da47490e4fabd4ab0089f2d7._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnVX_teMpJeQkyheivad_1XSCFSjpiWgx8"
- nickname="Diggory"
- subject="synchronising stored files with a bare repository"
- date="2013-01-11T16:52:38Z"
- content="""
-Good for syncing indexes, but if I want to synchronise all data files too (specifically pushing to a remote bare repository), how do I do that?
-"""]]
diff --git a/doc/sync/comment_4_cf29326408e62575085d1f980087c923._comment b/doc/sync/comment_4_cf29326408e62575085d1f980087c923._comment
deleted file mode 100644
--- a/doc/sync/comment_4_cf29326408e62575085d1f980087c923._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.7.238"
- subject="comment 4"
- date="2013-01-11T18:18:07Z"
- content="""
-Yes, sync only syncs the git branches, not git-annex data. To sync the date, you can run a command such as `git annex copy --to bareremote`. You could run that in cron. Or, the [[assistant]] can be run as a daemon, and automatically syncs git-annex data.
-"""]]
diff --git a/doc/sync/comment_5_18c396c59907147bb2bf713e55392b6b._comment b/doc/sync/comment_5_18c396c59907147bb2bf713e55392b6b._comment
deleted file mode 100644
--- a/doc/sync/comment_5_18c396c59907147bb2bf713e55392b6b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://elmimmo.myopenid.com/"
- nickname="chocolate.camera"
- subject="How to sync content with git-annex, not assistant"
- date="2013-10-11T09:58:12Z"
- content="""
-Sure assistant can sync git-annex data across remotes. But how do I tell a repo to sync git-annex data, but not so manually as to having to know what exactly needs to be copied from/to where?
-"""]]
diff --git a/doc/sync/comment_6_012e9d4468d0b88ee3c5dad3911c3606._comment b/doc/sync/comment_6_012e9d4468d0b88ee3c5dad3911c3606._comment
deleted file mode 100644
--- a/doc/sync/comment_6_012e9d4468d0b88ee3c5dad3911c3606._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkI9AR8BqG4RPw_Ov2lnDCJWMuM6WMRobQ"
- nickname="Dav"
- subject="Syncing only a specific branch"
- date="2013-11-24T17:48:22Z"
- content="""
-By default, `git annex sync` will sync to all remotes, unless you specify a remote. So, I have to specify, e.g., `git annex sync origin`. I can simplify this with aliases, I suppose, but I do a lot of teaching non-programmer scientists... so it'd be nice to be able to configure this (so beginning users don't have to keep track of as many things).
-
-Is there (or will there be) a way to do this?
-"""]]
diff --git a/doc/sync/comment_7_6276e100d1341f1a0be368f54de0ae7b._comment b/doc/sync/comment_7_6276e100d1341f1a0be368f54de0ae7b._comment
deleted file mode 100644
--- a/doc/sync/comment_7_6276e100d1341f1a0be368f54de0ae7b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.64"
- subject="comment 7"
- date="2013-11-26T20:08:33Z"
- content="""
-I feel that syncing with all remotes by default is the right thing for git annex sync to do. 
-"""]]
diff --git a/doc/sync/comment_8_b89161c82c05634d35f6b65bf8360a96._comment b/doc/sync/comment_8_b89161c82c05634d35f6b65bf8360a96._comment
deleted file mode 100644
--- a/doc/sync/comment_8_b89161c82c05634d35f6b65bf8360a96._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkI9AR8BqG4RPw_Ov2lnDCJWMuM6WMRobQ"
- nickname="Dav"
- subject="Use case for not syncing to all remotes"
- date="2013-12-08T19:20:26Z"
- content="""
-Just in case you haven't considered such a scenario - maybe you have suggestions for how to collaborate more effectively with git annex (and avoid warning messages):
-
-I'm trying to teach beginning scientist programmers (mostly graduate students), and a common scenario is to fork some scientific code. I'd like forking on github to be mundane, and not trigger warnings, and generally have as little for folks to explicitly keep track of as possible (this seems to be a common concern we share, which leads you to prefer syncing to all remotes without the option to configure the default behavior!).
-
-However, I am currently working with students on forking and fixing up scientific code where the upstream maintainer doesn't want to allow pushes upstream, except via pull request. So, part of our approach is to set up some common shared datasets in git annex (and these just end up in our fork). If we have an \"upstream\" remote, git annex will try to sync with it, and report an error.
-
-So - that's why I'd like to be able to configure the deactivation of syncing to a defined branch (e.g., \"upstream\"). However, if you have other suggestions to smooth the workflow, I would also like to hear those!
-"""]]
diff --git a/doc/sync/comment_9_849883b7cc05bfcb01914d8737098010._comment b/doc/sync/comment_9_849883b7cc05bfcb01914d8737098010._comment
deleted file mode 100644
--- a/doc/sync/comment_9_849883b7cc05bfcb01914d8737098010._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.87"
- subject="comment 9"
- date="2013-12-12T17:54:55Z"
- content="""
-@Dav what kind of url does the upstream remote have? Perhaps it would be sufficient to make sync skip trying to push to git:// and http[s]:// remotes. Both are unlikely to accept pushes and in the cases where they do accept pushes it would be fine to need a manual `git push`. 
-
-Anyway, you can already configure which remotes get synced with. From the man page:
-
-<pre>
-       remote.&lt;name&gt;.annex-sync
-              If set to false, prevents  git-annex  sync  (and  the  git-annex
-              assistant) from syncing with this remote.
-</pre>
-
-So `git config remote.upstream.annex-sync=false`
-"""]]
diff --git a/doc/templates/bare.tmpl b/doc/templates/bare.tmpl
deleted file mode 100644
--- a/doc/templates/bare.tmpl
+++ /dev/null
@@ -1,1 +0,0 @@
-<TMPL_VAR CONTENT>
diff --git a/doc/templates/buglist.tmpl b/doc/templates/buglist.tmpl
deleted file mode 100644
--- a/doc/templates/buglist.tmpl
+++ /dev/null
@@ -1,25 +0,0 @@
-<div class="archivepage">
-<TMPL_IF PERMALINK>
-<a href="<TMPL_VAR PERMALINK>"><TMPL_VAR TITLE></a>
-<TMPL_ELSE>
-<a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a>
-</TMPL_IF>
-<TMPL_IF TAGS>
-<TMPL_LOOP TAGS>
- [<TMPL_VAR LINK>]
-</TMPL_LOOP>
-</TMPL_IF>
-<br />
-<span class="archivepagedate">
-Posted <TMPL_VAR CTIME>
-<TMPL_IF AUTHOR>
-by <span class="author">
-<TMPL_IF AUTHORURL>
-<a href="<TMPL_VAR AUTHORURL>"><TMPL_VAR AUTHOR></a>
-<TMPL_ELSE>
-<TMPL_VAR AUTHOR>
-</TMPL_IF>
-</span>
-</TMPL_IF>
-</span>
-</div>
diff --git a/doc/templates/bugtemplate.mdwn b/doc/templates/bugtemplate.mdwn
deleted file mode 100644
--- a/doc/templates/bugtemplate.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-### Please describe the problem.
-
-
-### What steps will reproduce the problem?
-
-
-### What version of git-annex are you using? On what operating system?
-
-
-### 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.
-"""]]
-
-### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
-
-
diff --git a/doc/templates/note.mdwn b/doc/templates/note.mdwn
deleted file mode 100644
--- a/doc/templates/note.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!templatebody <<ENDBODY
-<div class="notebox">
-<TMPL_VAR text>
-</div>
-ENDBODY]]
-
-Use this template to insert a note into a page. The note will be styled to
-float to the right of other text on the page. This template has one
-parameter:
-<ul>
-<li>`text` - the text to display in the note
-</ul>
diff --git a/doc/templates/walkthrough.tmpl b/doc/templates/walkthrough.tmpl
deleted file mode 100644
--- a/doc/templates/walkthrough.tmpl
+++ /dev/null
@@ -1,2 +0,0 @@
-<h2><a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a></h2>
-<TMPL_VAR CONTENT>
diff --git a/doc/testimonials.mdwn b/doc/testimonials.mdwn
deleted file mode 100644
--- a/doc/testimonials.mdwn
+++ /dev/null
@@ -1,34 +0,0 @@
-<div>
-<blockquote class="twitter-tweet"><p>Git annex. Brilliant. Powerful. <a href="http://t.co/AM9B6peM" title="http://git-annex.branchable.com/">git-annex.branchable.com</a></p>&mdash; Gert van Dijk (@gertvdijk) <a href="https://twitter.com/gertvdijk/status/186456474246053888" data-datetime="2012-04-01T14:14:22+00:00">April 1, 2012</a></blockquote>
-<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-<blockquote class="twitter-tweet"><p>git-annex is like dropbox without the chrome. <a href="http://t.co/qcENNt3g" title="http://git-annex.branchable.com/">git-annex.branchable.com</a></p>&mdash; Wil Chung (@iamwil) <a href="https://twitter.com/iamwil/status/185997581229367296" data-datetime="2012-03-31T07:50:53+00:00">March 31, 2012</a></blockquote>
-<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-<blockquote class="twitter-tweet"><p>blender 2.62 + ffmpeg + dnxhd + git-annex = who needs final cut?</p>&mdash; cdotwright (@cdotwright) <a href="https://twitter.com/cdotwright/status/187645142864375808" data-datetime="2012-04-04T20:57:42+00:00">April 4, 2012</a></blockquote>
-<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-<blockquote class="twitter-tweet"><p>I want <a href="https://twitter.com/search/%2523git">#git</a>-annex whereis for all the stuff (not) in my room.</p>&mdash; topr (@derwelle) <a href="https://twitter.com/derwelle/status/172356564072673280" data-datetime="2012-02-22T16:26:21+00:00">February 22, 2012</a></blockquote>
-<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-<blockquote class="twitter-tweet"><p>Git-annex now auto-syncing photos from my android phone to a Tor hidden SSH service I control (via <a href="https://twitter.com/guardianproject">@guardianproject</a>&#39;s Orbot) <a href="https://twitter.com/search?q=%23prismbreak&amp;src=hash">#prismbreak</a></p>&mdash; Richard King (@graphiclunarkid) <a href="https://twitter.com/graphiclunarkid/statuses/347658443479449601">June 20, 2013</a></blockquote>
-<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
-</div>
-
-<blockquote>
-What excites me about GIT ANNEX is how it fundamentally tracks the
-backup and availability of any data you own, and allows you to share
-data with a large or small audience, ensuring that the data survives.
-</blockquote>
--- Jason Scott <http://ascii.textfiles.com/archives/3625>
-
-Seen on IRC:
-<pre>
-oh my god, git-annex is amazing
-this is the revolution in fucking with gigantic piles of files that I've been waiting for
-</pre>
-
-And then my own story: I have a ton of drives. I have a lot of servers. I
-live in a cabin on **dialup** and often have 1 hour on broadband in a week
-to get everything I need. Without git-annex, managing all this would not be
-possible. It works perfectly for me, not a surprise since I wrote it, but
-still, it's a different level of "perfect" than anything I could put
-together before. --[[Joey]]
-
-See also: [[design/assistant/blog/day_288__success_stories]]
diff --git a/doc/testimonials/comment_1_2bf439f7a3bc3d6fab91849017946182._comment b/doc/testimonials/comment_1_2bf439f7a3bc3d6fab91849017946182._comment
deleted file mode 100644
--- a/doc/testimonials/comment_1_2bf439f7a3bc3d6fab91849017946182._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="gjost"
- ip="108.205.152.179"
- subject="distributed digital repository"
- date="2013-11-14T00:39:49Z"
- content="""
-I am in the process of building a distributed digital repository using Git and git-annex as a foundation. Our project is to collect and preserve archival-quality audio and video from multiple bandwidth-challenged remote sites. We're using git-annex to help us sneakernet the metadata and binaries around and to maintain multiple copies in geographically separate locations. Git very neatly addresses the problem of tracking changes, while git-annex makes it possible to track the flow of information through a network of distributed repositories. 
-"""]]
diff --git a/doc/thanks.mdwn b/doc/thanks.mdwn
deleted file mode 100644
--- a/doc/thanks.mdwn
+++ /dev/null
@@ -1,384 +0,0 @@
-The development of git-annex was made possible by the generous
-donations of many people. I want to say "Thank You!" to each of
-you individually, but until I meet all 1500 of you, this page will have to
-do. You have my most sincere thanks. --[[Joey]]
-
-(If I got your name wrong, or you don't want it publically posted here,
-email <id@joeyh.name>.)
-
-## 2014-2015
-
-<img alt="NSF logo" src="https://www.nsf.gov/images/logos/nsf1.gif">
-
-git-annex development is partially supported by the
-[NSF](https://www.nsf.gov/awardsearch/showAward?AWD_ID=1429999) as a part of the
-[DataLad project](http://datalad.org/).
-
-Thanks also to these folks for their support: martin f. krafft and John Byrnes.
-
-## 2013-2014
-
-Continued git-annex development was [crowd funded](https://campaign.joeyh.name/)
-by these excellent people. *Hug*
-
-Eric Hanchrow, Michael Barabanov, Douglas Butts, Cody Woodard, Anna Hess,
-Maggie Hess, Francois Marier, Michael Linksvayer, Alexander Brem, Yaroslav
-Halchenko, Otavio Real Salvador, Giovanni Moretti, Mark Hepburn, Jim
-Cheetham, Ali Gündüz, Chia Shee Liang, Vincent Arel-Bundock, Mark R Jones,
-Willard Korfhage, Faidon Liambotis, Daniel Callahan, Sheila Miguez,
-Christopher Webber, Daniel Patterson, Charity Hanif, Blair Mckenzie, Romain
-Lenglet, Joseph Liu, Robert Beaty, Remy van Elst, Juho Snellman, Jason
-Davidson, Dane Larsen, Kuno Woudt, Navishkar Rao, Ryan Sorensen, Jonathan
-Castello, Nimrod Mesika, Amitai Schlair, Zellyn Hunter, Jan Pieper, Boyd
-Smith, Brett Eisenberg, Péter Károly Juhász, Allan Franta, Aaron De Vries,
-Donald Plummer, Joona Lehtomäki, Evan Anderson, Pedro Côrte-Real, Bradley
-Unterrheiner, Wietse van Buitenen, James Shubin, Daniel de Kok, Michael
-Zehrer, Peter deHaan, David Schmitt, Ian Downes, Gioele Barabucci, Gergely
-Nagy, Diego Ongaro, Jonas Wiklund, Strakhov Artem, £ukasz Szczęsny, Peter
-Olson, Thomas Berker, Greg Young, narf, Michael Jakl, Andrea Rota, Tobias
-Nix, Andreas Olsson, Tobias Ussing, Pere Quintana Segui, Pierre Gambarotto,
-Yuriy Zaytsev, Thomas Djärv, Thomas Hochstein, Simon Lundmark, Damien
-Diederen, Arthur Lutz, Gert Van Gool, Jed Brown, Sören Brunk, Thorsten
-Bormer, Vincent Sanders, Thomas Lundstrøm, Robert Connolly, Marc Seeger,
-Per Andreas Buer, Thomas Andersen, Hendrik Müller Hofstede, Dominik
-Wagenknecht, Robert Walker, Nicholas Weigand, Maximilian Weigand, Thomas
-Jost, John, Angel Ramboi, Thomas Bartels, Fernando Jimenez, Tobias
-Mersmann, András Veres-Szentkirályi, Richard Hartmann, John Hedges,
-Nedialko Andreev, Roderik Koenders, Sławomir Gwizdowski, Aapo Laitinen,
-Jonathan Harrington, Dirk Kraft, Fabian Bartschke, Philip Frank, Patrick
-Steegstra, Roberto Zedda, Leon Major, Torbjørn Thorsen, Lukas Anzinger,
-Pollan Ruben, Daniel Hofer, Johannes Krampf, Jörn Gersdorf, Kristoffer Egil
-Bonarjee, David Iwanowitsch, Daniel Egger, Titus Stahl, Robin Sheat, Thomas
-Nicolaisen, Karsten Heymann, Askings & Medina Business Services, Pieter
-Mulder, Geoffrey Huntley, Wouter Mooij, Kari Oikarinen, sven dowideit,
-Ethan Aubin, Nathan Rickerby, Tobias Brunner, Stian Haukaas Eikeland, Jan
-Dittberner, Jeffrey Goeke-Smith, Joseph Cullen, James Orr, Markus Plangg,
-Glendon Solsberry, Georg Bauer, Andreas Leha, Ian Kozhurin, Boris Hupkens
-van der Elst, Daniel Brockman, Scott Robinson, Olaf Lorenzen, Øyvind
-Andersen Holm, Logan Owen, Christopher Douglass, Nicolas Pouillard, Florian
-Schlegel, Hans-Christian Jehg, Thomas Mechtler, Joshua McKinney, Tom
-Atkins, Paul Scott-Wilson, Rafal Czlonka, Benjamin Williams, Ulises Vitulli, Mesar
-Hameed, Vishakh Vishakh, Daniel Washburn, Maximilian Haack, Jan Gondol,
-Carlo Matteo Capocasa, Jevgenijs Zolotarskis, John Cooper, Matthew Gregg,
-Peter Jarosak, Edward Heil, Kyle Kurtenbach, David Kaminski, Joonathan
-Mägi, Piotr Ożarowski, Ernest Braganza, Adam Sjøgren, Simon Michael,
-Protonet, Valentin Churavy, Trenton Cronholm, Ellis Whitehead, Maarten
-Everts, Paul Tötterman, Julien Lefrique, Robert F Donnelly,
-LeastAuthority.com, Floris Bruynooghe, Kevin Krouse, Bernhard Schmidt,
-Jason Woofenden, Jacek Nykis, Benjamin Carrillo, Teemu Hukkanen, William
-Heinbockel, Kristofer Bergstrom, Richard Gibson, Julian Andres Klode,
-Jeffrey Guenthner, Jochen Kupperschmidt, Andrew Eskridge, Eric Wallmander,
-Aaron Haviland, Evan Deaubl, Felix Crux, Matthew Marshall, Hamish Coleman,
-xymostech, Matthew Mercer, Ben Challenor, András Csáki, Stelian Iancu,
-Dmitri Popov, Anthony DiSanti, Perttu Luukko, Daniel Glassey, Aurélien
-Pinceaux, Svenne Krap, Sven Hartge, Frank Blendinger, Lisa Feilen, Kyle
-Kujala-Korpela, Walter Somerville, Filippo Giunchedi, Tyler Willingham,
-Gernot Schulz, Daniel Gervais, Denver Gingerich, Nicolas Joseph, tommy,
-bak, Grejdi G, Gabriel de Perthuis, Mayank Jain, Radu Raduta, Gregory
-Grossmeier, Errol Hess, Janin Kolenc, Sean Whitton, Philippe Gauthier,
-Ananda Widyadharma, Jochen Bartl, Fredrik Hammar, THM Schoemaker, Marek
-Jawurek, Johan Herland, Gian-Maria Daffre, Justine Lam, Ori Livneh, Arnaud
-Berthomier, Chad Horohoe, Lois DeFiore, Lieven Baes, Patrick Wheeler, James
-Kim, Carlos Trijueque Albarran, Ritesh Nadhani, chesty, Andre Pereira,
-Eskild Hustvedt, David Wagner, Maximiliano Curia, András Széll, Allan
-Holman, Thomas Langewouters, Anonymous, Peter Daengeli, Josh Taylor, Abhishek Dasgupta, Maarten Aertsen, Mark Sheppard,
-Daengeli, Josh Taylor, Abhishek Dasgupta, Maarten Aertsen, Mark Sheppard,
-Markus Engström, Samuel Tardieu, Geog Wechslberger, Abdó Roig, Dmitry
-Markushevich, Sergio Rubio, Jim Paris, Vivek Gani, Brock Spratlen, Nathan
-Howell, Alan Chan, Alexandre Dupas, Daniel Atlas, Patrick Hallen, Matthew
-Forrester, Binyamin Cherniavsky, Florent Fourcot, Nathan Yergler, Hannibal
-Skorepa, Cedric Staub, Melissa Binde, Marc Bobillier, Zoran Zaric, Ralph
-Mayer, Jay Pozo, Walter Somerville, Remy Honig, Bernhard Urban, Nurullah
-Akkaya, Ari Pollak, Kalle Svensson, Stephan Schulz, Joshua Honeycutt,
-Justin Keyes, Filias Heidt, Manish Sharma, Benoît Zugmeyer, Andrew Kraut,
-Markus Breitenberger, Dominik Deobald, Aren Olson, Tobias Ammann, Peter
-Lloyd, Pierre Chambart, Michael Alan Dorman, Kyle Meyer, Kristoffer
-Gronlund, Jay Dugger, Jeff McNeill, Oskari Timperi, Mathias Linden,
-Ole-Morten Duesund, Tom Lowenthal, Anders Lannerback, Tony Cantor,
-Stephanie Eikenberry, Vanja Cvelbar, Fabrice Rossi, Franz Pletz, Karl
-Wiberg, Sam Kleinman, Vincent Demeester, Tristan Helmich, Zero Art Radio,
-Bruno Bigras, Ævar Arnfjörð Bjarmason, Stanley Yamane, Christopher Browne,
-David Whittington, Fredrik Gustafsson, Peter Hogg, Tom Francart, Wouter
-Verhelst, Christian Savard, wundersolutions, Andreas Fuchs, Eric Kidd,
-Georg Lehner, Berin Martini, Stewart Wright, Bence Albertini, Stefan
-Schmitt, Antoine Boegli, jscit, Christopher Kernahan, A Marshall, Jürgen
-Peters, Aaron Whitehouse, Jouni K Seppanen, Michael Albertson, Andreas
-Laas, Thomas Herok, Aurelien Gazagne, Bryan W Stitt, anonymous, Chris
-Kastorff, Henning Hasemann, Leonardo Taglialegne, Frank Thomas, Frédéric
-Schütz, Riad Wahby, Maxwell Swadling, Bram Senders, Péter Párkányi, Tom
-Dimiduk, Christian Kellermann, Kilian Evang, Christian Studer, Tim
-Humphrey, Jürgen, Richard Collins, Renaud Casenave-Péré, Patrick Lynn,
-Gregor Gramlich, Hugo Mougard, Arun Srinivasan, Paul Tagliamonte, Don
-Armstrong, Adam DeWitt, Timothy Hobbs, Jacob Briggs, Mark Eichin, Matthew
-Raso-Barnett, Damien Raude-Morvan, Mark Lopez, Mattias Olsson, Marco A L
-Barbosa, Thomas de Ruiter, Anders Claesson, Philipp Meier, Henrik Ahlgren,
-Michael Hofmann, Audric SCHILTKNECHT, Wojtek Burakiewicz, Christian
-Dietrich, Jacob Kirkwood, Fabian Jansen, gregor herrmann, Martin Werner,
-Adam Baxter, Sören Köpping, Pierce Lopez, David Lehn, Michal Politowski,
-John Lawrence, Nicholas Golder, Adam Spiers, Pär Mattsson, Matt Lee,
-Timo Heister, Asbjørn Sloth Tønnesen, James Valleroy, Felix Gruber, Björn
-Pettersson, Nicola Chiapolini, Christer Stenbrenden, Hannes Maier-Flaig,
-Paul Walker, Cary Kempston, Andrew Cant, Albert Drengg,
-Martin Pollow, Karl-Georg Sommer, Francois Cocquemas, Daniel Bross, Martin
-Florian, Grigorios Prasinos, Olivier Berger, Andreas Herten, Kyle MacLea,
-Sozykin Mikhail, André Klärner, Pascal VITOUX, Gunilla Johansson, Dara
-Adib, Nicolas Bonifas, Glen Ogilvie, TasLUG, Shaun Westmacott, Georgi
-Valkov, Nicolas Dietrich, Auroch, Rasmus Pank Roulund, Michael Niewiera,
-Benjamin Koch, Joe Bogner, Christoph Varga, Florian Eitel, Tobias Braun,
-Jochen Schulz, Diggory Hardy, Stephane Barland, Sebastian Bober, Arash
-Rouhani-Kalleh, Geoffrey Irving, Hans Tzou, Mark Booth, Christoph Neckel,
-Aleksandar Iliev, Baldur Kristinsson, Adam Colton, KAWACHI TAKASHI, Michal
-Sojka, Alexander Brandstedt, Jarno Elonen, Rob Sharp, John Pybus, Antonino
-Mazzurco, Damon Haley, Jason Locklin, ULRICH KORTENKAMP, Karthik
-Poobalasubramanian, Alexandre Garel, David Clark, Jeff Johnson,
-Mica Semrick, Paul Staab, Rémi Vanicat, Martin Holtschneider, Jan Ivar
-Beddari, Peter Simons, Thomas Koch, Justin Geibel, Guillaume DELVIT, Shanti
-Bouchez, Oliver Brandt, François Deppierraz, Chad Walstrom, Tim Mattison,
-Jakub Antoni Tyszko, Casa do Boneco, Florian Tham,
-and 30 anonymous bitcoin users
-
-With an especial thanks to the WikiMedia foundation,
-and Rede Mocambos.
-
-## 2012-2013
-
-<a name="kickstarter">
-The git-annex assistant was [crowd funded on Kickstarter](http://www.kickstarter.com/projects/joeyh/git-annex-assistant-like-dropbox-but-with-your-own/).
-
-### Major Backers
-
-These people are just inspiring in their enthusiasm and generosity to this
-project.
-
-* Jason Scott
-* strager
-
-### Beta Testers
-
-Whole weeks of my time were made possible thanks to each of these
-people, and their testing is invaluable to the development of
-the git-annex assistant.
-
-* Jimmy Tang
-* David Pollak
-* Pater
-* Francois Marier
-* Paul Sherwood
-* Fred Epma
-* Robert Ristroph
-* Josh Triplett
-* David Haslem
-* AJ Ashton
-* Svenne Krap
-* Drew Hess
-* Peter van Westen
-
-### Prioritizers
-
-These forward-thinking people contributed generously just to help
-set my priorities in which parts of the git-annex assistant were most
-important to develop.
-
-Paul C. Bryan, Paul Tötterman, Don Marti, Dean Thompson, Djoume, David Johnston
-Asokan Pichai, Anders Østhus, Dominik Wagenknecht, Charlie Fox, Yazz D. Atlas,
-fenchel, Erik Penninga, Richard Hartmann, Graham, Stan Yamane, Ben Skelton,
-Ian McEwen, asc, Paul Tagliamonte, Sherif Abouseda, Igor Támara, Anne Wind,
-Mesar Hameed, Brandur K. Holm Petersen, Takahiro Inoue, Kai Hendry,
-Stephen Youndt, Lee Roberson, Ben Strawbridge, Andrew Greenberg, Alfred Adams
-Andrew, Aaron De Vries, Monti Knazze, Jorge Canseco, Hamish, Mark Eichin,
-Sherif Abouseda, Ben Strawbridge, chee rabbits, Pedro Côrte-Real
-
-And special thanks to Kevin McKenzie, who also gave me a login to a Mac OSX
-machine, which has proven invaluable, Jimmy Tang who has helped
-with Mac OSX autobuilding and packaging, and Yury V. Zaytsev who
-provides the Windows autobuilder.
-
-### Other Backers
-
-Most of the success of the Kickstarter is thanks to these folks. Some of
-them spent significant amounts of money in the guise of getting some
-swag. For others, being listed here, and being crucial to making the 
-git-annex assistant happen was reward enough. Large or small, these
-contributions were, literally, my bread and butter this year.
-
-Amitai Schlair, mvime, Romain Lenglet, James Petts, Jouni Uuksulainen,
-Wichert Akkerman, Robert Bellus, Kasper Souren, rob, Michiel Buddingh',
-Kevin, Rob Avina, Alon Levy, Vikash, Michael Alan Dorman, Harley Pig,
-Andreas Olsson, Pietpiet, Christine Spang, Liz Young, Oleg Kosorukov,
-Allard Hoeve, Valentin Haenel, Joost Baaij, Nathan Yergler, Nathan Howell,
-Frédéric Schütz, Matti Eskelinen, Neil McGovern, Lane Lillquist, db48x,
-Stuart Prescott, Mark Matienzo, KarlTheGood, leonm, Drew Slininger, 
-Andreas Fuchs, Conrad Parker, Johannes Engelke, Battlegarden, Justin Kelly,
-Robin Wagner, Thad Ward, crenquis, Trudy Goold, Mike Cochrane, Adam Venturella,
-Russell Foo, furankupan, Giorgio Occhioni, andy, mind, Mike Linksvayer,
-Stefan Strahl, Jelmer Vernooij, Markus Fix, David Hicks, Justin Azoff,
-Iain Nicol, Bob Ippolito, Thomas Lundstrøm, Jason Mandel, federico2,
-Edd Cochran, Jose Ortega, Emmett Agnew, Rudy Garcia, Kodi, Nick Rusnov,
-Michael Rubin, Tom de Grunt, Richard Murray, Peter, Suzanne Pierce, Jared
-Marcotte, folk, Eamon, Jeff Richards, Leo Sutedja, dann frazier, Mikkel
-kristiansen, Matt Thomas, Kilian Evang, Gergely Risko, Kristian Rumberg,
-Peter Kropf, Mark Hepburn, greymont, D. Joe Anderson, Jeremy Zunker, ctebo,
-Manuel Roumain, Jason Walsh, np, Shawn, Johan Tibell, Branden Tyree, Dinyar
-Rabady, Andrew Mason, damond armstead, Ethan Aubin, TomTom Tommie, Jimmy
-Kaplowitz, Steven Zakulec, mike smith, Jacob Kirkwood, Mark Hymers, Nathan
-Collins, Asbjørn Sloth Tønnesen, Misty De Meo, James Shubin,
-Jim Paris, Adam Sjøgren, miniBill, Taneli, Kumar Appaiah, Greg Grossmeier,
-Sten Turpin, Otavio Salvador, Teemu Hukkanen, Brian Stengaard, bob walker,
-bibeneus, andrelo, Yaroslav Halchenko, hesfalling, Tommy L, jlargentaye,
-Serafeim Zanikolas, Don Armstrong, Chris Cormack, shayne.oneill, Radu
-Raduta, Josh S, Robin Sheat, Henrik Mygind, kodx, Christian, Geoff
-Crompton, Brian May, Olivier Berger, Filippo Gadotti, Daniel Curto-Millet,
-Eskild Hustvedt, Douglas Soares de Andrade, Tom L, Michael Nacos, Michaël
-P., William Roe, Joshua Honeycutt, Brian Kelly, Nathan Rasch, jorge, Martin
-Galese, alex cox, Avery Brooks, David Whittington, Dan Martinez, Forrest
-Sutton, Jouni K. Seppänen, Arnold Cano, Robert Beaty, Daniel, Kevin Savetz,
-Randy, Ernie Braganza, Aaron Haviland, Brian Brunswick, asmw, sean, Michael
-Williams, Alexander, Dougal Campbell, Robert Bacchas, Michael Lewis, Collin
-Price, Wes Frazier, Matt Wall, Brandon Barclay, Derek van Vliet, Martin
-DeMello, kitt hodsden, Stephen Kitt, Leif Bergman, Simon Lilburn, Michael
-Prokop, Christiaan Conover, Nick Coombe, Tim Dysinger, Brandon Robinson,
-Philip Newborough, keith, Mike Fullerton, Kyle, Phil Windley, Tyler Head,
-George V. Reilly, Matthew, Ali Gündüz, Vasyl Diakonov, Paolo Capriotti,
-allanfranta, Martin Haeberli, msingle, Vincent Sanders, Steven King, Dmitry
-Gribanov, Brandon High, Ben Hughes, Mike Dank, JohnE, Diggory Hardy,
-Michael Hanke, valhalla, Samuli Tuomola, Jeff Rau, Benjamin Lebsanft, John
-Drago, James, Aidan Cooper, rondie, Paul Kohler, Matthew Knights, Aaron
-Junod, Patrick R McDonald, Christopher Browne, Daniel Engel, John SJ
-Anderson, Peter Sarossy, Mike Prasad, Christoph Ender, Jan Dittberner,
-Zohar, Alexander Jelinek, stefan, Danny O'Brien, Matthew Thode, Nicole
-Aptekar, maurice gaston, Chris Adams, Mike Klemencic, Reedy, Subito, Tobias
-Gruetzmacher, Ole-Morten Duesund, André Koot, mp, gdop, Cole Scott, Blaker,
-Matt Sottile, W. Craig Trader, Louis-Philippe Dubrule, Brian Boucheron,
-Duncan Smith, Brenton Buchbach, Kyle Stevenson, Eliot Lash, Egon Elbre,
-Praveen, williamji, Thomas Schreiber, Neil Ford, Ryan Pratt, Joshua Brand,
-Peter Cox, Markus Engstrom, John Sutherland, Dean Bailey, Ed Summers,
-Hillel Arnold, David Fiander, Kurt Yoder, Trevor Muñoz, keri, Ivan
-Sergeyenko, Shad Bolling, Tal Kelrich, Steve Presley, gerald ocker, Essex
-Taylor, Josh Thomson, Trevor Bramble, Lance Higgins, Frank Motta, Dirk
-Kraft, soundray, Joe Haskins, nmjk, Apurva Desai, Colin Dean, docwhat,
-Joseph Costello, Jst, flamsmark, Alex Lang, Bill Traynor, Anthony David,
-Marc-André Lureau, AlNapp, Giovanni Moretti, John Lawrence, João Paulo
-Pizani Flor, Jim Ray, Gregory Thrush, Alistair McGann, Andrew Wied,
-Koutarou Furukawa, Xiscu Ignacio, Aaron Sachs, Matt, Quirijn, Chet
-Williams, Chris Gray, Bruce Segal, Tom Conder, Louis Tovar, Alex Duryee,
-booltox, d8uv, Decklin Foster, Rafael Cervantes, Micah R Ledbetter, Kevin
-Sjöberg, Johan Strombom, Zachary Cohen, Jason Lewis, Yves Bilgeri, Ville
-Aine, Mark Hurley, Marco Bonetti, Maximilian Haack, Hynek Schlawack,
-Michael Leinartas, Andreas Liebschner, Duotrig, Nat Fairbanks, David
-Deutsch, Colin Hayhurst, calca, Kyle Goodrick, Marc Bobillier, Robert
-Snook, James Kim, Olivier Serres, Jon Redfern, Itai Tavor, Michael
-Fladischer, Rob, Jan Schmid, Thomas H., Anders Söderbäck, Abhishek
-Dasgupta, Jeff Goeke-Smith, Tommy Thorn, bonuswavepilot, Philipp Edelmann,
-Nick, Alejandro Navarro Fulleda, Yann Lallemant, andrew brennan, 
-Dave Allen Barker Jr, Fabian, Lukas Anzinger, Carl Witty, Andy Taylor,
-Andre Klärner, Andrew Chilton, Adam Gibbins, Alexander Wauck, Shane O'Dea,
-Paul Waite, Iain McLaren, Maggie Ellen Robin Hess, Willard Korfhage,
-Nicolas, Eric Nikolaisen, Magnus Enger, Philipp Kern, Andrew Alderwick,
-Raphael Wimmer, Benjamin Schötz, Ana Guerrero, Pete, Pieter van der Eems,
-Aaron Suggs, Fred Benenson, Cedric Howe, Lance Ivy, Tieg Zaharia, Kevin
-Cooney, Jon Williams, Anton Kudris, Roman Komarov, Brad Hilton, Rick Dakan,
-Adam Whitcomb, Paul Casagrande, Evgueni Baldin, Robert Sanders, Kagan
-Kayal, Dean Gardiner, micah altman, Cameron Banga, Ross Mcnairn, Oscar
-Vilaplana, Robin Graham, Dan Gervais, Jon Åslund, Ragan Webber, Noble Hays,
-stephen brown, Sean True, Maciek Swiech, faser, eikenberry, Kai Laborenz,
-Sergey Fedoseev, Chris Fournier, Svend Sorensen, Greg K, wojtek, Johan
-Ribenfors, Anton, Benjamin, Oleg Tsarev, PsychoHazard, John Cochrane,
-Kasper Lauritzen, Patrick Naish, Rob, Keith Nasman, zenmaster, David Royer,
-Max Woolf, Dan Gabber, martin rhoads, Martin Schmidinger, Paul
-Scott-Wilson, Tom Gromak, Andy Webster, Dale Webb, Jim Watson, Stephen
-Hansen, Mircea, Dan Goodenberger, Matthias Fink, Andy Gott, Daniel, Jai
-Nelson, Shrayas Rajagopal, Vladimir Rutsky, Alexander, Thorben Westerhuys,
-hiruki, Tao Neuendorffer Flaherty, Elline, Marco Hegenberg, robert, Balda,
-Brennen Bearnes, Richard Parkins, David Gwilliam, Mark Johnson, Jeff Eaton,
-Reddawn90, Heather Pusey, Chris Heinz, Colin, Phatsaphong Thadabusapa,
-valunthar, Michael Martinez, redlukas, Yury V. Zaytsev, Blake, Tobias
-"betabrain" A., Leon, sopyer, Steve Burnett, bessarabov, sarble, krsch.com,
-Jack Self, Jeff Welch, Sam Pettiford, Jimmy Stridh, Diego Barberá, David
-Steele, Oscar Ciudad, John Braman, Jacob, Nick Jenkins, Ben Sullivan, Brian
-Cleary, James Brosnahan, Darryn Ten, Alex Brem, Jonathan Hitchcock, Jan
-Schmidle, Wolfrzx99, Steve Pomeroy, Matthew Sitton, Finkregh, Derek Reeve,
-GDR!, Cory Chapman, Marc Olivier Chouinard, Andreas Ryland, Justin, Andreas
-Persenius, Games That Teach, Walter Somerville, Bill Haecker, Brandon
-Phenix, Justin Shultz, Colin Scroggins, Tim Goddard, Ben Margolin, Michael
-Martinez, David Hobbs, Andre Le, Jason Roberts, Bob Lopez, Gert Van Gool,
-Robert Carnel, Anders Lundqvist, Aniruddha Sathaye, Marco Gillies, Basti
-von Bejga, Esko Arajärvi, Dominik Deobald, Pavel Yudaev, Fionn Behrens,
-Davide Favargiotti, Perttu Luukko, Silvan Jegen, Marcelo Bittencourt,
-Leonard Peris, smercer, Alexandre Dupas, Solomon Matthews, Peter Hogg,
-Richard E. Varian, Ian Oswald, James W. Sarvey, Ed Grether, Frederic
-Savard, Sebastian Nerz, Hans-Chr. Jehg, Matija Nalis, Josh DiMauro, Jason
-Harris, Adam Byrtek, Tellef, Magnus, Bart Schuurmans, Giel van Schijndel,
-Ryan, kiodos, Richard 'maddog' Collins, PawZubr, Jason Gassel, Alex
-Boisvert, Richard Thompson, maddi bolton, csights, Aaron Bryson, Jason Chu,
-Maxime Côté, Kineteka Systems, Joe Cabezas, Mike Czepiel, Rami Nasra,
-Christian Simonsen, Wouter Beugelsdijk, Adam Gibson, Gal Buki, James
-Marble, Alan Chambers, Bernd Wiehle, Simon Korzun, Daniel Glassey, Eero af
-Heurlin, Mikael, Timo Engelhardt, Wesley Faulkner, Jay Wo, Mike Belle,
-David Fowlkes Jr., Karl-Heinz Strass, Ed Mullins, Sam Flint,
-Hendrica, Mark Emer Anderson, Joshua Cole, Jan Gondol, Henrik Lindhe,
-Albert Delgado, Patrick, Alexa Avellar, Chris, sebsn1349, Maxim Kachur,
-Andrew Marshall, Navjot Narula, Alwin Mathew, Christian Mangelsdorf, Avi
-Shevin, Kevin S., Guillermo Sanchez Estrada, Alex Krieger, Luca Meier, Will
-Jessop, Nick Ruest, Lani Aung, Ulf Benjaminsson, Rudi Engelbrecht, Miles
-Matton, Cpt_Threepwood, Adam Kuyper, reacocard, David Kilsheimer, Peter
-Olson, Bill Fischofer, Prashant Shah, Simon Bonnick, Alexander Grudtsov,
-Antoine Boegli, Richard Warren, Sebastian Rust, AlmostHuman, Timmy
-Crawford, PC, Marek Belski, pontus, Douglas S Butts, Eric Wallmander, Joe
-Pelar, VIjay, Trahloc, Vernon Vantucci, Matthew baya, Viktor Štujber,
-Stephen Akiki, Daniil Zamoldinov, Atley, Chris Thomson, Jacob Briggs, Falko
-Richter, Andy Schmitz, Sergi Sagas, Peder Refsnes, Jonatan, Ben, Bill
-Niblock, Agustin Acuna, Jeff Curl, Tim Humphrey, bib, James Zarbock,
-Lachlan Devantier, Michal Berg, Jeff Lucas, Sid Irish, Franklyn, Jared
-Dickson, Olli Jarva, Adam Gibson, Lukas Loesche, Jukka Määttä, Alexander
-Lin, Dao Tran, Kirk, briankb, Ryan Villasenor, Daniel Wong, barista, Tomas
-Jungwirth, Jesper Hansen, Nivin Singh, Alessandro Tieghi, Billy Roessler,
-Peter Fetterer, Pallav Laskar, jcherney, Tyler Wang, Steve, Gigahost, Beat
-Wolf, Hannibal Skorepa, aktiveradio, Mark Nunnikhoven, Bret Comnes, Alan
-Ruttenberg, Anthony DiSanti, Adam Warkiewicz, Brian Bowman, Jonathan, Mark
-Filley, Tobias Mohr, Christian St. Cyr, j. faceless user, Karl Miller,
-Thomas Taimre, Vikram, Jason Mountcastle, Jason, Paul Elliott, Alexander,
-Stephen Farmer, rayslava, Peter Leurs, Sky Kruse, JP Reeves, John J Schatz,
-Martin Sandmair, Will Thompson, John Hergenroeder, Thomas, Christophe
-Ponsart, Wolfdog, Eagertolearn, LukasM, Federico Hernandez, Vincent Bernat,
-Christian Schmidt, Cameron Colby Thomson, Josh Duff, James Brown, Theron
-Trowbridge, Falke, Don Meares, tauu, Greg Cornford, Max Fenton, Kenneth
-Reitz, Bruce Bensetler, Mark Booth, Herb Mann, Sindre Sorhus, Chris
-Knadler, Daniel Digerås, Derek, Sin Valentine, Ben Gamari, david
-lampenscherf, fardles, Richard Burdeniuk, Tobias Kienzler, Dawid Humbla,
-Bruno Barbaroxa, D Malt, krivar, James Valleroy, Peter, Tim Geddings,
-Matthias Holzinger, Hanen, Petr Vacek, Raymond, Griff Maloney, Andreas
-Helveg Rudolph, Nelson Blaha, Colonel Fubar, Skyjacker Captain Gavin
-Phoenix, shaun, Michael, Kari Salminen, Rodrigo Miranda, Alan Chan, Justin
-Eugene Evans, Isaac, Ben Staffin, Matthew Loar, Magos, Roderik, Eugenio
-Piasini, Nico B, Scott Walter, Lior Amsalem, Thongrop Rodsavas, Alberto de
-Paola, Shawn Poulen, John Swiderski, lluks, Waelen, Mark Slosarek, Jim
-Cristol, mikesol, Bilal Quadri, LuP, Allan Nicolson, Kevin Washington,
-Isaac Wedin, Paul Anguiano, ldacruz, Jason Manheim, Sawyer, Jason
-Woofenden, Joe Danziger, Declan Morahan, KaptainUfolog, Vladron, bart, Jeff
-McNeill, Christian Schlotter, Ben McQuillan, Anthony, Julian, Martin O,
-altruism, Eric Solheim, MarkS, ndrwc, Matthew, David Lehn, Matthew
-Cisneros, Mike Skoglund, Kristy Carey, fmotta, Tom Lowenthal, Branden
-Tyree, Aaron Whitehouse
-
-### Also thanks to
-
-* The Kickstarter team, who have unleashed much good on the world.
-* The Haskell developers, who toiled for 20 years in obscurity
-  before most of us noticed them, and on whose giant shoulders I now stand,
-  in awe of the view.
-* The Git developers, for obvious reasons.
-* All of git-annex's early adopters, who turned it from a personal
-  toy project into something much more, and showed me the interest was there.
-* Rsync.net, for providing me a free account so I can make sure git-annex
-  works well with it.
-* LeastAuthority.com, for providing me a free Tahoe-LAFS grid account,
-  so I can test git-annex with that, and back up the git-annex assistant
-  screencasts.
-* Anna and Mark, for the loan of the video camera; as well as the rest of
-  my family, for your support. Even when I couldn't explain what I was
-  working on.
-* The Hodges, for providing such a congenial place for me to live and work
-  on these first world problems, while you're off helping people in the
-  third world.
-* And Mom, for stamping and stuffing so many thank you envelopes, and all the
-  rhubarb pies.
diff --git a/doc/tips.mdwn b/doc/tips.mdwn
deleted file mode 100644
--- a/doc/tips.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-This page is a place to document tips and techniques for using git-annex.
-
-[[!inline pages="tips/* and !tips/*/*" archive="yes"
-rootpage="tips" postformtext="Add a new tip about:" show=0]]
diff --git a/doc/tips/Accessing_files_in_bare_remotes_without_git-annex.mdwn b/doc/tips/Accessing_files_in_bare_remotes_without_git-annex.mdwn
deleted file mode 100644
--- a/doc/tips/Accessing_files_in_bare_remotes_without_git-annex.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-
-git-annex is amazing for my large files backup necessities, but I am a bit scared for the long-term possibility of accessing data, without git-annex.
-
-For this reason I have prepared a small Python tool that accesses the content of bare git-annex repositories. The tool retrieves the locations of a file, and the path to the file in the current annex. This works with the last v6 version of the git-annex format.
-
-This is motivated by the fact that in the master branch the files are stores as links to .git/annex/objects/XX/YY/KEY/KEY (as it is correct for non-bare repos), while in the bare the files are stored in annex/objecst/ZZ/WW/KEY/KEY.
-
-The source code is available here: <https://gist.github.com/eruffaldi/924f6b53a63dede6e59f>
diff --git a/doc/tips/Bup_repositories_in_git-annex.mdwn b/doc/tips/Bup_repositories_in_git-annex.mdwn
deleted file mode 100644
--- a/doc/tips/Bup_repositories_in_git-annex.mdwn
+++ /dev/null
@@ -1,51 +0,0 @@
-I'd like to share my setup for keeping [bup](https://github.com/bup/bup/) repositories in git-annex.¹
-I'm not sure if this is a *good* tip, so comments are welcome.
-
-The purpose of this setup is to (kind of) bring encryption to bup,
-and make it easy to keep bup backups in untrusted storage by making use of the encryption modes and backends provided by git-annex.
-This approach can be used to make encrypted *backups of bup repositories*;
-it can not replace encrypted filesystems such as EncFS or S3QL
-which wouldn't necessarily require local bup repositories but also can't be combined with storage like Amazon Glacier.
-
-To add a bup repository to git-annex, initialize a regular indirect git-annex repository,
-and make the bup repository a subdirectory of it.²
-Then `git annex add $BUP_REPO/objects/packs`, i.e. the location of the large data files (.pack & .par2).
-The rest of the bup repository should be tracked by Git (`git add $BUP_REPO`).³
-This way the repository stays fully functional.
-
-After a bup-save the following steps will synchronize all remotes:⁴
-
-    git annex add $BUP_REPO/objects/pack
-    git add $BUP_REPO
-    git commit -m "Backup on $(date)"
-	git annex sync --content
-
-In my current setup, the git-annex repositories are located on a local file server.
-Various clients use bup to create backups on the server.
-This server also makes backups of other servers.
-Afterwards, it uploads the annexed data to Glacier
-(via an [encrypted S3 special remote](/special_remotes/S3/)),
-and pushes the small Git repositories to an S3QL filesystem and another off-site server.
-Using these repositories (and my GPG key) the bup repositories could be recovered.
-
-It may be important to note that in order to be able to *access* a bup repository,
-*all* files have to be available locally.
-Bup will not function if any pack files are missing (maybe this can be improved?).
-
------
-
-¹) Not to be confused with git-annex's [bup special remote](/special_remotes/bup/).
-
-²) You can't initialize git-annex repositories directly inside bup repositories
-because git-annex will (rightfully) identify them as bare git repositories and set itself up accordingly.
-
-³) I've come up with these .gitignore rules to exclude potentially large files not needed for recovery:
-
-    /bup_repo/bupindex*
-    /bup_repo/objects/pack/bup.bloom
-    /bup_repo/objects/pack/midx*midx
-    /bup_repo/objects/tmp*.pack
-    /bup_repo/index-cache/
-
-⁴) `git annex sync` might not be the safest command to use because it would merge changes from the remotes.
-However, assuming normal bup usage, external changes to the bup repository are not to be expected.
diff --git a/doc/tips/Crude_Windows_Sync.mdwn b/doc/tips/Crude_Windows_Sync.mdwn
deleted file mode 100644
--- a/doc/tips/Crude_Windows_Sync.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-Here's a workaround to start syncing folders on Windows right now. It's a bit command line heavy, so you might need to set this up for your users. But I would much rather do this than use some other syncing solution and then have to migrate.
-
-(1) Create a remote server git annex repository with the assistant on Linux or Mac.
-
-(2) [Install git](http://git-scm.com/) on the Windows machine.
-
-(3) [Install git-annex for Windows](http://git-annex.branchable.com/install/Windows/) on the Windows machine. Don't forget to run the installer as administrator.
-
-(4) Run _Git Bash_ from the system menu, and run these commands to clone your repository.
-
-    ssh-keygen
-    cat .ssh/id_rsa.pub | ssh username@my-server.com "cat >> ~/.ssh/authorized_keys"
-    git clone username@my-server.com:/path/to/annex
-    cd annex
-    git annex init
-
-(5) Create a script that will trigger a full sync
-
-    echo '
-    #!/bin/bash
-    git annex sync
-    git annex get *
-    git annex add .
-    git annex sync
-    git annex copy * --to origin  
-    ' > sync.sh
-    chmod +x sync.sh
-    ./sync.sh
-
-(6) Copy the "Git Bash" shortcut from your windows menu to your desktop, and change the link target to:
-
-    C:\Program Files\Git\bin\sh.exe" --login -i "annex/sync.sh"
-
-Now ask your users to run this shortcut before and after they change files. You can also put it into the "autostart" folder to sync at boot.
-
diff --git a/doc/tips/Decentralized_repository_behind_a_Firewall.mdwn b/doc/tips/Decentralized_repository_behind_a_Firewall.mdwn
deleted file mode 100644
--- a/doc/tips/Decentralized_repository_behind_a_Firewall.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-If you're anything like me¹, you have a copy of your annex on a computer running at home², set up so you can access it from anywhere like this:
-
-    ssh myhome.no-ip.org
-
-This is totally great! Except, there is no way for your home computer to pull your changes, because there is no *on-the-go.no-ip.org*. You can get clunky and use a *bare git repository and git push*, but there is a better way.
-
-First, install *openssh-server* on your *on-the-go* computer
-
-    sudo apt-get install openssh-server # Adjust to your flavor of unix
-
-Then, log into your *home* computer, with *port forwarding*:
-
-    ssh me@myhome.no-ip.org -R 2201:localhost:22
-
-Your *home* computer can now ssh into your *on-the-go* computer, as long as you keep the above shell running.
-
-You can now add your *on-the-go* computer as a remote on your *home* computer. Use the port forwarding shell you just connected with the command above, if you like. 
-
-    ssh-keygen -t rsa
-    ssh-copy-id "me@localhost -p 2201"
-    cd ~/annex
-    git remote add on-the-go ssh://me@localhost:2201/home/myuser/annex
-
-Now you can run normal annex operations, as long as the port forwarding shell is running³.
-
-    git annex sync
-    git annex get on-the-go some/big/file
-    git annex info
-
-You can add more computers by repeating with a different port, e.g. 2202 or 2203 (or any other).
-
-If you're security paranoid (like me), read on. If you're not, that's it! Thanks for reading!
-
----
-Paranoid Area
-
-Note you're granting passwordless access to your on-the-go computer to your home computer. I believe that's all right, as long as:
-
-* Your home computer is really in your home, and not at a friend's house or some datacenter
-* Your home computer can be accessed only by ssh, and not HTTP or Samba or NTP or (shoot me now!) FTP
-* Only you (and perhaps trustworthy family) have access to your home computer
-* You have reasonably strong passwords or key-only logins on both your home and on-the-go computers.
-* You regularly install security updates on both computers (sudo apt-get update && sudo apt-get upgrade)
-
-In any case, the setup is much, much, much more secure than Dropbox. With Dropbox, you have exactly the same setup, but:
-
-* Your data is stored in some datacenter. It's supposed to be encrypted. It might not be.
-* Lot's of people have routine access to your files, and plausible reason to. Bored employees might regularly be doing some 'maintenance work' involving your pictures.
-* The dropbox software can do anything it likes on your computer, and it's closed source so you don't know if it does. A disgruntled employee could put a trojan into it.
-* Dropbox might have a backdoor for employee access to any file on your computer. This might be done with the best of intentions, but a mal-intentioned or careless employee might still erase things or send sensitive files from your computer by email.
-* A truly huge amount of eyes connected to incredibly smart brains have looked at openssh and found it secure. Everybody trusts openssh. With dropbox, there is, well, dropbox. Whoever that is.
-
------
-
-¹ Me=Carlo, not Joey. I'm pretty sure doing what I wrote here is a good idea, but in case it turns out to be catastrophically dumb, it's my fault, not his.
-
-² My always-on computer at home is a raspberry pi with a 32GB USB stick. Best self-hosted dropbox you could imagine.
-
-³ You can just forward the port, but not open a shell, by adding the -N command. This could be useful for connecting on startup, e.g. in /etc/rc.local. I prefer to open the shell to forward the ports, maybe use it, and close it to stop it.
diff --git a/doc/tips/Decrypting_files_in_special_remotes_without_git-annex.mdwn b/doc/tips/Decrypting_files_in_special_remotes_without_git-annex.mdwn
deleted file mode 100644
--- a/doc/tips/Decrypting_files_in_special_remotes_without_git-annex.mdwn
+++ /dev/null
@@ -1,123 +0,0 @@
-One of the selling points of `git-annex` is that it uses standard tools like `git` and `gpg` to deal with files, so that years from now it should be possible to explore and get useful data out of an old annex repository (this helps with [[future_proofing]]). If for whatever reason you need to decrypt files on [[special_remotes]] that use [[encryption]] without using `git-annex`, this can be done fairly easily using `gpg` (and `openssl` to compute the HMAC keys used to create the file names used on the special remote so you can look up the right file to decrypt). Here is an example script demonstrating how to compute the special remote file names and how to decrypt the special remote files.
-
-    #!/usr/bin/env bash
-    
-    usage() {
-    	echo "Usage: ga_decrypt.sh -r REMOTE [-k SYMLINK] [-d FILE]"
-    	echo ""
-    	echo "    Either lookups up key on REMOTE for annex file linked with SYMLINK"
-    	echo "    or decrypts FILE encrypted for REMOTE."
-    	echo ""
-    	echo "    -r: REMOTE is special remote to use"
-    	echo "    -k: SYMLINK is symlink in annex to print encrypted special remote key for"
-    	echo "    -d: FILE is path to special remote file to decrypt to STDOUT"
-    	echo ""
-    	echo "NOTES: "
-    	echo "    * Run in an indirect git annex repo."
-    	echo "    * Must specify -k or -d."
-    	echo "    * -k prints the key including the leading directory names used for a "
-    	echo "       directory remote (even if REMOTE is not a directory remote)"
-    	echo "    * -d works on a locally accessible file. It does not fetch a remote file"
-    	echo "    * Must have gpg and openssl"
-    }
-    
-    decrypt_cipher() {
-    	cipher="$1"
-    	echo "$(echo -n "$cipher" | base64 -d | gpg --decrypt --quiet)"
-    }
-    
-    lookup_key() {
-    	encryption="$1"
-    	cipher="$2"
-    	symlink="$3"
-    
-    	if [ "$encryption" == "hybrid" ] || [ "$encryption" == "pubkey" ]; then
-    		cipher="$(decrypt_cipher "$cipher")"
-    	fi
-    
-    	# Pull out MAC cipher from beginning of cipher
-    	if [ "$encryption" = "hybrid" ] ; then
-    		cipher="$(echo -n "$cipher" | head  -c 256 )"
-    	elif [ "$encryption" = "shared" ] ; then
-    		cipher="$(echo -n "$cipher" | base64 -d | tr -d '\n' | head  -c 256 )"
-    	elif [ "$encryption" = "pubkey" ] ; then
-    		# pubkey cipher includes a trailing newline which was stripped in
-    		# decrypt_cipher process substitution step above
-    		IFS= read -rd '' cipher < <( printf "$cipher\n" )
-    	fi
-    
-    	annex_key="$(basename "$(readlink "$symlink")")"
-    	hash="$(echo -n "$annex_key" | openssl dgst -sha1 -hmac "$cipher" | sed 's/(stdin)= //')"
-    	key="GPGHMACSHA1--$hash"
-    	checksum="$(echo -n $key | md5sum)"
-    	echo "${checksum:0:3}/${checksum:3:3}/$key"
-    }
-    
-    decrypt_file() {
-    	encryption="$1"
-    	cipher="$2"
-    	file_path="$3"
-    
-    	if [ "$encryption" = "pubkey" ] ; then
-    		gpg --quiet --decrypt "${file_path}"
-    	else
-    		if [ "$encryption" = "hybrid" ] ; then
-    			cipher="$(decrypt_cipher "$cipher" | tail -c +257)"
-    		elif [ "$encryption" = "shared" ] ; then
-    			cipher="$(echo -n "$cipher" | base64 -d | tr -d '\n' | tail  -c +257 )"
-    		fi
-    		gpg --quiet --batch --passphrase "$cipher" --output - "${file_path}"
-    	fi
-    }
-    
-    main() {
-    	OPTIND=1
-    
-    	mode=""
-    	remote=""
-    
-    	while getopts "r:k:d:" opt; do
-    		case "$opt" in
-    			r)  remote="$OPTARG"
-    				;;
-    			k)  if [ -z "$mode" ] ; then
-    					mode="lookup key"
-    				else
-    					usage
-    					exit 2
-    				fi
-    				symlink="$OPTARG"
-    				;;
-    			d)  if [ -z "$mode" ] ; then
-    					mode="decrypt file"
-    				else
-    					usage
-    					exit 2
-    				fi
-    				file_path="$OPTARG"
-    				;;
-    		esac
-    	done
-    
-    	if [ -z "$mode" ] || [ -z "$remote" ] ; then
-    		usage
-    		exit 2
-    	fi
-    
-        shift $((OPTIND-1))
-    
-    	# Pull out config for desired remote name
-    	remote_config="$(git show git-annex:remote.log | grep 'name='"$remote ")"
-    
-    	# Get encryption type and cipher from config
-    	encryption="$(echo "$remote_config" | grep -oP 'encryption\=.*? ' | tr -d ' \n' | sed 's/encryption=//')"
-    	cipher="$(echo "$remote_config" | grep -oP 'cipher\=.*? ' | tr -d ' \n' | sed 's/cipher=//')"
-    
-    	if [ "$mode" = "lookup key" ] ; then
-    		lookup_key "$encryption" "$cipher" "$symlink"
-    	elif [ "$mode" = "decrypt file" ] ; then
-    		decrypt_file "$encryption" "$cipher" "${file_path}"
-    	fi
-    }
-
-    main "$@"
diff --git a/doc/tips/Delay_Assistant_Startup_on_Login.mdwn b/doc/tips/Delay_Assistant_Startup_on_Login.mdwn
deleted file mode 100644
--- a/doc/tips/Delay_Assistant_Startup_on_Login.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-# Problem
-I noticed that after installing git-annex assistant, my start up times greatly increased because the assistant does a startup scan while everything else is loading.
-# Solution (for people using Gnome)
-The solution I came up with is to delay the assistant's startup, as well as setting its IO priority as idle. To do this in Gnome 3, run:
-
-    gnome-session-properties
-Find the "Git Annex Assistant" entry in the Startup Programs tab, then click edit. Change this:
-
-    /usr/local/bin/git-annex assistant --autostart (your location of git-annex may be different)
-to this:
-
-    bash -c "sleep 30; ionice -c3 /usr/local/bin/git-annex assistant --autostart" (replace /usr/local/bin to wherever git-annex is installed)
-The "sleep 30" command delays the startup of the assistant by 30 seconds, and "ionice -c3" sets git-annex's IO priority to "idle," the lowest level.
diff --git a/doc/tips/Git_annex_and_Calibre.mdwn b/doc/tips/Git_annex_and_Calibre.mdwn
deleted file mode 100644
--- a/doc/tips/Git_annex_and_Calibre.mdwn
+++ /dev/null
@@ -1,120 +0,0 @@
-The problem
-===========
-
-[Calibre](http://calibre-ebook.com/) is a ebook manager that is
-available in [debian](http://packages.debian.org/sid/calibre). I use
-it to maintain my library, but also to dowload every day an epub
-version of a French newspaper and then put it on my kobo.
-
-Configuring git annex for this
-==============================
-
-I wanted to use git-annex, so
-
-    $ git init
-    $ git annex init "some useful name"
-
-But I don't want every thing in annex, because Calibre use some text
-file to save some metadata, so I used:
-
-    $ git config annex.largefiles "include=* exclude=*.opf exclude=*.json"
-
-then lets add everything
-
-    $ git annex add *
-    $ git add *
-    $ git commit -m "first commit"
-
-Calibre need read and write access on the its database, so let unlock it:
-
-    $ git annex unlock metadata.db
-
-On my other computer I only need to do
-
-    $ git clone $user@$host:Calibre\ library
-    $ cd Calibre\ library
-    $ git annex init "another useful name"
-    $ git annex get .
-    $ git annex unlock metadata.db
-
-The problem is that every time you will `git annex sync`, git annex
-will lock again the metadata.db, so lets unlock it automatically. I
-use git hooks, in `.git/hooks/post-commit` I have
-
-    #!/bin/bash
-
-    git annex edit metadata.db
-
-don't forget to make this file executable
-
-    $ chmod a+x .git/hooks/post-commit
-
-Day to day operation
-====================
-
-    $ git annex add .
-
-Will put new file into the annex
-
-    $ git add .
-
-Will take care of the files that should no go into annex
-
-    $ git annex sync
-
-Will make the repositories exchange informations about all this, and
-make remote change local
-
-    $ git annex get .
-
-Will make remote book locally available
-
-Merge conflict
---------------
-You should not run calibre on the two computer simultaneously, or
-without syncing before it. If you do, you will have a conflict that
-git-annex will automatically *solve* by rename both of the file.
-
-You can then either:
-
- - Choose one. If no books have been changed or added on one of the
-   computer, to use the other `metadata.db` will not make you loose
-   any information
- - rebuild it. `calibredb restore_database` won't do it, but will tell
-   you how to do it.
-
-Checking the library
---------------------
-You can use `calibredb check_library` to check you library is
-correct. If you use git for it, it will always tell you that it is not
-correct: there is this author ".git" it doesn't know about. Just don't
-care about it.
-
-Maybe this can be solved by using `vcsh` but apparently
-`vcsh`+`git annex` it not well tested yet.
-
-Automatic stuff
----------------
-I use `mr` to automatically run all this, but some config could be
-done (I believe) to have `git annex copy --auto` do what it should.
-
-There are also the git annex assistant for this kind of automatic
-synchronizations of contents, but I don't know if my automatic
-unlocking of one file will break this.
-
-It might be interesting to find someway to unlock and lock the library
-only when running calibre, a simple script to launch calibre will do
-that. Note that each time you will lock and unlock, you will have a
-new commit in git.
-
-Another solution
-===================
-You could also use direct mode in place of the auto unlock feature
-
-    git annex direct
-
-The remove the `post-commit` git hook (or do not add it). Its a
-simpler solution, but remember that interaction between git annex direct
-repositories and plain git are complex and sometimes downright dangerous. See [[direct mode]] for details.
-
-In particular, do *not* called `git add *` in the above steps, as that will commit all books into git.
diff --git a/doc/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo.mdwn b/doc/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo.mdwn
deleted file mode 100644
--- a/doc/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-I worked out how to retroactively annex a large file that had been checked into a git repo some time ago.  I thought this might be useful for others, so I am posting it here.
-
-Suppose you have a git repo where somebody had checked in a large file you would like to have annexed, but there are a bunch of commits after it and you don't want to loose history, but you also don't want everybody to have to retrieve the large file when they clone the repo.  This will re-write history as if the file had been annexed when it was originally added.
-
-This command works for me, it relies on the current behavior of git which is to use a directory named .git-rewrite/t/ at the top of the git tree for the extracted tree.  This will not be fast and it will rewrite history, so be sure that everybody who has a copy of your repo is OK with accepting the new history.  If the behavior of git changes, you can specify the directory to use with the -d option.  Currently, the t/ directory is created inside the directory you specify, so "-d ./.git-rewrite/" should be roughly equivalent to the default.
-
-Enough with the explanation, on to the command:
-<pre>
-git filter-branch --tree-filter 'for FILE in file1 file2 file3;do if [ -f "$FILE" ] && [ ! -L "$FILE" ];then git rm --cached "$FILE";git annex add "$FILE";ln -sf `readlink "$FILE"|sed -e "s:^../../::"` "$FILE";fi;done' --tag-name-filter cat -- --all
-</pre>
-
-replace file1 file2 file3... with whatever paths you want retroactively annexed.  If you wanted bigfile1.bin in the top dir and subdir1/bigfile2.bin to be retroactively annexed try:
-<pre>
-git filter-branch --tree-filter 'for FILE in bigfile1.bin subdir1/bigfile2.bin;do if [ -f "$FILE" ] && [ ! -L "$FILE" ];then git rm --cached "$FILE";git annex add "$FILE";ln -sf `readlink "$FILE"|sed -e "s:^../../::"` "$FILE";fi;done' --tag-name-filter cat -- --all
-</pre>
-
-**If your repo has tags** then you should take a look at the git-filter-branch man page about the --tag-name-filter option and decide what you want to do.  By default this will re-write the tags "nearly properly".
-
-You'll probably also want to look at the git-filter-branch man page's section titled "CHECKLIST FOR SHRINKING A REPOSITORY" if you want to free up the space in the existing repo that you just changed history on.
diff --git a/doc/tips/Internet_Archive_via_S3.mdwn b/doc/tips/Internet_Archive_via_S3.mdwn
deleted file mode 100644
--- a/doc/tips/Internet_Archive_via_S3.mdwn
+++ /dev/null
@@ -1,85 +0,0 @@
-[The Internet Archive](http://www.archive.org/) allows members to upload
-collections using an Amazon S3 
-[compatible API](http://www.archive.org/help/abouts3.txt), and this can
-be used with git-annex's [[special_remotes/S3]] support. 
-
-So, you can locally archive things with git-annex, define remotes that
-correspond to "items" at the Internet Archive, and use git-annex to upload
-your files to there. Of course, your use of the Internet Archive must
-comply with their [terms of service](http://www.archive.org/about/terms.php).
-
-A nice added feature is that whenever git-annex sends a file to the
-Internet Archive, it records its url, the same as if you'd run `git annex
-addurl`. So any users who can clone your repository can download the files
-from archive.org, without needing any login or password info. This makes
-the Internet Archive a nice way to publish the large files associated with
-a public git repository.
-
-## webapp setup
-
-Just go to "Add Another Repository", pick "Internet Archive",
-and you're on your way.
-
-## basic setup
-
-Sign up for an account, and get your access keys here:
-<http://www.archive.org/account/s3.php>
-	
-	# export AWS_ACCESS_KEY_ID=blahblah
-	# export AWS_SECRET_ACCESS_KEY=xxxxxxx
-
-Specify `host=s3.us.archive.org` when doing `initremote` to set up
-a remote at the Archive. This will enable a special Internet Archive mode:
-Encryption is not allowed; you are required to specify a bucket name
-rather than having git-annex pick a random one; and you can optionally
-specify `x-archive-meta*` headers to add metadata as explained in their
-[documentation](http://www.archive.org/help/abouts3.txt).
-
-	# git annex initremote archive-panama type=S3 \
-		host=s3.us.archive.org bucket=panama-canal-lock-blueprints \
-		x-archive-meta-mediatype=texts x-archive-meta-language=eng \
-		x-archive-meta-title="original Panama Canal lock design blueprints"
-	initremote archive-panama (Internet Archive mode) ok
-	# git annex describe archive-panama "a man, a plan, a canal: panama"
-	describe archive-panama ok
-
-Then you can annex files and copy them to the remote as usual:
-
-	# git annex add photo1.jpeg --backend=SHA256E
-	add photo1.jpeg (checksum...) ok
-	# git annex copy photo1.jpeg --fast --to archive-panama
-	copy (to archive-panama...) ok
-
-Once a file has been stored on archive.org, it cannot be (easily) removed
-from it. Also, git-annex whereis will tell you a public url for the file
-on archive.org. (It may take a while for archive.org to make the file
-publically visibile.)
-
-Note the use of the SHA256E [[backend|backends]] when adding files. That is
-the default backend used by git-annex, but even if you don't normally use
-it, it makes most sense to use the WORM or SHA256E backend for files that
-will be stored in the Internet Archive, since the key name will be exposed
-as the filename there, and since the Archive does special processing of
-files based on their extension.
-
-## publishing only one subdirectory
-
-Perhaps you have a repository with lots of files in it, and only want
-to publish some of them to a particular Internet Archive item. Of course
-you can specify which files to send manually, but it's useful to
-configure [[preferred_content]] settings so git-annex knows what content
-you want to store in the Internet Archive.
-
-One way to do this is using the "public" repository type.
-
-	git annex enableremote archive-panama preferreddir=panama
-	git annex wanted archive-panama standard
-	git annex group archive-panama public
-
-Now anything in a "panama" directory will be sent to that remote,
-and anything else won't. You can use `git annex copy --auto` or the
-assistant and it'll do the right thing.
-
-When setting up an Internet Archive item using the webapp, this
-configuration is automatically done, using an item name that the user
-enters as the name of the subdirectory.
diff --git a/doc/tips/Repositories_with_large_number_of_files.mdwn b/doc/tips/Repositories_with_large_number_of_files.mdwn
deleted file mode 100644
--- a/doc/tips/Repositories_with_large_number_of_files.mdwn
+++ /dev/null
@@ -1,48 +0,0 @@
-Just as git does not scale well with large files, it can also become painful to work with when you have a large *number* of files. Below are things I have found to minimise the pain.
-
-# Using version 4 index files
-
-During operations which affect the index, git writes an entirely new index out to index.lck and then replaces .git/index with it. With a large number of files, this index file can be quite large and take several seconds to write every time you manipulate the index!
-
-This can be mitigated by changing it to version 4 which uses path compression to reduce the filesize:
-
-    git update-index --index-version 4
-
-*NOTE: The git documentation warns that this version may not be supported by other git implementations like JGit and libgit2.*
-
-Personally, I saw a reduction from 516MB to 206MB (*40% of original size*) and got a much more responsive git!
-
-It may also be worth doing the same to git-annex's index:
-
-    GIT_INDEX_FILE=.git/annex/index git update-index --index-version 4
-
-Though I didn't gain as much here with 89MB to 86MB (96% of original size).
-
-# Packing
-
-As I have gc disabled:
-
-    git config gc.auto 0
-
-so I control when it is run, I ended up with a lot of loose objects which also cause slowness in git. Using
-
-    git count-objects
-
-to tell me how many loose objects I have, when I reach a threshold (~25000), I pack those loose objects and clean things up:
-
-    git repack -d
-    git gc
-    git prune
-
-# File count per directory
-
-If it takes a long time to list the files in a directory, naturally, git(-annex) will be affected by this bottleneck.
-
-You can avoid this by keeping the number of files in a directory to between 5000 and 20000 (depends on the filesystem and its settings).
-
-[fpart](http://contribs.martymac.org/fpart/) can be a very useful tool to achieve this.
-
-## Topics discussing this sort of usage
-
-* [[forum/Handling_a_large_number_of_files]]
-* [[forum/__34__git_annex_sync__34___synced_after_8_hours]]
diff --git a/doc/tips/Shamir_secret_sharing_and_git-annex.mdwn b/doc/tips/Shamir_secret_sharing_and_git-annex.mdwn
deleted file mode 100644
--- a/doc/tips/Shamir_secret_sharing_and_git-annex.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Combining git-annex with [Shamir secret sharing](http://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing)
-is an useful way to securely back up highly sensitive files,
-such as a gpg key or bitcoin wallet.
-
-Shamir secret sharing creates N shares of a file, of which any M can be
-used to reconstitute the original file. Anyone who has less than M shares
-cannot tell anything about the original file, other than its size.
-
-Where git-annex comes in is as a way to manage these shares. They can be
-added to the annex, and then git-annex used to move one share to each clone
-of the repository. Since git-annex keeps track of where each file is
-stored, this can aid later finding the shares again when they're needed, as
-well as making ongoing management of the shares easier.
-
-Note that this conveniece comes at a price: Any attacker who gets a copy
-of the git repository can use it to figure out where the shares are
-located. While this is not a crippling flaw, and can be worked around, it
-needs to be considered when implementing this technique.
-
-Here is an example of this method being used for a ~/.gnupg directory:
-<http://git.kitenet.net/?p=gpg.git;a=blob;f=README.sss>
diff --git a/doc/tips/Synology_NAS_and_git_annex.mdwn b/doc/tips/Synology_NAS_and_git_annex.mdwn
deleted file mode 100644
--- a/doc/tips/Synology_NAS_and_git_annex.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-# How to use git-annex on a Synology NAS
-
-This is known to work with DSM 4.3-3810 Update 1 and git-annex standalone version 5.20131224-g6ca5271.
-
-## Installation Steps
-
-(1) In the DSM Package Center, install Git, which is available from Synology (no third-party repository needed).
-
-(2) Download the latest [[standalone|install/Linux_standalone]] git-annex build for Linux on armel.
-
-(3) Extract it somewhere sensible (eg: a bin/ directory your users home directory)
-
-(4) Go into the git-annex.linux directory and ./runshell. You can now run git-annex as you normally would.
-
-## How to sync with the Synology NAS
-
-### On the Synology
-(1) Setup port forwarding and associated dynamic dns, if applicable. Many good guides online for this.
-
-(2) Setup ssh key based authentication with the Synology for each computer you want to sync with it. You want a specific key that is used only by git-annex, for each computer. Again, many good guides online.
-
-(3) In the Synology .ssh/authorized_keys file for your account, add (substituting your username)
-[[!format sh """
-command="/home/$yourusername/.ssh/git-annex-shell"
-"""]]
-to the beginning of the line. Eg, it would look like this:
-[[!format sh """
-command="/home/greg/.ssh/git-annex-shell" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT1yE96E/JQNPt0ziiNYJRvndCvLK4uG5h/SNYoAIBF1uH6L7VYAt3HWVqSyi3BcV70WDZ/yWgtNzbrcir46JpvEHMcvYaXLbANwoDGNjG/gsz7kP/8VUxZ6hG3P3ICuwnqVum5+rYXm6oj3xzWPfTRhhRoDZLOQdevSNpdGNaa/lSg8Vuq2suHwjQlQb8AIUuCZmS5cm6XwoUq/jJtN4LTuTPqMjzA6NkdhWM2Kigi9jPQBFborkYBPMphmZwBZiVnhsH1XpaOff+mP03D2gF/huC+b1vbWQstjuehUbY59rvJ4ijb3810Uq2ep7dwLagmILtX5GbL+GS64pAn9sIP annex-othercomputer
-"""]]
-
-(4) the git-annex-shell script in your .ssh should be created for you aftering your initial ./runshell
-
-(5) Double check that the script points to the correct directory of where your extracted git-annex.linux lives.
-
-### On the other computers - the manual way
-(1) See step 2 above about creating the specific git-annex ssh keys.
-
-(2) In your .ssh/config, create an alias for your Synology that includes specifying the right sshkey. For example, mine looks like:
-[[!format sh """
-Host synologyhost
-    HostName mydynamicdomain.no-ip.org
-    IdentityFile /home/greg/.ssh/annex_rsa
-"""]]
-
-(3) Now when you clone the git repo from the Synology, or add it as a remote, do the following:
-[[!format sh """
-git clone greg@synologyhost:/absolute/path/to/annexname annexname
-"""]]
-or
-
-[[!format sh """
-git remote add synology greg@synologyhost:/absolute/path/to/annexname
-"""]]
-
-(4) Run git-annex sync
-
-### On the other computers - Using the assistant
-
-(1) Use the webapp to add the remote. I'm not sure if there are any gotchas here as I have not done it this way yet.
diff --git a/doc/tips/The_perfect_preferred_content_settings_for_my_android_phone.mdwn b/doc/tips/The_perfect_preferred_content_settings_for_my_android_phone.mdwn
deleted file mode 100644
--- a/doc/tips/The_perfect_preferred_content_settings_for_my_android_phone.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-I have an annex that syncs my personal files on all my computers. It works great. Phones are different.
-
-For one, everything's a bit slower to sync, there's battery considerations, and I just don't need every last old file on my phone. Then there's some files I explicitly don't want on my phone in case it gets lost, like family pictures, passport scans, or private keys.
-
-But I still want photos, videos and voice recordings I make on my phone to be synced to my server. A transfer repo would work, but I want to keep them. Then there's my PDF book collection; that would certainly be nice to always have around in case I have half on hour on a bus. And my music collection ought to be around as well.
-
-So I came up with this solution, and I'm very happy with it.
-
-    include=Music/* or include=Books/* or present
-
-This will sync my music and book collections to my phone whenever I add something new on my computers, and it will sync and keep anything I add to the annex on my phone. Best of all worlds! Impressed how flexible preferred content is. More full-sync folders can be added like this: 
-
-    include=Music/* or include=Books/* or include = Notes/* or present
-
-To add them, I first had to figure out the uuid of my phone repo. So I added a new tab on android, and did
-
-    cd /sdcard/annex
-    git config annex.uuid
-
-Then I went to one of my computers, and did
-
-    git annex vicfg
-
-And changed the line
-
-    content [phone-uuid] = standard
-
-to
-
-    content [phone-uuid] = include=Music/* or include=Books/* or Notes/* or present
-
-and commented out
-
-    #group [phone-uuid] = client
-
-And waited for it to sync.
diff --git a/doc/tips/Using_Git-annex_as_a_web_browsing_assistant.mdwn b/doc/tips/Using_Git-annex_as_a_web_browsing_assistant.mdwn
deleted file mode 100644
--- a/doc/tips/Using_Git-annex_as_a_web_browsing_assistant.mdwn
+++ /dev/null
@@ -1,46 +0,0 @@
-[[todo/wishlist: an "assistant" for web-browsing -- tracking the sources of the downloads]] suggests using git-annex as a tool to store downloads tied
-to their URLs. This also enables people to have their files stored offline,
-while being able to git annex drop them at any time and redownload them
-with git annex get. Additionally, a clone of the repo can be used to
-download whatever files are desired from online.
-
-This tip explains how to implement a similar system to the one described in
-the linked wishlist with existing software and features of git-annex.
-
-The first step is to install the Firefox plugin
-[FlashGot](http://flashgot.net/). We will use it to provide the Firefox
-shortcuts to add things to our annex.
-
-We also need a normal download manager, if we want to get status updates as
-the download is done. We'll need to configure git-annex to use it by
-setting `annex.web-download-command` as Joey describes in his comment on
-[[todo/wishlist: allow configuration of downloader for addurl]]. See the
-manpage [[git-annex]] for more information on setting configuration.
-
-Once we have installed all that, we need a script that has an interface
-which FlashGot can treat as a downloader, but which calls git-annex to do
-the actual downloading. Such a script is available from
-<https://gist.github.com/andyg0808/5342434>. Download it and store it
-somewhere it can live, or cut and paste:
-
-[[!format sh """
-#!/bin/bash
-# $1=folder to cd to (must be a git annex repo)
-# $2=URL to download
-
-cd "$1"
-git-annex addurl "$2"
-"""]]
-
-Finally, we need to configure FlashGot to use the script as a downloader.
-Go to Tools > Add-ons in Firefox. Click "Preferences" on FlashGot. Click
-the Add button next to the list of download managers. Enter a name for the
-git-annex downloader. Choose the script that was downloaded from the
-"Locate executable file" dialog that appears. Now set the command line
-arguments template to be "[FOLDER] [URL]" (you can find more substitution
-expressions in the Placeholders dropdown above the Command line arguments
-template field). You're done!
-
-Go ahead and test it by trying to download a file using FlashGot. It should
-offer as one of its available download managers the new manager you created
-just above. Select it and have fun!
diff --git a/doc/tips/ZSH_completion.mdwn b/doc/tips/ZSH_completion.mdwn
deleted file mode 100644
--- a/doc/tips/ZSH_completion.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-ZSH users, here's some good news: after 2 years of silence, the completion function for git-annex has been updated. It now supports *all* git-annex commands (as of 5.20140517) and has many improvements for completing arguments, remotes, groups, and backends.
-
-To install it:
-
-1. make sure your have Python 3 installed (as `python3` somewhere in your `$PATH`; tested with 3.4, should work with 3.2+)
-2. get it from [GitHub](https://github.com/Schnouki/git-annex-zsh-completion)
-3. copy `_git-annex` to somewhere in your `$fpath` (I use `$HOME/.config/zsh/completion`)
-4. run `autoload -U path/to/_git-annex`
-5. type `git annex <TAB>`
-
-This is very far from being perfect, but it's (IMHO) better than nothing. If you have any issue or suggestion, please [tell me](https://github.com/Schnouki/git-annex-zsh-completion/issues)!
-
-Many thanks to Frank Terbeck and Valentin Haenel, the original authors of this completion function ([source](https://github.com/esc/git-annex-zsh-completion)).
diff --git a/doc/tips/assume-unstaged.mdwn b/doc/tips/assume-unstaged.mdwn
deleted file mode 100644
--- a/doc/tips/assume-unstaged.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-[[!meta title="using assume-unstages to speed up git with large trees of annexed files"]]
-
-Git update-index's assume-unstaged feature can be used to speed
-up `git status` and stuff by not statting the whole tree looking for changed
-files.
-
-This feature works quite well with git-annex. Especially because git
-annex's files are immutable, so aren't going to change out from under it,
-this is a nice fit. If you have a very large tree and `git status` is
-annoyingly slow, you can turn it on:
-
-	git config core.ignoreStat true
-
-When `git mv` and `git rm` are used, those changes *do* get noticed, even
-on assume-unchanged files. When new files are added, eg by `git annex add`,
-they are also noticed.
-
-There are two gotchas. Both occur because `git add` does not stage
-assume-unchanged files.
-
-1. When an annexed file is moved to a different directory, it updates
-   the symlink, and runs `git add` on it. So the file will move,
-   but the changed symlink will not be noticed by git and it will commit a
-   dangling symlink.
-2. When using `git annex migrate`, it changes the symlink and `git adds`
-   it. Again this won't be committed.
-
-These can be worked around by running `git update-index --really-refresh`
-after performing such operations. I hope that `git add` will be changed
-to stage changes to assume-unchanged files, which would remove this
-only complication. --[[Joey]] 
diff --git a/doc/tips/assume-unstaged/comment_1_44abd811ef79a85e557418e17a3927be._comment b/doc/tips/assume-unstaged/comment_1_44abd811ef79a85e557418e17a3927be._comment
deleted file mode 100644
--- a/doc/tips/assume-unstaged/comment_1_44abd811ef79a85e557418e17a3927be._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/2djv2EYwk43rfJIAQXjYt_vfuOU-#a11a6"
- nickname="Olivier R"
- subject="It doesn't work 100%"
- date="2012-05-03T21:42:54Z"
- content="""
-When you remove tracked files... it doesn't show the new status. it's like if the file was ignored.
-
-
-"""]]
diff --git a/doc/tips/assume-unstaged/comment_2_5b589f37cfc03bf7be33a51826cc4dba._comment b/doc/tips/assume-unstaged/comment_2_5b589f37cfc03bf7be33a51826cc4dba._comment
deleted file mode 100644
--- a/doc/tips/assume-unstaged/comment_2_5b589f37cfc03bf7be33a51826cc4dba._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnxlx1UrzVhdy6_gFjzmF42x6QXxBUxg00"
- nickname="Jakukyo"
- subject="comment 2"
- date="2013-09-05T12:14:42Z"
- content="""
-> There are two gotchas...
-
-So just always run `git annex add` after editing a file
-and `git update-index --really-refresh` after migrating
-backend?
-
-"""]]
diff --git a/doc/tips/automatically_adding_metadata.mdwn b/doc/tips/automatically_adding_metadata.mdwn
deleted file mode 100644
--- a/doc/tips/automatically_adding_metadata.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-git-annex's [[metadata]] works best when files have a lot of useful
-metadata attached to them.
-
-To make git-annex automatically set the year and month when adding files,
-run: `git config annex.genmetadata true`
-
-## git commit hook
-
-A git commit hook can be set up to extract lots of metadata from files
-like photos, mp3s, etc. Whenever annexed files are committed, their
-metadata will be extracted and stored.
-
-Download [[pre-commit-annex]] and install it in your git-annex repository
-as `.git/hooks/pre-commit-annex`  
-Remember to make the script executable! `chmod +x .git/hooks/pre-commit-annex`
-
-### using extract
-
-The git commit hook can use extract to get metadata.
-
-Install it from <http://www.gnu.org/software/libextractor/>  
-`apt-get install extract`
-
-Configure which metadata fields to ask extract for: `git config metadata.extract "artist album title camera_make video_dimensions"`
-
-To get a list of all possible fields, run: `extract -L | sed 's/ /_/g'`
-
-### using exiftool
-
-The git commit hook can also use exiftool to get metadata.
-
-Install it from <http://owl.phy.queensu.ca/~phil/exiftool/>  
-`apt-get install libimage-exiftool-perl`
-
-Configure which metadata fields to ask exiftool for: `git config metadata.exiftool "Model ImageSize FocusRange GPSAltitude GPSCoordinates"`
-
-To get a list of all possible fields, run: `exiftool -list`
-
-### using both extract and exiftool
-
-If you want some metadata that extract knows about, and other metadata
-that exiftool knows about, just install them both, and set both
-`metadata.extract` and `metadata.exiftool`.
-
-### overwriting existing metadata
-
-By default, if a git-annex already has a metadata field for a file,
-its value will not be overwritten with metadata taken from files.
-To allow overwriting, run: `git config metadata.overwrite true`
diff --git a/doc/tips/automatically_adding_metadata/pre-commit-annex b/doc/tips/automatically_adding_metadata/pre-commit-annex
deleted file mode 100644
--- a/doc/tips/automatically_adding_metadata/pre-commit-annex
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2014 Joey Hess <id@joeyh.name>
-# Copyright (C) 2016 Klaus Ethgen <Klaus@Ethgen.ch>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#
-# This script can be used to add git-annex metadata to files when they're
-# committed. It is typically installed as .git/hooks/pre-commit-annex
-#
-# You can also run this script by hand, passing it the names of files
-# already checked into git-annex, and it will extract/refresh the git-annex
-# metadata from the files.
-
-tool="$(git config metadata.tool || :)"
-if [ -z "$tool" ]; then
-	tool=extract
-fi
-case "$tool" in
-	exiftool)
-		tool_exec="exiftool -unknown -zip -veryShort -ignoreMinorErrors -use MWG -dateFormat '%Y-%m-%dT%H:%M:%S'"
-	;;
-	*)
-		tool_exec="$tool"
-	;;
-esac
-
-extract_fields="$(git config metadata.extract || :)"
-if [ -n "$extract_fields" ]; then
-	tools=extract
-	extract_want="^($(echo "$extract_fields" | sed -e 's/ /|/g' -e 's/_/ /g'))"
-fi
-exiftool_fields="$(git config metadata.exiftool || :)"
-if [ -n "$exiftool_fields" ]; then
-	tools="exiftool $tools"
-	exiftool_want="^($(echo "$exiftool_fields" | sed -e 's/ /|/g' -e 's/_/ /g'))"
-fi
-if [ -z "$tools" ]; then
-	exit 0
-fi
-
-case "$(git config --bool metadata.overwrite || :)" in
-	true)
-		equal="="
-	;;
-	*)
-		equal="?="
-	;;
-esac
-
-if git rev-parse --verify HEAD >/dev/null 2>&1; then
-	against="HEAD"
-else
-	# Initial commit: diff against an empty tree object
-	against="4b825dc642cb6eb9a060e54bf8d69288fbee4904"
-fi
-
-addmeta() {
-	file="$1"
-	field="$2"
-	value="$3"
-	afield="$(echo "$field" | tr ' ' '_')"
-	git -c annex.alwayscommit=false annex metadata \
-		--set "$afield$equal$value" --quiet -- "$file"
-}
-
-process() {
-	if [ -e "$f" ]; then
-		echo "adding metadata for $f"
-		for tool in $tools; do
-			case "$tool" in
-				exiftool)
-					tool_exec="exiftool -unknown -zip -veryShort -ignoreMinorErrors -use MWG -dateFormat '%Y-%m-%dT%H:%M:%S'"
-				;;
-				*)
-					tool_exec="$tool"
-				;;
-			esac
-			LC_ALL=C $tool_exec "./$f" | eval egrep --text -i \""\$${tool}_want"\" | while read line; do
-				case "$tool" in
-					extract)
-						field="${line%% - *}"
-						value="${line#* - }"
-					;;
-					exiftool)
-						field="${line%%: *}"
-						value="${line#*: }"
-					;;
-				esac
-				
-				if [ -n "$value" ]; then
-					addmeta "$f" "$field" "$value"
-				fi
-			done
-		done
-	fi
-}
-
-if [ -n "$*" ]; then
-	for f in "$@"; do
-		process "$f"
-	done
-else
-	git diff-index --name-only --cached $against | while read f; do
-		process "$f"
-	done
-fi
diff --git a/doc/tips/automatically_getting_files_on_checkout.mdwn b/doc/tips/automatically_getting_files_on_checkout.mdwn
deleted file mode 100644
--- a/doc/tips/automatically_getting_files_on_checkout.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Normally git-annex does not retrieve file contents when checking out a
-tree. In some use cases, it makes sense to always have the contents of
-files available after a `git checkout` or `git update`. This can be
-accomplished by installing the following as `.git/hooks/post-checkout`
-
-	#!/bin/sh
-	# Uses git-annex to get all files in the specified directories
-	# (relative to the top of the repository) on checkout.
-	dirs=.
-	top="$(git rev-parse --show-toplevel)"
-	for dir in "$dirs"; do git annex get $top/$dir"; done
-
-By default, all files in the whole repository will be made available. The
-`dirs` setting can be configured if you only want to get files in certian
-directories. 
diff --git a/doc/tips/beware_of_SSD_wear_when_doing_fsck_on_large_special_remotes.mdwn b/doc/tips/beware_of_SSD_wear_when_doing_fsck_on_large_special_remotes.mdwn
deleted file mode 100644
--- a/doc/tips/beware_of_SSD_wear_when_doing_fsck_on_large_special_remotes.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-When git annex does fsck on (for example) a GPG-encrypted special directory remote, it first transfers the whole file into .git/annex/tmp directory.
-If your annex is on an SSD, it's a good idea to make .git/annex/tmp a symlink to say /var/tmp so SSD isn't worn down.  This actually may be a better default.
diff --git a/doc/tips/centralised_repository__58___starting_from_nothing.mdwn b/doc/tips/centralised_repository__58___starting_from_nothing.mdwn
deleted file mode 100644
--- a/doc/tips/centralised_repository__58___starting_from_nothing.mdwn
+++ /dev/null
@@ -1,71 +0,0 @@
-If you are starting from nothing (no existing `git` or `git-annex` repository) and want to use a server as a centralised repository, try the following steps.
-
-On the server where you'll hold the "master" repository:
-
-	server$ cd /one/git
-	server$ mkdir m
-	server$ cd m
-	server$ git init --bare
-	Initialized empty Git repository in /one/git/m/
-	server$ git annex init origin
-	init origin ok
-	server$ 
-
-Clone that to the laptop:
-
-	laptop$ cd /other
-	laptop$ git clone ssh://server//one/git/m
-	Cloning into 'm'...
-	remote: Counting objects: 5, done.        
-	remote: Compressing objects: 100% (3/3), done.        
-	remote: Total 5 (delta 0), reused 0 (delta 0)        
-	Receiving objects: 100% (5/5), done.
-	warning: remote HEAD refers to nonexistent ref, unable to checkout.
-
-	laptop$ cd m
-	laptop$ git annex init laptop
-	init laptop ok
-        laptop$ 
-
-Add some content:
-
-	laptop$ git annex addurl http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg
-	addurl kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg (downloading http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg ...) --2011-12-15 08:13:10--  http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg
-	Resolving kitenet.net (kitenet.net)... 2001:41c8:125:49::10, 80.68.85.49
-	Connecting to kitenet.net (kitenet.net)|2001:41c8:125:49::10|:80... connected.
-	HTTP request sent, awaiting response... 200 OK
-	Length: 39362757 (38M) [audio/ogg]
-	Saving to: `/other/m/.git/annex/tmp/URL--http&c%%kitenet.net%~joey%screencasts%git-annex_coding_in_haskell.ogg'
-
-	100%[======================================>] 39,362,757  2.31M/s   in 17s     
-
-	2011-12-15 08:13:27 (2.21 MB/s) - `/other/m/.git/annex/tmp/URL--http&c%%kitenet.net%~joey%screencasts%git-annex_coding_in_haskell.ogg' saved [39362757/39362757]
-
-	(checksum...) ok
-	(Recording state in git...)
-
-Don't forget to commit it:
-
-	laptop$ git commit -m 'See Joey play.'
-	[master (root-commit) 106e923] See Joey play.
-	 1 files changed, 1 insertions(+), 0 deletions(-)
-	  create mode 120000 kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg
-	laptop$ 
-
-All fine, now push it back to the centralised master:
-
-	laptop$ git push origin master
-	Counting objects: 20, done.
-	Delta compression using up to 4 threads.
-	Compressing objects: 100% (11/11), done.
-	Writing objects: 100% (18/18), 1.50 KiB, done.
-	Total 18 (delta 1), reused 1 (delta 0)
-	To ssh://server//one/git/m
-	   3ba1386..ad3bc9e  git-annex -> git-annex
-	laptop$ 
-
-You'll probably want to use `git annex copy --to origin` to copy the
-annexed file contents to the server. See the [[walkthrough]] for details.
-
-You can add more "client" repositories by following the `laptop`
-sequence of operations.
diff --git a/doc/tips/centralized_git_repository_tutorial.mdwn b/doc/tips/centralized_git_repository_tutorial.mdwn
deleted file mode 100644
--- a/doc/tips/centralized_git_repository_tutorial.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-The [[walkthrough]] builds up a decentralized git repository setup, but
-git-annex can also be used with a centralized git repository. 
-
-We have separate tutorials depending on where the centralized git
-repository is hosted.
-
-* [[centralized_git_repository_tutorial/On_GitHub]] --
-  However, GitHub does not currently let git-annex
-  store the contents of large files there. So, things get a little more
-  complicated when using it.
-
-* [[centralized_git_repository_tutorial/On_GitLab]] -- 
-  This service is similar to GitHub, but supports
-  git-annex.
-
-* [[centralized_git_repository_tutorial/On_your_own_server]] --
-  use any unix system with ssh and git and git-annex installed.
-  A VPS, a home server, etc.
diff --git a/doc/tips/centralized_git_repository_tutorial/on_GitHub.mdwn b/doc/tips/centralized_git_repository_tutorial/on_GitHub.mdwn
deleted file mode 100644
--- a/doc/tips/centralized_git_repository_tutorial/on_GitHub.mdwn
+++ /dev/null
@@ -1,129 +0,0 @@
-This tutorial shows how to set up a centralized repository hosted on
-GitHub.
-
-GitHub does not currently let git-annex store the contents of large files
-there. This doesn't prevent using git-annex with GitHub, it just means you
-have to set up some other centralized location for the large files.
-
-## set up the repository, and make a checkout
-
-I've created a repository for technical talk videos, which you can
-[fork on Github](https://github.com/joeyh/techtalks).
-Or make your own repository on GitHub now.
-
-On your laptop, [[install]] git-annex, and clone the repository:
-
-	# git clone git@github.com:joeyh/techtalks.git
-	# cd techtalks
-
-Tell git-annex to use the repository, and describe where this clone is
-located:
-
-	# git annex init 'my laptop'
-	init my laptop ok
-
-## add files to the repository
-
-Add some files, obtained however.
-
-	# git annex add *.mp4
-	add Haskell_Amuse_Bouche-b9OVqxmI.mp4 (checksum) ok
-	(Recording state in git...)
-	# git commit -m "added a video. I have not watched it yet but it sounds interesting"
-
-This file is available on the web; so git-annex can download it:
-
-	# git annex addurl http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg
-	addurl kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg
-	(downloading http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg ...)
-	(checksum...) ok
-	(Recording state in git...)
-	# git commit -a -m 'added a screencast I made'
-
-Feel free to rename the files, etc, using normal git commands:
-
-	# git mv Haskell_Amuse_Bouche-b9OVqxmI.mp4 Haskell_Amuse_Bouche.mp4
-	# git mv kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg git-annex_coding_in_haskell.ogg
-	# git commit -m 'better filenames'
-
-Now push your changes back to the central repository on GitHub. As well as 
-pushing the master branch, remember to push the git-annex branch, which is
-used to track the file contents. You can do this push manually as shown
-below, or you can just run `git annex sync` to do the same thing.
-
-	# git push origin master git-annex
-	To git@github.com:joeyh/techtalks.git
-	 * [new branch]      master -> master
-	 * [new branch]      git-annex -> git-annex
-
-That push went fast, because it didn't upload large videos to GitHub.
-To check this, you can ask git-annex where the contents of the videos are:
-
-	# git annex whereis
-	whereis Haskell_Amuse_Bouche.mp4 (1 copy) 
-	  	767e8558-0955-11e1-be83-cbbeaab7fff8 -- here
-	ok
-	whereis git-annex_coding_in_haskell.ogg (2 copies) 
-	  	00000000-0000-0000-0000-000000000001 -- web
-	   	767e8558-0955-11e1-be83-cbbeaab7fff8 -- here
-	ok
-
-## make more checkouts
-
-So far you have a central repository, and a checkout on a laptop.
-You, or anyone you allow to can clone the central repository, and
-use git-annex with it.
-
-But, since GitHub doesn't currently support storing large files there
-with git-annex, other checkouts of your repository won't be able to
-access the files you added to the repository on your laptop.
-
-	# git clone git@github.com:myrepo/techtalks.git
-	# git annex get Haskell_Amuse_Bouche-b9OVqxmI.mp4
-	get Haskell_Amuse_Bouche-b9OVqxmI.mp4
-
-	  Try making some of these repositories available:
-		767e8558-0955-11e1-be83-cbbeaab7fff8 -- my laptop
-	failed
-
-## add a special remote
-
-So, to complete your setup, you need to set up a repository where git-annex
-can store the contents of large files. This is often done by setting up
-a [[special_remote|special_remotes]]. One free option is explained in
-[[using_box.com_as_a_special_remote]]. Another useful approach is
-explained in [[public_Amazon_S3_remote]].
-
-Once you have the special remote set up on your laptop, you can
-send files to it:
-
-	# git annex copy --to myspecialremote Haskell_Amuse_Bouche-b9OVqxmI.mp4
-	copy Haskell_Amuse_Bouche-b9OVqxmI.mp4 (to myspecialremote...)
-	100% 255.11kB/s
-	ok
-
-You can also `git annex move` files to it, to free up space on your laptop.
-And then you can `git annex get` files back to your laptop later on, as
-desired.
-
-After you use git-annex to move files around, remember to sync,
-which will broadcast its updated location information.
-
-	# git annex sync
-
-After setting up the special remote and storing some files on it,
-you can download them on other clones. You'll first need to enable the same
-special remote on the clones.
-
-	# git annex sync
-	# git annex enableremote myspecialremote
-	# git annex get git-annex_coding_in_haskell.ogg
-	100% 255.11kB/s
-	ok
-
-## take it farther
-
-You can add remotes for each direct connection between machines you find you
-need -- so make the laptop have the desktop as a remote, and the desktop
-have the laptop as a remote, and then on either machine git-annex can
-access files stored on the other.
diff --git a/doc/tips/centralized_git_repository_tutorial/on_GitLab.mdwn b/doc/tips/centralized_git_repository_tutorial/on_GitLab.mdwn
deleted file mode 100644
--- a/doc/tips/centralized_git_repository_tutorial/on_GitLab.mdwn
+++ /dev/null
@@ -1,76 +0,0 @@
-This tutorial shows how to set up a centralized repository hosted on
-GitLab. 
-
-Since GitLab has [added support for git-annex on their servers](https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/),
-you can store your large files on GitLab, quite easily.
-
-Note that as I'm writing this, GitLab is providing this service for free,
-and will store up to 10 gb per project.
-
-## create the repository
-
-Go to <https://gitlab.com/> and sign up for an account, and create the
-repository there. Take note of the SSH clone url for the repository, which
-will be something like `git@gitlab.com:yourlogin/annex.git`. 
-
-We want to clone this locally, on your laptop. (If the clone fails, you
-need to generate a ssh key and add it to GitLab.)
-
-	# git clone git@gitlab.com:yourlogin/annex.git
-	# cd annex
-
-Tell git-annex to use the repository, and describe where this clone is
-located:
-
-	# git annex init 'my laptop'
-	init my laptop ok
-
-Add some files, obtained however.
-
-	# git annex add *.mp4
-	add Haskell_Amuse_Bouche-b9OVqxmI.mp4 (checksum) ok
-	(Recording state in git...)
-	# git commit -m "added a video. I have not watched it yet but it sounds interesting"
-
-Feel free to rename the files, etc, using normal git commands:
-
-	# git mv Haskell_Amuse_Bouche-b9OVqxmI.mp4 Haskell_Amuse_Bouche.mp4
-	# git commit -m 'better filenames'
-
-## push to GitLab
-
-Now make a first push to the GitLab repository.
-As well as pushing the master branch, remember to push the git-annex
-branch, which is used to track the file contents.
-
-	# git push origin master git-annex
-	To git@gitlab.com:yourlogin/annex.git
-	 * [new branch]      master -> master
-	 * [new branch]      git-annex -> git-annex
-
-That push went fast, because it didn't upload the large file contents yet.
-
-So, to finish up, tell git-annex to sync all the data in the repository
-to GitLab:
-
-	# git annex sync --content
-	...
-
-## make more checkouts
-
-So far you have a central repository on GitLab, and a checkout on a laptop.
-Let's make another checkout elsewhere. Clone the central repository as before.
-(If the clone fails, you need to generate a ssh key and add it to GitLab.)
-
-	elsewhere# git clone git@gitlab.com:yourlogin/annex.git
-	elsewhere# cd annex
-
-Notice that your clone does not have the contents of any of the files yet.
-If you run `ls`, you'll see broken symlinks. It's easy to download them from
-GitLab either by running `git annex sync --content`, or by asking
-git-annex to download individual files:
-
-	# git annex get Haskell_Amuse_Bouche.mp4
-	get Haskell_Amuse_Bouche.mp4 (from origin...)
-	12877824   2%  255.11kB/s    00:00
-	ok
diff --git a/doc/tips/centralized_git_repository_tutorial/on_your_own_server.mdwn b/doc/tips/centralized_git_repository_tutorial/on_your_own_server.mdwn
deleted file mode 100644
--- a/doc/tips/centralized_git_repository_tutorial/on_your_own_server.mdwn
+++ /dev/null
@@ -1,94 +0,0 @@
-This tutorial shows how to set up a centralized git repository
-hosted on your own git server, which can be any unix system with
-ssh and git and git-annex installed. A VPS, a home server, etc.
-
-This sets up a very simple git server. More complex setups are possible.
-See for example [[using_gitolite_with_git-annex]].
-
-## set up the server
-
-On the server, you'll want to [[install]] git, and git-annex, if you haven't
-already. If possible, install it using your distribution's package manager:
-
-	server# sudo apt-get install git git-annex
-
-Note that git-annex-shell needs to be located somewhere in the PATH, so
-that a client can successfully run "ssh yourserver git-annex-shell".
-Installing git-annex using a package manager will take care of this for
-you. But if you're not root or otherwise can't install git-annex that way,
-you may need to do more work; see [[get_git-annex-shell_into_PATH]].
-
-Decide where to put the repository on the server, and create a bare git repo
-there. In your home directory is a simple choice:
-
-	server# cd
-	server# git init annex.git --bare --shared
-
-That's the server setup done!
-
-## make a checkout
-
-Now on your laptop, clone the git repository from the server:
-
-	laptop# git clone ssh://example.com/~/annex.git
-	Cloning into 'annex'...
-	warning: You appear to have cloned an empty repository.
-	Checking connectivity... done.
-
-	
-Tell git-annex to use the repository, and describe where this clone is
-located:
-
-
-	laptop# cd annex
-	laptop# git annex init 'my laptop'
-	init my laptop ok
-
-## add files to the repository
-
-Add some files, obtained however.
-
-	# git annex add *.mp4
-	add Haskell_Amuse_Bouche-b9OVqxmI.mp4 (checksum) ok
-	(Recording state in git...)
-	# git commit -m "added a video. I have not watched it yet but it sounds interesting"
-
-Feel free to rename the files, etc, using normal git commands:
-
-	# git mv Haskell_Amuse_Bouche-b9OVqxmI.mp4 Haskell_Amuse_Bouche.mp4
-	# git commit -m 'better filenames'
-
-Now push your changes back to the central repository on your server. As
-well as pushing the master branch, remember to push the git-annex branch,
-which is used to track the file contents.
-
-	# git push origin master git-annex
-	To git@github.com:joeyh/techtalks.git
-	 * [new branch]      master -> master
-	 * [new branch]      git-annex -> git-annex
-
-That push went fast, because it didn't upload large videos to the server.
-
-So, to finish up, tell git-annex to sync all the data in the repository
-to your server:
-
-	# git annex sync --content
-	...
-
-## make more checkouts
-
-So far you have a central repository on your server, and a checkout on a laptop.
-Let's make another checkout elsewhere. Clone the central repository as before.
-
-	elsewhere# git clone ssh://example.com/~/annex.git
-	elsewhere# cd annex
-
-Notice that your clone does not have the contents of any of the files yet.
-If you run `ls`, you'll see broken symlinks. It's easy to download them from
-your server either by running `git annex sync --content`, or by asking
-git-annex to download individual files:
-
-	# git annex get Haskell_Amuse_Bouche.mp4
-	get Haskell_Amuse_Bouche.mp4 (from origin...)
-	12877824   2%  255.11kB/s    00:00
-	ok
diff --git a/doc/tips/deleting_unwanted_files.mdwn b/doc/tips/deleting_unwanted_files.mdwn
deleted file mode 100644
--- a/doc/tips/deleting_unwanted_files.mdwn
+++ /dev/null
@@ -1,40 +0,0 @@
-It's quite hard to delete a file from a git repository once it's checked in and pushed to origin. This is normally ok, since git repositories contain mostly small files, and a good thing since losing hard work stinks. 
-
-With git-annex this changes some: Very large files can be managed with git-annex, and it's not uncommon to be done with such a file and want to delete it. So, git-annex provides a number of ways to handle this, while still trying to avoid accidental foot shooting that would lose the last copy of an important file.
-
-## the garbage collecting method
-
-In this method, you just remove annexed files whenever you want, and commit the changes. This is probably the most natural way to go.
-
-In an indirect mode repo, you can do this the same way you would in a regular git repository. For example, `git rm foo; git commit -m "removed foo"`. This leaves the contents of the files still in the annex, not really deleted yet.
-
-If you have a direct mode repo, you can't run `git rm` in it. Instead, you can just delete files using `rm` or your file manager, and then run `git annex sync` to commit the deletion. That will delete the file's content from your disk. Even if it's the only copy of the file!
-
-Either way, deleting files can leave some garbage lying around in either the local repository, or other repositories that contained a copy of the content of the file you deleted. Eventually you'll want to free up some disk space used by one of these repositories, and then it's time to take out the garbage.
-
-To collect the garbage, you can run `git annex unused` inside the repository which you want to slim down. That will list files stored in the annex that are not used by any git branches or tags. Followed by `git annex dropunused 1-10` to delete a range of the unused files from the annex.
-
-In recent versions of git-annex, `git annex dropunused` checks that enough other copies of a file's content exist in other repositories before deleting it, so this won't ever delete the last copy of some file. This is a good default, because these unused files are still referred to by some commits in the git history, and you might want to retain the full history of every version of a file.
-
-But, let's say you don't care about that, you only want to keep files that are in use by branches and tags. Then you can use `git annex dropunused --force` with a range of files, which will delete them even if it's the last copy.
-
-Finally, sometimes you want to remove unused files from a special remote. To accomplish this, pass `--from remotename` to the unused and dropunused commands, and they will act on
-files stored in that remote, rather than on the local repository.
-
-## let the assistant take care of it
-
-If you're using the git-annex assistant, you don't normally need to worry about this. Just delete files however you normally would. The assistant will try to migrate unused file contents away from your local repository and store them in whatever backup repositories you've set up.
-
-## delete all the copies method
-
-You have a file. You want that file to immediately vanish from the face of the earth to the best of your abilities.
-
-Note that, since git-annex deduplicates files by default, any files with
-the same content will be removed by these commands.
-
-1. `git annex drop --force file`
-2. `git annex whereis file`
-3. `git annex drop --force file --from $repo` repeat for each repository listed by the whereis command
-4. `rm file; git annex sync`
-
-Of course, if you have offline backup repositories that contain this file, you'll have to bring them online before you can drop it from them, etc.
diff --git a/doc/tips/disabling_a_special_remote.mdwn b/doc/tips/disabling_a_special_remote.mdwn
deleted file mode 100644
--- a/doc/tips/disabling_a_special_remote.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-In our quest to find dumb replacements for [[todo/wishlist: 'get' queue and schedule.]] (and a more complete [[git-annex-schedule]]), we have setup a cronjob that would start and stop the assistant during certain time windows, to ensure that it would not download during prime bandwidth time.
-
-But that isn't exactly what we're looking for: we would like the assistant to continue doing its usual thing of adding and removing files, and even syncing the git branches. Just not get/move files around.
-
-One way I thought of doing this was to disable a remote locally. [[git-annex-dead]] of course comes to mind, but that applies to all repositories, so it's not an option. If the remote was in git, i could just `git remote rm origin` and `git remote add origin` and be done with it, but this is the *web* remote, so it doesn't even show up in `git remote -v`.
-
-But this doesn't work with [[special remotes]]. Another solution is
-simply to use the `remote.name.annex-ignore` configuration documented
-in the main [[git-annex]] manpage. For example, to disable the web
-remote, you would use:
-
-    git config remote.web.annex-ignore false
-
-The result would be:
-
-	joey@darkstar:~/tmp/a>git annex addurl --fast http://localhost
-	addurl localhost ok
-	(recording state in git...)
-	joey@darkstar:~/tmp/a>git config remote.web.annex-ignore true
-	joey@darkstar:~/tmp/a>git annex get localhost
-	get localhost (not available) 
-	  Try making some of these repositories available:
-	  	00000000-0000-0000-0000-000000000001 -- web
-	
-	  (Note that these git remotes have annex-ignore set: web)
-	failed
-	git-annex: get: 1 failed
-	joey@darkstar:~/tmp/a>git config remote.web.annex-ignore false
-	joey@darkstar:~/tmp/a>git annex get localhost
-	get localhost (from web...) 
-	/home/joey/tmp/a/.g 100%[=====================>]      10  --.-KB/s   in 0s     
-	ok
-
-The assistant (probably?) needs to be restarted for those changes to
-take effect.  --[[anarcat]] and [[joeyh]].
diff --git a/doc/tips/downloading_podcasts.mdwn b/doc/tips/downloading_podcasts.mdwn
deleted file mode 100644
--- a/doc/tips/downloading_podcasts.mdwn
+++ /dev/null
@@ -1,89 +0,0 @@
-You can use git-annex as a podcatcher, to download podcast contents.
-No additional software is required, but your git-annex must be built
-with the Feeds feature (run `git annex version` to check).
-
-All you need to do is put something like this in a cron job:
-
-`cd somerepo && git annex importfeed http://url/to/podcast http://other/podcast/url`
-
-This downloads the urls, and parses them as RSS, Atom, or RDF feeds.
-All enclosures are downloaded and added to the repository, the same as if you
-had manually run `git annex addurl` on each of them.
-
-git-annex will avoid downloading a file from a feed if its url has already
-been stored in the repository before. So once a file is downloaded,
-you can move it around, delete it, `git annex drop` its content, etc,
-and it will not be downloaded again by repeated runs of
-`git annex importfeed`. Just how a podcatcher should behave.
-
-## templates
-
-To control the filenames used for items downloaded from a feed,
-there's a --template option. The default is
-`--template='${feedtitle}/${itemtitle}${extension}'`
-
-Other available template variables:  
-feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid,
-itempubdate, author, title.
-
-## catching up
-
-To catch up on a feed without downloading its contents,
-use `git annex importfeed --relaxed`, and delete the symlinks it creates.
-Next time you run `git annex addurl` it will only fetch any new items.
-
-## fast mode
-
-To add a feed without downloading its contents right now,
-use `git annex importfeed --fast`. Then you can use `git annex get` as
-usual to download the content of an item.
-
-## storing the podcast list in git
-
-You can check the list of podcast urls into git right next to the
-files it downloads. Just make a file named feeds and add one podcast url
-per line.
-
-Then you can run git-annex on all the feeds:
-
-`xargs git-annex importfeed < feeds`
-
-## recreating lost episodes
-
-If for some reason git-annex refuses to download files you are certain are in the podcast, it is quite possible it is because they have already been downloaded. In any case, you can use `--force` to redownload them:
-
-`git-annex importfeed --force http://example.com/feed`
-
-## distributed podcatching
-
-A nice benefit of using git-annex as a podcatcher is that you can
-run `git annex importfeed` on the same url in different clones
-of a repository, and `git annex sync` will sync it all up.
-
-## centralized podcatching
-
-You can also have a designated machine which always fetches all podcstas
-to local disk and stores them. That way, you can archive podcasts with
-time-delayed deletion of upstream content. You can also work around slow
-downloads upstream by podcatching to a server with ample bandwidth or work
-around a slow local Internet connection by podcatching to your home server
-and transferring to your laptop on demand.
-
-## youtube playlists
-
-If your git-annex is also built with quvi support, you can also use
-`git annex importfeed` on youtube playlists. It will automatically download
-the videos linked to by the playlist.
-
-For this you need an rss file containing links to the videos.
-For example, this url currently works:
-<http://gdata.youtube.com/feeds/api/playlists/PLz8ZG1e9MPlzefklz1Gv79icjywTXycR->
-
-## metadata
-
-As well as storing the urls for items imported from a feed, git-annex can
-store additional [[metadata]], like the author, and itemdescription.
-This can then be looked up later, used in [[metadata_driven_views]], etc.
-
-To make all available metadata from the feed be stored:
-`git config annex.genmetadata true`
diff --git a/doc/tips/dropboxannex.mdwn b/doc/tips/dropboxannex.mdwn
deleted file mode 100644
--- a/doc/tips/dropboxannex.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-dropboxannex 0.2.0
-=========
-
-Hook program for gitannex to use dropbox as backend
-
-# Requirements:
-
-    python2
-    python-pkg-resources
-
-Credit for the Dropbox api interface goes to Dropbox.
-
-# Install
-Clone the git repository in your home folder.
-
-    git clone git://github.com/TobiasTheViking/dropboxannex.git 
-
-This should make a ~/dropboxannex folder
-
-# Setup
-Make the file executable, and link it into PATH
-
-    cd ~/dropboxannex; chmod +x git-annex-remote-dropbox; sudo ln -sf `pwd`/git-annex-remote-dropbox /usr/local/bin/git-annex-remote-dropbox
-
-# Commands for gitannex:
-
-    git annex initremote dropbox type=external externaltype=dropbox encryption=shared folder=gitannex
-    git annex describe dropbox "the dropbox library"
-
diff --git a/doc/tips/dumb_metadata_extraction_from_xbmc.mdwn b/doc/tips/dumb_metadata_extraction_from_xbmc.mdwn
deleted file mode 100644
--- a/doc/tips/dumb_metadata_extraction_from_xbmc.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-I wanted to get the list of movies I haven't seen yet in XBMC, and i'm lazy. So I'll use [[metadata]] to be able to extract those movies only, for the road for example.
-
-First I fiddled around with shell scripts to extract the list of those films, which in XBMC-speak means that have a `NULL playCount`. Since there are two ways that XMBC can represent those files (in a `stack://` if there is multiple files for the movie or not), there are two scripts. For "stacked" movies:
-
-    echo 'SELECT files.strFileName FROM movie JOIN files ON files.idFile=movie.idFile JOIN path ON path.idPath=files.idPath WHERE playCount IS NULL AND files.strFileName LIKE "stack://%";' | sqlite3 /home/video/.xbmc/userdata/Database/MyVideos75.db | sed "s#stack://##;s/, /\n/g" | sed "s#/home/media/video/##"
-
-And the rest:
-
-    echo 'SELECT path.strPath || files.strFileName FROM movie JOIN files ON files.idFile=movie.idFile JOIN path ON path.idPath=files.idPath WHERE playCount IS NULL AND files.strFileName NOT LIKE "stack://%";' | sqlite3 /home/video/.xbmc/userdata/Database/MyVideos75.db | sed "s#/home/media/video/##"
-
-Also notice how I remove the absolute prefix for the annex so that i can refer to files as a relative path.
-
-So this quick and dirty hack could have been used to mark files as "new". Unfortunately, this won't unmark them when the playcount increases. So instead I think this should be a field, and we need to extract the playcount. Play around with shell scripting enough to get sick, get back into bad perl habits and you'll end up with this nasty script: [[git-annex-xbmc-playcount.pl]].
-
-After the script is ran, you can sort the files by play count with:
-
-    git annex view "playCount=*"
-
-Or just show the files that haven't been played yet:
-
-    git annex view playCount=0
-
-Use `git checkout master` to reset the view. Note that the above will flatten the tree hierarchy, which you may not want. Try this in that case:
-
-    git annex view playCount=0 films/=*
-
-For more information, see [[tips/metadata_driven_views/]].
-
--- [[anarcat]]
diff --git a/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl b/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl
deleted file mode 100644
--- a/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl
+++ /dev/null
@@ -1,227 +0,0 @@
-#! /usr/bin/perl -w
-
-use Getopt::Long;
-use Pod::Usage;
-
-my $help = 0;
-my $usage = 0;
-my $dryrun = 0;
-my $verbose = 0;
-my $path = '';
-my $annex = '';
-my $home = $ENV{'HOME'};
-
-sub main() {
-    checkargs();
-    if (!$path) {
-        $path = $home . '/.xbmc/userdata/Database';
-    }
-    print("# checking XBMC directory '$path'\n") if ($verbose);
-    $dbpath = finddb($path);
-    if (!$dbpath) {
-        pod2usage("$0: can't find a XBMC database in '$path'.");
-    }
-    print("# using database '$dbpath'\n") if ($verbose);
-    checkdb();
-}
-
-# list videos database, find the latest one
-# modified version of
-# http://stackoverflow.com/questions/4651092/getting-the-list-of-files-sorted-by-modification-date-in-perl
-sub finddb($) {
-    my $path = shift(@_);
-    opendir my($dirh), $path or die "can't opendir $path: $!";
-    my @flist = sort {  -M $a <=> -M $b } # Sort by modification time
-        map  { "$path/$_" } # We need full paths for sorting
-        grep { /^MyVideos.*\.db$/ }
-        readdir $dirh;
-    closedir $dirh;
-    if ($#flist > 0) {
-        return $flist[0];
-    }
-    else {
-        return 0;
-    }
-}
-
-sub checkargs() {
-    pod2usage(1) if $help;
-    pod2usage(-exitval => 0, -verbose => 2) if $usage;
-
-    GetOptions('h|?' => \$help,
-               'help|usage' => \$usage,
-               # we want to operate on relative links, so set this to
-               # the common annex to the git annex repo
-               'annex=s' => \$annex,
-               'path=s' => \$path,
-               'home=s' => \$home,
-               'dryrun|n' => \$dryrun,
-               'verbose|v' => \$verbose,
-        )
-        or die("Error parsing commandline\n");
-}
-
-sub checkdb() {
-    my @lines = `echo 'SELECT playCount, path.strPath, files.strFileName FROM movie JOIN files ON files.idFile=movie.idFile JOIN path ON path.idPath=files.idPath;' | sqlite3 $dbpath`;
-    print "# finding files...\n" if $verbose;
-    for (@lines) {
-        my ($count, $dir, $file) = split /\|/;
-        chomp $file;
-        # empty or non-numeric count is zero
-        if ($count !~ /[0-9]/) {
-            $count = 0;
-        }
-        print "# $dir/$file\n" if $verbose;
-        if ($file =~ s#stack://##) {
-            for (split /,/, $file) {
-                s/$annex//;
-                s/^ //;
-                s/ $//;
-                my @cmd = (qw(git annex metadata --set), "playCount=$count", $_);
-                if ($dryrun) {
-                    print join(' ', @cmd) . "\n";
-                }
-                else {
-                    system(@cmd);
-                }
-            }
-        }
-        else {
-            $dir =~ s/$annex//;
-            my @cmd = (qw(git annex metadata --set), "playCount=$count", "$dir$file");
-            if ($dryrun) {
-                print join(' ', @cmd) . "\n";
-            }
-            else {
-                system(@cmd);
-            }
-        }
-    }
-}
-
-main();
-
-__END__
-=encoding utf8
-
-=head1 NAME
-
-git-annex-xbmc-playcount - register XBMC playcounts as git-annex metadata
-
-=head1 SYNOPSIS
-
-git-annex-xbmc-playcount [--path .xbmc/userdata/Database]
-
- Options:
-  -h         short usage
-  --help     complete help
-  --dryrun, -n do nothing and show the commands that would be ran
-  --annex    path to the git-annex repo
-  --home     the home directory where the .xbmc directory is located
-  --path     the location of the Database directory of XBMC, overrides --home
-  --verbose  show interaction details with the database
-
-=head1 DESCRIPTION
-
-This program will look into the XBMC database for the "playcount"
-field to register that number as metadata in the git-annex repository.
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<--dryrun>
-
-Do nothing but show all the steps that would be ran. The output can be
-piped through a POSIX shell after inspection. B<-n> is an alias of
-this command. Example:
-
-    git-annex-xbmc-playcount -n | tee runme
-    # inspect the output
-    sh < runme
-
-=item B<--annex>
-
-This option allows the user to specify the root of the git-annex
-repository, which is then stripped off the paths found in the XBMC
-database.
-
-=item B<--home>
-
-Home of the user running XBMC. If not specified, defaults to the $HOME
-environment variables. The script will look into
-B<$home/.xbmc/userdata/Database> for a file matching
-B<^MyVideos.*\.db$> and will fail if none is found.
-
-=item B<--path>
-
-Manually specify the path to B<.xbmc/userdata/Database>. This
-overrides B<--home>.
-
-Note that this doesn't point directly to the database itself, because
-there are usually many database files and we want to automatically
-find the latest. This may be a stupid limitation.
-
-=item B<--verbose>
-
-Show more information about path discovery. Doesn't obstruct
-B<--dryrun> output because lines are prefixed with C<#>.
-
-=back
-
-=head1 EXAMPLES
-
-You have a git annex in B</srv/video> and XBMC is ran as the
-B<video> user and you want to be cautious:
-
-    $ ./git-annex-xbmc-playcount.pl --home /home/video/ -n --annex /srv/video/ | tee set-metadata
-    git annex metadata --set playCount=0 films/Animal.Farm.1954.DVDRip.DivX-MDX.avi
-
-This looks about right, set the metadata:
-
-    $ git annex metadata --set playCount=0 films/Animal.Farm.1954.DVDRip.DivX-MDX.avi
-    metadata films/Animal.Farm.1954.DVDRip.DivX-MDX.avi
-      lastchanged=2014-10-04@22-17-42
-      playCount=0
-      playCount-lastchanged=2014-10-04@22-17-42
-    ok
-    (Recording state in git...)
-
-=head1 ENVIRONMENT
-
-B<$HOME> is looked into to find the B<.xbmc> home directory if none of
-B<--home> or B<--path> is specified.
-
-=head1 FILES
-
-=over 8
-
-=item B<$HOME/.xbmc/userdata/Database/MyVideos.*\.db>
-
-This is where we assume the SQLite database of videos XBMC uses is
-stored.
-
-=back
-
-=head1 BUGS
-
-If there are pipes (C<|>) in filenames, the script may fail to find
-the files properly. We would need to rewrite the database code to use
-B<DBD::SQLite>(3pm) instead of a pipe to B<sqlite3>(1).
-
-=head1 LIMITATIONS
-
-It took longer writing this help than writing the stupid script.
-
-The script will not tag files not yet detected by XBMC.
-
-The script is not incremental, so it will repeatedly add the same
-counts to files it has already found.
-
-=head1 SEE ALSO
-
-B<git-annex>(1), B<xbmc>(1)
-
-=head1 AUTHOR
-
-Written by Antoine Beaupré <anarcat@debian.org>
diff --git a/doc/tips/emacs_integration.mdwn b/doc/tips/emacs_integration.mdwn
deleted file mode 100644
--- a/doc/tips/emacs_integration.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-bergey has developed an emacs mode for browsing git-annex repositories,
-dired style.
-
-<https://gitorious.org/emacs-contrib/annex-mode>
-
-Locally available files are colored differently, and pressing g runs
-`git annex get` on the file at point.
-
-----
-
-John Wiegley has developed a brand new git-annex interaction mode for
-Emacs, which aims to integrate with the standard facilities
-(C-x C-q, M-x dired, etc) rather than invent its own interface.
-
-<https://github.com/jwiegley/git-annex-el>
-
-He has also added support to org-attach; if
-`org-attach-git-annex-cutoff' is non-nil and smaller than the size
- of the file you're attaching then org-attach will `git annex add the
-file`; otherwise it will "git add" it.
-
-----
-
-[magit-annex](https://github.com/magit/magit-annex) adds git annex
-operations to Magit.
diff --git a/doc/tips/file_manager_integration.mdwn b/doc/tips/file_manager_integration.mdwn
deleted file mode 100644
--- a/doc/tips/file_manager_integration.mdwn
+++ /dev/null
@@ -1,115 +0,0 @@
-Integrating git-annex and your file manager provides an easy way to select
-annexed files to get or drop. The file manager can also be used to undo
-changes to file managed by git-annex.
-
-[[!toc]]
-
-## GNOME (nautilus)
-
-Recent git-annex comes with built-in integration for Nautilus.
-
-[[!img assistant/nautilusmenu.png]]
-
-[[!img assistant/downloadnotification.png]]
-
-This is set up by git-annex creating simple scripts in
-`~/.local/share/nautilus/scripts`, with names like "git-annex get"
-
-## KDE (Dolphin/Konqueror)
-
-Even more recent git-annex comes with built-in integration with Konqueror.
-
-[[!img assistant/konquerormenu.png]]
-
-This is set up by git-annex creating a 
-`~/.kde/share/kde4/services/ServiceMenus/git-annex.desktop file.
-
-## Xfce (Thunar)
-
-Xfce uses the Thunar file manager, which can also be easily configured to
-allow for custom actions. Just go to the "Configure custom actions..." item
-in the "Edit" menu, and create a custom action for get, drop, and undo with the
-following commands:
-
-    git-annex drop --notify-start --notify-finish -- %F
-
-for drop, and for get:
-
-    git-annex get --notify-start --notify-finish -- %F
-    
-and for undo:
-
-    git-annex undo --notify-start --notify-finish -- %F
-
-This gives me the resulting config on disk, in `.config/Thunar/uca.xml`:
-
-    <action>
-        <icon>git-annex</icon>
-        <name>git-annex get</name>
-        <unique-id>1396278104182858-3</unique-id>
-        <command>git-annex get --notify-start --notify-finish -- %F</command>
-        <description>get the files from a remote git annex repository</description>
-        <patterns>*</patterns>
-        <directories/>
-        <audio-files/>
-        <image-files/>
-        <other-files/>
-        <text-files/>
-        <video-files/>
-    </action>
-    <action>
-        <icon>git-annex</icon>
-        <name>git-annex drop</name>
-        <unique-id>1396278093174843-2</unique-id>
-        <command>git-annex drop --notify-start --notify-finish -- %F</command>
-        <description>drop the files from the local repository</description>
-        <patterns>*</patterns>
-        <directories/>
-        <audio-files/>
-        <image-files/>
-        <other-files/>
-        <text-files/>
-        <video-files/>
-    </action>
-
-The complete instructions on how to setup actions is [in the Xfce documentation](http://docs.xfce.org/xfce/thunar/custom-actions).
-
-## OS X (Finder)
-
-For OS X, it is possible to get context menus in Finder. Due to how OS X
-deals with symlinks, one needs to operate on folders if using indirect
-mode. Direct mode operation has not been tested.
-
-1. Open Automator and create a new Service.
-2. Using the Drop down menus in the top create the sentence "Service receives selected folders in Finder.app" to have it work on folders. For direct mode operation it is probably reasonable to select "files or folders".
-3. Add a "Run shell script" element and fill in line with the following script:
-
-        #!/usr/bin/bash
-        source ~/.bash_profile
-        for f in "$@"
-        do
-            cd "$(dirname "$f")" && git-annex get "$f"
-        done
-
-The purpose of the first line is there to get git-annex on to the path. The
-reason for the for loop is in case multiple files or folders are marked
-when running the context menu command.
-
-Finally save the the workflow under the name for which it should be listed in the context menu.
-
-## your file manager here
-
-Edit this page and add instructions!
-
-## general
-
-If your file manager can run a command on a file, it should be easy to
-integrate git-annex with it. A simple script will suffice:
-
-	#!/bin/sh
-	git-annex get --notify-start --notify-finish -- "$@"
-
-The --notify-start and --notify-stop options make git-annex display a
-desktop notification. This is useful to give the user an indication that
-their action took effect. Desktop notifications are currently only
-implemented for Linux.
diff --git a/doc/tips/finding_duplicate_files.mdwn b/doc/tips/finding_duplicate_files.mdwn
deleted file mode 100644
--- a/doc/tips/finding_duplicate_files.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-Maybe you had a lot of files scattered around on different drives, and you
-added them all into a single git-annex repository. Some of the files are
-surely duplicates of others.
-
-While git-annex stores the file contents efficiently, it would still
-help in cleaning up this mess if you could find, and perhaps remove
-the duplicate files.
-
-Here's a command line that will show duplicate sets of files grouped together:
-
-	git annex find --include '*' --format='${file} ${escaped_key}\n' | \
-		sort -k2 | uniq --all-repeated=separate -f1 | \
-		sed 's/ [^ ]*$//'
-
-Here's a command line that will remove one of each duplicate set of files:
-
-	git annex find --include '*' --format='${file} ${escaped_key}\n' | \
-		sort -k2 | uniq --repeated -f1 | sed 's/ [^ ]*$//' | \
-		xargs -d '\n' git rm
-
---[[Joey]] 
diff --git a/doc/tips/finding_duplicate_files/comment_3._comment b/doc/tips/finding_duplicate_files/comment_3._comment
deleted file mode 100644
--- a/doc/tips/finding_duplicate_files/comment_3._comment
+++ /dev/null
@@ -1,39 +0,0 @@
-[[!comment format=mdwn
- username="mhameed"
- ip="82.32.202.53"
- subject="problems with spaces in filenames"
- date="Wed Sep  5 09:38:56 BST 2012"
- content="""
-
-Spaces, and other special chars can make filename handeling ugly.
-If you don't have a restriction on keeping the exact filenames, then 
-it might be easiest just to get rid of the problematic chars.
-
-    #!/bin/bash
-
-    function process() {
-        dir="$1"
-        echo "processing $dir"
-        pushd $dir >/dev/null 2>&1
-
-        for fileOrDir in *; do
-            nfileOrDir=`echo "$fileOrDir" | sed -e 's/\[//g' -e 's/\]//g' -e 's/ /_/g' -e "s/'//g" `
-            if [ "$fileOrDir" != "$nfileOrDir" ]; then
-                echo renaming $fileOrDir to $nfileOrDir
-                git mv "$fileOrDir" "$nfileOrDir"
-            else
-                echo "skipping $fileOrDir, no need to rename."
-            fi
-        done
-
-        find ./ -mindepth 1 -maxdepth 1 -type d | while read d; do
-        process "$d"
-        done
-        popd >/dev/null 2>&1
-    }
-
-    process .
-
-Maybe you can run something like this before checking for duplicates.
-
-"""]]
diff --git a/doc/tips/flickrannex.mdwn b/doc/tips/flickrannex.mdwn
deleted file mode 100644
--- a/doc/tips/flickrannex.mdwn
+++ /dev/null
@@ -1,50 +0,0 @@
-flickrannex
-=========
-
-Hook program for gitannex to use flickr as backend
-
-# Requirements:
-
-    python2
-
-Credit for the flickr api interface goes to: http://stuvel.eu/flickrapi
-Credit for the png library goes to: https://github.com/drj11/pypng
-Credit for the png tEXt patch goes to: https://code.google.com/p/pypng/issues/detail?id=65
-
-# Install
-Clone the git repository in your home folder.
-
-    git clone git://github.com/TobiasTheViking/flickrannex.git 
-
-This should make a ~/flickrannex folder
-
-# Setup
-Make the file executable, and link it into PATH
-
-    cd ~/flickrannex; chmod +x git-annex-remote-flickr; sudo ln -sf `pwd`/git-annex-remote-flickr /usr/local/bin/git-annex-remote-flickr
-
-# Commands for gitannex:
-
-    USERNAME="username@provider.com" git annex initremote flickr type=external externaltype=flickr encryption=shared folder=gitannex
-
-An oauth authentication link should now be launched in the default browser. The hook will wait for 30s for you to login and authenticate.
-
-    git annex describe dropbox "the flickr library"
-
-# Notes
-
-## Unencrypted mode
-The photo name on flickr is currently the GPGHMACSHA1 version.
-
-## Encrypted mode
-The current version base64 encodes all the data, which results in ~35% larger filesize.
-
-## Including directories as tags
-This feature is currently disabled, if it gets implemented again it will most likely not require user action to enable it.
-
-In this case the image:
-   /home/me/annex-photos/holidays/2013/Greenland/img001.jpg
-would get the following tags:  "holidays" "2013" "Greenland"
-(assuming "/home/me/annex-photos" is the top level in the annex...)
-
-Caveat Emptor - Tags will *always* be NULL for indirect repos - we don't (easily) know the human-readable file name.
diff --git a/doc/tips/flickrannex/comment_10_50707f259abe5829ce075dfbecd5a4ba._comment b/doc/tips/flickrannex/comment_10_50707f259abe5829ce075dfbecd5a4ba._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_10_50707f259abe5829ce075dfbecd5a4ba._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmkBwMWvNKZZCge_YqobCSILPMeK6xbFw8"
- nickname="develop"
- subject="comment 10"
- date="2013-06-07T09:39:59Z"
- content="""
-I'm not even sure if chunksize is exposed to the hooks at all.
-
-As it is, the hook will check the filesize, and if the filesize is more than 30mbyte it will exit 1.
-
-Chunking may be implemented down the road. I do believe joeyh might have some plans that will touch this issue, so I'd rather wait. Than re-invent the wheel yet again.
-
-"""]]
diff --git a/doc/tips/flickrannex/comment_11_ab5bcb025381b3da4d7c6dfd0c7310dd._comment b/doc/tips/flickrannex/comment_11_ab5bcb025381b3da4d7c6dfd0c7310dd._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_11_ab5bcb025381b3da4d7c6dfd0c7310dd._comment
+++ /dev/null
@@ -1,46 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="git annex get failed"
- date="2013-08-02T14:29:30Z"
- content="""
-Hi, I am coming back to this and testing Flickr as a repository for moving files about and have run into what may be my very basic misunderstanding with vanilla annex.
-
-I copied one file to Flickr and dropped it elsewhere (--force).  I assumed that the file was on Flickr ok but that the numcopies setting required the force because of the semi-trust level of the Flickr remote.
-
-Then I find I can't get the file back, even though there is a record of it from whereis.
-
-Can you help enlighten me as to what am I missing?  I assumed whereis would only report files that exist and can be copied back.  If not my error, I can raise bug or search for logs.  Thanks in advance for any help.
-
-[[!format  perl \"\"\"
-
-
-nrb@nrb-ThinkPad-T61:~/tmp$ git annex whereis
-whereis libpeerconnection.log (3 copies) 
-  	31124688-0792-4214-9e00-7ed115aa6b8e -- flickr (the flickr library)
-   	3e3d40d7-de8f-4591-a4ab-747d74a3b278 -- origin (my laptop)
-   	ec2d64fc-30d6-48b4-99bf-7b1bc22d420d -- portable USB drive
-ok
-whereis test.cgi (1 copy) 
-  	31124688-0792-4214-9e00-7ed115aa6b8e -- flickr (the flickr library)
-ok
-whereis walkthrough.sh (3 copies) 
-  	31124688-0792-4214-9e00-7ed115aa6b8e -- flickr (the flickr library)
-   	3e3d40d7-de8f-4591-a4ab-747d74a3b278 -- origin (my laptop)
-   	ec2d64fc-30d6-48b4-99bf-7b1bc22d420d -- portable USB drive
-ok
-whereis walkthrough.sh~ (3 copies) 
-  	31124688-0792-4214-9e00-7ed115aa6b8e -- flickr (the flickr library)
-   	3e3d40d7-de8f-4591-a4ab-747d74a3b278 -- origin (my laptop)
-   	ec2d64fc-30d6-48b4-99bf-7b1bc22d420d -- portable USB drive
-ok
-nrb@nrb-ThinkPad-T61:~/tmp$ git annex get test.cgi
-get test.cgi (from flickr...) 
-
-git-annex: /home/nrb/tmp/.git/annex/tmp/SHA256E-s48--a01eedbee949120aeda41e566f9ae8faef1c2bacaa6d7bb8e45050fb8df6d09d.cgi: rename: does not exist (No such file or directory)
-failed
-git-annex: get: 1 failed
-nrb@nrb-ThinkPad-T61:~/tmp$ 
-
-\"\"\"]]
-"""]]
diff --git a/doc/tips/flickrannex/comment_12_90a331275d888221bc695003c8acbe46._comment b/doc/tips/flickrannex/comment_12_90a331275d888221bc695003c8acbe46._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_12_90a331275d888221bc695003c8acbe46._comment
+++ /dev/null
@@ -1,58 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="re: git annex get failed"
- date="2013-08-02T15:02:14Z"
- content="""
-Another try - this time a slightly simpler setup using my version of the walkthrough commands
-
-[[!format  bash \"\"\"
-
-nrb@nrb-ThinkPad-T61:~/repos/annex/laptop-annex$ git annex drop walkthrough.sh --from usbdrive
-drop usbdrive walkthrough.sh ok
-(Recording state in git...)
-nrb@nrb-ThinkPad-T61:~/repos/annex/laptop-annex$ git annex move walkthrough.sh --to flickr
-move walkthrough.sh (gpg) (checking flickr...) (to flickr...) 
-/home/nrb/repos/gits/flickrannex/flickrannex.py:92: FutureWarning: The behavior of this method will change in future versions.  Use specific 'len(elem)' or 'elem is not None' test instead.
-  if res:
-/home/nrb/repos/gits/flickrannex/flickrannex.py:100: FutureWarning: The behavior of this method will change in future versions.  Use specific 'len(elem)' or 'elem is not None' test instead.
-  if res:
-ok
-(Recording state in git...)
-nrb@nrb-ThinkPad-T61:~/repos/annex/laptop-annex$ git annex whereis
-whereis walkthrough.sh (1 copy) 
-  	161b7af0-2075-4314-9767-308a49b86018 -- flickr (the flickr library)
-ok
-whereis walkthrough.sh~ (3 copies) 
-  	161b7af0-2075-4314-9767-308a49b86018 -- flickr (the flickr library)
-   	7803d853-d231-4bb4-b696-f12a950fb96b -- here (my laptop)
-   	d60d75f9-d878-4214-af20-fa055134ae77 -- usbdrive (portable USB drive)
-ok
-nrb@nrb-ThinkPad-T61:~/repos/annex/laptop-annex$ git annex get walkthrough.sh
-get walkthrough.sh (from flickr...) (gpg) 
-git-annex: /home/nrb/repos/annex/laptop-annex/.git/annex/tmp/GPGHMACSHA1--02f600d7e8b071d2945270fd5e7fc26dd066ff31: openBinaryFile: does not exist (No such file or directory)
-gpg: decrypt_message failed: eof
-
-  Unable to access these remotes: flickr
-
-  Try making some of these repositories available:
-  	161b7af0-2075-4314-9767-308a49b86018 -- flickr (the flickr library)
-failed
-git-annex: get: 1 failed
-nrb@nrb-ThinkPad-T61:~/repos/annex/laptop-annex$ git annex fsck --from flickr
-fsck walkthrough.sh (gpg) (checking flickr...) (fixing location log) 
-  ** Based on the location log, walkthrough.sh
-  ** was expected to be present, but its content is missing.
-
-  ** No known copies exist of walkthrough.sh
-failed
-fsck walkthrough.sh~ (checking flickr...) (fixing location log) 
-  ** Based on the location log, walkthrough.sh~
-  ** was expected to be present, but its content is missing.
-failed
-(Recording state in git...)
-git-annex: fsck: 2 failed
-nrb@nrb-ThinkPad-T61:~/repos/annex/laptop-annex$ 
-
-\"\"\" ]]
-"""]]
diff --git a/doc/tips/flickrannex/comment_13_1596e70dca71c853fd1d6fc9bde02b18._comment b/doc/tips/flickrannex/comment_13_1596e70dca71c853fd1d6fc9bde02b18._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_13_1596e70dca71c853fd1d6fc9bde02b18._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmkBwMWvNKZZCge_YqobCSILPMeK6xbFw8"
- nickname="develop"
- subject="Version 0.1.10 pushed"
- date="2013-09-11T20:31:25Z"
- content="""
-Since the initial release of this hook a lot of issues have been fixed, and a few features added.
-
-I would highly suggest that everyone who is using this hook update to the latest version as i would consider one of the bugs to be fairly major.
-
-
-"""]]
diff --git a/doc/tips/flickrannex/comment_14_c728f10074d194efa8b2c60e97d275e7._comment b/doc/tips/flickrannex/comment_14_c728f10074d194efa8b2c60e97d275e7._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_14_c728f10074d194efa8b2c60e97d275e7._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- ip="72.0.72.144"
- subject="great job on that plugin!"
- date="2014-04-15T04:47:17Z"
- content="""
-it's pretty awesome to have 1TB of free storage like that out there... but for storing photos, it could be improved - I filed a few bugs on the github repo here:
-
-https://github.com/TobiasTheViking/flickrannex/issues/created_by/anarcat?state=open
-
-thanks!
-"""]]
diff --git a/doc/tips/flickrannex/comment_15_2dd75800e4db58761fcbbd1954a36f1f._comment b/doc/tips/flickrannex/comment_15_2dd75800e4db58761fcbbd1954a36f1f._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_15_2dd75800e4db58761fcbbd1954a36f1f._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmvzzyDA8uXFz8yokeCrepbh8PwWe_WrjE"
- nickname="Michael"
- subject="current status?"
- date="2014-08-08T16:00:18Z"
- content="""
-Hi, just wondering what the current status of this plugin is.
-The repo at TobiasTheViking looks a little odd - it has a few large commits from January with an unknown author, and the last one appears to completely remove the main script.
-
-What's going on? does it need a fork?
-"""]]
diff --git a/doc/tips/flickrannex/comment_16_2f65093ec9f6d67d2cfe5b5fae201123._comment b/doc/tips/flickrannex/comment_16_2f65093ec9f6d67d2cfe5b5fae201123._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_16_2f65093ec9f6d67d2cfe5b5fae201123._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmvzzyDA8uXFz8yokeCrepbh8PwWe_WrjE"
- nickname="Michael"
- subject="a more recent fork"
- date="2014-08-08T16:03:24Z"
- content="""
-Just a note that I poked around on github and saw a more recent cleaned up version in this fork: https://github.com/magthe/flickrannex/tree/devo
-
-
-"""]]
diff --git a/doc/tips/flickrannex/comment_2_d74c4fc7edf8e47f7482564ce0ef4d12._comment b/doc/tips/flickrannex/comment_2_d74c4fc7edf8e47f7482564ce0ef4d12._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_2_d74c4fc7edf8e47f7482564ce0ef4d12._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmkBwMWvNKZZCge_YqobCSILPMeK6xbFw8"
- nickname="develop"
- subject="comment 2"
- date="2013-06-05T21:33:42Z"
- content="""
-Get the statically linked version from here http://git-annex.branchable.com/install/Linux_standalone/
-
-I believe the new hook format was introduced in version 4.20130521
-"""]]
diff --git a/doc/tips/flickrannex/comment_2_f53d0d5520e2835e9705bea4e75556f0._comment b/doc/tips/flickrannex/comment_2_f53d0d5520e2835e9705bea4e75556f0._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_2_f53d0d5520e2835e9705bea4e75556f0._comment
+++ /dev/null
@@ -1,30 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="missing configuration for flickr-checkpresent-hook"
- date="2013-06-05T20:44:25Z"
- content="""
-<https://github.com/TobiasTheViking/flickrannex/issues/3>
-
-9 days ago: [the annex] \"hook format a few versions ago, and this is using the new hook format\".
-
-Looks very handy. I am just starting with this, but can't seem to get it working as a remote after following the simple walkthrough. All goes well until:
-
-    $ git annex copy . --to flickr
-    copy walkthrough.sh (checking flickr...) 
-      missing configuration for flickr-checkpresent-hook
-    git-annex: checkpresent hook misconfigured
-
-my Ubuntu 12.04:
-
-    $ git annex version
-    git-annex version: 4.20130516.1
-    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP
-    local repository version: 3
-    default repository version: 3
-    supported repository versions: 3 4
-    upgrade supported from repository versions: 0 1 2
-
-I guess my \"git-annex version is still too old\"? Any idea what version is needed? Even better if I can figure out which Linux distribution/release has the most up to date version of annex.
-
-"""]]
diff --git a/doc/tips/flickrannex/comment_4_9ebba4d61140f6c2071e988c9328cf7e._comment b/doc/tips/flickrannex/comment_4_9ebba4d61140f6c2071e988c9328cf7e._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_4_9ebba4d61140f6c2071e988c9328cf7e._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmkBwMWvNKZZCge_YqobCSILPMeK6xbFw8"
- nickname="develop"
- subject="comment 4"
- date="2013-06-05T22:02:29Z"
- content="""
-The path for the binary \"/usr/bin/python2\" is wrong.
-
-It could be any of /usr/bin/python /usr/bin/python2.6 /usr/bin/python2.7
-
-Or maybe in /usr/local/bin
-
-you can try running \"which python\" or \"which python2\" to get the real path.
-"""]]
diff --git a/doc/tips/flickrannex/comment_5_4470dae270613dd8712623474bc80ab0._comment b/doc/tips/flickrannex/comment_5_4470dae270613dd8712623474bc80ab0._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_5_4470dae270613dd8712623474bc80ab0._comment
+++ /dev/null
@@ -1,24 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="missing configuration for flickr-checkpresent-hook"
- date="2013-06-05T22:00:48Z"
- content="""
-Many thanks.
-
-I used gitannex-install and was left with a slight anomaly:
-
-    Installing...........done
-    git-annex version 4.20130601 has been installed
-    $ git-annex version
-    git-annex version: 4.20130531-g5df09b5
-
-But I guess this includes the new hook format.  I get a bit further:
-
-    $ git annex copy . --to flickr
-    copy walkthrough.sh (checking flickr...) (user error (sh [\"-c\",\"/usr/bin/python2 /home/nrb/repos/gits/flickrannex/flickrannex.py\"] exited 1)) failed
-    copy walkthrough.sh~ (checking flickr...) (user error (sh [\"-c\",\"/usr/bin/python2 /home/nrb/repos/gits/flickrannex/flickrannex.py\"] exited 1)) failed
-    git-annex: copy: 2 failed
-
-
-"""]]
diff --git a/doc/tips/flickrannex/comment_5_d395cdcf815cb430e374ff05c1a63ff4._comment b/doc/tips/flickrannex/comment_5_d395cdcf815cb430e374ff05c1a63ff4._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_5_d395cdcf815cb430e374ff05c1a63ff4._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="comment 5"
- date="2013-06-05T22:11:14Z"
- content="""
-Thanks, but on my machine I get:
-
-    $ which python2
-    /usr/bin/python2
-
-I have scripted all my walkthrough commands, blowing away the test repositories and flickr settings first each time.  This re-runs the flickr scripts and git config annex.flickr-hook etc.
-
-I can't spot anything here.
-
-
-"""]]
diff --git a/doc/tips/flickrannex/comment_6_8cf730097001ffe106f2c743edce9d0a._comment b/doc/tips/flickrannex/comment_6_8cf730097001ffe106f2c743edce9d0a._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_6_8cf730097001ffe106f2c743edce9d0a._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"
- nickname="Tobias"
- subject="comment 6"
- date="2013-06-06T09:44:11Z"
- content="""
-That's weird...
-
-You could try adding \"--dbglevel 1 --stderr\" arguments to the hook command and give me the output. But the way i read the log it seems like it doesn't even launch the python intrepreter. I might be wrong though.
-
-
-"""]]
diff --git a/doc/tips/flickrannex/comment_7_a80c8087c4e1562a4c98a24edc182e5a._comment b/doc/tips/flickrannex/comment_7_a80c8087c4e1562a4c98a24edc182e5a._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_7_a80c8087c4e1562a4c98a24edc182e5a._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnaH44G3QbxBAYyDwy0PbvL0ls60XoaR3Y"
- nickname="Nigel"
- subject="Unencrypted flickr can only accept picture and video files"
- date="2013-06-06T10:24:58Z"
- content="""
-Thanks and sorry to trouble you, it is my error, I picked unencrypted option (thinking it would be less of an issue) and am using a text file for test, gave an error line:
-
-    10:53:07 [flickrannex-0.1.5] main : 'Unencrypted flickr can only accept picture and video files'
-
-I've not looked through your code yet, but could that message be printed when not in debug mode?
-"""]]
diff --git a/doc/tips/flickrannex/comment_8_94f84254c32cf0f7dd1441b7da5d2bc6._comment b/doc/tips/flickrannex/comment_8_94f84254c32cf0f7dd1441b7da5d2bc6._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_8_94f84254c32cf0f7dd1441b7da5d2bc6._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"
- nickname="Tobias"
- subject="comment 8"
- date="2013-06-06T10:51:39Z"
- content="""
-I'll make it so, in the next version i push.
-"""]]
diff --git a/doc/tips/flickrannex/comment_9_5299b4cab4a4cb8e8fd4d2b39f0ea59c._comment b/doc/tips/flickrannex/comment_9_5299b4cab4a4cb8e8fd4d2b39f0ea59c._comment
deleted file mode 100644
--- a/doc/tips/flickrannex/comment_9_5299b4cab4a4cb8e8fd4d2b39f0ea59c._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawleVyKk2kQsB_HgEdS7w1s0BmgRGy1aay0"
- nickname="Milan"
- subject="chunksize"
- date="2013-06-07T09:09:56Z"
- content="""
-Hi! Does this backend support chunksize option? If yes, is it possible to set it after the remote has been added to the repository?
-Thanks, Milan.
-"""]]
diff --git a/doc/tips/fully_encrypted_git_repositories_with_gcrypt.mdwn b/doc/tips/fully_encrypted_git_repositories_with_gcrypt.mdwn
deleted file mode 100644
--- a/doc/tips/fully_encrypted_git_repositories_with_gcrypt.mdwn
+++ /dev/null
@@ -1,127 +0,0 @@
-[git-remote-gcrypt](https://github.com/joeyh/git-remote-gcrypt/)
-adds support for encrypted remotes to git. The git-annex 
-[[gcrypt special remote|special_remotes/gcrypt]] allows git-annex to
-also store its files in such repositories. Naturally, git-annex encrypts
-the files it stores too, so everything stored on the remote is encrypted.
-
-Here are some ways you can use this awesome stuff..
-
-[[!toc ]]
-
-This page will show how to set it up at the command line, but the git-annex
-[[assistant]] can also be used to help you set up encrypted git
-repositories.
-
-## prerequisites
-
-* Install
-[git-remote-gcrypt](https://github.com/joeyh/git-remote-gcrypt/)
-* Install git-annex version 4.20130909 or newer.
-
-## encrypted backup drive
-
-Let's make a USB drive into an encrypted backup repository. It will contain
-both the full contents of your git repository, and all the files you
-instruct git-annex to store on it, and everything will be encrypted so that
-only you can see it.
-
-First, you need to set up a gpg key. You might consider generating a
-special purpose key just for this use case, since you may end up wanting to
-put the key on multiple machines that you would not trust with your
-main gpg key.
-
-You need to tell git-annex the keyid of the key when setting up the
-encrypted repository:
-
-	git init --bare /mnt/encryptedbackup
-	git annex initremote encryptedbackup type=gcrypt gitrepo=/mnt/encryptedbackup keyid=$mykey
-	git annex sync encryptedbackup
-
-Now you can copy (or even move) files to the repository. After
-sending files to it, you'll probably want to do a sync, which pushes
-the git repository changes to it as well.
-
-	git annex copy --to encryptedbackup ...
-	git annex sync encryptedbackup
-
-Note that if you lose your gpg key, it will be *impossible* to get the
-data out of your encrypted backup. You need to find a secure way to store a
-backup of your gpg key. Printing it out and storing it in a safe deposit box,
-for example.
-
-You can actually specifiy keyid= as many times as you like to allow any one
-of a set of gpg keys to access this repository. So you could add a friend's
-key, or another gpg key you have.
-
-To restore from the backup, just plug the drive into any machine that has
-the gpg key used to encrypt it, and then:
-
-	git clone gcrypt::/mnt/encryptedbackup restored
-	cd restored
-	git annex enableremote encryptedbackup gitrepo=/mnt/encryptedbackup
-	git annex get --from encryptedbackup
-
-## encrypted git-annex repository on a ssh server
-
-If you have a ssh server that has rsync installed, you can set up an
-encrypted repository there. Works just like the encrypted drive except
-without the cable.
-
-First, on the server, run:
-
-	git init --bare encryptedrepo
-
-(Also, install git-annex on the server if it's possible & easy to do so.
-While this will work without git-annex being installed on the server, it
-is recommended to have it installed.)
-
-Now, in your existing git-annex repository, set up the encrypted remote:
-
-	git annex initremote encryptedrepo type=gcrypt gitrepo=ssh://my.server/home/me/encryptedrepo keyid=$mykey
-	git annex sync encryptedrepo
-
-If you're going to be sharing this repository with others, be sure to also
-include their keyids, by specifying keyid= repeatedly.
-
-Now you can copy (or even move) files to the repository. After
-sending files to it, you'll probably want to do a sync, which pushes
-the git repository changes to it as well.
-
-	git annex copy --to encryptedrepo ...
-	git annex sync encryptedbackup
-
-Anyone who has access to the repo it and has one of the keys
-used to encrypt it can check it out:
-
-	git clone gcrypt::ssh://my.server/home/me/encryptedrepo myrepo
-	cd myrepo
-	git annex enableremote encryptedrepo gitrepo=ssh://my.server/home/me/encryptedrepo
-	git annex get --from encryptedrepo
-
-## private encrypted git remote on hosting site
-
-You can use gcrypt to store your git repository in encrypted form on any
-hosting site that supports git. Only you can decrypt its contents.
-Using it this way, git-annex does not store large files on the hosting site; it's
-only used to store your git repository itself.
-
-	git remote add encrypted gcrypt::ssh://hostingsite/myrepo.git
-	git push encrypted master git-annex
-
-Now you can carry on using git-annex with your new repository. For example,
-`git annex sync` will sync with it.
-
-To check out the repository from the hosting site, use the same gcrypt::
-url you used when setting it up:
-
-	git clone gcrypt::ssh://hostingsite/myrepo.git
-
-## multiuser encrypted git remote on hosting site
-
-Suppose two users want to share an encrypted git remote. Both of you
-need to set up the remote, and configure gcrypt to encrypt it so that both
-of you can see it.
-	
-	git remote add sharedencrypted gcrypt::ssh://hostingsite/myrepo.git
-	git config remote.sharedencrypted.gcryt-participants "$mykey $friendkey"
-	git push sharedencrypted master git-annex
diff --git a/doc/tips/get_git-annex-shell_into_PATH.mdwn b/doc/tips/get_git-annex-shell_into_PATH.mdwn
deleted file mode 100644
--- a/doc/tips/get_git-annex-shell_into_PATH.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-The [[git-annex-shell]] program is a part of git-annex that is used when
-accessing a git-annex repository on a remote server. The client runs
-something like "ssh server git-annex-shell". For this to work,
-git-annex-shell needs to be installed in PATH.
-
-If you install git-annex on your server as root, using a distribution's
-package manager, like apt-get, or otherwise installing it into /usr/bin, or
-/usr/local/bin, then git-annex-shell will be in PATH, and you'll not have
-any trouble (and can stop reading here).
-
-But, if you need to install git-annex on a server without being root,
-it can be tricky to get it into PATH. The bash shell doesn't source all of
-its config files when ssh uses it to run a non-interactive command like
-git-annex-shell, so even if git-annex-shell seems to be in PATH when you're
-logged onto the server, "ssh server git-annex-shell" won't find it.
-
-	bash: git-annex-shell: command not found; failed; exit code 127
-
-----
-
-In some systems (when it's compiled with `SSH_SOURCE_BASHRC` set), bash will
-load your `~/.bashrc` (but not your `~/.bash_profile`). So you can add to
-PATH in the .bashrc.
-
-Note that many .bashrc files start with something like this: 
-
-	# If not running interactively, don't do anything
-	[ -z "$PS1" ] && return
-
-So, make sure to make any PATH changes before such a guard. For example:
-
-	PATH=$HOME/bin/:$PATH
-
-	# If not running interactively, don't do anything else
-	[ -z "$PS1" ] && return
-
-----
-
-In some systems, bash won't load *any* config files at all.
-A few ways to deal with that:
-
-* Move or symlink git-annex-shell into a directory like
-  /usr/bin, that is in the default PATH.
-
-* If you're not root, ask the system administrator to please install
-  git-annex system-wide.
-
-* As a last resort, you can configure the git repository that's using
-  the server to know where git-annex shell is installed, by configuring
-  `remote.<name>.annex-shell`
-
-  For example, if git-annex-shell is installed in ~/bin/git-annex-shell
-  on the server, and the git remote named "annoyingserver" uses the server:
-
-	git config remote.annoyingserver.annex-shell /home/me/bin/git-annex-shell
diff --git a/doc/tips/git-annex_on_NFS.mdwn b/doc/tips/git-annex_on_NFS.mdwn
deleted file mode 100644
--- a/doc/tips/git-annex_on_NFS.mdwn
+++ /dev/null
@@ -1,75 +0,0 @@
-There are multiple issues that have been reported that are related to using git-annex on networked file systems. We're generally talking about NFS, which we'll cover here, but this may also be the case on SMB filesystems.
-
-Locking issues
-==============
-
-Here is the prior art here:
-
-* [[devblog/day_27__locking_fun/]]
-* [[devblog/day_286-287__rotten_locks/]]
-* [[forum/Can__39__t_init_git_annex/]]
-* [[bugs/git-annex_merge_stalls/]]
-
-All of those issues but the first are related to locking on NFS filesystems, which is [notoriously bad](https://en.wikipedia.org/wiki/File_locking#Problems). However, the problems with it are not insurmountable and git-annex can actually be used, even if unreliably, on NFS filesystems.
-
-The problem I mainly hit with NFS filesystems is with unreliable locking. If you have similar platforms (both running Linux for example, NFS locking doesn't work in BSD systems), locking *should* work, but sometimes fails without reason. This problem and the solution is well described in [this stackoverflow answer](http://serverfault.com/a/455080), taken from [this excellent blog](http://sophiedogg.com/lockd-and-statd-nfs-errors/). Basically, you need to restart a bunch of NFS daemon that get stuck on the server side and then locking works again. This generally fixed it for me:
-
-<pre>
-service nfs-kernel-server stop
-service rpcbind stop
-service nfs-common stop
-service rpcbind start
-service nfs-common start
-service nfs-kernel-server start
-</pre>
-
-This needs to be run as root on the server side. Having a simple test script to see if locking works is also useful, i use the following:
-
-<pre>
-#! /usr/bin/perl -w
-
-use Fcntl qw(LOCK_SH LOCK_EX LOCK_UN);
-
-$child = fork();
-open(TESTLCK, ">testlock");
-
-if ($child == 0) { # in child
-	print "locking exclusively\n";
-	flock(TESTLCK, LOCK_EX) || die "failed to lock exclusively: $!";
-	print "holding exclusively lock for 3 seconds\n";
-	sleep 3;
-	flock(TESTLCK, LOCK_UN) || die "failed to unlock exclusively: $!";
-	print "done locking exclusively\n";
-} else { # in parent
-	print "locking shared\n";
-	flock(TESTLCK, LOCK_SH) || die "failed to lock shared: $!";
-	print "holding shared lock for 3 seconds\n";
-	sleep 3;
-	flock(TESTLCK, LOCK_UN) || die "failed to unlock shared: $!";
-	print "done locking shared, waiting for child to finish\n";
-	wait;
-}
-</pre>
-
-Also note that the [NFS FAQ](http://nfs.sourceforge.net/) (currently offline, thanks to Sourceforge, see [this archive](https://archive.is/QMMO)) also has interesting snippets about NFS locking. In short: it's a mess, but it can be worked around! -- [[anarcat]]
-
-Socket issues
-=============
-
-Another thing that may fail is the "ssh caching code". Examples:
-
-* [[forum/git_annex_sync_dies___40__sometimes__41__/]]
-* [[forum/NTFS_usb_on_linux_unable_to_connect_to_ssh_remote/]]
-* [[todo/git-annex_ignores_GIT__95__SSH/]]
-* [[bugs/git-annex-shell_doesn__39__t_work_as_expected/]]
-
-As you can see, this affects way more than NFS, which often just works there. But it can be that the SSH client can't create a socket for the SSH multiplexing that git-annex uses. Normally, git-annex should detect that and fallback properly, but sometimes this fails, especially with older versions of git-annex. A workaround is to disable the feature:
-
-    git config annex.sshcaching false
-
-The tradeoff is that syncs are faster, but it works. -- [[anarcat]]
-
-Stray files issue
-=================
-
-This is a completely different issue, but could be related to file locking: [[bugs/huge_multiple_copies_of___39__.nfs__42____39___and___39__.panfs__42____39___being_created/]]. Basically, tons of files are left behind by git-annex when it is ran on an NFS server. It is yet unclear how this problem happens and how to resolve it. But it has been reproduced and could affect you, so until it is resolved, it is still an open issue here... -- [[anarcat]]
diff --git a/doc/tips/googledriveannex.mdwn b/doc/tips/googledriveannex.mdwn
deleted file mode 100644
--- a/doc/tips/googledriveannex.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-googledriveannex 0.2.0
-=========
-
-Hook program for gitannex to use Google Drive as backend
-
-# Requirements:
-
-    python2
-    python-httplib2
-
-Credit for the googledrive api interface goes to google
-
-# Install
-Clone the git repository in your home folder.
-
-    git clone git://github.com/TobiasTheViking/googledriveannex.git 
-
-This should make a ~/googledriveannex folder
-
-# Setup
-Make the file executable, and link it into PATH
-
-    cd ~/googledriveannex; chmod +x git-annex-remote-googledrive; sudo ln -sf `pwd`/git-annex-remote-googledrive /usr/local/bin/git-annex-remote-googledrive
-
-# Commands for gitannex:
-
-    git annex initremote googledrive type=external externaltype=googledrive encryption=shared folder=gitannex
-
-An oauth authentication link should now be launched in the default browser. Authenticate and you will be proved with a code.
-
-    OAUTH='authentication code' git annex initremote googledrive type=external externaltype=googledrive encryption=shared folder=gitannex
-    git annex describe googledrive "the googledrive library"
diff --git a/doc/tips/imapannex.mdwn b/doc/tips/imapannex.mdwn
deleted file mode 100644
--- a/doc/tips/imapannex.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-imapannex 0.2.0
-=========
-
-Hook program for gitannex to use imap as backend
-
-# Requirements:
-
-    python2
-
-# Install
-Clone the git repository in your home folder.
-
-    git clone git://github.com/TobiasTheViking/imapannex.git 
-
-This should make a ~/imapannex folder
-
-# Setup
-Make the file executable, and link it into PATH
-
-    cd ~/imapannex; chmod +x git-annex-remote-imap; sudo ln -sf `pwd`/git-annex-remote-imap /usr/local/bin/git-annex-remote-imap
-
-# Commands for gitannex:
-
-    USERNAME="username@provider.com" PASSWORD="password" git annex initremote imap type=external externaltype=imap encryption=shared folder=gitannex method="Normal password" ssl="SSL/TLS" host="imap.host.com" port="993"
-    git annex describe imap "the imap library"
diff --git a/doc/tips/largefiles.mdwn b/doc/tips/largefiles.mdwn
deleted file mode 100644
--- a/doc/tips/largefiles.mdwn
+++ /dev/null
@@ -1,110 +0,0 @@
-[[!meta title="annex.largefiles: configuring mixed content repositories"]]
-
-Normally commands like `git annex add` always add files to the annex.
-And when using the v6 repository mode, even `git add` and `git commit -a`
-will add files to the annex.
-
-Let's suppose you're developing a video game, written in C. You have
-source code, and some large game assets. You want to ensure the source
-code is stored in git -- that's what git's for! And you want to store
-the game assets in the git annex -- to avod bloating your git repos with
-possibly enormous files, but still version control them.
-
-The annex.largefiles configuration is useful for such mixed content
-repositories. It's checked by `git annex add`, by `git add` and `git commit -a`
-(in v6 repositories), by `git annex import` and the assistant. It's
-also used by `git annex addurl` and `git annex importfeed` when downloading
-files. When a file does not match annex.largefiles, these commands will
-add its content to git instead of to the annex.
-
-This saves you the bother of keeping things straight when adding files.
-
-## examples
-
-For example, let's make only files larger than 100 kb be added to the annex,
-and never `*.c` and `*.h` source code files.
-
-Write this to the `.gitattributes` file:
-
-	* annex.largefiles=(largerthan=100kb)
-	*.c annex.largefiles=nothing
-	*.h annex.largefiles=nothing
-
-Or, set the git configuration instead:
-  
-	git config annex.largefiles 'largerthan=100kb and not (include=*.c or include=*.h)'
-
-Both of these settings do the same thing. Setting it in the `.gitattributes`
-file makes any checkout of the repository share that configuration, so is often
-a good choice. Setting the annex.largefiles git configuration lets different
-checkouts behave differently. The git configuration overrides the
-`.gitattributes` configuration.
-
-## syntax
-
-The value of annex.largefiles is similar to a
-[[preferred content expression|git-annex-preferred-content]].
-The following terms can be used in annex.largefiles:
-
-* `include=glob` / `exclude=glob`
-
-  Specify files to include or exclude.
-
-  The glob can contain `*` and `?` to match arbitrary characters.
-
-* `smallerthan=size` / `largerthan=size`
-
-  Matches only files smaller than, or larger than the specified size.
-
-  The size can be specified with any commonly used units, for example,
-  "0.5 gb" or "100 KiloBytes"
-
-* `mimetype=glob`
-
-  Looks up the MIME type of a file, and checks if the glob matches it.
-
-  For example, "mimetype=text/*" will match many varieties of text files,
-  including "text/plain", but also "text/x-shellscript", "text/x-makefile",
-  etc.
-
-  The MIME types are the same that are displayed by running `file --mime-type`
-
-  This is only available to use when git-annex was built with the
-  MagicMime build flag.
-
-* `anything`
-
-  Matches any file.
-
-* `nothing`
-
-  Matches no files. (Same as "not anything")
-
-* `not expression`
-
-  Inverts what the expression matches.
-
-* `and` / `or` / `( expression )`
-
-  These can be used to build up more complicated expressions.
-
-The way the `.gitattributes` example above works is, `*.c` and `*.h` files
-have the annex.largefiles attribute set to "nothing",
-and so those files are never treated as large files. All other files use
-the other value, which checks the file size.
-
-Note that, since git attribute values cannot contain whitespace,
-it's useful to instead parenthesize the terms of the annex.largefiles
-attribute. This trick allows for more complicated expressions.
-For example, this is the same as the git config shown earlier, shoehorned
-into a git attribute:
-
-	* annex.largefiles=(largerthan=100kb)and(not((include=*.c)or(include=*.h)))
-
-## temporarily override
-
-If you've set up an annex.largefiles configuration but want to force a file to
-be stored in the annex, you can temporarily override the configuration like
-this:
-
-	git annex add -c annex.largefiles=anything smallfile
diff --git a/doc/tips/largefiles/comment_1_b84e5cb8316c30fc7b355234384a5899._comment b/doc/tips/largefiles/comment_1_b84e5cb8316c30fc7b355234384a5899._comment
deleted file mode 100644
--- a/doc/tips/largefiles/comment_1_b84e5cb8316c30fc7b355234384a5899._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="acbg@8d58f794ce92f6be28b5dbd402059bc30262eb92"
- nickname="acbg"
- subject="Since which version does this apply?"
- date="2016-03-03T16:16:28Z"
- content="""
-I use version 5.20140412, and I've tried the annex.largefiles in .gitattributes, but doesn't work.   Every file is added to .git/annex/objects, including the ones that are excluded in .gitattributes.
-
-I've just started using git-annex so maybe I'm doing something wrong...
-"""]]
diff --git a/doc/tips/largefiles/comment_2_825b72391117f88062a585684cf62eeb._comment b/doc/tips/largefiles/comment_2_825b72391117f88062a585684cf62eeb._comment
deleted file mode 100644
--- a/doc/tips/largefiles/comment_2_825b72391117f88062a585684cf62eeb._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="workspace"
- subject="same problem"
- date="2016-03-04T20:44:26Z"
- content="""
-I have the same problem:
-the annex.largefiles is ignored by \"git add\" when set in .gitattributes
-allthouch git check-attr does list it.
-
-but it works when set with git config annex.largefiles
-
-git annex version 6.20160126
-"""]]
diff --git a/doc/tips/largefiles/comment_3_f4df42fe943011cc8feb2921a59616e9._comment b/doc/tips/largefiles/comment_3_f4df42fe943011cc8feb2921a59616e9._comment
deleted file mode 100644
--- a/doc/tips/largefiles/comment_3_f4df42fe943011cc8feb2921a59616e9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 3"""
- date="2016-03-07T17:23:19Z"
- content="""
-The first version to support largefiles in .gitattributes was 6.20160211,
-so both the above commenters just have too old a version.
-"""]]
diff --git a/doc/tips/megaannex.mdwn b/doc/tips/megaannex.mdwn
deleted file mode 100644
--- a/doc/tips/megaannex.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-megaannex 0.2.0
-=========
-
-Hook program for git-annex to use mega.co.nz as backend
-
-# Requirements:
-
-    python2
-    requests>=0.10
-    pycrypto
-
-Credit for the mega api interface goes to: https://github.com/richardasaurus/mega.py 
-
-# Install
-Clone the git repository in your home folder.
-
-    git clone git://github.com/TobiasTheViking/megaannex.git 
-
-This should make a ~/megaannex folder
-
-# Setup
-Make the file executable, and link it into PATH
-
-    cd ~/megaannex; chmod +x git-annex-remote-mega; sudo ln -sf `pwd`/git-annex-remote-mega /usr/local/bin/git-annex-remote-mega
-
-# Commands for gitannex:
-
-    USERNAME="user" PASSWORD="pword" git annex initremote mega type=external externaltype=mega encryption=shared folder=gitannex
-    git annex describe mega "the mega.co.nz library"
diff --git a/doc/tips/megaannex/comment_1_eec701662debd2a78c48243dbcebf59a._comment b/doc/tips/megaannex/comment_1_eec701662debd2a78c48243dbcebf59a._comment
deleted file mode 100644
--- a/doc/tips/megaannex/comment_1_eec701662debd2a78c48243dbcebf59a._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 1"
- date="2014-07-21T19:56:13Z"
- content="""
-Note that there has apparently been an API break, so this special remote may not work anymore. See: <http://git-annex.branchable.com/forum/MegaAnnex_not_working./>
-"""]]
diff --git a/doc/tips/megaannex/comment_2_c1158b7ec15646d64cae8215ce845642._comment b/doc/tips/megaannex/comment_2_c1158b7ec15646d64cae8215ce845642._comment
deleted file mode 100644
--- a/doc/tips/megaannex/comment_2_c1158b7ec15646d64cae8215ce845642._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw"
- nickname="dxtrish"
- subject="comment 2"
- date="2014-09-07T21:16:09Z"
- content="""
-Because megaannex apparently isn't working nowadays I have created a compatible program in Go. I think it should handle everything except REMOVE right now.
-
-You can find it on github: https://github.com/dxtr/megaannex-go
-"""]]
diff --git a/doc/tips/metadata_driven_views.mdwn b/doc/tips/metadata_driven_views.mdwn
deleted file mode 100644
--- a/doc/tips/metadata_driven_views.mdwn
+++ /dev/null
@@ -1,152 +0,0 @@
-git-annex now has support for storing 
-[[arbitrary metadata|metadata]] about annexed files. For example, this can be
-used to tag files, to record the author of a file, etc. The metadata is
-synced around between repositories with the other information git-annex
-keeps track of.
-
-One nice way to use the metadata is through **views**. You can ask
-git-annex to create a view of files in the currently checked out branch
-that have certain metadata. Once you're in a view, you can move and copy
-files to adjust their metadata further. Rather than the traditional
-hierarchical directory structure, views are dynamic; you can easily
-refine or reorder a view.
-
-Let's get started by setting some tags on files. No views yet, just some
-metadata:
-
-[[!template id=note text="""
-To avoid needing to manually tag files with the year (and month),
-run `annex.genmetadata true`, and git-annex will do it for you
-when adding files.
-"""]]
-
-	# git annex metadata --tag todo work/2014/*
-	# git annex metadata --untag todo work/2014/done/*
-	# git annex metadata --tag urgent work/2014/presentation_for_tomorrow.odt
-	# git annex metadata --tag done work/2013/* work/2014/done/*
-	# git annex metadata --tag work work
-	# git annex metadata --tag video videos
-	# git annex metadata --tag work videos/operating_heavy_machinery.mov
-	# git annex metadata --tag done videos/old
-	# git annex metadata --tag new videos/lotsofcats.ogv
-	# git annex metadata --tag sound podcasts
-	# git annex metadata --tag done podcasts/*/old
-	# git annex metadata --tag new podcasts/*/recent
-
-So, you had a bunch of different kinds of files sorted into a directory
-structure. But that didn't really reflect how you approach the files.
-Adding some tags lets you categorize the files in different ways.
-
-Ok, metadata is in place, but how to use it? Time to change views!
-
-	# git annex view tag=*
-	view  (searching...)
-
-	Switched to branch 'views/_'
-	ok
-
-[[!template id=note text="""
-Notice that a single file may appear in multiple directories
-depending on its tags. For example, `lotsofcats.ogv` is in
-both `new/` and `video/`.
-"""]]
-
-This searched for all files with any tag, and created a new git branch
-that sorts the files according to their tags.
-
-	# tree -d
-	work
-	todo
-	urgent
-	done
-	new
-	video
-	sound
-
-Ah, but you're at work now, and don't want to be distracted by cat videos.
-Time to filter the view:
-
-	# git annex vfilter tag=work
-	vfilter
-	Switched to branch 'views/(work)/_'
-	ok
-
-Now only the work files are in the view, and they're otherwise categorized
-according to their other tags. So you can check the `urgent/` directory
-to see what's next, and look in `todo/` for other work related files.
-
-Now that you're in a tag based view, you can move files around between the
-directories, and when you commit your changes to git, their tags will be
-updated.
-
-	# git mv urgent/presentation_for_tomorrow_{work;2014}.odt ../done
-	# git commit -m "a good day's work"
-	metadata tag-=urgent
-	metadata tag+=done
-
-You can return to a previous view by running `git annex vpop`. If you pop
-all the way out of all views, you'll be back on the regular git branch you
-originally started from. You can also use `git checkout` to switch between
-views and other branches.
-
-## fields
-
-Beyond simple tags and directories, you can add whatever kinds of metadata
-you like, and use that metadata in more elaborate views. For example, let's
-add a year field.
-
-	# git checkout master
-	# git annex metadata --set year=2014 work/2014
-	# git annex metadata --set year=2013 work/2013
-	# git annex view year=* tag=*
-
-Now you're in a view with two levels of directories, first by year and then
-by tag.
-
-	# tree -d
-	2014
-	  |-- work
-	  |-- todo
-	  |-- urgent
-	  `-- done
-	2013
-	  |-- work
-	  `-- done
-
-Oh, did you want it the other way around? Easy!
-
-	# git annex vcycle
-	# tree -d
-	work
-	  |-- 2014
-	  `-- 2013
-	todo
-	  `-- 2014
-	urgent
-	  `-- 2014
-	done
-	  |-- 2014
-	  `-- 2013
-
-## location fields
-
-Let's switch to a view containing only new podcasts. And since the
-podcasts are organized into one subdirectory per show, let's
-include those subdirectories in the view.
-
-	# git checkout master
-	# git annex view tag=new podcasts/=*
-	# tree -d
-	This_Developers_Life
-	Escape_Pod
-	GitMinutes
-	The_Haskell_Cast
-	StarShipSofa
-
-That's an example of using part of the directory layout of the original
-branch to inform the view. Every file gets fields automatically set up
-corresponding to the directory it's in. So a file"foo/bar/baz/file" has
-fields "/=foo", "foo/=bar", and "foo/bar/=baz". These location fields
-can be used the same as other metadata to construct the view.
-
-This has probably only scratched the surface of what you can do with views.
diff --git a/doc/tips/migrating_data_to_a_new_backend.mdwn b/doc/tips/migrating_data_to_a_new_backend.mdwn
deleted file mode 100644
--- a/doc/tips/migrating_data_to_a_new_backend.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-Maybe you started out using the WORM backend, and have now configured
-git-annex to use SHA1. But files you added to the annex before still
-use the WORM backend. There is a simple command that can migrate that
-data:
-
-	# git annex migrate my_cool_big_file
-	migrate my_cool_big_file (checksum...) ok
-
-You can only migrate files whose content is currently available. Other
-files will be skipped.
-
-After migrating a file to a new backend, the old content in the old backend
-will still be present. That is necessary because multiple files
-can point to the same content. The `git annex unused` subcommand can be
-used to clear up that detritus later. Note that hard links are used,
-to avoid wasting disk space.
diff --git a/doc/tips/migrating_two_seperate_disconnected_directories_to_git_annex.mdwn b/doc/tips/migrating_two_seperate_disconnected_directories_to_git_annex.mdwn
deleted file mode 100644
--- a/doc/tips/migrating_two_seperate_disconnected_directories_to_git_annex.mdwn
+++ /dev/null
@@ -1,77 +0,0 @@
-Scenario
---------
-
-You are a new git-annex user. You have already files spread around many computers and wish to migrate those into git-annex, without having to recopy all files all over the place.
-
-Let's say, for example, you have a server, named `marcos` and a workstation named `angela`. You have your audio collection stored in `/srv/mp3` in `marcos` and `~/mp3` on `angela`, but only `marcos` has all the files, and `angela` only has a subset.
-
-We also assume that `marcos` has an SSH server.
-
-How do you add all this stuff to git-annex?
-
-Create the biggest git-annex repository
----------------------------------------
-
-Start with `marcos`, with the complete directory:
-
-    cd /srv/mp3
-    git init
-    git annex init
-    git annex add .
-    git commit -m "git annex yay"
-
-This will checksum all files and add them to the `git-annex` branch of the git repository. Wait for this process to complete.
-
-Create the smaller repo and synchronise
----------------------------------------
-
-On `angela`, we want to synchronise the git annex metadata with `marcos`. We need to initialize a git repo with `marcos` as a remote:
-
-    cd ~/mp3
-    git init
-    git remote add marcos marcos.example.com:/srv/mp3
-    git fetch marcos
-    git annex info # this should display the two repos
-    git annex add .
-
-This will, again, checksum all files and add them to git annex. Once that is done, you can verify that the files are really the same as marcos with `whereis`:
-
-    git annex whereis
-
-This should display something like:
-
-    whereis Orange Seeds/I remember.wav (2 copies)
-            b7802161-c984-4c9f-8d05-787a29c41cfe -- marcos (anarcat@marcos:/srv/mp3)
-            c2ca4a13-9a5f-461b-a44b-53255ed3e2f9 -- here (anarcat@angela)
-    ok
-
-Once you are sure things went on okay, you can synchronise this with `marcos`:
-
-    git annex sync
-
-This will push the metadata information to marcos, so it knows which files are available on `angela`. From there on, you can freely get and move files between the two repos!
-
-Importing files from a third directory
---------------------------------------
-
-Say that some files on `angela` are actually spread out outside of the `~/mp3` directory. You can use the `git annex import` command to add those extra directories:
-
-    cd ~/mp3
-    git annex import ~/music/
-
-(!) Be careful that `~/music` is not a git-annex repository, or this will [[destroy it!|bugs/git annex import destroys a fellow git annex repository]].
-
-Deleting deleted files
-----------------------
-
-It is quite possible some files were removed (or renamed!) on `marcos` but not on `angela`, since it was synchronised only some time ago. A good way to find out about those files is to use the `--not --in` argument, for example, on `angela`:
-
-    git annex whereis --in here --not --in marcos
-
-This will show files that are on `angela` and not on `marcos`. They could be new files that were only added on `angela`, so be careful! A manual analysis is necessary, but let's say you are certain those files are not relevant anymore, you can delete them from `angela`:
-
-    git annex drop <file>
-
-If the file is a renamed or modified version from the original, you may need to use `--force`, but be careful! If you delete the wrong file, it will be lost forever!
-
-> (!) Maybe this wouldn't happen with [[direct mode]] and an fsck? --[[anarcat]]
diff --git a/doc/tips/offline_archive_drives.mdwn b/doc/tips/offline_archive_drives.mdwn
deleted file mode 100644
--- a/doc/tips/offline_archive_drives.mdwn
+++ /dev/null
@@ -1,69 +0,0 @@
-After you've used git-annex for a while, you will have data in your repository
-that you don't want to keep in the limited disk space of a laptop or a server,
-but that you don't want to entirely delete.
-
-This is where git-annex's support for offline archive drives shines.
-You can move old files to an archive drive, which can be kept offline if
-it's not practical to keep it spinning. Better, you can move old files to
-two or more archive drives, in case one of them later fails to spin up.  
-(One consideration when [[future_proofing]] your archive.)
-
-To set up an archive drive, you can take any removable drive, format
-it with a filesystem you'll be able to read some years later, and then follow
-the [[walkthrough]] to set up a repository on it that is a git remote of 
-the repository in your computer you want to archive. In short:
-
-	cd /media/archive
-	git clone ~/annex
-	cd ~/annex
-	git remote add archivedrive /media/archive/annex
-	git annex sync archivedrive
-
-Don't forget to  tell git-annex this is an archive drive (or a backup
-drive; see [[preferred_content]].). Also, give the drive a description that matches something you write on
-its label, so you can find it later:
-
-	git annex group archivedrive archive
-	git annex wanted archivedrive standard
-	git annex describe archivedrive "my first archive drive (SATA)"
-
-Or you can use the assistant to set up the drive for you.  
-(Nice video tutorial here: [[videos/git-annex_assistant_archiving]])
-
-(Keeping the archive drive in an offsite location? Consider encrypting
-it! See [[fully_encrypted_git_repositories_with_gcrypt]].)
-
-Then, when the archive drive is plugged in, you can easily copy files to
-it:
-
-	cd ~/annex
-	git-annex copy --auto --to archivedrive
-
-Or, if you're using the assistant, it will automatically notice when the drive
-gets plugged in and copy files that need to be archived.
-
-When you want to get rid of the local file, leaving only the copy on the
-archive, you can just:
-
-	git annex drop file
-
-The archive drive has to be plugged in for this to work, so git-annex
-can verify it still has the file. If you had configured git-annex to
-always store 2 [[copies]], it will need 2 archive drives plugged in.
-You may find it useful to configure a [[trust]] setting for the drive to
-avoid needing to haul it out of storage to drop a file.
-
-Now the really nice thing. When your archive drive gets filled up, you
-can simply remove it, store it somewhere safe, and replace it with a new
-drive, which can be mounted at the same location for simplicity. Set up
-the new drive the same way described above, and use it to archive even more
-files.
-
-Finally, when you want to access one of the files you archived, you can
-just ask for it:
-
-	git annex get file
-
-If necessary git-annex will tell you which archive drive you need to
-pull out of storage to get the file back. This is where the description
-you entered earlier comes in handy.
diff --git a/doc/tips/owncloudannex.mdwn b/doc/tips/owncloudannex.mdwn
deleted file mode 100644
--- a/doc/tips/owncloudannex.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-owncloudannex 0.2.0
-=========
-
-Hook program for gitannex to use owncloud as backend
-
-# Requirements:
-
-    python2
-    python-requests
-
-Credit for the webdav api interface goes to https://launchpad.net/python-webdav-lib
-
-# Install
-Clone the git repository in your home folder.
-
-    git clone git://github.com/TobiasTheViking/owncloudannex.git 
-
-This should make a ~/owncloudannex folder
-
-# Setup
-Make the file executable, and link it into PATH
-
-    cd ~/owncloudannex; chmod +x git-annex-remote-owncloud; sudo ln -sf `pwd`/git-annex-remote-owncloud /usr/local/bin/git-annex-remote-owncloud
-
-# Commands for gitannex:
-
-    USERNAME="login" PASSWORD="password" git annex initremote owncloud type=external externaltype=owncloud encryption=shared folder=gitannex url="https://host/remote.php/webdav/"
-    git annex describe dropbox "the owncloud library"
diff --git a/doc/tips/owncloudannex/comment_1_129652308c3c499462828dcaf8e747a4._comment b/doc/tips/owncloudannex/comment_1_129652308c3c499462828dcaf8e747a4._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_1_129652308c3c499462828dcaf8e747a4._comment
+++ /dev/null
@@ -1,40 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkQvRLq7nMMEGoEKuYx9oaf67IC0nZfmVI"
- nickname="chung yan"
- subject="owncloud hook exited nonzero"
- date="2013-07-10T05:03:47Z"
- content="""
-hi 
-
-I got the above message, and cannot sync to my owncloud. Here is the log file i had: 
-
->[2013-07-10 12:30:31 HKT] main: starting assistant version 4.20130627
-(scanning...) [2013-07-10 12:30:31 HKT] Watcher: Performing startup scan
-(started...) git-annex: Daemon is already running.
-git-annex: Daemon is already running.
-[2013-07-10 12:44:04 HKT] Committer: Adding sync2Servers.sh
-
->add syncByRsync/sync2Servers.sh (checksum...) [2013-07-10 12:44:04 HKT] Committer: Committing changes to git
-(gpg) 
-
->owncloud hook exited nonzero!
->git-annex: Daemon is already running.
-[2013-07-10 12:51:07 HKT] main: Syncing with owncloud 
-
->owncloud hook exited nonzero!
->[2013-07-10 12:53:10 HKT] Committer: Adding 2 files
-ok
-(Recording state in git...)
-(Recording state in git...)
-add syncByRsync/DSCN1810.JPG (checksum...) ok
-add syncByRsync/DSCN1810.JPG (checksum...) [2013-07-10 12:53:10 HKT] Committer: Committing changes to git
-
->owncloud hook exited nonzero!
-[2013-07-10 12:53:50 HKT] main: Syncing with owncloud 
-  owncloud hook exited nonzero!
-  owncloud hook exited nonzero!
-
-thanks
-
-yan
-"""]]
diff --git a/doc/tips/owncloudannex/comment_2_38604990368666f654d41891ba99ac61._comment b/doc/tips/owncloudannex/comment_2_38604990368666f654d41891ba99ac61._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_2_38604990368666f654d41891ba99ac61._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmLB39PC89rfGaA8SwrsnB6tbumezj-aC0"
- nickname="Tobias"
- subject="comment 2"
- date="2013-07-10T08:21:39Z"
- content="""
-Personally i've only seen that when the server ran out of space. But lets see what is going on.
-
-Please run this command
-
-git config annex.owncloud-hook '/usr/bin/python2 ~/owncloudannex/owncloudannex.py --dbglevel 1 --stderr'
-
-And then replicate the error. It should give me some debug information to work with.
-
-"""]]
diff --git a/doc/tips/owncloudannex/comment_3_1bfd290d00d6536da7d31818db46f8ec._comment b/doc/tips/owncloudannex/comment_3_1bfd290d00d6536da7d31818db46f8ec._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_3_1bfd290d00d6536da7d31818db46f8ec._comment
+++ /dev/null
@@ -1,87 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkQvRLq7nMMEGoEKuYx9oaf67IC0nZfmVI"
- nickname="chung yan"
- subject="comment 3"
- date="2013-07-10T08:46:27Z"
- content="""
-hi Tobias 
-
-Thanks your suggestion for list of my error log, here it is: 
-
-[2013-07-10 16:27:58 HKT] main: starting assistant version 4.20130627
-(scanning...) [2013-07-10 16:27:58 HKT] Watcher: Performing startup scan
-(started...) [2013-07-10 16:28:14 HKT] Committer: Adding 2 files
-
-add syncByRsync/sync2Servers.sh (checksum...) ok
-add syncByRsync/sync2Servers.sh (checksum...) [2013-07-10 16:28:14 HKT] Committer: Committing changes to git
-[2013-07-10 16:31:12 HKT] Watcher: add direct DSCN1810.JPG
-[2013-07-10 16:31:12 HKT] read: lsof [\"-F0can\",\"+d\",\"/home/yan/annex_testing/.git/annex/tmp/\"]
-[2013-07-10 16:31:12 HKT] Committer: Adding DSCN1810.JPG
-ok
-(Recording state in git...)
-(Recording state in git...)
-add DSCN1810.JPG [2013-07-10 16:31:12 HKT](checksum...)  Watcher: add direct DSCN1810.JPG
-[2013-07-10 16:31:12 HKT] read: sha256sum [\"/home/yan/annex_testing/.git/annex/tmp/DSCN181012023.JPG\"]
-
-  DSCN1810.JPG changed while it was being added
-[2013-07-10 16:31:12 HKT] Committer: delaying commit of 1 changes
-[2013-07-10 16:31:13 HKT] read: lsof [\"-F0can\",\"+d\",\"/home/yan/annex_testing/.git/annex/tmp/\"]
-[2013-07-10 16:31:13 HKT] Committer: Adding 2 files
-failed
-add DSCN1810.JPG (checksum...) [2013-07-10 16:31:13 HKT] read: sha256sum [\"/home/yan/annex_testing/.git/annex/tmp/DSCN181012023.JPG\"]
-[2013-07-10 16:31:13 HKT] chat: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"hash-object\",\"-t\",\"blob\",\"-w\",\"--stdin\",\"--no-filters\"]
-ok
-add DSCN1810.JPG (checksum...) [2013-07-10 16:31:13 HKT] read: sha256sum [\"/home/yan/annex_testing/.git/annex/tmp/DSCN181012024.JPG\"]
-[2013-07-10 16:31:13 HKT] chat: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"hash-object\",\"-t\",\"blob\",\"-w\",\"--stdin\",\"--no-filters\"]
-[2013-07-10 16:31:13 HKT] Committer: committing 2 changes
-[2013-07-10 16:31:13 HKT] Committer: Committing changes to git
-[2013-07-10 16:31:13 HKT] feed: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"update-index\",\"-z\",\"--index-info\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"commit\",\"--allow-empty-message\",\"--no-edit\",\"-m\",\"\",\"--quiet\",\"--no-verify\"]
-[2013-07-10 16:31:13 HKT] Committer: queued Upload UUID \"df02d32a-7e3a-4e12-a417-7f1d1a1cf1a6\" DSCN1810.JPG Nothing : new file created
-[2013-07-10 16:31:13 HKT] chat: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"hash-object\",\"-w\",\"--stdin-paths\",\"--no-filters\"]
-[2013-07-10 16:31:13 HKT] feed: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"update-index\",\"-z\",\"--index-info\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"show-ref\",\"--hash\",\"refs/heads/git-annex\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"write-tree\"]
-[2013-07-10 16:31:13 HKT] chat: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"commit-tree\",\"a8337a989b58b29eee5fd2fa7a4c0b8ec45d5e59\",\"-p\",\"refs/heads/git-annex\"]
-[2013-07-10 16:31:13 HKT] call: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"update-ref\",\"refs/heads/git-annex\",\"267bf35da4d9abe5ed7fe82ea5df8a8df2ddf940\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"symbolic-ref\",\"HEAD\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"show-ref\",\"refs/heads/master\"]
-[2013-07-10 16:31:13 HKT] Transferrer: Transferring: Upload UUID \"df02d32a-7e3a-4e12-a417-7f1d1a1cf1a6\" DSCN1810.JPG Nothing
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"show-ref\",\"git-annex\"]
-[2013-07-10 16:31:13 HKT] call: git-annex [\"transferkeys\",\"--readfd\",\"46\",\"--writefd\",\"36\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"show-ref\",\"--hash\",\"refs/heads/git-annex\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"log\",\"refs/heads/git-annex..267bf35da4d9abe5ed7fe82ea5df8a8df2ddf940\",\"--oneline\",\"-n1\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"show-ref\",\"git-annex\"]
-[2013-07-10 16:31:13 HKT] read:[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"ls-tree\",\"-z\",\"--\",\"refs/heads/git-annex\",\"uuid.log\",\"remote.log\",\"trust.log\",\"group.log\",\"preferred-content.log\"]
- git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"show-ref\",\"--hash\",\"refs/heads/git-annex\"]
-[2013-07-10 16:31:13 HKT] read: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"log\",\"refs/heads/git-annex..267bf35da4d9abe5ed7fe82ea5df8a8df2ddf940\",\"--oneline\",\"-n1\"]
-[2013-07-10 16:31:13 HKT] chat: git [\"--git-dir=/home/yan/annex_testing/.git\",\"--work-tree=/home/yan/annex_testing\",\"cat-file\",\"--batch\"]
-(gpg) [2013-07-10 16:31:13 HKT] TransferWatcher: transfer starting: Upload UUID \"df02d32a-7e3a-4e12-a417-7f1d1a1cf1a6\" DSCN1810.JPG Nothing
-[2013-07-10 16:31:13 HKT] chat: gpg [\"--batch\",\"--no-tty\",\"--use-agent\",\"--quiet\",\"--trust-model\",\"always\",\"--batch\",\"--passphrase-fd\",\"48\",\"--symmetric\",\"--force-mdc\"]
-[2013-07-10 16:31:14 HKT] call: sh [\"-c\",\"/usr/bin/python2 /home/yan/annex/SocialBusiness/Resources/Infrastructure/Computer_Tools/Records/AsusU24/owncloudannex/owncloudannex.py --dbglevel 1 --stderr\"]
-
- 16:31:16 [owncloudannex-0.1.1] <module> : 'START'
- 16:31:16 [owncloudannex-0.1.1] main : 'ARGS: 'ANNEX_ACTION=store ANNEX_KEY=GPGHMACSHA1--0179fbbf559d5c25cf69b4e92025ff1f007d4f1f ANNEX_HASH_1=fp ANNEX_HASH_2=23 ANNEX_FILE=/home/yan/annex_testing/.git/annex/tmp/GPGHMACSHA1--0179fbbf559d5c25cf69b4e92025ff1f007d4f1f /home/yan/annex/SocialBusiness/Resources/Infrastructure/Computer_Tools/Records/AsusU24/owncloudannex/owncloudannex.py --dbglevel 1 --stderr''
- 16:31:16 [owncloudannex-0.1.1] readFile : ''/home/yan/annex/SocialBusiness/Resources/Infrastructure/Computer_Tools/Records/AsusU24/owncloudannex/owncloudannex.conf' - 'r''
- 16:31:16 [owncloudannex-0.1.1] readFile : 'Done'
- 16:31:16 [owncloudannex-0.1.1] login : ''
- 16:31:16 [owncloudannex-0.1.1] login : 'Using base: wingyan.no-ip.org - {'Authorization': 'Basic Y2h1bmd5YW41QGdtYWlsLmNvbTp5YW5fd2lraQ=='}'
- 16:31:16 [owncloudannex-0.1.1] login : 'res: <davlib.DAV instance at 0x12915f0>'
- 16:31:16 [owncloudannex-0.1.1] findInFolder : 'u'gitannex'(<type 'unicode'>) - '/'(<type 'str'>)'
- 16:31:17 [owncloudannex-0.1.1] findInFolder : 'propfind: /owncloud/remote.php/webdav - '<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<d:error xmlns:d=\"DAV:\" xmlns:s=\"http://sabredav.org/ns\">\n  <s:exception>Sabre_DAV_Exception_NotAuthenticated</s:exception>\n  <s:message>Username or password does not match</s:message>\n  <s:sabredav-version>1.7.6</s:sabredav-version>\n</d:error>\n''
- 16:31:17 [owncloudannex-0.1.1] findInFolder : 'Failure'
- 16:31:17 [owncloudannex-0.1.1] createFolder : '/gitannex'
- 16:31:18 [owncloudannex-0.1.1] createFolder : 'Failure: 401 - '<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<d:error xmlns:d=\"DAV:\" xmlns:s=\"http://sabredav.org/ns\">\n  <s:exception>Sabre_DAV_Exception_NotAuthenticated</s:exception>\n  <s:message>Username or password does not match</s:message>\n  <s:sabredav-version>1.7.6</s:sabredav-version>\n</d:error>\n''
-
-
-  owncloud hook exited nonzero!
-[2013-07-10 16:31:18 HKT] TransferWatcher: transfer finishing: Transfer {transferDirection = Upload, transferUUID = UUID \"df02d32a-7e3a-4e12-a417-7f1d1a1cf1a6\", transferKey = Key {keyName = \"911ba6148fbcbe4afe53772f1216b8204f403ed4ee06cb90c3c3ac25e56d9402.JPG\", keyBackendName = \"SHA256E\", keySize = Just 1893431, keyMtime = Nothing}}
-
-I figured out it is a *Username or password does not match*, and i saw the content of owncloudannex.conf as \"uname\": \"myGmail@gmail.com\", but i quickly saw my WebDAV login to owncloud as my user name, not gmail address, so i changed this \"uname\": \"my_normal_user_name_not_gmail_acc\" inside owncloudannex.conf. Finally, i got it work. So, i think, user name should not be a gmail address, should be owncloud login user name. 
-
-Another issue, i had a look into /WebDAV.../gitannex/, it is git repos. file, for my user opinion, it is better that it is a real file content that we can see the file(such as photos) by owncloud web client directly, rather that owncloud is a file server to keep git repos only. 
-
-Thanks
-
-yan
-"""]]
diff --git a/doc/tips/owncloudannex/comment_4_492b6922a7c5bb5464fedb46b0c5303b._comment b/doc/tips/owncloudannex/comment_4_492b6922a7c5bb5464fedb46b0c5303b._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_4_492b6922a7c5bb5464fedb46b0c5303b._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmLB39PC89rfGaA8SwrsnB6tbumezj-aC0"
- nickname="Tobias"
- subject="comment 4"
- date="2013-07-10T08:54:13Z"
- content="""
-Hm, an error like that it really should print without the need of debug information. I'll look into it.
-
-And if you want the real file content, not encrypted, just change \"shared\" to \"none\" in the line:
-
-git annex initremote owncloud type=hook hooktype=owncloud encryption=shared
-
-I'm not sure if you can change this after you initialized the remote though. And also, the folder structure and filenames will be as you see them now on the owncloud. I'd need some more data from gitannex to make it show the real directory structure. But that doesn't seem feasible.
-
-Why would you even want the data unencrypted on owncloud anyways? i mean on flickr, or googledocs, i kinda get it. but for owncloud?
-
-"""]]
diff --git a/doc/tips/owncloudannex/comment_5_1d48ac08714fadcb06d874570d745bd8._comment b/doc/tips/owncloudannex/comment_5_1d48ac08714fadcb06d874570d745bd8._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_5_1d48ac08714fadcb06d874570d745bd8._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkQvRLq7nMMEGoEKuYx9oaf67IC0nZfmVI"
- nickname="chung yan"
- subject="comment 5"
- date="2013-07-10T09:43:55Z"
- content="""
-hi Tobias
-
-thanks your sharing, i am still in have a trial of git-annex, so i do not yet have real data on the server, so i just del. all and re-create both client and server repos in owncloud, i can got what you said, and see my photo. 
-
-Actually, i am studying git-annex. 1) It can syncs the data from my client computer to server. 2) i would like that other and anywhere computers through browser can view my server data which do not need to download all data into a new client. So my original goal is i can have a web to display the content of my files, and see owncloud have a nice web. 
-
-Regarding to GDoc, flickr, etc. they have space limitation, so i install owncloud as my own computer. I also see the <http://git-annex.branchable.com/design/assistant/partial_content/>, but it is not yet at roadmap. 
-
-thanks
-"""]]
diff --git a/doc/tips/owncloudannex/comment_6_65959f49a2f56bffd6fe48670c0c8d5a._comment b/doc/tips/owncloudannex/comment_6_65959f49a2f56bffd6fe48670c0c8d5a._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_6_65959f49a2f56bffd6fe48670c0c8d5a._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmLB39PC89rfGaA8SwrsnB6tbumezj-aC0"
- nickname="Tobias"
- subject="comment 6"
- date="2013-07-10T09:50:14Z"
- content="""
-A 1 terabyte limit(for flickr) should be enough for most people. No?
-"""]]
diff --git a/doc/tips/owncloudannex/comment_7_7482002991672ef67836bae43b8d0be8._comment b/doc/tips/owncloudannex/comment_7_7482002991672ef67836bae43b8d0be8._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_7_7482002991672ef67836bae43b8d0be8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkQvRLq7nMMEGoEKuYx9oaf67IC0nZfmVI"
- nickname="chung yan"
- subject="comment 7"
- date="2013-07-10T09:56:54Z"
- content="""
-i have not got this 1 terabyte limit from flick before. I will have a look. I still consider some my own data, it is better to keep at my own server. 
-"""]]
diff --git a/doc/tips/owncloudannex/comment_8_6579203d726f4a39db02fcdda156e12c._comment b/doc/tips/owncloudannex/comment_8_6579203d726f4a39db02fcdda156e12c._comment
deleted file mode 100644
--- a/doc/tips/owncloudannex/comment_8_6579203d726f4a39db02fcdda156e12c._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn97aJ3CN48pBix54RDHRhqtBzeklNEbSA"
- nickname="Manuel"
- subject="advantage of owncloudannex over webdav remote?"
- date="2015-01-08T18:00:48Z"
- content="""
-It seems that owncloud can also be accessed using the webdav remote. Does owncloudannex offer any features which aren't implemented in the webdav remote?
-"""]]
diff --git a/doc/tips/playlist_fetch.mdwn b/doc/tips/playlist_fetch.mdwn
deleted file mode 100644
--- a/doc/tips/playlist_fetch.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-I have made a small script to fetch a specific set of songs from a
-playlist. It just iterates through a [M3U][] playlist and makes sure
-that git-annex has a copy of every file in the list.
-
-Sample run:
-
-    [1041]anarcat@angela:Music1$ ~/bin/get-playlist -p1 -v ~/playlists/Favoris.m3u
-    git-annex: Bach/Unknown Album/Concerto for 2 Violins in D.mp3 not found
-    git-annex: get: 1 failed
-    git annex failed to get Bach/Unknown Album/Concerto for 2 Violins in D.mp3 (originally espresso/Bach/Unknown Album/Concerto for 2 Violins in D.mp3)
-    get Groovy Aardvark/Oryctérope/05 - Téléthargique.flac (from marcos...)
-    SHA256E-s26735079--13c04501b9c6fa5ddda02438484d569f4d3d9b1f0bcdd8740f3b927ab756c968.flac
-         26,735,079 100%   10.00MB/s    0:00:02 (xfr#1, to-chk=0/1)
-    (checksum...) ok
-    Groovy Aardvark/Oryctérope/05 - Téléthargique.flac
-    [...]
-    merge git-annex ok
-
-I use this to synchronize specific playlists to my phone, instead of
-the whole music collection, because of the limited space of the
-device.
-
-The source is AGPL and available in my
-[personal git repository][]. Unfortunately, it is written in Python
-and can probably not be merged into git-annex, but since it is so
-specific, I figured it wouldn't be anyways. -- [[anarcat]]
-
-[personal git repository]: http://src.anarc.at/scripts.git/blob_plain/HEAD:/get-playlist
-[M3U]: https://en.wikipedia.org/wiki/M3U
diff --git a/doc/tips/powerful_file_matching.mdwn b/doc/tips/powerful_file_matching.mdwn
deleted file mode 100644
--- a/doc/tips/powerful_file_matching.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-git-annex has a powerful syntax for making it act on only certain files.
-
-The simplest thing is to exclude some files, using wild cards:
-
-	git annex get --exclude '*.mp3' --exclude '*.ogg'
-
-But you can also exclude files that git-annex's [[location_tracking]]
-information indicates are present in a given repository. For example,
-if you want to populate newarchive with files, but not those already
-on oldarchive, you could do it like this:
-
-	git annex copy --not --in oldarchive --to newarchive
-
-Without the --not, --in makes it act on files that *are* in the specified
-repository. So, to remove files that are on oldarchive:
-
-	git annex drop --in oldarchive
-
-Or maybe you're curious which files have a lot of copies, and then
-also want to know which files have only one copy:
-
-	git annex find --copies 7
-	git annex find --not --copies 2
-
-The above are the simple examples of specifying what files git-annex
-should act on. But you can specify anything you can dream up by combining
-the things above, with --and --or -( and -). Those last two strange-looking
-options are parentheses, for grouping other options. You will probably
-have to escape them from your shell.
-
-Here are the mp3 files that are in either of two repositories, but have
-less than 3 copies:
-
-	git annex find --not --exclude '*.mp3' --and \
-		-\( --in usbdrive --or --in archive -\) --and \
-		--not --copies 3
diff --git a/doc/tips/public_Amazon_S3_remote.mdwn b/doc/tips/public_Amazon_S3_remote.mdwn
deleted file mode 100644
--- a/doc/tips/public_Amazon_S3_remote.mdwn
+++ /dev/null
@@ -1,57 +0,0 @@
-Here's how to create a Amazon [[S3 special remote|special_remotes/S3]] that
-can be read by anyone who gets a clone of your git-annex repository,
-without them needing Amazon AWS credentials.
-
-Note: Bear in mind that Amazon will charge the owner of the bucket
-for public downloads from that bucket.
-
-## create public remote
-
-First, export your Amazon AWS credentials:
-
-	# export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"
-	# export AWS_SECRET_ACCESS_KEY="s3kr1t"
-
-Now, create the remote:
-
-	# git annex initremote pubs3 type=S3 encryption=none public=yes
-	initremote pubs3 (checking bucket) (creating bucket in US) ok
-
-The public=yes is the crtical part; this lets the public read the contents
-of the bucket. (This feature needs git-annex 5.20150617 or newer.)
-
-In the above example, no encryption was used, but it will also work
-if you enable encryption=shared. Then files will be encrypted on S3, and
-anyone with a clone of the git repository will be able to download and
-decrypt them.
-
-It's also ok to enable chunking when setting up the remote.
-
-Now, copy some files to the remote, in the usual way, and push your
-git repository to someplace where someone else can access it.
-
-## use public remote
-
-Once the S3 remote is set up, anyone who can clone the git repositry
-can get files from the remote, without needing any Amazon AWS credentials.
-
-Start by checking out the git repository. 
-
-In the checkout, enable the S3 remote:
-
-	# git annex enableremote pubs3
-	enableremote pubs3 ok
-
-Now, git-annex can be used as usual to download files from that remote.
-
-## sharing urls
-
-You can also share urls to files stored in a public S3 remote to people
-who are not using git-annex. To find the url, use `git annex whereis`.
-
-----
-
-See [[special_remotes/S3]] for details about configuring S3 remotes.
-
-See [[publishing_your_files_to_the_public]] for other ways to use a public
-S3 bucket.
diff --git a/doc/tips/publishing_your_files_to_the_public.mdwn b/doc/tips/publishing_your_files_to_the_public.mdwn
deleted file mode 100644
--- a/doc/tips/publishing_your_files_to_the_public.mdwn
+++ /dev/null
@@ -1,88 +0,0 @@
-# Creating a special S3 remote to hold files shareable by URL
-
-(In this example, I'll assume you'll be creating a bucket in S3 named **public-annex** and a special remote in git-annex, which will store its files in the previous bucket, named **public-s3**, but change these names if you are going to do the thing for real)
-
-Set up your special [S3](http://git-annex.branchable.com/special_remotes/S3/) remote with (at least) these options:
-
-    git annex initremote public-s3 type=s3 encryption=none bucket=public-annex chunk=0 public=yes
-
-This way git-annex will upload the files to this repo, (when you call `git
-annex copy [FILES...] --to public-s3`) without encrypting them and without
-chunking them. And, thanks to the public=yes, they will be
-accessible by anyone with the link.
-
-(Note that public=yes was added in git-annex version 5.20150605.
-If you have an older version, it will be silently ignored, and you
-will instead need to use the AWS dashboard to configure a public get policy
-for the bucket.)
-
-Following the example, the files will be accessible at `http://public-annex.s3.amazonaws.com/KEY` where `KEY` is the file key created by git-annex and which you can discover running
-
-    git annex lookupkey FILEPATH
-
-This way you can share a link to each file you have at your S3 remote.
-
-## Sharing all links in a folder
-
-To share all the links in a given folder, for example, you can go to that folder and run (this is an example with the _fish_ shell, but I'm sure you can do the same in _bash_, I just don't know exactly):
-
-    for filename in (ls)
-        echo $filename": https://public-annex.s3.amazonaws.com/"(git annex lookupkey $filename)
-    end
-
-## Sharing all links matching certain metadata
-
-The same applies to all the filters you can do with git-annex.
-
-For example, let's share links to all the files whose _author_'s name starts with "Mario" and are, in fact, stored at your public-s3 remote.
-However, instead of just a list of links we will output a markdown-formatted list of the filenames linked to their S3 urls:
-
-    for filename in (git annex find --metadata "author=Mario*" --and --in public-s3)
-       echo "* ["$filename"](https://public-annex.s3.amazonaws.com/"(git annex lookupkey $filename)")"
-    end
-
-Very useful.
-
-## Sharing links with time-limited URLs
-
-By using pre-signed URLs it is possible to create limits on how long a URL is valid for retrieving an object. 
-To enable use a private S3 bucket for the remotes and then pre-sign actual URL with the script in [AWS-Tools](https://github.com/gdbtek/aws-tools).
-Example:
-
-    key=`git annex lookupkey "$fname"`;  sign_s3_url.bash --region 'eu-west-1' --bucket 'mybuck' --file-path $key --aws-access-key-id XX --aws-secret-access-key XX --method 'GET' --minute-expire 10
-
-## Adding the S3 URL as a source
-
-Assuming all files in the current directory are available on S3, this will register the public S3 url for the file in git-annex, making it available for everyone *through git-annex*:
-
-<pre>
-git annex find --in public-s3 | while read file ; do
-  key=$(git annex lookupkey $file)
-  echo $key https://public-annex.s3.amazonaws.com/$key
-done | git annex registerurl
-</pre>
-
-`registerurl` was introduced in `5.20150317`.
-
-## Manually configuring a public get policy
-
-Here is how to manually configure a public get policy
-for a bucket, in the AWS dashboard.
-
-    {
-      "Version": "2008-10-17",
-      "Statement": [
-        {
-          "Sid": "AllowPublicRead",
-          "Effect": "Allow",
-          "Principal": {
-            "AWS": "*"
-          },
-          "Action": "s3:GetObject",
-          "Resource": "arn:aws:s3:::public-annex/*"
-        }
-      ]
-    }
-
-This should not be necessary if using a new enough version
-of git-annex, which can instead be configured with public=yet.
diff --git a/doc/tips/recover_data_from_lost+found.mdwn b/doc/tips/recover_data_from_lost+found.mdwn
deleted file mode 100644
--- a/doc/tips/recover_data_from_lost+found.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Suppose something goes wrong, and fsck puts all the files in lost+found.
-It's actually very easy to recover from this disaster.
-
-First, check out the git repository again. Then, in the new checkout:
-
-	$ mkdir recovered-content
-	$ sudo mv ../lost+found/* recovered-content
-	$ sudo chown you:you recovered-content
-	$ chmod -R u+w recovered-content
-	$ git annex add recovered-content
-	$ git reset HEAD recovered-content
-	$ rm -rf recovered-content
-	$ git annex fsck
-
-The way that works is that when git-annex adds the same content that was in
-the repository before, all the old links to that content start working
-again. So, this works as long as you're using one of the SHA* or other
-checksumming backends, which is the default.
diff --git a/doc/tips/recovering_from_a_corrupt_git_repository.mdwn b/doc/tips/recovering_from_a_corrupt_git_repository.mdwn
deleted file mode 100644
--- a/doc/tips/recovering_from_a_corrupt_git_repository.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-I have found this the most reliable way to recover from a corrupt git repository. I have had a lot of them lately, there might be a regression in btrfs in Ubuntu's Linux 3.8.0-33 (!).
-
-1. Create a clone of a known good repository.
-2. Add the clone as an object alternate to the broken repository.
-3. Do a `git-repack -a -d` to lift the external objects into repo-local packs.
-4. Remove the clone
-
-[[!format sh """
-$ cd /tmp/
-$ git clone good-host:/path/to/good-repo
-$ cd /home/user/broken-repo
-$ echo /tmp/good-repo/.git/objects/ > .git/objects/info/alternates
-$ git repack -a -d
-$ rm -rf /tmp/good-repo
-"""]]
-
-... and push early, push often. ;-)
diff --git a/doc/tips/remote_webapp_setup.mdwn b/doc/tips/remote_webapp_setup.mdwn
deleted file mode 100644
--- a/doc/tips/remote_webapp_setup.mdwn
+++ /dev/null
@@ -1,49 +0,0 @@
-Here's the scenario: You have a remote server you can ssh into,
-and you want to use the git-annex webapp there, displaying back on your local
-web browser.
-
-Sure, no problem! It can even be done securely!
-
-Let's start by making the git-annex repository on the remote server.
-
-	git init annex
-	cd annex
-	git annex init
-
-Now, you need to generate a private key and a certificate for HTTPS.
-These files are stored in `.git/annex/privkey.pem` and 
-`.git/annex/certificate.pem` inside the git repository. Here's
-one way to generate those files, using a self-signed certificate:
-
-	(umask 077 ; openssl genrsa -out .git/annex/privkey.pem 4096)
-	openssl req -new -x509 -key .git/annex/privkey.pem > .git/annex/certificate.pem
-
-With those files in place, git-annex will automatically only accept HTTPS
-connections. That's good, since HTTP connections are not secure over the
-big bad internet.
-
-All that remains is to make the webapp listen on the external interface
-of the server. Normally, for security, git-annex only listens on localhost.
-Tell it what hostname to listen on:
-
-	git config annex.listen host.example.com
-
-(If your hostname doesn't work, its IP address certianly will..)
-
-When you run the webapp configured like that, it'll print out the
-URL to use to open it. You can paste that into your web browser.
-
-	git annex webapp
-	http://host.example.com:42232/?auth=ea7857ad...
-
-Notice that the URL has a big jumble of letters at the end -- this is a
-secret token that the webapp uses to verify you're you. So random attackers
-can't find your webapp and do bad things with it.
-
-If you like, you can make the server run `git annex assistant --autostart`
-on boot.
-
-To automate opening the remote server's webapp in your local browser,
-just run this:
-
-	firefox "$(ssh host.example.com git annex webapp)"
diff --git a/doc/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.mdwn b/doc/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.mdwn
deleted file mode 100644
--- a/doc/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-Sparkleshare and dvcs-autosync are tools to automatically commit your
-changes to git and keep them in sync with other repositories. Unlike
-git-annex, they don't store the file content on the side, but directly in
-the git repository. Great for small files, less good for big files.
-
-Here's how to use the [[git-annex assistant|/assistant]] to do the same
-thing, but even better!
-
-----
-
-Let's suppose you're developing a video game, written in C. You have
-source code, and some large game assets. You want to ensure the source
-code is stored in git -- that's what git's for! And you want to store
-the game assets in the git annex -- to avod bloating your git repos with
-possibly enormous files, but still version control them.
-
-All you need to do is configure git-annex to treat your C files
-as small files. And treat any file larger than, say, 100kb as a large
-file that is stored in the annex.
-
-	git config annex.largefiles "largerthan=100kb and not (include=*.c or include=*.h)"
-
-For more details about this configuration, see [[largefiles]].
-
-----
-
-Now if you run `git annex add`, it will only add the large files to the
-annex; small files will be stored in git.
-
-Or, run `git annex assistant`. It will *automatically*
-add the large files to the annex, and store the small files in git.
-It'll notice every time you modify a file, and immediately commit it,
-too. And sync it out to other repositories you configure using `git annex
-webapp`.
-
-----
-
-It's also possible to disable the use of the annex entirely, and just
-have the assistant *always* put every file into git, no matter its size:
-
-	git config annex.largefiles "exclude=*"
diff --git a/doc/tips/setup_a_public_repository_on_a_web_site.mdwn b/doc/tips/setup_a_public_repository_on_a_web_site.mdwn
deleted file mode 100644
--- a/doc/tips/setup_a_public_repository_on_a_web_site.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-Let's say you want to distribute some big files to the whole world.
-You can of course, just drop them onto a website. But perhaps you'd like to
-use git-annex to manage those files. And as an added bonus, why not let
-anyone in the world clone your site and use `git-annex get`!
-
-My site like this is [downloads.kitenet.net](https://downloads.kitenet.net).
-Here's how I set it up. --[[Joey]]
-
-1. Set up a web site. I used Apache, and configured it to follow symlinks.
-   `Options FollowSymLinks`
-2. Put some files on the website. Make sure it works.
-3. `git init; git annex init`
-4. `git config core.sharedrepository world` (Makes sure files
-   are always added with permissions that allow everyone to read them.)
-5. We want users to be able to clone the git repository over http, because
-   git-annex can download files from it over http as well. For this to
-   work, `git update-server-info` needs to get run after commits. The
-   git `post-update` hook will take care of this, you just need to enable
-   the hook. `chmod +x .git/hooks/post-update`
-6. `git annex add; git commit -m added`
-7. Make sure users can still download files from the site directly.
-8. Instruct advanced users to clone a http url that ends with the "/.git/"
-   directory. For example, for downloads.kitenet.net, the clone url
-   is `https://downloads.kitenet.net/.git/`
-9. Set up a git `post-receive` hook to update the repository's working tree
-   when changes are pushed to it. See below for details.
-
-When users clone over http, and run git-annex, it will
-automatically learn all about your repository and be able to download files
-right out of it, also using http. 
-
-## post-receive hook
-
-If you have git-annex 4.20130703, the post-receive hook mentioned above
-in step 9 just needs to run `git annex merge`.
-
-With older versions of git-annex, you can instead use `git annex sync`.
-
-There are two gotchas with some versions of git to be aware of when writing
-this post-receive hook.
-
-1. The hook may be run with the current directory set to the `.git`
-   directory, and not the top of your work tree. So you need to `cd ..` or
-   similar in the hook.
-2. `GIT_DIR` may be set to `.`, which will not be right after changing
-   directory. So you will probably want to unset it.
-
-Here's a post-receive hook that takes these problems into account:
-
-<pre>
-#!/bin/sh
-unset GIT_DIR
-cd ..
-git annex merge
-</pre>
diff --git a/doc/tips/shared_git_annex_directory_between_multiple_users.mdwn b/doc/tips/shared_git_annex_directory_between_multiple_users.mdwn
deleted file mode 100644
--- a/doc/tips/shared_git_annex_directory_between_multiple_users.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-Scenario
-========
-
-You have a server where you want to welcome other people to push files, say for a family photo album. People have their own user account, so by default they will not be able to read/write from each other's repositories, due to git-annex strict restrictions.
-
-Solution
-========
-
-Setup a shared git repository:
-
-    git init shared ; cd shared # you can also do this on an existing git annex repo
-    git config core.sharedrepository group
-    chmod g+rwX -R .
-    chgrp -R $group .
-
-The idea here is to use the new (since [[news/version 4.20130909]]) support for git's `sharedRepository` configuration and restrict access to a specific group (instead of the default, a single user). You can also this to make the files accessible to all users on the system:
-
-    git config core.sharedrepository world
-    chmod a+rwX -R .
-
-This will make sure that you anyone can operate that git annex repository remotely.
-
-Third party applications
-------------------------
-
-Now if another application that is not aware of git's `sharedRepository` configuration (say a [[bittorrent]] daemon) writes files there, you may want to make sure that the files created are also writable by everyone. This is more tricky, but one way of doing this is with the [[!wikipedia setgid]] bit:
-
-    find -type d -exec chmod g+s {} \;
-
-You will also need to start the process with a proper [[!wikipedia umask]] (`002` instead of `022`).
-
-(!) I haven't actually tested this part. --[[anarcat]]
-
-See also
-========
-
- * [[tips/setup a public repository on a web site]]
- * [[news/version 4.20130909]]
- * [[bugs/acl not honoured in rsync remote]]: why this does not work on encrypted remotes
diff --git a/doc/tips/skydriveannex.mdwn b/doc/tips/skydriveannex.mdwn
deleted file mode 100644
--- a/doc/tips/skydriveannex.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-skydriveannex 0.2.1
-=========
-
-Hook program for gitannex to use [skydrive](http://en.wikipedia.org/wiki/SkyDrive) (previously *Windows Live SkyDrive* and *Windows Live Folders*) as backend
-
-# Requirements:
-
-    python2
-    python-yaml
-
-Credit for the Skydrive api interface goes to https://github.com/mk-fg/python-skydrive
-
-# Install
-Clone the git repository in your home folder.
-
-    git clone git://github.com/TobiasTheViking/skydriveannex.git 
-
-This should make a ~/skydriveannex folder
-
-# Setup
-Make the file executable, and link it into PATH
-
-    cd ~/skydriveannex; chmod +x git-annex-remote-skydrive; sudo ln -sf `pwd`/git-annex-remote-skydrive /usr/local/bin/git-annex-remote-skydrive
-
-# Commands for gitannex:
-
-    git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=gitannex
-    
-An oauth authentication link should now be launched in the default browser. Authenticate, and use the last url as OAUTH key.
-
-    OAUTH='URL after last redirect' git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=gitannex
-    git annex describe skydrive "the skydrive library"
diff --git a/doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment b/doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment
+++ /dev/null
@@ -1,16 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="Syncing not working :-/"
- date="2014-05-17T19:52:33Z"
- content="""
-Error log says:
-
-    git-annex-remote-skydrive is not installed in PATH (/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/usr/bin:/bin:/usr/sbin:/sbin)
-
-BUT I did a symlink, I even did 2 to 2 different locations that are in my path:
-
-    cd /Users/ovi/skydriveannex/
-    ln -sf `pwd`/git-annex-remote-skydrive /usr/bin/git-annex-remote-skydrive
-    ln -sf `pwd`/git-annex-remote-skydrive /opt/local/bin/git-annex-remote-skydrive
-"""]]
diff --git a/doc/tips/skydriveannex/comment_11_13692d8cb9ccf10ced26d90739385a6a._comment b/doc/tips/skydriveannex/comment_11_13692d8cb9ccf10ced26d90739385a6a._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_11_13692d8cb9ccf10ced26d90739385a6a._comment
+++ /dev/null
@@ -1,47 +0,0 @@
-[[!comment format=mdwn
- username="ovidiu@66ace8a8d99ce938b0538ffa0f26d30db02a9626"
- nickname="ovidiu"
- subject="comment 11"
- date="2015-10-03T19:18:24Z"
- content="""
-shiny:skydriveannex ovi$ git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=gitannex
-initremote skydrive (encryption setup) (shared cipher)  21:14:20 [skydriveannex-0.2.1] <module> : 'Starting'
- 21:14:20 [skydriveannex-0.2.1] login : 'EXCEPTION api.auth_get_token:AuthenticationError(u\"Insufficient authentication data provided (missing keys: [u'code'])\",)'
-osascript: OpenScripting.framework - scripting addition \"/Library/ScriptingAdditions/AeroFSFinderExtension.osax\" cannot be used with the current OS because it has no OSAXHandlers entry in its Info.plist.
-git-annex: You need to set OAUTH environment variables and folder and encryption parameters when running initremote.
-
-the folder gitannex was created on my onedrive but that is all.
-
-Log files:
-[2015-10-03 21:12:43.322605] main: Syncing with onedrive 
- 21:12:50 [skydriveannex-0.2.1] <module> : 'Starting'
- 21:12:5
-
-9  [ sYkoyud rnieveeda ntnoe xs-e0t. 2O.A1U]T Hl oegnivni r:o n'mEeXnCtE PvTaIrOiNa balpeis. aauntdh _fgoeltd_etro kaennd: PernoctroycpotliEornr opra(r4a0m0e,t e'r4s0 0f oCrl itehnet  rEermrootre:. 
-Bad Request')'
-[2015-10-03 21:13:07.435901] main: Syncing with onedrive 
-
-
-  You need to set OAUTH environment variables and folder and encryption parameters for the remote.
-[2015-10-03 21:15:14.60821] main: Syncing with onedrive 
-
-
-  You need to set OAUTH environment variables and folder and encryption parameters for the remote.
-[2015-10-03 21:15:57.926083] main: starting assistant version 5.20150929-g7010007
-(scanning...) [2015-10-03 21:15:58.506776] Watcher: Performing startup scan
-(started...) gpg: Signature made Wed Sep 30 20:45:53 2015 CEST using DSA key ID 89C809CB
-gpg: /var/folders/m6/zkd11n111m38ff37zbtgq0lr0000gp/T/git-annex-gpg.tmp.0/trustdb.gpg: trustdb created
-gpg: Good signature from \"git-annex distribution signing key (for Joey Hess) <id@joeyh.name>\"
-gpg: WARNING: This key is not certified with a trusted signature!
-gpg:          There is no indication that the signature belongs to the owner.
-Primary key fingerprint: 4005 5C6A FD2D 526B 2961  E78F 5EE1 DBA7 89C8 09CB
- 21:16:01 [skydriveannex-0.2.1] <module> : 'Starting'
- 21:16:
-
-01   [Ysokuy dnreievde atnon esxe-t0 .O2A.U1T]H  leongviinr o:n m'eEnXtC EvPaTrIiOaNb laepsi .aanudt hf_ogledte_rt oaknedn :ePnrcortyopctoiloEnr rpoarr(a4m0e0t,e r's4 0f0o rC ltiheen tr eEmrortoer.:
- Bad Request')'
-[2015-10-03 21:16:34.655604] main: Syncing with onedrive 
-
-
-  You need to set OAUTH environment variables and folder and encryption parameters for the remote.
-"""]]
diff --git a/doc/tips/skydriveannex/comment_1_bf383481b2bbb962fbfe783b9f2f213a._comment b/doc/tips/skydriveannex/comment_1_bf383481b2bbb962fbfe783b9f2f213a._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_1_bf383481b2bbb962fbfe783b9f2f213a._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="working for git-annex assistant?"
- date="2014-05-13T18:40:31Z"
- content="""
-Will following these steps lead to the Skydrive repo being visible and recognized by the assistant too?
-"""]]
diff --git a/doc/tips/skydriveannex/comment_2_1f747018b35ab8accd2bf0905e6ad926._comment b/doc/tips/skydriveannex/comment_2_1f747018b35ab8accd2bf0905e6ad926._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_2_1f747018b35ab8accd2bf0905e6ad926._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 2"
- date="2014-05-16T16:26:50Z"
- content="""
-The assistant will use any repositories you set up, no matter how you set them up.
-"""]]
diff --git a/doc/tips/skydriveannex/comment_3_8b9444006734262693f71e50a40eae1d._comment b/doc/tips/skydriveannex/comment_3_8b9444006734262693f71e50a40eae1d._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_3_8b9444006734262693f71e50a40eae1d._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="Hitting trouble"
- date="2014-05-16T17:49:59Z"
- content="""
-    shiny-2:skydriveannex ovi$ git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=git-annex
-    git-annex: First run: git-annex init
-    shiny-2:skydriveannex ovi$
-
-Above wasn't mentioned in the tutorial so I tried it:
-
-    shiny-2:skydriveannex ovi$ git-annex init
-    init  ok
-    (Recording state in git...)
-    shiny-2:skydriveannex ovi$
-
-What now? Never got asked about any OAUTH...
-"""]]
diff --git a/doc/tips/skydriveannex/comment_4_8b01dc6ca1082a8c24ff65fec9d759d8._comment b/doc/tips/skydriveannex/comment_4_8b01dc6ca1082a8c24ff65fec9d759d8._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_4_8b01dc6ca1082a8c24ff65fec9d759d8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="comment 4"
- date="2014-05-16T17:51:29Z"
- content="""
-And no link was opened automatically
-"""]]
diff --git a/doc/tips/skydriveannex/comment_5_1d220d96945d497f3a93b5d848eb3995._comment b/doc/tips/skydriveannex/comment_5_1d220d96945d497f3a93b5d848eb3995._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_5_1d220d96945d497f3a93b5d848eb3995._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="108.236.230.124"
- subject="comment 5"
- date="2014-05-16T19:03:34Z"
- content="""
-You have to run git-annex init before you can use other git-annex commands. I think if you run git annex initremote now, it will work.
-"""]]
diff --git a/doc/tips/skydriveannex/comment_6_a7a3afdc7eed9a0eda48dcb57f1e87c6._comment b/doc/tips/skydriveannex/comment_6_a7a3afdc7eed9a0eda48dcb57f1e87c6._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_6_a7a3afdc7eed9a0eda48dcb57f1e87c6._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="comment 6"
- date="2014-05-16T19:25:03Z"
- content="""
-tried it but no luck:
-
-    git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=git-annex
-    initremote skydrive (encryption setup) (shared cipher) env: python2: No such file or directory
-    git-annex: external special remote protocol error, unexpectedly received \"\" (unable to parse command)
-"""]]
diff --git a/doc/tips/skydriveannex/comment_7_7fcd9c6b5e2a3fc7b753eeac06164036._comment b/doc/tips/skydriveannex/comment_7_7fcd9c6b5e2a3fc7b753eeac06164036._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_7_7fcd9c6b5e2a3fc7b753eeac06164036._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="making some progress"
- date="2014-05-17T19:08:16Z"
- content="""
-Figured out how to solve that:
-    which python
-    /opt/local/bin/python
-    shiny-2:git-annex ovi$ sudo ln -s `which python` /usr/bin/python2
-
-The URL opened in my browser, I allowed access, waited for the redirect, copied the URL, hit the next problem:
-
-    OAUTH='https://login.live.com/oauth20_desktop.srf?code=hidden_on_purpose' git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=git-annex
-initremote skydrive (encryption setup) (shared cipher)  21:06:27 [skydriveannex-0.2.1] <module> : 'Starting'
-     21:06:27 [skydriveannex-0.2.1] login : 'EXCEPTION api.auth_get_token:ImportError('No module named requests',)'
-    git-annex: You need to set OAUTH environment variables and folder and encryption parameters when running initremote.
-"""]]
diff --git a/doc/tips/skydriveannex/comment_8_856eaa1b167033aede91a937099c7833._comment b/doc/tips/skydriveannex/comment_8_856eaa1b167033aede91a937099c7833._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_8_856eaa1b167033aede91a937099c7833._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="Done! Success!"
- date="2014-05-17T19:23:06Z"
- content="""
-realized I need requests. to install I need pip.
-
-    sudo port install py27-pip
-
-    pip install requests
-
-    login : 'EXCEPTION api.auth_get_token:ImportError('No module named six',)' 
-
-    pip install six
-
-Finished! Seems to be working and I can see this repository in my assistant!
-"""]]
diff --git a/doc/tips/skydriveannex/comment_9_cfcf767a1bf07957b76d7f44ef8a9500._comment b/doc/tips/skydriveannex/comment_9_cfcf767a1bf07957b76d7f44ef8a9500._comment
deleted file mode 100644
--- a/doc/tips/skydriveannex/comment_9_cfcf767a1bf07957b76d7f44ef8a9500._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
- nickname="Ovidiu"
- subject="QUESTION"
- date="2014-05-17T19:29:37Z"
- content="""
-Wondering about this:
-
-    encryption=shared
-
-I read what it means: http://git-annex.branchable.com/encryption/ 
-
-But now I'm wondering how the repos which I set up via the assistant have been setup. when setting them up I only had the choice between \"encrypt all files\" and \"disable encryption\" so how can I check what settings my other repos are using?
-"""]]
diff --git a/doc/tips/transmission_integration.mdwn b/doc/tips/transmission_integration.mdwn
deleted file mode 100644
--- a/doc/tips/transmission_integration.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-[[This simple script|transmission_integration/transmission_integration.sh]] will make sure files downloaded by the
-[Transmission BitTorrent client](https://www.transmissionbt.com/) will
-be added into git-annex.
-
-To enable it, install it to /usr/local/bin and add the following to
-your settings.json:
-
-	"script-torrent-done-enabled": true,
-	"script-torrent-done-filename": "/usr/local/bin/transmission-git-annex-add",
-
--- [[users/anarcat]]
diff --git a/doc/tips/transmission_integration/transmission_integration.sh b/doc/tips/transmission_integration/transmission_integration.sh
deleted file mode 100644
--- a/doc/tips/transmission_integration/transmission_integration.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/sh
-
-set -e
-
-# environment from transmission:
-# TR_APP_VERSION
-# TR_TIME_LOCALTIME
-# TR_TORRENT_DIR
-# TR_TORRENT_HASH
-# TR_TORRENT_ID
-# TR_TORRENT_NAME
-# source: https://trac.transmissionbt.com/wiki/Scripts
-
-if [ -z "$TR_APP_VERSION" ]; then
-  echo "missing expected $TR_APP_VERSION from Transmission"
-  exit 1
-fi
-
-message="transmission adding torrent '$TR_TORRENT_NAME'
-
-TR_APP_VERSION: $TR_APP_VERSION
-TR_TIME_LOCALTIME: $TR_TIME_LOCALTIME
-TR_TORRENT_DIR: $TR_TORRENT_DIR
-TR_TORRENT_HASH: $TR_TORRENT_HASH
-TR_TORRENT_ID: $TR_TORRENT_ID
-TR_TORRENT_NAME: $TR_TORRENT_NAME
-"
-
-# heredocs preserve newlines
-cat <<EOF
-$message
-EOF
-# add the actual torrent and commit whatever's left to commit
-cd "$TR_TORRENT_DIR"
-git annex add "$TR_TORRENT_NAME" && \
-git commit -F- <<EOF
-$message
-EOF
diff --git a/doc/tips/unlocked_files.mdwn b/doc/tips/unlocked_files.mdwn
deleted file mode 100644
--- a/doc/tips/unlocked_files.mdwn
+++ /dev/null
@@ -1,170 +0,0 @@
-Normally, git-annex stores annexed files in the repository, locked down,
-which prevents the content of the file from being modified.
-That's a good thing, because it might be the only copy, you wouldn't
-want to lose it in a fumblefingered mistake.
-
-	# git annex add some_file
-	add some_file
-	# echo oops > some_file
-	bash: some_file: Permission denied
-
-Sometimes though you want to modify a file. Maybe once, or maybe
-repeatedly. To modify a locked file, you have to first unlock it,
-by running `git annex unlock`.
-
-	# git annex unlock some_file
-	# echo "new content" > some_file
-
-Back before git-annex version 6, and its v6 repository mode, unlocking a file
-like this was a transient thing. You'd modify it and then `git annex add` the
-modified version to the annex, and finally `git commit`. The new version of
-the file was then back to being locked.
-
-	# git annex add some_file
-	add some_file
-	# git commit
-
-But, that had some problems. The main one is that some users want to be able
-to edit files repeatedly, without manually having to unlock them every time.
-The [[direct_mode]] was made all files be unlocked all the time, but it
-had many problems of its own.
-
-## enter v6 mode
-
-/!\ This is an new feature; see its [[todo_list|todo/smudge]]
-for known issues.
-
-This led to the v6 repository mode, which makes unlocked files remain
-unlocked after they're committed, so you can keep changing them and
-committing the changes whenever you'd like. It also lets you use more
-normal git commands (or even interfaces on top of git) for handling
-annexed files.
-
-To get a repository into v6 mode, you can [[upgrade|upgrades]] it.
-This will eventually happen automatically, but for now it's a manual process
-(be sure to read [[upgrades]] before doing this):
-
-	# git annex upgrade
-	
-Or, you can init a new repository in v6 mode.
-
-	# git init
-	# git annex init --version=6
-
-## using it
-
-Using a v6 repository is easy! Simply use regular git commands to add
-and commit files. In a git-annex repository, git will use git-annex
-to store the file contents, and the files will be left unlocked.
-
-[[!template id=note text="""
-Want `git add` to add some file contents to the annex, but store the contents of
-smaller files in git itself? Configure annex.largefiles to match the former.
-See [[largefiles]].
-"""]]
-
-	# cp ~/my_cool_big_file .
-	# git add my_cool_big_file
-	# git commit -m "added my_cool_big_file to the annex"
-	[master (root-commit) 92f2725] added my_cool_big_file to the annex
-	 1 file changed, 1 insertion(+)
-	  create mode 100644 my_cool_big_file
-	# git annex find
-	my_cool_big_file
-
-You can make whatever modifications you want to unlocked files, and commit
-your changes.
-
-	# echo more stuff >> my_cool_big_file
-	# git mv my_cool_big_file my_cool_bigger_file
-	# git commit -a -m "some changes"
-	[master 196c0e2] some changes
-	 2 files changed, 1 insertion(+), 1 deletion(-)
-	 delete mode 100644 my_cool_big_file
-	 create mode 100644 my_cool_bigger_file
-
-Under the hood, this uses git's [[todo/smudge]] filter interface, and
-git-annex converts between the content of the big file and a pointer file,
-which is what gets committed to git. All the regular git-annex commands
-(get, drop, etc) can be used on unlocked files too.
-
-[[!template id=note text="""
-By default, git-annex commands will add files in locked mode,
-unless used on a filesystem that does not support symlinks, when unlocked
-mode is used. To make them always use unlocked mode, run:
-`git config annex.addunlocked true`
-"""]]
-
-## mixing locked and unlocked files
-
-A v6 repository can contain both locked and unlocked files. You can switch 
-a file back and forth using the `git annex lock` and `git annex unlock`
-commands. This changes what's stored in git between a git-annex symlink
-(locked) and a git-annex pointer file (unlocked). To add a file to
-the repository in locked mode, use `git annex add`; to add a file in
-unlocked mode, use `git add`.
-
-If you want to mostly keep files locked, but be able to locally switch
-to having them all unlocked, you can do so using `git annex adjust
---unlock`. See [[git-annex-adjust]] for details. This is particularly
-useful when using filesystems like FAT, and OS's like Windows that don't
-support symlinks.
-
-## using less disk space
-
-Unlocked files are handy, but they have one significant disadvantage
-compared with locked files: They use more disk space.
-
-While only one copy of a locked file has to be stored, often
-two copies of an unlocked file are stored on disk. One copy is in
-the git work tree, where you can use and modify it,
-and the other is stashed away in `.git/annex/objects` (see [[internals]]).
-
-The reason for that second copy is to preserve the old version of the file,
-when you modify the unlocked file in the work tree. Being able to access
-old versions of files is an important part of git after all!
-
-That's a good safe default. But there are ways to use git-annex that
-make the second copy not be worth keeping:
-
-* When you're using git-annex to sync the current version of files across
-  devices, and don't care much about previous versions.
-* When you have set up a backup repository, and use git-annex to copy
-  your files to the backup.
-
-In situations like these, you may want to avoid the overhead of the second
-local copy of unlocked files. There's a config setting for that.
-
-[[!template id=note text="""
-Note that setting annex.thin only has any effect on systems that support
-hard links. It is supported on Windows, but not on FAT filesystems.
-"""]]
-
-	git config annex.thin true
-
-After changing annex.thin, you'll want to fix up the work tree to
-match the new setting:
-
-	git annex fix
-
-Unfortunately, git's smudge interface does not let git-annex honor
-the annex.thin configuration when git is checking out a file.
-So, using `git checkout` to check out a different branch, or even 
-`git merge` can result in some non-thin files making their way into the
-working tree, and using more disk space. A warning will be printed out in
-this situation. You can always run `git annex fix` to re-thin such files.
-
-## tradeoffs
-
-[[!template id=note text="""
-When a [[direct_mode]] repository is upgraded, annex.thin is automatically
-set, because direct mode made the same single-copy tradeoff.
-"""]]
-
-Setting annex.thin can save a lot of disk space, but it's a tradeoff
-between disk usage and safety. 
-
-Keeping files locked is safer and also avoids using unnecessary
-disk space, but trades off easy modification of files.
-
-Pick the tradeoff that's right for you.
diff --git a/doc/tips/unlocked_files/comment_1_29cef6b8e48e722fafed3fe9b7cefe08._comment b/doc/tips/unlocked_files/comment_1_29cef6b8e48e722fafed3fe9b7cefe08._comment
deleted file mode 100644
--- a/doc/tips/unlocked_files/comment_1_29cef6b8e48e722fafed3fe9b7cefe08._comment
+++ /dev/null
@@ -1,14 +0,0 @@
-[[!comment format=mdwn
- username="grawity@2ea26be48562f66fcb9b66307da72b1e2e37453f"
- nickname="grawity"
- subject="usage changes"
- date="2016-01-15T13:31:37Z"
- content="""
-This sounds interesting. But OTOH I'm curious about upgrades from direct mode (which I assume will soon go away):
-
-If currently I just use `annex add; annex sync --content` on a media repo, would that change to `git add --all; git commit -m whatever; annex unlock *; annex sync --content`? That is, will v6 require the manual commit step?
-
-Also, when `annex get` or `annex sync` retrieve files from another repo, will there be an option to have the files unlocked by default, as in v5 direct mode?
-
-(I'm kinda hoping for `annex init --thin` or something similar to the v5 `annex direct`, as manually setting config options is easy to forget.)
-"""]]
diff --git a/doc/tips/unlocked_files/comment_2_54a1811ef2f57f0843e48572ab6713b8._comment b/doc/tips/unlocked_files/comment_2_54a1811ef2f57f0843e48572ab6713b8._comment
deleted file mode 100644
--- a/doc/tips/unlocked_files/comment_2_54a1811ef2f57f0843e48572ab6713b8._comment
+++ /dev/null
@@ -1,15 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2016-01-15T19:07:24Z"
- content="""
-Direct mode is not going away any time soon.
-
-`git add` adds the file to the annex in unlocked mode, and `git annex sync`
-commits any such adds the same as any other changes, so all you need is
-`git add --all; git annex sync --content`
-
-Whether a file is locked or unlocked is a property of the file, that gets
-committed to git, so when you commit some unlocked files, they'll be
-unlocked when they appear in other clones of the repository.
-"""]]
diff --git a/doc/tips/unlocked_files/comment_3_f5f29661bd04a6bba6158307465981d9._comment b/doc/tips/unlocked_files/comment_3_f5f29661bd04a6bba6158307465981d9._comment
deleted file mode 100644
--- a/doc/tips/unlocked_files/comment_3_f5f29661bd04a6bba6158307465981d9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="wsha.code+ga@b38779424f41c5701bbe5937340be43ff1474b2d"
- nickname="wsha.code+ga"
- subject="comment 3"
- date="2016-01-16T13:03:26Z"
- content="""
-1. If you want to save a committed version of a file, is there a way to do that, other than `sync`ing to a remote that does not have `annex.thin` set?
-2. If you `add` and `commit` a file multiple times in a repo without `sync`ing to a remote, what does the commit history look like on a remote when you do `sync` it? It just has several commits for which the file contents are not available?
-3. If you want to preserve history with `annex.thin` set, do you just have to `sync` manually after each commit? I guess you might want to set up a git commit hook to do that in that case.
-"""]]
diff --git a/doc/tips/unlocked_files/comment_4_a8139747da8cbb2510b3647ba448d72d._comment b/doc/tips/unlocked_files/comment_4_a8139747da8cbb2510b3647ba448d72d._comment
deleted file mode 100644
--- a/doc/tips/unlocked_files/comment_4_a8139747da8cbb2510b3647ba448d72d._comment
+++ /dev/null
@@ -1,20 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2016-01-20T18:49:07Z"
- content="""
-@wsha.code, if you opt to use annex.thin, then commit a file, and then
-edit the same file again and commit again, the older commit will be in
-git's history, but if you check it out, the old content of the file won't
-be available. This is very similar to what happens when not using annex.thin,
-but later running git-annex unused and dropping the "unused" intermediate
-version of the file.
-
-Running `git annex sync --content` or just `git annex copy --to remote`
-will get the thin version of the file saved on a remote, and then editing
-it won't lose the content. But note that if you edited a file while it was
-being copied off to the remote, the previous version would still get lost.
-
-If these seem like troublesome behaviors, well that's why annex.thin is not
-enabled by default.
-"""]]
diff --git a/doc/tips/untrusted_repositories.mdwn b/doc/tips/untrusted_repositories.mdwn
deleted file mode 100644
--- a/doc/tips/untrusted_repositories.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Suppose you have a USB thumb drive and are using it as a git annex
-repository. You don't trust the drive, because you could lose it, or
-accidentally run it through the laundry. Or, maybe you have a drive that
-you know is dying, and you'd like to be warned if there are any files
-on it not backed up somewhere else. Maybe the drive has already died
-or been lost.
-
-You can let git-annex know that you don't trust a repository, and it will
-adjust its behavior to avoid relying on that repositories's continued
-availability.
-	
-	# git annex untrust usbdrive
-	untrust usbdrive ok
-
-Now when you do a fsck, you'll be warned appropriately:
-
-	# git annex fsck .
-	fsck my_big_file
-	  Only these untrusted locations may have copies of this file!
-	  	05e296c4-2989-11e0-bf40-bad1535567fe  -- portable USB drive
-	  Back it up to trusted locations with git-annex copy.
-	failed
-
-Also, git-annex will refuse to drop a file from elsewhere just because
-it can see a copy on the untrusted repository.
-
-It's also possible to tell git-annex that you have an unusually high
-level of trust for a repository. See [[trust]] for details.
diff --git a/doc/tips/using_Amazon_Glacier.mdwn b/doc/tips/using_Amazon_Glacier.mdwn
deleted file mode 100644
--- a/doc/tips/using_Amazon_Glacier.mdwn
+++ /dev/null
@@ -1,75 +0,0 @@
-Amazon Glacier provides low-cost storage, well suited for archiving and
-backup. But it takes around 4 hours to get content out of Glacier.
-
-Recent versions of git-annex support Glacier. To use it, you need to have
-[glacier-cli](http://github.com/basak/glacier-cli) installed.
-
-First, export your Amazon AWS credentials:
-
-        # export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"
-        # export AWS_SECRET_ACCESS_KEY="s3kr1t"
-
-Now, create a gpg key, if you don't already have one. This will be used
-to encrypt everything stored in Glacier, for your privacy. Once you have
-a gpg key, run `gpg --list-secret-keys` to look up its key id, something
-like "2512E3C7"
-
-Next, create the Glacier remote.
-
-	# git annex initremote glacier type=glacier keyid=2512E3C7
-	initremote glacier (encryption setup with gpg key C910D9222512E3C7) (gpg) ok
-
-The configuration for the Glacier remote is stored in git. So to make another
-repository use the same Glacier remote is easy:
-
-        # cd /media/usb/annex
-        # git pull laptop
-        # git annex enableremote glacier
-        initremote glacier (gpg) ok
-
-Now the remote can be used like any other remote.
-
-        # git annex move my_cool_big_file --to glacier
-        copy my_cool_big_file (gpg) (checking glacier...) (to glacier...) ok
-
-But, when you try to get a file out of Glacier, it'll queue a retrieval
-job:
-
-	# git annex get my_cool_big_file
-	get my_cool_big_file (from glacier...) (gpg)
-	glacier: queued retrieval job for archive 'GPGHMACSHA1--862afd4e67e3946587a9ef7fa5beb4e8f1aeb6b8'
-	  Recommend you wait up to 4 hours, and then run this command again.
-	failed
-
-Like it says, you'll need to run the command again later. Let's remember to
-do that:
-
-	# at now + 4 hours
-	at> git annex get my_cool_big_file
-
-Another oddity of Glacier is that git-annex is never entirely sure
-if a file is still in Glacier. Glacier inventories take hours to retrieve,
-and even when retrieved do not necessarily represent the current state.
-
-So, git-annex plays it safe, and avoids trusting the inventory:
-
-	# git annex copy important_file --to glacier
-	copy important_file (gpg) (checking glacier...) (to glacier...) ok
-	# git annex drop important_file
-	drop important_file (gpg) (checking glacier...)
-	  Glacier's inventory says it has a copy.
-	  However, the inventory could be out of date, if it was recently removed.
-	  (Use --trust-glacier if you're sure it's still in Glacier.)
-	
-	(unsafe) 
-	  Could only verify the existence of 0 out of 1 necessary copies
-
-Like it says, you can use `--trust-glacier` if you're sure
-Glacier's inventory is correct and up-to-date.
-
-A final potential gotcha with Glacier is that glacier-cli keeps a local
-mapping of file names to Glacier archives. If this cache is lost, or
-you want to retrieve files on a different box than the one that put them in
-glacier, you'll need to use `glacier vault sync` to rebuild this cache.
-
-See [[special_remotes/Glacier]] for details.
diff --git a/doc/tips/using_Amazon_S3.mdwn b/doc/tips/using_Amazon_S3.mdwn
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-git-annex extends git's usual remotes with some [[special_remotes]], that
-are not git repositories. This way you can set up a remote using say,
-Amazon S3, and use git-annex to transfer files into the cloud.
-
-First, export your Amazon AWS credentials:
-
-	# export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"
-	# export AWS_SECRET_ACCESS_KEY="s3kr1t"
-
-Now, create a gpg key, if you don't already have one. This will be used
-to encrypt everything stored in S3, for your privacy. Once you have
-a gpg key, run `gpg --list-secret-keys` to look up its key id, something
-like "2512E3C7"
-
-Next, create the S3 remote, and describe it. 
-
-	# git annex initremote cloud type=S3 chunk=1MiB keyid=2512E3C7
-	initremote cloud (encryption setup with gpg key C910D9222512E3C7) (checking bucket) (creating bucket in US) (gpg) ok
-	# git annex describe cloud "at Amazon's US datacenter"
-	describe cloud ok
-
-The configuration for the S3 remote is stored in git. So to make another
-repository use the same S3 remote is easy:
-
-	# export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"
-	# export AWS_SECRET_ACCESS_KEY="s3kr1t"
-	# git pull laptop
-	# git annex enableremote cloud
-	enableremote cloud (gpg) (checking bucket) ok
-
-Notice that to enable an existing S3 remote, you have to provide the Amazon
-AWS credentials because they were not stored in the repository. (It is
-possible to configure git-annex to do that, but not the default.)
-
-See [[public_Amazon_S3_remote]] for how to set up a Amazon S3 remote that
-can be used by the public, without them needing AWS credentials.
-
-See [[special_remotes/S3]] for details about configuring S3 remotes.
diff --git a/doc/tips/using_Amazon_S3/comment_1_666a26f95024760c99c627eed37b1966._comment b/doc/tips/using_Amazon_S3/comment_1_666a26f95024760c99c627eed37b1966._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_1_666a26f95024760c99c627eed37b1966._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY"
- nickname="Matt"
- subject="ANNEX_S3 vs AWS for keys"
- date="2012-05-29T12:24:25Z"
- content="""
-The instructions state ANNEX_S3_ACCESS_KEY_ID and ANNEX_SECRET_ACCESS_KEY but git-annex cannot connect with those constants. git-annex tells me to set both \"AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\" instead, which works. This is with Xubuntu 12.04.
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_2_f5a0883be7dbb421b584c6dc0165f1ef._comment b/doc/tips/using_Amazon_S3/comment_2_f5a0883be7dbb421b584c6dc0165f1ef._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_2_f5a0883be7dbb421b584c6dc0165f1ef._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.153.81.112"
- subject="comment 2"
- date="2012-05-29T19:10:42Z"
- content="""
-Thanks, I've fixed that. (You could have too.. this is a wiki ;)
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment b/doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="annexuser"
- ip="64.71.7.82"
- subject="Altering AWS credentials"
- date="2014-04-15T21:59:43Z"
- content="""
-If I revoke old AWS credentials and create new ones, how would I inform git-annex of the change to `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`?
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment b/doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.191"
- subject="comment 4"
- date="2014-04-17T19:44:55Z"
- content="""
-You can use `git annex enableremote` to change an existing remote's configuration. So this should work:
-
-    # export AWS_ACCESS_KEY_ID=\"newRANDOMGOBBLDEYGOOK\"
-    # export AWS_SECRET_ACCESS_KEY=\"news3kr1t\"
-    # git annex enableremote cloud
-
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment b/doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkmN2ZZIdYNiFKmEH7rz4jMb6sYsx_dptA"
- nickname="Jack William"
- subject="What if you do not want to encrypt?"
- date="2014-09-07T18:35:19Z"
- content="""
-Once use case for GIT with Amazon S3 is to maintain a web site on S3 you can easily update from a local machine. In that case you would not want to encrypt. Is encryption optional? This isn't clear from the instructions.
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment b/doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="http://schnouki.net/"
- nickname="Schnouki"
- subject="comment 6"
- date="2014-09-09T12:48:59Z"
- content="""
-Jack, if you don't want to use encryption you can use `encryption=none` as documented [here](http://git-annex.branchable.com/special_remotes/S3/).
-
-I'm not sure exactly what you're trying to do, but please note that you files won't be easily available on S3: they will be named as git-annex keys, with long and unreadable names such as \"SHA256E-s6311--c7533fdd259d872793b7298cbb56a1912e80c52a845661b0b9ff391c65ee2abc.html\" instead of \"index.html\".
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment b/doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment
+++ /dev/null
@@ -1,33 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmH7o6q2l99M-PQolOfbR3_i5B_jtTIcAE"
- nickname="Giovanni"
- subject="How to publish your files to the public"
- date="2014-09-13T15:29:18Z"
- content="""
-I don't know if this is what Jack wanted, but you can upload your files to S3 and let them be accessible through a public URL.
-
-First, go to (or create) the bucket you will use at [S3](https://console.aws.amazon.com/s3/) and add a public get policy to it:
-
-```
-   {
-    	\"Version\": \"2008-10-17\",
-    	\"Statement\": [
-    		{
-    			\"Sid\": \"AllowPublicRead\",
-    			\"Effect\": \"Allow\",
-    			\"Principal\": {
-    				\"AWS\": \"*\"
-    			},
-    			\"Action\": \"s3:GetObject\",
-    			\"Resource\": \"arn:aws:s3:::BUCKETNAME/*\"
-    		}
-    	]
-    }
-```
-
-Then set up your special remote with the options `encryption=none`, `bucket='BUCKETNAME'` `chunk=0` (and any others you want).
-
-Your files will be accessible through `http://BUCKETNAME.s3-website-LOCATION.amazonaws.com/KEY` where location is the one specified through the options `datacenter` and KEY is the SHA-SOMETHING hash of the file, created by git annex and accessible if you run `git annex lookupkey FILEPATH`.
-
-This way you can share a link to each file you have at your S3 remote.
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment b/doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkPIqJZ88VZEVqLhLOd1LMdYXcy6bAW9qE"
- nickname="Lemao"
- subject="comment 8"
- date="2015-01-07T13:54:23Z"
- content="""
-I use github as my central git repository and I would like to use S3 to store large files with annex. Since the s3 remote in .git/config is not stored in github, how do I make sure I reconnect to the same s3 bucket in case I delete my local clone? Reinitializing the remote will create a completely new bucket.
-
-I would also be a good idea to centralize git-annex folders inside a single bucket so I keep the global namespace under control and can narrow down the permissioning.
-"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment b/doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment
deleted file mode 100644
--- a/doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- subject="comment 9"
- date="2015-01-07T17:25:43Z"
- content="""
-Lemao, make sure you have pushed your git-annex branch to your central git repository.
-
-When you clone that repo elsewhere, you can add the S3 remote by running `git annex enableremote cloud` (replace \"cloud\" with whatever name you originally picked when you used `git annex initremote` to set up the S3 remote in the first place.
-
-git-annex stores the necessary configuration of the S3 remote on the git-annex branch.
-"""]]
diff --git a/doc/tips/using_Google_Cloud_Storage.mdwn b/doc/tips/using_Google_Cloud_Storage.mdwn
deleted file mode 100644
--- a/doc/tips/using_Google_Cloud_Storage.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-[Google Cloud Storage](https://cloud.google.com/products/cloud-storage)
-supports the same API as Amazon S3, so the
-[[S3 special remote|special_remotes/S3]] can be used with it.
-Here is a configuration example:
-
-	git annex initremote cloud type=S3 encryption=none host=storage.googleapis.com port=80
-
-Thanks to jterrance for the [original tip](https://gist.github.com/4576324).
---[[Joey]] 
diff --git a/doc/tips/using_box.com_as_a_special_remote.mdwn b/doc/tips/using_box.com_as_a_special_remote.mdwn
deleted file mode 100644
--- a/doc/tips/using_box.com_as_a_special_remote.mdwn
+++ /dev/null
@@ -1,71 +0,0 @@
-[Box.com](http://box.com/) is a file storage service, currently notable 
-for providing 50 gb of free storage if you sign up with its Android client.
-(Or a few gb free otherwise.)
-
-git-annex can use Box as a [[special remote|special_remotes]].
-Recent versions of git-annex make this very easy to set up:
-
-	WEBDAV_USERNAME=you@example.com WEBDAV_PASSWORD=xxxxxxx git annex initremote box.com type=webdav url=https://dav.box.com/dav/git-annex chunk=50mb encryption=shared
-
-Note the use of [[chunking]]; Box has a 100 mb maximum file size, and this
-breaks up large files into chunks before that limit is reached.
-
-# old davfs2 method
-
-This method is deprecated, but still documented here just in case.
-Note that the files stored using this method cannot reliably be retreived
-using the webdav special remote.
-
-## davfs2 setup
-
-* First, install
-  the [davfs2](http://savannah.nongnu.org/projects/davfs2) program,
-  which can mount Box using WebDAV. On Debian, just `sudo apt-get install davfs2`
-* Allow users to mount davfs filesystems, by ensuring that
-  `/sbin/mount.davfs` is setuid root. On Debian, just `sudo dpkg-reconfigure davfs2`
-* Add yourself to the davfs2 group.
-
-        sudo adduser $(whoami) davfs2
-
-* Edit `/etc/fstab`, and add a line to mount Box using davfs.
-
-        sudo mkdir -p /media/box.com
-        echo "https://dav.box.com/dav/	/media/box.com	davfs	noauto,user	0 0" | sudo tee -a /etc/fstab
-
-* Create `~/.davfs2/davfs2.conf` with some important settings:
-
-        mkdir ~/.davfs2/
-        echo use_locks 0 > ~/.davfs2/davfs2.conf
-        echo cache_size 1 >> ~/.davfs2/davfs2.conf
-        echo delay_upload 0 >> ~/.davfs2/davfs2.conf
-
-* Create `~/.davfs2/secrets`. This file contains your Box.com login and password.
-  Your login is probably the email address you signed up with.
-
-        echo "/media/box.com id@joeyh.name mypassword" > ~/.davfs2/secrets
-        chmod 600 ~/.davfs2/secrets
-
-* Now you should be able to mount Box, as a non-root user:
-
-        mount /media/box.com
-
-## git-annex setup
-
-You need git-annex version 3.20120303 or newer, which adds support for chunking
-files larger than Box's 100 mb limit.
-
-Create the special remote, in your git-annex repository.
-** This example is non-encrypted; fill in your gpg key ID for a securely
-encrypted special remote! **
-
-	git annex initremote box.com type=directory directory=/media/box.com chunk=2mb encryption=none
-
-Now git-annex can copy files to box.com, get files from it, etc, just like
-with any other special remote.
-
-	% git annex copy bigfile --to box.com
-	bigfile (to box.com...) ok
-	% git annex drop bigfile
-	bigfile (checking box.com...) ok
-	% git annex get bigfile
-	bigfile (from box.com...) ok
diff --git a/doc/tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.mdwn b/doc/tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.mdwn
deleted file mode 100644
--- a/doc/tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.mdwn
+++ /dev/null
@@ -1,59 +0,0 @@
-## Intro
-
-This tip is based on my (Matt Ford) experience of using `git annex` with my out-and-about netbook which hits many different wifi networks and has no fixed home or address.
-
-I'm not using a bare repository that allows pushing (an alternative solution) nor do I fancy allowing `git push` to run against my desktop checked out repository (perhaps I worry over nothing?)
-
-None of this is really `git annex` specific but I think it is useful to know...
-
-## Dealing with no fixed hostname
-
-Essentially set up two repos as per the [[walkthrough]].
-
-Desktop as follows:
-
-    cd ~/annex
-    git init
-    git annex init "desktop"
-
-And the laptop like this
-
-    git clone ssh://desktop/annex
-    git init
-    git annex init "laptop"
-
-Now we want to add the the repos as remotes of each other.  
-
-For the laptop it is easy:
-
-    git remote add desktop ssh://desktop/~/annex 
-
-However for the desktop to add an ever changing laptops hostname it's a little tricky.  We make use of remote SSH tunnels to do this.  Essentially we have the laptop (which always knows its own name and address and knows the address of the desktop) create a tunnel starting on an arbitrary port at the desktop and heads back to the laptop on its own SSH server port (22).
-
-To do this make part of your laptop's SSH config look like this:
-
-    Host desktop
-    User matt
-    HostName desktop.example.org
-    RemoteForward 2222 localhost:22
-
-Now on the desktop to connect over the tunnel to the laptop's SSH port you need this:
-
-    Host laptop
-    User matt
-    HostName localhost
-    port 2222
-
-So to add the desktop's remote:
-
-a) From the laptop ensure the tunnel is up
-
-    ssh desktop
-
-b) From the desktop add the remote
-
-    git remote add laptop ssh://laptop/~/annex
-
-So now you can work on the train, pop on the wifi at work upon arrival, and sync up with a `git pull && git annex get`.
-
-An alternative solution may be to use direct tunnels over Openvpn.
diff --git a/doc/tips/using_gitolite_with_git-annex.mdwn b/doc/tips/using_gitolite_with_git-annex.mdwn
deleted file mode 100644
--- a/doc/tips/using_gitolite_with_git-annex.mdwn
+++ /dev/null
@@ -1,149 +0,0 @@
-[Gitolite](https://github.com/sitaramc/gitolite) is a git repository
-manager. Here's how to add git-annex support to gitolite, so you can
-`git annex copy` files to a gitolite repository, and `git annex get`
-files from it.
-
-A nice feature of using gitolite with git-annex is that users can be given
-read-only access to a repository, and this allows them to `git annex get`
-file contents, but not change anything.
-
-First, you need new enough versions:
-
-* the current `master` branch of gitolite works with git-annex (tested 2014-04-19),
-  but v3.5.3 and earlier v3.x require use of the `git-annex` branch.
-* gitolite 2.2 also works -- this version contains a git-annex-shell ADC
-  and supports "ua" ADCs.
-* git-annex 3.20111016 or newer needs to be installed on the gitolite
-  server. Don't install an older version, it wouldn't be secure!
-
-### Instructions for gitolite `master` branch
-
-To setup gitolite to work with git-annex, you can follow the instructions on the gitolite website,
-and just add `'git-annex-shell ua',` to the ENABLE list in `~/.gitolite.rc`.
-
-Here are more detailed instructions:
-
-1: Create a `git` user
-
-<pre>
-sudo adduser \
-   --system \
-   --shell /bin/bash \
-   --gecos 'git version control' \
-   --group \
-   --disabled-password \
-   --home /home/git git
-</pre>
-
-2: Copy a public SSH key for the user you want to be the gitolite administrator.
-In the instructions below, I placed the key in a file named `/home/git/me.pub`. 
-
-3: Clone and install gitolite
-
-First switch to the `git` user (e.g. `sudo su - git`) and then run:
-
-<pre>
-cd
-git clone https://github.com/sitaramc/gitolite.git
-mkdir -p bin
-./gitolite/install -ln
-</pre>
-
-4: Add `~/bin` to `PATH`
-
-Make sure that `~/bin` is in the `PATH`, since that's where gitolite installed its binary.  Do something like this:
-
-<pre>
-echo 'export PATH=/home/git/bin:$PATH' >> .profile
-export PATH=/home/git/bin:$PATH
-</pre>
-
-5: Configure gitolite
-
-Edit `~/.gitolite.rc` to enable the git-annex-shell command.
-Find the `ENABLE` list and add this line in there somewhere:
-
-<pre>
-'git-annex-shell ua',
-</pre>
-
-Now run gitolite's setup:
-
-<pre>
-gitolite setup -pk me.pub
-rm me.pub
-</pre>
-
-### Instructions for gitolite 2.2
-
-And here's how to set it up. The examples are for gitolite as installed
-on Debian with apt-get, but the changes described can be made to any
-gitolite installation, just with different paths.
-
-Set `$GL_ADC_PATH` in `.gitolite.rc`, if you have not already done so.
-
-<pre>
-echo '$GL_ADC_PATH = "/usr/local/lib/gitolite/adc/";' >>~gitolite/.gitolite.rc
-</pre>
-
-Make the ADC directory, and a "ua" subdirectory.
-
-<pre>   
-mkdir -p /usr/local/lib/gitolite/adc/ua
-</pre>
-
-Install the git-annex-shell ADC into the "ua" subdirectory from the gitolite repository.
-
-<pre>   
-cd /usr/local/lib/gitolite/adc/ua/
-cp gitolite/contrib/adc/git-annex-shell .
-</pre>
-
-Now all gitolite repositories can be used with git-annex just as any
-ssh remote normally would be used. For example:
-
-<pre>
-# git clone gitolite@localhost:testing
-Cloning into testing...
-Receiving objects: 100% (18/18), done.
-# cd testing
-# git annex init
-init  ok
-# cp /etc/passwd my-cool-big-file
-# git annex add my-cool-big-file
-add my-cool-big-file ok
-(Recording state in git...)
-# git commit -m added
-[master d36c8b4] added
- 1 files changed, 1 insertions(+), 0 deletions(-)
- create mode 120000 my-cool-big-file
-# git push --all
-Counting objects: 17, done.
-Delta compression using up to 2 threads.
-Compressing objects: 100% (12/12), done.
-Writing objects: 100% (14/14), 1.39 KiB, done.
-Total 14 (delta 0), reused 1 (delta 0)
-To gitolite@localhost:testing
-   c552a38..db4653e  git-annex -> git-annex
-   29cd204..d36c8b4  master -> master
-# git annex copy --to origin
-copy my-cool-big-file (checking origin...) (to origin...) 
-WORM-s2502-m1318875140--my-cool-big-file
-        2502 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/1)
-
-sent 2606 bytes  received 31 bytes  1758.00 bytes/sec
-total size is 2502  speedup is 0.95
-ok
-</pre>
-
-
-### Troubleshooting
-
-I got an error like this when setting up gitolite *after* setting up a local git repo and git annex:
-
-<pre>
-git-annex-shell: First run: git-annex init
-Command ssh ["git@git.example.com","git-annex-shell 'configlist' '/~/myrepo.git'"] failed; exit code 1
-</pre>
-
-because I forgot to "git push --all" after adding the new gitolite remote.
diff --git a/doc/tips/using_the_web_as_a_special_remote.mdwn b/doc/tips/using_the_web_as_a_special_remote.mdwn
deleted file mode 100644
--- a/doc/tips/using_the_web_as_a_special_remote.mdwn
+++ /dev/null
@@ -1,121 +0,0 @@
-The web can be used as a [[special_remote|special_remotes]] too.
-
-	# git annex addurl http://example.com/video.mpeg
-	addurl example.com_video.mpeg (downloading http://example.com/video.mpeg)
-	########################################################## 100.0%
-	ok
-
-Now the file is downloaded, and has been added to the annex like any other
-file. So it can be renamed, copied to other repositories, and so on.
-
-To add a lot of urls at once, just list them all as parameters to
-`git annex addurl`.
-
-## trust issues
-
-Note that git-annex assumes that, if the web site does not 404, and has the
-right file size, the file is still present on the web, and this counts as
-one [[copy|copies]] of the file. If the file still seems to be present 
-on the web, it will let you remove your last copy, trusting it can be
-downloaded again:
-
-	# git annex drop example.com_video.mpeg
-	drop example.com_video.mpeg (checking http://example.com/video.mpeg) ok
-
-If you don't [[trust]] the web to this degree, just let git-annex know:
-
-	# git annex untrust web
-	untrust web ok
-
-With the result that it will hang onto files:
-
-	# git annex drop example.com_video.mpeg
-	drop example.com_video.mpeg (unsafe) 
-	  Could only verify the existence of 0 out of 1 necessary copies
-	  Also these untrusted repositories may contain the file:
-	  	00000000-0000-0000-0000-000000000001  -- web
-	  (Use --force to override this check, or adjust numcopies.)
-	failed
-
-## attaching urls to existing files
-
-You can also attach urls to any file already in the annex:
-
-	# git annex addurl --file my_cool_big_file http://example.com/cool_big_file
-	addurl my_cool_big_file ok
-	# git annex whereis my_cool_big_file
-	whereis my_cool_big_file (2 copies) 
-  	00000000-0000-0000-0000-000000000001 -- web
-   	27a9510c-760a-11e1-b9a0-c731d2b77df9 -- here
-
-## configuring filenames
-
-By default, `addurl` will generate a filename for you. You can use
-`--file=` to specify the filename to use.
-
-If you're adding a bunch of related files to a directory, or just don't
-like the default filenames generated by `addurl`, you can use `--pathdepth`
-to specify how many parts of the url are put in the filename.
-A positive number drops that many paths from the beginning, while a negative
-number takes that many paths from the end.
-	
-	# git annex addurl http://example.com/videos/2012/01/video.mpeg
-	addurl example.com_videos_2012_01_video.mpeg (downloading http://example.com/videos/2012/01/video.mpeg)
-	# git annex addurl http://example.com/videos/2012/01/video.mpeg --pathdepth=2
-	addurl 2012_01_video.mpeg (downloading http://example.com/videos/2012/01/video.mpeg)
-	# git annex addurl http://example.com/videos/2012/01/video.mpeg --pathdepth=-2
-	addurl 01_video.mpeg (downloading http://example.com/videos/2012/01/video.mpeg)
-
-## videos
-
-<a name=quvi></a>
-
-There's support for downloading videos from sites like YouTube, Vimeo,
-and many more. This relies on [quvi](http://quvi.sourceforge.net/) to find
-urls to the actual videos files.
-
-When you have quvi installed, you can just 
-`git annex addurl http://youtube.com/foo` and it will detect that
-it is a video and download the video content for offline viewing.
-
-Later, in another clone of the repository, you can run `git annex get` on
-the file and it will also be downloaded with the help of quvi. This works
-even if the video host has transcoded or otherwise changed the video
-in the meantime; the assumption is that these video files are equivalent.
-
-There is an `annex.quvi-options` configuration setting that can be used
-to pass parameters to quvi. For example, you could set `git config
-annex.quvi-options "--format low"` to configure it to download low
-quality videos from YouTube.
-
-Note that for performance reasons, the url is not checked for redirects,
-so some shortened urls will not be detected. You can
-either load the short url in a browser to get the full url, or you
-can force use of quvi with redirect detection, by prepending "quvi:" to the
-url.
-
-To download a youtube playlist, you need to find the feed associated with that
-playlist, and pass it to `git annex importfeed`. There does not seem to be
-an easy link anywhere to get the feed, but you can construct its url
-manually. For a playlist like
-"https://www.youtube.com/playlist?list=PL4F80C7D2DC8D9B6C", the
-feed is "http://gdata.youtube.com/feeds/api/playlists/PL4F80C7D2DC8D9B6C"
-
-More details about youtube feeds at <http://googlesystem.blogspot.com/2008/01/youtube-feeds.html>
--- `git-annex importfeed` should handle all of them.
-
-## bittorrent
-
-The [[bittorrent_special_remote|special_remotes/bittorrent]] lets git-annex
-also download the content of torrent files, and magnet links to torrents.
-
-You can simply pass the url to a torrent to `git annex addurl`
-the same as any other url.
-
-You have to have [aria2](http://aria2.sourceforge.net/) 
-and bittornado (or the original bittorrent) installed for this
-to work.
-
-## podcasts
-
-This is done using `git annex importfeed`. See [[downloading podcasts]].
diff --git a/doc/tips/visualizing_repositories_with_gource.mdwn b/doc/tips/visualizing_repositories_with_gource.mdwn
deleted file mode 100644
--- a/doc/tips/visualizing_repositories_with_gource.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-[Gource](http://code.google.com/p/gource/) is an amazing animated
-visualisation of a git repository.
-
-Normally, gource shows files being added, removed, and changed in
-the repository, and the user(s) making the changes. Of course it can be
-used in this way in a repository using git-annex too; just run `gource`.
-
-The other way to use gource with git-annex is to visualise the movement of
-annexed file contents between repositories. In this view, the "users" are
-repositories, and they move around the file contents that are being added
-or removed from them with git-annex.
-
-[[!img screenshot.jpg]]
-
-To use gource this way, first go into the directory you want to visualize,
-and use `git annex log` to make an input file for `gource`:
-
-	git annex log --gource | tee gource.log
-	sort gource.log | gource --log-format custom -
-
-The `git annex log` can take a while, to speed it up you can use something
-like `--after "4 months ago"` to limit how far back it goes.
diff --git a/doc/tips/visualizing_repositories_with_gource/screenshot.jpg b/doc/tips/visualizing_repositories_with_gource/screenshot.jpg
deleted file mode 100644
Binary files a/doc/tips/visualizing_repositories_with_gource/screenshot.jpg and /dev/null differ
diff --git a/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn b/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn
deleted file mode 100644
--- a/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-A git-annex repository on a removable USB drive is great, until the cable
-falls out at the wrong time and git's repository gets trashed. The way
-git checksums everything and the poor quality of USB media makes this
-perhaps more likely than you would expect. If this happens to you,
-here's a way to recover that makes the most of whatever data is left
-on the drive.
-
-* First, run `git fsck`. If it does not report any problems, your data
-  is fine, and you don't need to proceed further.
-* So `git fsck` says the git repository is corrupted. But probably the data
-  git-annex stored is fine. Your first step is to clone another copy
-  of the git repository from somewhere else. Let's call this clone
-  "$good", and the corrupted repository "$bad".
-* Preserve your git configuration changes, and the `annex.uuid` setting:
-  `mv $bad/.git/config $good/.git/config`
-* Move annexed data into the new repository: `mkdir $good/.git/annex; mv
-  $bad/.git/annex/objects $good/.git/annex/objects`
-* Reinitalize git-annex: `cd $good; git annex init`
-* Check for any problems with the annexed data: `cd $good; git annex fsck`
-* Now you can remove the corrupted repository, the new one is ready to use.
-
-Alternatively, recent versions of git-annex have a `git annex repair`
-command that uses <http://git-repair.branchable.com/> to repair a
-repository in-place. The git-annex assistant will detect most corruptions
-and offer to run the repair for you automatically.
-
---[[Joey]]
diff --git a/doc/tips/what_to_do_when_you_lose_a_repository.mdwn b/doc/tips/what_to_do_when_you_lose_a_repository.mdwn
deleted file mode 100644
--- a/doc/tips/what_to_do_when_you_lose_a_repository.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-So you lost a thumb drive containing a git-annex repository. Or a hard
-drive died or some other misfortune has befallen your data.
-
-Unless you configured backups, git-annex can't get your data back. But it
-can help you deal with the loss.
-
-Go somewhere that knows about the lost repository, and mark it as
-dead:
-
-	git annex dead usbdrive
-
-This retains the [[location_tracking]] information for the repository,
-but avoids trying to access it, or list it as a location where files
-are present.
-
-If you later found the drive, you could let git-annex know it's found
-like so:
-
-	git annex semitrust usbdrive
diff --git a/doc/tips/yet_another_simple_disk_usage_like_utility.mdwn b/doc/tips/yet_another_simple_disk_usage_like_utility.mdwn
deleted file mode 100644
--- a/doc/tips/yet_another_simple_disk_usage_like_utility.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Here's the annex-du script that I use:
-
-#!/bin/sh
-git annex find "$@" --include '*' --format='${bytesize}\n' |awk '{ sum += $1; nfiles++; } END { printf "%d files, %.3f MB\n", nfiles, sum/1000000 } '
-
-This one can be slow on a large number of files, but it has an advantage of being able to use all of the filtering available in git annex find.
-For example, to figure out how much is stored in remote X, do
-
-annex-du --in=X
diff --git a/doc/todo.mdwn b/doc/todo.mdwn
deleted file mode 100644
--- a/doc/todo.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-This is git-annex's todo list. Link items to [[todo/done]] when done. A more complete [[design/roadmap/]] is also available.
-
-[[!inline pages="./todo/* and !./todo/done and !link(done) 
-and !*/Discussion" actions=yes postform=yes postformtext="Add a new todo titled:" show=0 archive=yes]]
diff --git a/doc/todo/--batch_for_add.mdwn b/doc/todo/--batch_for_add.mdwn
deleted file mode 100644
--- a/doc/todo/--batch_for_add.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-should be extremely helpful when adding many files one at a time ;)
-
-[[!meta author=yoh]]
-
-> Implemented; made it not recurse into directories and output a blank line
-> if it doesn't add the file, so there's aways 1 line of output for each
-> input. [[done]] --[[Joey]]
diff --git a/doc/todo/--batch_for_add/comment_1_b1362c86e162a49717d7e3b0816025ba._comment b/doc/todo/--batch_for_add/comment_1_b1362c86e162a49717d7e3b0816025ba._comment
deleted file mode 100644
--- a/doc/todo/--batch_for_add/comment_1_b1362c86e162a49717d7e3b0816025ba._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2016-01-19T15:32:48Z"
- content="""
-Has similar problems to batching find; if a whole directory is added any
-number of lines can be output.
-
-So, either needs a similar thing to indicate end of output for current
-item, or perhaps it would make sense for the batched add to not recurse
-into directories, so it would always output exactly 1 line per input.
-"""]]
diff --git a/doc/todo/--batch_for_find.mdwn b/doc/todo/--batch_for_find.mdwn
deleted file mode 100644
--- a/doc/todo/--batch_for_find.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I am using `annex find filename` after running 'annex add` to figure out if file was added to annex or to git.
-
-[[!meta author=yoh]]
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/--batch_for_info.mdwn b/doc/todo/--batch_for_info.mdwn
deleted file mode 100644
--- a/doc/todo/--batch_for_info.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-I guess as other commands which take separate files/keys as its argument(s), having --batch for info command would be of benefit
-
-[[!meta author=yoh]]
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/--batch_for_whereis.mdwn b/doc/todo/--batch_for_whereis.mdwn
deleted file mode 100644
--- a/doc/todo/--batch_for_whereis.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-subject.  IMHO yet another useful command to be batched
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/Add_confirmation_dialog_to_the_restart_option.mdwn b/doc/todo/Add_confirmation_dialog_to_the_restart_option.mdwn
deleted file mode 100644
--- a/doc/todo/Add_confirmation_dialog_to_the_restart_option.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-I have four git-annex repositories and I often use the option "Switch repository" in the webapp, but this option is just above the "Restart daemon" option and I have clicked it quite a few time unintentionally.
-Could it be possible to add a confirmation dialog just like in the "Shutdown daemon" option?
-
-> spacer added; [[done]]  --[[Joey]]
diff --git a/doc/todo/Amazon_Cloud_Drive.mdwn b/doc/todo/Amazon_Cloud_Drive.mdwn
deleted file mode 100644
--- a/doc/todo/Amazon_Cloud_Drive.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-I've released a special remote which uses rclone to enable Amazon Cloud Drive: <https://github.com/DanielDent/git-annex-remote-rclone> -- [[DanielDent]]
-
----
-
-Is there a special remote implementation for Amazon Cloud Drive?
-
-It's just became unlimited for a fair price: $60/year ( https://www.amazon.com/clouddrive/pricing ).
-
-http://techcrunch.com/2015/03/26/amazon-goes-after-dropbox-google-microsoft-with-unlimited-cloud-drive-storage/
-
--- bence aka [[parhuzamos]] 
-
-> Not yet, but I just need to investigate haskell api bindings for it, I
-> suppose. --[[Joey]]
-
-> > Don't know if there's such a thing... there seems to be SDKs for android and IOS, but nothing more. It seems like it's a REST API: https://developer.amazon.com/public/apis/experience/cloud-drive/... --[[anarcat]]
-
->> requested it be added to amazonka <https://github.com/brendanhay/amazonka/issues/168> --[[Joey]]
-
->>> In the meantime, <https://github.com/DanielDent/git-annex-remote-rclone> supports Amazon Cloud drive.
->>> I may revisit adding support for it directly to git-annex if amazonka
->>> does get support, but for now, that seems good enough, so [[done]]
->>> --[[Joey]]
diff --git a/doc/todo/Bittorrent-like_features.mdwn b/doc/todo/Bittorrent-like_features.mdwn
deleted file mode 100644
--- a/doc/todo/Bittorrent-like_features.mdwn
+++ /dev/null
@@ -1,63 +0,0 @@
-There are two different possible ways git-annex could use bittorrent:
-
-Let's describe those one by one.
-
-[[!toc]]
-
-Downloading files from multiple git-annex sources simultaneously
-================================================================
-
-Having your remotes (optionally!) act like a swarm would be an awesome feature to have because you bring in a lot of new features that optimize storage, bandwidth, and overall traffic usage. This would be made a lot easier if parts of it were implemented in small steps that added a nifty feature. The best part is, each of these could be implemented by themselves, and they're all features that would be really useful.
-
- 1. Concurrent downloads of a file from remotes.
-
-    This would make sense to have, it saves upload traffic on your remotes, and you also get faster DL speeds on the receiving end.
-
- 2. Implementing part of the super-seeding capabilities.
-
-    You upload pieces of a file to different remotes from your laptop, and on your desktop you can download all those pieces and put them together again to get a complete file. If you really wanted to get fancy, you could build in redundancy (ala RAID) so if a remote or two gets lost, you don't lose the entire file. This would be a very efficient use of storage if you have a bunch of free cloud storage accounts (~1GB each) and some big files you want to back up.
-
- 3. Setting it up so that those remotes could talk to one another and share those pieces.
-
-    This is where it gets more like bittorrent. Useful because you upload 1 copy and in a few hours, have say, 5 complete copies on 5 different remotes. You could add or remove remotes from a swarm locally, and push those changes to those remotes, which then adapt themselves to suit the new rules and share those with other remotes in the swarm (rules should be GPG-signed as a safety precaution). Also, if/when deltas get implemented, you could push that delta to the swarm and have all the remotes adopt it. This is cooler than regular bittorrent because the shared file can be updated. As a safety precaution, the delta could be GPG signed so a corrupt file doesn't contaminate the entire swarm. Each remote could have bandwidth/storage limits set in a dotfile.
-
-This is a high-level idea of how it might work, and it's also a HUGE set of features to add, but if implemented, you'd be saving a ton of resources, adding new use cases, and making git-annex more flexible.
-
-Obviously, Step 3 would only work on remotes that you have control of processes on, but if given login credentials to cloud storage remotes (potentially dangerous!) they could read/write to something like dropbox or rsync.
-
-Another thing, this would be completely trackerless. You just use remote groups (or create swarm definitions) and share those with your remotes. **It's completely decentralized!**
-
-This was originally posted [[as a forum post|forum/Wishlist:_Bittorrent-like_transfers]] by [[users/GLITTAH]].
-
-Update: there are multiple projects trying to solve this problem space outside of git-annex, which git-annex should reuse.
-
- * [[design/assistant/telehash/]] support is still not complete, as the upstream spec and implementation (particularly Haskell bits), need to mature
- * [[special_remotes/ipfs/]] is now a special remote that does respond to some of the requirements (but [duplicates files around](https://github.com/ipfs/go-ipfs/issues/875) even more and is [kind of](https://github.com/ipfs/go-ipfs/issues/872) [slow](https://github.com/ipfs/go-ipfs/issues/898))
- * [Maidsafe](http://maidsafe.net/) is another option, which provides storage and uses crypto-currency incentives
- * [Storj](http://storj.io/) is similar
- * [camlistore](https://camlistore.org/) is yet another option
- * [syncthing](https://syncthing.net/) looks like a btsync replacement, and could also be interesting, see the [[todo/syncthing_special_remote]] discussion
- * [gittorrent](http://blog.printf.net/articles/2015/05/29/announcing-gittorrent-a-decentralized-github/) allows for decentralised sharing of the git objects, which could replace pairing between repositories, except it [doesn't support push yet](https://github.com/cjb/GitTorrent/issues/3)
- * [gitocalypse](https://github.com/SeekingFor/gitocalypse) is similar to gittorrent, except it uses Freenet and HG (Mercurial?!) instead of the bittorrent DHT
- * [tox](https://tox.chat/) - DHT-enabled chat, file transfer and messaging platform, [no stable release](https://github.com/irungentoo/toxcore/issues/1353), [security concerns](http://lists.alioth.debian.org/pipermail/pkg-privacy-maintainers/Week-of-Mon-20150928/000046.html)
- * [ricochet](https://ricochet.im/) - similar, but relies on Tor, unclear if it supports file transfers, packaged in Debian
- * [pond](https://pond.imperialviolet.org/) - similar to ricochet
-
-joeyh's approach for now is to [[wait and see what will emerge|devblog/day_219__catching_up_and_looking_back/]], but of course people are welcome to implement their own [[special_remotes]] to fix this problem!
-
-Using an external client (addurl torrent support)
-=================================================
-
-The alternative to this would be to add `addurl` support for bittorrent files. The same way we can now add Youtube videos to a git-annex repository thanks to [[quvi]], we could also simply do:
-
-    git annex addtorrent debian-live-7.0.0-amd64-standard.iso.torrent
-
-or even better:
-
-    git annex addurl http://cdimage.debian.org/debian-cd/current-live/amd64/bt-hybrid/debian-live-7.0.0-amd64-standard.iso.torrent
-
-This way, a torrent would just become another source for a specific file. When we `get` the file, it fires up `$YOUR_FAVORITE_TORRENT_CLIENT` to download the file.
-
-That way we avoid the implementation complexity of shoving a complete bittorrent client within the assistant. The `get` operation would block until the torrent is downloaded, i guess... --[[anarcat]]
-
-> This is now [[implemented|special_remotes/bittorrent/]]. Including magnet link support, and multi-file torrent support. Leaving todo item open for the blue-sky stuff at top. --[[Joey]]
diff --git a/doc/todo/Compile_error_with_GHC_prerelease.mdwn b/doc/todo/Compile_error_with_GHC_prerelease.mdwn
deleted file mode 100644
--- a/doc/todo/Compile_error_with_GHC_prerelease.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-For various reasons we cannot use v8.0 (prereleases) yet,
-but GHC v7.11.20150407
-
-There was a compilation hiccup with polymorphic types. I corrected it in
-
-https://github.com/ggreif/git-annex/tree/patch-1
-
-The commit is
-
-https://github.com/ggreif/git-annex/commit/a0ddad8d395b5eb61d1e7e6fdcbfa766c05de3d4
-
-Cheers,
-
-   Gabor
-
-> Applied, thanks. [[done]] --[[Joey]]
diff --git a/doc/todo/Configuring_metadata_view_filenames.mdwn b/doc/todo/Configuring_metadata_view_filenames.mdwn
deleted file mode 100644
--- a/doc/todo/Configuring_metadata_view_filenames.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Currently, in a git annex view, filenames take the form basename%path%.ext. I understand that this is a carefully drafted mapping to allow changes to be merged back into metadata. However, maybe it would be possible to make the separator ('%') and the order (e.g. path%basename.ext instead) configurable?
diff --git a/doc/todo/Facilitate_public_pretty_S3_URLs.mdwn b/doc/todo/Facilitate_public_pretty_S3_URLs.mdwn
deleted file mode 100644
--- a/doc/todo/Facilitate_public_pretty_S3_URLs.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-I archive all my photos/video to a bucket CNAMED to http://s.natalian.org/ with a simple YYYY-MM-DD prefix.
-
-E.g. <http://s.natalian.org/2015-03-06/1425615579_1918x1060.png>
-
-I'm not doing a great job of backing up the S3 bucket to another S3 compatible host, since `s3cmd sync`/`aws sync` is so slow, but that's beside the point. Ideally it could be tracked by **git-annex**!
-
-Adding all the objects into git-annex, IIUC currently would require me:
-
-* to download the ~80GB and then add them to git-annex
-* there is no way to keep my current S3 URLs with the [[special_remotes/S3]] since `git-annex` has it's own special way of storing to a bucket, e.g. https://s3-ap-southeast-1.amazonaws.com/s3-10418340-834d-41c2-b38f-7ee84bf6a23a/SHA256E-s1034208123--235e4f288d094c2e1870bc3d9d353abf34542c04c1d26905e882718a7ccf74cf.mp4 - I'd rather not have HTTP redirects
-* AFAICT there is no way currently with git-annex to mark the [[special_remotes/S3]] as public, which is needed for public URLs to work
-* AFAICT there is no current automated method the mapping via `git-annex addurl` with the public URLs of the each file in the bucket
-
-The ideal solution in my mind is for git-annex to track the contents of S3 as they are now, preserving the URLs and tracking the checksums in a separate index file.
-
-Thank you!
-
-> I don't think this is something git-annex can usefully do.
-> Instead, see
-> <http://git-annex.branchable.com/tips/public_Amazon_S3_remote/>. [[done]] --[[Joey]]
diff --git a/doc/todo/Improve_direct_mode_using_copy_on_write.mdwn b/doc/todo/Improve_direct_mode_using_copy_on_write.mdwn
deleted file mode 100644
--- a/doc/todo/Improve_direct_mode_using_copy_on_write.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-Direct mode is great because it removes symlinks. A must-have for directories like `~/Documents`. Unfortunately, it removes the possibility to use `git` commands other than `git-annex`. Also, it doen't preserve history of files.
-
-I would be great to have a mode where:
-
-- files are available in plain, not as sylinks
-- the repository could still be trusted to hold version of some files from other repositories
-- from a user point of view, the history of a file before the checkout would be preserved.
-
-In feature rich file systems that have copy on write feature, it could be implemented by having the files in both places at the same time:
-
-- the current version of a file would be in the working copy
-- the file in the working copy would be a copy-on-write of the file in the annex repository
-- when the file in the working copy changes, `git-annex` notices it and copy the file in the annex repository using copy-on-write semantic
-
-If the file system do not support copy-on-write, it could be an option (do you want secure direct mode that takes twice the disk space or light direct mode that don't preserve the history of your files?)
-
-This would make direct more much more robust.
-
-copy on write is available using `cp --reflink=always`. It correspond to the following code ([coreutils src/copy.c line 224](http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/copy.c#n224)):
-
-    /* Perform the O(1) btrfs clone operation, if possible.
-       Upon success, return 0.  Otherwise, return -1 and set errno.  */
-    static inline int
-    clone_file (int dest_fd, int src_fd)
-    {
-    #ifdef __linux__
-    # undef BTRFS_IOCTL_MAGIC
-    # define BTRFS_IOCTL_MAGIC 0x94
-    # undef BTRFS_IOC_CLONE
-    # define BTRFS_IOC_CLONE _IOW (BTRFS_IOCTL_MAGIC, 9, int)
-      return ioctl (dest_fd, BTRFS_IOC_CLONE, src_fd);
-    #else
-      (void) dest_fd;
-      (void) src_fd;
-      errno = ENOTSUP;
-      return -1;
-    #endif
-    }
-
-Looking at the code it would be preferable to exec directly to `cp`, see [copy_range() on LWN](http://lwn.net/Articles/550621/) and this [more recent article about splice() on LWN](http://lwn.net/Articles/567086/)
-
-Also, `cp --reflink` fall back to copy when copy-on-write is not available while `cp --reflink=always` do not.
-
-> The new v6 repository mode works this way. [[done]] --[[Joey]]
diff --git a/doc/todo/LIst_of_Available_Remotes_in_Webapp.mdwn b/doc/todo/LIst_of_Available_Remotes_in_Webapp.mdwn
deleted file mode 100644
--- a/doc/todo/LIst_of_Available_Remotes_in_Webapp.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-When using git-annex in a distributed fashion (lots of repos everywhere) It is easy to lose track of which remotes has a particular repo and enable it. Currently I have to run `git annex info` and see which remotes are available then add them through the webapp. Would it be possible to make webapp show all repos not just the ones it is syncing give an option to enable it.
diff --git a/doc/todo/Lower-case_extension_for_SHA256E_and_similar.mdwn b/doc/todo/Lower-case_extension_for_SHA256E_and_similar.mdwn
deleted file mode 100644
--- a/doc/todo/Lower-case_extension_for_SHA256E_and_similar.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-Please consider making the `*E` backends lower-case the file extensions. This improves deduplication especially with image files, where cameras often use `*.JPG`, while other software such as the Dropbox Android app rename the images to `*.jpg`.
-We talked about that very shortly a few months ago:
-
-(Log starts 2015-08-06 21:11:40 CET)
-
-     tribut  is there a backend that lowercases the extension? or do the *E backends do that anyway?
-     joeyh   it does not
-     tribut  but would it make sense? or am i missing something?
-     joeyh   I don't know.. the extension is only there for stupid programs that follow symlinks and
-             check extensions. If such a program cares about .GIF vss .gif, you might have a problem
-     joeyh   I think that you can git-annex migrate from hashE to hash, then migrate back, and it'll
-             update to the new file extension.
-     tribut  i was thinking about content-identical images with .JPG or .jpg extension
-     tribut  and because even the most retarded of programs wont care, i thought the backend could
-             lowercase the extension
-     joeyh   ah, sure, using the E backend reduces the ability to de-duplicate
-     joeyh   I'd not want to add a e backend set just for this. There's no requirement that the
-             extension extraction code be stable, so it could be considered changing it to lower-case
-     joeyh   otoh, I have no idea if some programs are dumb enough to care about .git vs .GIF
diff --git a/doc/todo/Metadata_changes_are_not_reflected_in_a_view.mdwn b/doc/todo/Metadata_changes_are_not_reflected_in_a_view.mdwn
deleted file mode 100644
--- a/doc/todo/Metadata_changes_are_not_reflected_in_a_view.mdwn
+++ /dev/null
@@ -1,31 +0,0 @@
-### Please describe the problem.
-Changing metadata while being in an active view will not update the view.
-
-### What steps will reproduce the problem?
-(inside a repository)
-
-1. Create a file
-
-        $ uuidgen >file
-
-2. switch into a view
-
-       $ git annex view !blah
-       $ ls
-       file
-
-3. changed the metadata the view is based upon
-
-       $ git annex metadata -t blah file
-       $ ls
-       file
-
-   It would be nice/expected that the view gets updated when the metadata changes, hiding 'file' now
-  
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20141024~bpo70+1
-on debian wheezy with backports
-
-### Please provide any additional information below.
diff --git a/doc/todo/Move_ssh_config_to___126____47__ssh__47__git-annex__47__config.mdwn b/doc/todo/Move_ssh_config_to___126____47__ssh__47__git-annex__47__config.mdwn
deleted file mode 100644
--- a/doc/todo/Move_ssh_config_to___126____47__ssh__47__git-annex__47__config.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-### Please describe the problem.
-Instead of storing config for each remote in ~/.ssh/config, which mixes the user own config with that of git-annex-assistant, which is irritating if (like me) you store your ssh config in a vcs. Since the option -F allows the choice of the config file, it should be possible to move the config into ~/.ssh/git-annex/config. The only issue I see is according to the ssh man page on my system states that the system-wide config is ignored if a config file is specified on the command line.
-
-### What version of git-annex are you using? On what operating system?
-I'm using git-annex 4.20130601 on a Debian Testing/Unstable/Experimental mix.
-
-[[!tag design/assistant]]
-
-[[wontfix]]
diff --git a/doc/todo/Nearline_support.mdwn b/doc/todo/Nearline_support.mdwn
deleted file mode 100644
--- a/doc/todo/Nearline_support.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-This has been described as Google's [[special_remotes/glacier]].
-
-* [Announcement](http://googlecloudplatform.blogspot.in/2015/03/introducing-Google-Cloud-Storage-Nearline-near-online-data-at-an-offline-price.html)
-* <https://cloud.google.com/storage/docs/nearline-storage>
-
-> This is a dup of
-> [[bugs/Support_non-default_storage_classes_with_Google_Cloud_Storage]],
-> which has more useful info, so [[closing|done]].
-> 
-> However, that about using its S3 compatability API. There's an external
-> special remote just for nearline, which may be a better choice due to
-> using the native API, and already works. --[[Joey]]
diff --git a/doc/todo/Not_working_on_Android-x86.mdwn b/doc/todo/Not_working_on_Android-x86.mdwn
deleted file mode 100644
--- a/doc/todo/Not_working_on_Android-x86.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!meta title="Android is only autobuilt for arm, not x86 or mips"]]
-
-### Please describe the problem.
-
-git-annex doesn't start on [Android-x86](http://www.android-x86.org) in VirtualBox (version 4.1.18-dfsg-2+deb7u1).
-
-On Android 4.2.2 (android-x86-4.2-20130228.iso) it starts the terminal which prints nothing but `[Terminal session finished]`.
-On Android 4.3 (android-x86-4.3-20130725.iso) it starts the terminal and prints:
-
-    In mgmain JNI_OnLoad
-    
-    [Terminal session finished]
-
-The browser/webapp is never started.
-
-### What version of git-annex are you using? On what operating system?
-
-Version 1.0.52 for Android. I made sure to install the correct APK files for each version of Android.
-
diff --git a/doc/todo/Package_for_Lacie_NasOS__63__.mdwn b/doc/todo/Package_for_Lacie_NasOS__63__.mdwn
deleted file mode 100644
--- a/doc/todo/Package_for_Lacie_NasOS__63__.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Would it be possible to create a package for Lacie's NacOS?
diff --git a/doc/todo/Pause_all_transfers_in_all_annexes_watched_by_the_assistant.mdwn b/doc/todo/Pause_all_transfers_in_all_annexes_watched_by_the_assistant.mdwn
deleted file mode 100644
--- a/doc/todo/Pause_all_transfers_in_all_annexes_watched_by_the_assistant.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-## Use case:
-
-You have a few annexes that the assistant is watching for you. You're somewhere with poor wifi speed. You also just added a bunch of big files to a few annexes. Now all of a sudden your connection suffers and you want an easy way to pause all transfers until you're on a faster connection without losing the automatic 'add' and such of the assistant (iow: without having to shutdown the daemon).
-
-## Proposal:
-
-A "Pause all transfers" button in the webapp that pauses all transfers from all annexes the assistant is watching.
-
-It should toggle to "Resume all transfers" when pushed so you can also easily start the transfers again when you get somewhere else.
-
-This may or may not make more sense if the webapp showed all watched repos in a single view (instead of the separate pages/views as it is now).
diff --git a/doc/todo/Remove___39__superfluous_constraints__39___warnings.mdwn b/doc/todo/Remove___39__superfluous_constraints__39___warnings.mdwn
deleted file mode 100644
--- a/doc/todo/Remove___39__superfluous_constraints__39___warnings.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Please pull branch `patch-1` from repo
-
-https://github.com/ggreif/git-annex.git
-
-It contains some cleanups from warnings that appear with GHC 7.11 (and probably 8.0 too).
-
-> Merged and thank you! [[done]] --[[Joey]] 
diff --git a/doc/todo/S3_fsck_support.mdwn b/doc/todo/S3_fsck_support.mdwn
deleted file mode 100644
--- a/doc/todo/S3_fsck_support.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-I have (i think?) noticed that the s3 remote doesn't really do an fsck:
-
-http://source.git-annex.branchable.com/?p=source.git;a=blob;f=Remote/S3.hs;hb=HEAD#l86
-
-Besides, unless S3 does something magic and amazingly fast, the checksum is just too slow for it to be really operational:
-
-<pre>
-$ time git annex fsck -f s3 video/original/quartet_for_deafblind_h264kbs18000_24.mov
-fsck video/original/quartet_for_deafblind_h264kbs18000_24.mov (checking s3...) ok
-(recording state in git...)
-
-real    0m1.188s
-user    0m0.444s
-sys     0m0.324s
-$ time git annex fsck video/original/quartet_for_deafblind_h264kbs18000_24.mov
-fsck video/original/quartet_for_deafblind_h264kbs18000_24.mov (checksum...)
-ok
-(recording state in git...)
-
-real    3m14.478s
-user    1m55.679s
-sys     0m8.325s
-</pre>
-
-1s is barely the time for git-annex to do an HTTP request to amazon, and what is returned doesn't seem to have a checksum of any kind:
-
-<pre>
-fsck video/original/quartet_for_deafblind_h264kbs18000_24.mov (checking s3...) [2015-06-16 00:31:46 UTC] String to sign: "HEAD\n\n\nTue, 16 Jun 2015 00:31:46 GMT\n/isuma-files/SHA256E-s11855411701--ba268f1c401321db08d4cb149d73a51a10f02968687cb41f06051943b4720465.mov"
-[2015-06-16 00:31:46 UTC] Host: "isuma-files.s3.amazonaws.com"
-[2015-06-16 00:31:46 UTC] Response header 'x-amz-request-id': '9BF7B64EB5A619F3'
-[2015-06-16 00:31:46 UTC] Response header 'x-amz-id-2': '84ZO7IZ0dqJeEghADjt7hTGKGqGAWwbwwaCFVft3ama+oDOVJrvpiFjqn8EY3Z0R'
-[2015-06-16 00:31:46 UTC] Response header 'Content-Type': 'application/xml'
-[2015-06-16 00:31:46 UTC] Response header 'Transfer-Encoding': 'chunked'
-[2015-06-16 00:31:46 UTC] Response header 'Date': 'Tue, 16 Jun 2015 00:32:10 GMT'
-[2015-06-16 00:31:46 UTC] Response header 'Server': 'AmazonS3'
-[2015-06-16 00:31:46 UTC] Response metadata: S3: request ID=<none>, x-amz-id-2=<none>
-ok
-</pre>
-
-did i miss something? are there fsck checks for s3 remotes?
-
-if not, i think it would be useful to leverage the "md5summing" functionality that the S3 API provides. there are two relevant stackoverflow responses here:
-
-http://stackoverflow.com/questions/1775816/how-to-get-the-md5sum-of-a-file-on-amazons-s3
-http://stackoverflow.com/questions/8618218/amazon-s3-checksum
-
-... to paraphrase: when a file is `PUT` on S3, one can provide a `Content-MD5` header that S3 will check against the uploaded file content for corruption, when doing the upload. then there is some talk about how the `ETag` header *may* hold the MD5, but that seems inconclusive. There's a specific API call for getting the MD5 sum:
-
-https://docs.aws.amazon.com/AWSAndroidSDK/latest/javadoc/com/amazonaws/services/s3/model/ObjectMetadata.html#getContentMD5()
-
-the android client also happens to check with that API on downloads:
-
-https://github.com/aws/aws-sdk-android/blob/4de3a3146d66d9ab5684eb5e71d5a2cef9f4dec9/aws-android-sdk-s3/src/main/java/com/amazonaws/services/s3/AmazonS3Client.java#L1302
-
-now of course MD5 is a pile of dung nowadays, but having that checksum beats not having any checksum at all. *and* it is at no cost on the client side... --[[anarcat]]
diff --git a/doc/todo/S3_fsck_support/comment_1_9317598723ea38ae9432ad50e0de666d._comment b/doc/todo/S3_fsck_support/comment_1_9317598723ea38ae9432ad50e0de666d._comment
deleted file mode 100644
--- a/doc/todo/S3_fsck_support/comment_1_9317598723ea38ae9432ad50e0de666d._comment
+++ /dev/null
@@ -1,26 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2015-06-16T17:50:56Z"
- content="""
-You're incorrect; `git-annex fsck --from remote` works to fsck *any*
-remote. For remotes like S3, it has to download the content to check it
-locally, which is why `remoteFsck` is not provided.
-
-Since you passed -f (--fast) to fsck, it avoids checksuming the content,
-so avoids downloading it, and only verifies that S3 still says it has
-the content. As documented on the git-annex fsck man page.
-
-AFAICS, the Content-MD5 is only used by S3 to check that the data uploaded
-to S3 didn't get corrupted over the wire. I assume that S3 implements its
-own checksums to detect when data already stored on it gets corrupted, so
-it seems redundant and complicating for git-annex to query it for md5sums.
-It would work just as well for git-annex to verify a key after downloading
-it, using the key's own hash, per [[todo/ checksum verification on transfer]].
-
-It **might** be worth filling in the `poContentMD5` field with the md5 of
-the file when uploading it to S3. Of course, this requires hashing the file
-locally. And when storing an encrypted object on S3, it would require
-buffering the whole encrypted object to disk first, in order to hash it
-(but that's currently done anyway).
-"""]]
diff --git a/doc/todo/S3_fsck_support/comment_2_7a1ce64d362b8f75adf22709771a7787._comment b/doc/todo/S3_fsck_support/comment_2_7a1ce64d362b8f75adf22709771a7787._comment
deleted file mode 100644
--- a/doc/todo/S3_fsck_support/comment_2_7a1ce64d362b8f75adf22709771a7787._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="anarcat"
- subject="comment 2"
- date="2015-06-16T20:10:50Z"
- content="""
-understood: i thought `-f` was `--from`... hence my confusion.
-
-as for `remoteFsck`, i guess what i am saying is exactly that: there *does* seem to be a way to do a remote checksum of the file *without* downloading it. it seems to be a critical advantage over having to download the whole repository to check it... maybe `--fast` could use that technique and `non--fast` would download?
-
-as for the on-wire MD5 stuff, that does seem to be overkill...
-"""]]
diff --git a/doc/todo/S3_fsck_support/comment_3_2b96f61188b2ada729a284e95fc89dab._comment b/doc/todo/S3_fsck_support/comment_3_2b96f61188b2ada729a284e95fc89dab._comment
deleted file mode 100644
--- a/doc/todo/S3_fsck_support/comment_3_2b96f61188b2ada729a284e95fc89dab._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 3"""
- date="2015-07-02T16:43:03Z"
- content="""
-Not knowing how S3's backend is implemented, I have to assume that, in
-order to get the advertised number of 9's of reliability, it involves some
-replication of data, as well as some method to detect if a bit has flipped
-or a drive has died, and recover.
-
-This is requesting that git-annex ask S3 for a md5sum, and compare it
-against a md5sum that it, presumably, keeps track of locally. If the two
-are different, git-annex could tell that S3 has lost data. But, git-annex is
-in a much worse position to tell if S3 has lost data then S3 itself is.
-It seems very unlikely that this extra checking would ever detect a problem
-that S3 didn't itself detect and fix (or in the 0.00001% case, 
-fail to fix and delete the lost file?)
-
-Bit flips during transfer seem more likely than that. `poContentMD5` could
-help guard against those.
-"""]]
diff --git a/doc/todo/S3_multipart_interruption_cleanup.mdwn b/doc/todo/S3_multipart_interruption_cleanup.mdwn
deleted file mode 100644
--- a/doc/todo/S3_multipart_interruption_cleanup.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-When a multipart S3 upload is being made, and gets interrupted,
-the parts remain in the bucket, and S3 may charge for them.
-
-I am not sure what happens if the same object gets uploaded again. Is S3
-nice enough to remove the old parts? I need to find out..
-
-If not, this needs to be dealt with somehow. One way would be to configure an
-expiry of the uploaded parts, but this is tricky as a huge upload could
-take arbitrarily long. Another way would be to record the uploadid and the
-etags of the parts, and then resume where it left off the next time the
-object is sent to S3. (Or at least cancel the old upload; resume isn't
-practical when uploading an encrypted object.) 
-
-It could store that info in either the local FS or the git-annex branch.
diff --git a/doc/todo/Set_total_storage_limit_for_special_remotes.mdwn b/doc/todo/Set_total_storage_limit_for_special_remotes.mdwn
deleted file mode 100644
--- a/doc/todo/Set_total_storage_limit_for_special_remotes.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I'd like to be able to set a fixed limit on how much storage can be uploaded to a special remote. A use case for this may be that I want to spend no more than Y dollars, on a storage service that charges $X per gigabyte. I would thus set a limit where I a upload would be interrupted with a warning about the limit, and to continue I would need to use a --force option.
diff --git a/doc/todo/Show_repo_type_in_repo_list.mdwn b/doc/todo/Show_repo_type_in_repo_list.mdwn
deleted file mode 100644
--- a/doc/todo/Show_repo_type_in_repo_list.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-It would be helpful to show each repo's type in the list.
diff --git a/doc/todo/Slow_transfer_for_a_lot_of_small_files.mdwn b/doc/todo/Slow_transfer_for_a_lot_of_small_files.mdwn
deleted file mode 100644
--- a/doc/todo/Slow_transfer_for_a_lot_of_small_files.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-What steps will reproduce the problem?
-Sync a lot of small files.
-
-What is the expected output? What do you see instead?
-The expected output is hopefully a fast transfer.
-
-But currently it seems like git-annex is only using one thread to transfer(per host or total?)
-
-An option to select number of transfer threads to use(possibly per host) would be very nice.
-
-> Opening a lot of connections to a single host is probably not desirable.
-> 
-> I do want to do something to allow slow hosts to not hold up transfers to
-> other hosts, which might involve running multiple queued transfers at
-> once. The webapp already allows the user to force a given transfer to
-> happen immediately. --[[Joey]] 
-
-And maybe also an option to limit how long a queue the browser should show, it can become quite resource intensive with a long queue.
-
-> The queue is limited to 20 items for this reason. --[[Joey]]
diff --git a/doc/todo/Speed_up___39__import_--clean-duplicates__39__.mdwn b/doc/todo/Speed_up___39__import_--clean-duplicates__39__.mdwn
deleted file mode 100644
--- a/doc/todo/Speed_up___39__import_--clean-duplicates__39__.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I'm currently in the process of gutting old (some broken) git-annex's and cleaning out download directories from before I started using git-annex.
-
-To do this, I am running `git annex import --clean--duplicates $PATH` on the directories I want to clear out but sometimes, this takes a unnecessarily long time.
-
-For example, git-annex will calculate the digest for a huge file (30GB+) in $TARGET, even though there are no files in the annex of that size.
-
-It's a common shortcut to check for duplicate sizes first to eliminate definite non-matches really quickly. Can this be added to git-annex's `import` in some way or is this a no-go due to the constant memory constraint?
diff --git a/doc/todo/Use_MediaScannerConnection_on_Android.mdwn b/doc/todo/Use_MediaScannerConnection_on_Android.mdwn
deleted file mode 100644
--- a/doc/todo/Use_MediaScannerConnection_on_Android.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Currently if photos or videos are copied into the Camera/DCIM directory on an Android device, or deleted the Gallery doesn't notice the changes.
-
-It is necessary to call MediaScannerConnection - http://developer.android.com/reference/android/media/MediaScannerConnection.html - to notify the system of the change.
-
-More info, and some sample Java code: http://stackoverflow.com/questions/13270789/how-to-run-media-scanner-in-android
-
-It'd be awesome if the assistant did this on files it has changed.  Possibly just under Camera/DCIM, but perhaps it should be configurable. MediaScannerConnection is also used to notify and index new music files.
diff --git a/doc/todo/Use_a_remote_as_a_sharing_site_for_files_with_obfuscated_URLs.mdwn b/doc/todo/Use_a_remote_as_a_sharing_site_for_files_with_obfuscated_URLs.mdwn
deleted file mode 100644
--- a/doc/todo/Use_a_remote_as_a_sharing_site_for_files_with_obfuscated_URLs.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-There are times when it is handy to be able to upload a file to a web host somewhere and share a link for that file to a select few people.
-
-It seems to be that the assistant could handle this scenario. It could generate a directory with a random name on the remote, and transfer the file there (using the existing filename) and the appropriate URL could be displayed in the assistant webapp to allow the user to copy the URL to send it to the appropriate people.
-
-Note: Joey and I had a quick chat about this use case at LCA2013.
-
-[[!tag design/assistant]]
diff --git a/doc/todo/Wishlist__58___additional_environment_variables_for_hooks.mdwn b/doc/todo/Wishlist__58___additional_environment_variables_for_hooks.mdwn
deleted file mode 100644
--- a/doc/todo/Wishlist__58___additional_environment_variables_for_hooks.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-It would be nice if a couple of additional environment variables to be set for hook uses.
-
-In particular:
-
-    GIT_ANNEX_DIRECT=`git config annex.direct`
-
-and
-
-    GIT_TOP_LEVEL=`git rev-parse --show-toplevel`
-
-
-I've made some changes to flickrannex to allow the sub-directories above the uploaded image to be added as tags.  This change has been merged into trunk: [[https://github.com/TobiasTheViking/flickrannex]]
-
-What I needed was both the environment variables mentioned above.  One is set as part of the annex-hook and the other I guestimate from the file path.  If it was set in git-annex it would be much cleaner (and accurate).  So...I think this info would be useful for other hook.
diff --git a/doc/todo/Wishlist__58___disable_auto-repair_for_the_assistant.mdwn b/doc/todo/Wishlist__58___disable_auto-repair_for_the_assistant.mdwn
deleted file mode 100644
--- a/doc/todo/Wishlist__58___disable_auto-repair_for_the_assistant.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Auto-repair takes up a lot of computing power, greatly slowing down the machine. It also still happens very often here, several times a month on different hardware, leading it to become an annoyance (and it would be easier and faster to perform manual repairs if that should be required).
-
-Therefore I'd like a setting that makes the assistant not attempt to repair on its own. Either not do anything at all, or display a message about it instead.
diff --git a/doc/todo/__91__FR__93___No_consistency_check_while_on_battery-only.mdwn b/doc/todo/__91__FR__93___No_consistency_check_while_on_battery-only.mdwn
deleted file mode 100644
--- a/doc/todo/__91__FR__93___No_consistency_check_while_on_battery-only.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-I hope this has not been mentioned before.  I only found in mentioned in a comment of a devblog post.
-
-### Please describe the problem.
-With `git annex assistant` running, consistency checks is sometimes triggered while the computer is battery-powered (as opposed to plugged into AC).
-
-### What steps will reproduce the problem?
-Configure `git annex assistant` to make consistency check daily (or whatever the default is), unplug from power and wait.
-
-### What version of git-annex are you using? On what operating system?
-`5.20141231` on Archlinux 64 bit.  (From the changelog I guess it's also present in the newest version).
-
-### Please provide any additional information below.
-
-It would be nice if one could toggle whether consistency check may run while not plugged into AC.
diff --git a/doc/todo/ability_to_set_metadata_from_json.mdwn b/doc/todo/ability_to_set_metadata_from_json.mdwn
deleted file mode 100644
--- a/doc/todo/ability_to_set_metadata_from_json.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-I can export metadata to JSON format, which is nice as this can now be read into any other tool and manipulated. But I cannot find a way to set the metadata from JSON and so I am left to figure out what changes need to be made via the g-a interface to get to the desired state, and that is hard to get right.
-
-Maybe g-a metadata could grow an import-json function which would set (overwrite) the metadata for the given file(s) from JSON input.
-
-Thanks,
--m
diff --git a/doc/todo/add_a_--branch_to_applicable_git-annex_commands.mdwn b/doc/todo/add_a_--branch_to_applicable_git-annex_commands.mdwn
deleted file mode 100644
--- a/doc/todo/add_a_--branch_to_applicable_git-annex_commands.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-My original use case was for using git-annex find from scripts, where I didn't want to depend on the branch 
-checked out at the time, but rather write something like "git annex find --branch=master $searchterms"
diff --git a/doc/todo/add_ancient_armel_build.mdwn b/doc/todo/add_ancient_armel_build.mdwn
deleted file mode 100644
--- a/doc/todo/add_ancient_armel_build.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-Add an armel build like the i386ancient build.
-
-The current arm autobuilder doesn't have enough free space for the chroot
-this would need. I need to upgrade its microsd card first, adding
-approximately 5 gb. (A 16 gb card would suffice.)
-
-Now, it would be possible to switch it to only do an ancient build,
-instead of the current modern build. The downside of that is the ancient
-build environment uses debian stable, so it has old versions of git,
-libraries etc, that go into the build. --[[Joey]]
diff --git a/doc/todo/add_magicmime_support_to_OSX_dmg.mdwn b/doc/todo/add_magicmime_support_to_OSX_dmg.mdwn
deleted file mode 100644
--- a/doc/todo/add_magicmime_support_to_OSX_dmg.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-The OSX .dmg is built without the MagicMime build flag. Turning it on will
-take some work to ship a copy of the magic database inside the dmg.
-
-> [[done]]
---[[Joey]]
diff --git a/doc/todo/add_option_to_whereis_to_avoid_network_interactions.mdwn b/doc/todo/add_option_to_whereis_to_avoid_network_interactions.mdwn
deleted file mode 100644
--- a/doc/todo/add_option_to_whereis_to_avoid_network_interactions.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-I thought that whereis command would report only based on the knowledge annex has locally in git-annex branch, but apparently it is trying to query for information even in --fast mode:
-
-[[!format sh """
-$> git annex whereis --fast bold.nii.gz
-yoh@dat....
-Permission denied (publickey,password).
-fatal: Could not read from remote repository.
-
-Please make sure you have the correct access rights
-and the repository exists.
-whereis bold.nii.gz 
-(2 copies) 
-  	899f0347-0888-48ef-91b6-bac213ca8cef -- [datalad-archives]
-   	c8bd3d05-33d4-4b59-9d53-ca7efbdcdd13 -- yoh@smaug:/mnt/btrfs/datasets/datalad/crawl/openfmri/ds000001 [here]
-
-  datalad-archives: dl+archive:MD5E-s2527262329--bd3ea399057c529b37b09dcecec1ca60.0raw.tgz/ds001_R1.1.0/sub001/BOLD/task001_run001/bold.nii.gz#size=47241449
-
-"""]]
-
-[[!meta author=yoh]]
diff --git a/doc/todo/add_sftp_backend.mdwn b/doc/todo/add_sftp_backend.mdwn
deleted file mode 100644
--- a/doc/todo/add_sftp_backend.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-A sftp backend would be nice because gpg operations could be pipelined to the network transfer, not requiring the creation of a full file to disk with gpg before the network transmission, as it happens with rsync.
-
-There should be some libraries that can handle the sftp connections and transfers. I read that even curl has support for that.
-
-> Another reason to build this is that sftp has a `SFTP_FXP_STAT`
-> that can get disk free space information. "echo df | sftp user@host"
-> exposes this, when available. Some sftp servers can be locked down
-> so that the user can't run git-annex on them, so that could be the only
-> way to get diskreserve working for such a remote. --[[Joey]]
diff --git a/doc/todo/addurl___8211__force-torrent_option.mdwn b/doc/todo/addurl___8211__force-torrent_option.mdwn
deleted file mode 100644
--- a/doc/todo/addurl___8211__force-torrent_option.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-There are sites that don't provide direct links to `.torrent` files. Currently there is no way to download contents of such torrents with `git annex`, it simply uses web remote instead of bittorrent.  Something like `--force-torrent` option could help here.
diff --git a/doc/todo/allow_disk_space_quota_independent_of_free_disk_space.mdwn b/doc/todo/allow_disk_space_quota_independent_of_free_disk_space.mdwn
deleted file mode 100644
--- a/doc/todo/allow_disk_space_quota_independent_of_free_disk_space.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Feature Request. Instead of (or perhaps in addition to) setting
-`annex.diskreserve`, I'd like to be able to tell git-annex "use up to 2TB
-of disk space".
-
-> This would need changes for git-annex to keep a running total of the
-> space it's using, which becomes a little hairy in light of concurrency,
-> possibly manual changes to the object store, etc. --[[Joey]]
diff --git a/doc/todo/amazon_prime_photos.mdwn b/doc/todo/amazon_prime_photos.mdwn
deleted file mode 100644
--- a/doc/todo/amazon_prime_photos.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
- just  thought to check if you anyhow considered it  Joey: https://www.amazon.ca/clouddrive/primephotos ,  which could be a  great  feature for  those with prime,  even if only for photos.  didn't check about any API
-
- cheers
diff --git a/doc/todo/annex.hardlink_should_also_affect_copy_to_origin.mdwn b/doc/todo/annex.hardlink_should_also_affect_copy_to_origin.mdwn
deleted file mode 100644
--- a/doc/todo/annex.hardlink_should_also_affect_copy_to_origin.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-When a repo has annex.hardlink set, objects are hard-linked into the
-repository when eg `git annex copy --from origin`. This should also
-be done when copying files --to origin (or other remotes on the same
-filesystem). This way, a quick shared clone can be used to add/modify
-files, and cheaply send the changes back to the parent repo. --[[Joey]]
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/assistant_parallel_file_transfers.mdwn b/doc/todo/assistant_parallel_file_transfers.mdwn
deleted file mode 100644
--- a/doc/todo/assistant_parallel_file_transfers.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Hi and thank you for an incredible piece of software and great work!
-
-I've noticed that when I add new files to a repository and I have my USB drive connected, the assistant alternate it's transfers of files. And only transfers one queued file at the time.
-
-file1 -->> Internet offsite computer
-file1 -->> USB drive
-file2 -->> Internet offsite computer
-file2 -->> USB drive
-
-
-I would prefer a logic where the assistant transfer files in parallel to my different repositories. I know that it might not be a good thing doing that with network accessed repositories, but when I have "low cost", locally attached USB drives it would be great if the transfers could be done in parallel.
-
-
-Is there a configuration option for this already?
-
diff --git a/doc/todo/autoenable__61__true_for_special_remotes.mdwn b/doc/todo/autoenable__61__true_for_special_remotes.mdwn
deleted file mode 100644
--- a/doc/todo/autoenable__61__true_for_special_remotes.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Just passing along from https://github.com/datalad/datalad/issues/77#issuecomment-134688459
-
-joey:  I do think there could be a use case for configuring a special remote with autoenable=true and have git-annex init try to enable all such remotes.
-
-> [[done]], I made both `git init` and `git annex reinit` auto-enable
-> such special remotes. For now, the assistant does not (could change).
-> 
-> There was also the question of what to do when git-annex auto-inits
-> in a clone of a repository. It wouldn't do for a command like
-> `git annex find`'s output to include any messages that might be shown while
-> auto-enabling special remotes as a result of an auto-init.
-> Since I can't guarantee enabling special remotes will be quiet, I've not
-> tried to auto-enable special remotes in this case. 
-> 
-> I think I'd have to
-> exec a git-annex init process with stdout sent to stderr to implement
-> this in a safe way, and due to calls to ensureInitialized in Remote.Git,
-> which can auto-init a local remote, that gets particularly tricky. Best, I
-> feel, to wait and see if anyone needs that.
---[[Joey]]
diff --git a/doc/todo/batch_get__47__drop__47__etc.mdwn b/doc/todo/batch_get__47__drop__47__etc.mdwn
deleted file mode 100644
--- a/doc/todo/batch_get__47__drop__47__etc.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-in the spirit of [[todo/--batch_for_add/]], [[todo/--batch_for_info/]], [[todo/--batch_for_find/]] and [[todo/--batch_for_whereis/]], why not add `--batch` to get/drop/import operations?
-
-I am writing a script to get a bunch of arbitrary files and i want to avoid the overhead of running git-annex multiple times. I know i can use `annex.alwayscommit=false` but that is rather counter-intuitive as well. --[[anarcat]]
diff --git a/doc/todo/build_a_user_guide.mdwn b/doc/todo/build_a_user_guide.mdwn
deleted file mode 100644
--- a/doc/todo/build_a_user_guide.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-there's a lot of good documentation on this wiki, but it's hard to find sometimes. it's also unclear if we should look in the [[git-annex]] manpage or elsewhere in the wiki or where. this is a typical problem with the use of wikis for documentation: it's there, but hard to find. it doesn't mean a wiki shouldn't be used but, as with any user manual, special care needs to be taken about structure, organisation and making sure the manual is exhaustive.
-
-a good example of this problem is [[todo/document_standard_groups_more_extensively_in_the_UI]]. --[[anarcat]]
diff --git a/doc/todo/cache_key_info.mdwn b/doc/todo/cache_key_info.mdwn
deleted file mode 100644
--- a/doc/todo/cache_key_info.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Most of git-annex is designed to be fast no matter how many other files are
-in the annex. Things like add/get/drop/move/fsck have good locality;
-they will only operate on as many files as you need them to. 
-
-(git commit can get a little slow with a great deal of files,
-but that's out of scope -- and recent git-annex versions use queuing
-to save git add from piling up too much in the index.)
-
-But currently two git-annex commands are quite slow when annexes become large
-in quantity of files. These are unused and status.
-(Both have --fast versions that don't do as much).
-> (Update: status has become acceptably fast; most of its slowdown was due to using a bad data structure; scanning the tree is not particularly slow and it no longer looks at the git-annex branch.)
-
-unused is slow because it needs two pieces of information that are not
-quick to look up, and require examining the whole repo, very seekily:
-
-1. The keys present in the annex. Found by looking thru .git/annex/objects
-2. The keys referenced by files in git. Found by finding every file
-   in git, and looking at its symlink.
-
-Of these, the first is less expensive (typically, an annex does not have every
-key in it). It could be optimized fairly simply, by adding a database
-of keys present in the annex that is optimised to list them all. The
-database would be updated by the few functions that move content in and
-out.
-
-The second is harder to optimise, because the user can delete, revert,
-copy, add, etc files in git at will, and git-annex does not have a good way
-to watch that and maintain a database of what keys are being referenced.
-
-It could use a post-commit hook and examine files changed by commits, etc.
-But then staged files would be left out. It might be sufficient to 
-make --fast trust the database... except unused will suggest *deleting*
-data if nothing references it. Or maybe it could be required to have a
-clean tree with nothing staged before running git-annex unused.
-
-Anyway, this is a semi-longterm item for me. --[[Joey]] 
diff --git a/doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment b/doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment
deleted file mode 100644
--- a/doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment
+++ /dev/null
@@ -1,11 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U"
- nickname="Richard"
- subject="comment 1"
- date="2011-05-17T07:27:02Z"
- content="""
-Sounds like a good idea.
-
-* git annex fsck (or similar) should check/rebuild the caches
-* I would simply require a clean tree with a verbose error. 80/20 rule and defaulting to save actions.
-"""]]
diff --git a/doc/todo/checkpresentkey_without_explicit_remote.mdwn b/doc/todo/checkpresentkey_without_explicit_remote.mdwn
deleted file mode 100644
--- a/doc/todo/checkpresentkey_without_explicit_remote.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-While being asked to check if file is available from "[datalad-archives]" remote I need to check if the archive's key available.  Ideally I wish I could ask through the ongoing interaction protocol, but if not, I could use smth like 'git annex checkpresentkey' but that one demands specification also of a remote which to check.  In my case I just want to know if that key is available from any remote, so I could confirm that the file is still present in our archives remote, i.e. that it could be retrieved later on
-
-[[!meta author=yoh]]
-
-> [[done]]] --[[Joey]]
diff --git a/doc/todo/checksum_verification_on_transfer.mdwn b/doc/todo/checksum_verification_on_transfer.mdwn
deleted file mode 100644
--- a/doc/todo/checksum_verification_on_transfer.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Since most file transfers, particularly to/from encrypted special remotes involve git-annex streaming through the contents of the file anyway, it should be possible to add a verification of the checksum nearly for free. The main thing needed is probably a faster haskell checksum library than Data.Digest.Pure.Sha, which is probably slow enough to be annoying.
-
-I have not verified if an upload could be aborted before sending the data to the remote if a checksum failure is detected. It may be dependent on the individual special remote implementations. Some probably stream the encrypted data directly out the wire, while others need to set up a temp file to run a command on. It would certainly be possible to at least make the upload abort and fail if a bad checksum was detected.
-
-Doing the same for downloads is less useful, because the data is there locally to be fscked. The real advantage would be doing the check for uploads, to ensure that hard-to-detect corrupted files don't reach special remotes.
-
---[[Joey]]
diff --git a/doc/todo/cleaner_hack_for_man_pages.mdwn b/doc/todo/cleaner_hack_for_man_pages.mdwn
deleted file mode 100644
--- a/doc/todo/cleaner_hack_for_man_pages.mdwn
+++ /dev/null
@@ -1,119 +0,0 @@
-In recent history, we have realized that the small Perl script that
-generates the man pages from Markdown is fairly limited.
-
-Two approaches have been considered:
-
-* go-md2man
-* pandoc
-
-Here is how pandoc does it:
-
-    $ pandoc -f markdown -t man doc/git-annex-shell.mdwn | pastebinit
-    http://paste.debian.net/424341/
-
-Both initially fail at setting a proper `.TH` line on top, but
-otherwise seem to work more or less correctly. --[[anarcat]]
-
-Okay, update: the above commandline was incorrect for some reason. The
-proper incantation is:
-
-    pandoc -s -t man doc/git-annex-shell.mdwn -o git-annex-shell.1
-
-For example:
-
-    $ pandoc -s -t man doc/git-annex-shell.mdwn | man -l - | pastebinit
-    http://paste.debian.net/430630/
-
-So by default, there is no title or section header, which is, if you
-ask me a little stupid: pandoc could guess a little better and parse
-the `.SH NAME` section.
-
-The workaround for this is to add Pandoc metadata either to the file,
-for example:
-
-[[!format diff """
-diff --git a/doc/git-annex-shell.mdwn b/doc/git-annex-shell.mdwn
-index 9b3d126..13f64ae 100644
---- a/doc/git-annex-shell.mdwn
-+++ b/doc/git-annex-shell.mdwn
-@@ -1,3 +1,6 @@
-+% git-annex-shell(1) Git-annex manual | Version 5
-+% Joey Hess
-+
- # NAME
- 
- git-annex-shell - Restricted login shell for git-annex only SSH access
-"""]]
-
-But Ikiwiki is likely to barf on such comments, so it's probably
-preferable to pass those parameters at build time:
-
-    $ pandoc -s -V title="git-annex-shell" -V section=1 -t man doc/git-annex-shell.mdwn  | man -l - | pastebinit
-    http://paste.debian.net/430632/
-
-Looks better already! But we can improve on that even more!
-
-    $ pandoc -s -V title="git-annex-shell" -V section=1 \
-        -V header="Git Annex manual" -V footer="Version 5.xxx" \
-        -t man doc/git-annex-shell.mdwn  | man -l - | pastebinit
-    http://paste.debian.net/430633/
-
-Much better. And the version can probably be passed in from the build
-system (or that footer can just be dropped).
-
-So a more complete patch would involve fixing the build system to use
-(and depend on!) pandoc then remove the pesky warnings at the bottom
-of all Markdown files.
-
-More investigation would probably be necessary to check the resulting
-man pages for syntax errors. For example, the above rendering, in the
-`SEE ALSO` section, has `[git-annex] (1)` instead of
-`git-annex(1)`, since Pandoc doesn't know about ikiwiki links. Maybe
-some pre-processing would be necessary there? :/ It sure is useful to
-have those links working in the web version!
-
-I hope that helps regardless.
-
-Update: regarding preprocessing, it seems there are basically two
-options for preprocessing with pandoc:
-
-* [scripting](http://pandoc.org/scripting.html)
-* [preprocessors](https://github.com/jgm/pandoc/wiki/Pandoc-Extras#preprocessors)
-  like gpp
-* external filters
-
-Preprocessors don't support arbitrary patterns like Ikiwiki links, so
-they're out already. Scripting looks a little too complicated for us,
-but could be a more stable alternative in the long term (if not for
-Ikiwiki itself ;).
-
-So I ended up using a simple sed(1) filter for now. It would be quite
-interesting to implement a better filter directly in Pandoc, if only
-for the benefit of Ikiwiki (which could then all be reimplemented in
-Haskell, No Big Deal™). But for now, I am afraid that will have to do.
-
-The resulting manpages are quite different, [here's the diff][]. It
-seems mostly better escapes and markup, in general. We get nicer
-bullet lists, cleaner command names (`git-annex add` instead of
-`git-annex-add`).
-
-[here's the diff]: http://fpaste.org/353524/
-
-I have pushed a [patch][] that implements a Pandoc build to my
-[personnal git-annex repo][]. It also adds pandoc as a build-dep to
-the debian package - and I may be missing some parts of the build
-system, hopefully you will find the missing bits and fix them, if
-any.
-
-Pandoc is awesome, and I think a great fit for this! --[[anarcat]]
-
-Oh, and I forgot: another thing that is not handled through this
-(yet?) is the "Version" footer I was using in the above examples. I
-couldn't figure out how to pull that value out of the Makefile, but
-maybe I missed something obvious there. I also didn't notice the
-`git-union-merge.1` manpage, but it seems to be broken anyways, as it
-is not in the `man/` directory and there is a comment there saying it
-is "not built normally" so I ignored it.
-
- [personnal git-annex repo]: http://src.anarc.at/git-annex.git/
- [patch]: http://src.anarc.at/git-annex.git/commitdiff/d8a8f42f5a7ec0458718d65b72f1f814862b125b
diff --git a/doc/todo/cloning_direct_mode_repo_over_http.mdwn b/doc/todo/cloning_direct_mode_repo_over_http.mdwn
deleted file mode 100644
--- a/doc/todo/cloning_direct_mode_repo_over_http.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-Indirect mode repos can be cloned over http, and just work. But, direct
-mode repos don't currently work; while git can clone them ok, git-annex get
-doesn't know where to get the file contents from.
-
-To support this, git-annex would have to check if the remote is in direct
-mode, and when it is, it would need to download the direct mode mapping
-file, to find out which file has the content of a key. Then, after
-downloading the a file, it would need to make sure to checksum it, since
-nothing prevents a direct mode file from being modified at the same time
-it's downloaded.
-
-All seems doable. However.. [[design/caching_database]] wants to switch the
-direct mode mapping files from simple flat text files to a sqlite database.
-Which would complicate this a lot. Can sqlite databases be accessed over
-http, or would the whole, possibly large database need to be downloaded?
-If so, what to do when the database changes? Re-downloading a possibly
-large db is not good.
-
----
-
-Alternatively, the direct mode mapping files of the remote could be
-bypassed. Instead, look at what the remote HEAD branch is, and look at that
-branch locally. Create local direct mode mappings for the remote HEAD
-branch, and use them when downloading.
-
-This approach would mean that, if the remote's HEAD changes and we haven't
-noticed, we might download the wrong file (that has eg, been moved).
-checksumming would detect this, but it does make it more fragile.
-
-Also, creating the direct mode mappings for a remote HEAD would currently
-be pretty slow. Probably implementing the caching database for direct mode
-mappings would lead to faster code. So, this feature seems best blocked on
-the direct mode database either way!
-
---[[Joey]]
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/todo/ctrl_c_handling.mdwn b/doc/todo/ctrl_c_handling.mdwn
deleted file mode 100644
--- a/doc/todo/ctrl_c_handling.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Sometimes I start off a large file transfer to a new remote (a la "git-annex copy . --to glacier").
-
-I believe all of the special remotes transfer the files one at a time, which is good, and provides a sensible place to interrupt a copy/move operation.
-
-Wish: When I press ctrl+c in the terminal, git-annex will catch that and finish it's current transfer and then exit cleanly (ie: no odd backtraces in the special remote code). For the case where the file currently being transfered also needs to be killed (ie: it's a big .iso) then subsequent ctrl+c's can do that.
diff --git a/doc/todo/ctrl_c_handling/comment_1_3addbe33817db5de836c014287b14c07._comment b/doc/todo/ctrl_c_handling/comment_1_3addbe33817db5de836c014287b14c07._comment
deleted file mode 100644
--- a/doc/todo/ctrl_c_handling/comment_1_3addbe33817db5de836c014287b14c07._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.172"
- subject="comment 1"
- date="2014-02-21T21:36:14Z"
- content="""
-This really depends on the remote, some can resume where they were interrupted, such as rsync, and some cannot, such as glacier (and, er, encrypted rsync).
-"""]]
diff --git a/doc/todo/ctrl_c_handling/comment_2_cc2776dc4805421180edcdf96a89fcaa._comment b/doc/todo/ctrl_c_handling/comment_2_cc2776dc4805421180edcdf96a89fcaa._comment
deleted file mode 100644
--- a/doc/todo/ctrl_c_handling/comment_2_cc2776dc4805421180edcdf96a89fcaa._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://grossmeier.net/"
- nickname="greg"
- subject="very remote specific"
- date="2014-02-21T22:11:16Z"
- content="""
-Yeah, this is very remote specific and probably means adding the functionality there as well (eg: in the glacier.py code, not only in git-annex haskell). Maybe I should file bugs there accordingly :)
-"""]]
diff --git a/doc/todo/ctrl_c_handling/comment_3_8d7d357368987f5d5d59b4d8d99a0e06._comment b/doc/todo/ctrl_c_handling/comment_3_8d7d357368987f5d5d59b4d8d99a0e06._comment
deleted file mode 100644
--- a/doc/todo/ctrl_c_handling/comment_3_8d7d357368987f5d5d59b4d8d99a0e06._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.172"
- subject="comment 3"
- date="2014-02-21T22:34:14Z"
- content="""
-Hmm, I forget if it's possible for git-annex to mask SIGINT when it runs glacier or rsync, so that the child process does not receive it, but the parent git-annex does.
-"""]]
diff --git a/doc/todo/custom_f-droid_repo.mdwn b/doc/todo/custom_f-droid_repo.mdwn
deleted file mode 100644
--- a/doc/todo/custom_f-droid_repo.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-It would be great to have a custom f-droid repo "alla guardianproject.info" (before getting git-annex into the main f-droid repo).
-
-See <https://github.com/guardianproject/fdroid-repo> (<https://guardianproject.info/repo/>).
diff --git a/doc/todo/deferred_update_mode.mdwn b/doc/todo/deferred_update_mode.mdwn
deleted file mode 100644
--- a/doc/todo/deferred_update_mode.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-`git annex sync` and the assistant do a merge of new revs, and then
-download the content of files. However, this means that broken links can
-show up, when a file has changed, or a new file was added. In some
-workflows, the user would prefer not to ever see such broken links
-(or at least never for files that are in the repo's preferred content).
-
-So, how about a new mode, that defers updating the work tree until
-the content of everything wanted is available?
-
-This could be a annex.merge=downloadfirst setting; it would make sync/assistant
-look at the diff between HEAD and the new rev, and try to get all annexed files
-added in that diff, before merging it. 
-
-Of course, it could take a long time to get to see a new work tree.
-Might have to download a lot of content.
-
-What to do if it fails to download a file's content? Could either
-abort, leaving the current work tree as-is, or could go ahead and merge,
-letting broken links show up in this case. I kind of prefer the abort
-option. But, if the content never reaches any remote, or has gone missing
-entirely, that would make sync never succeed. That could be surprising
-behavior.
-
-Probably best to let the user pick either behavior, so
-annex.merge=trydownloadfirst and annex.merge=reqdownloadfirst
-
-Let `git annex merge` be used to force a merge, even when content is not
-available.
-
-## alternatively
-
-What about just making `git-annex sync --content` try to get the content of
-all files before updating the work tree? (The assistant would need changes
-too; it would need to queue all the downloads and trigger a work tree
-update once all the downloads have been tried.)
diff --git a/doc/todo/ditch_yesod.mdwn b/doc/todo/ditch_yesod.mdwn
deleted file mode 100644
--- a/doc/todo/ditch_yesod.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-I'd like to move away from using yesod for the web app, for a number of
-reasons:
-
-* It's by far the largest use of TH in git-annex, and TH is of course very
-  painful for the android port, other builds like debian mips that don't
-  currently support TH, etc. (Update: mips does support it now, it seems!)
-* I think it's responsible for at least 50% of the executable size, and I
-  suspect a lot of that is unncessary bloat for parts of yesod that
-  git-annex doesn't really use.
-* Hamlet constantly annoys me by rejecting any file that contains tabs.
-  **Rage**
-* Hamlet contains code that's not really haskell, but looks a lot like it.
-  This is a continual frustration when dealing with the hamlet files.
-* I find that Hamlet does not lend itself to being refactored, everything
-  is essentially an IO action with side effects of generating html, so
-  can't really bring proper FP tools to bear.
-
-At the moment, servant seems like the nicest place to end up. Just as type
-safe as yesod afaik, and very lightweight and simple and rather awesome.
-
-As for the html generation, lucid seems like a good way to do it. Just as
-fast as hamlet, and pure haskell code.
-
-Game plan:
-
-1. Upload a yesod-lucid to hackage. (done)
-2. Get servant, lucid, maybe yesod-lucid, packaged in Debian
-3. Start converting individual yesod Handler Html to Handler LucidHtml.
-   This will ditch the hamlet. This is by far the most work, but it can be
-   done incrementally w/o breaking the build.
-4. Once all the hamlet is gone, remove the rest of the yesod stuff and
-   re-implement the routing etc with servant.
diff --git a/doc/todo/ditch_yesod/comment_1_976dcb99ebe30c02c9b223f19a67c875._comment b/doc/todo/ditch_yesod/comment_1_976dcb99ebe30c02c9b223f19a67c875._comment
deleted file mode 100644
--- a/doc/todo/ditch_yesod/comment_1_976dcb99ebe30c02c9b223f19a67c875._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="umeboshi"
- subject="Link to TH"
- date="2015-12-29T20:36:41Z"
- content="""
-I had to google for [TH](https://wiki.haskell.org/Template_Haskell).  I'm posting this link for those who, like me, are less familiar with Haskell.
-"""]]
diff --git a/doc/todo/do_not_bug_me_about_intermediate_files.mdwn b/doc/todo/do_not_bug_me_about_intermediate_files.mdwn
deleted file mode 100644
--- a/doc/todo/do_not_bug_me_about_intermediate_files.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!meta title="--notify-finish operates on a per-file, not per-process basis"]]
-
-so this is another UX pickyness, but it seems important to me.
-
-i like the new [[desktop notifications|tips/file_manager_integration]], but they are little too verbose. when i choose "git annex get" on the folder, if there's a lot of files, it will flood me with all the files being transfered in a mostly incomprehensible list of files being transfered.
-
-what i would expect is more: "starting transfer of folder X", "transfer of folder X finished!", only two message per item i chose. this is especially a problem with DVD backups, which have a bunch of small files (screenshots, .nfos and so on) and large video files - so it seems the thing has finished transfering, while it's only partly done. --[[anarcat]]
diff --git a/doc/todo/document_standard_groups_more_extensively_in_the_UI.mdwn b/doc/todo/document_standard_groups_more_extensively_in_the_UI.mdwn
deleted file mode 100644
--- a/doc/todo/document_standard_groups_more_extensively_in_the_UI.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-i have been using git-annex for a while now, yet I still can't quite wrap my head around [[preferred_content/standard groups]], especially how they are documented in about/repogroups in the assistant web interface. i have repeatedly synced files where they shouldn't have been synced (usually by setting the repo as "client" or "transfer") and also destroyed files I wanted to keep by setting it to "unwanted" (actually, that was by pressing the "delete" button on the repo, which i didn't expect to drop the files on the remote...)
-
-i have been able to understand a lot of what's going on by trial and error and by decrypting the [[preferred_content]] expressions on the wiki.
-
-it seems to me the [[preferred_content/standard groups]] wiki page and the `about/repogroups` URL in the assistant should be merged:
-
- 1. the assistant should be more explicit: maybe it should have examples of what will happen in some cases to give an idea. maybe "stories" like "a transfer repo is for when you have two client repos that can't talk to each other, so you use a transfer repo, e.g. a portable hard drive, to transfer files between them". having the actual, current [[preferred_content]] expressions from the [[preferred_content/standard groups]] groups page would also help, maybe in a smaller font to not scare people of
- 2. the [[preferred_content/standard groups]] wiki page should be expanded to include narratives like the ones that are in the `about/repogroups` page of the assistant. that way people looking at the software from the outside can understand the mechanics better
-
-ideally, that documentation would be the one and the same so that a change on one side would reflect on the other.
-
-in fact, having an inline manual in the assistant would be a must: we want this thing to work offline, so it should be able to access this wiki, or whatever of it is shipped with git-annex.
-
-that way we wouldn't have this kind of inconsistencies... more generally, maybe we could even [[build a user guide]]! -- [[anarcat]]
diff --git a/doc/todo/does_not_preserve_timestamps.mdwn b/doc/todo/does_not_preserve_timestamps.mdwn
deleted file mode 100644
--- a/doc/todo/does_not_preserve_timestamps.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-### Please describe the problem.
-I see that files are synced between my computers with git-annex but the timestamps do not match. The one that receives files always puts the current time of file creation on the file.
-
-### What steps will reproduce the problem?
-Install git-annex on two computers. Connect with XMPP. Then add cloud storage with shared encryption for transferring files. Since you want also backup, choose "full backup" as the type of cloud storage.
-
-
-### What version of git-annex are you using? On what operating system?
-Downloaded binary package dated 13/09/2014 amd64 Ubuntu 14.04.
-
-
-### Please provide any additional information below.
-
-Files are in sync. For example, I move a file from a directory to my synced annex directory. It contains timestamp of 01/01/2010 for example. Once the file gets transferred to the remote computer, it gets current time, for example 20/09/2014 rather than keeping 01/01/2010. 
-
-All computers are linux based, ext4 filesystems. File transfers are done through shared encryption rsync remote.
diff --git a/doc/todo/done.mdwn b/doc/todo/done.mdwn
deleted file mode 100644
--- a/doc/todo/done.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-recently fixed [[todo]] items.
-
-[[!inline pages="./* and link(./done) and !*/Discussion" sort=mtime show=10
-archive=yes]]
diff --git a/doc/todo/drop_--batch.mdwn b/doc/todo/drop_--batch.mdwn
deleted file mode 100644
--- a/doc/todo/drop_--batch.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-There is a dropkey --batch, so I guess I could workaround but probably would be nice for consistency to have --batch mode for drop itself as well
-
-[[!meta author=yoh]]
diff --git a/doc/todo/drop_--batch/comment_1_eff1bec0af5e7a7364d2fdaea6a8826f._comment b/doc/todo/drop_--batch/comment_1_eff1bec0af5e7a7364d2fdaea6a8826f._comment
deleted file mode 100644
--- a/doc/todo/drop_--batch/comment_1_eff1bec0af5e7a7364d2fdaea6a8826f._comment
+++ /dev/null
@@ -1,18 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2016-05-03T19:06:53Z"
- content="""
-Might be better to make `dropkey` do the same numcopies checking as
-`drop` does. Currently, `dropkey` needs `--force` to do anything (and it's
-always needed that), so it could do numcopies checking when not forced,
-without breaking backwards compatability.
-
-The benefit of keeping this in `dropkey` is that dropping by key
-tends to work better with batch adds/imports of files that are occurring at
-the same time.
-
-Only downside I see is that dropping by key is unable to honor
-.gitattributes numcopies settings, since the associated filename is not
-known.
-"""]]
diff --git a/doc/todo/dumb__44___unsafe__44___human-readable_backend.mdwn b/doc/todo/dumb__44___unsafe__44___human-readable_backend.mdwn
deleted file mode 100644
--- a/doc/todo/dumb__44___unsafe__44___human-readable_backend.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-This was already discussed twice previously: [[forum/original_filename_on_s3/]] and [[todo/Facilitate_public_pretty_S3_URLs/]]. Yet I am still constantly having problems with this when trying to use git-annex to do some particular stuff.
-
-My latest example is a friend that wanted to sync files to a remote Webdav server. While I know he can use [[special_remotes/webdav/]] support, the resulting filenames on the webdav server will be basically garbled beyond recognition for any user that will use the Webdav server without git-annex.
-
-I understand the rationale behind the existing [[backends]], but wouldn't it be possible to implement a new backend that would just use the filename as a key?
-
-I know this would have several downsides:
-
-* lack of deduplication
-* much more exposed to corruption (no checksum to check against recorded? or can this be put somewhere else?)
-
-The main advantage, for me, is much better interoperability: any remote becomes usable by other non-git-annex clients... It would also be great as it would allow me to store only a *part* of my git-annex files on a remote without having a forest of empty files (on broken filesystems) or symlinks (on real filesystems) for files that are missing, something that is a massive source of confusion for users I work with. It could, for example, allow me to create thumb drives that would solve the [[hide missing files]] problem. -- [[anarcat]]
diff --git a/doc/todo/easy_way_to_reproduce_normal_download_command.mdwn b/doc/todo/easy_way_to_reproduce_normal_download_command.mdwn
deleted file mode 100644
--- a/doc/todo/easy_way_to_reproduce_normal_download_command.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-so there's a `annex.web-download-command` settings, great! i have used
-it to do bandwidth limitations with:
-
-    wget --limit-rate=$download -O %file %url
-
-...and it works well.. however, i notice the output is different, and
-that's because once we override that setting, git-annex doesn't add
-other magic settings it uses. so by turning that thing on and off and
-inspecting the process list, i was able to figure out that the command
-is actually:
-
-    wget -q --show-progress --clobber -c --limit-rate=$download -O %file %url
-
-that gets me closer to the command generated by git-annex. however, i
-am not sure the `--clobber` and `-c` flags should always be
-present. furthermore, the `--user-agent
-git-annex/5.20150610+gitg608172f-1~ndall+1` flag is missing.
-
-could there be an (optional) %useragent interpolation to fix that?
-
-what about the other settings, is it okay to hardcode those?
-
-maybe this would be easier if there would be an options override just
-like rsync, but separate ones for curl and wget... --[[anarcat]]
diff --git a/doc/todo/enable_a_discussion_forum_or_support_system.mdwn b/doc/todo/enable_a_discussion_forum_or_support_system.mdwn
deleted file mode 100644
--- a/doc/todo/enable_a_discussion_forum_or_support_system.mdwn
+++ /dev/null
@@ -1,134 +0,0 @@
-I has been [[discussed|devblog/day_268_stressed_out]]
-[[twice|devblog/day_285__tuning_git-annex_unused_refs]] that the
-current [[forum]] support system is not ideal for providing
-support. It constitutes the [largest part of this wiki][] yet we
-sometimes get duplicated questions and it seems the forum may be a
-barrier to entry for people.
-
- [largest part of this wiki]: http://git-annex.branchable.com/devblog/day_268_stressed_out/#comment-e0814585df0047e6d4e11515aebe1dec
-
-A few alternatives have been proposed, from a mailing list to using a
-StackExchange site. This post is to discuss the possible
-alternatives. The requirement is that the system may be available
-offline and on low-bandwidth connections yet enable conversations
-better than a simple web forum or mailing list; which may end up being
-the only solution considering the first requirements, but let's give
-it a try. :)
-
-[[!toc]]
-
-Stack exchange
-==============
-
-i looked up how this works in stackexchange, and it turns out they
-provide [regular dumps][] of the data hosted. unfortunately, it's a
-gigantic zip file and not really designed for low-bandwidth
-use. There's also a [data explorer][] that was promising, until i
-realized that the query engine takes up 154KB, three times the space
-of the regular search engine (~54KB, which I guess is way too much for
-dialup).
-
- [regular dumps]: http://blog.stackoverflow.com/category/cc-wiki-dump/
- [data explorer]: http://data.stackexchange.com/
-
-Also: there is a [mobile version][] of all the stackexchange sites,
-which take up around 3KB, but still only works online. There's an app
-for mobile devices as well, but it [doesn't support offline access
-either][] - so another dead-end.
-
- [mobile version]: http://meta.stackexchange.com/questions/104458/switch-to-mobile-site-on-standard-browser
- [doesn't support offline access either]: http://meta.stackexchange.com/questions/220036/offline-features-in-stack-exchange-app
-
-Stackexchange runs a [garbled mess][] of IIS, MSSQL, ASP, Redis and
-Elasticsearch so there is probably little hope in integrating into
-something like git. I have asked for the [proverbial pony in this
-stackexchange question][] (yes, it's all very meta), describing the
-use case, but i am not holding my breath for a change.
-
- [garbled mess]: http://en.wikipedia.org/wiki/Stack_Exchange#Technologies_used
- [proverbial pony in this stackexchange question]: http://meta.stackexchange.com/questions/256573/best-way-to-use-stackexchange-sites-offline-or-on-dialup
- 
-Askbot
-======
-
-Besides, SE sites are based on proprietary software, and i am not sure
-we'd want to advocate that here. There are free software alternatives,
-of which i made an [evaluation about 2 years ago][] after which we
-tried Askbot at [Koumbit][]. it never took off: staff didn't seem
-interested in it so much and we never made people aware of it too
-much. plus, it didn't integrate with existing authentication
-mechanisms (which are a little bit of a mess for us)...
-
-But it does seem like an interesting alternative, and has [primitive
-email integration][] where you can ask questions by email, but not
-answer (!). I haven't looked at such support in other software, but i
-suspect it is similarly not a priority as they struggle to monetize
-their free software...
-
-Most of those free software alternatives of Stackexchange are written
-in Python/Django or Ruby/Rails (iirc) with SQL backends, which would
-probably make git integration... also "challenging".
-
- [evaluation about 2 years ago]: (https://wiki.koumbit.net/FaqService#A.2BAMk-valuation_logicielle)
- [Koumbit]: http://koumbit.org/
- [primitive email integration]: http://askbot.org/doc/sending-email-to-askbot.html
-
-Discourse
-=========
-
-From that point of view, maybe [discourse][] could be an interesting
-alternative. It has built-in email support, as it is designed as an
-alternative to mailing lists. With a simple setting, you can
-collaborate directly by email. What is interesting, compared to the
-mailing list model, is that posts can be collaboratively edited to
-(for example) arrive at a collective wisdom by refining an answer (or
-a question). There are also interesting community moderation and
-reputation systems.
-
-There seems to be some [offline tool][] for Discourse, but it's
-unclear to me how it works, as it seems to be a separate (nodejs!)
-application that connects with a discourse plugin. There's a
-[discussion about offline suport in discourse][] in the meta site...
-
-Discourse uses Ruby/Rails and PostgreSQL, and somewhat is only
-[officially supported in Docker][]...
-
-The discourse people do [warn against switching existing
-communities][] to Discourse because of the resulting friction, so it
-is also in that spirit that I open discussion about this here, that
-is, in the hope the change can be acknowledged, supported and
-discussed by everyone here, in a spirit of consensus building. :)
-
- [offline tool]: https://github.com/etewiah/offcourse
- [discussion about offline suport in discourse]: https://meta.discourse.org/t/offcourse-a-proof-of-concept-offline-reader-for-discourse/22356
- [discourse]: http://discourse.org/
- [warn against switching existing communities]: http://www.discourse.org/faq/#switch
- [officially supported in Docker]: https://github.com/discourse/discourse/blob/master/docs/INSTALL.md
-
-Mailing lists
-=============
-
-Of course, the forum could simply be moved to a mailing list. The
-would have the advantage of reducing the barrier of entry to the site,
-reduce the load on the wiki, at the cost of adding the additionnal
-"how do i subscribe to a mailing list" barrier of entry, which, oddly
-enough, exists for a lot of mailing lists...
-
-Like it or not, web forums do enable a lot of less technical users to
-participate because they only need their web browser, and crossing
-that boundary can be hard for some people. Mailing lists also do not
-necessarily favor collaboration as much as the other systems, because
-they are articulated more towards discussion, as opposed to establishing
-common knowledge.
-
-A good option may be Mailman 3 which, with the new web interface, allows
-forum-like functionalities. Mailman 2 also used to have a usenet interface,
-not sure what became of that in Mailman 3.
-
-Web forums
-==========
-
-There's a plethora of "php-bb-like" software out there, i am just
-ignoring them for now, as I am not very familiar with them and they
-have never been too attractive for me, but people are of course free
-to edit this page to add suggestions! :)
diff --git a/doc/todo/feature_request__58___pubkey-only_encryption_mode.mdwn b/doc/todo/feature_request__58___pubkey-only_encryption_mode.mdwn
deleted file mode 100644
--- a/doc/todo/feature_request__58___pubkey-only_encryption_mode.mdwn
+++ /dev/null
@@ -1,16 +0,0 @@
-### Feature request
-
-It is not possible to put encrypted content in place on remotes with just a
-public GPG key. You always need the private key, even for encryption. I
-guess this is because how the cipher HMAC is used for replacing file names
-with their hashes. However, if that requirement (having secret file names)
-was dropped, I assume a pubkey-only mode could be implemented?
-
-My specific use case is backup archiving. I have my backups packed in
-archive files and want to use git-annex to copy the archives to offsite
-remotes (S3). In that case, I don't care much about hiding file names, but
-would appreciate the increased security of not having the secret key on the
-backup server. It would only be needed if I wanted to verify or restore
-backups.
-
-> Added "encryption=sharedpubkey" [[done]] --[[Joey]]
diff --git a/doc/todo/find_unused_in_any_commit.mdwn b/doc/todo/find_unused_in_any_commit.mdwn
deleted file mode 100644
--- a/doc/todo/find_unused_in_any_commit.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-`git annex unused` only looks at tags and branches. Some users would like
-to drop any objects that are not pointed to by any commit, but keep any
-object that any commit ever referenced.
-
-This could be a switch, like --ever.
-
-The implementation would need to walk the history of all branches and check
-all commits. This would tend to be slow. It could look at tags+branches as
-it does now as a first pass, and only do the slow part if there are objects
-not referred to by the tags+branches. And, it could stop looking through
-the whole commit history if there were no more objects to check. Still,
-gonna be slooow. Another optimisation would be to get only the objects
-changed by the commit, and not look at the whole tree as it appeared on
-each commit. --[[Joey]]
-
-> Closing, --used-refspec allows doing this kind of thing.
-> (It can indeed make it slow!) [[done]] --[[Joey]]
diff --git a/doc/todo/free_space_checking_for_local_special_remotes.mdwn b/doc/todo/free_space_checking_for_local_special_remotes.mdwn
deleted file mode 100644
--- a/doc/todo/free_space_checking_for_local_special_remotes.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-Should be possible to configure an annex.diskreserve setting for local
-special remotes, such as a directory special remote or possibly a bup
-special remote. (Although bup's deltas will make storing some versions of
-files take less space than git-annex would have to assume it would take.)
diff --git a/doc/todo/git-annex_ignores_GIT__95__SSH.mdwn b/doc/todo/git-annex_ignores_GIT__95__SSH.mdwn
deleted file mode 100644
--- a/doc/todo/git-annex_ignores_GIT__95__SSH.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-### Please describe the problem.
-
-git uses environment variable GIT_SSH to determine SSH client.
-
-I set it to plink.exe because I extensively use pageant infrastructure and do NOT want to have 2 systems lying around.
-
-Unfortunately git-annex seems to ignore that.
-
-Even worse, it results in unpredicted behavior because the git part works (e.g. clone) whereas annex/rsync does not resulting in half-ok repositories without meaningful error messages.
-
-It only becomes evident when ssh.exe in the git repository is deleted.
-
-### What steps will reproduce the problem?
-
-Set %GIT_SSH% and remove ssh.exe
-
-You will get
-
-     git-annex: ssh: createProcess: does not exist (No such file or directory)
-     failed
-     git-annex: drop: 1 failed
-
-### What version of git-annex are you using? On what operating system?
-
-Windows 8,
-
-     $ git annex version
-     git-annex version: 5.20140411-gda795e0
-     build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
-     key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
-     remote types: git gcrypt S3 bup directory rsync web webdav tahoe glacier hook external
-     local repository version: 5
-     supported repository version: 5
-     upgrade supported from repository versions: 2 3 4
-
-
-### Please provide any additional information below.
-
-
diff --git a/doc/todo/git-hook_to_sanity-check_git-annex_branch_pushes.mdwn b/doc/todo/git-hook_to_sanity-check_git-annex_branch_pushes.mdwn
deleted file mode 100644
--- a/doc/todo/git-hook_to_sanity-check_git-annex_branch_pushes.mdwn
+++ /dev/null
@@ -1,41 +0,0 @@
-IA.BAK and another project both need a way to let untrusted clients push
-git-annex branch changes to a central server. It's desired to only
-let a client make non-malicious pushes; a malicious client could screw
-up a lot of info in the branch.
-
-I propose adding a git-annex command that can be used in a git pre-receive
-hook to do this. --[[Joey]]
-
-There are two levels of checking it seems such a command could do:
-
-1. Only allow certain files to be changed. For example, maybe clients are only
-   expected to change location tracking files, and the activity.log
-   file, but not others like trust.log.
-
-2. Only allow modifications of data about a specific UUID. The UUID
-   would be provided to the command (and could be determined based on a
-   per-client ssh key or etc).
-
-  The changes to the branch would be checked, so this needs centralized
-  knowledge about the format of each file on the branch. I think this
-  mostly exists already in Logs.hs.
-
-Of these the second seems more likely to be useful, but the first would
-be by far the easier to add. So, do both?
-
-This might be too limiting for some situations:
-
-* If someone has 2 clients, that are talking with one-another,
-  then a push would include changes involving the UUIDs of both clients.
-  The command could be given multiple UUIDs to allow, to allow
-  for these kinds of setups.
-
-* A client might add a special remote somewhere, but this would need
-  changes to remote.log, which the first level of checking would not allow.
-  And, it would add another UUID, which the second level of checking would
-  need to be configured to allow.
-
-Python implementation
----------------------
-
-I started doing an implementation of this in Python here. For technical reasons the git repo is not publicly available, but here's a [dump](http://paste.debian.net/232563/) of the code. I went through what seems to be a rather convoluted process with libgit there because I wanted to have some proper unit tests and generating git commands by hand in a shell script is rather painful.Also, it currently adopts a "blocking" approach, ie. it blocks known problems, but maybe it should be based on an "allow" approach, that is: only allow certain things to go through. So far it only forbids removals and changes to trust.log.  A bunch of stuff is still missing like parameters (to allow changing the list of protected files) and checking the log tracking info. Feedback welcome. --[[anarcat]]
diff --git a/doc/todo/git_annex_open.mdwn b/doc/todo/git_annex_open.mdwn
deleted file mode 100644
--- a/doc/todo/git_annex_open.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-I had an idea the other night that there could be a `git annex open` command. What this would do would be the following:
-
-* if the file is already present locally: just `xdg-open` it
-* if it is not present and cannot be streamed: `git annex get "$@" && xdg-open "$@"`
-* if it can be streamed: `git annex get "$@"` and `xdg-open` when enough content has been streamed that we are confident it will play completely (unless network conditions change)
-
-This would need some [[metadata]] support partly to guess if the file can be streamed, but also to find the content. It would also assume some more intelligence in `git annex get` where git annex would have progress information (maybe through [[chunking]]?).
-
-How does that idea sound? --[[anarcat]]
diff --git a/doc/todo/git_annex_open/comment_1_67d90a1cb104d98e816354d96e1b0306._comment b/doc/todo/git_annex_open/comment_1_67d90a1cb104d98e816354d96e1b0306._comment
deleted file mode 100644
--- a/doc/todo/git_annex_open/comment_1_67d90a1cb104d98e816354d96e1b0306._comment
+++ /dev/null
@@ -1,21 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2014-11-10T17:11:52Z"
- content="""
-Hmm, well, there have been requests for access to files as they're being
-get-ed before. This does have the advantage of providing that,
-but I don't know if I like trying in xdg-open, which might not always
-be the way a user wants to open a file.
-
-git-annex does have progress info available while a file is being
-transferred. (If nothing else, it tends to know the key size, and can
-see the file size.) However I don't know how it could tell if "enough"
-of the file was available to stream it.
-
-I guess what I'd be most comfortable with is putting in plumbing.
-Like making `examinekey` be able to report the temporary file
-that is used when a key is being downloaded. It might also make sense to
-have a bit of plumbing that waits for a file being downloaded to get
-to X% complete, or something.
-"""]]
diff --git a/doc/todo/git_annex_push.mdwn b/doc/todo/git_annex_push.mdwn
deleted file mode 100644
--- a/doc/todo/git_annex_push.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-A common use case for me is to use annex as really just an addition to git to store additional content.  What I am ending up with is two stage procedure to submit my changes to our shared repository:  git push REMOTE; git annex copy --to=REMOTE . IMHO it would only be logical if there was "git annex push REMOTE [GITPUSHOPTIONS]" which would be merely an alias for "git push REMOTE [GITPUSHOPTIONS]; git annex copy --to=REMOTE" but which will make use of annex for such common usecase simple(r)
-
-> After this was opened, some options were added, so use:
-> `git-annex sync --no-pull --content`
-> 
-> [[done]] --[[Joey]] 
diff --git a/doc/todo/git_annex_push/comment_1_54c5494ec21621298b3111cd7c2325b1._comment b/doc/todo/git_annex_push/comment_1_54c5494ec21621298b3111cd7c2325b1._comment
deleted file mode 100644
--- a/doc/todo/git_annex_push/comment_1_54c5494ec21621298b3111cd7c2325b1._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 1"""
- date="2015-08-04T20:19:22Z"
- content="""
-`git annex sync --content` does what you want, only it also does a pull and
-a merge from remotes.
-
-I don't know that wanting to only push, w/o pull and merge, is common
-enough to make a separate command for it.
-
-There's also the problem that to push the git-annex branch, it really
-makes sense to first pull/merge from the remote. Otherwise, the push
-is not likely to work as well. And too, it makes sense to update the
-git-annex branch from remotes in order to know what files that have, so
-that info can be better used to decide which files to send to them --
-especially when preferred content might make some file not be sent to all
-remotes, depending on which other remotes contain the file.
-"""]]
diff --git a/doc/todo/git_annex_push/comment_2_67938223c42c2a81dbfd32cd8a6a39c2._comment b/doc/todo/git_annex_push/comment_2_67938223c42c2a81dbfd32cd8a6a39c2._comment
deleted file mode 100644
--- a/doc/todo/git_annex_push/comment_2_67938223c42c2a81dbfd32cd8a6a39c2._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4"
- subject="comment 2"
- date="2015-08-09T03:04:31Z"
- content="""
- indeed  pull/merge ( ie sync)  would often  be  needed.  but the same  in regular git  workflow -  we  can't push if remote has new  changes.  so we know that we need to \" git  pull\" ( or alternative merge dance).   my  whining here is pretty much about  dichotomy  between  regular git command  and  accompanying  annex commands  for simple typical workflows - i  need to  educate people  much more  beyond \" in your typical use case,  when you all collaborate  on this repo,  just use git annex add  to place big files under annex control,  and then git annex push  to push all your  changes\".   then if  annex push  checked  first that push   of annex  branch can't happen  and that annex  merge is due,  and let user know  to run it first -  they will do,  and things will remain clear.  now there is a  lot of annex  uniquely named commands  which do not \" correlate\"  with git ones   even for simple  use cases, which makes  adoption harder imho.
-"""]]
diff --git a/doc/todo/git_annex_push/comment_3_ccb822eeb9b0d60f811568e4f27f970a._comment b/doc/todo/git_annex_push/comment_3_ccb822eeb9b0d60f811568e4f27f970a._comment
deleted file mode 100644
--- a/doc/todo/git_annex_push/comment_3_ccb822eeb9b0d60f811568e4f27f970a._comment
+++ /dev/null
@@ -1,19 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 3"""
- date="2015-08-11T17:37:05Z"
- content="""
-I tend to be uncomfortable with wrapping many git commands into git-annex
-commands with the same name. All the regular git commands can be used
-in a git-annex repository, and I don't want to get users thinking they need
-to look for git-annex commands instead when the git commands work perfectly
-well.
-
-`git annex copy` is fundamentally different than `git push`, so the user
-needs to learn about the complication of needing to copy the contents
-around separately. Perhaps even copying content to different (special)
-remotes than where git pushes to. `git annex sync --content` is there for
-users who want to keep two repos in sync and don't want to be concerned with the details.
-`git annex push` would seem to be for users who want to know about the details,
-but not all of them. Seems like a losing and/or confusing choice.
-"""]]
diff --git a/doc/todo/hidden_files.mdwn b/doc/todo/hidden_files.mdwn
deleted file mode 100644
--- a/doc/todo/hidden_files.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Add a `git annex hide $file` that behaves like drop, checking counter info
-and updating location log to say the current repo no longer has a file --
-but does not actually remove the content.
-
-Then `git annex unused` can be used to clean it up later. And in the
-meantime, it's still locally accessible. This can be useful if you're
-planning to need to free up space later, but want to hold onto the content
-for a while. Possibly you'll be disconnected later, so it's easier to push
-out that intent now.
-
---
-
-TODO:
-
-* Make 100% sure this is safe. Drop, etc should never check content files
-  are present on other repos if the location log doesn't say the repo
-  has the content.
-
-* What will `git annex get` do if it's asked to get a file that has been
-  hidden?
-
-> Unless I am missing something: Make sure the data is correct (for SHA1 or other tracking) and restore locally. If that's not the case, delete and restore from remote. -- RichiH
-
-----
-
-Is 'unused' a good name? 'clean' and 'autoclean' would make more sense, imo. 'clean' deletes everything, whereas an optional 'autoclean' could try to be smart based on disk usage and/or SHA1, etc. -- RichiH
-
-> Nah, `git annex unused/dropunused` already exist.  --[[Joey]] 
-
->> OK, in that case forget what I said. No idea about your internal policy, but feel free to delete this part of the page, then. -- RichiH
diff --git a/doc/todo/hide_missing_files.mdwn b/doc/todo/hide_missing_files.mdwn
deleted file mode 100644
--- a/doc/todo/hide_missing_files.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-I seem to recall a time when [[direct mode]] would hide files that were not present in the local repository. While this created a bunch of headaches for people that wanted to get the missing files, it was great for users that didn't care and only wanted to see what was actually there. (In fact, it was suggested as a solution in [[forum/usability:_what_are_those_arrow_things__63__/]], a year and a half ago.)
-
-Now this behavior has changed, and with v6 coming up, all those distinctions have basically gone away anyways...
-
-So what's someone to do if he wants to deal with the usability issue mentioned above? To restate: the problem is users I share files with often see a *lot* of files, with only a fraction of them being actually present. A lot of those files are obviously large, and so they are having a frustrating experience with git-annex because they see all those promises of "files being there" but they have a hard time actually finding which files *really* are there. So they click one one broken link after the other and generally give up before they figure out how to pop a terminal open, use `find -L -type l` or `find -type l` (i can never remember which!) - something we can hardly expect from the average GUI user...
-
-Maybe this could be accomplished through a [[dumb, unsafe, human-readable backend]]?
-
-Thanks for any advice! --[[anarcat]]
-
-> This has never been done by direct mode AFAICR.
-> 
-> But, [[design/adjusted_branches]] can do it. The basic functionality is
-> implemented already; what's missing is that, once in an adjusted branch 
-> with missing files hidden, when a file's content arrives the adjusted
-> branch needs to be updated to expose the file.
-> 
-> This will need hooks into
-> the adjusted branch code when file contents are get/dropped, and the
-> naive way to do it could make things quite slow, if the branch needs to
-> be re-adjusted after each get/drop of each file. --[[Joey]]
diff --git a/doc/todo/immediate_stream-to-sync.mdwn b/doc/todo/immediate_stream-to-sync.mdwn
deleted file mode 100644
--- a/doc/todo/immediate_stream-to-sync.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-git-annex is really great for secure distributed archival, but it's missing a piece of the reliability portion: when data is generated and saved a system may crash before finishing, and some data may be lost, before the add is initiated.
-
-If there were a way to add a file at the same time as writing it -- and then at the same time stream that live data to a remote -- it would increase the utility of git-add for such uses as storing live recording and logfiles.
-
-I imagine e.g.
-
-$ cat /proc/kmsg | git annex addstreamsync livelogs/kernel-log-$(date)
-
-and kmsg would be streamed to enough remotes to meet numcopies, and hashed live .  If possible, if the system then crashed and even the entire source repo was lost, the remote would have some incomplete file and be able to complete the add properly at next sync.  Hashing the data at the same time as generating it would also speed adding any new file.
diff --git a/doc/todo/import_--reinject.mdwn b/doc/todo/import_--reinject.mdwn
deleted file mode 100644
--- a/doc/todo/import_--reinject.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-There's `git annex reinject <src> <dst>` for re-adding one file's contents to the local annex. But what if I have a whole bunch of files, and want git-annex itself to decide whether & where it needs to reinject them? (And if the file doesn't need to be reinjected, it would remain in its original place.)
-
-None of the `git annex import` modes work properly in this case. By default, importing adds another, unnecessary copy of the imported file (which I have to `rm` after importing). The `--clean-duplicates` mode seems close, but it insists on verifying the content in other repositories rather than just reinjecting it locally. (Let's assume that the main reason I'm trying to reinject is that I cannot access other repos.)
-
-So I'm hoping for something like `git annex import --reinject <src>...`. Or are there other existing ways to achieve the same? I couldn't find any.
-
-> implemented `git annex reinject --known` [[done]] --[[Joey]] 
diff --git a/doc/todo/integrate_support_for_spideroak_as_archive__47__backup.mdwn b/doc/todo/integrate_support_for_spideroak_as_archive__47__backup.mdwn
deleted file mode 100644
--- a/doc/todo/integrate_support_for_spideroak_as_archive__47__backup.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-SpiderOak is a great backup service and many of us have unlimited accounts with them since World Backup Day.  That makes SpiderOak a very interesting candidate for use as an archive or backup node.  I can think of only two ways to go about this:
-
-1. Designate one of your computers as an archive/backup and use spideroak independantly to sync that archive.  This is very unattractive, since it makes the spideroak backup completely unknown to git-annex.
-
-2. Integrate the SpiderOak CLI tool somehow as a remote.  I don't know to what extent this would be possible, but if it were, that'd be awesome.  And a lot of work, presumably.
-
-Bonus option:
-
-3. Can the SpiderOak API be useful? https://spideroak.com/faq/questions/37/how_do_i_use_the_spideroak_web_api/
diff --git a/doc/todo/keep_annexed_files_for_a_while.mdwn b/doc/todo/keep_annexed_files_for_a_while.mdwn
deleted file mode 100644
--- a/doc/todo/keep_annexed_files_for_a_while.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I don't want files that I dropped to immediately disappear from my local or all of my remotes repos on the next sync. Especially in situations where changes to the git-annex repo get automatically and immediately replicated to remote repos, I want a configurable "grace" period before files in .git/annex/objects get really deleted.
-
-This has similarities to the "trash" on a desktop. It might also be nice to
-
-* configure a maximum amount of space of the "trash"
-* have a way to see the contents of the trash to easily recover deleted files
-
-Maybe it would make sense to just move dropped files to the desktops trash? "git annex trash" as an alternative to drop?
diff --git a/doc/todo/make_addurl_respect_annex.largefiles_option.mdwn b/doc/todo/make_addurl_respect_annex.largefiles_option.mdwn
deleted file mode 100644
--- a/doc/todo/make_addurl_respect_annex.largefiles_option.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-ATM git annex addurl ignores  annex.largefiles option so to automate annexification or direct add to git for a list of files I need manually to download each one of them into a FILE and then "git annex add -c annex.largefiles='exclude=*.txt'  FILE".  But it would have been convenient if I could "addurl" some files directly from urls directly into git, as per largefiles settings.
-
-N.B. I do understand that use-case might be somewhat vague, let me know if I should expand reasoning
-[[!meta author=yoh]]
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/make_annex_info_more_efficient.mdwn b/doc/todo/make_annex_info_more_efficient.mdwn
deleted file mode 100644
--- a/doc/todo/make_annex_info_more_efficient.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-ATM it takes about a minute for 'git annex info' on a sizeable but not huge repository with only ~450 files under annex but a few thousand of files  (~7000) in the tree.  I am not quite sure why it takes that long since it seems to care only about annexed files.  Also it might be of benefit to parallelize some traversal operations to take advantage of multiple cpu/cores
-
-[[!meta author=yoh]]
diff --git a/doc/todo/make_glacier-cli_executable_path_configurable.mdwn b/doc/todo/make_glacier-cli_executable_path_configurable.mdwn
deleted file mode 100644
--- a/doc/todo/make_glacier-cli_executable_path_configurable.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-[glacier-cli](https://github.com/basak/glacier-cli) calls its own command `glacier` rather than `glacier-cli` or something else.  This conflicts with [boto](https://github.com/boto/boto/)'s own `glacier` executable, as noted here:
-
-* <https://github.com/basak/glacier-cli/issues/30>
-* <https://github.com/basak/glacier-cli/issues/47>
-
-Whilst the `glacier-cli` project should resolve this conflict, it would be good if git-annex could be made to use a configurable path for this executable, rather than just assuming that it has been installed as `glacier`.  After all, its installation procedure is simply telling the user to run `ln -s`, so there's no reason why the user couldn't make the target of this command `~/bin/glacier-cli` rather than `~/bin/glacier` - it's really irrelevant what the source file inside the git repo is called.
-
-Of course, [`checkSaneGlacierCommand`](https://github.com/joeyh/git-annex/blob/master/Remote/Glacier.hs#L307) is still very much worth having, for safety.
diff --git a/doc/todo/make_status_show_staged_files.mdwn b/doc/todo/make_status_show_staged_files.mdwn
deleted file mode 100644
--- a/doc/todo/make_status_show_staged_files.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-### Please describe the problem.
-
-`git annex status` does not report the fact that some files have been added but not yet committed.
-
-### What steps will reproduce the problem?
-
-    $ # alwayscommit = false
-    $ echo "new" > new-file
-    $ git annex status
-    ? new-file
-    $ git annex add
-    add new-file
-    $ git annex status
-    $
-
-Using the `git status` command directly will show the added files
-
-    $ git -c core.bare=false status --porcelain | grep -v '^ T'
-    AT new-file
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex version: 5.20141024-g613f396
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/metadata_--batch.mdwn b/doc/todo/metadata_--batch.mdwn
deleted file mode 100644
--- a/doc/todo/metadata_--batch.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-[[!meta author=yoh]]
diff --git a/doc/todo/openwrt_package.mdwn b/doc/todo/openwrt_package.mdwn
deleted file mode 100644
--- a/doc/todo/openwrt_package.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-hi
-
-recently i have installed openwrt on my mikrotik routerboard. i am verry suprised how well it works. it lacks git-annex package. openwrt has git and i can install it.
-
-how can i build one on a mips arch ?
-is it possible to build multiple architecture standalone binaries ?
diff --git a/doc/todo/openwrt_package/comment_1_100d76109e04bc43979775d71b4152ac._comment b/doc/todo/openwrt_package/comment_1_100d76109e04bc43979775d71b4152ac._comment
deleted file mode 100644
--- a/doc/todo/openwrt_package/comment_1_100d76109e04bc43979775d71b4152ac._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="206.74.132.139"
- subject="comment 1"
- date="2014-02-06T17:26:58Z"
- content="""
-I would be quite happy if someone took care of adding git-annex to openwrt.
-
-I don't have time to personally handle packaging for different linux distributions myself. What I could do is add mips builds of git-annex to the existing standalone linux builds. These would need to be built the same way the arm builds are done, using a Debian chroot and qemu to run tools from it. This is rather a lot of work for me to set up, and I don't know if I'd have to do it for both little and big endian mips.
-
-Also, it seems that Debian does not currently have a working haskell toolchain for mips. Which may well mean that ghc is not in a working state on mips at all.
-"""]]
diff --git a/doc/todo/openwrt_package/comment_2_2cb7dd4c0cc4413a4588b13cf7700de2._comment b/doc/todo/openwrt_package/comment_2_2cb7dd4c0cc4413a4588b13cf7700de2._comment
deleted file mode 100644
--- a/doc/todo/openwrt_package/comment_2_2cb7dd4c0cc4413a4588b13cf7700de2._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkNE-H4vEcbcGndxq5daT8qUb7yIf7r1OE"
- nickname="Łukasz"
- subject="comment 2"
- date="2014-02-11T21:05:00Z"
- content="""
-if debian does not have working toolchain for mips then there is no way to port it into mips machines.
-am i correct ?
-"""]]
diff --git a/doc/todo/openwrt_package/comment_3_5ba8a325a683ff543d81a366c873070d._comment b/doc/todo/openwrt_package/comment_3_5ba8a325a683ff543d81a366c873070d._comment
deleted file mode 100644
--- a/doc/todo/openwrt_package/comment_3_5ba8a325a683ff543d81a366c873070d._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="209.250.56.172"
- subject="comment 3"
- date="2014-02-11T21:39:34Z"
- content="""
-Actually, debian stable does still have ghc building for mips/mipsel. It's just newer versions that have failed to build and nobody has fixed it yet.
-"""]]
diff --git a/doc/todo/openwrt_package/comment_4_132e67b34f9c616217e037e4ecac70a4._comment b/doc/todo/openwrt_package/comment_4_132e67b34f9c616217e037e4ecac70a4._comment
deleted file mode 100644
--- a/doc/todo/openwrt_package/comment_4_132e67b34f9c616217e037e4ecac70a4._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 4"""
- date="2015-01-13T20:39:53Z"
- content="""
-I checked, and the current status is that mips and mipsel in Debian have
-up-to-date builds of ghc and git-annex.
-"""]]
diff --git a/doc/todo/optimise_git-annex_merge.mdwn b/doc/todo/optimise_git-annex_merge.mdwn
deleted file mode 100644
--- a/doc/todo/optimise_git-annex_merge.mdwn
+++ /dev/null
@@ -1,28 +0,0 @@
-Typically `git-annex merge` is fast, but it could still be sped up.
-
-`git-annex merge` runs `git-hash-object` once per file that needs to be
-merged. Elsewhere in git-annex, `git-hash-object` is used in a faster mode,
-reading files from disk via `--stdin-paths`. But here, the data is not
-in raw files on disk, and I doubt writing them is the best approach.
-Instead, I'd like a way to stream multiple objects into git using stdin.
-Sometime, should look at either extending git-hash-object to support that,
-or possibly look at using git-fast-import instead.
-
-> Well, I went with git hash-object --stdin-paths despite it needing to read from
-> temp files. --[[Joey]]
-
---- 
-
-`git-annex merge` also runs `git show` once per file that needs to be
-merged. This could be reduced to a single call to `git-cat-file --batch`,
-There is already a Git.CatFile library that can do this easily. --[[Joey]]
-
-> This is now done, part above remains todo. --[[Joey]] 
-
----
-
-Merging used to use memory proportional to the size of the diff. It now
-streams data, running in constant space. This probably sped it up a lot,
-as there's much less allocation and GC action. --[[Joey]] 
-
-[[done]] 
diff --git a/doc/todo/parallel_get.mdwn b/doc/todo/parallel_get.mdwn
deleted file mode 100644
--- a/doc/todo/parallel_get.mdwn
+++ /dev/null
@@ -1,83 +0,0 @@
-Wish: `git annex get [files] -jN` should run up to N downloads of files
-concurrently.
-
-This can already be done by just starting up N separate git-annex
-processes all trying to get the same files. They'll coordinate themselves
-to avoid downloading the same file twice.
-
-But, the output of concurrent git annex get's in a single teminal is a
-mess.
-
-It would be nice to have something similar to docker's output when fetching
-layers of an image. Something like:
-
-	get foo1 ok
-	get foo2 ok
-	get foo3 -> 5% 100 KiB/s
-	get foo4 -> 3% 90 KiB/s
-	get foo5 -> 20% 1 MiB/s
-
-Where the bottom N lines are progress displays for the downloads that are
-currently in progress. When a download finishes, it can scroll up the
-screen with "ok".
-
-	get foo1 ok
-	get foo2 ok
-	get foo5 ok
-	get foo3 -> 5% 100 KiB/s
-	get foo4 -> 3% 90 KiB/s
-	get foo6 -> 0% 110 Kib/S
-
-This display could perhaps be generalized for other concurrent actions.
-For example, drop:
-
-	drop foo1 ok
-	drop foo2 failed
-	  Not enough copies ...
-	drop foo3 -> (checking r1...)
-	drop foo4 -> (checking r2...)
-
-But, do get first.
-
-Pain points: 
-
-1. Currently, git-annex lets tools like rsync and wget display their own
-   progress. This makes sense for the single-file at a time get, because
-   rsync can display better output than just a percentage. (This is especially
-   the case with aria2c for torrents, which displays seeder/leecher info in
-   addition to percentage.)
-
-   But in multi-get mode, the progress display would be simplified. git-annex
-   can already get percent done information, either as reported by individiual
-   backends, or by falling back to polling the file as it's downloaded.
-
-2. The mechanics of updating the screen for a multi-line progress output
-   require some terminal handling code. Using eg, curses, in a mode that
-   doesn't take over the whole screen display, but just moves the cursor
-   up to the line for the progress that needs updating and redraws that
-   line. Doing this portably is probably going to be a pain, especially
-   I have no idea if it can be done on Windows.
-
-   An alternative would be a display more like apt uses for concurrent
-   downloads, all on one line:
-
-	get foo1 ok
-	get foo2 ok
-	get [foo3 -> 5% 100 KiB/s] [foo4 -> 3% 90 KiB/s] [foo5 -> 20% 1 MiB/s]
-
-   The problem with that is it has to avoid scrolling off the right
-   side, so it probably has to truncate the line. Since filenames
-   are often longer than "fooN", it probably has to elipsise the filename.
-   This approach is just not as flexible or nice in general.
-
-See also: [[parallel_possibilities]]
-
-> I am looking at using the ascii-progress library for this.
-> It has nice support for multiple progress bars, and is portable.
-> I have filed 7 issues on it, around 4 of which need to get fixed before
-> it's suitable for git-annex to use.. --[[Joey]]
-
->> `git annex get -JN` works now, but lacks any progress display.
->> Waiting on some updates to ascii-progress. --[[Joey]]
-
->>> Wrote concurrent-output; [[done]] --[[Joey]]
diff --git a/doc/todo/parallel_get/comment_1_5b7517214148731f81be6e61233ce13c._comment b/doc/todo/parallel_get/comment_1_5b7517214148731f81be6e61233ce13c._comment
deleted file mode 100644
--- a/doc/todo/parallel_get/comment_1_5b7517214148731f81be6e61233ce13c._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="spinning wheel"
- date="2014-12-22T20:33:44Z"
- content="""
-Just tried torrents backend -- it works -- THANKS!!!
-But amount of output dumped upon user is somewhat outstanding (I can't even scroll terminal back far enough for 1 file fetch).  May be for such backends, where no easy/reasonable way to estimate progress it would be possible at least to have some spinning wheel animation which would react (spin) to any output received from the corresponding downloader/backend?  (unless in debug mode in which normal output probably should be shown as well)
-"""]]
diff --git a/doc/todo/parallel_get/comment_2_c8548608023ef3d95035fe97164c8cd7._comment b/doc/todo/parallel_get/comment_2_c8548608023ef3d95035fe97164c8cd7._comment
deleted file mode 100644
--- a/doc/todo/parallel_get/comment_2_c8548608023ef3d95035fe97164c8cd7._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="even less verbose"
- date="2014-12-23T16:50:36Z"
- content="""
-While working on this one, might be worth even reserving even a quieter mode of operation which would e.g. just report a # of already processed files. e.g.
-
-\"0% done: fetched 100 out of 1,234,567 files\"
-
-;-) ?
-"""]]
diff --git a/doc/todo/parallel_get/comment_3_36bfc494c34a6701c4780d13d669ff71._comment b/doc/todo/parallel_get/comment_3_36bfc494c34a6701c4780d13d669ff71._comment
deleted file mode 100644
--- a/doc/todo/parallel_get/comment_3_36bfc494c34a6701c4780d13d669ff71._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="comment 3"
- date="2014-12-23T16:52:43Z"
- content="""
-actually a similar or exactly the same summary line might be worth appearing in the \"regular\" mode as well to give user better estimate of overall progress.  If total size is known, it would also be nice if overall % in size (not just a # of items) was reported
-"""]]
diff --git a/doc/todo/parallel_possibilities.mdwn b/doc/todo/parallel_possibilities.mdwn
deleted file mode 100644
--- a/doc/todo/parallel_possibilities.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-One of my reasons for using haskell was that it provides the possibility of
-some parallell processing. Although since git-annex hits the filesystem
-heavily and mostly runs other git commands, maybe not a whole lot.
-
-Anyway, each git-annex command is broken down into a series of independant 
-actions, which has some potential for parallelism.
-
-Each action has 3 distinct phases, basically "check", "perform", and
-"cleanup". The perform actions are probably parellizable; the cleanup may be
-(but not if it has to run git commands to stage state; it can queue
-commands though); the check should be easily parallelizable, although they
-may access the disk or run minor git query commands, so would probably not
-want to run too many of them at once.
diff --git a/doc/todo/read-only_removable_drives.mdwn b/doc/todo/read-only_removable_drives.mdwn
deleted file mode 100644
--- a/doc/todo/read-only_removable_drives.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-Here's yet another weird use case. I have a ext3 external drive for storing media that i brought to the office. Naturally, all files on the drive are owned by my desktop user (uid = 1000). In the office, my userid is different (say 1001), so git-annex doesn't see the removable drive at all (which is a little confusing). But even if i try to add the repo on the drive as an external repo, it says it can't write to it (which is true).
-
-I would expect it to at least be able to leech the files off of it.
-
-Otherwise, I would welcome advice on how to fix this problem without doing a `sudo chown -R` every time i plug this drive somewhere ... --[[anarcat]]
-
-> Workaround: `sudo setfacl -R -m u:anarcat:rwx /media/foo/annex`
-
-Note: this seems like there was at least one dupe opened about this in [[bugs/annex_get_fails_from_read-only_filesystem]].
-
-I concede that this may refer to many different issues, so here's a short inventory of issues with readonly repositories:
-
-* trying to add an external readonly drive through the webapp: not detected: see [[todo/show_readonly_removable_drives_in_the_webapp]]
-* trying to add an external readonly drive through the commandline: fails to sync? - couldn't reproduce locally, i will need to go back to that machine for more tests :(
-* trying to add a ssh readonly remote through the webapp: fails to sync and considers the remote "git-only" (which also fails) - couldn't reproduce locally either - maybe this is related to the upgrade option in [[bugs/annex_get_fails_from_read-only_filesystem/]] 
-* trying to add a local readonly remote through the webapp: fails to add, see [[bugs/cannot_add_local_readonly_repo_through_the_webapp]]
-* failing to sync with a readonly remote of a different version: still an issue, see [[bugs/annex_get_fails_from_read-only_filesystem/]] - at least content should be syncable even if the upgrade fails (think of failure conditions such as broken hard drives that are put in readonly mode or ddrescue'd disk images)
diff --git a/doc/todo/redundancy_stats_in_status.mdwn b/doc/todo/redundancy_stats_in_status.mdwn
deleted file mode 100644
--- a/doc/todo/redundancy_stats_in_status.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-Currently, `git annex status` only shows the size of 1 copy of each file.
-If numcopies is being used for redundancy, much more disk can actually be
-in use than status shows.
-
-One idea:
-
-	known annex size: 2 terabytes (plus 4 terabytes of redundant copies)
-
-But, to get that number, it would have to walk every location log, 
-counting how many copies currently exist of each file. That would make
-status a lot slower than it is.
-
-One option is to just put it at the end of the status:
-
-	redundancy: 300% (4 terabytes of copies)
-
-And ctrl-c if it's taking too long.
-
-Hmm, fsck looks at that same info. Maybe it could cache the redundancy
-level it discovers? Since fsck can be run incrementally, it would be tricky
-to get an overall number. And the number would tend to be stale, but
-then again it might also be nice if status shows how long ago the last fsck
-was.
diff --git a/doc/todo/required_content.mdwn b/doc/todo/required_content.mdwn
deleted file mode 100644
--- a/doc/todo/required_content.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-We have preferred content, which is advisory, and numcopies, which is
-enforced (except by `git annex move`). What is missing is an expression
-like preferred content, which is enforced. So, required content.
-
-For example, I might want a repository that is required to contain
-`*.jpeg`. This would make get --auto get it (it's implicitly part of the
-preferred content), and would make drop refuse to drop it.
-
-> I've implemented the basic required content. Currently only configurable
-> via `vicfg`, because I don't think a lot of people are going to want to
-> use it.
-> 
-> Note that I did not yet add the active verification discussed below.
-> So if required content is set to `not inallgroup=backup`, or
-> `not copies=10`, trying to drop a file will not go off and prove
-> that there are 10 copies or that the file is in every repository in 
-> the backup group. It will assume that the location log is accurate
-> and go by that.
-> 
-> I think this is enough to cover Richard's case, at least.
-> In his example, A B and C are in group anchor and have required
-> content set to `include=*`, and D E F have it set to
-> `not inallgroup=anchor`. --[[Joey]]
diff --git a/doc/todo/sharedRepository_mode_not_supported_by_git-annex.mdwn b/doc/todo/sharedRepository_mode_not_supported_by_git-annex.mdwn
deleted file mode 100644
--- a/doc/todo/sharedRepository_mode_not_supported_by_git-annex.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-git's core.SharedRepository is supported by git-annex, but only
-with the group/all/world/everybody settings. core.SharedRepository=0644
-etc is not supported.
-
-There's no insormountable reason why not, Joey just hates umask mode math
-stuff and nobody has sent a patch. Note that Annex.Content.freezeContent
-should remove the write bit from files, no matter what.
diff --git a/doc/todo/shorten_git-annex_manpage.mdwn b/doc/todo/shorten_git-annex_manpage.mdwn
deleted file mode 100644
--- a/doc/todo/shorten_git-annex_manpage.mdwn
+++ /dev/null
@@ -1,38 +0,0 @@
-the [[git-annex]] manpage is still pretty long. i wonder if work shouldn't be done to shorten it further.
-
-what i'm thinking of is that this entry, for example, takes up three lines where it could take two, reducing the size by 30% since most commands have only one line explaining it:
-
-<pre>
- * undo `[filename|directory] ...`
-
-   Undo last change to a file or directory.
-
-   See [[git-annex-undo]](1) for details.
-</pre>
-
-the `git(1)` manpage resolves this by putting the reference in the first line:
-
-<pre>
-       git-init(1)
-           Create an empty Git repository or reinitialize an existing one.
-</pre>
-
-So i would think there are two options here:
-
-1. do like git, but preserving the usage:
-
-<pre>
- * [[git-annex-undo]](1) `[filename|directory]`
-
-   Undo last change to a file or directory.
-</pre>
-
-2. Put the reference on the same line:
-
-<pre>
- * undo `[filename|directory] ...`
-
-   Undo last change to a file or directory. See [[git-annex-undo]](1) for details.
-</pre>
-
-Opinions? --[[anarcat]]
diff --git a/doc/todo/show_me_where_unused_file_was__44___i_can_wait.mdwn b/doc/todo/show_me_where_unused_file_was__44___i_can_wait.mdwn
deleted file mode 100644
--- a/doc/todo/show_me_where_unused_file_was__44___i_can_wait.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-i know that `git annex unused` would be slower if, instead of just showing the hash, it would also show the pathname where the file was. it does tell me that i can use `git log --stat -SKEY` to find that out myself, but then i would need to make some silly shell script to loop over multiple files. i'm hoping that git-annex has more efficient and clever ways of doing that, and even if it's slower, i'd be ready to wait if there was an extra flag to show me where it was...
-
-i have used this oneliner so far, but it's ugly and painful, especially since `git annex unused` doesn't have a very parseable output format...
-
-    git annex unused 2>&1 | grep '^  *[0-9][0-9]*' | sed 's/^ *[0-9][0-9]* *//' | xargs -I'{}' git log --oneline --stat -S'{}' -1
-
-any way to do this more easily? --[[anarcat]]
diff --git a/doc/todo/show_readonly_removable_drives_in_the_webapp.mdwn b/doc/todo/show_readonly_removable_drives_in_the_webapp.mdwn
deleted file mode 100644
--- a/doc/todo/show_readonly_removable_drives_in_the_webapp.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Coming from [[todo/read-only_removable_drives/]], this is use case 1: use inserts an `ext` formatted filesystem that he built at home (so files are owned by uid `1000`)  in the office computer (where he is uid `1001`). Now, this is a limitation of UNIX-style removable drives, admittedly, but I would expect to be able to sync "down" from the hard drives to copy the contents locally.
-
-So in short, expected behavior:
-
-1. insert the drive
-2. drive is shown in the webapp menu
-3. add the drive as a remote for the local repo
-4. sync the content from the drive to the local repo
-
-Actual behavior:
-
-1. insert the drive
-2. drive is not shown in the webapp menu
-
---[[anarcat]]
diff --git a/doc/todo/smudge.mdwn b/doc/todo/smudge.mdwn
deleted file mode 100644
--- a/doc/todo/smudge.mdwn
+++ /dev/null
@@ -1,416 +0,0 @@
-git-annex should use smudge/clean filters.
-
-### implementation todo list
-
-* Reconcile staged changes into the associated files database, whenever
-  the database is queried. This is needed to handle eg:
-
-  ```
-  	git add largefile
-	git mv largefile othername
-	git annex move othername --to foo
-	# fails to drop content from associated file othername,
-	# because it doesn't know it has that name
-	# git commit clears up this mess
-  ```
-
-* Dropping a smudged file causes git status (and git annex status)
-  to show it as modified,  because the timestamp has changed. 
-  Getting a smudged file can also cause this.
-  Upgrading a direct mode repo also leaves files in this state.
-  User can use `git add` to clear it up, but better to avoid this,
-  by updating stat info in the index.
-  (May need to use libgit2 to do this efficiently, cannot find
-  any plumbing except git-update-index, which is very inneficient for
-  smudged files.)
-
-* Checking out a different branch causes git to smudge all changed files,
-  and write their content. This does not honor annex.thin. A warning
-  message is printed in this case.  
-
-  This is particularly wasteful when checking out an adjusted unlocked
-  branch, which causes 2x the space to be used.  
-  
-  "git annex proxy" could be used to handle this.
-  Make it run the git command with smudge filters disabled and then
-  scan through the changed files in the work tree, and update pointer files
-  to be hard links to their content.
-  
-  git-annex adjust and git-annex sync could both use that internally
-  when checking out the adjusted branch, and merging a branch into HEAD.
-  
-  Since this approach modifies work tree files, it again causes git status
-  to think files are modified. So, the above todo item about that needs to
-  be sorted out first; it would not do for git annex adjust to cause
-  the whole work tree to be considered to be modified!
-
-* Eventually (but not yet), make v6 the default for new repositories.
-  Note that the assistant forces repos into direct mode; that will need to
-  be changed then, and it should enable annex.thin instead.
-* Later still, remove support for direct mode, and enable automatic
-  v5 to v6 upgrades.
-
-### historical notes
-
-2013: Currently, this does not look likely to work. In particular,
-the clean filter needs to consume all stdin from git, which consists of the
-entire content of the file. It cannot optimise by directly accessing
-the file in the repository, because git may be cleaning a different
-version of the file during a merge. 
-
-So every `git status` would need to read the entire content of all
-available files, and checksum them, which is too expensive.
-
-> Update from GitTogether: Peff thinks a new interface could be added to
-> git to handle this sort of case in an efficient way.. just needs someone
-> to do the work. --[[Joey]] 
-
->> Update 2015: git status only calls the clean filter for files
->> that the index says are modified, so this is no longer a problem.
->> --[[Joey]]
-
-### background
-
-The clean filter is run when files are staged for commit. So a user could copy
-any file into the annex, git add it, and git-annex's clean filter causes
-the file's key to be staged, while its value is added to the annex.
-
-The smudge filter is run when files are checked out. Since git annex
-repos have partial content, this would not git annex get the file content.
-Instead, if the content is not currently available, it would need to do
-something like return empty file content. (Sadly, it cannot create a
-symlink, as git still wants to write the file afterwards.)
-
-So the nice current behavior of unavailable files being clearly missing due
-to dangling symlinks, would be lost when using smudge/clean filters.
-(Contact git developers to get an interface to do this?)
-
-Instead, we get the nice behavior of not having to remeber to `git annex
-add` files, and just being able to use `git add` or `git commit -a`,
-and have it use git-annex when .gitattributes says to. Also, annexed
-files can be directly modified without having to `git annex unlock`.
-
-### configuration
-
-In .gitattributes, the user would put something like "* filter=git-annex".
-This way they could control which files are annexed vs added normally.
-
-It would also be good to allow using this without having to specify
-the files in .gitattributes. Just use "* filter=git-annex" there, and then
-let git-annex decide which files to annex and which to pass through the
-smudge and clean filters as-is. The smudge filter can just read a little of
-its input to see if it's a pointer to an annexed file. The clean filter
-could apply annex.largefiles to decide whether to annex a file's content or
-not.
-
-For files not configured this way in .gitattributes, git-annex could
-continue to use its symlink method -- this would preserve backwards
-compatability, and even allow mixing the two methods in a repo as desired.
-(But not switching an existing repo between indirect and direct modes;
-the user decides which mode to use when adding files to the repo.)
-
-### clean
-
-The trick is doing it efficiently. Since git a2b665d, v1.7.4.1,
-something like this works to provide a filename to the clean script:
-
-	git config --global filter.huge.clean huge-clean %f
-
-This could avoid it needing to read all the current file content from stdin
-when doing eg, a git status or git commit. Instead it is passed the
-filename that git is operating on, in the working directory.
-(Update: No, doesn't work; git may be cleaning a different file content
-than is currently on disk, and git requires all stdin be consumed too.)
-
-So, WORM could just look at that file and easily tell if it is one
-it already knows (same mtime and size). If so, it can short-circuit and
-do nothing, file content is already cached.
-
-SHA1 has a harder job. Would not want to re-sha1 the file every time,
-probably. So it'd need a local cache of file stat info, mapped to known
-objects.
-
-But: Even with %f, git actually passes the full file content to the clean
-filter, and if it fails to consume it all, it will crash (may only happen
-if the file is larger than some chunk size; tried with 500 mb file and 
-saw a SIGPIPE.) This means unnecessary works needs to be done, 
-and it slows down *everything*, from `git status` to `git commit`.
-**showstopper** I have sent a patch to the git mailing list to address
-this. <http://marc.info/?l=git&m=131465033512157&w=2> (Update: apparently
-can't be fixed.)
-
-> Update: I tried this again (2015) and it seems that git status and git
-> add avoid re-sending the file content to the clean filter, as long as the
-> file stat has not changed. I'm not sure when git started doing that,
-> but it seems to avoid this problem.
-> --[[Joey]]
-
-### smudge
-
-The smudge script can also be provided a filename with %f, but it
-cannot directly write to the file or git gets unhappy.
-
-> Still the case in 2015. Means an unnecesary read and pipe of the file
-> even if the content is already locally available on disk. --[[Joey]]
-
-### partial checkouts
-
-.. Are very important, otherwise a repo can't scale past the size of the
-smallest client's disk!
-
-It would be nice if the smudge filter could hard link a work
-tree file to the annex object.
-
-But currently, the smudge filter can't modify the work tree file on its own
--- git always modifies the file after getting the output of the smudge
-filter, and will stumble over any modifications that the smudge filter
-makes. And, it's important that the smudge filter never fail as that will
-leave the repo in a bad state.
-
-Seems the best that can be done is for the smudge filter to copy from the
-annex object when the object is present. When it's not present, the smudge
-filter should provide a pointer to its content.
-
-The clean filter should detect when it's operating on that pointer file.
-
-I've a demo implementation of this technique in the scripts below.
-
-### deduplication
-
-.. Is nice; needing 2 copies of every annexed file is annoying.
-
-Unfortunately, when using smudge/clean, `git merge` does not preserve a
-smudged file in the work tree when renaming it. It instead deletes the old
-file and asks the smudge filter to smudge the new filename.
-
-So, copies need to be maintained in .git/annex/objects, though it's ok
-to use hard links to the work tree files. (Although somewhat unsafe
-since modification of the file will lose the old version. annex.thin
-setting can enable this.)
-
-Even if hard links are used, smudge needs to output the content of an
-annexed file, which will result in duplication when merging in renames of
-files.
-
-### design
-
-Goal: Get rid of current direct mode, using smudge/clean filters instead to
-cover the same use cases, more flexibly and robustly.
-
-Use case 1:
-
-A user wants to be able to edit files, and git-add, git commit,
-without needing to worry about using git-annex to unlock files, add files,
-etc.
-
-Use case 2:
-
-Using git-annex on a crippled filesystem that does not support symlinks.
-
-Data:
-
-* An annex pointer file has as its first line the git-annex key
-  that it's standing in for (prefixed with "annex/objects/", similar to
-  an annex symlink target). Subsequent lines of the file might
-  be a message saying that the file's content is not currently available.
-  An annex pointer file is checked into the git repository the same way
-  that an annex symlink is checked in.
-* A file map is  maintained by git-annex, to keep track of the keys
-  that are used by files in the working tree.
-
-Configuration: 
-
-* .gitattributes tells git which files to use git-annex's smudge/clean
-  filters with. Typically, all files except for dotfiles:
-
-	* filter=annex
-	.* !filter
-
-* annex.largefiles tells git-annex which files should in fact be put in 
-  the annex. Other files are passed through the smudge/clean as-is and
-  have their contents stored in git.
-
-* annex.direct is repurposed to configure how git-annex adds files.
-  When set to false, it adds symlinks and when true it adds pointer files.
-
-git-annex clean:
-
-* Run by `git add` (and diff and status, etc), and passed the
-  filename, as well as fed the file content on stdin.
-
-  Look at configuration to decide if this file's content belongs in the
-  annex. If not, output the file content to stdout.
-
-  Generate annex key from filename and content from stdin.
-
-  Hard link (annex.thin) or copy .git/annex/objects to the file,
-  if it doesn't already exist.
-
-  This is done to prevent losing the only copy of a file when eg
-  doing a git checkout of a different branch, or merging a commit that
-  renames or deletes a file. But, with annex.thin no attempt is made to 
-  protect the object from being modified. If a user wants to
-  protect object contents from modification, they should use
-  `git annex add`, not `git add`, or they can `git annex lock` after adding,
-  or not enable annex.thin.
-
-  Update file map.
-
-  Output the pointer file content to stdout.
-
-git-annex smudge:
-
-* Run by eg `git checkout`
-  and passed the filename, as well as fed the pointer file content on stdin.
-
-  Update file map.
-
-  When an object is present in the annex, outputs its content to stdout.
-  Otherwise, outputs the file pointer content.
-
-git annex direct/indirect:
-
-  Previously these commands switched in and out of direct mode.
-  Now they become no-ops.
-
-git annex lock/unlock:
-
-  Makes sense for these to change to switch files between using
-  git-annex symlinks and pointers. So, this provides both a way to
-  transition repositories to using pointers, and a cleaner unlock/lock
-  for repos using symlinks.
-
-  unlock will stage a pointer file, and will link the content of the object
-  from .git/annex/objects to the work tree file.
-  
-  lock will replace the current work tree file with the symlink, and stage it,
-  and lock down the permissions of the annex object.
-
-#### file map
-
-The file map needs to map from `Key -> [File]`. `File -> Key`
-seems useful to have, but in practice is not worthwhile.
-
-Drop and get operations need to know what files in the work tree use a
-given key in order to update the work tree. And, we don't want to
-overwrite a work tree file if it's been modified when dropping or getting.
-
-git-annex commands that look at annex symlinks to get keys to act on will
-need fall back to either consulting the file map, or looking at the staged
-file to see if it's a pointer to a key. So a `File -> Key` map is a possible
-optimisation.
-
-Question: If the smudge/clean filters update the file map incrementally
-based on the pointer files they generate/see, will the result
-always be consistent with the content of the working tree?
-
-This depends on when git calls the smudge/clean filters and on what.
-In particular:
-
-* Does the clean filter always get called when adding a relevant 
-  file to git? Yes.
-* Is the clean filter called at any other time? Yes, for example
-  git diff will clean relevant modified files to generate the diff.
-  So, the clean filter may see file versions that have not yet been staged
-  in git.
-* Is the clean filter ever passed content not in the work tree?
-  I don't think so, but not 100% sure.
-* Is the smudge filter always called when git updates a relevant file
-  in the work tree? Yes.
-* Is the smudge filter called at any other time? Seems unlikely but then
-  there could be situations with a detached work tree or such.
-* Does git call any useful hooks when removing a file from the work tree,
-  or converting it to not be annexed, or for `git mv` of an annexed file?
-  No!
-
-From this analysis, any file map generated by the smudge/clean filters
-is necessary potentially innaccurate. It may list deleted files.
-It may or may not reflect current unstaged changes from the work tree.
-
-
-Follows that any use of the file map needs to verify the info from it,
-and throw out bad cached info (updating the map to match reality). 
-
-When downloading a key, check if the files listed in the file map are
-still pointer files in the work tree, and only replace them with the
-content if so. 
-
-When dropping a key, check if the files listed for it in the file map are
-unmodified in the work tree, and are staged as pointers to the key,
-and only reset them to the pointers if so. Note that this means that
-a modified work tree file that has not yet been staged, but that
-corresponds to a key, won't be reset when the key is dropped.
-This is probably not a big deal; the user will either add the
-file, which will add the key back, or reset the file.
-
-Does the `File -> Key` map have any benefits given this innaccuracy?
-Answer seems to be no; any answer that map gives may be innaccurate and
-needs to be verified by looking at actual repo content, so might as well
-just look at the repo content in the first place..
-
-#### Upgrading
-
-annex.version changes to 6
-
-git config for filter.annex.smudge and filter.annex.clean is set up.
-
-.gitattributes is updated with a stock configuration,
-unless it already mentions "filter=annex".
-
-Upgrading a direct mode repo needs to switch it out of bare mode, and
-needs to run `git annex unlock` on all files (or reach the same result).
-So will need to stage changes to all annexed files.
-
-When a repo has some clones indirect and some direct, the upgraded repo
-will have all files unlocked, necessarily in all clones. This happens
-automatically, because when the direct repos are upgraded that causes the
-files to be unlocked, while the indirect upgrades don't touch the files.
-
-----
-
-### test files
-
-huge-smudge:
-
-<pre>
-#!/bin/sh
-read f
-file="$1"
-echo "smudging $f" >&2
-if [ -e ~/$f ]; then
-	cat ~/$f # possibly expensive copy here
-else
-	echo "$f not available"
-fi
-</pre>
-
-huge-clean:
-
-<pre>
-#!/bin/sh
-file="$1"
-cat >/tmp/file
-# in real life, this should be done more efficiently, not trying to read
-# the whole file content!
-if grep -q 'not available' /tmp/file; then
-	awk '{print $1}' /tmp/file # provide what we would if the content were avail!
-	exit 0
-fi
-echo "cleaning $file" >&2
-# XXX store file content here
-echo $file
-</pre>
-
-.gitattributes:
-
-<pre>
-*.huge filter=huge
-</pre>
-
-in .git/config:
-
-<pre>
-[filter "huge"]
-        clean = huge-clean %f
-        smudge = huge-smudge %f
-<pre>
diff --git a/doc/todo/smudge/comment_10_19dd6be938d71c7311aecb3081849792._comment b/doc/todo/smudge/comment_10_19dd6be938d71c7311aecb3081849792._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_10_19dd6be938d71c7311aecb3081849792._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 10"""
- date="2016-04-09T17:22:11Z"
- content="""
-Hardlinks now used on windows when annex.thin is enabled.
-"""]]
diff --git a/doc/todo/smudge/comment_1_4ea616bcdbc9e9a6fae9f2e2795c31c9._comment b/doc/todo/smudge/comment_1_4ea616bcdbc9e9a6fae9f2e2795c31c9._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_1_4ea616bcdbc9e9a6fae9f2e2795c31c9._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://christian.amsuess.com/chrysn"
- nickname="chrysn"
- subject="git-add instead of git-annex-add"
- date="2011-02-26T21:43:21Z"
- content="""
-would, with these modifications in place, there still be a way to *really* git-add a file? (my main repository contains both normal git and git-annex files.)
-"""]]
diff --git a/doc/todo/smudge/comment_2_e04b32caa0d2b4c577cdaf382a3ff7f6._comment b/doc/todo/smudge/comment_2_e04b32caa0d2b4c577cdaf382a3ff7f6._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_2_e04b32caa0d2b4c577cdaf382a3ff7f6._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://dieter-be.myopenid.com/"
- nickname="dieter"
- subject="symlinks"
- date="2011-04-03T20:30:21Z"
- content="""
-> (Sadly, it cannot create a symlink, as git still wants to write the file afterwards.
-> So the nice current behavior of unavailable files being clearly missing due to dangling symlinks, would be lost when using smudge/clean filters. (Contact git developers to get an interface to do this?)
-
-Have you checked what the smudge filter sees when the input is a symlink? Because git supports tracking symlinks, so it should also support pushing symlinks through a smudge filter, right?
-Either way: yes, contact the git devs, one can only ask and hope.  And if you can demonstrate the awesomeness of git-annex they might get more 1interested :)
-"""]]
diff --git a/doc/todo/smudge/comment_3_4e7c25fe24a1e71f58a8354fa64f41c2._comment b/doc/todo/smudge/comment_3_4e7c25fe24a1e71f58a8354fa64f41c2._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_3_4e7c25fe24a1e71f58a8354fa64f41c2._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawn1QhtPvsRBV7pfaDW_ZTPFv_ZIxSzQ8Rg"
- nickname="Paul Léo"
- subject="comment 3"
- date="2013-11-13T20:41:52Z"
- content="""
-> SHA1 has a harder job. Would not want to re-sha1 the file every time, probably. So it'd need a local cache of file stat info, mapped to known objects.
-
-I think that is not true? If gits wants the file to be cleaned, it thinks that the file was changed. So you would have to SHA1 it anyway if you don't want rely on WORM (which git already does in the first step anyway).
-"""]]
diff --git a/doc/todo/smudge/comment_4_5ff4ad15865a93dc8c066220561936b2._comment b/doc/todo/smudge/comment_4_5ff4ad15865a93dc8c066220561936b2._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_4_5ff4ad15865a93dc8c066220561936b2._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="tomekwi"
- subject="How about the other way round?"
- date="2015-04-25T09:13:31Z"
- content="""
-If I understand this right, this feature should allow us to say to *git*: “Hey, from now on whenever I `git add` a `*.png` file, add it to *git-annex* instead!”
-
-How about saying to *git-annex*: “Hey, whenever I `git-annex add` a file which is *not* `*.png`, add it to *git* instead! Or at least leave it unadded so that I can decide later.” Is it possible now? If not, would it be reasonable to add such a feature?
-"""]]
diff --git a/doc/todo/smudge/comment_5_80bbc3710f9a18644571c6dd60baf4e5._comment b/doc/todo/smudge/comment_5_80bbc3710f9a18644571c6dd60baf4e5._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_5_80bbc3710f9a18644571c6dd60baf4e5._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 5"""
- date="2015-04-29T15:30:50Z"
- content="""
-That feature already exists (annex.largefiles).
-"""]]
diff --git a/doc/todo/smudge/comment_6_86f536515575a6c2ed3a89c80b2c232f._comment b/doc/todo/smudge/comment_6_86f536515575a6c2ed3a89c80b2c232f._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_6_86f536515575a6c2ed3a89c80b2c232f._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="tomekwi"
- subject="comment 6"
- date="2015-04-29T20:38:51Z"
- content="""
-Thanks! Looks great :)
-"""]]
diff --git a/doc/todo/smudge/comment_7_e428e4a1207d426a53e067fb5211510e._comment b/doc/todo/smudge/comment_7_e428e4a1207d426a53e067fb5211510e._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_7_e428e4a1207d426a53e067fb5211510e._comment
+++ /dev/null
@@ -1,22 +0,0 @@
-[[!comment format=mdwn
- username="torarnv@6179ecd599a0e00709a67306f015e46307a66eb6"
- nickname="torarnv"
- subject="Git 2.5 allows smudge filters to not read all of stdin"
- date="2015-07-29T10:35:07Z"
- content="""
-It seems git 2.5 allows smudge filters to not read all of stdin:
-
-https://github.com/git/git/blob/master/Documentation/RelNotes/2.5.0.txt
-
-\"
- * Filter scripts were run with SIGPIPE disabled on the Git side,
-   expecting that they may not read what Git feeds them to filter.
-   We however treated a filter that does not read its input fully
-   before exiting as an error.  We no longer do and ignore EPIPE
-   when writing to feed the filter scripts.
-
-   This changes semantics, but arguably in a good way.  If a filter
-   can produce its output without fully consuming its input using
-   whatever magic, we now let it do so, instead of diagnosing it
-   as a programming error.\"
-"""]]
diff --git a/doc/todo/smudge/comment_8_ab39263b7145094a9eb4a86bb5410421._comment b/doc/todo/smudge/comment_8_ab39263b7145094a9eb4a86bb5410421._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_8_ab39263b7145094a9eb4a86bb5410421._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="ExGen"
- subject="Harlinks"
- date="2016-04-02T23:32:24Z"
- content="""
-Why not use **hardlinks** on Windows? This could fix \"only direct mode\" issue too. 
-Symlinks on windows sure want admin privilege but hardlinks won't. At least not with this tool: 
-<http://schinagl.priv.at/nt/ln/ln.html>
-"""]]
diff --git a/doc/todo/smudge/comment_9_e194d6371384f2db560f026d6ef728ff._comment b/doc/todo/smudge/comment_9_e194d6371384f2db560f026d6ef728ff._comment
deleted file mode 100644
--- a/doc/todo/smudge/comment_9_e194d6371384f2db560f026d6ef728ff._comment
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!comment format=mdwn
- username="ExGen"
- subject="Harlinks"
- date="2016-04-03T11:21:02Z"
- content="""
-Also I tried now and confirmed both git's ln and cygwin's ln work on windows with hardlink, and it's supported since XP.
-"""]]
diff --git a/doc/todo/ssh_special_remote.mdwn b/doc/todo/ssh_special_remote.mdwn
deleted file mode 100644
--- a/doc/todo/ssh_special_remote.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-ssh:// remotes are not special remotes. Perhaps it would be useful to have
-a special remote that wraps a ssh:// remote? This would allow setting up a
-ssh:// remote that can be enabled using the webapp's normal UI for enabling
-special remotes.
-
-Enabling such a special remote would just make a regular git remote, so
-there would be no need to implement the methods to get/put data. (Although
-it might need to provide stubs to appease the compiler.)
-
-> Above is done. The command line interface in initremote and enableremote
-> is not too easy or perhaps useful, but it works great in the webapp.
-> --[[Joey]]
-
-It could optionally embed the ssh private key into the git-annex branch as
-a credential, for when you want anyone who has access to the git repo to be
-able to use the (locked-down) git-annex-shell on that server.
-
-> Leaving this todo open for this ssh private key embedcreds part.
-> I think it makes sense to do, but it it probably not too easy.
-> ([[webapp_ssh_setup_should_work_with_locked_down_git-annex-shell_account]]
-> needs to be fixed first). --[[Joey]]
-
-[[!meta title="remember ssh remote including optionally ssh key"]]
-
-----
-
-I am on the fence about whether this would be useful, and would appreciate
-use cases.
-
-One use case I was thinking about was a LAN with a central server, with a
-shared account with a git-annex repository on it. But then I realized this
-wouldn't really help set up git-annex in that situation, most of the time,
-because new clients would have the central server added as their first
-remote. 
-
-(It would help if one client paired with another new client, but
-that is unncessarily round-about most of the time.) 
-
-It might help in a more complex situation, where the LAN is not the whole
-network an a client might come onto the LAN already knowing about the
-central server there. --[[Joey]]
-
-A very compelling use case is switching from XMPP to a ssh server,
-and wanting to make it easy for users. --[[Joey]]
diff --git a/doc/todo/stream_feature__63__.mdwn b/doc/todo/stream_feature__63__.mdwn
deleted file mode 100644
--- a/doc/todo/stream_feature__63__.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-I am just asking myself, is it stupid to think that streaming in git annex would be a good idea and wouldnt it be totaly easy to implement?
-
-Ok just tried to link to files over ssh, it creates a link but you cant open with it its content ^^
-
-But at least the files you have access over some filesystem as example samba/sshfs or just a other directory or usb-drive you could stream instead of "get"
-
-you could add another mode like direct and indirect, like symbolic-links or something like that?
-
-Sadly linux is to stupid to allow direct ssh links ( thats maybe one of the biggest features hurd has over linux  ) but you could mount with sshfs readonly (checking first if sshfs is installed) to mount the files there and then map the links there.
-
-ok I am not so shure how hard it would be and how much bug potentials it creates, but it would be great I guess.
-
-git annex is a bit like a telephone book, where you get a list of where the targets are. So using it to call the persons so that they drive to you to talk with you is nice. But I think the better feature would be if you just talk with the guy over the telephone directly bevore he comes to you (streaming)
-
-I mean you did one great thing, you did make cloudy thing peer to peer, like git is targeted too but for smaller files, yes there are may use cases without this feature, but I would be really glad if it could do that too, if I give annex 5 locations on other pcs usb-sticks etc, I find it stupid to additionaly do setup all this sources again a second time for streaming, and then I have maybe even 2 different file names because you map stuff in git.
-
-So sorry its late here, I am a bit tired so I maybe dont know what I am talking right now, my english isnt the best, too, but I think it would be a great feature.
-
-I mean on your setup, with slow internet, you maybe always make a get command, but here, if I link to youtube, I have no problem to stream it, or even on internal network between my pcs I have gb-lan, I start directly movies streaming, I would only use get, in rare cases where I need them on a train, the normal thing is to stream stuff.
-
-So I have to go sleep now 
-
-bye
diff --git a/doc/todo/support_--allow-unrelated-histories_in_git_2.8.1pre.mdwn b/doc/todo/support_--allow-unrelated-histories_in_git_2.8.1pre.mdwn
deleted file mode 100644
--- a/doc/todo/support_--allow-unrelated-histories_in_git_2.8.1pre.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-git merge has recently been made to refuse to merge disconnected histories
-unless --allow-unrelated-histories is passed. This will break uses of the
-webapp, eg local pairing until git-annex is changed to pass that whenever
-it runs `git merge`.
-
-It could also perhaps break uses of `git annex sync` where a remote with a
-disconnected history is added and it's expected to merge with it. Although
-in this latter case, it might be argued that the default git behavior has
-changed and `git annex sync` should follow suite.
-
-(Also, any uses of `git pull` currently would need to
-be split into a fetch and a merge in order to pass the option to the merge;
-but AFAICS, git-annex never uses `git pull`)
-
---[[Joey]]
-
-> [[done]]; used the environment variable
-> `GIT_MERGE_ALLOW_UNRELATED_HISTORIES` which will hopefully land in git
-> `next` (currently Junio has posted a patch but not even landed it in `pu`
-> yet) --[[Joey]]
diff --git a/doc/todo/support_path-style_syntax_for_S3_bucket_specification.mdwn b/doc/todo/support_path-style_syntax_for_S3_bucket_specification.mdwn
deleted file mode 100644
--- a/doc/todo/support_path-style_syntax_for_S3_bucket_specification.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-It appears that currently there's no way to use the "path-style" method for accessing S3 buckets (as contrasted [here](http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAPI.html) with the "virtual hosted-style" of bucket specification). Would it be possible to add an S3-special-remote configuration parameter to adjust the underlying S3 library's "s3RequestStyle" config parameter? I believe that the "PathStyle" value would be relevant to this specific request, as mentioned in the [S3 library README](https://github.com/aristidb/aws#frequently-asked-questions).
-
-The virtual-hosted style of bucket specification involves a lot of DNS overhead. In my particular use case, I'm looking at running Ceph with a radosgw with S3 support, and in fact the Ceph documention [specifically indicates](http://docs.ceph.com/docs/master/radosgw/s3/commons/#bucket-and-host-name) a preference for "path-style" bucket specification.
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/sync_my_local_git-annex_from_a_dump_remote.mdwn b/doc/todo/sync_my_local_git-annex_from_a_dump_remote.mdwn
deleted file mode 100644
--- a/doc/todo/sync_my_local_git-annex_from_a_dump_remote.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-As discussed on debconf, I have the following use case:
-
-* I have a dump remote, a folder on my webserver where files are uploaded through the web app. I don't have git on the webserver, just a plain folder.
-* I have git-annex repo on a development server. The development server polls the webserver (ssh/ftp) once in an hour and synchronizes the state of the local git-annex repo with the state found on the webserver and commits that.
-* This is not meant to be backup facility. I just want to be able to have a state on my development machine that is very likely to the state on the webserver.
-
diff --git a/doc/todo/syncthing_special_remote.mdwn b/doc/todo/syncthing_special_remote.mdwn
deleted file mode 100644
--- a/doc/todo/syncthing_special_remote.mdwn
+++ /dev/null
@@ -1,108 +0,0 @@
-Among all possible [[todo/Bittorrent-like_features]] implementations,
-i think [Syncthing][] is one of the most interesting ones.
-
-First off, it is already [packaged for Debian][] with an [ITP
-underway][]. Second, it seems to use a fairly simple protocol, the
-[Block Exchange Protocol][]. It doesn't try to do everything under the
-sun and keeps things simple: NAT transversal, reuse TLS primitives and
-TCP, etc. It also seems to scale pretty well, if we are to believe the
-[usage statistics][].
-
- [Syncthing]: https://syncthing.net/
- [packaged for Debian]: http://apt.syncthing.net/
- [ITP underway]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=749887
- [Block Exchange Protocol]: https://github.com/syncthing/specs/blob/master/BEPv1.md
- [usage statistics]: https://data.syncthing.net/
-
-It does require the syncthing daemon to be running in order to
-transfer files so it could have similar problems than the
-[[special_remotes/ipfs]] remote which is that files get locally copied
-between the git-annex repository and the special remote.
-
-Furthermore, one of the main problems with this remote is that [public
-shares are not supported][], that is, in order to share with another
-remote, both remotes need to explicitely add each other, in syncthing!
-That makes pairing a little more difficult that it needs to.
-
- [public shares are not supported]: https://forum.syncthing.net/t/implementing-public-shares/1186
-
-[[!toc levels=2]]
-
-Possible implementations
-========================
-
-I can think of a few different ways of implementing such a remote:
-
- 1. share the `.git/annex/objects` directory through syncthing
- 2. copy objects to the `~/Sync` directory (or elsewhere)
- 3. interoperate with syncthing through the API
- 4. reimplement the [Block Exchange Protocol][] natively
-
-Sharing the objects
--------------------
-
-This is the easiest, but maybe the most dangerous: start syncthing and
-expose the `.git/annex/objects` directory to other peers.
-
-This of course has the downside that syncthing could technically start
-destroying objects without git-annex's knowledge, which is really
-bad. Hopefully, the readonly permissions on files could keep that from
-happening, but it still seems pretty unsafe.
-
-There is a way to mark a folder as "master" which makes it ignore
-changes from other nodes, but then that breaks the peer to peer nature
-of the protocol, which is hardly what we want. Marking the repo as
-untrusted would also be an important requirement here.
-
-Copying objects
----------------
-
-Copying objects is the safest and easiest way to implement this. Add a
-new key? You just copy it to the sync directory. Remove a key? Just
-remove the file, and syncthing picks up the change.
-
-The main problem with this approach is of course the duplication of
-data, doubling the disk usage of all objects stored in the syncthing
-remote locally.
-
-There's also the problem that we do not reflect the fact that the
-git-annex objects are (potentially) in multiple syncthing remotes, and
-thus changing the number of copies. Even worse, once a file is dropped
-on one syncthing remote, it gets dropped everywhere. The solution for
-this of course is simply treat syncthing as a single copy of the
-objects. Note that this also applies to the shared objects method
-above.
-
-This can be easily implemented with the [[special_remotes/directory]]
-special remote:
-
-    git annex initremote syncthing type=directory directory=$HOME/Sync/ encryption=none
-    git annex describe syncthing "default syncthing directory"
-    git annex untrust syncthing
-
-Note that the last step isn't necessary if the syncthing folder is
-marked as "master".
-
-Communicate with the API
-------------------------
-
-Another way would be to talk directly to the [REST API][] (there's
-also a separate [event API][] for GUIs). Currently, this doesn't seem
-to hold much promise because the APIs are mostly read-only and don't
-allow adding objects at all, for example.
-
- [REST API]: http://docs.syncthing.net/dev/rest.html
- [event API]: http://docs.syncthing.net/dev/events.html
-
-Reimplement the protocol
-------------------------
-
-This would involve writing a syncthing client using the
-[Block Exchange Protocol][] specification. This would allow more
-complete control over the distribution of objects and so on,
-respecting git-annex's wanted/required content policies while at the
-same time sharing the data with other syncthing endpoints. It would
-also allow for tracking the number of copies of the objects and so on.
-
-Of course, this is a major undertaking and probably the hardest
-approach, but also the one potentially giving the most benefits.
diff --git a/doc/todo/tahoe_lfs_for_reals.mdwn b/doc/todo/tahoe_lfs_for_reals.mdwn
deleted file mode 100644
--- a/doc/todo/tahoe_lfs_for_reals.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-[[forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs]] is a good
-start, but Zooko points out that using Tahoe's directory translation layer
-incurs O(N^2) overhead as the number of objects grows. Also, making
-hash subdirectories in Tahoe is expensive. Instead it would be good to use
-it as a key/value store directly. The catch is that doing so involves
-sending the content to Tahoe, and getting back a key identifier.
-
-This would be fairly easy to do as a [[backend|backends]], which can assign its
-own key names (although typically done before data is stored in it),
-but a tahoe-lafs special remote would be more flexible.
-
-To support a special remote, a mapping is needed from git-annex keys to
-Tahoe keys, stored in the git-annex branch.
-
-> This is now done, however, there are 3 known
-> problems: 
-> 
-> * tahoe start run unncessarily <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2149>
-> * web.port can conflict <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2147>
-> * Nothing renews leases, which is a problem on grids that expire.
->   <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2212>
-
-> --[[Joey]] 
diff --git a/doc/todo/transfer_between_git-annexes.mdwn b/doc/todo/transfer_between_git-annexes.mdwn
deleted file mode 100644
--- a/doc/todo/transfer_between_git-annexes.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-What do you think of the ability to transfer a file between unrelated annexes? With "migrate" already taken, I would suggest "catapult" (or "teleport")!
-
-    git annex catapult dir1/ $HOME/otherannex/somedir/
-    git annex catapult dir2/thisfile.jpg $HOME/otherannex/somedir/
-
-git-annex would then:
-
-* Get list of present files
-* Copy the file to temporary space in $HOME/otherannex/.git/annex
-* fsck file
-* Move file to $HOME/otherannex/.git/annnex/objects
-* Create symlinks/directories in $HOME/otherannex/somedir/
-* Stage symlinks
-* Drop content and rm symlink
-
-with the usual modifiers (e.g. --fast would skip the fsck, --force to skip non-present files?).
-
-Reason I ask: I have a huge annex from importing the contents of a bunch of random harddrives and will eventually sort the contents into various other annexes I can put files into (personal, general family, specific people). Having git-annex guiding and checking the transfers from the sorting annex to the individual ones would be really nice.
-
-Not having this isn't a showstopper (I can use rsync) so no worries if you don't think it is worth it or think it is but put it on the backburner :) Would just be a nice-to-have.
diff --git a/doc/todo/union_mounting.mdwn b/doc/todo/union_mounting.mdwn
deleted file mode 100644
--- a/doc/todo/union_mounting.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-It should be possible to union mount annexes. So if multiple drives have
-content, an annex mounting them both would have available all the 
-content from all the drives.
-
-This could be done by just making .git/annex/KEY link to the actual content
-on the mounted annex.
-
-(Need to make sure the [[copy_tracking|copies]] code does not
-confused and think the symlink is a copy of the content.. Also need to make
-sure that code that writes to .git/annex does not follow symlinks.))
diff --git a/doc/todo/union_mounting/comment_1_cb08435812dd7766de26199c73f38e8b._comment b/doc/todo/union_mounting/comment_1_cb08435812dd7766de26199c73f38e8b._comment
deleted file mode 100644
--- a/doc/todo/union_mounting/comment_1_cb08435812dd7766de26199c73f38e8b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawln3ckqKx0x_xDZMYwa9Q1bn4I06oWjkog"
- nickname="Michael"
- subject="comment 1"
- date="2013-03-01T01:26:36Z"
- content="""
-This would indeed be very helpful when remotely mounting a photo/video collection over samba.
-"""]]
diff --git a/doc/todo/union_mounting/comment_2_240b1736f6bd4fbf87c372d3a46e661b._comment b/doc/todo/union_mounting/comment_2_240b1736f6bd4fbf87c372d3a46e661b._comment
deleted file mode 100644
--- a/doc/todo/union_mounting/comment_2_240b1736f6bd4fbf87c372d3a46e661b._comment
+++ /dev/null
@@ -1,9 +0,0 @@
-[[!comment format=mdwn
- username="http://edheil.wordpress.com/"
- ip="173.162.44.162"
- subject="comment 2"
- date="2013-03-01T04:50:28Z"
- content="""
-+1 this would be sweet as hell
-
-"""]]
diff --git a/doc/todo/union_mounting/comment_3_cf0a0d4fbd929f24f7056115b2acb7de._comment b/doc/todo/union_mounting/comment_3_cf0a0d4fbd929f24f7056115b2acb7de._comment
deleted file mode 100644
--- a/doc/todo/union_mounting/comment_3_cf0a0d4fbd929f24f7056115b2acb7de._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://ypid.wordpress.com/"
- nickname="ypid"
- subject="Please add this ;)"
- date="2014-03-13T19:10:17Z"
- content="""
-+1 This would be so great. For me the only thing which is missing in this awesome project.
-"""]]
diff --git a/doc/todo/unwanted_repository_version_upgrades.mdwn b/doc/todo/unwanted_repository_version_upgrades.mdwn
deleted file mode 100644
--- a/doc/todo/unwanted_repository_version_upgrades.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Is it possible to freeze or peg repositories at a particular version, or to prevent automatic repository version upgrades?  Is it possible to "downgrade" a repository?
-
-### Please describe the problem.
-
-We have a number of repositories on a shared file server.  These repositories are accessed by multiple machines.  Some of these repositories appear to have gotten upgraded and are now unusable on machines running older versions of git-annex.
-
-We're getting this message:
-[[!format sh """
-user@system:/path/to/repository$ git annex status
-git-annex: Repository version 5 is not supported. Upgrade git-annex.
-"""]]
-
-The machine experiencing the problem is running Debian Wheezy (Stable).
-[[!format sh """
-user@system:/path/to/repository$ git version
-git version 1.7.10.4
-user@system:/path/to/repository$ git annex version
-git-annex version: 3.20120629
-local repository version: 5
-default repository version: 3
-supported repository versions: 3
-upgrade supported from repository versions: 0 1 2
-"""]]
-
-I'm guessing that one of the machines with access to this repository was running a newer version of git-annex, and that the repository was upgraded in the course of some action.
-
-> I took this onboard with v6; upgrade to it is currently optional and will
-> only become the default once enough years have passed that it's
-> reasonable to assume most people have git-annex 6.x installed.
-> 
-> I think at this point it's reasonable to assume most people have
-> git-annex 5.x installed, so there's no point in trying to change to v3 to
-> v5 forced upgrade at this point. So, [[done]] --[[Joey]]
diff --git a/doc/todo/upload_large_chunks_without_buffering_in_memory.mdwn b/doc/todo/upload_large_chunks_without_buffering_in_memory.mdwn
deleted file mode 100644
--- a/doc/todo/upload_large_chunks_without_buffering_in_memory.mdwn
+++ /dev/null
@@ -1,26 +0,0 @@
-Currently, when chunk=100MiB is used with a special remote, git-annex will
-use 100 mb ram when uploading a large file to it. The current chunk is
-buffered in ram.
-
-See comment in Remote.Helper.Chunked:
-
-	- More optimal versions of this can be written, that rely
-	- on L.toChunks to split the lazy bytestring into chunks (typically
-	- smaller than the ChunkSize), and eg, write those chunks to a Handle.
-	- But this is the best that can be done with the storer interface that
-	- writes a whole L.ByteString at a time.
-
-The buffering is probably fine for smaller chunks, in the < 10 mb or
-whatever range. Reading such a chunk from gpg and converting it into a http
-request will generally need to buffer it all in memory anyway. But, for
-eg external special remotes, the content is going to be written to a file
-anyway, so there's no point in buffering the content in memory first.
-
-So, need something like:
-
-	prefersFileContent :: Storer -> Bool
-
-And then when storeChunks is given such a Storer, it can then avoid buffering
-and write chunk data to a temp file to pass it to the Storer.
-
---[[Joey]]
diff --git a/doc/todo/use_git-mktree_rather_than_index_file.mdwn b/doc/todo/use_git-mktree_rather_than_index_file.mdwn
deleted file mode 100644
--- a/doc/todo/use_git-mktree_rather_than_index_file.mdwn
+++ /dev/null
@@ -1,29 +0,0 @@
-When git-annex is updating the git-annex branch, it currently
-uses a separate index file. This adds overhead and complexity to the code.
-Especially when there are many files, the index file gets large and writing
-it gets slow.
-
-It might be an improvement to use `git mktree --batch` to inject a
-tree object into git, without using the index file. `git hash-object`
-is already used to add the files to git. All that would be needed is to
-generate an updated tree containing the new file(s), and then update each
-parent tree up to the root tree. This new tree can then be committed using
-`git commit-tree`
-
-The only thing I can see that might make this slow at all is reading the old
-tree contents, in order to update it. This would need a `git ls-tree` for
-each tree; it does not have a batch mode, so 4 processes would need to be
-spawned when generating a tree that changes 1 file. For any repo that's not
-very small, that's probably still faster than rewriting the index file.
-
-Notes:
-
-* The union merge code currently uses the index. No particular reason
-  it needs to; that's just how the code is written, and it might be a large
-  rewrite to change it.
-* A new git-annex branch can be pushed into the repository at any time.
-  The current code uses the index to detect when this happens, and
-  union merges the new branch head into the index. Would need something
-  like a `GIT_ANNEX_HEAD` ref to do the same if the index is removed.
-
-Thanks to sm for indirectly suggesting this. --[[Joey]] 
diff --git a/doc/todo/use_inode_cache_in_unlocked_files.mdwn b/doc/todo/use_inode_cache_in_unlocked_files.mdwn
deleted file mode 100644
--- a/doc/todo/use_inode_cache_in_unlocked_files.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-When using git annex unlock, followed by git annex add, it currently
-checksums files, even if the file has not changed.
-
-Direct mode has a better approach for this: The inode cache can pretty
-reliably detect if a file has been modified. So, `unlock` could note
-a file's inode cache info, and then `add` could check if a file's inode
-cache is unchanged, and rather than re-checksum it, just perform a fast 
-`lock`.
-
-Question: How would `add` know what key's inode cache to look at? Seems it
-would need to either check the git branch (as direct mode does, but this is
-rather slow and would slow down `add` in the more common case of adding
-lots of new files), or use a yet-unimplemented [[design/caching_database]].
-Or, the inode cache could be stored in a map with the work tree filename,
-but that diverges from how direct mode uses inode caches.
-
-Observation: Using the inode cache info to detect changes is not perfect;
-if a file is modified without changing its size or mtime, the inode cache
-won't be able to tell it's changed. This is unlikely, but possible. In
-direct mode, the worst that can happen in this case is probably that a
-modified file doesn't get added and committed. But, using the inode cache
-for unlocked files would result in any such modified versions being thrown
-away when the file is added, which is much more data lossy..
-
-> This bug was regarding v5 unlock/lock. In v6 mode, locking a
-> file doesn't need to rechecksum it; the key is pulled out of the
-> associated files database, and the inode cache is used to detect if the
-> unlocked file has been modified and so avoid data loss.
-> 
-> So, this is [[done]] but only for v6 mode. I don't think I want to
-> backport it to v5 mode though; it fell out naturally as a consequence of
-> v6 mode, but to support it in v5 mode would be a lot more work.
-> --[[Joey]]
diff --git a/doc/todo/using_file_metadata_for_preferred___40__wanted__41___content.mdwn b/doc/todo/using_file_metadata_for_preferred___40__wanted__41___content.mdwn
deleted file mode 100644
--- a/doc/todo/using_file_metadata_for_preferred___40__wanted__41___content.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Having the option of choosing for every file if we want it in our repository or not would be a great feature. It is currently possible using the wanted expression, but it is not very flexible, or it becomes unmaintainable.
-
-I tried with two repositories a and b, with the following wanted expressions :
-
-* for a: `not metadata=unwanted=<uuid-of-a>`
-* for b: `not metadata=unwanted=<uuid-of-b>`
-
-I think those expressions should be included in standard wanted expressions.
-
-Also, to improbe the feature, it should be possible to set (or remove) metadata in directories, and those should automatically affect their content.
-
-And we could imagine a `git annex unwant` command that would add the unwanted metadata to a file, copy it to other repositories, and attempt to drop it.
diff --git a/doc/todo/webapp__58___show_times_of_events.mdwn b/doc/todo/webapp__58___show_times_of_events.mdwn
deleted file mode 100644
--- a/doc/todo/webapp__58___show_times_of_events.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-In the webapp 'dashboard' page there is a column of 'message boxes' on the right hand side that appear as events occur.
-
-I would find it helpful to be able to hover over a message box and have a timestamp appear so that I know whether the event is a recent one that I might need to go look in the log for more detail about, or that I can click on the 'X' to dismiss the message.
-
-A further improvement that occurred to me is adding a link within the message box (link text something like "view log entry") that takes you to the corresponding part of the 'view log' page.
diff --git a/doc/todo/webapp_nudge_when_less_than_numcopies_clones.mdwn b/doc/todo/webapp_nudge_when_less_than_numcopies_clones.mdwn
deleted file mode 100644
--- a/doc/todo/webapp_nudge_when_less_than_numcopies_clones.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-Currently, nothing stops a user from setting up ~/annex, adding some special remote, and never once ending up with a clone of their repository, so there is really no backup of the repository as a whole, despite the special remotes.
-
-Potentially adding to the confusion, they might have remotes in repository groups "full backup" or "backup", and so think everything is backed up.
-
-Webapp could count the number of known remote uuids that are not special remotes, and require there to be at least numcopies of them (excluding the current repo I suppose), and pop up a nudge with a button that presents the various available ways to make a non-special remote.
-
-Working out if a remote uuid is a special remote is probably the hard bit. A special remote will be listed in uuid.log, with a type other than gcrypt or git. Any other uuid, that is not dead, can count as 1 clone. This does not handle git remotes that are not using git-annex (eg github), so it could also look through the git remote list and count any that don't have an annex-uuid.
diff --git a/doc/todo/whishlist__58___temporary_relinking_to_remotes.mdwn b/doc/todo/whishlist__58___temporary_relinking_to_remotes.mdwn
deleted file mode 100644
--- a/doc/todo/whishlist__58___temporary_relinking_to_remotes.mdwn
+++ /dev/null
@@ -1,30 +0,0 @@
-Imagine the following situation:  
-You have a directory structure like this:
-
-`./`  
-`+--dir1`  
-`|+--file1 (local)`  
-`|+--file2 (remote1)`  
-`|+--file3 (remote2)`
-
-Now when these files are quite big and you need them in one directory temporarily you would need to use `git annex get dir1` to copy them all over to local. This can take some time.
-
-I whish we had a command like this:  
-`git annex getlinks dir1`  
-where git annex would try to not link to the missing local objects but to the remote ones. So there is no need to copy the data around just to use it for a short time. After you are done you could use `git annex resetlinks dir1` to reset the links to the local objects.
-
-I know that many specialremotes will not support this without much hassle, but it would be cool to be able to get atleast the links from external drives and maybe ssh remotes via sshfs.
-To keep the data consistent there can be a constraint that every action (add, sync, commit or others) first issue a `resetlinks`.
-
-What do you think of that?
-
-> Already implemented via the `annex.hardlink` configuration.
-> 
-> I don't think that separate commands/options to control whether or not
-> to hard link makes sense, because a repository containing hardlinks
-> needs to be set as untrusted to avoid breaking numcopies counting.
-> Which is done automatically by git-annex when it detects the repository
-> was cloned with `git clone --shared`.
-> 
-> [[done]]
-> --[[Joey]]
diff --git a/doc/todo/windows_support.mdwn b/doc/todo/windows_support.mdwn
deleted file mode 100644
--- a/doc/todo/windows_support.mdwn
+++ /dev/null
@@ -1,129 +0,0 @@
-The git-annex Windows port is beta, but rapidly becoming polished and
-usable!
-
-## do we need this port anymore?
-
-See <http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.html>
-
-If windows has transparent support for running linux executables, and those
-executables can access files in "." which are on the windows system, then
-you could just use this to run linux git-annex on windows. No port needed.
-
-That would be great!
-
-Seems like this would need Windows 10.
-
-## status
-
-* There can be problems when the git-annex repository is in a deep
-  or long path. Ie, `C:\loooooooooooooooooongdir\`.
-  [Details here](http://git-annex.branchable.com/bugs/__34__git-annex:_direct:_1_failed__34___on_Windows)
-  Workaround: Put your git-annex repo in `C:\annex` or some similar short
-  path if possible.
-
-* XMPP library not yet built. (See below.)
-
-* Local pairing seems to fail, after acking on Linux box, it stalls.
-  (Also, of course, the Windows box is unlikely to have a ssh server,
-  so only pairing with a !Windows box will work.)
-
-* gcrypt is not ported to windows (and as a shell script, may need
-  to be rewritten)
-
-* Incremental fsck sets the sticky bit to record when a file is fscked,
-  and this is not done on windows, so fsck doesn't behave incrementally
-  there.
-
-* Deleting a git repository from inside the webapp fails "RemoveDirectory
-  permision denied ... file is being used by another process"
-
-## potential encoding problems
-
-[[bugs/Unicode_file_names_ignored_on_Windows]] is fixed, but some potential
-problems remain, since the FileSystemEncoding that git-annex relies on
-seems unreliable/broken on Windows.
-
-* When git-annex displays a filename that it's acting on, there
-  can be mojibake on Windows. For example, "háčky.txt" displays
-  the accented characters as instead the pairs of bytes making
-  up the utf-8. Tried doing various things to the stdout handle
-  to avoid this, but only ended up with encoding crashes, or worse
-  mojibake than this.
-
-* `md5FilePath` still uses the filesystem encoding, and so may produce the
-  wrong value on Windows. This would impact keys that contain problem characters
-  (probably coming from the filename extension), and might cause
-  interoperability problems when git-annex generates the hash directories of a
-  remote, for example a rsync remote.
-
-* `encodeW8` is used in Git.UnionMerge, and while I fixed the other calls to
-  encodeW8, which all involved ByteStrings reading from git and so can just
-  treat it as utf-8 on Windows (via `decodeBS`), in the union merge case,
-  the ByteString has no defined encoding. It may have been written on Unix
-  and contain keys with invalid unicode in them. On windows, the union
-  merge code should probably check if it's valid utf-8, and if not,
-  abort the merge.
-
-* If interoperating with a git-annex repository from a unix system, it's
-  possible for a key to contain some invalid utf-8, which means its filename
-  cannot even be represented on Windows, so who knows what will happen in that
-  case -- probably it will fail in some way when adding the object file
-  to the Windows repo. 
-
-* If data from the git repo does not have a unicode encoding, it will be
-  mangled in various places on Windows, which can lead to undefined behavior.
-
-## minor problems
-
-* webapp lets user choose to encrypt repo, and generate gpg key,
-  before checking that gcrypt is not installed
-* Ssh connection caching does not work on Windows, so `git annex get`
-  has to connect twice to the remote system over ssh per file, which
-  is much slower than on systems supporting connection caching.
-* glacier-cli is not easily available (probably)
-
-## stuff needing testing
-
-* test that adding a repo on a removable drive works; that git is synced to
-  it and files can be transferred to it and back
-* Does stopping in progress transfers work in the webapp?
-
-## trying to build XMPP
-
-Lots of library deps:
-
-1. gsasl-$LATEST.zip from <http://josefsson.org/gnutls4win/> (includes
-   gnuidn and gnutls)
-2. pkg-config from
-   <http://sourceforge.net/projects/pkgconfiglite/files/latest/download?source=files>
-3. libxml2 from mingw:
-   <http://sourceforge.net/projects/mingw/files/MSYS/Extension/libxml2/libxml2-2.7.6-1/>
-   both the -dll and the -dev
-3. Extract all the above into the Haskell platform's mingw directory. Note
-   that pkg-config needs to be moved out of a named subdirectory.
-4. Run in DOS prompt (not cygwin!): cabal install network-protocol-xmpp
-
-Current FAIL:
-
-<pre>
-Loading package gnutls-0.1.5 ... ghc.exe: internal error: Misaligned section: 18206e5b
-    (GHC version 7.6.3 for i386_unknown_mingw32)
-        Please report this as a GHC bug:
-	http://www.haskell.org/ghc/reportabug
-</pre>
-
-<https://ghc.haskell.org/trac/ghc/ticket/8830>
-
-Note: This only happens in the TH link stage. So building w/o the webapp
-works with XMPP.
-
-Options:
-
-1. Use EvilSplicer, building first without XMPP library, but with its UI,
-   and a second time without TH, but with the XMPP library. Partially done
-   on the `winsplicehack` branch, but requires building patched versions
-   of lots of yesod dependency chain to export modules referenced by TH
-   splices, like had to be done on Android. Horrible pain. Ugly as hell.
-2. Make a helper program with the XMPP support in it, that does not use TH.
-3. Swich to a different XMPP client library, like
-   <http://hackage.haskell.org/package/pontarius-xmpp>
diff --git a/doc/todo/windows_support/comment_1_3cc26ad8101a22e95a8c60cf0c4dedcc._comment b/doc/todo/windows_support/comment_1_3cc26ad8101a22e95a8c60cf0c4dedcc._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_1_3cc26ad8101a22e95a8c60cf0c4dedcc._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkRITTYYsN0TFKN7G5sZ6BWGZOTQ88Pz4s"
- nickname="Zoltán"
- subject="cygwin"
- date="2012-05-15T00:14:08Z"
- content="""
-What about [Cygwin](http://cygwin.com/)? It emulates POSIX fairly well under Windows (including signals, forking, fs (also things like /dev/null, /proc), unix file permissions), has all standard gnu utilities. It also emulates symlinks, but they are unfortunately incompatible with NTFS symlinks introduced in Vista [due to some stupid restrictions on Windows](http://cygwin.com/ml/cygwin/2009-10/msg00756.html).
-
-If git-annex could be modified to not require symlinks to work, the it would be a pretty neat solution (and you get a real shell, not some command.com on drugs (aka cmd.exe))
-"""]]
diff --git a/doc/todo/windows_support/comment_2_8acae818ce468967499050bbe3c532ea._comment b/doc/todo/windows_support/comment_2_8acae818ce468967499050bbe3c532ea._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_2_8acae818ce468967499050bbe3c532ea._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawk5cj-itfFHq_yhJHdzk3QOPp-PNW_MjPU"
- nickname="Michael"
- subject="+1 Cygwin"
- date="2012-05-23T19:30:21Z"
- content="""
-Windows support is a must. In my experience, binary file means proprietary editor, which means Windows.
-
-Unfortunately, there's not much overlap between people who use graphical editors in Windows all day vs. people who are willing to tolerate Cygwin's setup.exe, compile a Haskell program, learn git and git-annex's 90-odd subcommands, and use a mintty terminal to manage their repository, especially now that there's a sexy GitHub app for Windows.
-
-That aside, I think Windows-based content producers are still *the* audience for git-annex. First Windows support, then a GUI, then the world.
-"""]]
diff --git a/doc/todo/windows_support/comment_3_bd0a12f4c9b884ab8a06082842381a01._comment b/doc/todo/windows_support/comment_3_bd0a12f4c9b884ab8a06082842381a01._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_3_bd0a12f4c9b884ab8a06082842381a01._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="http://xolus.net/openid/max"
- nickname="B0FH"
- subject="What about NTFS support ?"
- date="2012-08-02T17:45:10Z"
- content="""
-Has git-annex been tested with an NTFS-formatted disk under Linux ? NTFS is supposed to be case-sensitive and to allow symlinks, and these are supposed to work with ntfs3g.
-"""]]
diff --git a/doc/todo/windows_support/comment_4_ad06b98b2ddac866ffee334e41fee6a8._comment b/doc/todo/windows_support/comment_4_ad06b98b2ddac866ffee334e41fee6a8._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_4_ad06b98b2ddac866ffee334e41fee6a8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlc1og3PqIGudOMkFNrCCNg66vB7s-jLpc"
- nickname="Paul"
- subject="Re: What about NTFS support?"
- date="2012-08-16T19:30:38Z"
- content="""
-I successfully use git-annex on an NTFS formatted external USB drive, so yes, it is possible and works well.
-"""]]
diff --git a/doc/todo/windows_support/comment_5_444fc7251f57db241b6e80abae41851c._comment b/doc/todo/windows_support/comment_5_444fc7251f57db241b6e80abae41851c._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_5_444fc7251f57db241b6e80abae41851c._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/dASECLNzvckz4VwqUGYsvthiplY.#d2c27"
- nickname="A. D. Sicks"
- subject="comment 5"
- date="2012-09-09T23:48:21Z"
- content="""
-Haskell has C++ binding, so it should be possible to port it to .net/Mono with a VB GUI for Windows users.  Windows has a primitive form of symlinks called shortcuts.  Perhaps shortcut support in Windows could replace the use of symlinks.  I've used shortcuts since XP to put my home Windows directory on another partition and never had a hitch...
-
-If anyone is interested in working on this, hit me up.  I would like to use this in my XP vbox to have access to files on my host OS...I have a student edition of Visual Studio 2005 to do an open source port...
-"""]]
diff --git a/doc/todo/windows_support/comment_6_34f1f60b570c389bb1e741b990064a7e._comment b/doc/todo/windows_support/comment_6_34f1f60b570c389bb1e741b990064a7e._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_6_34f1f60b570c389bb1e741b990064a7e._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnlwEMhiNYv__mEUABW4scn83yMraC3hqE"
- nickname="Sean"
- subject="NTFS symlinks"
- date="2013-01-11T21:44:21Z"
- content="""
-It seems that NTFS (from Vista forward) has full POSIX support for symlinks. At least, Wikipedia [seems to think so.](http://en.wikipedia.org/wiki/NTFS_symbolic_link). What about doing like GitHub and using MinGW for compatibility? Cygwin absolutely blows in terms of installation size and compatability with the rest of Windows.
-"""]]
diff --git a/doc/todo/windows_support/comment_7_a5ca56c487257434650420acfa60e39f._comment b/doc/todo/windows_support/comment_7_a5ca56c487257434650420acfa60e39f._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_7_a5ca56c487257434650420acfa60e39f._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlpSOjMH7Iaz56v6Pr9KCFSpbvMXvg-y9o"
- nickname="Dominik"
- subject="So close :-)"
- date="2013-06-30T12:46:40Z"
- content="""
-I was fighting my way forward until I read here that special remote with ssh+rsync and encryption doesn't work. Interestingly I got everything working so far, ssh login is keybased, gpg -k works and the remote setup also correctly cooperated with gpg... but it just didn't sync. Any ideas how complex it is to get this last missing piece moving?
-"""]]
diff --git a/doc/todo/windows_support/comment_8_61214de7d967740d42905f3823ce2f65._comment b/doc/todo/windows_support/comment_8_61214de7d967740d42905f3823ce2f65._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_8_61214de7d967740d42905f3823ce2f65._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="http://joeyh.name/"
- ip="4.154.4.193"
- subject="comment 8"
- date="2013-06-30T17:58:08Z"
- content="""
-It should be easy to fix whatever's wrong the the rsync special remote. Just a matter of debugging that.
-
-Adding encryption support on Windows is stuck at a roadblock I don't know the way around. To drive gpg, git-annex uses the `--passphrase-fd` option, and sends the \"passphrase\" (really a big block of binary foo!) over a file descriptor of a pipe that it set up.
-
-Windows, AFAIK, doesn't have file descriptors, or at least there is no equivilant to them that I have access to in the Haskell POSIX compatability layer for Windows. I am reluctant to fall back to using `--passphrase-file` on Windows, since that would be a massive security hole (as would passing the passphrase as a parameter via `--passphrase=`).
-"""]]
diff --git a/doc/todo/windows_support/comment_9_259a0b1a6f4d8d1944173380adc5e7c8._comment b/doc/todo/windows_support/comment_9_259a0b1a6f4d8d1944173380adc5e7c8._comment
deleted file mode 100644
--- a/doc/todo/windows_support/comment_9_259a0b1a6f4d8d1944173380adc5e7c8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlpSOjMH7Iaz56v6Pr9KCFSpbvMXvg-y9o"
- nickname="Dominik"
- subject="comment 9"
- date="2013-07-31T10:29:51Z"
- content="""
-The tradeoff for me is a \"local\" security hole (where I can secure my own laptop) vs. a remotely exploitable thing... If it needs to go through a file, so be it -- it would however be good if that file would be overwritten with garbage before being deleted :-)
-"""]]
diff --git a/doc/todo/wishlist__58___--all_option_for_sync.mdwn b/doc/todo/wishlist__58___--all_option_for_sync.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___--all_option_for_sync.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-I wish to preserve all history on the backup drives using standard groups and the `sync` command. Namely, if I do the following
-
-    touch test-of-annex-backup.txt
-    git annex add test-of-annex-backup.txt
-    git commit --message='test: Create empty test-of-annex-backup.txt file'
-    git annex edit test-of-annex-backup.txt
-    echo "This line creates version 2 of this file" > test-of-annex-backup.txt
-    git annex add test-of-annex-backup.txt
-    git commit --message='test: Create version 2 of test-of-annex-backup.txt'
-    git annex sync --content --all
-
-I expect to see 2 copies of `test-of-annex-backup.txt` be copied to each accessible annex repository in the `backup` [standard group](http://git-annex.branchable.com/preferred_content/standard_groups/)
-
-At present, the `backup` standard group prefers unused files, but the `sync` command cannot act on this configuration, since it lacks an `--all` option.  This is surprising to me as a user, and appears to contradict the intent of the preferred content, as evinced by the awkward explanation of why it is there in [preferred content](http://git-annex.branchable.com/preferred_content/)
-
-Please add an `--all` option to the `sync` command
-
-Thanks
-
-Andrew
-
-> Implemented; [[done]]. --[[Joey]]
diff --git a/doc/todo/wishlist__58___--dry-run_option_for_all_commands.mdwn b/doc/todo/wishlist__58___--dry-run_option_for_all_commands.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___--dry-run_option_for_all_commands.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Could a --dry-run option be added to the git annex commands? Or, at least, to the most common ones like `git annex add`.
-
-Given that there is no undo command, it would be nice to have the ability to simulate what git annex will do.
diff --git a/doc/todo/wishlist__58___--maxdepth_option_for_git_annex_find.mdwn b/doc/todo/wishlist__58___--maxdepth_option_for_git_annex_find.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___--maxdepth_option_for_git_annex_find.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-`git annex find` currently makes for a great way to find which files are already local, and don't need to get `git annex get` gotten; obviously `ls` just shows me all the files in a given directory, disregarding git-annex (and without recursing to subdirectories). I think that adding a '--maxdepth' option to `git annex find` would make it much easier to use at directories high up in the directory structure, since currently `git annex find` recurses all subdirectories necessarily, when I really just want to see whether or not there are git-annex files present from a given directory.
-
-Obviously, since directories themselves are not git-annex objects, there is no way to say whether or not they are "present", but perhaps the most intuitive would be to say whether or not any git-annex files under a given directory are present.
-
-For example, if I have:  
-./  
-+-- subdir0/  
-|  +-- file0 (present in local git-annex repo)  
-|  +-- file1 (present in local git-annex repo)  
-+-- subdir1/  
-|  +-- file0 (not present in local git-annex repo)  
-|  +-- file1 (not present in local git-annex repo)  
-+-- file2 (present in local git-annex repo)  
-
-and I type `git annex find --maxdepth 1 .`, the output might look something like:  
-subdir0/  
-file2  
-
-rather than:  
-subdir0/file0  
-subdir0/file1  
-file2  
diff --git a/doc/todo/wishlist__58___Add_--byte-limit_option.mdwn b/doc/todo/wishlist__58___Add_--byte-limit_option.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___Add_--byte-limit_option.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-This option is related to `--time-limit`, but stops after processing X 
-bytes. For example, I often need to free up a certain amount of space on 
-a disk and want `git-annex move` to stop after it has copied a specified 
-amount of data:
-
-    git annex move --to otherdisk --byte-limit 3G
-    git annex drop --auto --byte-limit 500m
-    git annex get --byte-limit 500m
-
-I've been using some `annex.diskreserve` trickery now and then to 
-accomplish this, but it's a bit cumbersome and also not a very precise 
-way to specify the amount I want to copy/move/get. The last example 
-would also be a useful command to limit the traffic when I'm connecting 
-via mobile – get as much as possible, but don't blow the mobile quota.
diff --git a/doc/todo/wishlist__58___Advanced_settings_for_xmpp_and_webdav.mdwn b/doc/todo/wishlist__58___Advanced_settings_for_xmpp_and_webdav.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___Advanced_settings_for_xmpp_and_webdav.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-It would be very nice with an "advanced settings" for jabber and webdav support.
-
-Currently XMPP fails if you use a google apps account. Since the domain provided in the email is not the same as the XMPP server.
-
-Same goes for webdav support. If i have my own webdav server somewhere on the internet there is no way to set it up in the assistant.
-
-[[!tag /design/assistant]]
diff --git a/doc/todo/wishlist__58___Freeing_X_space_on_remote_Y.mdwn b/doc/todo/wishlist__58___Freeing_X_space_on_remote_Y.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___Freeing_X_space_on_remote_Y.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-As suggested during the first Gitify BoF during DebConf13: Adding a way to have on-demand dropping of content in a given remote would allow a user to quickly free up disk space on demand while still heeding numcopies etc.
diff --git a/doc/todo/wishlist__58___Option_to_specify_max_transfer_rate.mdwn b/doc/todo/wishlist__58___Option_to_specify_max_transfer_rate.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___Option_to_specify_max_transfer_rate.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-A big part of my online use is done via a low-speed connection over my mobile phone, this is limited to 16KB/sec because I always use up my 500MB quota the very first day of the month. `;-/` So when I need to download big files, I first download them to my online server, then transfer the files to my laptop with git-annex. If I'm connected via GSM, this occupies all the bandwidth and everything else moves like a heavily sedated slug. So if I want to work via VNC or SSH, I have to terminate ongoing transfers with Ctrl-C and then hopefully remember to restart it when I work locally. I know git-annex is robust enough to handle this gracefully, but it would be really nice to have a continuous connection going on in the background, limited to a value I choose.
-
-rsync(1) has a `--bwlimit` (bandwidth limit) where you can specify max download/upload speed in kilobytes/sec. It would be great if a similar option was integrated into git-annex. Thanks in advance.
diff --git a/doc/todo/wishlist__58___Parity_files_for_encrypted_remotes.mdwn b/doc/todo/wishlist__58___Parity_files_for_encrypted_remotes.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___Parity_files_for_encrypted_remotes.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I have data that has accompanying parity files.  This is supposed to add some
-security to file integrity; however, it only works as long as the files are
-available unencrypted.  In case of encrypted special remotes the existing parity files
-won't be of any use if the encrypted versions of files get corrupted in the remote location.
-
-Would it be worthwhile for git-annex to generate its own
-parity files for the encrypted data in encrypted special remotes?
diff --git a/doc/todo/wishlist__58___Restore_s3_files_moved_to_Glacier.mdwn b/doc/todo/wishlist__58___Restore_s3_files_moved_to_Glacier.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___Restore_s3_files_moved_to_Glacier.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I would like to use the automated AWS lifecycle rules to move the git annex files store on S3 to Glacier after a bit of time. Git annex need must support this kind of S3 files explicitly in order for it to work.
-
-This is different from the adding a Glacier remote to git annex because of the reasons explained in <http://aws.typepad.com/aws/2012/11/archive-s3-to-glacier.html>.
-
-Basically, the files moved by AWS from S3 to Glacier are not available under the normal Glacier API. In fact, the moved S3 files are listed as available but under the `GLACIER` storage class and need a RESTORE request before they can be GET like other S3 files. Trying to GET an S3 file that has been moved to Glacier will not restore it from Glacier and will result in an 403 error.
-
-I suppose DELETE needs special care as well.
diff --git a/doc/todo/wishlist__58___Unix_time_in_git_annex_log.mdwn b/doc/todo/wishlist__58___Unix_time_in_git_annex_log.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___Unix_time_in_git_annex_log.mdwn
+++ /dev/null
@@ -1,15 +0,0 @@
-Could `git annex log` show the modification times using the Unix time instead of human-readable timestamps?
-
-This is an example of the output of `git annex log`:
-
-```
-+ 2014-10-27 01:00:18 ev-2014.pdf | 50083bd6-7e20-4356-a32f-a1dde07de441 -- penn
-```
-
-If the timestamp were in Unix time, it would be easier to process in a mechanical way. Unix time would also avoid having to guess what is the correct timezone for the timestamp.
-
-```
-+ 1414368018 ev-2014.pdf | 50083bd6-7e20-4356-a32f-a1dde07de441 -- penn
-```
-
-> [[done]] --[[Joey]] 
diff --git a/doc/todo/wishlist__58_____39__get__39___queue_and_schedule.mdwn b/doc/todo/wishlist__58_____39__get__39___queue_and_schedule.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58_____39__get__39___queue_and_schedule.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-During the campaign adding a chunking feature to obscure filesize for encrypted files was added to the roadmap.  But there is still one potentially valuable set* of data that git-annex can help obscure: when you access your remotes.
-
-This data can be used to determine when a user is actively using a remote, but if a remote is always accessed at the same time that data becomes less useful.  Somebody could still monitor total traffic over a long period and figure out that a remote was more active in a given week or month, but scheduling reduces the resolution of your access times and their data.  Maybe this isn't the most important feature to add, but it would be nice to have, and could possibly be built on top of the existing git-annex scheduler.  It could work by queuing inter-remote transactions ('get', 'copy', 'sync', etc.), so that jobs start at the same time every day, or even the same time and day every week.
-
-Possible syntax examples:
-###Setting up the schedule:
-git annex queue schedule Monday:1730 (starts every monday at 5:30PM)
-
-git annex queue schedule 1400 (starts every day at 2PM)
-
-###Queuing git-annex commands:
-git annex queue prepend sync (pretends 'sync' to the very front of the queue)
-
-git annex queue append get file.ISO (appends to queue file.ISO for retrieval from a repo)
-
-###Viewing/editing queue:
-git annex queue view (view the current queue, jobs displayed with corresponding numbers)
-
-git annex queue rm 20 (removes job 20 from queue)
-
-
-\*The four I can think of are:
-
-* File contents (solved by crypto)
-
-* File size (solved on the remote by chunking, but total traffic usage can't be helped)
-
-* User IP/Remote IP (solved by VPN - outside scope of git-annex, unless someone writes a plugin)
-
-* Access times (obscured by a queue and scheduling)
-
-Note, there is a [[git-annex-schedule]] command now, but it only does `fsck`.
diff --git a/doc/todo/wishlist__58_____39__whereis__39___support_in_the_webapp.mdwn b/doc/todo/wishlist__58_____39__whereis__39___support_in_the_webapp.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58_____39__whereis__39___support_in_the_webapp.mdwn
+++ /dev/null
@@ -1,4 +0,0 @@
-I've looked for this feature in the webapp but can't find it...
-
-I mainly use the webapp and have been wondering 'how many copies of file X are there' and 'where are the copies of file Y'?
-This is available in the commandline interface but it would be nice to have this in the webapp too.
diff --git a/doc/todo/wishlist__58_____96__git_annex_drop_--relaxed__96__.mdwn b/doc/todo/wishlist__58_____96__git_annex_drop_--relaxed__96__.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58_____96__git_annex_drop_--relaxed__96__.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Also suggested during the first Gitify BoF during DebConf13:
-
-`git annex drop` deletes immediately. In some situations a mechanism to tell git-annex "I would like to hold onto this data if possible, but if you need the space, please delete it" could be nice.
-
-An obvious question would be how to do cleanups. With the assistant, that's easy. On CLI, at the very least `git annex fsck` should list, and optionally delete, that data.
diff --git a/doc/todo/wishlist__58_____96__git_annex_optimize__96__.mdwn b/doc/todo/wishlist__58_____96__git_annex_optimize__96__.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58_____96__git_annex_optimize__96__.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Given [this tip](https://git-annex.branchable.com/forum/__34__git_annex_sync__34___synced_after_8_hours/#comment-890ca1381d800ac833ccbb8c5db175ea), [this comment](https://git-annex.branchable.com/todo/wishlist:_rsync_efficiency/#comment-870ae805efd35343edefdbed792dac04) and possibly others, it would be nice if git-annex could look at any given repo and make suggestions for improvements. As a second step, it could look at remotes as well. And as a third, maybe even change repo settings and not just make suggestions.
-
-Having a few old repos with terabytes of data on various disks, I would just toss this stanza into my mr templates to eventually optimize all my repos to current best practices.
-
-
--- Richard
diff --git a/doc/todo/wishlist__58_____96__git_annex_sync_-m__96__.mdwn b/doc/todo/wishlist__58_____96__git_annex_sync_-m__96__.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58_____96__git_annex_sync_-m__96__.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-Similar to how
-
-    git commit -m 'foo'
-
-works, if I run 
-
-    git annex sync -m 'my hovercraft is full of eels'
-
-git annex should use that commit message instead of the default ones. That way, I could use [[sync]] directly and not be forced to commit prior to syncing just to make sure I have a useful commit message.
-
-> [[fixed|done]] --[[Joey]]
diff --git a/doc/todo/wishlist__58_____96__git_annex_sync__96___without_auto-commit.mdwn b/doc/todo/wishlist__58_____96__git_annex_sync__96___without_auto-commit.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58_____96__git_annex_sync__96___without_auto-commit.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I would like to have way, ideally a per-repo-cloud setting which syncs around automatically, to not have `git annex sync` autocommit staged additions.
-
-I often have quite complex additions with a mix of `git add` and `git annex add` in various stages of completion; running `git annex sync` regularly to see what state the other repos are in should not autocommit if possible.
-
-Richard
-
-> [[done]]; extended the annex.autocommit that previously only controlled the
-> assistant to also control `git annex sync`. --[[Joey]]
diff --git a/doc/todo/wishlist__58___add_--symlink_option_to_import.mdwn b/doc/todo/wishlist__58___add_--symlink_option_to_import.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___add_--symlink_option_to_import.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Make 'git annex import' for each imported file leave a symlink behind. One may consider this a bit nasty as this introduces symlinks out of the annex. There are also some things careful to consider, link to the annexed symlinks or into the .git/annex/objects store? the first breaks views, the second relies on implementation details. Shall these be absolute (i'd say yes) or relative (won't harm) links etc. But after all it gives a easier migration and possibly even some new usage to manage files outside of the annex. A sister-command for 'export' comes in mind, drop a symlink anywhere. Anyways, when you feel this is a good idea, keep it, otherwise just delete this idea. Thanks ;)
-
-> Closing as I don't think this is a good idea. [[done]] --[[Joey]]
diff --git a/doc/todo/wishlist__58___add_repository_name_to_commit_messages.mdwn b/doc/todo/wishlist__58___add_repository_name_to_commit_messages.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___add_repository_name_to_commit_messages.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-The commit messages made by git-annex are quite spartan, especially in direct mode where one cannot enter its own commit messages. This means that all that the messages say is "branch created", "git-annex automatic sync", "update", "merging" or little more.
-
-It would be nice if git-annex could add at least the name of the repository/remote to the commit message. This would make the log a lot more clear, especially when dealing with problems or bugs.
-
-> The repository name is included now. Also, `git annex sync` can be passed
-> --message. [[done]] --[[Joey]]
diff --git a/doc/todo/wishlist__58___allow_custom_S3_url_in_webapp.mdwn b/doc/todo/wishlist__58___allow_custom_S3_url_in_webapp.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___allow_custom_S3_url_in_webapp.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-It is now relatively easy to build your own S3-compatible storage system with software such as Ceph radosgw or Openstack Swift.
-
-So a way for users to specify their own S3 url would come pretty handy in the webapp's "add S3 remote" page.
diff --git a/doc/todo/wishlist__58___allow_re-adding_without_generating_log_entry.mdwn b/doc/todo/wishlist__58___allow_re-adding_without_generating_log_entry.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___allow_re-adding_without_generating_log_entry.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-I keep a database file in git-annex so it stays synced across several machines. My wrapper when accessing it is basically
-
-    git annex sync --content
-    git annex unlock $database
-    [access database]
-    git annex add $database
-    git annex sync --content
-
-This works fine except it creates an entry in the log for the database file even if that stays unchanged. I would like an option that just returns to the state before `git annex unlock` if the file has not been changed. Maybe `git annex add --restore-unchanged`?
-
-> [[done]] --[[Joey]]
diff --git a/doc/todo/wishlist__58___annex.largefiles_support_for_mimetypes.mdwn b/doc/todo/wishlist__58___annex.largefiles_support_for_mimetypes.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___annex.largefiles_support_for_mimetypes.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-It would be nice to have mimetype support on the `annex.largefiles` configuration directive. F.e. `git config annex.largefiles "not mimetype=text/plain"`
-
-> [[done]]; Implemented support for mimetype=text/plain or even
-> mimetype=text/*
-> 
-> Decided not to add external command test support, at least not for now.
-> --[[Joey]]
diff --git a/doc/todo/wishlist__58___archive_from_remote_with_the_least_free_space.mdwn b/doc/todo/wishlist__58___archive_from_remote_with_the_least_free_space.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___archive_from_remote_with_the_least_free_space.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-An interesting feature, when an archived file cannot be removed from all clients because of the minimum number of copies required, would be to remove it from the repositories with the smallest amount of free space available.
diff --git a/doc/todo/wishlist__58___derived_content_support.mdwn b/doc/todo/wishlist__58___derived_content_support.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___derived_content_support.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-I handle some video and music files with git annex and it would be awesome if git annex supported tracking of relations between files.
-
-Example:
-I have music in flac on my htpc, but i think flac is way overkill to have on my Android device, so i transcode them to ogg/mp3 on my htpc and then sync them to my Android device.
-
-Transcoding is a good example for this type of feature, but there might be other uses too.
-
-The basic thing is to know a file is a "copy" of another file, but its a generated result, so the actual file is not important, but the source is.
diff --git a/doc/todo/wishlist__58___disable_automatic_commits.mdwn b/doc/todo/wishlist__58___disable_automatic_commits.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___disable_automatic_commits.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-When using the [[/assistant]] on some of my repositories, I would like to
-retain manual control over the granularity and contents of the commit
-history.  Some motivating reasons:
-
-* manually specified commit messages makes the history easier to follow
-* make a series of minor changes to a file over a period of a few hours would result in a single commit rather than capturing intermediate incomplete edits
-
-* manual choice of which files to annex (based on predicted usage) could be useful, e.g. a repo might contain a 4MB PDF which you want available in *every* remote even without `git annex get`, and also some 2MB images which are only required in some remotes
-
-> This particular case is now catered to by the ["manual" repository group](/preferred_content/standard_groups/)
-> in [[preferred content]] settings. --[[Joey]]
-
-Obviously this needs to be configurable at least per repository, and
-ideally perhaps even per remote, since usage habits can vary from machine
-to machine (e.g. I could choose to commit manually from my desktop machine
-which has a nice comfy keyboard and large screen, but this would be too
-much pain to do from my tiny netbook).
-
-In fact, this is vaguely related to [[design/assistant/partial_content]],
-since the usefulness of the commit history depends on the context of the
-data being manipulated, which in turn depends on which subdirectories are
-being touched.  So any mechanism for disabling sync per directory could
-potentially be reused for disabling auto-commit per directory.
-
-According to Joey, it should be easy to arrange for the watcher thread not
-to run, but would need some more work for the assistant to notice manual
-commits in order to sync them; however the assistant already does some
-crazy inotify watching of git refs, in order to detect incoming pushes, so
-detecting manual commits wouldn't be a stretch.
-
-[[!tag design/assistant]]
-
-> You can do this now by pausing committing via the webapp,
-> or setting `annex.autocommit=false`.
-> 
-> The assistant probably doesn't push such commits yet.
diff --git a/doc/todo/wishlist__58___display_status_of_remotes_in_the_webapp.mdwn b/doc/todo/wishlist__58___display_status_of_remotes_in_the_webapp.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___display_status_of_remotes_in_the_webapp.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-It would be nice to have an indication of the status of the remotes in the webapp, for example with a field showing "In Sync", "Syncing", or the date of the last successful synchronization for unreachable remotes.
diff --git a/doc/todo/wishlist__58___do_not_import_new_files.mdwn b/doc/todo/wishlist__58___do_not_import_new_files.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___do_not_import_new_files.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-[[!meta title="mass reinject of any known content from a directory"]]
-
-Right now `git annex import DIR/*` will import all the files in DIR, both those that are already known to git-annex and those that are new. Using the option `--skip-duplicates` one can import only new files that are in DIR but unknown to git-annex.
-
-It would be nice if there were an opposite `--only-duplicates` option that could be used to import only the files that are already known to git, ignoring the new files in DIR.
-
-PS: it would also be nice to have aliases like `--only-new-files` and `--skip-new-files` for `--skip-duplicates` and `--only-duplicates`.
diff --git a/doc/todo/wishlist__58___do_round_robin_downloading_of_data.mdwn b/doc/todo/wishlist__58___do_round_robin_downloading_of_data.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___do_round_robin_downloading_of_data.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-Given that git/config will have information on remotes and maybe costs, it might be a good idea to do a simple round robin selection of remotes to download files where the costs are the same.
-
-This of course assumes that we like the idea of "parallel" launching and running of curl/rsync processes...
-
-This wish item is probably only useful for the paranoid people who store more than 1 copy of their data.
diff --git a/doc/todo/wishlist__58___generic_annex.cost-command.mdwn b/doc/todo/wishlist__58___generic_annex.cost-command.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___generic_annex.cost-command.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-### Current setup
-
-ATM git-annex has
-
-remote.<name>.annex-cost
-remote.<name>.annex-cost-command  # command is not provided cmdline options by annex
-
-to set the cost for a given remote.  That requires setting up one of those variables per each host, and possibly hardcoding options for the annex-cost-command providing e.g. the remote name.
-
-### Suggestion
-
-wouldn't it be more general and thus more flexible to have a repository-wide
-
-annex.cost-command
-
-which could take options %remote, %file and assessed accordingly per each file upon '--get' request to allow maximal flexibility: e.g. some files might better be fetched from remotes supporting transfer compression, some from the web, etc.  Also it might be worth providing %remote_kind ("special" vs "git") to disambiguate %remote's?
-
diff --git a/doc/todo/wishlist__58___git_annex_diff.mdwn b/doc/todo/wishlist__58___git_annex_diff.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___git_annex_diff.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-git diff is not very helpful for annexed files.
-
-How about a git annex diff command that allows to compare two versions of an annexed file?
-
-Should be relatively simple, only there would have to be a way to deal with the situation where not both versions are present in the repository. Either abort with a message showing the command you need to run to get the missing version(s). Or even interactively volunteer to get it automatically, asking the user for confirmation.
-
-Of course you wouldn't want to diff two large files, but with git annex assistant, all files are annexed by default (right?), so this would be useful.
-
-There might already be a way to easily diff two versions of an annexed file which I'm missing -- in that case please point me to it! :)
-
-> [[done]]; rather than adding a `git annex diff`, I made git-annex be able to be used as a git diff driver command,
-> which in turn can run some third-party external diff driver that does
-> some smart handling of binary files.
diff --git a/doc/todo/wishlist__58___git_annex_info_._also_return_numcopies_setting.mdwn b/doc/todo/wishlist__58___git_annex_info_._also_return_numcopies_setting.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___git_annex_info_._also_return_numcopies_setting.mdwn
+++ /dev/null
@@ -1,44 +0,0 @@
-The stats produced by `git annex info .` are nice but I often find myself separately looking up the actual numcopies set value.  Can this also be included in the report please?
-
-> There is not necessarily one single numcopies setting; gitattributes
-> can configure different numcopies for different files.
-> 
-> The numcopies stats in the report are reported as plus or
-> minus relative to the numcopies setting. Using a relative number like
-> that, it can eliminate the complexity of which files have which
-> numcompies setting.
-
-<pre>
-numcopies stats: 
-	numcopies +0: 27
-	numcopies +1: 43
-	numcopies +2: 1
-</pre>
-
-> What could be added is a summary of the absolute number of copies
-> that exist of files, without taking the numcopies configuration
-> into account.
-
-<pre>
-absolute number of copies:
-	1 copy: 47
-	2 copies: 23
-	3 copies: 1
-</pre>
-
-> It turns out you can already get this display though!
-> Just use `git annex info . --numcopies=0`.
-
-<pre>
-numcopies stats: 
-	numcopies +1: 47
-	numcopies +2: 23
-	numcopies +3: 1
-</pre>
-
-> So, in this mode, it's showing the number of copies that exist of files,
-> relative to numcopies, which is forced to be 0. So, there are 47 files
-> with 1 copy, 23 with 2 copies, and 1 with 3 copies.
-> 
-> I think I've convinced myself no changes need to be made! [[done]]
-> --[[Joey]]
diff --git a/doc/todo/wishlist__58___git_annex_info_UUID.mdwn b/doc/todo/wishlist__58___git_annex_info_UUID.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___git_annex_info_UUID.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-All repos contain some level of information about all other tracked repositories.
-It would be nice if I could see that info, preferably with a timestamp telling me when the last sync happened.
-
-`git annex info UUID/name` would be suggestion.
-
-
-Thanks,
-Richard
-
-> I left out the stuff that `vicfg` displays. But otherwise
-> everything mentioned on this page is [[done]]. --[[Joey]]
diff --git a/doc/todo/wishlist__58___git_annex_info_UUID/comment_2._comment b/doc/todo/wishlist__58___git_annex_info_UUID/comment_2._comment
deleted file mode 100644
--- a/doc/todo/wishlist__58___git_annex_info_UUID/comment_2._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-One piece of information that's sometimes useful, but not always, is to get a count of keys present in another remote plus the size of the remote.
-
-Thus, I could verify that some repos are empty, archive repos have every single file, etc etc.
-
-I still think that info is best suited for `git annex info name/UUID` as it's more volatile than what `git annex vicfg` displays.
-
-
-Richard
diff --git a/doc/todo/wishlist__58___global_progress_status.mdwn b/doc/todo/wishlist__58___global_progress_status.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___global_progress_status.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-similar to [[do_not_bug_me_about_intermediate_files]] - i feel that massive `git annex get` operations should have better progress information than the current individual `rsync --progress` bits. i wonder if this couldn't be accomplished with `rsync --info=PROGRESS2`, which gives overall rsync progress, combined with copying multiple files at once with rsync (which would have the side-effect of speeding up `git annex get` for large number of small files).
-
-once this is done, it could be sent back to the webapp UI to give the user a global sense of the overall sync progress (as opposed to per-file progress). --[[anarcat]]
diff --git a/doc/todo/wishlist__58___history_of_operations.mdwn b/doc/todo/wishlist__58___history_of_operations.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___history_of_operations.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Hi,
-
-I would love to have a page of "history" or "events" in the webapp. Similar to how Dropbox or Box show it.
-I've been using git-annex for my personal files for a few months now, and I feel like this is the only feature missing to start using it in a production multi-user environment.
-
-Thanks
-
-[[!tag design/assistant]]
diff --git a/doc/todo/wishlist__58___make_git_annex_reinject_work_in_direct_mode.mdwn b/doc/todo/wishlist__58___make_git_annex_reinject_work_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___make_git_annex_reinject_work_in_direct_mode.mdwn
+++ /dev/null
@@ -1,21 +0,0 @@
-### Please describe the problem.
-
-`git annex reinject` refuses to work while in direct mode.
-
-When in direct mode git annex reinject could simply perform `rm $symlink; mv $file_copy .; git annex add $file`. I prefer having git annex doing that so I am sure I am not messing up (mistakenly adding new files for instance) and everything is properly managed.
-
-### What version of git-annex are you using? On what operating system?
-
-git-annex 4.20130516.1
-
-~~~~
-$ lsb_release -a
-No LSB modules are available.
-Distributor ID:	Ubuntu
-Description:	Ubuntu 12.04.2 LTS
-Release:	12.04
-Codename:	precise
-~~~~
-
-> [[fixed|done]]. Why did I take so long to do this, it was a trivial 1
-> word change! --[[Joey]]
diff --git a/doc/todo/wishlist__58___make_partial_files_available_during_transfer.mdwn b/doc/todo/wishlist__58___make_partial_files_available_during_transfer.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___make_partial_files_available_during_transfer.mdwn
+++ /dev/null
@@ -1,18 +0,0 @@
-Imagine this situation:
-You have a laptop and a NAS.
-On your laptop you want to consume a large media file located on the NAS.
-So you type:
-
-    git annex get --from nas mediafile
-
-But now you have to wait for the download to complete, unless either 
-
-* rsync is pointed directly to the file in the object storage ("--inplace")
-or
-* the symlink temporarily points to the partial file during a transfer
-
-which would allow you instantaneous consumption of your media.
-It might make sense to make this behavior configurable, because not everyone might agree with having partial content (that mismatches its key) around.
-
-
-So what do you say?
diff --git a/doc/todo/wishlist__58___matching_options_for_branches.mdwn b/doc/todo/wishlist__58___matching_options_for_branches.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___matching_options_for_branches.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-I have a repository layout where I have multiple unrelated branches in a single repository. Different branches have different policies regarding where their content should be replicated. It would be nice to be able to reflect this with git-annex's matching and preferred content options, but currently there seems to be no way to say "include/exclude files referred to in these branches".
diff --git a/doc/todo/wishlist__58___more_info_in_commit_messages_in_general.mdwn b/doc/todo/wishlist__58___more_info_in_commit_messages_in_general.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___more_info_in_commit_messages_in_general.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-This is probably an extension of [[wishlist: more info in the standard commit message of `sync`]]:
-
-It would also help debugging if the default commit messages listed, e.g., the name of all the files modified by that commit (or merge).
-
-> No, it would not help debugging to put redundant info in commit
-> messages. It will only make your repository take up more disk space.
-> git log --stat will already show you the files changes by
-> any commit.  [[wontfix|done]] --[[Joey]]
diff --git a/doc/todo/wishlist__58___pack_metadata_in_direct_mode.mdwn b/doc/todo/wishlist__58___pack_metadata_in_direct_mode.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___pack_metadata_in_direct_mode.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-The metadata storage for direct mode (V3) is this. In directory .git/annex/objects, there is one .map for all annexed file, and one .cache for all files in the working tree. Both are small files, containing only 1 line or a few lines. I have a repo with lots of photos, and this created lots of small files. I believe this will cause many performance issues. 
-
-It would be great if these files are packed, maybe also in the git pack files format.
-
-[[!meta tag=deprecateddirectmode]]
diff --git a/doc/todo/wishlist__58___perform_fsck_remotely.mdwn b/doc/todo/wishlist__58___perform_fsck_remotely.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___perform_fsck_remotely.mdwn
+++ /dev/null
@@ -1,39 +0,0 @@
-Currently, when `fsck`'ing a remote, files are first downloaded to a temporary 
-file locally, decrypted if needed, and finally digested; the temporary file is
-then either thrown away, or quarantined, depending on the value of that digest.
-
-Whereas this approach works with any kind of remote, in the particular case 
-where the user is granted execution rights on the digest command, one could
-avoid cluttering the network and digest the file remotely. I propose the
-addition of a per-remote git option `annex-remote-fsck` to switch between the
-two behaviors.
-
-
-There is an issue with encrypted specialremotes, though. As hinted at 
-[[here|tips/beware_of_SSD_wear_when_doing_fsck_on_large_special_remotes/#comment-70055f166f7eeca976021d24a736b471]],
-since the digest of a ciphertext can't be deduced from that of a plaintext in 
-general one would needs, before sending an encrypted file to such a remote, to
-digest it and store that digest somewhere (together with the cipher's size and
-perhaps other meta-information).
-
-The usual directory structure (`.../.../{backend}-s{size}--{digest}.log`) seems
-perfectly suitable to store these informations. Lines there would look like
-`{timestamp}s {numcopy} {UUID} {remote digest}`. Of course, it implies that
-remote digest commands are trustworthy (are doing the right thing), and that
-the digest output are not tampered by others who have access to the git repo.
-But that's outside the current threat model, I guess.
-
-Actually, since git-annex always includes a MDC in the ciphertexts, we could do
-something clever and even avoid running a digest algorithm. According to the
-[[OpenPGP standard|https://tools.ietf.org/html/rfc4880#section-5.14]] the MDC
-is essentially a SHA-1 hash of the plaintext. I'm still investigating if it's
-even possible, but in theory it would be enough (with non-chained ciphers at
-least) to download a few bytes from the encrypted remote, decrypt those bytes
-to retrieve the hash, and compare that hash with the known value. Of course
-there is a downside here, namely that files tampered anywhere but on the MDC
-packets would not be detected by `fsck` (but gpg will warn when decrypting the
-file).
-
-
-My 2 cents :-) Is there something I missed? I suppose there was a reason to 
-perform `fsck` locally at the first place...
diff --git a/doc/todo/wishlist__58___print_locations_for_files_in_rsync_remote.mdwn b/doc/todo/wishlist__58___print_locations_for_files_in_rsync_remote.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___print_locations_for_files_in_rsync_remote.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-Based on an irc conversation earlier today:
-
-19:50 < warp> joeyh: what is the best way to figure out the (remote) filename for a file stored in an rsync remote?
-
-20:43 < joeyh> warp: re your other question, probably the best thing would be to make the whereis command print out locations for each remote, as it always does for the web special remotes
-
diff --git a/doc/todo/wishlist__58___recursive_directory_remote_setup__47__addurl.mdwn b/doc/todo/wishlist__58___recursive_directory_remote_setup__47__addurl.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___recursive_directory_remote_setup__47__addurl.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-I think it would be interesting to have a way to recursively import a local directory without actually moving files around. And to be able to checksum these files as well (without moving them into the annex).
-
-This would work somewhat similar to looping over a directory and adding file:// remotes for each file.
-
-A use case is importing optical media (read-only), whilst keeping that media as a remote, and being able to calculate checksums directly without moving any files around.
-
-For single files, it would also be interesting if addurl had a "--localchecksum" option that would only work for file:// urls, and make it checksum files directly from their source location?)
diff --git a/doc/todo/wishlist__58___rsync_efficiency.mdwn b/doc/todo/wishlist__58___rsync_efficiency.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___rsync_efficiency.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-If you look at the transfer rates during a copy job to remotes, you see it going down to zero for a short time between files.
-
-While that's understandable from rsync's PoV, it's not as efficient as git-annex could be.
-
-Would parallelization be an option? Are there alternate improvements?
-
-
--- Richard
diff --git a/doc/todo/wishlist__58___special_remote_Ubuntu_One.mdwn b/doc/todo/wishlist__58___special_remote_Ubuntu_One.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___special_remote_Ubuntu_One.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Special remote support for [Ubuntu One](http://one.ubuntu.com) would be nice. They're [using propietary but open protocol](https://wiki.ubuntu.com/UbuntuOne/TechnicalDetails#ubuntuone-storageprotocol) based on [Google Protocol Buffers](http://code.google.com/p/protobuf/). There's [protobuf for Haskell](http://code.google.com/p/protobuf-haskell/) so it should be possible to compile [the protocol file](http://bazaar.launchpad.net/~ubuntuone-control-tower/ubuntuone-storage-protocol/trunk/view/head:/ubuntuone/storageprotocol/protocol.proto) to Haskell code and then use that to implement the native Ubuntu special remote.
diff --git a/doc/todo/wishlist__58___swift_backend.mdwn b/doc/todo/wishlist__58___swift_backend.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___swift_backend.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-[swift](http://swift.openstack.org/) is the object storage of Openstack. Think S3, but fully open source. As it's backed by rackspace.com, NASA, Dell and several other major players, adoption rates will explode.
-
-I can provide a test account soonish if need be, else rackspace.com if offering swift storage. Their API gateway lives at https://auth.api.rackspacecloud.com/v1.0
-
-Richard
-
-> Swift is supported by
-> <https://github.com/DanielDent/git-annex-remote-rclone>
-> 
-> While I am not opposed to adding support for swift directly to git-annex,
-> if a haskell library supporting it should appear, I think that's good
-> enough so am calling this [[done]] --[[Joey]]
diff --git a/doc/todo/wishlist__58___traffic_accounting_for_git-annex.mdwn b/doc/todo/wishlist__58___traffic_accounting_for_git-annex.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___traffic_accounting_for_git-annex.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-As git annex keeps logs about file transfers anyway, it should be relatively easy to add traffic accounting to a repo. That would allow me to monitor how much traffic a given repo generates. As I might end up hosting git-annex repos for a few personal friends, I need/want a way to track the heavy hitters. -- RichiH
-
-PS: If you ever plan to host git-annex similar branchable, this would probably be of interest to you, as well :)
diff --git a/doc/todo/wishlist__58___unify_directory_scheme_for_the_store.mdwn b/doc/todo/wishlist__58___unify_directory_scheme_for_the_store.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___unify_directory_scheme_for_the_store.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-In regular repos, objects are stored in files of the form: .git/annex/objects/xY/z1/SHA1-.../SHA1-.... (scheme 1)
-
-On (some) special remotes, the corresponding file is stored at: .../abc/def/SHA1-... (scheme 2)
-
-I'm not sure why the same scheme as in .git/objects isn't used, but it would be useful that the two-directory prefix were the same for all objects stores.
-
-My use case is: I synchronize a git repo, say containing photos, to a server on which I can't install git-annex. I want the server to store all annexed files. For the photos to be viewed online, the annex store must use the scheme 1 (because the symlinks point to files with scheme 1). So I need to rsync .git/annex/objects manually from my desktop, because a git-annex rsync remote uses scheme 2. On the other hand, the repo on this server is not known by git-annex (like it would if I used a rsync remote).
-
-At least it would be valuable (to get around above problem) to have a plumbing command giving the 2-directory prefix from a given key, for example:
-
-$ git annex prefix-dir SHA1-s2--3f786850e387550fdab836ed7e6dc881
-
-7w/88
-
-f18/122
-
-
-Even if the 2 schemes were unified, this prefix-dir command would still be useful when hacking around git-annex (for now I need to maintain a dictionary structure).
-
-Thanks a lot.
diff --git a/doc/todo/wishlist__58___use_hardlinks_for_local_clones.mdwn b/doc/todo/wishlist__58___use_hardlinks_for_local_clones.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58___use_hardlinks_for_local_clones.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-as far as I know, if you `git clone` locally a git-annex enabled repository, it will not have all the files available. you would need to use `git annex get` and all files would be copied over, wasting a significant amount of space.
-
-`git-clone` has this `--local` flags which hardlinks objects in `.git/objects`, but also, maybe more interestingly, has a `--shared` option to simply tell git to look in another repo for objects. it seems to me git-annex could leverage those functionalities to avoid file duplication when using local repositories.
-
-this would be especially useful for [ikiwiki](http://ikiwiki.info/forum/ikiwiki_and_big_files).
-
-This is a [[wishlist]], but I would also welcome implementation pointers to do this myself, thanks! --[[anarcat]]
-
-> [[dup|done]]
diff --git a/doc/todo/wishlist__58__alias_system.mdwn b/doc/todo/wishlist__58__alias_system.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist__58__alias_system.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-To implement things like my custom `git annex-push` without the dash, i.e. `git annex push`, an alias system for git-annex would be nice.
-
-> [[closing|done]] --[[Joey]]
diff --git a/doc/todo/wishlist_degraded_files.mdwn b/doc/todo/wishlist_degraded_files.mdwn
deleted file mode 100644
--- a/doc/todo/wishlist_degraded_files.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-This is an idea to have a small placeholder file that is put into
-place when the file's actual content is not available in the local
-annex.
-
-Details being discussed here: <http://bugs.debian.org/728552>
diff --git a/doc/todo/xmpp_removal.mdwn b/doc/todo/xmpp_removal.mdwn
deleted file mode 100644
--- a/doc/todo/xmpp_removal.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-I'd like to eventually remove XMPP support from git-annex. --[[Joey]] 
-
-The XMPP feature makes git-annex harder to build (needs a lot of C
-libraries), and is increasingly rarely used.
-
-For over a year, git-annex-shell has been able to notify clients when a
-change lands in a git repo on a ssh server. This notification is the main
-thing XMPP support was used for. Even users without a ssh server of their
-own don't need XMPP for this; the feature is supported by GitLab.com.
-
-The only other advantages to keeping XMPP support are:
-
-* Supports peer-to-peer git push over XMPP. Except, this hack has never
-  worked very reliably, and exposes the git repo to the XMPP server,
-  and needing an XMPP server is not a pure p2p solution anyway.
-* Friend discovery and easy sharing of git repo to friends.
-
-It would be nice if there were a pure P2P replacement for XMPP, like
-telehash. But, can't wait on that forever..
-
-XMPP support is already disabled by default in some builds of git-annex,
-notably the stack build. It's never worked on Windows.
-
-Next step is probably to default the flag to false by default,
-except for in a few builds like the Debian package and standalone builds.
diff --git a/doc/todo/xmpp_removal/comment_1_457f98a4354ad6c17dcfb5eeefb4b11e._comment b/doc/todo/xmpp_removal/comment_1_457f98a4354ad6c17dcfb5eeefb4b11e._comment
deleted file mode 100644
--- a/doc/todo/xmpp_removal/comment_1_457f98a4354ad6c17dcfb5eeefb4b11e._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="dxld@02c834b220f9ffc0410d37263aa29d9373cc455b"
- nickname="dxld"
- subject="Fully p2p alternative to XMPP"
- date="2015-10-01T17:22:44Z"
- content="""
-It looks like no one else has suggested this yet so I guess I'll have to: [Tox](https://tox.chat/)
-
-Tox is pretty easy to build on all platforms (GNU/Linux, Mac and WinDOS). All the protocol relevant bits are implemented as a single C library (libtoxcore). It supports bulk file transfers and handles all the NAT hole punching nastiness internally AFAIK.
-
-Thoughts?
-
-"""]]
diff --git a/doc/todo/xmpp_removal/comment_2_1c92cde199612bbd765c818e7b64f944._comment b/doc/todo/xmpp_removal/comment_2_1c92cde199612bbd765c818e7b64f944._comment
deleted file mode 100644
--- a/doc/todo/xmpp_removal/comment_2_1c92cde199612bbd765c818e7b64f944._comment
+++ /dev/null
@@ -1,46 +0,0 @@
-[[!comment format=mdwn
- username="Gastlag"
- subject="Is xmpp the problem ?"
- date="2015-10-30T10:42:06Z"
- content="""
-Hello, 
-
-I was wondering why assistant \"is increasingly rarely used\" ?
-if you look the different item of the survey http://git-annex-survey.branchable.com/polls/2015/, yes 53% of people said \"I use the assistant, but without XMPP\"
-
-And \"missing ports\" :
-
- - \"I'm good -- git-annex runs on my OSes of choice! (43%)\"
-   - \"Windows (13%)\"
-   - Android (6%)
-
-But if you look other anwsers you see
-
- - \"using with\" :
-   - by myself (59%)
-   - by myself so far but I hope to get others using my repository (28%)
-
-And :
-
-  - \"Pick the operating system which you use git-annex on the most.\" :
-    - \"Linux (78%)\"
-    - \"OSX (13%)\"
-
-
-Further more \"blocking problems\" :
-
-  - too hard to install (4%)
-  - too hard to use (7%)
-  - not good enough documentation (16%)
-  - The only use for the assistant would be in combination with a good, native, fully automagic Android version which includes some sort of native UI (16%)
-  - I use the command line, and **find it difficult to show others** how to use the git-annex assistant (12%)
-  - The lack of selective file sync (ie, git annex get and git annex drop) is what prevents me from using the Assistant (5%)
-
-And \"focus\" : 
-
-  -  make it easier for nontechnical users (25%) 
-
-I think remove xmpp is a bad idea because as you say it's enable \"Friend discovery and easy sharing of git repo to friends.\" and there is already a lot of people who use xmpp and XMPP address are user friendly because close to email adress. And the main problem seems to be that git-annex assistant still too hard to use and not usable on the platform where users are : windows.
-
-The main problem is that git-annex is still not ready for users. It have too reach other people than \"hardcore linux users\" to be a social tool and remove xmpp may not be the good solution.
-"""]]
diff --git a/doc/todo/xmpp_removal/comment_3_661be364029ce45db7d6a111b9d65ee7._comment b/doc/todo/xmpp_removal/comment_3_661be364029ce45db7d6a111b9d65ee7._comment
deleted file mode 100644
--- a/doc/todo/xmpp_removal/comment_3_661be364029ce45db7d6a111b9d65ee7._comment
+++ /dev/null
@@ -1,13 +0,0 @@
-[[!comment format=mdwn
- username="https://id.koumbit.net/anarcat"
- subject="re tox"
- date="2015-10-30T15:37:09Z"
- content="""
-i am not sure the proper replacement for XMPP is tox. First off, Debian privacy folks have [expressed concerns about the actual security of Tox](http://lists.alioth.debian.org/pipermail/pkg-privacy-maintainers/Week-of-Mon-20150928/000046.html), which is not a big requirement here, but nevertheless is a question worth adressing. [Pond](https://pond.imperialviolet.org/) and [Ricochet](http://ricochet.im/) are interesting alternatives that are being packaged in Debian (the latter which just entered unstable).
-
-Furthermore, it seems that XMPP is really a \"patch\", a workaround for NAT issues and, in general, how to share git-annex repositories with users in arbitrary locations. This problem space is more similar to [[todo/Bittorrent-like_features/#index1h1]] than XMPP. Using tox libraries may enable git-annex to share git metadata around, but would it allow git-annex to download actual files from other users through tox? How stable is tox? Last I checked, [tox core don't actually want to make any releases](https://github.com/irungentoo/toxcore/issues/1353), which makes it a much less attractive option because the API can change all the time...
-
-I have nevertheless added the three tools to [[todo/Bittorrent-like_features/]].
-
-Anyways, it seems that XMPP is rarely used and could be removed if it makes maintenance easier: i have never found a good use case for it, personnally: you can usually find a space for a private git repo fairly easily... the problem is sharing the big files! --[[anarcat]]
-"""]]
diff --git a/doc/transferring_data.mdwn b/doc/transferring_data.mdwn
deleted file mode 100644
--- a/doc/transferring_data.mdwn
+++ /dev/null
@@ -1,19 +0,0 @@
-git-annex can transfer data to or from any of a repository's git remotes.
-Depending on where the remote is, the data transfer is done using rsync
-(over ssh or locally), or plain cp (with copy-on-write
-optimisations on supported filesystems), or using curl (for repositories
-on the web). Some [[special_remotes]] are also supported that are not
-traditional git remotes.
-
-If a data transfer is interrupted, git-annex retains the partial transfer
-to allow it to be automatically resumed later.
-
-It's equally easy to transfer a single file to or from a repository,
-or to launch a retrieval of a massive pile of files from whatever
-repositories they are scattered amongst.
-
-git-annex automatically uses whatever remotes are currently accessible,
-preferring ones that are less expensive to talk to.
-
-[[!img repomap.png caption="A real-world repository interconnection map
-(generated by git-annex map)"]]
diff --git a/doc/trust.mdwn b/doc/trust.mdwn
deleted file mode 100644
--- a/doc/trust.mdwn
+++ /dev/null
@@ -1,62 +0,0 @@
-Git-annex supports several levels of trust of a repository:
-
-* semitrusted (default)
-* untrusted
-* trusted
-* dead
-
-## semitrusted
-
-Normally, git-annex does not fully trust its stored [[location_tracking]]
-information. When removing content, it will directly check
-that other repositories have enough [[copies]].
-
-Generally that explicit checking is a good idea. Consider that the current
-[[location_tracking]] information for a remote may not yet have propagated
-out. Or, a remote may have suffered a catastrophic loss of data, or itself
-been lost.
-
-There is still some trust involved here. A semitrusted repository is
-depended on to retain a copy of the file content; possibly the only
-[[copy|copies]].
-
-(Being semitrusted is the default. The [[git-annex semitrust|git-annex-semitrust]] command
-restores a repository to this default, when it has been overridden.
-The `--semitrust` option can temporarily restore a repository to this
-default.)
-
-## untrusted
-
-An untrusted repository is not trusted to retain data at all. Git-annex
-will retain sufficient [[copies]] of data elsewhere.
-
-This is a good choice for eg, portable drives that could get lost. Or,
-if a disk is known to be dying, you can set it to untrusted and let
-`git annex fsck` warn about data that needs to be copied off it.
-
-To configure a repository as untrusted, use the [[git-annex untrust|git-annex-untrust]]
-command.
-
-## trusted
-
-Sometimes, you may have reasons to fully trust the location tracking
-information for a repository. For example, it may be an offline
-archival drive, from which you rarely or never remove content. Deciding
-when it makes sense to trust the tracking info is up to you.
-
-One way to handle this is just to use `--force` when a command cannot
-access a remote you trust. Or to use `--trust` to specify a repository to
-trust temporarily.
-
-To configure a repository as fully and permanently trusted,
-use the [[git-annex-trust]] command.
-
-## dead
-
-This is used to indicate that you have no trust that the repository
-exists at all. It's appropriate to use when a drive has been lost,
-or a directory irretrievably deleted. It will make git-annex avoid
-even showing the repository as a place where data might still reside.
-
-To configure a repository as dead and lost, use the [[git-annex-dead]]
-command.
diff --git a/doc/trust/comment_1_305e4e7c6b75db29212b758e8504d8c9._comment b/doc/trust/comment_1_305e4e7c6b75db29212b758e8504d8c9._comment
deleted file mode 100644
--- a/doc/trust/comment_1_305e4e7c6b75db29212b758e8504d8c9._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawlJl0OCe6AJEnIFIcg-t5Rhk-lI_Y-tWUs"
- nickname="Michael"
- subject="default trust for hosts"
- date="2015-05-01T21:41:05Z"
- content="""
-Is it possible to set a default trust per host (e.g. in `~/.gitconfig`)?
-
-I have one server that does its own backups, and a client that I'd like to keep thin across multiple repositories.
-"""]]
diff --git a/doc/trust/comment_2_2262eaa830306d3dc75999bc0433b6a8._comment b/doc/trust/comment_2_2262eaa830306d3dc75999bc0433b6a8._comment
deleted file mode 100644
--- a/doc/trust/comment_2_2262eaa830306d3dc75999bc0433b6a8._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2015-05-05T18:07:02Z"
- content="""
-You can use `remote.<name>.annex-trustlevel` as documented in the git-annex
-man page.
-"""]]
diff --git a/doc/tuning.mdwn b/doc/tuning.mdwn
deleted file mode 100644
--- a/doc/tuning.mdwn
+++ /dev/null
@@ -1,47 +0,0 @@
-git-annex now has experimental support for tuning a repository for
-different work loads. 
-
-For example, a repository with a very large number of files in it may work
-better if git-annex uses some nonstandard hash format, for either the
-`.git/annex/objects/` directory, or for the log files in the git-annex
-branch.
-
-A repository can currently only be tuned when it is first created; this is
-done by passing `-c name=value` parameters to `git annex init`.
-
-For example, this will make git-annex use only 1 level for hash directories
-in `.git/annex/objects`:
-
-	git -c annex.tune.objecthash1=true annex init
-
-It's very important to keep in mind that this makes a nonstandard format
-git-annex repository. In general, this cannot safely be used with
-git-annex older than version 5.20150128. Older version of git-annex will
-not understand and will get confused and perhaps do bad things.
-
-Also, it's not safe to merge two separate git repositories that have been
-tuned differently (or one tuned and the other one not). git-annex will
-prevent merging their git-annex branches together, but it cannot prevent
-`git merge remote/master` merging two branches, and the result will be ugly
-at best (`git annex fix` can fix up the mess somewhat).
-
-Again, tuned repositories are an experimental feature; use with caution!
-
-The following tuning parameters are available:
-
-* `annex.tune.objecthash1=true`  
-  Use just one level of hash directories in `.git/annex/objects/`,
-  instead of the default two levels.
-
-* `annex.tune.objecthashlower=true`  
-  Make the hash directories in `.git/annex/objects/` use
-  all lower-case, instead of the default mixed-case.
-
-* `annex.tune.branchhash1=true`  
-  Use just one level of hash directories in the git-annex branch,
-  instead of the default two levels.
-
-Note that git-annex will automatically propagate these settings to
-`.git/config` for tuned repositories. You should never directly change
-these settings in `.git/config`, and should never set them in global
-gitconfig.
diff --git a/doc/tuning/comment_1_f8af8e9b696d32d238ebd56a3b8058c4._comment b/doc/tuning/comment_1_f8af8e9b696d32d238ebd56a3b8058c4._comment
deleted file mode 100644
--- a/doc/tuning/comment_1_f8af8e9b696d32d238ebd56a3b8058c4._comment
+++ /dev/null
@@ -1,17 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawnx8kHW66N3BqmkVpgtXDlYMvr8TJ5VvfY"
- nickname="Yaroslav"
- subject="annex.tune.objecthashlower=true is not just &quot;lower&quot; letters used but a different strategy altogether"
- date="2015-02-01T02:58:26Z"
- content="""
-it starts to use 2 levels (even if annex.tune.objecthash1=true) of hash directories having 3 characters in the filename at each level.  So it is not just \"taken existing hash directories (1 or 2 levels) and use their lower-case version.  It is a different way to create the hash directories:
-
-e.g.  one with objecthas1=true
-
-1 -> .git/annex/objects/qj/SHA256E-s6--ecdc5536f73bdae8816f0ea40726ef5e9b810d914493075903bb90623d97b1d8/SHA256E-s6--ecdc5536f73bdae8816f0ea40726ef5e9b810d914493075903bb90623d97b1d8
-
-and if I provide all three options at once:
-
-1 -> .git/annex/objects/ccf/a40/SHA256E-s6--ecdc5536f73bdae8816f0ea40726ef5e9b810d914493075903bb90623d97b1d8/SHA256E-s6--ecdc5536f73bdae8816f0ea40726ef5e9b810d914493075903bb90623d97b1d8
-
-"""]]
diff --git a/doc/tuning/comment_2_a0091dbb39b79dfe101d05f9a5db216f._comment b/doc/tuning/comment_2_a0091dbb39b79dfe101d05f9a5db216f._comment
deleted file mode 100644
--- a/doc/tuning/comment_2_a0091dbb39b79dfe101d05f9a5db216f._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="joey"
- subject="""comment 2"""
- date="2015-02-04T17:09:41Z"
- content="""
-Right, it's not simply lower-casing but a different hash strategy
-as described in [[internals/hashing]].
-
-Combining annex.tune.objecthashlower and annex.tune.objecthash1 will
-result in one level of hash directories. If you get two levels then
-you probabaly typoed "objecthas1" ...
-"""]]
diff --git a/doc/upgrades.mdwn b/doc/upgrades.mdwn
deleted file mode 100644
--- a/doc/upgrades.mdwn
+++ /dev/null
@@ -1,166 +0,0 @@
-[[!toc levels=3]]
-
-# Software upgrades
-
-Upgrading the code base of git-annex will be done differently depending on
-your [[install]] method. For most distribution-based packages, it is
-handled by the package management software.
-
-For the standalone distribution, the [[git-annex-webapp]](1) will ask the
-user for confirmation when it detects a new version. Once that is
-confirmed, or if `annex.autoupgrade` is enabled (see the [[git-annex]](1)
-manpage) the assistant will start the upgrade. The upgrade process is
-fairly simple: the assistant will move the `git-annex.linux` directory out
-of the way and replace it with the new version, then re-execute itself. It
-therefore needs write access to the parent directory of the
-`git-annex.linux` directory.
-
-Note that "upgrading" from a distribution-based package to the
-[[install/Linux_standalone/]] version may cause weird problems, as an
-unexpected version of git-annex (e.g. the old one from packages) may be
-ran, see [[bugs/git-annex-shell_doesn__39__t_work_as_expected/]] for a full
-discussion.
-
-# Repository upgrades
-
-Occasionally improvements are made to how git-annex stores its data,
-that require an upgrade process to convert repositories made with an older
-version to be used by a newer version. It's annoying, it should happen
-rarely, but sometimes, it's worth it.
-
-There's a commitment that git-annex will always support upgrades from all
-past versions. After all, you may have offline drives from an earlier
-git-annex, and might want to use them with a newer git-annex.
-
-git-annex will notice if it is run in a repository that
-needs an upgrade, and refuse to do anything. To upgrade,
-use the "git annex upgrade" command.
-
-The upgrade process is guaranteed to be conflict-free. Unless you
-already have git conflicts in your repository or between repositories.
-Upgrading a repository with conflicts is not recommended; resolve the
-conflicts first before upgrading git-annex.
-
-The upgrade events, so far:
-
-## v5 -> v6 (git-annex version 6.x)
-
-The upgrade from v5 to v6 is handled manually for now.
-Run `git-annex upgrade` to perform the upgrade.
-
-A v6 git-annex repository can have some files locked while other files are
-unlocked, and all git and git-annex commands can be used on both locked and
-unlocked files. (Although for locked files to be accessible, the filesystem
-must support symbolic links..
-
-Direct mode repositories are upgraded to instead use the new 
-[[adjusted branches feature|git-annex-adjust]], which transparently unlocks
-all locked files in the local repository.
-
-The behavior of some commands changes in an upgraded repository:
-
-* `git add` will add files to the annex, rather than adding them directly
-   to the git repository. To cause some files to be added directly
-   to git, you can configure `annex.largefiles`. For example:
-
-   	git config annex.largefiles "largerthan=100kb and not (include=*.c or include=*.h)"
-
-* `git annex unlock` and `git annex lock` change how the pointer to 
-  the annexed content is stored in git.
-
-There is also a new `annex.thin` setting, which makes unlocked files in v6
-repositories be hard linked to their content, instead of a copy. This saves
-disk space but means any modification of an unlocked file will lose the
-local (and possibly only) copy of the old version. This is automatically
-enabled when upgrading a direct mode repository, since direct mode made the
-same tradeoff.
-
-See [[tips/unlocked_files/]] for more details about locked files and thin
-mode.
-
-## v4 -> v5 (git-annex version 5.x)
-
-The upgrade from v4 to v5 is handled
-automatically, and only affects [[direct mode]] repositories.
-
-This upgrade involves changing direct mode repositories to operate with
-core.bare=true.
-
-## v3 -> v4 (git-annex version 4.x)
-
-v4 was only used for [[direct_mode]], to ensure that a version of git-annex
-that understands direct mode was used with a direct mode repository. 
-
-## v2 -> v3 (git-annex version 3.x)
-
-Involved moving the .git-annex/ directory into a separate git-annex branch.
-
-After this upgrade, you should make sure you include the git-annex branch
-when git pushing and pulling.
-
-### tips for this upgrade
-
-This upgrade is easier (and faster!) than the previous upgrades.
-You don't need to upgrade every repository at once; it's sufficient
-to upgrade each repository only when you next use it.
-	
-Example upgrade process:
-
-	cd localrepo
-	git pull
-	git annex upgrade
-	git commit -m "upgrade v2 to v3"
-	git gc
-
-## v1 -> v2 (git-annex version 0.20110316)
-
-Involved adding hashing to .git/annex/ and changing the names of all keys.
-Symlinks changed.
-
-Also, hashing was added to location log files in .git-annex/.
-And .gitattributes needed to have another line added to it.
-
-Previously, files added to the SHA [[backends]] did not have their file
-size tracked, while files added to the WORM backend did. Files added to
-the SHA backends after the conversion will have their file size tracked,
-and that information will be used by git-annex for disk free space checking.
-To ensure that information is available for all your annexed files, see
-[[upgrades/SHA_size]].
-
-### tips for this upgrade
-
-This upgrade can tend to take a while, if you have a lot of files.
-
-Each clone of a repository should be individually upgraded.
-Until a repository's remotes have been upgraded, git-annex
-will refuse to communicate with them.
-
-Start by upgrading one repository, and then you can commit
-the changes git-annex staged during upgrade, and push them out to other
-repositories. And then upgrade those other repositories. Doing it this
-way avoids git-annex doing some duplicate work during the upgrade.
-
-Example upgrade process:
-
-	cd localrepo
-	git pull
-	git annex upgrade
-	git commit -m "upgrade v1 to v2"
-	git push
-
-	ssh remote
-	cd remoterepo
-	git pull
-	git annex upgrade
-	...
-
-## v0 -> v1 (git-annex version 0.04)
-
-Involved a reorganisation of the layout of .git/annex/. Symlinks changed.
-
-Handled more or less transparently, although git-annex was just 2 weeks
-old at the time, and had few users other than Joey.
-
-Before doing this upgrade, set annex.version:
-
-	git config annex.version 0
diff --git a/doc/upgrades/SHA_size.mdwn b/doc/upgrades/SHA_size.mdwn
deleted file mode 100644
--- a/doc/upgrades/SHA_size.mdwn
+++ /dev/null
@@ -1,20 +0,0 @@
-Before version 2 of the git-annex repository, files added to the SHA
-[[backends]] did not have their file size tracked, while files added to the
-WORM backend did. The file size information is used for disk free space
-checking.
-
-Files added to the SHA backends after the conversion will have their file
-size tracked automatically. This disk free space checking is an optional
-feature and since you're more likely to be using more recently added files,
-you're unlikely to see any bad effect if you do nothing.
-
-That said, if you have old files added to SHA backends that lack file size
-tracking info, here's how you can add that info. After [[upgrading|upgrades]]
-to repository version 2, in each repository run:
-
-	git annex migrate
-	git commit -m 'migrated keys for v2'
-
-The usual caveats about [[tips/migrating_data_to_a_new_backend]]
-apply; you will end up with unused keys that you can later clean up with
-`git annex unused`.
diff --git a/doc/upgrades/SHA_size/comment_1_20f9b7b75786075de666b2146dc13a60._comment b/doc/upgrades/SHA_size/comment_1_20f9b7b75786075de666b2146dc13a60._comment
deleted file mode 100644
--- a/doc/upgrades/SHA_size/comment_1_20f9b7b75786075de666b2146dc13a60._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawkjvjLHW9Omza7x1VEzIFQ8Z5honhRB90I"
- nickname="Asheesh"
- subject="The fact that the keys changed causes merge conflicts"
- date="2012-06-25T00:28:59Z"
- content="""
-FYI, I have run into a problem where if you 'git annex sync' between various 'git annex v3' repositories, if the different repositories are using different encodings of the SHA1 information (one including size, one not), then the 'git merge' will declare that they conflict.
-
-There's no indication that 'git annex migrate' is the right tool to run, except from perusing the 'git annex' man page. In my opinion this is a major user interface problem.
-
--- Asheesh.
-"""]]
diff --git a/doc/upgrades/gcrypt.mdwn b/doc/upgrades/gcrypt.mdwn
deleted file mode 100644
--- a/doc/upgrades/gcrypt.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-Unfortunately the initial gcrypt repository layout had to be changed
-after git-annex version 4.20130920. If you have an encrypted git repository
-created using version 4.20130920 or 4.20130909, you need to manually
-upgrade it.
-
-If you look at the contents of your gcrypt repository, you will
-see a bare git repository, with a few three-letter subdirectories,
-which are where git-annex stores its encrypted file contents:
-
-<pre>
-27f/  branches/  description  hooks/  objects/
-HEAD  config     f37/         info/   refs/
-</pre>
-
-In the example above, the subdirectories are `27f` and `f37`.
-
-All you need to do to transition is move those subdirectories
-into an `annex/objects` directory.
-
-	mkdir annex ; mkdir annex/objects ; mv 27f f37 annex/objects
-
-Probably those are the only 3 letter things inside your git repository,
-so this will probably work:
-
-	mkdir annex ; mkdir annex/objects ; mv ??? annex/objects
diff --git a/doc/upgrades/gcrypt/comment_1_606c1527735996ae671f78948e4ad84b._comment b/doc/upgrades/gcrypt/comment_1_606c1527735996ae671f78948e4ad84b._comment
deleted file mode 100644
--- a/doc/upgrades/gcrypt/comment_1_606c1527735996ae671f78948e4ad84b._comment
+++ /dev/null
@@ -1,8 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawmj3kEGlCiy_Y-wb6AIBBnJ0B_SiPHV5Bo"
- nickname="Thomas"
- subject="small omission"
- date="2013-09-25T04:59:03Z"
- content="""
-In your second example, `mv ??? annex` has to be `mv ??? annex/objects`, I think.
-"""]]
diff --git a/doc/upgrades/insecure_embedded_creds.mdwn b/doc/upgrades/insecure_embedded_creds.mdwn
deleted file mode 100644
--- a/doc/upgrades/insecure_embedded_creds.mdwn
+++ /dev/null
@@ -1,42 +0,0 @@
-git-annex had a bug in the S3 and Glacier remotes where if embedcreds=yes
-was set, and the remote used encryption=pubkey or encryption=hybrid,
-the embedded AWS credentials were stored in the git repository
-in (effectively) plaintext, not encrypted as they were supposed to be.
-
-That means that anyone who gets a copy of the git repository can extract the
-AWS credentials from it. Which would be bad..
-
-A remote with this problem cannot be enabled using `git annex
-enableremote`. Old versions of git-annex will fail with a gpg error;
-the current version will fail with a pointer to this web page.
-
-If your repository has this problem, chose from one of these approaches
-to deal with it:
-
-1. Change your AWS credentials, so the ones stored in the clear in git
-   won't be used. 
-   
-   After changing the credentials, make sure you have a
-   fixed version of git-annex, and you can then re-embed the new creds
-   into the repository, encrypted this time, by setting the
-   `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID` environment variables,
-   and running `git annex enableremote $remotename embedcreds=yes`
-
-2. Fix the problem and then remove the history of the git-annex branch
-   of the repository.
-
-   Make sure you have a fixed version of git-annex, and force git-annex
-   to rewrite the embedded creds, with encryption this time, by setting
-   by setting the `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID`
-   environment variables, and running `git annex enableremote $remotename embedcreds=yes`
-
-   Then, to get rid of old versions of the git-annex branch that still
-   contain the creds in cleartext, you can use `git annex forget`;
-   note that it will remove other historical data too.
-   
-   Keep in mind that this will not necessarily delete data from clones
-   you do not control.
-
-3. If you're sure that you're the only one who has access to the repository,
-   you could decide to leave it as-is. It's no more insecure than if you
-   had used encryption=shared in the first place when setting it up.
diff --git a/doc/use_case/Alice.mdwn b/doc/use_case/Alice.mdwn
deleted file mode 100644
--- a/doc/use_case/Alice.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-### use case: The Nomad
-
-Alice is always on the move, often with her trusty netbook and a small
-handheld terabyte USB drive, or a smaller USB keydrive. She has a server
-out there on the net. She stores data, encrypted in the Cloud.
-
-All these things can have different files on them, but Alice no longer
-has to deal with the tedious process of keeping them manually in sync,
-or remembering where she put a file. git-annex manages all these data
-sources as if they were git remotes.  
-<small>[[more about special remotes|special_remotes]]</small>
-
-When she has 1 bar on her cell, Alice queues up interesting files on her
-server for later. At a coffee shop, she has git-annex download them to her
-USB drive. High in the sky or in a remote cabin, she catches up on
-podcasts, videos, and games, first letting git-annex copy them from
-her USB drive to the netbook (this saves battery power).  
-<small>[[more about transferring data|transferring_data]]</small>
-
-When she's done, she tells git-annex which to keep and which to remove.
-They're all removed from her netbook to save space, and Alice knows
-that next time she syncs up to the net, her changes will be synced back 
-to her server.  
-<small>[[more about distributed version control|distributed_version_control]]</small>
diff --git a/doc/use_case/Bob.mdwn b/doc/use_case/Bob.mdwn
deleted file mode 100644
--- a/doc/use_case/Bob.mdwn
+++ /dev/null
@@ -1,25 +0,0 @@
-### use case: The Archivist
-
-Bob has many drives to archive his data, most of them 
-[[kept offline|tips/offline_archive_drives]], in a safe place.
-
-With git-annex, Bob has a single directory tree that includes all
-his files, even if their content is being stored offline. He can
-reorganize his files using that tree, committing new versions to git,
-without worry about accidentally deleting anything. 
-
-When Bob needs access to some files, git-annex can tell him which drive(s)
-they're on, and easily make them available. Indeed, every drive knows what
-is on every other drive.  
-<small>[[more about location tracking|location_tracking]]</small>
-
-Bob thinks long-term, and so he appreciates that git-annex uses a simple
-repository format. He knows his files will be accessible in the future
-even if the world has forgotten about git-annex and git.  
-<small>[[more about future-proofing|future_proofing]]</small>
-
-Run in a cron job, git-annex adds new files to archival drives at night. It
-also helps Bob keep track of intentional and unintentional copies of
-files, and logs information he can use to decide when it's time to duplicate
-the content of old drives.  
-<small>[[more about backup copies|copies]]</small>
diff --git a/doc/users.mdwn b/doc/users.mdwn
deleted file mode 100644
--- a/doc/users.mdwn
+++ /dev/null
@@ -1,9 +0,0 @@
-Users of this wiki, feel free to create a subpage of this one and talk
-about yourself on it, within reason. You can link to it to sign your
-comments.
-
-List of users
-=============
-[[!inline pages="users/* and !users/*/* and !*/Discussion" 
-feeds=no archive=yes sort=title template=titlepage
-rootpage="users" postformtext="Add yourself as an git-annex user:"]]
diff --git a/doc/users/anarcat.mdwn b/doc/users/anarcat.mdwn
deleted file mode 100644
--- a/doc/users/anarcat.mdwn
+++ /dev/null
@@ -1,55 +0,0 @@
-I use git-annex to manage huge files, mostly video and audio attached to other git repositories (such as presentations), but I also use git-annex to manage my music collection across multiple devices. I also use it to manage the `ISO` images I download, podcasts, and youtube videos.
-
-See <http://anarc.at/>.
-
-[[!toc]]
-
-My tips
-=======
-
-... or the ones I commented it, to be more precise.
-
-[[!inline pages="tips/* and and link(users/anarcat)" sort=mtime feeds=no actions=yes archive=yes show=0]]
-
-
-My todos
-========
-
-... same.
-
-[[!inline pages="todo/* and !todo/done and !link(todo/done) and
-link(users/anarcat)" sort=mtime feeds=no actions=yes archive=yes show=0]]
-
-Done
-----
-
-[[!inline pages="todo/* and !todo/done and link(todo/done) and
-link(users/anarcat)" feeds=no actions=yes archive=yes show=0]]
-
-My bugs
-=======
-
-... same.
-
-[[!inline pages="bugs/* and !bugs/done and !link(bugs/done) and
-link(users/anarcat)" sort=mtime feeds=no actions=yes archive=yes show=0  template=buglist]]
-
-Fixed
------
-
-[[!inline pages="bugs/* and !bugs/done and link(bugs/done) and
-link(users/anarcat)" feeds=no actions=yes archive=yes show=0  template=buglist]]
-
-Forum posts
-===========
-
-Forums where I posted.
-
-[[!inline pages="forum/* and link(users/anarcat)" sort=mtime feeds=no actions=yes archive=yes show=0]]
-
-Git annex dev news
-==================
-
-I find the recent changes a little too noisy, but i want more than just the [[news]], so i made up this little hybrid feed:
-
-[[!inline pages="(news/* and !news/*/* and !*/Discussion) or (devblog/* and !devblog/*/*)" feedonly="yes"]]
diff --git a/doc/users/candyangel.mdwn b/doc/users/candyangel.mdwn
deleted file mode 100644
--- a/doc/users/candyangel.mdwn
+++ /dev/null
@@ -1,10 +0,0 @@
-I hang out in #git-annex on OFTC (come and chat/ask for help).
-
-[Getting mentioned by Joey](http://git-annex.branchable.com/devblog/day_277__thanks/) is definitely a (if not **the**) highlight of my involvement in the git-annex community. That really made my month!
-
-Things that I am (or plan to) work on related to git-annex (in some way):
-* FUSE filesystem for dynamic get/drop of content
-* FUSE filesystem for metadata change/views (like tagsistant)
-* Patchset for ikiwiki which allows it to be used with perlbrew libs
-* Support for modifying git-annex metadata in my file sorting app
-* Support for git-annex in my VR environment
diff --git a/doc/users/chris.mdwn b/doc/users/chris.mdwn
deleted file mode 100644
--- a/doc/users/chris.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Visit my page <a href="http://www.cybr.eu">Cybr</a> or my private page <a href="http://www.ca84.com">ca84</a> if you like to contact me.
diff --git a/doc/users/chrysn.mdwn b/doc/users/chrysn.mdwn
deleted file mode 100644
--- a/doc/users/chrysn.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-* **name**: chrysn
-* **website**: <http://christian.amsuess.com/>
-* **uses git-annex for** managing the family's photos (and possibly videos and music in the future).
-* **likes git-annex because** it adds a layer of commit semantics over a regular file system without keeping everything in duplicate locally.
-* **would like git-annex not to** be required any more at all when
-  * git itself learns to use cow filesystems to avoid abundant disk usage, and
-  * git gets better with shallow clones.
-
-    git-annex might then still be a simpler tool that watches over what can be safely dropped from a particular shallow clone
-
-    (the issues with shallow clones seem to relate primarily to shallow history; i haven't read anything about what would happen if all commits were checked out, but not all trees and blobs)
diff --git a/doc/users/clacke.mdwn b/doc/users/clacke.mdwn
deleted file mode 100644
--- a/doc/users/clacke.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Claes Wallin (韋嘉誠)
-
-[[https://microca.st/clacke]]
diff --git a/doc/users/claes.wallin.mdwn b/doc/users/claes.wallin.mdwn
deleted file mode 100644
--- a/doc/users/claes.wallin.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-[[!meta redir=clacke]]
diff --git a/doc/users/datalad.mdwn b/doc/users/datalad.mdwn
deleted file mode 100644
--- a/doc/users/datalad.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-TODOs for DataLad
-=================
-
-[[!inline pages="todo/* and !todo/done and !link(todo/done) and
-(author(yoh) or author(mih))" sort=mtime feeds=no actions=yes archive=yes show=0]]
-
-Done
-----
-
-[[!inline pages="todo/* and !todo/done and link(todo/done) and
-(author(yoh) or author(mih))" feeds=no actions=yes archive=yes show=0]]
-
-My bugs
-=======
-
-[[!inline pages="bugs/* and !bugs/done and !link(bugs/done) and
-(author(yoh) or author(mih))" sort=mtime feeds=no actions=yes archive=yes show=0  template=buglist]]
-
-Fixed
------
-
-[[!inline pages="bugs/* and !bugs/done and link(bugs/done) and
-(author(yoh) or author(mih))" feeds=no actions=yes archive=yes show=0  template=buglist]]
diff --git a/doc/users/dave.mdwn b/doc/users/dave.mdwn
deleted file mode 100644
--- a/doc/users/dave.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-IM DAVE
diff --git a/doc/users/fmarier.mdwn b/doc/users/fmarier.mdwn
deleted file mode 100644
--- a/doc/users/fmarier.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-# François Marier
-
-Free Software and Debian Developer. Lead developer of [Libravatar](https://www.libravatar.org)
-
-* [Blog](http://feeding.cloud.geek.nz) and [homepage](http://fmarier.org)
-* [Identica](http://identi.ca/fmarier) / [Twitter](https://twitter.com/fmarier)
diff --git a/doc/users/frederik.mdwn b/doc/users/frederik.mdwn
deleted file mode 100644
--- a/doc/users/frederik.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Hi, I am Frederik Vanrenterghem. I use git annex to manage my documents (mainly to have a backup and easy access) and my collection of ripped audio CDs (mainly to be able to save space on my laptop).
diff --git a/doc/users/gebi.mdwn b/doc/users/gebi.mdwn
deleted file mode 100644
--- a/doc/users/gebi.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-Michael Gebetsroither <michael@mgeb.org>
diff --git a/doc/users/greg.mdwn b/doc/users/greg.mdwn
deleted file mode 100644
--- a/doc/users/greg.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Greg Grossmeier
-
-<http://grossmeier.net/about>
diff --git a/doc/users/james.mdwn b/doc/users/james.mdwn
deleted file mode 100644
--- a/doc/users/james.mdwn
+++ /dev/null
@@ -1,1 +0,0 @@
-hello, I am [[James Richardson|http://jamestechnotes.com/]].
diff --git a/doc/users/joey.mdwn b/doc/users/joey.mdwn
deleted file mode 100644
--- a/doc/users/joey.mdwn
+++ /dev/null
@@ -1,2 +0,0 @@
-Joey Hess <id@joeyh.name>  
-<https://joeyh.name/>
diff --git a/doc/users/mih.mdwn b/doc/users/mih.mdwn
deleted file mode 100644
--- a/doc/users/mih.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-My todos
-========
-
-[[!inline pages="todo/* and !todo/done and !link(todo/done) and
-author(mih)" sort=mtime feeds=no actions=yes archive=yes show=0]]
-
-Done
-----
-
-[[!inline pages="todo/* and !todo/done and link(todo/done) and
-author(mih)" feeds=no actions=yes archive=yes show=0]]
-
-My bugs
-=======
-
-[[!inline pages="bugs/* and !bugs/done and !link(bugs/done) and
-author(mih)" sort=mtime feeds=no actions=yes archive=yes show=0  template=buglist]]
-
-Fixed
------
-
-[[!inline pages="bugs/* and !bugs/done and link(bugs/done) and
-author(mih)" feeds=no actions=yes archive=yes show=0  template=buglist]]
diff --git a/doc/users/parhuzamos.mdwn b/doc/users/parhuzamos.mdwn
deleted file mode 100644
--- a/doc/users/parhuzamos.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-My life with git-annex
-
-Todos: 
-
-- publish git-annex scripts
-
-[[!inline pages="todo/* and !todo/done and !link(todo/done) and
-link(users/parhuzamos)" sort=mtime feeds=no actions=yes archive=yes show=0]]
diff --git a/doc/users/sameerds.mdwn b/doc/users/sameerds.mdwn
deleted file mode 100644
--- a/doc/users/sameerds.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Extremely grateful user of git-annex.
-
-[[http://sameer.sbuddhe.net/]]
diff --git a/doc/users/tobiastheviking.mdwn b/doc/users/tobiastheviking.mdwn
deleted file mode 100644
--- a/doc/users/tobiastheviking.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Tobias Ussing
-
-See:
-
-* [[tips/flickrannex]] - [[https://github.com/TobiasTheViking/flickrannex/]]
-* [[tips/imapannex]] - [[https://github.com/TobiasTheViking/imapannex]]
-* [[tips/dropboxannex]] - [[https://github.com/TobiasTheViking/dropboxannex]]
-* [[tips/skydriveannex]] - [[https://github.com/TobiasTheViking/skydriveannex]]
-* [[tips/googledriveannex]] - [[https://github.com/TobiasTheViking/googledriveannex]]
-* [[tips/owncloudannex]] - [[https://github.com/TobiasTheViking/owncloudannex]]
-* [[tips/megaannex]] - [[https://github.com/TobiasTheViking/megaannex]]
-* [[forum/nntp__47__usenet_special_remote/]]
-
diff --git a/doc/users/yoh.mdwn b/doc/users/yoh.mdwn
deleted file mode 100644
--- a/doc/users/yoh.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-My todos
-========
-
-[[!inline pages="todo/* and !todo/done and !link(todo/done) and
-author(yoh)" sort=mtime feeds=no actions=yes archive=yes show=0]]
-
-Done
-----
-
-[[!inline pages="todo/* and !todo/done and link(todo/done) and
-author(yoh)" feeds=no actions=yes archive=yes show=0]]
-
-My bugs
-=======
-
-[[!inline pages="bugs/* and !bugs/done and !link(bugs/done) and
-author(yoh)" sort=mtime feeds=no actions=yes archive=yes show=0  template=buglist]]
-
-Fixed
------
-
-[[!inline pages="bugs/* and !bugs/done and link(bugs/done) and
-author(yoh)" feeds=no actions=yes archive=yes show=0  template=buglist]]
diff --git a/doc/videos.mdwn b/doc/videos.mdwn
deleted file mode 100644
--- a/doc/videos.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-Talks and screencasts about git-annex.
-
-These videos are also available in a public git-annex repository
-`git clone https://downloads.kitenet.net/.git/`
-
-[[!inline pages="./videos/* and !./videos/*/* and !*/Discussion" show="2"]]
-
-[[!inline pages="./videos/* and !./videos/*/* and !*/Discussion" show="0" archive=yes skip=2 feeds=no]]
diff --git a/doc/videos/FOSDEM2012.mdwn b/doc/videos/FOSDEM2012.mdwn
deleted file mode 100644
--- a/doc/videos/FOSDEM2012.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-<video controls
-src="http://video.fosdem.org/2012/lightningtalks/git_annex___manage_files_with_git,_without_checking_their_contents_into_git.webm"></video><br>
-A <a href="http://video.fosdem.org/2012/lightningtalks/git_annex___manage_files_with_git,_without_checking_their_contents_into_git.webm">15 minute introduction to git-annex</a>,
-presented by Richard Hartmann at FOSDEM 2012.
-
-[[!meta date="1 Jan 2012"]]
-[[!meta title="git-annex presentation by Richard Hartmann at FOSDEM 2012"]]
diff --git a/doc/videos/LCA2013.mdwn b/doc/videos/LCA2013.mdwn
deleted file mode 100644
--- a/doc/videos/LCA2013.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-<video controls>
-<source type="video/mp4" src="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">
-<source type="video/ogg" src="http://mirror.linux.org.au/linux.conf.au/2013/ogv/gitannex.ogv">
-</video><br>
-A <a href="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">45 minute talk and demo of git-annex and the assistant</a>), presented by Joey Hess at LCA 2013.
-
-[[!meta date="1 Feb 2013"]]
-[[!meta title="git-annex presentation by Joey Hess at Linux.Conf.Au 2013"]]
diff --git a/doc/videos/git-annex_assistant_archiving.mdwn b/doc/videos/git-annex_assistant_archiving.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_assistant_archiving.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-<video controls width=400>
-<source src="https://downloads.kitenet.net/videos/git-annex/git-annex-assistant-archiving.ogv">
-</video><br>
-A <a href="https://downloads.kitenet.net/videos/git-annex/git-annex-assistant-archiving.ogv">9 minute screencast</a>
-covering archiving your files with the [[git-annex assistant|/assistant]]</a>.
diff --git a/doc/videos/git-annex_assistant_introduction.mdwn b/doc/videos/git-annex_assistant_introduction.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_assistant_introduction.mdwn
+++ /dev/null
@@ -1,5 +0,0 @@
-<video controls width=400>
-<source src="https://downloads.kitenet.net/videos/git-annex/git-annex-assistant-intro.ogv">
-</video><br>
-A <a href="https://downloads.kitenet.net/videos/git-annex/git-annex-assistant-intro.ogv">8 minute screencast</a>
-introducing the [[git-annex assistant|/assistant]]</a>.
diff --git a/doc/videos/git-annex_assistant_lan.mdwn b/doc/videos/git-annex_assistant_lan.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_assistant_lan.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-<video controls width=400>
-<source src="https://downloads.kitenet.net/videos/git-annex/git-annex-lan.webm">
-</video><br>
-A <a href="https://downloads.kitenet.net/videos/git-annex/git-annex-lan.webm">10 minute screencast</a>
-showing how to get started using the [[git-annex assistant|/assistant]],
-including sharing files on a local network, and installation on a server.
diff --git a/doc/videos/git-annex_assistant_remote_sharing.mdwn b/doc/videos/git-annex_assistant_remote_sharing.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_assistant_remote_sharing.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-<video controls width=400>
-<source src="https://downloads.kitenet.net/videos/git-annex/git-annex-xmpp-pairing.ogv">
-</video><br>
-A <a href="https://downloads.kitenet.net/videos/git-annex/git-annex-xmpp-pairing.ogv">6 minute screencast</a>
-showing how to share files between your computers in different locations,
-such as home and work.
diff --git a/doc/videos/git-annex_assistant_sync_demo.mdwn b/doc/videos/git-annex_assistant_sync_demo.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_assistant_sync_demo.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-A screencast demoing the git-annex assistant syncing between Nicaragua
-and the United Kingdom for the first time.
-
-<video controls src="http://joeyh.name/screencasts/git-annex-assistant.ogg"></video>
-
-[video](http://joeyh.name/screencasts/git-annex-assistant.ogg)
-
-[[!meta date="Thu Jul 5 16:36:06 2012 -0600"]]
diff --git a/doc/videos/git-annex_views_demo.mdwn b/doc/videos/git-annex_views_demo.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_views_demo.mdwn
+++ /dev/null
@@ -1,11 +0,0 @@
-A quick screencast demoing an experimental new feature,
-[[tips/metadata_driven_views]].
-
-<video controls src="https://downloads.kitenet.net/videos/git-annex/git-annex_views_demo.ogg"></video>
-
-[video](https://downloads.kitenet.net/videos/git-annex/git-annex_views_demo.ogg)
-
-Credits: 
-
-* RichiH for <https://github.com/RichiH/conference_proceedings>
-* Michi for keyboard cat cameo
diff --git a/doc/videos/git-annex_watch_demo.mdwn b/doc/videos/git-annex_watch_demo.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_watch_demo.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-A quick screencast demoing the `git annex watch` daemon.
-
-<video controls src="http://joeyh.name/screencasts/git-annex-watch.ogg"></video>
-
-[video](http://joeyh.name/screencasts/git-annex-watch.ogg)
-
-[[!meta date="Mon Jun 11 16:02:14 2012 -0400"]]
diff --git a/doc/videos/git-annex_weppapp_demo.mdwn b/doc/videos/git-annex_weppapp_demo.mdwn
deleted file mode 100644
--- a/doc/videos/git-annex_weppapp_demo.mdwn
+++ /dev/null
@@ -1,8 +0,0 @@
-A quick screencast demoing the early `git annex webapp` and
-automatic USB drive mount detection and syncing.
-
-<video controls src="http://joeyh.name/screencasts/git-annex-webapp.ogg"></video>
-
-[video](http://joeyh.name/screencasts/git-annex-webapp.ogg)
-
-[[!meta date="Sun Jul 29 14:41:41 2012 -0400"]]
diff --git a/doc/walkthrough.mdwn b/doc/walkthrough.mdwn
deleted file mode 100644
--- a/doc/walkthrough.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-A walkthrough of the basic features of git-annex.
-
-[[!toc]]
-
-[[!inline feeds=no trail=yes show=0 template=walkthrough pagenames="""
-	walkthrough/creating_a_repository
-	walkthrough/adding_a_remote
-	walkthrough/adding_files
-	walkthrough/renaming_files
-	walkthrough/getting_file_content
-	walkthrough/syncing
-	walkthrough/transferring_files__58___When_things_go_wrong
-	walkthrough/removing_files
-	walkthrough/removing_files__58___When_things_go_wrong
-	walkthrough/modifying_annexed_files
-	walkthrough/using_ssh_remotes
-	walkthrough/using_special_remotes
-	walkthrough/moving_file_content_between_repositories
-	walkthrough/quiet_please__58___When_git-annex_seems_to_skip_files
-	walkthrough/using_tags_and_branches
-	walkthrough/unused_data
-	walkthrough/fsck__58___verifying_your_data
-	walkthrough/fsck__58___when_things_go_wrong
-	walkthrough/backups
-	walkthrough/automatically_managing_content
-	walkthrough/more
-"""]]
diff --git a/doc/walkthrough/adding_a_remote.mdwn b/doc/walkthrough/adding_a_remote.mdwn
deleted file mode 100644
--- a/doc/walkthrough/adding_a_remote.mdwn
+++ /dev/null
@@ -1,22 +0,0 @@
-Like any other git repository, git-annex repositories have remotes.
-Let's start by adding a USB drive as a remote.
-
-	# sudo mount /media/usb
-	# cd /media/usb
-	# git clone ~/annex
-	# cd annex
-	# git annex init "portable USB drive"
-	# git remote add laptop ~/annex
-	# cd ~/annex
-	# git remote add usbdrive /media/usb/annex
-
-This is all standard ad-hoc distributed git repository setup.
-
-The only git-annex specific part is telling it a description
-of the new repository created on the USB drive. This is optional, but
-giving the repository a description helps when git-annex talks about it
-later.
-
-Notice that both repos are set up as remotes of one another. This lets
-either get annexed files from the other. You'll want to do that even
-if you are using git in a more centralized fashion.
diff --git a/doc/walkthrough/adding_files.mdwn b/doc/walkthrough/adding_files.mdwn
deleted file mode 100644
--- a/doc/walkthrough/adding_files.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-	# cd ~/annex
-	# cp /tmp/big_file .
-	# cp /tmp/debian.iso .
-	# git annex add .
-	add big_file (checksum...) ok
-	add debian.iso (checksum...) ok
-	# git commit -a -m added
-
-When you add a file to the annex and commit it, only a symlink to
-the content is committed to git. The content itself is stored in
-git-annex's backend, `.git/annex/` (or in [[direct_mode]] the file
-is left as-is).
diff --git a/doc/walkthrough/automatically_managing_content.mdwn b/doc/walkthrough/automatically_managing_content.mdwn
deleted file mode 100644
--- a/doc/walkthrough/automatically_managing_content.mdwn
+++ /dev/null
@@ -1,45 +0,0 @@
-Once you have multiple repositories, and have perhaps configured numcopies,
-any given file can have many more copies than is needed, or perhaps fewer
-than you would like. How to manage this?
-
-The whereis subcommand can be used to see how many copies of a file are known,
-but then you have to decide what to get or drop. In this example, there
-are perhaps not enough copies of the first file, and too many of the second
-file.
-
-	# cd /media/usbdrive
-	# git annex whereis
-	whereis my_cool_big_file (1 copy)
-		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
-	whereis other_file (3 copies)
-		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
-		62b39bbe-4149-11e0-af01-bb89245a1e61  -- usb drive [here]
-		7570b02e-15e9-11e0-adf0-9f3f94cb2eaa  -- backup drive
-
-What would be handy is some automated versions of get and drop, that only
-gets a file if there are not yet enough copies of it, or only drops a file
-if there are too many copies. Well, these exist, just use the --auto option.
-
-	# git annex get --auto --numcopies=2
-	get my_cool_big_file (from laptop...) ok
-	# git annex drop --auto --numcopies=2
-	drop other_file ok
-
-With two quick commands, git-annex was able to decide for you how to
-work toward having two copies of your files.
-
-	# git annex whereis
-	whereis my_cool_big_file (2 copies)
-		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
-		62b39bbe-4149-11e0-af01-bb89245a1e61  -- usb drive [here]
-	whereis other_file (2 copies)
-		0c443de8-e644-11df-acbf-f7cd7ca6210d  -- laptop
-		7570b02e-15e9-11e0-adf0-9f3f94cb2eaa  -- backup drive
-
-The --auto option can also be used with the copy command,
-again this lets git-annex decide whether to actually copy content.
-
-The above shows how to use --auto to manage content based on the number
-of copies. It's also possible to configure, on a per-repository basis,
-which content is desired. Then --auto also takes that into account
-see [[preferred_content]] for details.
diff --git a/doc/walkthrough/backups.mdwn b/doc/walkthrough/backups.mdwn
deleted file mode 100644
--- a/doc/walkthrough/backups.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-git-annex can be configured to require more than one copy of a file exists,
-as a simple backup for your data. This is controlled by the
-numcopies setting, which defaults to 1 copy. Let's
-change that to require 2 copies, and send a copy of every file
-to a USB drive.
-
-	# git annex numcopies 2
-	# git annex copy . --to usbdrive
-
-Now when we try to `git annex drop` a file, it will verify that it
-knows of 2 other repositories that have a copy before removing its
-content from the current repository.
-
-The numcopies setting used above is the global default.
-You can also vary the number of copies needed, depending on the file name.
-So, if you want 3 copies of all your flac files, but only 1 copy of oggs:
-
-	# echo "*.ogg annex.numcopies=1" >> .gitattributes
-	# echo "*.flac annex.numcopies=3" >> .gitattributes
-
-Or, you might want to make a directory for important stuff, and configure
-it so anything put in there is backed up more thoroughly:
-
-	# mkdir important_stuff
-	# echo "* annex.numcopies=3" > important_stuff/.gitattributes
-
-For more details about the numcopies setting, see [[copies]].
diff --git a/doc/walkthrough/backups/comment_1_d0244791d2abbf29553546a6a6568a0f._comment b/doc/walkthrough/backups/comment_1_d0244791d2abbf29553546a6a6568a0f._comment
deleted file mode 100644
--- a/doc/walkthrough/backups/comment_1_d0244791d2abbf29553546a6a6568a0f._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="madduck"
- ip="2001:a60:f0fb:0:224:d7ff:fe04:c82c"
- subject="Warn while inconsistent"
- date="2014-04-06T20:44:17Z"
- content="""
-Sure, git-annex prevents me from dropping files unless there are numcopies around elsewhere, but shouldn't it also ensure that numcopies cannot be set unless that requirement is already met?
-
-Furthermore, shouldn't it ensure that when new files are added, they are automatically distributed to fulfill the requirement?
-"""]]
diff --git a/doc/walkthrough/creating_a_repository.mdwn b/doc/walkthrough/creating_a_repository.mdwn
deleted file mode 100644
--- a/doc/walkthrough/creating_a_repository.mdwn
+++ /dev/null
@@ -1,6 +0,0 @@
-This is very straightforward.
-
-	# mkdir ~/annex
-	# cd ~/annex
-	# git init
-	# git annex init
diff --git a/doc/walkthrough/fsck__58___verifying_your_data.mdwn b/doc/walkthrough/fsck__58___verifying_your_data.mdwn
deleted file mode 100644
--- a/doc/walkthrough/fsck__58___verifying_your_data.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-You can use the fsck subcommand to check for problems in your data. What
-can be checked depends on the key-value [[backend|backends]] you've used
-for the data. For example, when you use the SHA1 backend, fsck will verify
-that the checksums of your files are good. Fsck also checks that the
-[[numcopies|copies]] setting is satisfied for all files.
-
-	# git annex fsck
-	fsck some_file (checksum...) ok
-	fsck my_cool_big_file (checksum...) ok
-	...
-
-You can also specify the files to check.  This is particularly useful if 
-you're using sha1 and don't want to spend a long time checksumming everything.
-
-	# git annex fsck my_cool_big_file
-	fsck my_cool_big_file (checksum...) ok
-
-If you have a large repo, you may want to check it in smaller steps. You may
-start and continue an aborted or time-limited check.
-
-	# git annex fsck -S <optional-directory> --time-limit=1m
-	fsck some_file (checksum...) ok
-	fsck my_cool_big_file (checksum...) ok
-	
-	  Time limit (1m) reached!
-
-	# git annex fsck -m <optional-directory>
-	fsck my_other_big_file (checksum...) ok
-	...
-
-Use `-S` or `--incremental` to start the incremental check. Use `-m` 
-or `--more` to continue the started check and continue where it left 
-off. Note that saving the progress of `fsck` is performed after every 
-1000 files or 5 minutes or when `--time-limit` occours. There may be 
-files that will be checked again when `git-annex` exists abnormally 
-eg. Ctrl+C and the check is restarted.
diff --git a/doc/walkthrough/fsck__58___when_things_go_wrong.mdwn b/doc/walkthrough/fsck__58___when_things_go_wrong.mdwn
deleted file mode 100644
--- a/doc/walkthrough/fsck__58___when_things_go_wrong.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Fsck never deletes possibly bad data; instead it will be moved to
-`.git/annex/bad/` for you to recover. Here is a sample of what fsck
-might say about a badly messed up annex:
-
-	# git annex fsck
-	fsck my_cool_big_file (checksum...)
-	git-annex: Bad file content; moved to .git/annex/bad/SHA1:7da006579dd64330eb2456001fd01948430572f2
-	git-annex: ** No known copies exist of my_cool_big_file
-	failed
-	fsck important_file
-	git-annex: Only 1 of 2 copies exist. Run git annex get somewhere else to back it up.
-	failed
-	git-annex: 2 failed
diff --git a/doc/walkthrough/getting_file_content.mdwn b/doc/walkthrough/getting_file_content.mdwn
deleted file mode 100644
--- a/doc/walkthrough/getting_file_content.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-A repository does not always have all annexed file contents available.
-When you need the content of a file, you can use "git annex get" to
-make it available.
-
-We can use this to copy everything in the laptop's annex to the
-USB drive.
-
-	# cd /media/usb/annex
-	# git annex sync laptop
-	# git annex get .
-	get my_cool_big_file (from laptop...) ok
-	get iso/debian.iso (from laptop...) ok
diff --git a/doc/walkthrough/modifying_annexed_files.mdwn b/doc/walkthrough/modifying_annexed_files.mdwn
deleted file mode 100644
--- a/doc/walkthrough/modifying_annexed_files.mdwn
+++ /dev/null
@@ -1,33 +0,0 @@
-Normally, the content of files in the annex is prevented from being modified.
-(Unless your repository is using [[direct_mode]].)
-
-That's a good thing, because it might be the only copy, you wouldn't
-want to lose it in a fumblefingered mistake.
-
-	# echo oops > my_cool_big_file
-	bash: my_cool_big_file: Permission denied
-
-In order to modify a file, it should first be unlocked.
-
-	# git annex unlock my_cool_big_file
-	unlock my_cool_big_file (copying...) ok
-
-That replaces the symlink that normally points at its content with a copy
-of the content. You can then modify the file like any regular file. Because
-it is a regular file.
-
-(If you decide you don't need to modify the file after all, or want to discard
-modifications, just use `git annex lock`.)
-
-When you `git commit` it will notice that you are committing an unlocked
-file, add its new content to the annex, and a pointer to that content is
-what gets committed to git.
-
-	# echo "now smaller, but even cooler" > my_cool_big_file
-	# git commit my_cool_big_file -m "changed an annexed file"
-	add my_cool_big_file ok
-	[master 64cda67] changed an annexed file
-	 1 files changed, 1 insertions(+), 1 deletions(-)
-
-For more details on working with unlocked files vs the regular locked
-files, see [[tips/unlocked_files]].
diff --git a/doc/walkthrough/more.mdwn b/doc/walkthrough/more.mdwn
deleted file mode 100644
--- a/doc/walkthrough/more.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-So ends the walkthrough. By now you should be able to use git-annex.
-
-Want more? See [[tips]] for lots more features and advice.
diff --git a/doc/walkthrough/moving_file_content_between_repositories.mdwn b/doc/walkthrough/moving_file_content_between_repositories.mdwn
deleted file mode 100644
--- a/doc/walkthrough/moving_file_content_between_repositories.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-Often you will want to move some file contents from a repository to some
-other one. For example, your laptop's disk is getting full; time to move
-some files to an external disk before moving another file from a file
-server to your laptop. Doing that by hand (by using `git annex get` and
-`git annex drop`) is possible, but a bit of a pain. `git annex move`
-makes it very easy.
-
-	# git annex move my_cool_big_file --to usbdrive
-	move my_cool_big_file (to usbdrive...) ok
-	# git annex move video/hackity_hack_and_kaxxt.mov --from fileserver
-	move video/hackity_hack_and_kaxxt.mov (from fileserver...)
-	SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e   100%   82MB 199.1KB/s   07:02
-	ok
diff --git a/doc/walkthrough/quiet_please__58___When_git-annex_seems_to_skip_files.mdwn b/doc/walkthrough/quiet_please__58___When_git-annex_seems_to_skip_files.mdwn
deleted file mode 100644
--- a/doc/walkthrough/quiet_please__58___When_git-annex_seems_to_skip_files.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-One behavior of git-annex is sometimes confusing at first, but it turns out
-to be useful once you get to know it.
-
-	# git annex drop *
-	# 
-
-Why didn't git-annex seem to do anything despite being asked to drop all the
-files? Because it checked them all, and none of them are present.
-
-Most git-annex commands will behave this way when they're able to quickly
-check that nothing needs to be done about a file.
-
-Running a git-annex command without specifying any file name will
-make git-annex look for files in the current directory and its
-subdirectories. So, we can add all new files to the annex easily:
-
-	# echo hi > subdir/subsubdir/newfile
-	# git annex add
-	add subdir/subsubdir/newfile ok
-
-When doing this kind of thing, having nothing shown for files
-that it doesn't need to act on is useful because it prevents swamping
-you with output. You only see the files it finds it does need to act on.
-
-So remember: If git-annex seems to not do anything when you tell it to, it's
-not being lazy -- It's checked that nothing needs to be done to get to the
-state you asked for!
diff --git a/doc/walkthrough/removing_files.mdwn b/doc/walkthrough/removing_files.mdwn
deleted file mode 100644
--- a/doc/walkthrough/removing_files.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-When you're using git-annex you can `git rm` a file just like you usually
-would with git. Just like with git, this removes the file from your work
-tree, but it does not remove the file's content from the git repository.
-If you check the file back out, or revert the removal, you can get it back.
-
-Git-annex adds the ability to remove the content of a file from your local
-repository to save space. This is called "dropping" the file. 
-
-You can always drop files safely. Git-annex checks that some other
-repository still has the file before removing it.
-
-	# git annex drop iso/debian.iso
-	drop iso/Debian_5.0.iso ok
-
-Once dropped, the file will still appear in your work tree as a broken symlink.
-You can use `git annex get` to as usual to get this file back to your local
-repository.
diff --git a/doc/walkthrough/removing_files__58___When_things_go_wrong.mdwn b/doc/walkthrough/removing_files__58___When_things_go_wrong.mdwn
deleted file mode 100644
--- a/doc/walkthrough/removing_files__58___When_things_go_wrong.mdwn
+++ /dev/null
@@ -1,24 +0,0 @@
-Before dropping a file, git-annex wants to be able to look at other
-remotes, and verify that they still have a file. After all, it could
-have been dropped from them too. If the remotes are not mounted/available,
-you'll see something like this.
-
-	# git annex drop important_file other.iso
-	drop important_file (unsafe)
-	  Could only verify the existence of 0 out of 1 necessary copies
-	  Unable to access these remotes: usbdrive
-	  Try making some of these repositories available:
-	   	58d84e8a-d9ae-11df-a1aa-ab9aa8c00826  -- portable USB drive
-	   	ca20064c-dbb5-11df-b2fe-002170d25c55  -- backup SATA drive
-	  (Use --force to override this check, or adjust numcopies.)
-	failed
-	drop other.iso (unsafe)
-	  Could only verify the existence of 0 out of 1 necessary copies
-          No other repository is known to contain the file.
-	  (Use --force to override this check, or adjust numcopies.)
-	failed
-
-Here you might --force it to drop `important_file` if you [[trust]] your backup.
-But `other.iso` looks to have never been copied to anywhere else, so if
-it's something you want to hold onto, you'd need to transfer it to
-some other repository before dropping it.
diff --git a/doc/walkthrough/renaming_files.mdwn b/doc/walkthrough/renaming_files.mdwn
deleted file mode 100644
--- a/doc/walkthrough/renaming_files.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-	# cd ~/annex
-	# git mv big_file my_cool_big_file
-	# mkdir iso
-	# git mv debian.iso iso/
-	# git commit -m moved
-
-You can use any normal git operations to move files around, or even
-make copies or delete them.
-
-Notice that, since annexed files are represented by symlinks,
-the symlink will break when the file is moved into a subdirectory.
-But, git-annex will fix this up for you when you commit --
-it has a pre-commit hook that watches for and corrects broken symlinks.
-
-(Note that if a repository is in direct mode, you can't run normal git
-commands in it. Instead, just move the files using non-git commands, and
-`git annex add` and `git annex sync`.)
diff --git a/doc/walkthrough/syncing.mdwn b/doc/walkthrough/syncing.mdwn
deleted file mode 100644
--- a/doc/walkthrough/syncing.mdwn
+++ /dev/null
@@ -1,27 +0,0 @@
-Notice that in the [[previous example|getting_file_content]], `git annex
-sync` was used. This lets git-annex know what has changed in the other
-repositories like the laptop, and so it knows about the files present there and can
-get them.
-
-Let's look at what the sync command does in more detail:
-
-	# cd /media/usb/annex
-	# git annex sync
-	commit
-	nothing to commit (working directory clean)
-	ok
-	pull laptop
-	ok
-	push laptop
-	ok
-
-After you run sync, the git repository will be updated with all changes
-made to its remotes, and any changes in the git repository will be pushed
-out to its remotes, where a sync will get them. This is especially useful
-when using git in a distributed fashion, without a [[central bare
-repository|tips/centralized_git_repository_tutorial]]. See [[sync]] for
-details.
-
-By default `git annex sync` only syncs the metadata about your
-files that is stored in git. It does not sync the contents of files, that
-are managed by git-annex. To do that, you can use `git annex sync --content`
diff --git a/doc/walkthrough/transferring_files__58___When_things_go_wrong.mdwn b/doc/walkthrough/transferring_files__58___When_things_go_wrong.mdwn
deleted file mode 100644
--- a/doc/walkthrough/transferring_files__58___When_things_go_wrong.mdwn
+++ /dev/null
@@ -1,17 +0,0 @@
-After a while, you'll have several annexes, with different file contents.
-You don't have to try to keep all that straight; git-annex does 
-[[location_tracking]] for you. If you ask it to get a file and the drive
-or file server is not accessible, it will let you know what it needs to get
-it:
-
-	# git annex get video/hackity_hack_and_kaxxt.mov
-	get video/hackity_hack_and_kaxxt.mov (not available)
-	  Unable to access these remotes: usbdrive, server
-	  Try making some of these repositories available:
-	  	5863d8c0-d9a9-11df-adb2-af51e6559a49  -- my home file server
-	   	58d84e8a-d9ae-11df-a1aa-ab9aa8c00826  -- portable USB drive
-	   	ca20064c-dbb5-11df-b2fe-002170d25c55  -- backup SATA drive
-	failed
-	# sudo mount /media/usb
-	# git annex get video/hackity_hack_and_kaxxt.mov
-	get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok
diff --git a/doc/walkthrough/unused_data.mdwn b/doc/walkthrough/unused_data.mdwn
deleted file mode 100644
--- a/doc/walkthrough/unused_data.mdwn
+++ /dev/null
@@ -1,35 +0,0 @@
-It's possible for data to accumulate in the annex that no files in any
-branch point to anymore. One way it can happen is if you `git rm` a file
-without first calling `git annex drop`. And, when you modify an annexed
-file, the old content of the file remains in the annex. Another way is when
-migrating between key-value [[backends]].
-
-This might be historical data you want to preserve, so git-annex defaults to
-preserving it. So from time to time, you may want to check for such data:
-
-	# git annex unused
-	unused . (checking for unused data...) 
-	  Some annexed data is no longer used by any files in the repository.
-	    NUMBER  KEY
-	    1       SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e
-	    2       SHA1-s14--f1358ec1873d57350e3dc62054dc232bc93c2bd1
-	  (To see where data was previously used, try: git log --stat -S'KEY')
-	  (To remove unwanted data: git-annex dropunused NUMBER)
-	ok
-
-After running `git annex unused`, you can follow the instructions to examine
-the history of files that used the data, and if you decide you don't need that
-data anymore, you can easily remove it from your local repository.
-
-	# git annex dropunused 1
-	dropunused 1 ok
-
-Hint: To drop a lot of unused data, use a command like this:
-
-	# git annex dropunused 1-1000
-
-Rather than removing the data, you can instead send it to other
-repositories:
-
-	# git annex copy --unused --to backup
-	# git annex move --unused --to archive
diff --git a/doc/walkthrough/using_bup.mdwn b/doc/walkthrough/using_bup.mdwn
deleted file mode 100644
--- a/doc/walkthrough/using_bup.mdwn
+++ /dev/null
@@ -1,37 +0,0 @@
-Another [[special_remote|special_remotes]] that git-annex can use is
-a [[special_remotes/bup]] repository. Bup stores large file contents
-in a git repository of its own, with deduplication. Combined with
-git-annex, you can have git on both the frontend and the backend.
-
-Here's how to create a bup remote, and describe it.
-
-[[!template id=note text="""
-Instead of specifying a remote system, you could choose to make a bup
-remote that is only accessible on the current system, by passing
-"buprepo=/big/mybup".
-"""]]
-
-	# git annex initremote mybup type=bup encryption=none buprepo=example.com:/big/mybup
-	initremote bup (bup init)
-	Initialized empty Git repository in /big/mybup/
-	ok
-	# git annex describe mybup "my bup repository at example.com"
-	describe mybup ok
-
-Now the remote can be used like any other remote.
-
-	# git annex move my_cool_big_file --to mybup
-	move my_cool_big_file (to mybup...)
-	Receiving index from server: 1100/1100, done.
-	ok
-
-Note that, unlike other remotes, bup does not really support removing
-content from its git repositories. This is a feature. :)
-
-	# git annex move my_cool_big_file --from mybup
-	move my_cool_big_file (from mybup...)
-	  content cannot be removed from bup remote
-	failed
-	git-annex: 1 failed
-
-See [[special_remotes/bup]] for details.
diff --git a/doc/walkthrough/using_ddar.mdwn b/doc/walkthrough/using_ddar.mdwn
deleted file mode 100644
--- a/doc/walkthrough/using_ddar.mdwn
+++ /dev/null
@@ -1,32 +0,0 @@
-Another [[special_remote|special_remotes]] that git-annex can use is
-a [[special_remotes/ddar]] repository. ddar stores large file contents
-in a directory structure of its own, with deduplication. For remote
-repositories, ddar requires that ssh is available on the remote, with ddar also
-installed remotely. When copying files to the remote, ddar only needs to send
-over the network the parts of the files that are not already present remotely.
-
-Unlike bup, ddar uses its own storage format, which allows for both creation
-and deletion of de-deduplicated files.
-
-Here's how to create a ddar remote, and describe it.
-
-[[!template id=note text="""
-Instead of specifying a remote system, you could choose to make a ddar
-remote that is only accessible on the current system, by passing
-"ddarrepo=/big/myddar".
-"""]]
-
-	# git annex initremote myddar type=ddar encryption=none ddarrepo=example.com:/big/myddar
-	initremote ddar (ddar init)
-	Initialized empty Git repository in /big/myddar/
-	ok
-	# git annex describe myddar "my ddar repository at example.com"
-	describe myddar ok
-
-Now the remote can be used like any other remote.
-
-	# git annex move my_cool_big_file --to myddar
-	move my_cool_big_file (to myddar...)
-	ok
-
-See [[special_remotes/ddar]] for details.
diff --git a/doc/walkthrough/using_special_remotes.mdwn b/doc/walkthrough/using_special_remotes.mdwn
deleted file mode 100644
--- a/doc/walkthrough/using_special_remotes.mdwn
+++ /dev/null
@@ -1,53 +0,0 @@
-We've seen above that git-annex can be used to store files in
-regular git remotes, accessed either via ssh, or on a removable drive. But
-git-annex can also store files in Amazon S3, Glacier, on a rsync server, in
-WebDAV, or even pull files down from the web and bittorrent.
-This and much more is made possible by [[special_remotes]].
-
-These are not normal git repositories; indeed the git repository is not
-stored on a special remote. But git-annex can store the contents of files
-in special remotes, and operate on them much as it would on any other
-remote. Bonus: Files stored on special remotes can easily be
-[[encrypted|encryption]]!
-
-All you need to get started using a special remote is to initialize it.
-This is done using the `git annex initremote` command, which needs to be
-passed different parameters depending on the type of special remote.
-
-Some special remotes also need things like passwords to be set in
-environment variables. Don't worry -- it will prompt if you leave anything off.
-So feel free to make any kind of special remote instead of the S3 remote
-used in this example.
-
-	# export AWS_ACCESS_KEY_ID="somethingotherthanthis"
-	# export AWS_SECRET_ACCESS_KEY="s3kr1t"
-	# git annex initremote mys3 type=S3 chunk=1MiB encryption=shared
-	initremote mys3 (shared encryption) (checking bucket) (creating bucket in US) ok
-
-Now you can store files on the newly initialized special remote.
-
-	# git annex copy my_cool_big_file --to mys3
-	copy my_cool_big_file (to mys3...) ok
-
-Once you've initialized a special remote in one repository, you can enable
-use of the same special remote in other clones of the repository.
-If the mys3 remote above was initialized on your laptop, you'll also want
-to enable it on your desktop.
-
-To do so, first get git-annex in sync (so it knows about
-the special remote that was added in the other repository), and then
-use `git annex enableremote`.
-
-	desktop# git annex sync
-	desktop# export AWS_ACCESS_KEY_ID="somethingotherthanthis"
-	desktop# export AWS_SECRET_ACCESS_KEY="s3kr1t"
-	desktop# git annex enableremote mys3
-	enableremote mys3 (checking bucket) ok
-
-And now you can download files from the special remote:
-
-	desktop# git annex get my_cool_big_file --from mys3
-	get my_cool_big_file (from mys3...) ok
-
-This has only scratched the surface of what can be done with
-[[special_remotes]].
diff --git a/doc/walkthrough/using_ssh_remotes.mdwn b/doc/walkthrough/using_ssh_remotes.mdwn
deleted file mode 100644
--- a/doc/walkthrough/using_ssh_remotes.mdwn
+++ /dev/null
@@ -1,36 +0,0 @@
-So far in this walkthrough, git-annex has been used with a remote
-repository on a USB drive. But it can also be used with a git remote
-that is truly remote, a host accessed by ssh.
-
-Say you have a desktop on the same network as your laptop and want
-to clone the laptop's annex to it:
-
-	desktop# git clone ssh://mylaptop/home/me/annex ~/annex
-	desktop# cd ~/annex
-	desktop# git annex init "my desktop"
-
-Now you can get files and they will be transferred (using `rsync` via `ssh`):
-
-	desktop# git annex get my_cool_big_file
-	get my_cool_big_file (getting UUID for origin...) (from origin...)
-	SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e  100% 2159     2.1KB/s   00:00
-	ok
-
-When you drop files, git-annex will ssh over to the remote and make
-sure the file's content is still there before removing it locally:
-
-	desktop# git annex drop my_cool_big_file
-	drop my_cool_big_file (checking origin..) ok
-
-Note that normally git-annex prefers to use non-ssh remotes, like
-a USB drive, before ssh remotes. They are assumed to be faster/cheaper to
-access, if available. There is a annex-cost setting you can configure in
-`.git/config` to adjust which repositories it prefers. See
-[[the_man_page|git-annex]] for details.
-
-Also, note that you need full shell access for this to work -- 
-git-annex needs to be able to ssh in and run commands. Or at least,
-your shell needs to be able to run the [[git-annex-shell]] command.
-
-For details on setting up ssh remotes, see the
-[[tips/centralized_git_repository_tutorial]].
diff --git a/doc/walkthrough/using_tags_and_branches.mdwn b/doc/walkthrough/using_tags_and_branches.mdwn
deleted file mode 100644
--- a/doc/walkthrough/using_tags_and_branches.mdwn
+++ /dev/null
@@ -1,14 +0,0 @@
-Like git, git-annex hangs on to every old version of a file (by default),
-so you can make tags and branches, and can check them out later to look at
-the old files.
-
-	# git tag 1.0
-	# rm -f my_cool_big_file
-	# git commit -m deleted
-	# git checkout 1.0
-	# cat my_cool_big_file
-	yay! old version still here
-
-Of course, when you `git checkout` an old branch, some old versions of
-files may not be locally available, and may be stored in some other
-repository. You can use `git annex get` to get them as usual.
diff --git a/ghci b/ghci
deleted file mode 100644
--- a/ghci
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-# ghci using objects built by cabal
-make dist/caballog
-$(grep 'ghc --make' dist/caballog | head -n 1 | perl -pe 's/--make/--interactive/; s/.\/[^\.\s]+.hs//; s/-package-id [^\s]+//g; s/-hide-all-packages//; s/-threaded//') $@
diff --git a/git-annex.cabal b/git-annex.cabal
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -1,13 +1,12 @@
 Name: git-annex
-Version: 6.20160511
+Version: 6.20160527
 Cabal-Version: >= 1.8
 License: GPL-3
 Maintainer: Joey Hess <id@joeyh.name>
 Author: Joey Hess
 Stability: Stable
-Copyright: 2010-2014 Joey Hess
+Copyright: 2010-2016 Joey Hess
 License-File: COPYRIGHT
-Extra-Source-Files: CHANGELOG
 Homepage: http://git-annex.branchable.com/
 Build-type: Custom
 Category: Utility
@@ -30,6 +29,231 @@
  noticing when files are changed, and automatically committing them
  to git and transferring them to other computers. The git-annex webapp
  makes it easy to set up and use git-annex this way.
+-- The tarball uploaded to hackage does not include every non-haskell
+-- file in the git repo. The website is left out, so is build machinary for
+-- standalone apps, and packages. Include only files that are needed
+-- make cabal install git-annex work.
+Extra-Source-Files:
+  stack.yaml
+  cabal.config
+  README
+  CHANGELOG
+  NEWS
+  doc/license/GPL
+  doc/license/AGPL
+  doc/git-annex.mdwn
+  doc/git-annex-add.mdwn
+  doc/git-annex-addunused.mdwn
+  doc/git-annex-addurl.mdwn
+  doc/git-annex-adjust.mdwn
+  doc/git-annex-assistant.mdwn
+  doc/git-annex-calckey.mdwn
+  doc/git-annex-checkpresentkey.mdwn
+  doc/git-annex-contentlocation.mdwn
+  doc/git-annex-copy.mdwn
+  doc/git-annex-dead.mdwn
+  doc/git-annex-describe.mdwn
+  doc/git-annex-diffdriver.mdwn
+  doc/git-annex-direct.mdwn
+  doc/git-annex-drop.mdwn
+  doc/git-annex-dropkey.mdwn
+  doc/git-annex-dropunused.mdwn
+  doc/git-annex-edit.mdwn
+  doc/git-annex-enableremote.mdwn
+  doc/git-annex-examinekey.mdwn
+  doc/git-annex-expire.mdwn
+  doc/git-annex-find.mdwn
+  doc/git-annex-findref.mdwn
+  doc/git-annex-fix.mdwn
+  doc/git-annex-forget.mdwn
+  doc/git-annex-fromkey.mdwn
+  doc/git-annex-fsck.mdwn
+  doc/git-annex-fuzztest.mdwn
+  doc/git-annex-get.mdwn
+  doc/git-annex-group.mdwn
+  doc/git-annex-groupwanted.mdwn
+  doc/git-annex-import.mdwn
+  doc/git-annex-importfeed.mdwn
+  doc/git-annex-indirect.mdwn
+  doc/git-annex-info.mdwn
+  doc/git-annex-init.mdwn
+  doc/git-annex-initremote.mdwn
+  doc/git-annex-list.mdwn
+  doc/git-annex-lock.mdwn
+  doc/git-annex-log.mdwn
+  doc/git-annex-lookupkey.mdwn
+  doc/git-annex-map.mdwn
+  doc/git-annex-matchexpression.mdwn
+  doc/git-annex-matching-options.mdwn
+  doc/git-annex-merge.mdwn
+  doc/git-annex-metadata.mdwn
+  doc/git-annex-migrate.mdwn
+  doc/git-annex-mirror.mdwn
+  doc/git-annex-move.mdwn
+  doc/git-annex-numcopies.mdwn
+  doc/git-annex-pre-commit.mdwn
+  doc/git-annex-preferred-content.mdwn
+  doc/git-annex-proxy.mdwn
+  doc/git-annex-readpresentkey.mdwn
+  doc/git-annex-registerurl.mdwn
+  doc/git-annex-reinit.mdwn
+  doc/git-annex-reinject.mdwn
+  doc/git-annex-rekey.mdwn
+  doc/git-annex-remotedaemon.mdwn
+  doc/git-annex-repair.mdwn
+  doc/git-annex-required.mdwn
+  doc/git-annex-resolvemerge.mdwn
+  doc/git-annex-rmurl.mdwn
+  doc/git-annex-schedule.mdwn
+  doc/git-annex-semitrust.mdwn
+  doc/git-annex-setkey.mdwn
+  doc/git-annex-setpresentkey.mdwn
+  doc/git-annex-shell.mdwn
+  doc/git-annex-smudge.mdwn
+  doc/git-annex-status.mdwn
+  doc/git-annex-sync.mdwn
+  doc/git-annex-test.mdwn
+  doc/git-annex-testremote.mdwn
+  doc/git-annex-transferkey.mdwn
+  doc/git-annex-transferkeys.mdwn
+  doc/git-annex-trust.mdwn
+  doc/git-annex-unannex.mdwn
+  doc/git-annex-undo.mdwn
+  doc/git-annex-ungroup.mdwn
+  doc/git-annex-uninit.mdwn
+  doc/git-annex-unlock.mdwn
+  doc/git-annex-untrust.mdwn
+  doc/git-annex-unused.mdwn
+  doc/git-annex-upgrade.mdwn
+  doc/git-annex-vadd.mdwn
+  doc/git-annex-vcycle.mdwn
+  doc/git-annex-version.mdwn
+  doc/git-annex-vfilter.mdwn
+  doc/git-annex-vicfg.mdwn
+  doc/git-annex-view.mdwn
+  doc/git-annex-vpop.mdwn
+  doc/git-annex-wanted.mdwn
+  doc/git-annex-watch.mdwn
+  doc/git-annex-webapp.mdwn
+  doc/git-annex-whereis.mdwn
+  doc/git-annex-xmppgit.mdwn
+  doc/logo.svg
+  doc/logo_16x16.png
+  Makefile
+  Build/mdwn2man
+  Assistant/WebApp/routes
+  static/activityicon.gif
+  static/css/bootstrap.css
+  static/css/bootstrap-theme.css
+  static/js/jquery.ui.core.js
+  static/js/longpolling.js
+  static/js/jquery.full.js
+  static/js/jquery.ui.sortable.js
+  static/js/jquery.ui.mouse.js
+  static/js/jquery.ui.widget.js
+  static/js/bootstrap.js
+  static/syncicon.gif
+  static/favicon.ico
+  static/fonts/glyphicons-halflings-regular.woff
+  static/fonts/glyphicons-halflings-regular.eot
+  static/fonts/glyphicons-halflings-regular.svg
+  static/fonts/glyphicons-halflings-regular.ttf
+  templates/sidebar/main.hamlet
+  templates/sidebar/alert.hamlet
+  templates/bootstrap.hamlet
+  templates/error.cassius
+  templates/README
+  templates/error.hamlet
+  templates/documentation/license.hamlet
+  templates/documentation/repogroup.hamlet
+  templates/documentation/about.hamlet
+  templates/dashboard/main.hamlet
+  templates/dashboard/transfers.cassius
+  templates/dashboard/transfers.hamlet
+  templates/dashboard/metarefresh.hamlet
+  templates/page.cassius
+  templates/page.hamlet
+  templates/control/repairrepository.hamlet
+  templates/control/repairrepository/done.hamlet
+  templates/control/notrunning.julius
+  templates/control/notrunning.hamlet
+  templates/control/repositoryswitcher.hamlet
+  templates/control/shutdown.hamlet
+  templates/control/log.hamlet
+  templates/page.julius
+  templates/repolist.julius
+  templates/configurators/adddrive/combine.hamlet
+  templates/configurators/adddrive/setupmodal.hamlet
+  templates/configurators/adddrive/encrypt.hamlet
+  templates/configurators/newrepository.hamlet
+  templates/configurators/needglaciercli.hamlet
+  templates/configurators/adds3.hamlet
+  templates/configurators/genkeymodal.hamlet
+  templates/configurators/main.hamlet
+  templates/configurators/needconnection.hamlet
+  templates/configurators/newrepository/form.hamlet
+  templates/configurators/newrepository/first.hamlet
+  templates/configurators/newrepository/combine.hamlet
+  templates/configurators/enablewebdav.hamlet
+  templates/configurators/pairing/local/inprogress.hamlet
+  templates/configurators/pairing/local/prompt.hamlet
+  templates/configurators/pairing/disabled.hamlet
+  templates/configurators/pairing/xmpp/self/retry.hamlet
+  templates/configurators/pairing/xmpp/self/prompt.hamlet
+  templates/configurators/pairing/xmpp/friend/prompt.hamlet
+  templates/configurators/pairing/xmpp/friend/confirm.hamlet
+  templates/configurators/pairing/xmpp/end.hamlet
+  templates/configurators/xmpp.hamlet
+  templates/configurators/addglacier.hamlet
+  templates/configurators/fsck.cassius
+  templates/configurators/edit/nonannexremote.hamlet
+  templates/configurators/edit/webrepository.hamlet
+  templates/configurators/edit/repository.hamlet
+  templates/configurators/unused.hamlet
+  templates/configurators/addbox.com.hamlet
+  templates/configurators/ssh/testmodal.hamlet
+  templates/configurators/ssh/expiredpassword.hamlet
+  templates/configurators/ssh/error.hamlet
+  templates/configurators/ssh/combine.hamlet
+  templates/configurators/ssh/enable.hamlet
+  templates/configurators/ssh/add.hamlet
+  templates/configurators/ssh/setupmodal.hamlet
+  templates/configurators/ssh/confirm.hamlet
+  templates/configurators/upgrade/android.hamlet
+  templates/configurators/enableia.hamlet
+  templates/configurators/fsck.hamlet
+  templates/configurators/addrepository/archive.hamlet
+  templates/configurators/addrepository/cloud.hamlet
+  templates/configurators/addrepository/connection.hamlet
+  templates/configurators/addrepository/xmppconnection.hamlet
+  templates/configurators/addrepository/ssh.hamlet
+  templates/configurators/addrepository/misc.hamlet
+  templates/configurators/rsync.net/add.hamlet
+  templates/configurators/rsync.net/encrypt.hamlet
+  templates/configurators/gitlab.com/add.hamlet
+  templates/configurators/needgcrypt.hamlet
+  templates/configurators/enabledirectory.hamlet
+  templates/configurators/fsck/status.hamlet
+  templates/configurators/fsck/form.hamlet
+  templates/configurators/fsck/preferencesform.hamlet
+  templates/configurators/fsck/formcontent.hamlet
+  templates/configurators/delete/xmpp.hamlet
+  templates/configurators/delete/finished.hamlet
+  templates/configurators/delete/start.hamlet
+  templates/configurators/delete/currentrepository.hamlet
+  templates/configurators/unused/form.hamlet
+  templates/configurators/adddrive.hamlet
+  templates/configurators/preferences.hamlet
+  templates/configurators/addia.hamlet
+  templates/configurators/xmpp/buddylist.hamlet
+  templates/configurators/xmpp/disabled.hamlet
+  templates/configurators/xmpp/needcloudrepo.hamlet
+  templates/configurators/enableaws.hamlet
+  templates/configurators/addrepository.hamlet
+  templates/actionbutton.hamlet
+  templates/repolist.hamlet
+  templates/controlmenu.hamlet
+  templates/notifications/longpolling.julius
 
 Flag S3
   Description: Enable S3 support
@@ -90,10 +314,19 @@
 Flag XMPP
   Description: Enable notifications using XMPP
 
+source-repository head
+  type: git
+  location: git://git-annex.branchable.com/
+
+custom-setup
+  Setup-Depends: base (>= 4.5), hslogger, MissingH, unix-compat, process,
+    unix, filepath, exceptions, bytestring, directory, IfElse, data-default,
+    Cabal
+
 Executable git-annex
   Main-Is: git-annex.hs
   Build-Depends:
-   base (>= 4.5 && < 4.9),
+   base (>= 4.5 && < 5.0),
    optparse-applicative (>= 0.11.0), 
    containers (>= 0.5.0.0), 
    exceptions (>= 0.6),
@@ -247,6 +480,568 @@
     Build-Depends: criterion, deepseq
     CPP-Options: -DWITH_BENCHMARK
 
-source-repository head
-  type: git
-  location: git://git-annex.branchable.com/
+  Other-Modules:
+    Annex
+    Annex.Action
+    Annex.AdjustedBranch
+    Annex.AutoMerge
+    Annex.BloomFilter
+    Annex.Branch
+    Annex.Branch.Transitions
+    Annex.BranchState
+    Annex.CatFile
+    Annex.CheckAttr
+    Annex.CheckIgnore
+    Annex.Common
+    Annex.Concurrent
+    Annex.Content
+    Annex.Content.Direct
+    Annex.Difference
+    Annex.DirHashes
+    Annex.Direct
+    Annex.Drop
+    Annex.Environment
+    Annex.FileMatcher
+    Annex.Fixup
+    Annex.GitOverlay
+    Annex.HashObject
+    Annex.Hook
+    Annex.Ingest
+    Annex.Init
+    Annex.InodeSentinal
+    Annex.Journal
+    Annex.Link
+    Annex.Locations
+    Annex.LockFile
+    Annex.LockPool
+    Annex.LockPool.PosixOrPid
+    Annex.MakeRepo
+    Annex.MetaData
+    Annex.MetaData.StandardFields
+    Annex.Notification
+    Annex.NumCopies
+    Annex.Path
+    Annex.Perms
+    Annex.Queue
+    Annex.Quvi
+    Annex.ReplaceFile
+    Annex.SpecialRemote
+    Annex.Ssh
+    Annex.TaggedPush
+    Annex.Transfer
+    Annex.UUID
+    Annex.Url
+    Annex.VariantFile
+    Annex.Version
+    Annex.View
+    Annex.View.ViewedFile
+    Annex.Wanted
+    Annex.WorkTree
+    Assistant
+    Assistant.Alert
+    Assistant.Alert.Utility
+    Assistant.BranchChange
+    Assistant.Changes
+    Assistant.Commits
+    Assistant.Common
+    Assistant.CredPairCache
+    Assistant.DaemonStatus
+    Assistant.DeleteRemote
+    Assistant.Drop
+    Assistant.Fsck
+    Assistant.Gpg
+    Assistant.Install
+    Assistant.Install.AutoStart
+    Assistant.Install.Menu
+    Assistant.MakeRemote
+    Assistant.Monad
+    Assistant.NamedThread
+    Assistant.NetMessager
+    Assistant.Pairing
+    Assistant.Pairing.MakeRemote
+    Assistant.Pairing.Network
+    Assistant.Pushes
+    Assistant.RemoteControl
+    Assistant.Repair
+    Assistant.RepoProblem
+    Assistant.Restart
+    Assistant.ScanRemotes
+    Assistant.Ssh
+    Assistant.Sync
+    Assistant.Threads.Committer
+    Assistant.Threads.ConfigMonitor
+    Assistant.Threads.Cronner
+    Assistant.Threads.DaemonStatus
+    Assistant.Threads.Glacier
+    Assistant.Threads.Merger
+    Assistant.Threads.MountWatcher
+    Assistant.Threads.NetWatcher
+    Assistant.Threads.PairListener
+    Assistant.Threads.ProblemFixer
+    Assistant.Threads.Pusher
+    Assistant.Threads.RemoteControl
+    Assistant.Threads.SanityChecker
+    Assistant.Threads.TransferPoller
+    Assistant.Threads.TransferScanner
+    Assistant.Threads.TransferWatcher
+    Assistant.Threads.Transferrer
+    Assistant.Threads.UpgradeWatcher
+    Assistant.Threads.Upgrader
+    Assistant.Threads.Watcher
+    Assistant.Threads.WebApp
+    Assistant.Threads.XMPPClient
+    Assistant.Threads.XMPPPusher
+    Assistant.TransferQueue
+    Assistant.TransferSlots
+    Assistant.TransferrerPool
+    Assistant.Types.Alert
+    Assistant.Types.BranchChange
+    Assistant.Types.Buddies
+    Assistant.Types.Changes
+    Assistant.Types.Commits
+    Assistant.Types.CredPairCache
+    Assistant.Types.DaemonStatus
+    Assistant.Types.NamedThread
+    Assistant.Types.NetMessager
+    Assistant.Types.Pushes
+    Assistant.Types.RemoteControl
+    Assistant.Types.RepoProblem
+    Assistant.Types.ScanRemotes
+    Assistant.Types.ThreadName
+    Assistant.Types.ThreadedMonad
+    Assistant.Types.TransferQueue
+    Assistant.Types.TransferSlots
+    Assistant.Types.TransferrerPool
+    Assistant.Types.UrlRenderer
+    Assistant.Unused
+    Assistant.Upgrade
+    Assistant.WebApp
+    Assistant.WebApp.Common
+    Assistant.WebApp.Configurators
+    Assistant.WebApp.Configurators.AWS
+    Assistant.WebApp.Configurators.Delete
+    Assistant.WebApp.Configurators.Edit
+    Assistant.WebApp.Configurators.Fsck
+    Assistant.WebApp.Configurators.IA
+    Assistant.WebApp.Configurators.Local
+    Assistant.WebApp.Configurators.Pairing
+    Assistant.WebApp.Configurators.Preferences
+    Assistant.WebApp.Configurators.Ssh
+    Assistant.WebApp.Configurators.Unused
+    Assistant.WebApp.Configurators.Upgrade
+    Assistant.WebApp.Configurators.WebDAV
+    Assistant.WebApp.Configurators.XMPP
+    Assistant.WebApp.Control
+    Assistant.WebApp.DashBoard
+    Assistant.WebApp.Documentation
+    Assistant.WebApp.Form
+    Assistant.WebApp.Gpg
+    Assistant.WebApp.MakeRemote
+    Assistant.WebApp.Notifications
+    Assistant.WebApp.OtherRepos
+    Assistant.WebApp.Page
+    Assistant.WebApp.Repair
+    Assistant.WebApp.RepoId
+    Assistant.WebApp.RepoList
+    Assistant.WebApp.SideBar
+    Assistant.WebApp.Types
+    Assistant.XMPP
+    Assistant.XMPP.Buddies
+    Assistant.XMPP.Client
+    Assistant.XMPP.Git
+    Backend
+    Backend.Hash
+    Backend.URL
+    Backend.Utilities
+    Backend.WORM
+    Build.BuildVersion
+    Build.BundledPrograms
+    Build.Configure
+    Build.DesktopFile
+    Build.DistributionUpdate
+    Build.EvilLinker
+    Build.EvilSplicer
+    Build.InstallDesktopFile
+    Build.LinuxMkLibs
+    Build.NullSoftInstaller
+    Build.OSXMkLibs
+    Build.Standalone
+    Build.TestConfig
+    Build.Version
+    BuildFlags
+    CmdLine
+    CmdLine.Action
+    CmdLine.Batch
+    CmdLine.GitAnnex
+    CmdLine.GitAnnex.Options
+    CmdLine.GitAnnexShell
+    CmdLine.GitAnnexShell.Checks
+    CmdLine.GitAnnexShell.Fields
+    CmdLine.GlobalSetter
+    CmdLine.Option
+    CmdLine.Seek
+    CmdLine.Usage
+    Command
+    Command.Add
+    Command.AddUnused
+    Command.AddUrl
+    Command.Adjust
+    Command.Assistant
+    Command.Benchmark
+    Command.CalcKey
+    Command.CheckPresentKey
+    Command.Commit
+    Command.ConfigList
+    Command.ContentLocation
+    Command.Copy
+    Command.Dead
+    Command.Describe
+    Command.DiffDriver
+    Command.Direct
+    Command.Drop
+    Command.DropKey
+    Command.DropUnused
+    Command.EnableRemote
+    Command.ExamineKey
+    Command.Expire
+    Command.Find
+    Command.FindRef
+    Command.Fix
+    Command.Forget
+    Command.FromKey
+    Command.Fsck
+    Command.FuzzTest
+    Command.GCryptSetup
+    Command.Get
+    Command.Group
+    Command.GroupWanted
+    Command.Help
+    Command.Import
+    Command.ImportFeed
+    Command.InAnnex
+    Command.Indirect
+    Command.Info
+    Command.Init
+    Command.InitRemote
+    Command.List
+    Command.Lock
+    Command.LockContent
+    Command.Log
+    Command.LookupKey
+    Command.Map
+    Command.MatchExpression
+    Command.Merge
+    Command.MetaData
+    Command.Migrate
+    Command.Mirror
+    Command.Move
+    Command.NotifyChanges
+    Command.NumCopies
+    Command.PreCommit
+    Command.Proxy
+    Command.ReKey
+    Command.ReadPresentKey
+    Command.RecvKey
+    Command.RegisterUrl
+    Command.Reinit
+    Command.Reinject
+    Command.RemoteDaemon
+    Command.Repair
+    Command.Required
+    Command.ResolveMerge
+    Command.RmUrl
+    Command.Schedule
+    Command.Semitrust
+    Command.SendKey
+    Command.SetKey
+    Command.SetPresentKey
+    Command.Smudge
+    Command.Status
+    Command.Sync
+    Command.Test
+    Command.TestRemote
+    Command.TransferInfo
+    Command.TransferKey
+    Command.TransferKeys
+    Command.Trust
+    Command.Unannex
+    Command.Undo
+    Command.Ungroup
+    Command.Uninit
+    Command.Unlock
+    Command.Untrust
+    Command.Unused
+    Command.Upgrade
+    Command.VAdd
+    Command.VCycle
+    Command.VFilter
+    Command.VPop
+    Command.Version
+    Command.Vicfg
+    Command.View
+    Command.Wanted
+    Command.Watch
+    Command.WebApp
+    Command.Whereis
+    Command.XMPPGit
+    Common
+    Config
+    Config.Cost
+    Config.Files
+    Creds
+    Crypto
+    Database.Fsck
+    Database.Handle
+    Database.Keys
+    Database.Keys.Handle
+    Database.Keys.SQL
+    Database.Queue
+    Database.Types
+    Git
+    Git.AutoCorrect
+    Git.Branch
+    Git.BuildVersion
+    Git.CatFile
+    Git.CheckAttr
+    Git.CheckIgnore
+    Git.Command
+    Git.Command.Batch
+    Git.Config
+    Git.Construct
+    Git.CurrentRepo
+    Git.DiffTree
+    Git.DiffTreeItem
+    Git.Env
+    Git.FileMode
+    Git.FilePath
+    Git.Filename
+    Git.Fsck
+    Git.GCrypt
+    Git.HashObject
+    Git.Hook
+    Git.Index
+    Git.LockFile
+    Git.LsFiles
+    Git.LsTree
+    Git.Merge
+    Git.Objects
+    Git.Queue
+    Git.Ref
+    Git.RefLog
+    Git.Remote
+    Git.Remote.Remove
+    Git.Repair
+    Git.Sha
+    Git.SharedRepository
+    Git.Status
+    Git.Tree
+    Git.Types
+    Git.UnionMerge
+    Git.UpdateIndex
+    Git.Url
+    Git.Version
+    Limit
+    Limit.Wanted
+    Logs
+    Logs.Activity
+    Logs.Chunk
+    Logs.Chunk.Pure
+    Logs.Difference
+    Logs.Difference.Pure
+    Logs.FsckResults
+    Logs.Group
+    Logs.Line
+    Logs.Location
+    Logs.MapLog
+    Logs.MetaData
+    Logs.NumCopies
+    Logs.PreferredContent
+    Logs.PreferredContent.Raw
+    Logs.Presence
+    Logs.Presence.Pure
+    Logs.Remote
+    Logs.RemoteState
+    Logs.Schedule
+    Logs.SingleValue
+    Logs.TimeStamp
+    Logs.Transfer
+    Logs.Transitions
+    Logs.Trust
+    Logs.Trust.Basic
+    Logs.Trust.Pure
+    Logs.UUID
+    Logs.UUIDBased
+    Logs.Unused
+    Logs.View
+    Logs.Web
+    Messages
+    Messages.Concurrent
+    Messages.Internal
+    Messages.JSON
+    Messages.Progress
+    Remote
+    Remote.BitTorrent
+    Remote.Bup
+    Remote.Ddar
+    Remote.Directory
+    Remote.Directory.LegacyChunked
+    Remote.External
+    Remote.External.Types
+    Remote.GCrypt
+    Remote.Git
+    Remote.Glacier
+    Remote.Helper.AWS
+    Remote.Helper.Chunked
+    Remote.Helper.Chunked.Legacy
+    Remote.Helper.Encryptable
+    Remote.Helper.Git
+    Remote.Helper.Hooks
+    Remote.Helper.Http
+    Remote.Helper.Messages
+    Remote.Helper.ReadOnly
+    Remote.Helper.Special
+    Remote.Helper.Ssh
+    Remote.Hook
+    Remote.List
+    Remote.Rsync
+    Remote.Rsync.RsyncUrl
+    Remote.S3
+    Remote.Tahoe
+    Remote.Web
+    Remote.WebDAV
+    Remote.WebDAV.DavLocation
+    RemoteDaemon.Common
+    RemoteDaemon.Core
+    RemoteDaemon.Transport
+    RemoteDaemon.Transport.GCrypt
+    RemoteDaemon.Transport.Ssh
+    RemoteDaemon.Transport.Ssh.Types
+    RemoteDaemon.Types
+    Test
+    Types
+    Types.Availability
+    Types.Backend
+    Types.BranchState
+    Types.CleanupActions
+    Types.Command
+    Types.Creds
+    Types.Crypto
+    Types.DeferredParse
+    Types.DesktopNotify
+    Types.Difference
+    Types.Distribution
+    Types.FileMatcher
+    Types.GitConfig
+    Types.Group
+    Types.Key
+    Types.KeySource
+    Types.LockCache
+    Types.Messages
+    Types.MetaData
+    Types.NumCopies
+    Types.RefSpec
+    Types.Remote
+    Types.ScheduledActivity
+    Types.StandardGroups
+    Types.StoreRetrieve
+    Types.Test
+    Types.TrustLevel
+    Types.UUID
+    Types.UrlContents
+    Types.View
+    Upgrade
+    Upgrade.V0
+    Upgrade.V1
+    Upgrade.V2
+    Upgrade.V3
+    Upgrade.V4
+    Upgrade.V5
+    Utility.Applicative
+    Utility.Base64
+    Utility.Batch
+    Utility.Bloom
+    Utility.CoProcess
+    Utility.CopyFile
+    Utility.DBus
+    Utility.Daemon
+    Utility.Data
+    Utility.DataUnits
+    Utility.DirWatcher
+    Utility.DirWatcher.FSEvents
+    Utility.DirWatcher.INotify
+    Utility.DirWatcher.Kqueue
+    Utility.DirWatcher.Types
+    Utility.DirWatcher.Win32Notify
+    Utility.Directory
+    Utility.DiskFree
+    Utility.Dot
+    Utility.DottedVersion
+    Utility.Env
+    Utility.Exception
+    Utility.ExternalSHA
+    Utility.FileMode
+    Utility.FileSize
+    Utility.FileSystemEncoding
+    Utility.Format
+    Utility.FreeDesktop
+    Utility.Glob
+    Utility.Gpg
+    Utility.Hash
+    Utility.HumanNumber
+    Utility.HumanTime
+    Utility.InodeCache
+    Utility.JSONStream
+    Utility.LinuxMkLibs
+    Utility.LockFile
+    Utility.LockFile.LockStatus
+    Utility.LockFile.PidLock
+    Utility.LockFile.Posix
+    Utility.LockFile.Windows
+    Utility.LockPool
+    Utility.LockPool.LockHandle
+    Utility.LockPool.PidLock
+    Utility.LockPool.Posix
+    Utility.LockPool.STM
+    Utility.LockPool.Windows
+    Utility.LogFile
+    Utility.Lsof
+    Utility.Matcher
+    Utility.Metered
+    Utility.Misc
+    Utility.Monad
+    Utility.Mounts
+    Utility.Network
+    Utility.NotificationBroadcaster
+    Utility.OSX
+    Utility.OptParse
+    Utility.PID
+    Utility.Parallel
+    Utility.PartialPrelude
+    Utility.Path
+    Utility.Percentage
+    Utility.PosixFiles
+    Utility.Process
+    Utility.Process.Shim
+    Utility.QuickCheck
+    Utility.Quvi
+    Utility.Rsync
+    Utility.SRV
+    Utility.SafeCommand
+    Utility.Scheduled
+    Utility.Scheduled.QuickCheck
+    Utility.Shell
+    Utility.SimpleProtocol
+    Utility.SshConfig
+    Utility.SystemDirectory
+    Utility.TList
+    Utility.Tense
+    Utility.ThreadLock
+    Utility.ThreadScheduler
+    Utility.Tmp
+    Utility.Touch
+    Utility.Url
+    Utility.UserInfo
+    Utility.Verifiable
+    Utility.WebApp
+    Utility.WinProcess
+    Utility.Yesod
diff --git a/git-union-merge.hs b/git-union-merge.hs
deleted file mode 100644
--- a/git-union-merge.hs
+++ /dev/null
@@ -1,48 +0,0 @@
-{- git-union-merge program
- -
- - Copyright 2011 Joey Hess <id@joeyh.name>
- -
- - Licensed under the GNU GPL version 3 or higher.
- -}
-
-import System.Environment
-
-import Common
-import qualified Git.UnionMerge
-import qualified Git.Config
-import qualified Git.CurrentRepo
-import qualified Git.Branch
-import qualified Git.Index
-import qualified Git
-
-header :: String
-header = "Usage: git-union-merge ref ref newref"
-
-usage :: IO a
-usage = error $ "bad parameters\n\n" ++ header
-
-tmpIndex :: Git.Repo -> FilePath
-tmpIndex g = Git.localGitDir g </> "index.git-union-merge"
-
-setup :: Git.Repo -> IO ()
-setup = cleanup -- idempotency
-
-cleanup :: Git.Repo -> IO ()
-cleanup g = nukeFile $ tmpIndex g
-
-parseArgs :: IO [String]
-parseArgs = do
-	args <- getArgs
-	if length args /= 3
-		then usage
-		else return args
-
-main :: IO ()
-main = do
-	[aref, bref, newref] <- map Git.Ref <$> parseArgs
-	g <- Git.Config.read =<< Git.CurrentRepo.get
-	_ <- Git.Index.override $ tmpIndex g
-	setup g
-	Git.UnionMerge.merge aref bref g
-	_ <- Git.Branch.commit Git.Branch.ManualCommit False "union merge" newref [aref, bref] g
-	cleanup g
diff --git a/man/git-annex-add.1 b/man/git-annex-add.1
deleted file mode 100644
--- a/man/git-annex-add.1
+++ /dev/null
@@ -1,83 +0,0 @@
-.TH git-annex-add 1
-.SH NAME
-git-annex-add \- adds files to the git annex
-.PP
-.SH SYNOPSIS
-git annex add \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Adds the specified files to the annex. If a directory is specified,
-acts on all files inside the directory and its subdirectories.
-If no path is specified, adds files from the current directory and below.
-.PP
-Files that are already checked into git and are unmodified, or that
-git has been configured to ignore will be silently skipped.
-.PP
-If annex.largefiles is configured, and does not match a file, git annex
-add\fB will behave the same as \fPgit add and add the non\-large file directly
-to the git repository, instead of to the annex.
-.PP
-Large files are added to the annex in locked form, which prevents further
-modification of their content unless unlocked by git-annex\-unlock(1).
-(This is not the case however when a repository is in a filesystem not
-supporting symlinks, or is in direct mode.)
-To add a file to the annex in unlocked form, \fBgit add\fP can be used instead 
-(that only works when the repository has annex.version 6 or higher).
-.PP
-This command can also be used to add symbolic links, both symlinks to
-annexed content, and other symlinks.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-include\-dotfiles\fP"
-.IP
-Dotfiles are skipped unless explicitly listed, or unless this option is
-used.
-.IP
-.IP "\fB\-\-force\fP"
-Add gitignored files.
-.IP
-.IP "\fB\-\-backend\fP"
-Specifies which key\-value backend to use.
-.IP
-.IP "file matching options"
-Many of the git-annex\-matching\-options(1)
-can be used to specify files to add.
-.IP
-For example: \fB\-\-largerthan=1GB\fP
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Adds multiple files in parallel. This may be faster.
-For example: \fB\-J4\fP  
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.IP "\fB\-\-batch\fP"
-Enables batch mode, in which a file to add is read in a line from stdin,
-the file is added, and repeat.
-.IP
-Note that if a file is skipped (due to not existing, being gitignored,
-already being in git etc), an empty line will be output instead of the
-normal output produced when adding a file.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-unlock(1)
-.PP
-git-annex\-lock(1)
-.PP
-git-annex\-undo(1)
-.PP
-git-annex\-import(1)
-.PP
-git-annex\-unannex(1)
-.PP
-git-annex\-reinject(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-addunused.1 b/man/git-annex-addunused.1
deleted file mode 100644
--- a/man/git-annex-addunused.1
+++ /dev/null
@@ -1,25 +0,0 @@
-.TH git-annex-addunused 1
-.SH NAME
-git-annex-addunused \- add back unused files
-.PP
-.SH SYNOPSIS
-git annex addunused \fB[number|range ...]\fP
-.PP
-.SH DESCRIPTION
-Adds back files for the content corresponding to the numbers or ranges,
-as listed by the last \fBgit annex unused\fP. 
-.PP
-The files will have names starting with "unused."
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-add(1)
-.PP
-git-annex\-unused(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-addurl.1 b/man/git-annex-addurl.1
deleted file mode 100644
--- a/man/git-annex-addurl.1
+++ /dev/null
@@ -1,98 +0,0 @@
-.TH git-annex-addurl 1
-.SH NAME
-git-annex-addurl \- add urls to annex
-.PP
-.SH SYNOPSIS
-git annex addurl \fB[url ...]\fP
-.PP
-.SH DESCRIPTION
-Downloads each url to its own file, which is added to the annex.
-.PP
-When \fBquvi\fP is installed, urls are automatically tested to see if they
-point to a video hosting site, and the video is downloaded instead.
-.PP
-Urls to torrent files (including magnet links) will cause the content of
-the torrent to be downloaded, using \fBaria2c\fP.
-.PP
-Normally the filename is based on the full url, so will look like
-"www.example.com_dir_subdir_bigfile". In some cases, addurl is able to
-come up with a better filename based on other information. Options can also
-be used to get better filenames.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-Avoid immediately downloading the url. The url is still checked
-(via HEAD) to verify that it exists, and to get its size if possible.
-.IP
-.IP "\fB\-\-relaxed\fP"
-Avoid storing the size of the url's content, and accept whatever
-content is there at a future point. (Implies \fB\-\-fast\fP.)
-.IP
-.IP "\fB\-\-raw\fP"
-Prevent special handling of urls by quvi, bittorrent, and other
-special remotes. This will for example, make addurl
-download the .torrent file and not the contents it points to.
-.IP
-.IP "\fB\-\-file=name\fP"
-Use with a filename that does not yet exist to add a new file
-with the specified name and the content downloaded from the url.
-.IP
-If the file already exists, addurl will record that it can be downloaded
-from the specified url(s).
-.IP
-.IP "\fB\-\-pathdepth=N\fP"
-Rather than basing the filename on the whole url, this causes a path to
-be constructed, starting at the specified depth within the path of the
-url.
-.IP
-For example, adding the url http://www.example.com/dir/subdir/bigfile
-with \fB\-\-pathdepth=1\fP will use "dir/subdir/bigfile",
-while \fB\-\-pathdepth=3\fP will use "bigfile". 
-.IP
-It can also be negative; \fB\-\-pathdepth=\-2\fP will use the last
-two parts of the url.
-.IP
-.IP "\fB\-\-prefix=foo\fP \fB\-\-suffix=bar\fP"
-Use to adjust the filenames that are created by addurl. For example,
-\fB\-\-suffix=.mp3\fP can be used to add an extension to the file.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Enables parallel downloads when multiple urls are being added.
-For example: \fB\-J4\fP  
-.IP
-.IP "\fB\-\-batch\fP"
-Enables batch mode, in which lines containing urls to add are read from
-stdin.
-.IP
-.IP "\fB\-\-with\-files\fP"
-When batch mode is enabled, makes it parse lines of the form: "$url $file"
-.IP
-That adds the specified url to the specified file, downloading its
-content if the file does not yet exist; the same as
-\fBgit annex addurl $url \-\-file $file\fP
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.SH CAVEATS
-If annex.largefiles is configured, and does not match a file, git annex
-addurl will add the non\-large file directly to the git repository,
-instead of to the annex. However, this is not done when \-\-fast or \-\-relaxed
-is used.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-rmurl(1)
-.PP
-git-annex\-registerurl(1)
-.PP
-git-annex\-importfeed(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-adjust.1 b/man/git-annex-adjust.1
deleted file mode 100644
--- a/man/git-annex-adjust.1
+++ /dev/null
@@ -1,46 +0,0 @@
-.TH git-annex-adjust 1
-.SH NAME
-git-annex-adjust \- enter an adjusted branch
-.PP
-.SH SYNOPSIS
-git annex adjust \-\-unlock
-.PP
-.SH DESCRIPTION
-Enters an adjusted form of the current branch. The annexed files will
-be treated differently. For example with \-\-unlock all annexed files will
-be unlocked.
-.PP
-The adjusted branch will have a name like "adjusted/master(unlocked)".
-Since it's a regular git branch, you can use \fBgit checkout\fP to switch
-back to the original branch at any time.
-.PP
-While in the adjusted branch, you can use git-annex and git commands as
-usual. Any commits that you make will initially only be made to the
-adjusted branch. 
-.PP
-To propigate changes from the adjusted branch back to the original branch,
-and to other repositories, as well as to merge in changes from other
-repositories, use \fBgit annex sync\fP.
-.PP
-This command can only be used in a v6 git-annex repository.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-unlock\fP"
-.IP
-Unlock all annexed files in the adjusted branch. This allows
-annexed files to be modified.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-unlock(1)
-.PP
-git-annex\-upgrade(1)
-.PP
-git-annex\-sync(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-assistant.1 b/man/git-annex-assistant.1
deleted file mode 100644
--- a/man/git-annex-assistant.1
+++ /dev/null
@@ -1,50 +0,0 @@
-.TH git-annex-assistant 1
-.SH NAME
-git-annex-assistant \- automatically sync changes
-.PP
-.SH SYNOPSIS
-git annex assistant
-.PP
-.SH DESCRIPTION
-Watches for changes to files in the current directory and its subdirectories,
-and automatically syncs them to other remotes.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-autostart\fP"
-.IP
-Automatically starts the assistant running in each repository listed
-in the file \fB~/.config/git-annex/autostart\fP
-.IP
-This is typically started at boot, or when you log in.
-.IP
-.IP "\fB\-\-startdelay=N\fP"
-Wait N seconds before running the startup scan. This process can
-be expensive and you may not want to run it immediately upon login.
-.IP
-When \-\-autostart is used, defaults to \-\-startdelay=5.
-.IP
-.IP "\fB\-\-foreground\fP"
-Avoid forking to the background.
-.IP
-.IP "\fB\-\-stop\fP"
-Stop a running daemon in the current repository.
-.IP
-.IP "\fB\-\-autostop\fP"
-The complement to \-\-autostart; stops all running daemons in the
-repositories listed in the autostart file.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-watch(1)
-.PP
-git-annex\-schedule(1)
-.PP
-For more details about the git-annex assistant, see
-<https://git-annex.branchable.com/assistant/>
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-calckey.1 b/man/git-annex-calckey.1
deleted file mode 100644
--- a/man/git-annex-calckey.1
+++ /dev/null
@@ -1,35 +0,0 @@
-.TH git-annex-calckey 1
-.SH NAME
-git-annex-calckey \- calculates the key that would be used to refer to a file
-.PP
-.SH SYNOPSIS
-git annex calckey \fB[file ...]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command calculates the key that would be used
-to refer to a file. The file is not added to the annex by this command.
-The key is output to stdout.
-.PP
-The backend used is the first listed in the annex.backends configuration
-setting, which can be overridden by the \-\-backend option.
-For example, to force use of the SHA1 backend:
-.PP
- git annex calckey \-\-backend=SHA1 file
-.PP
-.SH OPTIONS
-.IP "\fB\-\-batch\fP"
-.IP
-Enable batch mode, in which a line containing the filename is read from
-stdin, the key is output to stdout (with a trailing newline), and repeat.
-.IP
-.IP "\fB\-\-backend=name\fP"
-Specifies which key\-value backend to use.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-checkpresentkey.1 b/man/git-annex-checkpresentkey.1
deleted file mode 100644
--- a/man/git-annex-checkpresentkey.1
+++ /dev/null
@@ -1,34 +0,0 @@
-.TH git-annex-checkpresentkey 1
-.SH NAME
-git-annex-checkpresentkey \- check if key is present in remote
-.PP
-.SH SYNOPSIS
-git annex checkpresentkey \fBkey\fP \fB[remote]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command verifies if the specified key's content
-is present in the specified remote.
-.PP
-When no remote is specified, it verifies if the key's content is present
-somewhere, checking accessible remotes until it finds the content.
-.PP
-Exits 0 if the content is verified present, or 1 if it is verified to not
-be present. If there is a problem, the special exit code 100 is used,
-and an error message is output to stderr.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-batch\fP"
-.IP
-Enables batch mode. In this mode, the \fBkey\fP is not specified at the
-command line, but the \fBremote\fP may still be. Lines containing keys are
-read from stdin, and a line is output with "1" if the key is verified to
-be present, and "0" otherwise.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-contentlocation.1 b/man/git-annex-contentlocation.1
deleted file mode 100644
--- a/man/git-annex-contentlocation.1
+++ /dev/null
@@ -1,34 +0,0 @@
-.TH git-annex-contentlocation 1
-.SH NAME
-git-annex-contentlocation \- looks up content for a key
-.PP
-.SH SYNOPSIS
-git annex contentlocation \fB[key ...]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command looks up filename used to store the content 
-of a key. The filename is output to stdout. If the key's content is not
-present in the local repository, nothing is output, and it exits nonzero.
-.PP
-Note that in direct mode, the file will typically be in the git work
-tree, and while its content should correspond to the key, the file
-could become modified at any time after git-annex checks it.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-batch\fP"
-.IP
-Enable batch mode, in which a line containing the key is read from
-stdin, the filename to its content is output to stdout (with a trailing
-newline), and repeat.
-.IP
-Note that if a key's content is not present, an empty line is output to
-stdout instead.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-copy.1 b/man/git-annex-copy.1
deleted file mode 100644
--- a/man/git-annex-copy.1
+++ /dev/null
@@ -1,68 +0,0 @@
-.TH git-annex-copy 1
-.SH NAME
-git-annex-copy \- copy content of files to/from another repository
-.PP
-.SH SYNOPSIS
-git annex copy \fB[path ...] [\-\-from=remote|\-\-to=remote]\fP
-.PP
-.SH DESCRIPTION
-Copies the content of files from or to another remote.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-from=remote\fP"
-.IP
-Use this option to copy the content of files from the specified
-remote to the local repository.
-.IP
-Any files that are not available on the remote will be silently skipped.
-.IP
-.IP "\fB\-\-to=remote\fP"
-Use this option to copy the content of files from the local repository
-to the specified remote.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Enables parallel transfers with up to the specified number of jobs
-running at once. For example: \fB\-J10\fP
-.IP
-.IP "\fB\-\-auto\fP"
-Rather than copying all files, only copy files that don't yet have
-the desired number of copies, or that are preferred content of the
-destination repository. See git-annex\-preferred\-content(1)
-.IP
-.IP "\fB\-\-fast\fP"
-Avoid contacting the remote to check if it has every file when copying
-\-\-to it.
-.IP
-.IP "\fB\-\-force\fP"
-Force checking the remote for every file when copying \-\-from it.
-.IP
-.IP "\fB\-\-all\fP"
-Rather than specifying a filename or path to copy, this option can be
-used to copy all available versions of all files.
-.IP
-This is the default behavior when running git-annex in a bare repository.
-.IP
-.IP "\fB\-\-unused\fP"
-Operate on files found by last run of git-annex unused.
-.IP
-.IP "\fB\-\-key=keyname\fP"
-Use this option to move a specified key.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to copy.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-get(1)
-.PP
-git-annex\-move(1)
-.PP
-git-annex\-drop(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-dead.1 b/man/git-annex-dead.1
deleted file mode 100644
--- a/man/git-annex-dead.1
+++ /dev/null
@@ -1,41 +0,0 @@
-.TH git-annex-dead 1
-.SH NAME
-git-annex-dead \- hide a lost repository or key
-.PP
-.SH SYNOPSIS
-git annex dead \fB[repository ...] [\-\-key key]\fP
-.PP
-.SH DESCRIPTION
-This command exists to deal with situations where data has been lost,
-and you know it has, and you want to stop being reminded of that fact.
-.PP
-When a repository is specified, indicates that the repository has
-been irretrievably lost, so it will not be listed in eg, \fBgit annex info\fP.
-Repositories can be specified using their remote name, their
-description, or their UUID. (To undo, use \fBgit-annex semitrust\fP.)
-.PP
-When a key is specified, indicates that the content of that key has been
-irretrievably lost. This prevents \fBgit annex fsck \-\-all\fP from complaining
-about it. (To undo, add the key's content back to the repository,
-by using eg, \fBgit-annex reinject\fP.)
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-trust(1)
-.PP
-git-annex\-semitrust(1)
-.PP
-git-annex\-untrust(1)
-.PP
-git-annex\-expire(1)
-.PP
-git-annex\-fsck(1)
-.PP
-git-annex\-reinject(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-describe.1 b/man/git-annex-describe.1
deleted file mode 100644
--- a/man/git-annex-describe.1
+++ /dev/null
@@ -1,28 +0,0 @@
-.TH git-annex-describe 1
-.SH NAME
-git-annex-describe \- change description of a repository
-.PP
-.SH SYNOPSIS
-git annex describe repository description
-.PP
-.SH DESCRIPTION
-Changes the description of a repository.
-.PP
-The repository to describe can be specified by git remote name or
-by uuid. To change the description of the current repository, use
-"here".
-.PP
-Repository descriptions are displayed by git-annex in various places.
-They are most useful when git-annex knows about a repository, but there is
-no git remote corresponding to it.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-init(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-diffdriver.1 b/man/git-annex-diffdriver.1
deleted file mode 100644
--- a/man/git-annex-diffdriver.1
+++ /dev/null
@@ -1,29 +0,0 @@
-.TH git-annex-diffdriver 1
-.SH NAME
-git-annex-diffdriver \- external git diff driver shim
-.PP
-.SH SYNOPSIS
-git annex diffdriver \fB\-\- cmd \-\-opts \-\-\fP
-.PP
-.SH DESCRIPTION
-This is an external git diff driver shim. Normally, when using \fBgit diff\fP
-with an external git driver, the symlinks to annexed files are not set up
-right, so the external git driver cannot read them in order to perform
-smart diffing of their contents. This command works around the problem,
-by passing the fixed up files to the real external diff driver.
-.PP
-To use, just configure git to use "git-annex diffdriver \-\- cmd params \-\-"
-as the external diff command, where cmd is the real external diff
-command you want to use, and params are any extra parameters to pass
-to it. Note the trailing "\-\-", which is required.
-.PP
-For example, set \fBGIT_EXTERNAL_DIFF=git-annex diffdriver \-\- j\-c\-diff \-\-\fP
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-direct.1 b/man/git-annex-direct.1
deleted file mode 100644
--- a/man/git-annex-direct.1
+++ /dev/null
@@ -1,37 +0,0 @@
-.TH git-annex-direct 1
-.SH NAME
-git-annex-direct \- switch repository to direct mode
-.PP
-.SH SYNOPSIS
-git annex direct
-.PP
-.SH DESCRIPTION
-Switches a repository to use direct mode, where rather than symlinks to
-files, the files are directly present in the repository.
-.PP
-As part of the switch to direct mode, any changed files will be committed.
-.PP
-Note that git commands that operate on the work tree will refuse to
-run in direct mode repositories. Use \fBgit annex proxy\fP to safely run such
-commands.
-.PP
-Note that the direct mode/indirect mode distinction is removed in v6
-git-annex repositories. In such a repository, you can
-use git-annex\-unlock(1) to make a file's content be directly present.
-You can also use git-annex\-adjust(1) to enter a branch where all
-annexed files are unlocked, which is similar to the old direct mode.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-indirect(1)
-.PP
-git-annex\-unlock(1)
-.PP
-git-annex\-adjust(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-drop.1 b/man/git-annex-drop.1
deleted file mode 100644
--- a/man/git-annex-drop.1
+++ /dev/null
@@ -1,67 +0,0 @@
-.TH git-annex-drop 1
-.SH NAME
-git-annex-drop \- remove content of files from repository
-.PP
-.SH SYNOPSIS
-git annex drop \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Drops the content of annexed files from this repository, when
-possible.
-.PP
-git-annex will refuse to drop content if it cannot verify it is
-safe to do so.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-from=remote\fP"
-.IP
-Rather than dropping the content of files in the local repository,
-this option can specify a remote from which the files'
-contents should be removed.
-.IP
-.IP "\fB\-\-auto\fP"
-Rather than trying to drop all specified files, drop only files that
-are not preferred content of the repository.
-See git-annex\-preferred\-content(1)
-.IP
-.IP "\fB\-\-force\fP"
-Use this option with care! It bypasses safety checks, and forces
-git-annex to delete the content of the specified files, even from
-the last repository that is storing their content. Data loss can
-result from using this option.
-.IP
-.IP "\fB\-\-all\fP"
-Rather than specifying a filename or path to drop, this option can be
-used to drop all available versions of all files.
-.IP
-This is the default behavior when running git-annex drop in a bare repository.
-.IP
-.IP "\fB\-\-unused\fP"
-Drop files found by last run of git-annex unused.
-.IP
-.IP "\fB\-\-key=keyname\fP"
-Use this option to drop a specified key.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to drop.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Runs multiple drop jobs in parallel. This is particularly useful
-when git-annex has to contact remotes to check if it can drop files.
-For example: \fB\-J4\fP  
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-get(1)
-.PP
-git-annex\-move(1)
-.PP
-git-annex\-copy(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-dropkey.1 b/man/git-annex-dropkey.1
deleted file mode 100644
--- a/man/git-annex-dropkey.1
+++ /dev/null
@@ -1,37 +0,0 @@
-.TH git-annex-dropkey 1
-.SH NAME
-git-annex-dropkey \- drops annexed content for specified keys
-.PP
-.SH SYNOPSIS
-git annex dropkey \fB[key ...]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command drops the annexed data for the specified
-keys from this repository.
-.PP
-This can be used to drop content for arbitrary keys, which do not need
-to have a file in the git repository pointing at them.
-.PP
-Warning: This command does not check that enough other copies of the content
-exist; using it can easily result in data loss.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-batch\fP"
-.IP
-Enables batch mode, in which lines containing keys to drop are read from
-stdin.
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-setkey(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-dropunused.1 b/man/git-annex-dropunused.1
deleted file mode 100644
--- a/man/git-annex-dropunused.1
+++ /dev/null
@@ -1,36 +0,0 @@
-.TH git-annex-dropunused 1
-.SH NAME
-git-annex-dropunused \- drop unused file content
-.PP
-.SH SYNOPSIS
-git annex dropunused \fB[number|range ...]\fP
-.PP
-.SH DESCRIPTION
-Drops the data corresponding to the numbers, as listed by the last
-git annex unused
-.PP
-You can also specify ranges of numbers, such as "1\-1000".
-Or, specify "all" to drop all unused data.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-from=remote\fP"
-.IP
-Rather than dropping the unused files from the local repository,
-drop them from the remote repository.
-.IP
-.IP "\fB\-\-force\fP"
-Use this option with care! It bypasses safety checks, and forces
-git-annex to delete the content of the specified files, even from
-the last repository that is storing their content. Data loss can
-result from using this option.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-unused(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-edit.1 b/man/git-annex-edit.1
deleted file mode 100644
--- a/man/git-annex-edit.1
+++ /dev/null
@@ -1,16 +0,0 @@
-.TH git-annex-edit 1
-.SH NAME
-git-annex-unlock \- unlock files for modification
-.PP
-.SH SYNOPSIS
-git annex edit \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-This is an alias for the \fBunlock\fP command; see git-annex\-unlock(1)
-for details.
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-enableremote.1 b/man/git-annex-enableremote.1
deleted file mode 100644
--- a/man/git-annex-enableremote.1
+++ /dev/null
@@ -1,62 +0,0 @@
-.TH git-annex-enableremote 1
-.SH NAME
-git-annex-enableremote \- enables use of an existing special remote
-.PP
-.SH SYNOPSIS
-git annex enableremote \fBname|uuid|desc [param=value ...]\fP
-.PP
-.SH DESCRIPTION
-Enables use of an existing special remote in the current repository,
-which may be a different repository than the one in which it was
-originally created with the initremote command.
-.PP
-The name of the remote is the same name used when originally
-creating that remote with \fBgit annex initremote\fP. Run 
-\fBgit annex enableremote\fP without any name to get a list of
-special remote names. Or you can specify the uuid or description of the
-remote.
-.PP
-Some special remotes may need parameters to be specified every time they are
-enabled. For example, the directory special remote requires a directory=
-parameter every time.
-.PP
-This command can also be used to modify the configuration of an existing
-special remote, by specifying new values for parameters that are
-usually set when using initremote. (However, some settings such as
-the as the encryption scheme cannot be changed once a special remote
-has been created.)
-.PP
-The GPG keys that an encrypted special remote is encrypted with can be
-changed using the keyid+= and keyid\-= parameters. These respectively
-add and remove keys from the list. However, note that removing a key
-does NOT necessarily prevent the key's owner from accessing data
-in the encrypted special remote
-(which is by design impossible, short of deleting the remote).
-.PP
-One use\-case of keyid\-= is to replace a revoked key with
-a new key:
-.PP
- git annex enableremote mys3 keyid\-=revokedkey keyid+=newkey
-.PP
-Also, note that for encrypted special remotes using plain public\-key
-encryption (encryption=pubkey), adding or removing a key has NO effect
-on files that have already been copied to the remote. Hence using
-keyid+= and keyid\-= with such remotes should be used with care, and
-make little sense except in cases like the revoked key example above.
-.PP
-If you get tired of manually enabling a special remote in each new clone,
-you can pass "autoenable=true". Then when git-annex\-init(1) is run in
-a new clone, it will will attempt to enable the special remote. Of course,
-this works best when the special remote does not need anything special
-to be done to get it enabled.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-initremote(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-examinekey.1 b/man/git-annex-examinekey.1
deleted file mode 100644
--- a/man/git-annex-examinekey.1
+++ /dev/null
@@ -1,49 +0,0 @@
-.TH git-annex-examinekey 1
-.SH NAME
-git-annex-examinekey \- prints information from a key
-.PP
-.SH SYNOPSIS
-git annex examinekey \fB[key ...]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command is given a key, and prints information
-that can be determined purely by looking at the key.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-format=value\fP"
-.IP
-Use custom output formatting.
-.IP
-The value is a format string, in which '${var}' is expanded to the
-value of a variable. To right\-justify a variable with whitespace,
-use '${var;width}' ; to left\-justify a variable, use '${var;\-width}';
-to escape unusual characters in a variable, use '${escaped_var}'
-.IP
-These variables are available for use in formats: key, backend,
-bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for
-the mtime field of a WORM key).
-.IP
-Also, '\\n' is a newline, '\\000' is a NULL, etc.
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.IP "\fB\-\-batch\fP"
-Enable batch mode, in which a line containing a key is read from stdin,
-the information about it is output to stdout, and repeat.
-.IP
-.SH EXAMPLES
-The location a key's value is stored (in indirect mode)
-can be looked up by running:
-.PP
- git annex examinekey $KEY \-\-format='.git/annex/objects/${hashdirmixed}${key}/${key}'
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-expire.1 b/man/git-annex-expire.1
deleted file mode 100644
--- a/man/git-annex-expire.1
+++ /dev/null
@@ -1,61 +0,0 @@
-.TH git-annex-expire 1
-.SH NAME
-git-annex-expire \- expire inactive repositories
-.PP
-.SH SYNOPSIS
-git annex expire \fB[repository:]time ...\fP
-.PP
-.SH DESCRIPTION
-This command expires repositories that have not performed some activity
-within a specified time period. A repository is expired by marking it as
-dead. De\-expiration is also done; if a dead repository performed some
-activity recently, it is marked as semitrusted again.
-.PP
-This can be useful when it's not possible to keep track of the state
-of repositories manually. For example, a distributed network of
-repositories where nobody can directly access all the repositories to
-check their status.
-.PP
-The repository can be specified using the name of a remote,
-or the description or uuid of the repository. 
-.PP
-The time is in the form "60d" or "1y". A time of "never" will disable
-expiration.
-.PP
-If a time is specified without a repository, it is used as the default
-value for all repositories. Note that the current repository is never
-expired.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-no\-act\fP"
-.IP
-Print out what would be done, but not not actually expire or unexpire
-any repositories.
-.IP
-.IP "\fB\-\-activity=Name\fP"
-Specify the activity that a repository must have performed to avoid being
-expired. The default is any activity.
-.IP
-Currently, the only activity that can be performed to avoid expiration
-is \fBgit annex fsck\fP. Note that fscking a remote updates the
-expiration of the remote repository, not the local repository.
-.IP
-The first version of git-annex that recorded fsck activity was
-5.20150405.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-fsck(1)
-.PP
-git-annex\-schedule(1)
-.PP
-git-annex\-dead(1)
-.PP
-git-annex\-semitrust(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-find.1 b/man/git-annex-find.1
deleted file mode 100644
--- a/man/git-annex-find.1
+++ /dev/null
@@ -1,70 +0,0 @@
-.TH git-annex-find 1
-.SH NAME
-git-annex-find \- lists available files
-.PP
-.SH SYNOPSIS
-git annex find \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Outputs a list of annexed files in the specified path. With no path,
-finds files in the current directory and its subdirectories.
-.PP
-.SH OPTIONS
-.IP "matching options"
-.IP
-The git-annex\-matching\-options(1)
-can be used to specify files to list.
-.IP
-By default, the find command only lists annexed files whose content is
-currently present. Specifying any of the matching options will override
-this default behavior.
-.IP
-To list all annexed files, present or not, specify \fB\-\-include "*"\fP.
-.IP
-To list annexed files whose content is not present, specify \fB\-\-not \-\-in=here\fP
-.IP
-.IP "\fB\-\-print0\fP"
-Output filenames terminated with nulls, for use with \fBxargs \-0\fP
-.IP
-.IP "\fB\-\-format=value\fP"
-Use custom output formatting.
-.IP
-The value is a format string, in which '${var}' is expanded to the
-value of a variable. To right\-justify a variable with whitespace,
-use '${var;width}' ; to left\-justify a variable, use '${var;\-width}';
-to escape unusual characters in a variable, use '${escaped_var}'
-.IP
-These variables are available for use in formats: file, key, backend,
-bytesize, humansize, keyname, hashdirlower, hashdirmixed, mtime (for
-the mtime field of a WORM key).
-.IP
-Also, '\\n' is a newline, '\\000' is a NULL, etc.
-.IP
-The default output format is the same as \fB\-\-format='${file}\\n'\fP
-.IP
-.IP "\fB\-\-json\fP"
-Output the list of files in JSON format.
-.IP
-This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.IP "\fB\-\-batch\fP"
-Enables batch mode, in which a file is read in a line from stdin,
-its information displayed, and repeat.
-.IP
-Note that if the file is not an annexed file, or is not present,
-or otherwise doesn't meet the matching options, an empty line
-will be output instead.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-whereis(1)
-.PP
-git-annex\-list(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-findref.1 b/man/git-annex-findref.1
deleted file mode 100644
--- a/man/git-annex-findref.1
+++ /dev/null
@@ -1,23 +0,0 @@
-.TH git-annex-findref 1
-.SH NAME
-git-annex-findref \- lists files in a git ref
-.PP
-.SH SYNOPSIS
-git annex findref \fB[ref]\fP
-.PP
-.SH DESCRIPTION
-This is very similar to the \fBgit-annex find\fP command, but instead of
-finding files in the current work tree, it finds files in the
-specified git ref.
-.PP
-.SH OPTIONS
-Same as git-annex\-find(1)
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-fix.1 b/man/git-annex-fix.1
deleted file mode 100644
--- a/man/git-annex-fix.1
+++ /dev/null
@@ -1,33 +0,0 @@
-.TH git-annex-fix 1
-.SH NAME
-git-annex-fix \- fix up links to annexed content
-.PP
-.SH SYNOPSIS
-git annex fix \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Fixes up symlinks that have become broken to again point to annexed
-content.
-.PP
-This is useful to run manually when you have been moving the symlinks
-around, but is done automatically when committing a change with git too.
-.PP
-Also, adjusts unlocked files to be copies or hard links as
-configured by annex.thin.
-.PP
-.SH OPTIONS
-.IP "file matching options"
-.IP
-The git-annex\-matching\-options(1)
-can be used to specify files to fix.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-fsck(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-forget.1 b/man/git-annex-forget.1
deleted file mode 100644
--- a/man/git-annex-forget.1
+++ /dev/null
@@ -1,33 +0,0 @@
-.TH git-annex-forget 1
-.SH NAME
-git-annex-forget \- prune git-annex branch history
-.PP
-.SH SYNOPSIS
-git annex forget
-.PP
-.SH DESCRIPTION
-Causes the git-annex branch to be rewritten, throwing away historical
-data about past locations of files. The resulting branch will use less
-space, but \fBgit annex log\fP will not be able to show where
-files used to be located.
-.PP
-When this rewritten branch is merged into other clones of
-the repository, \fBgit-annex\fP will automatically perform the same rewriting
-to their local \fBgit-annex\fP branches. So the forgetfulness will automatically
-propagate out from its starting point until all repositories running
-git-annex have forgotten their old history. (You may need to force
-git to push the branch to any git repositories not running git-annex.)
-.PP
-.SH OPTIONS
-.IP "\fB\-\-drop\-dead\fP"
-.IP
-Also prune references to repositories that have been marked as dead.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-fromkey.1 b/man/git-annex-fromkey.1
deleted file mode 100644
--- a/man/git-annex-fromkey.1
+++ /dev/null
@@ -1,35 +0,0 @@
-.TH git-annex-fromkey 1
-.SH NAME
-git-annex-fromkey \- adds a file using a specific key
-.PP
-.SH SYNOPSIS
-git annex fromkey \fB[key file]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command can be used to manually set up a file
-in the git repository to link to a specified key.
-.PP
-If the key and file are not specified on the command line, they are
-instead read from stdin. Any number of lines can be provided in this
-mode, each containing a key and filename, separated by a single space.
-.PP
-Normally the key is a git-annex formatted key. However, to make it easier
-to use this to add urls, if the key cannot be parsed as a key, and is a
-valid url, an URL key is constructed from the url. Note that this does not
-register the url as a location of the key; use git-annex\-registerurl(1)
-to do that.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-force\fP"
-.IP
-Allow making a file link to a key whose content is not in the local
-repository. The key may not be known to git-annex at all.  
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-fsck.1 b/man/git-annex-fsck.1
deleted file mode 100644
--- a/man/git-annex-fsck.1
+++ /dev/null
@@ -1,91 +0,0 @@
-.TH git-annex-fsck 1
-.SH NAME
-git-annex-fsck \- find and fix problems
-.PP
-.SH SYNOPSIS
-git annex fsck \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-With no parameters, this command checks the whole annex for consistency,
-and warns about or fixes any problems found. This is a good complement to
-\fBgit fsck\fP.
-.PP
-With parameters, only the specified files are checked.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-from=remote\fP"
-.IP
-Check a remote, rather than the local repository.
-.IP
-Note that by default, files will be copied from the remote to check
-their contents. To avoid this expensive transfer, and only
-verify that the remote still has the files that are expected to be on it,
-add the \fB\-\-fast\fP option.
-.IP
-.IP "\fB\-\-fast\fP"
-Avoids expensive checksum calculations (and expensive transfers when
-fscking a remote).
-.IP
-.IP "\fB\-\-incremental\fP"
-Start a new incremental fsck pass. An incremental fsck can be interrupted
-at any time, with eg ctrl\-c.
-.IP
-.IP "\fB\-\-more\fP"
-Resume the last incremental fsck pass, where it left off.
-.IP
-Resuming may redundantly check some files that were checked
-before. Any files that fsck found problems with before will be re\-checked
-on resume. Also, checkpoints are made every 1000 files or every 5 minutes
-during a fsck, and it resumes from the last checkpoint.
-.IP
-.IP "\fB\-\-incremental\-schedule=time\fP"
-This makes a new incremental fsck be started only a specified
-time period after the last incremental fsck was started.
-.IP
-The time is in the form "10d" or "300h".
-.IP
-Maybe you'd like to run a fsck for 5 hours at night, picking up each
-night where it left off. You'd like this to continue until all files
-have been fscked. And once it's done, you'd like a new fsck pass to start,
-but no more often than once a month. Then put this in a nightly cron job:
-.IP
- git annex fsck \-\-incremental\-schedule 30d \-\-time\-limit 5h
-.IP
-.IP "\fB\-\-numcopies=N\fP"
-Override the normally configured number of copies. 
-.IP
-To verify data integrity only while disregarding required number of copies,
-use \fB\-\-numcopies=1\fP.
-.IP
-.IP "\fB\-\-all\fP"
-Normally only the files in the currently checked out branch
-are fscked. This option causes all versions of all files to be fscked.
-.IP
-This is the default behavior when running git-annex in a bare repository.
-.IP
-.IP "\fB\-\-unused\fP"
-Operate on files found by last run of git-annex unused.
-.IP
-.IP "\fB\-\-key=keyname\fP"
-Use this option to fsck a specified key.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to fsck.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Runs multiple fsck jobs in parallel. For example: \fB\-J4\fP
-.IP
-.SH OPTIONS
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-repair(1)
-.PP
-git-annex\-expire(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-fuzztest.1 b/man/git-annex-fuzztest.1
deleted file mode 100644
--- a/man/git-annex-fuzztest.1
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH git-annex-fuzztest 1
-.SH NAME
-git-annex-fuzztest \- generates fuzz test files
-.PP
-.SH SYNOPSIS
-git annex fuzztest
-.PP
-.SH DESCRIPTION
-Generates random changes to files in the current repository,
-for use in testing the assistant. This is dangerous, so it will not
-do anything unless \-\-forced.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-get.1 b/man/git-annex-get.1
deleted file mode 100644
--- a/man/git-annex-get.1
+++ /dev/null
@@ -1,71 +0,0 @@
-.TH git-annex-get 1
-.SH NAME
-git-annex-get \- make content of annexed files available
-.PP
-.SH SYNOPSIS
-git annex get \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Makes the content of annexed files available in this repository. This
-will involve copying them from a remote repository, or downloading them,
-or transferring them from some kind of key\-value store.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-auto\fP"
-.IP
-Rather than getting all files, get only files that don't yet have
-the desired number of copies, or that are preferred content of the
-repository. See git-annex\-preferred\-content(1)
-.IP
-.IP "\fB\-\-from=remote\fP"
-Normally git-annex will choose which remotes to get the content
-from. Use this option to specify which remote to use. 
-.IP
-Any files that are not available on the remote will be silently skipped.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Enables parallel download with up to the specified number of jobs
-running at once. For example: \fB\-J10\fP
-.IP
-.IP "\fB\-\-incomplete\fP"
-Resume any incomplete downloads of files that were started and
-interrupted at some point previously. Useful to pick up where you left
-off ... when you don't quite remember where that was.
-.IP
-These incomplete files are the same ones that are
-listed as unused temp files by git-annex\-unused(1).
-.IP
-Note that the git-annex key will be displayed when downloading,
-as git-annex does not know the associated file, and the associated file
-may not even be in the current git working directory.
-.IP
-.IP "\fB\-\-all\fP"
-Rather than specifying a filename or path to get, this option can be
-used to get all available versions of all files.
-.IP
-This is the default behavior when running git-annex in a bare repository.
-.IP
-.IP "\fB\-\-unused\fP"
-Operate on files found by last run of git-annex unused.
-.IP
-.IP "\fB\-\-key=keyname\fP"
-Use this option to get a specified key.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to get.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-drop(1)
-.PP
-git-annex\-copy(1)
-.PP
-git-annex\-move(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-group.1 b/man/git-annex-group.1
deleted file mode 100644
--- a/man/git-annex-group.1
+++ /dev/null
@@ -1,32 +0,0 @@
-.TH git-annex-group 1
-.SH NAME
-git-annex-group \- add a repository to a group
-.PP
-.SH SYNOPSIS
-git annex group \fBrepository groupname\fP
-.PP
-.SH DESCRIPTION
-Adds a repository to a group, such as "archival", "enduser", or "transfer".
-The groupname must be a single word.
-.PP
-Omit the groupname to show the current groups that a repository is in.
-.PP
-There are some standard groups that have different default preferred content
-settings. See <https://git-annex.branchable.com/preferred_content/standard_groups/>
-.PP
-A repository can be in multiple groups at the same time.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-ungroup(1)
-.PP
-git-annex\-preferred\-content(1)
-.PP
-git-annex\-wanted(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-groupwanted.1 b/man/git-annex-groupwanted.1
deleted file mode 100644
--- a/man/git-annex-groupwanted.1
+++ /dev/null
@@ -1,35 +0,0 @@
-.TH git-annex-groupwanted 1
-.SH NAME
-git-annex-groupwanted \- get or set groupwanted expression
-.PP
-.SH SYNOPSIS
-git annex groupwanted \fBgroupname [expression]\fP
-.PP
-.SH DESCRIPTION
-Sets or displays the groupwanted expression. This will be used by
-repositories that are in the group, and that have their preferred
-content expression set to "groupwanted".
-.PP
-For example, to configure a group named redundantarchive, and
-make repositories in the group want to contain 3 copies of every file:
-.PP
- git annex groupwanted redundantarchive "not (copies=redundantarchive:3)"
- for repo in foo bar baz; do
- 	git annex group $repo redundantarchive
- 	git annex wanted $repo groupwanted
- done
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-group(1)
-.PP
-git-annex\-wanted(1)
-.PP
-git-annex\-preferred\-content(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-import.1 b/man/git-annex-import.1
deleted file mode 100644
--- a/man/git-annex-import.1
+++ /dev/null
@@ -1,86 +0,0 @@
-.TH git-annex-import 1
-.SH NAME
-git-annex-import \- move and add files from outside git working copy
-.PP
-.SH SYNOPSIS
-git annex import \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Moves files from somewhere outside the git working copy, and adds them to
-the annex. Individual files to import can be specified.
-If a directory is specified, the entire directory is imported.
-.PP
- git annex import /media/camera/DCIM/*
-.PP
-When importing files, there's a possibility of importing a duplicate
-of a file that is already known to git-annex \-\- its content is either
-present in the local repository already, or git-annex knows of another
-repository that contains it, or it was present in the annex before but has
-been removed now.
-.PP
-By default, importing a duplicate of a known file will result in
-a new filename being added to the repository, so the duplicate file
-is present in the repository twice. (With all checksumming backends,
-including the default SHA256E, only one copy of the data will be stored.)
-.PP
-Several options can be used to adjust handling of duplicate files.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-duplicate\fP"
-.IP
-Do not delete files from the import location.
-.IP
-This could allow importing the same files repeatedly
-to different locations in a repository. More likely, it could be used to
-import the same files to a number of different branches or separate git
-repositories.
-.IP
-.IP "\fB\-\-deduplicate\fP"
-Only import files that are not duplicates;
-duplicate files will be deleted from the import location.
-.IP
-.IP "\fB\-\-skip\-duplicates\fP"
-Only import files that are not duplicates; and avoid deleting
-duplicate files from the import location.
-.IP
-.IP "\fB\-\-clean\-duplicates\fP"
-Does not import any files, but any files found in the import location
-that are duplicates are deleted.
-.IP
-.IP "\fB\-\-force\fP"
-Allow existing files to be overwritten by newly imported files.
-.IP
-Also, causes .gitignore to not take effect when adding files.
-.IP
-.IP "file matching options"
-Many of the git-annex\-matching\-options(1)
-can be used to specify files to import.
-.IP
- 	git annex import /dir \-\-include='*.png'
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Imports multiple files in parallel. This may be faster.
-For example: \fB\-J4\fP  
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.SH CAVEATS
-Note that using \fB\-\-deduplicate\fP or \fB\-\-clean\-duplicates\fP with the WORM
-backend does not look at file content, but filename and mtime.
-.PP
-If annex.largefiles is configured, and does not match a file, git annex
-import will add the non\-large file directly to the git repository,
-instead of to the annex.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-add(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-importfeed.1 b/man/git-annex-importfeed.1
deleted file mode 100644
--- a/man/git-annex-importfeed.1
+++ /dev/null
@@ -1,45 +0,0 @@
-.TH git-annex-importfeed 1
-.SH NAME
-git-annex-importfeed \- import files from podcast feeds
-.PP
-.SH SYNOPSIS
-git annex importfeed \fB[url ...]\fP
-.PP
-.SH DESCRIPTION
-Imports the contents of podcast feeds. Only downloads files whose
-content has not already been added to the repository before, so you can
-delete, rename, etc the resulting files and repeated runs won't duplicate
-them.
-.PP
-When quvi is installed, links in the feed are tested to see if they
-are on a video hosting site, and the video is downloaded. This allows
-importing e.g., YouTube playlists.
-.PP
-To make the import process add metadata to the imported files from the feed,
-\fBgit config annex.genmetadata true\fP
-.PP
-.SH OPTIONS
-.IP "\fB\-\-force\fP"
-.IP
-Force downloading items it's seen before.
-.IP
-.IP "\fB\-\-template\fP"
-Controls where the files are stored.
-.IP
-The default template is '${feedtitle}/${itemtitle}${extension}'
-.IP
-Other available variables for templates: feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid, itempubdate, title, author
-.IP
-.IP "\fB\-\-relaxed\fP, \fB\-\-fast\fP, \fB\-\-raw\fP"
-These options behave the same as when using git-annex\-addurl(1).
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-addurl(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-indirect.1 b/man/git-annex-indirect.1
deleted file mode 100644
--- a/man/git-annex-indirect.1
+++ /dev/null
@@ -1,24 +0,0 @@
-.TH git-annex-indirect 1
-.SH NAME
-git-annex-indirect \- switch repository to indirect mode
-.PP
-.SH SYNOPSIS
-git annex indirect
-.PP
-.SH DESCRIPTION
-Switches a repository back from direct mode to the default, indirect
-mode.
-.PP
-Note that the direct mode/indirect mode distinction is removed in v6
-git-annex repositories.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-direct(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-info.1 b/man/git-annex-info.1
deleted file mode 100644
--- a/man/git-annex-info.1
+++ /dev/null
@@ -1,51 +0,0 @@
-.TH git-annex-info 1
-.SH NAME
-git-annex-info \- shows information about the specified item or the repository as a whole
-.PP
-.SH SYNOPSIS
-git annex info \fB[directory|file|remote|uuid ...]\fP
-.PP
-.SH DESCRIPTION
-Displays statistics and other information for the specified item,
-which can be a directory, or a file, or a remote, or the uuid of a
-repository.
-.PP
-When no item is specified, displays statistics and information
-for the repository as a whole.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-Only show the data that can be gathered quickly.
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.IP "\fB\-\-bytes\fP"
-Show file sizes in bytes, disabling the default nicer units.
-.IP
-.IP "\fB\-\-batch\fP"
-Enable batch mode, in which a line containing an item is read from stdin,
-the information about it is output to stdout, and repeat.
-.IP
-.IP "file matching options"
-When a directory is specified, the git-annex\-matching\-options(1)
-can be used to select the files in the directory that are included
-in the statistics.
-.IP
-.SH EXAMPLES
-Suppose you want to run "git annex get .", but
-would first like to see how much disk space that will use.
-Then run:
-.PP
- git annex info \-\-fast . \-\-not \-\-in here
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-init.1 b/man/git-annex-init.1
deleted file mode 100644
--- a/man/git-annex-init.1
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH git-annex-init 1
-.SH NAME
-git-annex-init \- initialize git-annex
-.PP
-.SH SYNOPSIS
-git annex init \fB[description]\fP
-.PP
-.SH DESCRIPTION
-Until a repository (or one of its remotes) has been initialized,
-git-annex will refuse to operate on it, to avoid accidentally
-using it in a repository that was not intended to have an annex.
-.PP
-It's useful, but not mandatory, to initialize each new clone
-of a repository with its own description. If you don't provide one,
-one will be generated using the username, hostname and the path.
-.PP
-If any special remotes were configured with autoenable=true,
-this will also attempt to enable them. See git-annex\-initremote(1).
-To disable this, re\-enable a remote with "autoenable=false", or
-mark it as dead (see git-annex\-dead(1)).
-.PP
-This command is entirely safe, although usually pointless, to run inside an
-already initialized git-annex repository.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-version=N\fP"
-.IP
-Force the repository to be initialized using a different annex.version
-than the current default.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-describe(1)
-.PP
-git-annex\-reinit(1)
-.PP
-git\-init(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-initremote.1 b/man/git-annex-initremote.1
deleted file mode 100644
--- a/man/git-annex-initremote.1
+++ /dev/null
@@ -1,61 +0,0 @@
-.TH git-annex-initremote 1
-.SH NAME
-git-annex-initremote \- creates a special (non\-git) remote
-.PP
-.SH SYNOPSIS
-git annex initremote \fBname type=value [param=value ...]\fP
-.PP
-.SH DESCRIPTION
-Creates a new special remote, and adds it to \fB.git/config\fP.
-.PP
-Example Amazon S3 remote:
-.PP
- git annex initremote mys3 type=S3 encryption=hybrid keyid=me@example.com datacenter=EU
-.PP
-Many different types of special remotes are supported by git-annex.
-For a list and details, see <https://git-annex.branchable.com/special_remotes/>
-.PP
-The remote's configuration is specified by the parameters passed
-to this command. Different types of special remotes need different
-configuration values. The command will prompt for parameters as needed.
-.PP
-All special remotes support encryption. You can either specify
-\fBencryption=none\fP to disable encryption, or specify
-\fBencryption=hybrid keyid=$keyid ...\fP to specify a GPG key id (or an email
-address associated with a key).
-.PP
-There are actually three schemes that can be used for management of the
-encryption keys. When using the encryption=hybrid scheme, additional
-GPG keys can be given access to the encrypted special remote easily
-(without re\-encrypting everything). When using encryption=shared,
-a shared key is generated and stored in the git repository, allowing
-anyone who can clone the git repository to access it. Finally, when using
-encryption=pubkey, content in the special remote is directly encrypted
-to the specified GPG keys, and additional ones cannot easily be given
-access.
-.PP
-If you anticipate using the new special remote in other clones of the
-repository, you can pass "autoenable=true". Then when git-annex\-init(1)
-is run in a new clone, it will attempt to enable the special remote. Of
-course, this works best when the special remote does not need anything
-special to be done to get it enabled.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-When initializing a remote that uses encryption, a cryptographic key is
-created. This requires sufficient entropy. If initremote seems to hang
-or take a long time while generating the key, you may want to Ctrl\-c it
-and re\-run with \fB\-\-fast\fP, which causes it to use a lower\-quality source of
-randomness. (Ie, /dev/urandom instead of /dev/random)
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-enableremote(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-list.1 b/man/git-annex-list.1
deleted file mode 100644
--- a/man/git-annex-list.1
+++ /dev/null
@@ -1,33 +0,0 @@
-.TH git-annex-list 1
-.SH NAME
-git-annex-list \- show which remotes contain files
-.PP
-.SH SYNOPSIS
-git annex list \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Displays a table of remotes that contain the contents of the specified
-files. This is similar to \fBgit annex whereis\fP but a more compact display.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-allrepos\fP"
-.IP
-Only configured remotes are shown by default; this option
-adds all known repositories to the list.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to list.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-find(1)
-.PP
-git-annex\-whereis(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-lock.1 b/man/git-annex-lock.1
deleted file mode 100644
--- a/man/git-annex-lock.1
+++ /dev/null
@@ -1,29 +0,0 @@
-.TH git-annex-lock 1
-.SH NAME
-git-annex-lock \- undo unlock command
-.PP
-.SH SYNOPSIS
-git annex lock \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Use this to undo an unlock command if you don't want to modify
-the files any longer, or have made modifications you want to discard.
-.PP
-.SH OPTIONS
-.IP "file matching options"
-.IP
-The git-annex\-matching\-options(1)
-can be used to specify files to lock.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-add(1)
-.PP
-git-annex\-unlock(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-log.1 b/man/git-annex-log.1
deleted file mode 100644
--- a/man/git-annex-log.1
+++ /dev/null
@@ -1,40 +0,0 @@
-.TH git-annex-log 1
-.SH NAME
-git-annex-log \- shows location log
-.PP
-.SH SYNOPSIS
-git annex log \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Displays the location log for the specified file or files,
-showing each repository they were added to ("+") and removed from ("\-").
-.PP
-.SH OPTIONS
-.IP "\fB\-\-since=date\fP, \fB\-\-after=date\fP, \fB\-\-until=date\fP, \fB\-\-before=date\fP, \fB\-\-max\-count=N\fP"
-.IP
-These options are passed through to \fBgit log\fP, and can be used to limit
-how far back to search for location log changes.
-.IP
-For example: \fB\-\-since "1 month ago"\fP
-.IP
-.IP "\fB\-\-raw\-date\fP"
-Rather than the normal display of a date in the local time zone,
-displays seconds since the unix epoch.
-.IP
-.IP "\fB\-\-gource\fP"
-Generates output suitable for the \fBgource\fP visualization program.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to act on.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-forget(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-lookupkey.1 b/man/git-annex-lookupkey.1
deleted file mode 100644
--- a/man/git-annex-lookupkey.1
+++ /dev/null
@@ -1,30 +0,0 @@
-.TH git-annex-lookupkey 1
-.SH NAME
-git-annex-lookupkey \- looks up key used for file
-.PP
-.SH SYNOPSIS
-git annex lookupkey \fB[file ...]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command looks up the key used for a file in the
-index. The key is output to stdout. If there is no key (because
-the file is not present in the index, or is not a git-annex managed file),
-nothing is output, and it exits nonzero.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-batch\fP"
-.IP
-Enable batch mode, in which a line containing the filename is read from
-stdin, the key is output to stdout (with a trailing newline), and repeat.
-.IP
-Note that if there is no key corresponding to the file, an empty line is
-output to stdout instead.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-map.1 b/man/git-annex-map.1
deleted file mode 100644
--- a/man/git-annex-map.1
+++ /dev/null
@@ -1,45 +0,0 @@
-.TH git-annex-map 1
-.SH NAME
-git-annex-map \- generate map of repositories
-.PP
-.SH SYNOPSIS
-git annex map
-.PP
-.SH DESCRIPTION
-Helps you keep track of your repositories, and the connections between them,
-by going out and looking at all the ones it can get to, and generating a
-Graphviz file displaying it all. If the \fBdot\fP command is available, it is
-used to display the file to your screen (using x11 backend).
-.PP
-This command only connects to hosts that the host it's run on can
-directly connect to. It does not try to tunnel through intermediate hosts.
-So it might not show all connections between the repositories in the network
-.PP
-Also, if connecting to a host requires a password, you might have to enter
-it several times as the map is being built.
-.PP
-Note that this subcommand can be used to graph any git repository; it
-is not limited to git-annex repositories.
-.PP
-.SH LEGEND
-Ovals are repositories. White is regular, green is trusted, red is
-untrusted, and grey is dead.
-.PP
-Arrows between repositories are connections via git remotes.
-.PP
-Light blue boxes are hosts that were mapped, and contain the repositories
-on that host.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-Disable using \fBdot\fP to display the generated Graphviz file.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-matchexpression.1 b/man/git-annex-matchexpression.1
deleted file mode 100644
--- a/man/git-annex-matchexpression.1
+++ /dev/null
@@ -1,53 +0,0 @@
-.TH git-annex-matchexpression 1
-.SH NAME
-git-annex-matchexpression \- checks if an expression matches
-.PP
-.SH SYNOPSIS
-git annex matchexpression \fBexpression [data]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command is given a preferred content expression,
-and some data, and checks if the expression matches the data. It exits 0 if
-it matches, and 1 if not. If not enough data was provided, it displays an
-error and exits with special code 42.
-.PP
-For example, this will exit 0:
-.PP
- git annex matchexpression "include=*.png and largerthan=1mb" \-\-file=foo.png \-\-size=10mb
-.PP
-.SH OPTIONS
-.IP "\fB\-\-file=\fP"
-.IP
-Provide the filename to match against. Note that the file does not have
-to actually exist on disk.
-.IP
-.IP "\fB\-\-size=\fP"
-Tell what the size of the file is. The size can be specified with any
-commonly used units, for example, "0.5 gb" or "100 KiloBytes".
-.IP
-.IP "\fB\-\-key=\fP"
-Tell what key is being matched against. This is needed for
-matching expressions like "copies=N" and "metadata=tag=foo" and
-"present", which all need to look up the information on file for a key.
-.IP
-Many keys have a known size, and so \-\-size is not needed when specifying
-such a key.
-.IP
-.IP "\fB\-\-largefiles\fP"
-Parse the expression as an annex.largefiles expression, rather than a
-preferred content expression.
-.IP
-.IP "\fB\-\-mimetype=\fP"
-Tell what the mime type of the file is. Only needed when using
-\-\-largefiles with a mimetype= expression.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-preferred\-content(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-matching-options.1 b/man/git-annex-matching-options.1
deleted file mode 100644
--- a/man/git-annex-matching-options.1
+++ /dev/null
@@ -1,150 +0,0 @@
-.TH git-annex-matching-options 1
-.SH NAME
-git-annex\-matching\-options \- specifying files to act on
-.PP
-.SH DESCRIPTION
-Many git-annex commands support using these options to specify which
-files they act on.
-.PP
-Arbitrarily complicated expressions can be built using these options.
-For example:
-.PP
- \-\-include='*.mp3' \-\-and \-( \-\-in=usbdrive \-\-or \-\-in=archive \-)
-.PP
-The above example makes git-annex work on only mp3 files that are present
-in either of two repositories.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-exclude=glob\fP"
-.IP
-Skips files matching the glob pattern. The glob is matched relative to
-the current directory. For example:
-.IP
- \-\-exclude='*.mp3' \-\-exclude='subdir/*'
-.IP
-Note that this will not match anything when using \-\-all or \-\-unused.
-.IP
-.IP "\fB\-\-include=glob\fP"
-Skips files not matching the glob pattern.  (Same as \fB\-\-not \-\-exclude\fP.)
-For example, to include only mp3 and ogg files:
-.IP
- \-\-include='*.mp3' \-\-or \-\-include='*.ogg'
-.IP
-Note that this will not skip anything when using \-\-all or \-\-unused.
-.IP
-.IP "\fB\-\-in=repository\fP"
-Matches only files that git-annex believes have their contents present
-in a repository. Note that it does not check the repository to verify
-that it still has the content.
-.IP
-The repository should be specified using the name of a configured remote,
-or the UUID or description of a repository. For the current repository,
-use \fB\-\-in=here\fP
-.IP
-.IP "\fB\-\-in=repository@{date}\fP"
-Matches files currently in the work tree whose content was present in
-the repository on the given date.
-.IP
-The date is specified in the same syntax documented in
-gitrevisions(7). Note that this uses the reflog, so dates far in the
-past cannot be queried.
-.IP
-For example, you might need to run \fBgit annex drop .\fP to temporarily
-free up disk space. The next day, you can get back the files you dropped
-using \fBgit annex get . \-\-in=here@{yesterday}\fP
-.IP
-.IP "\fB\-\-copies=number\fP"
-Matches only files that git-annex believes to have the specified number
-of copies, or more. Note that it does not check remotes to verify that
-the copies still exist.
-.IP
-.IP "\fB\-\-copies=trustlevel:number\fP"
-Matches only files that git-annex believes have the specified number of
-copies, on remotes with the specified trust level. For example,
-\fB\-\-copies=trusted:2\fP
-.IP
-To match any trust level at or higher than a given level,
-use 'trustlevel+'. For example, \fB\-\-copies=semitrusted+:2\fP
-.IP
-.IP "\fB\-\-copies=groupname:number\fP"
-Matches only files that git-annex believes have the specified number of
-copies, on remotes in the specified group. For example,
-\fB\-\-copies=archive:2\fP
-.IP
-.IP "\fB\-\-lackingcopies=number\fP"
-Matches only files that git-annex believes need the specified number or 
-more additional copies to be made in order to satisfy their numcopies
-settings.
-.IP
-.IP "\fB\-\-approxlackingcopies=number\fP"
-Like lackingcopies, but does not look at .gitattributes annex.numcopies
-settings. This makes it significantly faster.
-.IP
-.IP "\fB\-\-inbackend=name\fP"
-Matches only files whose content is stored using the specified key\-value
-backend.
-.IP
-.IP "\fB\-\-inallgroup=groupname\fP"
-Matches only files that git-annex believes are present in all repositories
-in the specified group.
-.IP
-.IP "\fB\-\-smallerthan=size\fP"
-.IP "\fB\-\-largerthan=size\fP"
-Matches only files whose content is smaller than, or larger than the
-specified size.
-.IP
-The size can be specified with any commonly used units, for example,
-"0.5 gb" or "100 KiloBytes"
-.IP
-.IP "\fB\-\-metadata field=glob\fP"
-Matches only files that have a metadata field attached with a value that
-matches the glob. The values of metadata fields are matched case
-insensitively.
-.IP
-.IP "\fB\-\-metadata field<number\fP / \fB\-\-metadata field>number\fP"
-.IP "\fB\-\-metadata field<=number\fP / \fB\-\-metadata field>=number\fP"
-Matches only files that have a metadata field attached with a value that
-is a number and is less than or greater than the specified number.
-.IP
-(Note that you will need to quote the second parameter to avoid
-the shell doing redirection.)
-.IP
-.IP "\fB\-\-want\-get\fP"
-Matches files that the preferred content settings for the repository
-make it want to get. Note that this will match even files that are
-already present, unless limited with e.g., \fB\-\-not \-\-in .\fP
-.IP
-Note that this will not match anything when using \-\-all or \-\-unused.
-.IP
-.IP "\fB\-\-want\-drop\fP"
-Matches files that the preferred content settings for the repository
-make it want to drop. Note that this will match even files that have
-already been dropped, unless limited with e.g., \fB\-\-in .\fP
-.IP
-Note that this will not match anything when using \-\-all or \-\-unused.
-.IP
-.IP "\fB\-\-not\fP"
-Inverts the next matching option. For example, to only act on
-files with less than 3 copies, use \fB\-\-not \-\-copies=3\fP
-.IP
-.IP "\fB\-\-and\fP"
-Requires that both the previous and the next matching option matches.
-The default.
-.IP
-.IP "\fB\-\-or\fP"
-Requires that either the previous, or the next matching option matches.
-.IP
-.IP "\fB\-(\fP"
-Opens a group of matching options.
-.IP
-.IP "\fB\-)\fP"
-Closes a group of matching options.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-merge.1 b/man/git-annex-merge.1
deleted file mode 100644
--- a/man/git-annex-merge.1
+++ /dev/null
@@ -1,26 +0,0 @@
-.TH git-annex-merge 1
-.SH NAME
-git-annex-merge \- automatically merge changes from remotes
-.PP
-.SH SYNOPSIS
-git annex merge
-.PP
-.SH DESCRIPTION
-This performs the same merging (and merge conflict resolution)
-that is done by the sync command, but without pushing or pulling any
-data.
-.PP
-One way to use this is to put \fBgit annex merge\fP into a repository's
-post\-receive hook. Then any syncs to the repository will update its
-working copy automatically.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-sync(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-metadata.1 b/man/git-annex-metadata.1
deleted file mode 100644
--- a/man/git-annex-metadata.1
+++ /dev/null
@@ -1,85 +0,0 @@
-.TH git-annex-metadata 1
-.SH NAME
-git-annex-metadata \- sets or gets metadata of a file
-.PP
-.SH SYNOPSIS
-git annex metadata \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-The content of an annexed file can have any number of metadata fields
-attached to it to describe it. Each metadata field can in turn
-have any number of values.
-.PP
-This command can be used to set metadata, or show the currently set
-metadata.
-.PP
-When run without any \-s or \-t parameters, displays the current metadata.
-.PP
-.SH OPTIONS
-.IP "\fB\-g field\fP / \fB\-\-get field\fP"
-.IP
-Get the value(s) of a single field.
-.IP
-The values will be output one per line, with no other output, so
-this is suitable for use in a script.
-.IP
-.IP "\fB\-s field=value\fP / \fB\-\-set field=value\fP"
-Set a field's value, removing any old values.
-.IP
-.IP "\fB\-s field+=value\fP / \fB\-\-set field+=value\fP"
-Add an additional value, preserving any old values.
-.IP
-.IP "\fB\-s field?=value\fP / \fB\-\-set field?=value\fP"
-Set a value, but only if the field does not already have a value set.
-.IP
-.IP "\fB\-s field\-=value\fP / \fB\-\-set field\-=value\fP"
-Remove a value from a field, leaving any other values that the field has
-set.
-.IP
-.IP "\fB\-r field\fP / \fB\-\-remove field\fP"
-Remove all current values of the field.
-.IP
-.IP "\fB\-t tag\fP / \fB\-\-tag tag\fP"
-Set a tag. Note that a tag is just a value of the "tag" field.
-.IP
-.IP "\fB\-u tag\fP / \fB\-\-unset tag\fP"
-Unset a tag.
-.IP
-.IP "\fB\-\-force\fP"
-By default, \fBgit annex metadata\fP refuses to recursively set metadata
-throughout the files in a directory. This option enables such recursive
-setting.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to act on.
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.IP "\fB\-\-all\fP"
-Specify instead of a file to get/set metadata on all known keys.
-.IP
-.IP "\fB\-\-unused\fP"
-Specify instead of a file to get/set metadata on
-files found by last run of git-annex unused.
-.IP
-.IP "\fB\-\-key=keyname\fP"
-Specify instead of a file to get/set metadata of the specified key.
-.IP
-.SH EXAMPLES
-To set some tags on a file and also its author:
-.PP
- git annex metadata annexscreencast.ogv \-t video \-t screencast \-s author+=Alice
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-view(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-migrate.1 b/man/git-annex-migrate.1
deleted file mode 100644
--- a/man/git-annex-migrate.1
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH git-annex-migrate 1
-.SH NAME
-git-annex-migrate \- switch data to different backend
-.PP
-.SH SYNOPSIS
-git annex migrate \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Changes the specified annexed files to use the default key\-value backend
-(or the one specified with \fB\-\-backend\fP). Only files whose content
-is currently available are migrated.
-.PP
-Note that the content is also still available using the old key after
-migration. Use \fBgit annex unused\fP to find and remove the old key.
-.PP
-Normally, nothing will be done to files already using the new backend.
-However, if a backend changes the information it uses to construct a key,
-this can also be used to migrate files to use the new key format.
-.PP
-When you have multiple repositories that each contain a copy of a file,
-it's best to run migrate in all of them.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-backend\fP"
-.IP
-Specify the new key\-value backend to use for migrated data.
-.IP
-.IP "\fB\-\-force\fP"
-Force migration of keys that are already using the new backend.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to migrate.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-upgrade(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-mirror.1 b/man/git-annex-mirror.1
deleted file mode 100644
--- a/man/git-annex-mirror.1
+++ /dev/null
@@ -1,56 +0,0 @@
-.TH git-annex-mirror 1
-.SH NAME
-git-annex-mirror \- mirror content of files to/from another repository
-.PP
-.SH SYNOPSIS
-git annex mirror \fB[path ...] [\-\-to=remote|\-\-from=remote]\fP
-.PP
-.SH DESCRIPTION
-This causes a destination repository to mirror a source repository.
-.PP
-Each specified file in the source repository is mirrored to the destination
-repository. If a file's content is present in the source repository, it is
-copied to the destination repository. If a file's content is not present in
-the source repository, it will be dropped from the destination repository
-when the numcopies setting allows.
-.PP
-Note that mirror does not sync the git repository, but only the file
-contents. Use git-annex\-sync(1) for that.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-to=remote\fP"
-.IP
-Use the local repository as the source repository, and mirror its contents
-to the remote.
-.IP
-.IP "\fB\-\-from=remote\fP"
-Use the remote as the source repository, and mirror its contents to the local
-repository.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Enables parallel transfers with up to the specified number of jobs
-running at once. For example: \fB\-J10\fP
-.IP
-.IP "\fB\-\-all\fP"
-Mirror all objects stored in the git annex, not only objects used by
-currently existing files. 
-.IP
-However, this bypasses checking the .gitattributes annex.numcopies
-setting when dropping files.
-.IP
-This is the default behavior when running git-annex in a bare repository.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to mirror.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-sync(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-move.1 b/man/git-annex-move.1
deleted file mode 100644
--- a/man/git-annex-move.1
+++ /dev/null
@@ -1,54 +0,0 @@
-.TH git-annex-move 1
-.SH NAME
-git-annex-move \- move content of files to/from another repository
-.PP
-.SH SYNOPSIS
-git annex move \fB[path ...] [\-\-from=remote|\-\-to=remote]\fP
-.PP
-.SH DESCRIPTION
-Moves the content of files from or to another remote.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-from=remote\fP"
-.IP
-Use this option to move the content of files from the specified
-remote to the local repository.
-.IP
-.IP "\fB\-\-to=remote\fP"
-Use this option to move the content of files from the local repository
-to the specified remote.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Enables parallel transfers with up to the specified number of jobs
-running at once. For example: \fB\-J10\fP
-.IP
-.IP "\fB\-\-all\fP"
-Rather than specifying a filename or path to move, this option can be
-used to move all available versions of all files.
-.IP
-This is the default behavior when running git-annex in a bare repository.
-.IP
-.IP "\fB\-\-unused\fP"
-Operate on files found by last run of git-annex unused.
-.IP
-.IP "\fB\-\-key=keyname\fP"
-Use this option to move a specified key.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to move.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-get(1)
-.PP
-git-annex\-copy(1)
-.PP
-git-annex\-drop(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-numcopies.1 b/man/git-annex-numcopies.1
deleted file mode 100644
--- a/man/git-annex-numcopies.1
+++ /dev/null
@@ -1,28 +0,0 @@
-.TH git-annex-numcopies 1
-.SH NAME
-git-annex-numcopies \- configure desired number of copies
-.PP
-.SH SYNOPSIS
-git annex numcopies \fBN\fP
-.PP
-.SH DESCRIPTION
-Tells git-annex how many copies it should preserve of files, over all
-repositories. The default is 1.
-.PP
-Run without a number to get the current value.
-.PP
-When git-annex is asked to drop a file, it first verifies that the
-required number of copies can be satisfied among all the other
-repositories that have a copy of the file.
-.PP
-This can be overridden on a per\-file basis by the annex.numcopies setting
-in .gitattributes files.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-pre-commit.1 b/man/git-annex-pre-commit.1
deleted file mode 100644
--- a/man/git-annex-pre-commit.1
+++ /dev/null
@@ -1,28 +0,0 @@
-.TH git-annex-pre-commit 1
-.SH NAME
-git-annex-pre\-commit \- run by git pre\-commit hook
-.PP
-.SH SYNOPSIS
-git annex pre\-commit \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-This is meant to be called from git's pre\-commit hook. \fBgit annex init\fP
-automatically creates a pre\-commit hook using this.
-.PP
-Fixes up symlinks that are staged as part of a commit, to ensure they
-point to annexed content.
-.PP
-When in a view, updates metadata to reflect changes
-made to files in the view.
-.PP
-When in a repository that has not been upgraded to annex.version 6, 
-also handles injecting changes to unlocked files into the annex. 
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-preferred-content.1 b/man/git-annex-preferred-content.1
deleted file mode 100644
--- a/man/git-annex-preferred-content.1
+++ /dev/null
@@ -1,245 +0,0 @@
-.TH git-annex-preferred-content 1
-.SH NAME
-git-annex\-preferred\-content \- which files are wanted in a repository
-.PP
-.SH DESCRIPTION
-Each repository has a preferred content setting, which specifies content
-that the repository wants to have present. These settings can be configured
-using \fBgit annex vicfg\fP or \fBgit annex wanted\fP.
-They are used by the \fB\-\-auto\fP option, by \fBgit annex sync \-\-content\fP,
-and by the git-annex assistant.
-.PP
-While preferred content expresses a preference, it can be overridden
-by simply using \fBgit annex drop\fP. On the other hand, required content
-settings are enforced; \fBgit annex drop\fP will refuse to drop a file if
-doing so would violate its required content settings. A repository's
-required content can be configured using \fBgit annex vicfg\fP or
-\fBgit annex required\fP.
-.PP
-.SH SYNTAX
-Preferred content expressions use a similar syntax to 
-the git-annex\-matching\-options(1), without the dashes.
-For example:
-.PP
- exclude=archive/* and (include=*.mp3 or smallerthan=1mb)
-.PP
-The idea is that you write an expression that files are matched against. If
-a file matches, the repository wants to store its content. If it doesn't,
-the repository wants to drop its content (if there are enough copies
-elsewhere to allow removing it).
-.PP
-.SH EXPRESSIONS
-.IP "\fBinclude=glob\fP / \fBexclude=glob\fP"
-.IP
-Match files to include, or exclude.
-.IP
-While \-\-include=glob and \-\-exclude=glob match files relative to the current
-directory, preferred content expressions always match files relative to the
-top of the git repository. 
-.IP
-For example, suppose you put files into \fBarchive\fP directories
-when you're done with them. Then you could configure your laptop to prefer
-to not retain those files, like this: \fBexclude=*/archive/*\fP
-.IP
-.IP "\fBcopies=number\fP"
-Matches only files that git-annex believes to have the specified number
-of copies, or more. Note that it does not check remotes to verify that
-the copies still exist.
-.IP
-To decide if content should be dropped, git-annex evaluates the preferred
-content expression under the assumption that the content has *already* been
-dropped. If the content would not be wanted then, the drop can be done.
-So, for example, \fBcopies=2\fP in a preferred content expression lets
-content be dropped only when there are currently 3 copies of it, including
-the repo it's being dropped from. This is different than running git annex
-drop \-\-copies=2, which will drop files that currently have 2 copies.
-.IP
-.IP "\fBcopies=trustlevel:number\fP"
-Matches only files that git-annex believes have the specified number
-copies, on remotes with the specified trust level. For example,
-\fBcopies=trusted:2\fP
-.IP
-To match any trust level at or higher than a given level,
-use \fBtrustlevel+\fP. For example, \fBcopies=semitrusted+:2\fP
-.IP
-.IP "\fBcopies=groupname:number\fP"
-Matches only files that git-annex believes have the specified number of
-copies, on remotes in the specified group. For example,
-\fBcopies=archive:2\fP
-.IP
-Preferred content expressions have no equivalent to the \fB\-\-in\fP
-option, but groups can accomplish similar things. You can add
-repositories to groups, and match against the groups in a
-preferred content expression. So rather than \fB\-\-in=usbdrive\fP,
-put all the USB drives into a "transfer" group, and use
-\fBcopies=transfer:1\fP
-.IP
-.IP "\fBlackingcopies=number\fP"
-Matches only files that git-annex believes need the specified number or
-more additional copies to be made in order to satisfy their numcopies
-settings.
-.IP
-.IP "\fBapproxlackingcopies=number\fP"
-Like lackingcopies, but does not look at .gitattributes annex.numcopies
-settings. This makes it significantly faster.
-.IP
-.IP "\fBinbackend=name\fP"
-Matches only files whose content is stored using the specified key\-value
-backend.
-.IP
-.IP "\fBinallgroup=groupname\fP"
-Matches only files that git-annex believes are present in all repositories
-in the specified group.
-.IP
-.IP "\fBsmallerthan=size\fP / \fBlargerthan=size\fP"
-Matches only files whose content is smaller than, or larger than the
-specified size.
-.IP
-The size can be specified with any commonly used units, for example,
-"0.5 gb" or "100 KiloBytes"
-.IP
-.IP "\fBmetadata=field=glob\fP"
-Matches only files that have a metadata field attached with a value that
-matches the glob. The values of metadata fields are matched case
-insensitively.
-.IP
-To match a tag "done", use \fBmetadata=tag=done\fP
-.IP
-To match author metadata, use \fBmetadata=author=*Smith\fP
-.IP
-.IP "\fBmetadata=field<number\fP / \fBmetadata=field>number\fP "
-.IP "\fBmetadata=field<=number\fP / \fBmetadata=field>=number\fP"
-Matches only files that have a metadata field attached with a value that
-is a number and is less than or greater than the specified number.
-.IP
-To match PDFs with between 100 and 200 pages (assuming something has set
-that metadata), use \fBmetadata=pagecount>=100 and metadata=pagecount<=200\fP
-.IP
-.IP "\fBpresent\fP"
-Makes content be wanted if it's present, but not otherwise.
-.IP
-This leaves it up to you to use git-annex manually
-to move content around. You can use this to avoid preferred content
-settings from affecting a subdirectory. For example:
-\fBauto/* or (include=ad\-hoc/* and present)\fP
-.IP
-Note that \fBnot present\fP is a very bad thing to put in a preferred content 
-expression. It'll make it want to get content that's not present, and
-drop content that is present! Don't go there..
-.IP
-.IP "\fBinpreferreddir\fP"
-Makes content be preferred if it's in a directory (located anywhere
-in the tree) with a particular name. 
-.IP
-The name of the directory can be configured using 
-\fBgit annex enableremote $remote preferreddir=$dirname\fP
-.IP
-(If no directory name is configured, it uses "public" by default.)
-.IP
-.IP "\fBstandard\fP"
-git-annex comes with some built\-in preferred content expressions, that
-can be used with repositories that are in some [[preferred content/standard groups/]].
-.IP
-When a repository is in exactly one such group, you can use the "standard"
-keyword in its preferred content expression, to match whatever content
-the group's expression matches.
-(If a repository is put into multiple standard
-groups, "standard" will match anything.. so don't do that!)
-.IP
-Most often, the whole preferred content expression is simply "standard".
-But, you can do more complicated things, for example:
-\fBstandard or include=otherdir/*\fP
-.IP
-.IP "\fBgroupwanted\fP"
-The "groupwanted" keyword can be used to refer to a preferred content
-expression that is associated with a group. This is like the "standard"
-keyword, but you can configure the preferred content expressions
-using \fBgit annex groupwanted\fP.
-.IP
-Note that when writing a groupwanted preferred content expression,
-you can use all of the keywords listed above, including "standard".
-(But not "groupwanted".)
-.IP
-For example, to make a variant of the standard client preferred content
-expression that does not want files in the "out" directory, you
-could run: \fBgit annex groupwanted client "standard and exclude=out/*"\fP
-.IP
-Then repositories that are in the client group and have their preferred
-content expression set to "groupwanted" will use that, while
-other client repositories that have their preferred content expression
-set to "standard" will use the standard expression.
-.IP
-Or, you could make a new group, with your own custom preferred content
-expression tuned for your needs, and every repository you put in this
-group and make its preferred content be "groupwanted" will use it.
-.IP
-For example, the archive group only wants to archive 1 copy of each file,
-spread among every repository in the group.
-Here's how to configure a group named redundantarchive, that instead
-wants to contain 3 copies of each file:
-.IP
- git annex groupwanted redundantarchive "not (copies=redundantarchive:3)"
- for repo in foo bar baz; do
- 	git annex group $repo redundantarchive
- 	git annex wanted $repo groupwanted
- done
-.IP
-.IP "\fBunused\fP"
-Matches only keys that \fBgit annex unused\fP has determined to be unused.
-.IP
-This is related the the \-\-unused option.
-However, putting \fBunused\fP in a preferred content expression 
-doesn't make git-annex consider those unused keys. So when git-annex is
-only checking preferred content expressions against files in the
-repository (which are obviously used), \fBunused\fP in a preferred
-content expression won't match anything.
-.IP
-So when is \fBunused\fP useful in a preferred content expression?
-.IP
-Using \fBgit annex sync \-\-content \-\-all\fP will operate on all files,
-including unused ones, and take \fBunused\fP in preferred content expressions
-into account.
-.IP
-The git-annex assistant periodically scans for unused files, and
-moves them to some repository whose preferred content expression
-says it wants them. (Or, if annex.expireunused is set, it may just delete
-them.)
-.IP
-.IP "\fBanything\fP"
-Always matches.
-.IP
-.IP "\fBnothing\fP"
-Never matches. (Same as "not anything")
-.IP
-.IP "\fBnot expression\fP"
-Inverts what the expression matches. For example, \fBnot include=archive/*\fP
-is the same as \fBexclude=archive/*\fP
-.IP
-.IP "\fBand\fP / \fBor\fP / \fB( expression )\fP"
-These can be used to build up more complicated expressions.
-.IP
-.SH TESTING
-To check at the command line which files are matched by a repository's
-preferred content settings, you can use the \-\-want\-get and \-\-want\-drop
-options.
-.PP
-For example, git annex find \-\-want\-get \-\-not \-\-in . will find all the files
-that git annex get \-\-auto will want to get, and git annex find \-\-want\-drop \-\-in
-\&. will find all the files that git annex drop \-\-auto will want to drop.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-vicfg(1)
-.PP
-git-annex\-wanted(1)
-.PP
-<https://git-annex.branchable.com/preferred_content/>
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-<http://git-annex.branchable.com/>
-.PP
-.PP
-
diff --git a/man/git-annex-proxy.1 b/man/git-annex-proxy.1
deleted file mode 100644
--- a/man/git-annex-proxy.1
+++ /dev/null
@@ -1,49 +0,0 @@
-.TH git-annex-proxy 1
-.SH NAME
-git-annex-proxy \- safely bypass direct mode guard
-.PP
-.SH SYNOPSIS
-git annex proxy \fB\-\- git cmd [options]\fP
-.PP
-.SH DESCRIPTION
-Only useful in a direct mode repository, this runs the specified git
-command with a temporary work tree, and updates the working tree to
-reflect any changes staged or committed by the git command.
-.PP
-For example, to revert the most recent change that was committed
-to the repository:
-.PP
- git annex proxy \-\- git revert HEAD
-.PP
-To check out a past version of the repository:
-.PP
- git annex proxy \-\- git checkout HEAD^^
-.PP
-To rename a directory:
-.PP
- git annex proxy \-\- git mv mydir newname
-.PP
-To commit the changes to a specific file, first use git annex add to
-stage the changes in the index, and then proxy a commit:
-.PP
- git annex add myfile
- git annex proxy \-\- git commit myfile \-m foo
-.PP
-The temporary work tree that the git command is run in is set up by
-checking out all files that are in the index, and copying (or hard linking)
-any unstaged files from the real work tree. Since the git command is run
-using this temporary work tree, it won't see eg, local modifications to
-files. So, it probably is not useful to proxy a command like "git add".
-However, you can use the proxy with any git command you like, as long as
-you think about how it will interact with the temporary work tree.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-direct(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-readpresentkey.1 b/man/git-annex-readpresentkey.1
deleted file mode 100644
--- a/man/git-annex-readpresentkey.1
+++ /dev/null
@@ -1,25 +0,0 @@
-.TH git-annex-readpresentkey 1
-.SH NAME
-git-annex-readpresentkey \- read records of where key is present
-.PP
-.SH SYNOPSIS
-git annex readpresentkey \fBkey uuid\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command reads git-annex's records about whether
-the specified key's content is present in the remote with the specified
-uuid.
-.PP
-It exits 0 if the key is recorded to be present and 1 if not.
-.PP
-Note that this does not do an active check to verify if the key
-is present. To do such a check, use git-annex\-checkpresentkey(1)
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-registerurl.1 b/man/git-annex-registerurl.1
deleted file mode 100644
--- a/man/git-annex-registerurl.1
+++ /dev/null
@@ -1,31 +0,0 @@
-.TH git-annex-registerurl 1
-.SH NAME
-git-annex-registerurl \- registers an url for a key
-.PP
-.SH SYNOPSIS
-git annex registerurl \fB[key url]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command can be used to register urls where a
-key can be downloaded from.
-.PP
-No verification is performed of the url's contents.
-.PP
-If the key and url are not specified on the command line, they are
-instead read from stdin. Any number of lines can be provided in this
-mode, each containing a key and url, separated by a single space.
-.PP
-Normally the key is a git-annex formatted key. However, to make it easier
-to use this to add urls, if the key cannot be parsed as a key, and is a
-valid url, an URL key is constructed from the url.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-addurl(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-reinit.1 b/man/git-annex-reinit.1
deleted file mode 100644
--- a/man/git-annex-reinit.1
+++ /dev/null
@@ -1,30 +0,0 @@
-.TH git-annex-reinit 1
-.SH NAME
-git-annex-reinit \- initialize repository, reusing old UUID
-.PP
-.SH SYNOPSIS
-git annex reinit \fBuuid|description\fP
-.PP
-.SH DESCRIPTION
-Normally, initializing a repository generates a new, unique identifier
-(UUID) for that repository. Occasionally it may be useful to reuse a
-UUID \-\- for example, if a repository got deleted, and you're
-setting it back up.
-.PP
-Use this with caution; it can be confusing to have two existing
-repositories with the same UUID. Also, you will probably want to run
-a fsck.
-.PP
-Like \fBgit annex init\fP, this attempts to enable any special remotes
-that are configured with autoenable=true.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-init(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-reinject.1 b/man/git-annex-reinject.1
deleted file mode 100644
--- a/man/git-annex-reinject.1
+++ /dev/null
@@ -1,61 +0,0 @@
-.TH git-annex-reinject 1
-.SH NAME
-git-annex-reinject \- inject content of file back into annex
-.PP
-.SH SYNOPSIS
-git annex reinject \fB[src dest]\fP
-.PP
-git annex reinject \-\-known \fB[src]\fP
-.PP
-.SH DESCRIPTION
-Moves the content of the src file or files into the annex.
-Only known file contents will be reinjected. Any unknown src files will
-be left unchanged.
-.PP
-This can be useful if you have obtained the content of a file from
-elsewhere and want to put it in the local annex. For example, if a file's
-content has been lost and you have a backup, you can restore the backup and
-reinject it into your local repository.
-.PP
-There are two ways to use this command. Specifying a src file and the name
-of a dest file (located inside the repository's working tree)
-injects the src file as the content of the dest file.
-.PP
- git annex reinject /tmp/foo.iso foo.iso
-.PP
-Or the \fB\-\-known\fP option can be used to reinject all known src files, without
-needing to specify the dest file.
-.PP
- git annex reinject \-\-known /tmp/*.iso
-.PP
-.SH OPTIONS
-.IP "\fB\-\-known\fP"
-.IP
-With this option, each specified src file is hashed using the default
-key\-value backend (or the one specified with \fB\-\-backend\fP), and if git-annex
-has a record of the file having been in the annex before, the content is
-reinjected.
-.IP
-Note that this will reinject old versions of files that have been
-modified or deleted from the current git branch.
-Use git-annex\-unused(1) to detect when such old and potentially
-unused files have been reinjected.
-.IP
-.IP "\fB\-\-backend\fP"
-Specify the key\-value backend to use when checking if a file is known
-with the \fB\-\-known\fP option.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-add(1)
-.PP
-git-annex\-unused(1)
-.PP
-git-annex\-fsck(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-rekey.1 b/man/git-annex-rekey.1
deleted file mode 100644
--- a/man/git-annex-rekey.1
+++ /dev/null
@@ -1,28 +0,0 @@
-.TH git-annex-rekey 1
-.SH NAME
-git-annex-rekey \- change keys used for files
-.PP
-.SH SYNOPSIS
-git annex rekey \fB[file key ...]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command is similar to migrate, but you specify
-both the file, and the new key to use for it.
-.PP
-Multiple pairs of file and key can be given in a single command line.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-force\fP"
-.IP
-Allow rekeying of even files whose content is not currently available.
-Use with caution.
-.IP
-.SH OPTIONS
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-remotedaemon.1 b/man/git-annex-remotedaemon.1
deleted file mode 100644
--- a/man/git-annex-remotedaemon.1
+++ /dev/null
@@ -1,31 +0,0 @@
-.TH git-annex-remotedaemon 1
-.SH NAME
-git-annex-remotedaemon \- detects when remotes have changed, and fetches from them
-.PP
-.SH SYNOPSIS
-git annex remotedaemon
-.PP
-.SH DESCRIPTION
-This plumbing\-level command is used by the assistant to detect
-when remotes have received git pushes, so the changes can be promptly
-fetched and the local repository updated.
-.PP
-This is a better alternative to the git-annex\-xmppgit(1)
-hack.
-.PP
-For the remotedaemon to work, the git remote must have
-git-annex\-shell(1) installed, with notifychanges support.
-The first version of git-annex\-shell that supports it is 5.20140405.
-.PP
-It's normal for this process to be running when the assistant is running.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-assistant(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-repair.1 b/man/git-annex-repair.1
deleted file mode 100644
--- a/man/git-annex-repair.1
+++ /dev/null
@@ -1,53 +0,0 @@
-.TH git-annex-repair 1
-.SH NAME
-git-annex-repair \- recover broken git repository
-.PP
-.SH SYNOPSIS
-git annex repair
-.PP
-.SH DESCRIPTION
-This can repair many of the problems with git repositories that \fBgit fsck\fP
-detects, but does not itself fix. It's useful if a repository has become
-badly damaged. One way this can happen is if a repository used by git-annex
-is on a removable drive that gets unplugged at the wrong time.
-.PP
-This command can actually be used inside git repositories that do not
-use git-annex at all; when used in a repository using git-annex, it
-does additional repairs of the git-annex branch.
-.PP
-It works by deleting any corrupt objects from the git repository, and
-retrieving all missing objects it can from the remotes of the repository.
-.PP
-If that is not sufficient to fully recover the repository, it can also
-reset branches back to commits before the corruption happened, delete
-branches that are no longer available due to the lost data, and remove any
-missing files from the index. It will only do this if run with the
-\fB\-\-force\fP option, since that rewrites history and throws out missing data.
-Note that the \fB\-\-force\fP option never touches tags, even if they are no
-longer usable due to missing data.
-.PP
-After running this command, you will probably want to run \fBgit fsck\fP to
-verify it fixed the repository. Note that fsck may still complain about
-objects referenced by the reflog, or the stash, if they were unable to be
-recovered. This command does not try to clean up either the reflog or the
-stash.
-.PP
-It is also a good idea to run \fBgit annex fsck \-\-fast\fP after this command,
-to make sure that the git-annex branch reflects reality.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-force\fP"
-.IP
-Enable repair actions that involve deleting data that has been
-lost due to git repository corruption.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-fsck(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-required.1 b/man/git-annex-required.1
deleted file mode 100644
--- a/man/git-annex-required.1
+++ /dev/null
@@ -1,39 +0,0 @@
-.TH git-annex-required 1
-.SH NAME
-git-annex-required \- get or set required content expression
-.PP
-.SH SYNOPSIS
-git annex required \fBrepository [expression]\fP
-.PP
-.SH DESCRIPTION
-When run with an expression, configures the content that is required
-to be held in the archive.
-.PP
-For example:
-.PP
- git annex required . "include=*.mp3 or include=*.ogg"
-.PP
-Without an expression, displays the current required content setting
-of the repository.
-.PP
-While git-annex\-wanted is just a preference,
-git-annex\-required designates content that should really not be
-removed. For example a file that is \fBwanted\fP can be removed with git
-annex drop\fB, but if that file is \fPrequired, it would need to be
-removed with \fBgit annex drop \-\-force\fP.
-.PP
-.SH NOTES
-The \fBrequired\fP command was added in git-annex 5.20150420.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-wanted(1)
-.PP
-git-annex\-preferred\-content(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-resolvemerge.1 b/man/git-annex-resolvemerge.1
deleted file mode 100644
--- a/man/git-annex-resolvemerge.1
+++ /dev/null
@@ -1,24 +0,0 @@
-.TH git-annex-resolvemerge 1
-.SH NAME
-git-annex-resolvemerge \- resolve merge conflicts
-.PP
-.SH SYNOPSIS
-git annex resolvemerge
-.PP
-.SH DESCRIPTION
-Resolves a conflicted merge, by adding both conflicting versions of the
-file to the tree, using variants of their filename. This is done
-automatically when using \fBgit annex sync\fP or \fBgit annex merge\fP.
-.PP
-Note that only merge conflicts that involve an annexed file are resolved.
-Merge conflicts between two files that are not annexed will not be
-automatically resolved.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-rmurl.1 b/man/git-annex-rmurl.1
deleted file mode 100644
--- a/man/git-annex-rmurl.1
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH git-annex-rmurl 1
-.SH NAME
-git-annex-rmurl \- record file is not available at url
-.PP
-.SH SYNOPSIS
-git annex rmurl \fBfile url\fP
-.PP
-.SH DESCRIPTION
-Record that the file is no longer available at the url.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-addurl(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-schedule.1 b/man/git-annex-schedule.1
deleted file mode 100644
--- a/man/git-annex-schedule.1
+++ /dev/null
@@ -1,47 +0,0 @@
-.TH git-annex-schedule 1
-.SH NAME
-git-annex-schedule \- get or set scheduled jobs
-.PP
-.SH SYNOPSIS
-git annex schedule \fBrepository [expression]\fP
-.PP
-.SH DESCRIPTION
-The git-annex\-assistant(1) daemon can be configured to run scheduled jobs.
-This is similar to cron and anacron (and you can use them if you prefer),
-but has the advantage of being integrated into git-annex, and so being able
-to e.g., fsck a repository on a removable drive when the drive gets
-connected.
-.PP
-When run with an expression, configures scheduled jobs to run at a
-particular time. This can be used to make the assistant periodically run
-incremental fscks.
-.PP
-When run without an expression, outputs the current scheduled jobs for
-the repository.
-.PP
-.SH EXPRESSIONS
-These actions are available: "fsck self", "fsck UUID" (where UUID
-is the UUID of a remote to fsck). After the action comes the duration
-to allow the action to run, and finally the schedule of when to run it.
-.PP
-To schedule multiple jobs, separate them with "; ".
-.PP
-Some examples:
-.PP
- fsck self 30m every day at any time
- fsck self 1h every month at 3 AM
- fsck self 1h on day 1 of every month at any time
- fsck self 1h every week divisible by 2 at any time
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-assistant(1)
-.PP
-git-annex\-expire(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-semitrust.1 b/man/git-annex-semitrust.1
deleted file mode 100644
--- a/man/git-annex-semitrust.1
+++ /dev/null
@@ -1,29 +0,0 @@
-.TH git-annex-semitrust 1
-.SH NAME
-git-annex-semitrust \- return repository to default trust level
-.PP
-.SH SYNOPSIS
-git annex semitrust \fB[repository ...]\fP
-.PP
-.SH DESCRIPTION
-Returns a repository to the default semi trusted state.
-.PP
-Repositories can be specified using their remote name, their
-description, or their UUID. For the current repository, use "here".
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-trust(1)
-.PP
-git-annex\-untrust(1)
-.PP
-git-annex\-dead(1)
-.PP
-git-annex\-expire(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-setkey.1 b/man/git-annex-setkey.1
deleted file mode 100644
--- a/man/git-annex-setkey.1
+++ /dev/null
@@ -1,26 +0,0 @@
-.TH git-annex-setkey 1
-.SH NAME
-git-annex-setkey \- sets annexed content for a key
-.PP
-.SH SYNOPSIS
-git annex setkey key file
-.PP
-.SH DESCRIPTION
-This plumbing\-level command makes the content of the specified key
-be set to the specified file. The file is moved into the annex.
-.PP
-It's generally a better idea to use git-annex\-reinject(1) instead of
-this command.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-reinject(1)
-.PP
-git-annex\-dropkey(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-setpresentkey.1 b/man/git-annex-setpresentkey.1
deleted file mode 100644
--- a/man/git-annex-setpresentkey.1
+++ /dev/null
@@ -1,22 +0,0 @@
-.TH git-annex-setpresentkey 1
-.SH NAME
-git-annex-setpresentkey \- change records of where key is present
-.PP
-.SH SYNOPSIS
-git annex setpresentkey \fBkey uuid [1|0]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command changes git-annex's records about whether
-the specified key's content is present in a remote with the specified uuid.
-.PP
-Use 1 to indicate the key is present, or 0 to indicate the key is
-not present.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-shell.1 b/man/git-annex-shell.1
deleted file mode 100644
--- a/man/git-annex-shell.1
+++ /dev/null
@@ -1,145 +0,0 @@
-.TH git-annex-shell 1
-.SH NAME
-git-annex\-shell \- Restricted login shell for git-annex only SSH access
-.PP
-.SH SYNOPSIS
-git-annex\-shell [\-c] command [params ...]
-.PP
-.SH DESCRIPTION
-git-annex\-shell is a restricted shell, similar to git\-shell, which
-can be used as a login shell for SSH accounts.
-.PP
-Since its syntax is identical to git\-shell's, it can be used as a drop\-in
-replacement anywhere git\-shell is used. For example it can be used as a 
-user's restricted login shell.
-.PP
-.SH COMMANDS
-Any command not listed below is passed through to git\-shell.
-.PP
-Note that the directory parameter should be an absolute path, otherwise
-it is assumed to be relative to the user's home directory. Also the
-first "/~/" or "/~user/" is expanded to the specified home directory.
-.PP
-.IP "configlist directory"
-This outputs a subset of the git configuration, in the same form as
-\fBgit config \-\-list\fP. This is used to get the annex.uuid of the remote
-repository.
-.IP
-When run in a repository that does not yet have an annex.uuid, one
-will be created, as long as a git-annex branch has already been pushed to
-the repository, or if the autoinit= flag is used to indicate
-initialization is desired.
-.IP
-.IP "inannex directory [key ...]"
-This checks if all specified keys are present in the annex, 
-and exits zero if so.
-.IP
-Exits 1 if the key is certainly not present in the annex.
-Exits 100 if it's unable to tell (perhaps the key is in the process of
-being removed from the annex).
-.IP
-.IP "lockcontent directory key"
-This locks a key's content in place in the annex, preventing it from
-being dropped.
-.IP
-Once the content is successfully locked, outputs "OK". Then the content
-remains locked until a newline is received from the caller or the
-connection is broken.
-.IP
-Exits nonzero if the content is not present, or could not be locked.
-.IP
-.IP "dropkey directory [key ...]"
-This drops the annexed data for the specified keys.
-.IP
-.IP "recvkey directory key"
-This runs rsync in server mode to receive the content of a key,
-and stores the content in the annex.
-.IP
-.IP "sendkey directory key"
-This runs rsync in server mode to transfer out the content of a key.
-.IP
-.IP "transferinfo directory key"
-This is typically run at the same time as sendkey is sending a key
-to the remote. Using it is optional, but is used to update
-progress information for the transfer of the key.
-.IP
-It reads lines from standard input, each giving the number of bytes
-that have been received so far. 
-.IP
-.IP "commit directory"
-This commits any staged changes to the git-annex branch.
-It also runs the annex\-content hook.
-.IP
-.IP "notifychanges directory"
-This is used by \fBgit-annex remotedaemon\fP to be notified when
-refs in the remote repository are changed.
-.IP
-.IP "gcryptsetup directory gcryptid"
-Sets up a repository as a gcrypt repository.
-.IP
-.SH OPTIONS
-Most options are the same as in git-annex. The ones specific
-to git-annex\-shell are:
-.PP
-.IP "\-\-uuid=UUID"
-git-annex uses this to specify the UUID of the repository it was expecting
-git-annex\-shell to access, as a sanity check.
-.IP
-.IP "\-\- fields=val fields=val.. \-\-"
-Additional fields may be specified this way, to retain compatibility with
-past versions of git-annex\-shell (that ignore these, but would choke
-on new dashed options).
-.IP
-Currently used fields include remoteuuid=, associatedfile=,
-unlocked=, direct=, and autoinit=
-.IP
-.SH HOOK
-After content is received or dropped from the repository by git-annex\-shell,
-it runs a hook, \fB.git/hooks/annex\-content\fP (or \fBhooks/annex\-content\fP on a bare
-repository). The hook is not currently passed any information about what
-changed.
-.PP
-.SH ENVIRONMENT
-.IP "GIT_ANNEX_SHELL_READONLY"
-.IP
-If set, disallows any command that could modify the repository.
-.IP
-Note that this does not prevent passing commands on to git\-shell.
-For that, you also need ...
-.IP
-.IP "GIT_ANNEX_SHELL_LIMITED"
-If set, disallows running git\-shell to handle unknown commands.
-.IP
-.IP "GIT_ANNEX_SHELL_DIRECTORY"
-If set, git-annex\-shell will refuse to run commands that do not operate
-on the specified directory.
-.IP
-.SH EXAMPLES
-To make a \fB~/.ssh/authorized_keys\fP file that only allows git-annex\-shell
-to be run, and not other commands, pass the original command to the \-c
-option:
-.PP
- command="git-annex\-shell \-c \\"$SSH_ORIGINAL_COMMAND\\"",no\-agent\-forwarding,no\-port\-forwarding,no\-X11\-forwarding ssh\-rsa AAAAB3NzaC1y[...] user@example.com
-.PP
-To further restrict git-annex\-shell to a particular repository, 
-and fully lock it down to read\-only mode:
-.PP
- command="GIT_ANNEX_SHELL_DIRECTORY=/srv/annex GIT_ANNEX_SHELL_LIMITED=true GIT_ANNEX_SHELL_READONLY=true git-annex\-shell \-c \\"$SSH_ORIGINAL_COMMAND\\"",no\-agent\-forwarding,no\-port\-forwarding,no\-X11\-forwarding ssh\-rsa AAAAB3NzaC1y[...] user@example.com
-.PP
-Obviously, \fBssh\-rsa AAAAB3NzaC1y[...] user@example.com\fP needs to
-replaced with your SSH key. The above also assumes \fBgit-annex\-shell\fP
-is availble in your \fB$PATH\fP, use an absolute path if it is not the
-case.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git\-shell(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-<http://git-annex.branchable.com/>
-.PP
-.PP
-
diff --git a/man/git-annex-smudge.1 b/man/git-annex-smudge.1
deleted file mode 100644
--- a/man/git-annex-smudge.1
+++ /dev/null
@@ -1,40 +0,0 @@
-.TH git-annex-smudge 1
-.SH NAME
-git-annex-smudge \- git filter driver for git-annex
-.PP
-.SH SYNOPSIS
-git annex smudge [\-\-clean] file
-.PP
-.SH DESCRIPTION
-This command lets git-annex be used as a git filter driver which lets
-annexed files in the git repository to be unlocked at all times, instead
-of being symlinks.
-.PP
-When adding a file with \fBgit add\fP, the annex.largefiles config is
-consulted to decide if a given file should be added to git as\-is,
-or if its content are large enough to need to use git-annex.
-.PP
-The git configuration to use this command as a filter driver is as follows.
-This is normally set up for you by git-annex init, so you should
-not need to configure it manually.
-.PP
- [filter "annex"]
-         smudge = git-annex smudge %f
-         clean = git-annex smudge \-\-clean %f
-.PP
-To make git use that filter driver, it needs to be configured in
-the .gitattributes file or in \fB.git/config/attributes\fP. The latter
-is normally configured when a repository is initialized, with the following
-contents:
-.PP
- * filter=annex
-\&.* !filter
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-status.1 b/man/git-annex-status.1
deleted file mode 100644
--- a/man/git-annex-status.1
+++ /dev/null
@@ -1,32 +0,0 @@
-.TH git-annex-status 1
-.SH NAME
-git-annex-status \- show the working tree status
-.PP
-.SH SYNOPSIS
-git annex status \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Similar to \fBgit status \-\-short\fP, this command displays the status of the files
-in the working tree. 
-.PP
-Show files that are not checked into git (?), deleted (D),
-modified (M), added but not committed (A), and type changed/unlocked (T).
-.PP
-Particularly useful in direct mode.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-json\fP"
-.IP
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git\-status(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-sync.1 b/man/git-annex-sync.1
deleted file mode 100644
--- a/man/git-annex-sync.1
+++ /dev/null
@@ -1,89 +0,0 @@
-.TH git-annex-sync 1
-.SH NAME
-git-annex-sync \- synchronize local repository with remotes
-.PP
-.SH SYNOPSIS
-git annex sync \fB[remote ...]\fP
-.PP
-.SH DESCRIPTION
-Use this command when you want to synchronize the local repository with
-one or more of its remotes. You can specify the remotes (or remote
-groups) to sync with by name; the default if none are specified is to
-sync with all remotes.
-.PP
-The sync process involves first committing any local changes to files
-that have previously been added to the repository,
-then fetching and merging the \fBsynced/master\fP and the \fBgit-annex\fP branch
-from the remote repositories, and finally pushing the changes back to
-those branches on the remote repositories. You can use standard git
-commands to do each of those steps by hand, or if you don't want to
-worry about the details, you can use sync.
-.PP
-The content of annexed objects is not synced by default, but the \-\-content
-option (see below) can make that also be synchronized.
-.PP
-Merge conflicts are automatically handled by sync. When two conflicting
-versions of a file have been committed, both will be added to the tree,
-under different filenames. For example, file "foo" would be replaced
-with "foo.somekey" and "foo.otherkey".
-.PP
-Note that syncing with a remote will not update the remote's working
-tree with changes made to the local repository. However, those changes
-are pushed to the remote, so they can be merged into its working tree
-by running "git annex sync" on the remote.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-Only sync with the remotes with the lowest annex\-cost value configured.
-.IP
-.IP "\fB\-\-commit\fP, \fB\-\-no\-commit\fP"
-A commit is done by default. Use \-\-no\-commit to avoid committing local changes.
-.IP
-.IP "\fB\-\-message=msg\fP"
-Use this option to specify a commit message.
-.IP
-.IP "\fB\-\-pull\fP, \fB\-\-no\-pull\fP"
-By default, git pulls from remotes. Use \-\-no\-pull to disable.
-.IP
-.IP "\fB\-\-push\fP, \fB\-\-no\-push\fP "
-By default, git pushes to remotes. Use \-\-no\-push to disable.
-.IP
-.IP "\fB\-\-content\fP, \fB\-\-no\-content\fP"
-Normally, syncing does not transfer the contents of annexed files.
-The \-\-content option causes the content of files in the work tree
-to also be uploaded and downloaded as necessary.  
-.IP
-Normally this tries to get each annexed file in the work tree
-that the local repository  does not yet have, and then copies each
-file in the work tree to every remote that it is syncing with.
-This behavior can be overridden by configuring the preferred content
-of a repository. See git-annex\-preferred\-content(1).
-.IP
-.IP "\fB\-\-all\fP"
-This option, when combined with \fB\-\-content\fP, makes all available versions
-of all files be synced, when preferred content settings allow.
-.IP
-Note that preferred content settings that use \fBinclude=\fP or \fBexclude=\fP
-will only match the version of files currently in the work tree, but not
-past versions of files.
-.IP
-.IP "\fB\-\-jobs=N\fP \fB\-JN\fP"
-Enables parallel syncing with up to the specified number of jobs
-running at once. For example: \fB\-J10\fP
-.IP
-When there are multiple git remotes, pushes will be made to them in
-parallel. Pulls are not done in parallel because that tends to be
-less efficient. When \-\-content is synced, the files are processed
-in parallel as well.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-preferred\-content(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-test.1 b/man/git-annex-test.1
deleted file mode 100644
--- a/man/git-annex-test.1
+++ /dev/null
@@ -1,31 +0,0 @@
-.TH git-annex-test 1
-.SH NAME
-git-annex-test \- run built\-in test suite
-.PP
-.SH SYNOPSIS
-git annex test
-.PP
-.SH DESCRIPTION
-This runs git-annex's built\-in test suite.
-.PP
-The test suite runs in the \fB.t\fP subdirectory of the current directory.
-.PP
-It can be useful to run the test suite on different filesystems,
-or to verify your local installation of git-annex.
-.PP
-.SH OPTIONS
-There are several options, provided by Haskell's tasty test
-framework. Pass \-\-help for details about those.
-.PP
-.IP "\fB\-\-keep\-failures\fP"
-When there are test failures, leave the \fB.t\fP directory populated with
-repositories that demonstate the failures, for later analysis.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-testremote.1 b/man/git-annex-testremote.1
deleted file mode 100644
--- a/man/git-annex-testremote.1
+++ /dev/null
@@ -1,34 +0,0 @@
-.TH git-annex-testremote 1
-.SH NAME
-git-annex-testremote \- test transfers to/from a remote
-.PP
-.SH SYNOPSIS
-git annex testremote \fBremote\fP
-.PP
-.SH DESCRIPTION
-This tests a remote by generating some random objects and sending them to
-the remote, then redownloading them, removing them from the remote, etc.
-.PP
-It's safe to run in an existing repository (the repository contents are
-not altered), although it may perform expensive data transfers.
-.PP
-Testing a single remote will use the remote's configuration,
-automatically varying the chunk sizes, and with simple shared encryption
-enabled and disabled.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-Perform a smaller set of tests.
-.IP
-.IP "\fB\-\-size=NUnits\fP"
-Tune the base size of the generated objects. The default is 1MiB.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-transferkey.1 b/man/git-annex-transferkey.1
deleted file mode 100644
--- a/man/git-annex-transferkey.1
+++ /dev/null
@@ -1,31 +0,0 @@
-.TH git-annex-transferkey 1
-.SH NAME
-git-annex-transferkey \- transfers a key from or to a remote
-.PP
-.SH SYNOPSIS
-git annex transferkey \fBkey [\-\-from=remote|\-\-to=remote]\fP
-.PP
-.SH DESCRIPTION
-This plumbing\-level command is used to request a single key be
-transferred.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-from=remote\fP"
-.IP
-Download the content of the key from the remote.
-.IP
-.IP "\fB\-\-to=remote\fP"
-Upload the content of the key to the remote.
-.IP
-.IP "\fB\-\-file=name\fP"
-Provides a hint about the name of the file associated with the key.
-(This name is only used in progress displays.)
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-transferkeys.1 b/man/git-annex-transferkeys.1
deleted file mode 100644
--- a/man/git-annex-transferkeys.1
+++ /dev/null
@@ -1,26 +0,0 @@
-.TH git-annex-transferkeys 1
-.SH NAME
-git-annex-transferkeys \- transfers keys
-.PP
-.SH SYNOPSIS
-git annex transferkeys
-.PP
-.SH DESCRIPTION
-This plumbing\-level command is used by the assistant to transfer data.
-It is a long\-running process, which is fed instructions about the keys
-to transfer using an internal stdio protocol, which is
-intentionally not documented (as it may change at any time).
-.PP
-It's normal to have a transferkeys process running when the assistant is
-running.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-assistant(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-trust.1 b/man/git-annex-trust.1
deleted file mode 100644
--- a/man/git-annex-trust.1
+++ /dev/null
@@ -1,28 +0,0 @@
-.TH git-annex-trust 1
-.SH NAME
-git-annex-trust \- trust a repository
-.PP
-.SH SYNOPSIS
-git annex trust \fB[repository ...]\fP
-.PP
-.SH DESCRIPTION
-Records that a repository is trusted to not unexpectedly lose
-content. Use with care.
-.PP
-Repositories can be specified using their remote name, their
-description, or their UUID. To trust the current repository, use "here".
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-semitrust(1)
-.PP
-git-annex\-untrust(1)
-.PP
-git-annex\-dead(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-unannex.1 b/man/git-annex-unannex.1
deleted file mode 100644
--- a/man/git-annex-unannex.1
+++ /dev/null
@@ -1,38 +0,0 @@
-.TH git-annex-unannex 1
-.SH NAME
-git-annex-unannex \- undo accidental add command
-.PP
-.SH SYNOPSIS
-git annex unannex \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Use this to undo an accidental \fBgit annex add\fP command. It puts the
-file back how it was before the add.
-.PP
-Note that for safety, the content of the file remains in the annex,
-until you use \fBgit annex unused\fP and \fBgit annex dropunused\fP.
-.PP
-This is not the command you should use if you intentionally annexed a
-file and don't want its contents any more. In that case you should use
-\fBgit annex drop\fP instead, and you can also \fBgit rm\fP the file.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-Normally this does a slow copy of the file. In \fB\-\-fast\fP mode, it
-instead makes a hard link from the file to the content in the annex.
-But use \-\-fast mode with caution, because editing the file will
-change the content in the annex.
-.IP
-.IP "file matching options"
-The git-annex\-matching\-options(1)
-can be used to specify files to unannex.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-undo.1 b/man/git-annex-undo.1
deleted file mode 100644
--- a/man/git-annex-undo.1
+++ /dev/null
@@ -1,32 +0,0 @@
-.TH git-annex-undo 1
-.SH NAME
-git-annex-undo \- undo last change to a file or directory
-.PP
-.SH SYNOPSIS
-git annex  \fB[filename|directory] ...\fP
-.PP
-.SH DESCRIPTION
-When passed a filename, undoes the last change that was made to that
-file.
-.PP
-When passed a directory, undoes the last change that was made to the
-contents of that directory.
-.PP
-Running undo a second time will undo the undo, returning the working
-tree to the same state it had before. To support undoing an undo of
-staged changes, any staged changes are first committed by the
-undo command.
-.PP
-Note that this does not undo get/drop of a file's content; it only
-operates on the file tree committed to git.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-add(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-ungroup.1 b/man/git-annex-ungroup.1
deleted file mode 100644
--- a/man/git-annex-ungroup.1
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH git-annex-ungroup 1
-.SH NAME
-git-annex-ungroup \- remove a repository from a group
-.PP
-.SH SYNOPSIS
-git annex ungroup \fBrepository groupname\fP
-.PP
-.SH DESCRIPTION
-Removes a repository from a group.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-group(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-uninit.1 b/man/git-annex-uninit.1
deleted file mode 100644
--- a/man/git-annex-uninit.1
+++ /dev/null
@@ -1,24 +0,0 @@
-.TH git-annex-uninit 1
-.SH NAME
-git-annex-uninit \- de\-initialize git-annex and clean out repository
-.PP
-.SH SYNOPSIS
-git annex uninit
-.PP
-.SH DESCRIPTION
-Use this to stop using git annex. It will unannex every file in the
-repository, and remove all of git-annex's other data, leaving you with a
-git repository plus the previously annexed files.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-unannex(1)
-.PP
-git-annex\-init(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-unlock.1 b/man/git-annex-unlock.1
deleted file mode 100644
--- a/man/git-annex-unlock.1
+++ /dev/null
@@ -1,50 +0,0 @@
-.TH git-annex-unlock 1
-.SH NAME
-git-annex-unlock \- unlock files for modification
-.PP
-.SH SYNOPSIS
-git annex unlock \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Normally, the content of annexed files is protected from being changed.
-Unlocking an annexed file allows it to be modified. This replaces the
-symlink for each specified file with the file's content.
-You can then modify it and \fBgit annex add\fP (or \fBgit commit\fP) to save your
-changes.
-.PP
-In repositories with annex.version 5 or earlier, unlocking a file is local
-to the repository, and is temporary. With version 6, unlocking a file
-changes how it is stored in the git repository (from a symlink to a pointer
-file), so you can commit it like any other change. Also in version 6, you
-can use \fBgit add\fP to add a file to the annex in unlocked form. This allows
-workflows where a file starts out unlocked, is modified as necessary, and
-is locked once it reaches its final version.
-.PP
-Normally, unlocking a file requires a copy to be made of its content,
-so that its original content is preserved, while the copy can be modified.
-To use less space, annex.thin can be set to true; this makes a hard link
-to the content be made instead of a copy. (Only when supported by the file
-system, and only in repository version 6.) While this can save considerable
-disk space, any modification made to a file will cause the old version of the
-file to be lost from the local repository. So, enable annex.thin with care.
-.PP
-.SH OPTIONS
-.IP "file matching options"
-.IP
-The git-annex\-matching\-options(1)
-can be used to specify files to unlock.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-edit(1)
-.PP
-git-annex\-add(1)
-.PP
-git-annex\-lock(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-untrust.1 b/man/git-annex-untrust.1
deleted file mode 100644
--- a/man/git-annex-untrust.1
+++ /dev/null
@@ -1,28 +0,0 @@
-.TH git-annex-untrust 1
-.SH NAME
-git-annex-untrust \- do not trust a repository
-.PP
-.SH SYNOPSIS
-git annex untrust \fB[repository ...]\fP
-.PP
-.SH DESCRIPTION
-Records that a repository is not trusted and could lose content
-at any time.
-.PP
-Repositories can be specified using their remote name, their
-description, or their UUID. To untrust the current repository, use "here".
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-trust(1)
-.PP
-git-annex\-semitrust(1)
-.PP
-git-annex\-dead(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-unused.1 b/man/git-annex-unused.1
deleted file mode 100644
--- a/man/git-annex-unused.1
+++ /dev/null
@@ -1,77 +0,0 @@
-.TH git-annex-unused 1
-.SH NAME
-git-annex-unused \- look for unused file content
-.PP
-.SH SYNOPSIS
-git annex unused
-.PP
-.SH DESCRIPTION
-Checks the annex for data that does not correspond to any files present
-in any tag or branch, and prints a numbered list of the data.
-.PP
-After running this command, you can use the \fB\-\-unused\fP option with many 
-other git-annex commands to operate on all the unused data that was found.
-.PP
-For example, to move all unused data to origin:
-.PP
- git annex unused; git annex move \-\-unused \-\-to origin
-.PP
-.SH OPTIONS
-.IP "\fB\-\-fast\fP"
-.IP
-Only show unused temp and bad files.
-.IP
-.IP "\fB\-\-from=remote\fP"
-Check for unused data that is located on a remote.
-.IP
-.IP "\fB\-\-used\-refspec=+ref:\-ref\fP"
-By default, any data that the work tree uses, or that any refs in the git
-repository point to is considered to be used. If you only want to use
-some refs, you can use this option to specify the ones to use. Data that
-is not in the specified refs (and not used by the work tree) will then be
-considered unused.
-.IP
-The git configuration annex.used\-refspec can be used to configure
-this in a more permanent fashion.
-.IP
-.SH REFSPEC FORMAT
-The refspec format for \-\-used\-refspec is a colon\-separated list of
-additions and removals of refs. For example:
-.PP
- +refs/heads/*:+HEAD^:+refs/tags/*:\-refs/tags/old\-tag
-.PP
-This adds all refs/heads/ refs, as well as the previous version
-of HEAD. It also adds all tags, except for old\-tag.
-.PP
-The refspec is processed by starting with an empty set of refs,
-and walking the list in order from left to right.
-.PP
-Each + using a glob is matched against all relevant refs
-(a subset of \fBgit show\-ref\fP) and all matching refs are added
-to the set.
-For example, "+refs/remotes/*" adds all remote refs.
-.PP
-Each + without a glob adds the literal value to the set.
-For example, "+HEAD^" adds "HEAD^".
-.PP
-Each \- is matched against the set of refs accumulated so far.
-Any matching refs are removed from the set.
-.PP
-"reflog" adds all the refs from the reflog. This will make past versions
-of files not be considered to be unused until the ref expires from the
-reflog (by default for 90 days). Note that this may make git-annex unused
-take some time to complete, it if needs to check every ref from the
-reflog.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-dropunused(1)
-.PP
-git-annex\-addunused(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-upgrade.1 b/man/git-annex-upgrade.1
deleted file mode 100644
--- a/man/git-annex-upgrade.1
+++ /dev/null
@@ -1,35 +0,0 @@
-.TH git-annex-upgrade 1
-.SH NAME
-git-annex-upgrade \- upgrade repository layout
-.PP
-.SH SYNOPSIS
-git annex upgrade
-.PP
-.SH DESCRIPTION
-Upgrades the repository to current layout.
-.PP
-Each git-annex repository has an annex.version in its git configuration,
-that indicates the repository version. If git-annex changes to a new
-layout, you must upgrade the repository before git-annex can be used in it.
-.PP
-To see version information, run \fBgit annex version\fP. 
-.PP
-Currently, git-annex supports upgrades all the way back to version 0, which
-was only used by its author. It's expected that git-annex will always
-support upgrading from all past repository versions \-\- this is necessary to
-allow archives to be taken offline for years and later used.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-migrate(1)
-.PP
-Upgrades procedures and history: <http://git-annex.branchable.com/upgrades>
-.PP
-News and release notes: <http://git-annex.branchable.com/news/>
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-vadd.1 b/man/git-annex-vadd.1
deleted file mode 100644
--- a/man/git-annex-vadd.1
+++ /dev/null
@@ -1,35 +0,0 @@
-.TH git-annex-vadd 1
-.SH NAME
-git-annex-vadd \- add subdirs to current view
-.PP
-.SH SYNOPSIS
-git annex vadd \fB[field=glob ...] [field=value ...] [tag ...]\fP
-.PP
-.SH DESCRIPTION
-Changes the current view, adding an additional level of directories
-to categorize the files.
-.PP
-For example, when the view is by author/tag, \fBvadd year=*\fP will
-change it to year/author/tag.
-.PP
-So will \fBvadd year=2014 year=2013\fP, but limiting the years in view
-to only those two.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-metadata(1)
-.PP
-git-annex\-view(1)
-.PP
-git-annex\-vpop(1)
-.PP
-git-annex\-vfilter(1)
-.PP
-git-annex\-vcycle(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-vcycle.1 b/man/git-annex-vcycle.1
deleted file mode 100644
--- a/man/git-annex-vcycle.1
+++ /dev/null
@@ -1,31 +0,0 @@
-.TH git-annex-vcycle 1
-.SH NAME
-git-annex-vcycle \- switch view to next layout
-.PP
-.SH SYNOPSIS
-git annex vcycle
-.PP
-.SH DESCRIPTION
-When a view involves nested subdirectories, this cycles the order.
-.PP
-For example, when the view is by year/author/tag, \fBvcycle\fP will switch
-it to author/tag/year.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-metadata(1)
-.PP
-git-annex\-view(1)
-.PP
-git-annex\-vpop(1)
-.PP
-git-annex\-vadd(1)
-.PP
-git-annex\-vfilter(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-version.1 b/man/git-annex-version.1
deleted file mode 100644
--- a/man/git-annex-version.1
+++ /dev/null
@@ -1,32 +0,0 @@
-.TH git-annex-version 1
-.SH NAME
-git-annex-version \- show version info
-.PP
-.SH SYNOPSIS
-git annex version
-.PP
-.SH DESCRIPTION
-Shows the version of git-annex, as well as repository version information.
-.PP
-git-annex's version is in the form MAJOR.DATE, where MAJOR is a number
-like 5, which corresponds to the current repository version, and DATE
-is the date of the last release, like 20150320.
-.PP
-Daily builds of git-annex will append a "\-gREF" to the version, which
-corresponds to the git ref from git-annex's source repository that was
-built. Therefore, "5.20150320\-gdd35cf3" is a daily build, and
-"5.20150401" is an April 1st release made a bit later.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-raw\fP"
-.IP
-Causes only git-annex's version to be output, and nothing else.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-vfilter.1 b/man/git-annex-vfilter.1
deleted file mode 100644
--- a/man/git-annex-vfilter.1
+++ /dev/null
@@ -1,29 +0,0 @@
-.TH git-annex-vfilter 1
-.SH NAME
-git-annex-vfilter \- filter current view
-.PP
-.SH SYNOPSIS
-git annex vfilter \fB[tag ...] [field=value ...] [!tag ...] [field!=value ...]\fP
-.PP
-.SH DESCRIPTION
-Filters the current view to only the files that have the
-specified field values and tags.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-metadata(1)
-.PP
-git-annex\-view(1)
-.PP
-git-annex\-vpop(1)
-.PP
-git-annex\-vadd(1)
-.PP
-git-annex\-vcycle(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-vicfg.1 b/man/git-annex-vicfg.1
deleted file mode 100644
--- a/man/git-annex-vicfg.1
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH git-annex-vicfg 1
-.SH NAME
-git-annex-vicfg \- edit git-annex's configuration
-.PP
-.SH SYNOPSIS
-git annex vicfg
-.PP
-.SH DESCRIPTION
-Opens EDITOR on a temp file containing all of git-annex's global 
-configuration settings, and when it exits, stores any
-changes made back to the git-annex branch.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-view.1 b/man/git-annex-view.1
deleted file mode 100644
--- a/man/git-annex-view.1
+++ /dev/null
@@ -1,54 +0,0 @@
-.TH git-annex-view 1
-.SH NAME
-git-annex-view \- enter a view branch
-.PP
-.SH SYNOPSIS
-git annex view \fB[tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]\fP
-.PP
-.SH DESCRIPTION
-Uses metadata to build a view branch of the files in the current branch,
-and checks out the view branch. Only files in the current branch whose
-metadata matches all the specified field values and tags will be
-shown in the view.
-.PP
-Multiple values for a metadata field can be specified, either by using
-a glob (\fBfield="*"\fP) or by listing each wanted value. The resulting view
-will put files in subdirectories according to the value of their fields.
-.PP
-Once within such a view, you can make additional directories, and
-copy or move files into them. When you commit, the metadata will
-be updated to correspond to your changes. Deleting files and committing
-also updates the metadata.
-.PP
-There are fields corresponding to the path to the file. So a file
-"foo/bar/baz/file" has fields "/=foo", "foo/=bar", and "foo/bar/=baz".
-These location fields can be used the same as other metadata to construct
-the view.
-.PP
-For example, \fB/=foo\fP will only include files from the foo
-directory in the view, while \fBfoo/=*\fP will preserve the
-subdirectories of the foo directory in the view.
-.PP
-To enter a view containing only files that lack a given metadata
-field or tag, specify field!=value or !tag. Globs can also be used here,
-so \fBfield!="*"\fP will enter a view containing only files that do not have
-the field set to any value.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-metadata(1)
-.PP
-git-annex\-vpop(1)
-.PP
-git-annex\-vfilter(1)
-.PP
-git-annex\-vadd(1)
-.PP
-git-annex\-vcycle(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-vpop.1 b/man/git-annex-vpop.1
deleted file mode 100644
--- a/man/git-annex-vpop.1
+++ /dev/null
@@ -1,31 +0,0 @@
-.TH git-annex-vpop 1
-.SH NAME
-git-annex-vpop \- switch back to previous view
-.PP
-.SH SYNOPSIS
-git annex vpop \fB[N]\fP
-.PP
-.SH DESCRIPTION
-Switches from the currently active view back to the previous view.
-Or, from the first view back to original branch.
-.PP
-The optional number tells how many views to pop.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-metadata(1)
-.PP
-git-annex\-view(1)
-.PP
-git-annex\-vfilter(1)
-.PP
-git-annex\-vadd(1)
-.PP
-git-annex\-vcycle(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-wanted.1 b/man/git-annex-wanted.1
deleted file mode 100644
--- a/man/git-annex-wanted.1
+++ /dev/null
@@ -1,32 +0,0 @@
-.TH git-annex-wanted 1
-.SH NAME
-git-annex-wanted \- get or set preferred content expression
-.PP
-.SH SYNOPSIS
-git annex wanted \fBrepository [expression]\fP
-.PP
-.SH DESCRIPTION
-When run with an expression, configures the content that is preferred
-to be held in the archive. See git-annex\-preferred\-content(1)
-.PP
-For example:
-.PP
- git annex wanted . "include=*.mp3 or include=*.ogg"
-.PP
-Without an expression, displays the current preferred content setting
-of the repository.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-required(1)
-.PP
-git-annex\-preferred\-content(1)
-.PP
-git-annex\-groupwanted(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-watch.1 b/man/git-annex-watch.1
deleted file mode 100644
--- a/man/git-annex-watch.1
+++ /dev/null
@@ -1,40 +0,0 @@
-.TH git-annex-watch 1
-.SH NAME
-git-annex-watch \- watch for changes
-.PP
-.SH SYNOPSIS
-git annex watch
-.PP
-.SH DESCRIPTION
-Watches for changes to files in the current directory and its subdirectories,
-and takes care of automatically adding new files, as well as dealing with
-deleted, copied, and moved files. With this running as a daemon in the
-background, you no longer need to manually run git commands when
-manipulating your files.
-.PP
-By default, all files in the directory will be added to the repository.
-(Including dotfiles.) To block some files from being added, use
-\fB.gitignore\fP files.
-.PP
-By default, all files that are added are added to the annex, the same
-as when you run \fBgit annex add\fP. If you configure annex.largefiles,
-files that it does not match will instead be added with \fBgit add\fP.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-foreground\fP"
-.IP
-Avoid forking to the background.
-.IP
-.IP "\fB\-\-stop\fP"
-Stop a running daemon in the current repository.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-assistant(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-webapp.1 b/man/git-annex-webapp.1
deleted file mode 100644
--- a/man/git-annex-webapp.1
+++ /dev/null
@@ -1,46 +0,0 @@
-.TH git-annex-webapp 1
-.SH NAME
-git-annex-webapp \- launch webapp
-.PP
-.SH SYNOPSIS
-git annex webapp
-.PP
-.SH DESCRIPTION
-Opens a web app, that allows easy setup of a git-annex repository,
-and control of the git-annex assistant. If the assistant is not
-already running, it will be started.
-.PP
-By default, the webapp can only be accessed from localhost, and running
-it opens a browser window.
-.PP
-.SH OPTIONS
-.IP "\fB\-\-listen=address\fP"
-.IP
-Useful for using the webapp on a remote computer. This makes the webapp
-listen on the specified address.
-.IP
-This disables running a local web browser, and outputs the url you
-can use to open the webapp.
-.IP
-Set annex.listen in the git config to make the webapp always
-listen on an address.
-.IP
-.SH USING HTTPS
-When using the webapp on a remote computer, you'll almost certainly
-want to enable HTTPS. The webapp will use HTTPS if it finds
-a .git/annex/privkey.pem and .git/annex/certificate.pem. Here's
-one way to generate those files, using a self\-signed certificate:
-.PP
- openssl genrsa \-out .git/annex/privkey.pem 4096
- openssl req \-new \-x509 \-key .git/annex/privkey.pem > .git/annex/certificate.pem
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-assistant(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-whereis.1 b/man/git-annex-whereis.1
deleted file mode 100644
--- a/man/git-annex-whereis.1
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH git-annex-whereis 1
-.SH NAME
-git-annex-whereis \- lists repositories that have file content
-.PP
-.SH SYNOPSIS
-git annex whereis \fB[path ...]\fP
-.PP
-.SH DESCRIPTION
-Displays information about where the contents of files are located.
-.PP
-For example:
-.PP
- # git annex whereis
- whereis my_cool_big_file (1 copy)
- 	0c443de8\-e644\-11df\-acbf\-f7cd7ca6210d  \-\- laptop
- whereis other_file (3 copies)
- 	0c443de8\-e644\-11df\-acbf\-f7cd7ca6210d  \-\- laptop
- 	62b39bbe\-4149\-11e0\-af01\-bb89245a1e61  \-\- usb drive [here]
- 	7570b02e\-15e9\-11e0\-adf0\-9f3f94cb2eaa  \-\- backup drive
-.PP
-.SH OPTIONS
-.IP "file matching options"
-.IP
-The git-annex\-matching\-options(1)
-can be used to specify files to act on.
-.IP
-.IP "\fB\-\-key=keyname\fP"
-Show where a particular git-annex key is located.
-.IP
-.IP "\fB\-\-all\fP"
-Show whereis information for all known keys.
-.IP
-.IP "\fB\-\-unused\fP"
-Show whereis information for files found by last run of git-annex unused.
-.IP
-.IP "\fB\-\-json\fP"
-Enable JSON output. This is intended to be parsed by programs that use
-git-annex. Each line of output is a JSON object.
-.IP
-.IP "\fB\-\-batch\fP"
-Enables batch mode, in which a file is read in a line from stdin,
-its information displayed, and repeat.
-.IP
-Note that if the file is not an annexed file, an empty line will be
-output instead.
-.IP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-find(1)
-.PP
-git-annex\-list(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex-xmppgit.1 b/man/git-annex-xmppgit.1
deleted file mode 100644
--- a/man/git-annex-xmppgit.1
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH git-annex-xmppgit 1
-.SH NAME
-git-annex-xmppgit \- git to XMPP relay
-.PP
-.SH SYNOPSIS
-git annex xmppgit
-.PP
-.SH DESCRIPTION
-This command is used internally by the assistant to perform git pulls over XMPP.
-.PP
-.SH SEE ALSO
-git-annex(1)
-.PP
-git-annex\-assistant(1)
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-.PP
-
diff --git a/man/git-annex.1 b/man/git-annex.1
deleted file mode 100644
--- a/man/git-annex.1
+++ /dev/null
@@ -1,1216 +0,0 @@
-.TH git-annex 1
-.SH NAME
-git-annex \- manage files with git, without checking their contents in
-.PP
-.SH SYNOPSIS
-git annex command [params ...]
-.PP
-.SH DESCRIPTION
-git-annex allows managing files with git, without checking the file
-contents into git. While that may seem paradoxical, it is useful when
-dealing with files larger than git can currently easily handle, whether due
-to limitations in memory, checksumming time, or disk space.
-.PP
-Even without file content tracking, being able to manage files with git,
-move files around and delete files with versioned directory trees, and use
-branches and distributed clones, are all very handy reasons to use git. And
-annexed files can co\-exist in the same git repository with regularly
-versioned files, which is convenient for maintaining documents, Makefiles,
-etc that are associated with annexed files but that benefit from full
-revision control.
-.PP
-When a file is annexed, its content is moved into a key\-value store, and
-a symlink is made that points to the content. These symlinks are checked into
-git and versioned like regular files. You can move them around, delete
-them, and so on. Pushing to another git repository will make git-annex
-there aware of the annexed file, and it can be used to retrieve its
-content from the key\-value store.
-.PP
-.SH EXAMPLES
- # git annex get video/hackity_hack_and_kaxxt.mov
- get video/hackity_hack_and_kaxxt.mov (not available)
-   I was unable to access these remotes: server
-   Try making some of these repositories available:
-   	5863d8c0\-d9a9\-11df\-adb2\-af51e6559a49  \-\- my home file server
-    	58d84e8a\-d9ae\-11df\-a1aa\-ab9aa8c00826  \-\- portable USB drive
-    	ca20064c\-dbb5\-11df\-b2fe\-002170d25c55  \-\- backup SATA drive
- failed
- # sudo mount /media/usb
- # git remote add usbdrive /media/usb
- # git annex get video/hackity_hack_and_kaxxt.mov
- get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok
- 
- # git annex add iso
- add iso/Debian_5.0.iso ok
- 
- # git annex drop iso/Debian_4.0.iso
- drop iso/Debian_4.0.iso ok
- 
- # git annex move iso \-\-to=usbdrive
- move iso/Debian_5.0.iso (moving to usbdrive...) ok
-.PP
-.SH COMMONLY USED COMMANDS
-Like many git commands, git-annex can be passed a path that
-is either a file or a directory. In the latter case it acts on all relevant
-files in the directory. When no path is specified, most git-annex commands
-default to acting on all relevant files in the current directory (and
-subdirectories).
-.PP
-.IP "\fBhelp\fP"
-Display built\-in help.
-.IP
-For help on a specific command, use \fBgit annex help command\fP
-.IP
-.IP "\fBadd [path ...]\fP"
-Adds files in the path to the annex. If no path is specified, adds
-files from the current directory and below. 
-.IP
-See git-annex\-add(1) for details.
-.IP
-.IP "\fBget [path ...]\fP"
-Makes the content of annexed files available in this repository.
-.IP
-See git-annex\-get(1) for details.
-.IP
-.IP "\fBdrop [path ...]\fP"
-Drops the content of annexed files from this repository.
-.IP
-See git-annex\-drop(1) for details.
-.IP
-.IP "\fBmove [path ...] [\-\-from=remote|\-\-to=remote]\fP"
-Moves the content of files from or to another remote.
-.IP
-See git-annex\-move(1) for details.
-.IP
-.IP "\fBcopy [path ...] [\-\-from=remote|\-\-to=remote]\fP"
-Copies the content of files from or to another remote.
-.IP
-See git-annex\-copy(1) for details.
-.IP
-.IP "\fBstatus [path ...]\fP"
-Similar to \fBgit status \-\-short\fP, displays the status of the files in the
-working tree. Particularly useful in direct mode.
-.IP
-See git-annex\-status(1) for details.
-.IP
-.IP "\fBunlock [path ...]\fP"
-Unlock annexed files for modification.
-.IP
-See git-annex\-unlock(1) for details.
-.IP
-.IP "\fBedit [path ...]\fP"
-This is an alias for the unlock command. May be easier to remember,
-if you think of this as allowing you to edit an annexed file.
-.IP
-.IP "\fBlock [path ...]\fP"
-Use this to undo an unlock command if you don't want to modify
-the files, or have made modifications you want to discard.
-.IP
-See git-annex\-lock(1) for details.
-.IP
-.IP "\fBsync [remote ...]\fP"
-Synchronize local repository with remotes.
-.IP
-See git-annex\-sync(1) for details.
-.IP
-.IP "\fBmirror [path ...] [\-\-to=remote|\-\-from=remote]\fP"
-Mirror content of files to/from another repository.
-.IP
-See git-annex\-mirror(1) for details.
-.IP
-.IP "\fBaddurl [url ...]\fP"
-Downloads each url to its own file, which is added to the annex.
-.IP
-See git-annex\-addurl(1) for details.
-.IP
-.IP "\fBrmurl file url\fP"
-Record that the file is no longer available at the url.
-.IP
-See git-annex\-rmurl(1) for details.
-.IP
-.IP "\fBimport [path ...]\fP"
-Move and add files from outside git working copy into the annex.
-.IP
-See git-annex\-import(1) for details.
-.IP
-.IP "\fBimportfeed [url ...]\fP"
-Imports the contents of podcast feeds into the annex.
-.IP
-See git-annex\-importfeed(1) for details.
-.IP
-.IP "\fBundo [filename|directory] ...\fP"
-Undo last change to a file or directory.
-.IP
-See git-annex\-undo(1) for details.
-.IP
-.IP "\fBwatch\fP"
-Watch for changes and autocommit.
-.IP
-See git-annex\-watch(1) for details.
-.IP
-.IP "\fBassistant\fP"
-Automatically sync folders between devices.
-.IP
-See git-annex\-assistant(1) for details.
-.IP
-.IP "\fBwebapp\fP"
-Opens a web app, that allows easy setup of a git-annex repository,
-and control of the git-annex assistant. If the assistant is not
-already running, it will be started.
-.IP
-See git-annex\-webapp(1) for details.
-.IP
-.SH REPOSITORY SETUP COMMANDS
-.IP "\fBinit [description]\fP"
-.IP
-Until a repository (or one of its remotes) has been initialized,
-git-annex will refuse to operate on it, to avoid accidentally
-using it in a repository that was not intended to have an annex.
-.IP
-See git-annex\-init(1) for details.
-.IP
-.IP "\fBdescribe repository description\fP"
-Changes the description of a repository.
-.IP
-See git-annex\-describe(1) for details.
-.IP
-.IP "\fBinitremote name type=value [param=value ...]\fP"
-Creates a new special remote, and adds it to \fB.git/config\fP.
-.IP
-See git-annex\-initremote(1) for details.
-.IP
-.IP "\fBenableremote name [param=value ...]\fP"
-Enables use of an existing special remote in the current repository.
-.IP
-See git-annex\-enableremote(1) for details.
-.IP
-.IP "\fBnumcopies [N]\fP"
-Configure desired number of copies.
-.IP
-See git-annex\-numcopies(1) for details.
-.IP
-.IP "\fBtrust [repository ...]\fP"
-Records that a repository is trusted to not unexpectedly lose
-content. Use with care.
-.IP
-See git-annex\-trust(1) for details.
-.IP
-.IP "\fBuntrust [repository ...]\fP"
-Records that a repository is not trusted and could lose content
-at any time.
-.IP
-See git-annex\-untrust(1) for details.
-.IP
-.IP "\fBsemitrust [repository ...]\fP"
-Returns a repository to the default semi trusted state.
-.IP
-See git-annex\-semitrust(1) for details.
-.IP
-.IP "\fBgroup repository groupname\fP"
-Add a repository to a group.
-.IP
-See git-annex\-group(1) for details.
-.IP
-.IP "\fBungroup repository groupname\fP"
-Removes a repository from a group.
-.IP
-See git-annex\-ungroup(1) for details.
-.IP
-.IP "\fBwanted repository [expression]\fP"
-Get or set preferred content expression.
-.IP
-See git-annex\-wanted(1) for details.
-.IP
-.IP "\fBgroupwanted groupname [expression]\fP"
-Get or set groupwanted expression.
-.IP
-See git-annex\-groupwanted(1) for details.
-.IP
-.IP "\fBrequired repository [expression]\fP"
-Get or set required content expression.
-.IP
-See git-annex\-required(1) for details.
-.IP
-.IP "\fBschedule repository [expression]\fP"
-Get or set scheduled jobs.
-.IP
-See git-annex\-schedule(1) for details.
-.IP
-.IP "\fBvicfg\fP"
-Opens EDITOR on a temp file containing most of the above configuration
-settings, as well as a few others, and when it exits, stores any changes
-made back to the git-annex branch.
-.IP
-See git-annex\-vicfg(1) for details.
-.IP
-.IP "\fBdirect\fP"
-Switches a repository to use direct mode, where rather than symlinks to
-files, the files are directly present in the repository.
-.IP
-See git-annex\-direct(1) for details.
-.IP
-.IP "\fBindirect\fP"
-Switches a repository back from direct mode to the default, indirect mode.
-.IP
-See git-annex\-indirect(1) for details.
-.IP
-.IP "\fBadjust\fP"
-Switches a repository to use an adjusted branch, which can automatically
-unlock all files, etc.
-.IP
-See git-annex\-adjust(1) for details.
-.IP
-.SH REPOSITORY MAINTENANCE COMMANDS
-.IP "\fBfsck [path ...]\fP"
-.IP
-Checks the annex consistency, and warns about or fixes any problems found. 
-This is a good complement to \fBgit fsck\fP.
-.IP
-See git-annex\-fsck(1) for details.
-.IP
-.IP "\fBexpire [repository:]time ...\fP"
-Expires repositories that have not recently performed an activity
-(such as a fsck).
-.IP
-See git-annex\-expire(1) for details.
-.IP
-.IP "\fBunused\fP"
-Checks the annex for data that does not correspond to any files present
-in any tag or branch, and prints a numbered list of the data.
-.IP
-See git-annex\-unused(1) for details.
-.IP
-.IP "\fBdropunused [number|range ...]\fP"
-Drops the data corresponding to the numbers, as listed by the last
-\fBgit annex unused\fP
-.IP
-See git-annex\-dropunused(1) for details.
-.IP
-.IP "\fBaddunused [number|range ...]\fP"
-Adds back files for the content corresponding to the numbers or ranges,
-as listed by the last \fBgit annex unused\fP.
-.IP
-See git-annex\-addunused(1) for details.
-.IP
-.IP "\fBfix [path ...]\fP"
-Fixes up symlinks that have become broken to again point to annexed content.
-.IP
-See git-annex\-fix(1) for details.
-.IP
-.IP "\fBmerge\fP"
-Automatically merge changes from remotes.
-.IP
-See git-annex\-merge(1) for details.
-.IP
-.IP "\fBupgrade\fP"
-Upgrades the repository to current layout.
-.IP
-See git-annex\-upgrade(1) for details.
-.IP
-.IP "\fBdead [repository ...] [\-\-key key]\fP"
-Indicates that a repository or a single key has been irretrievably lost.
-.IP
-See git-annex\-dead(1) for details.
-.IP
-.IP "\fBforget\fP"
-Causes the git-annex branch to be rewritten, throwing away historical
-data about past locations of files.
-.IP
-See git-annex\-forget(1) for details.
-.IP
-.IP "\fBrepair\fP"
-This can repair many of the problems with git repositories that \fBgit fsck\fP
-detects, but does not itself fix. It's useful if a repository has become
-badly damaged. One way this can happen is if a repository used by git-annex
-is on a removable drive that gets unplugged at the wrong time.
-.IP
-See git-annex\-repair(1) for details.
-.IP
-.SH QUERY COMMANDS
-.IP "\fBfind [path ...]\fP"
-.IP
-Outputs a list of annexed files in the specified path. With no path,
-finds files in the current directory and its subdirectories.
-.IP
-See git-annex\-find(1) for details.
-.IP
-.IP "\fBwhereis [path ...]\fP"
-Displays information about where the contents of files are located.
-.IP
-See git-annex\-whereis(1) for details.
-.IP
-.IP "\fBlist [path ...]\fP"
-Displays a table of remotes that contain the contents of the specified
-files. This is similar to whereis but a more compact display.
-.IP
-See git-annex\-list(1) for details.
-.IP
-.IP "\fBlog [path ...]\fP"
-Displays the location log for the specified file or files,
-showing each repository they were added to ("+") and removed from ("\-").
-.IP
-See git-annex\-log(1) for details.
-.IP
-.IP "\fBinfo [directory|file|remote|uuid ...]\fP"
-Displays statistics and other information for the specified item,
-which can be a directory, or a file, or a remote, or the uuid of a
-repository. 
-.IP
-When no item is specified, displays statistics and information
-for the repository as a whole.
-.IP
-See git-annex\-info(1) for details.
-.IP
-.IP "\fBversion\fP"
-Shows the version of git-annex, as well as repository version information.
-.IP
-See git-annex\-version(1) for details.
-.IP
-.IP "\fBmap\fP"
-Generate map of repositories.
-.IP
-See git-annex\-map(1) for details.
-.IP
-.SH METADATA COMMANDS
-.IP "\fBmetadata [path ...]\fP"
-.IP
-The content of an annexed file can have any number of metadata fields
-attached to it to describe it. Each metadata field can in turn
-have any number of values.
-.IP
-This command can be used to set metadata, or show the currently set
-metadata.
-.IP
-See git-annex\-metadata(1) for details.
-.IP
-.IP "\fBview [tag ...] [field=value ...] [field=glob ...] [!tag ...] [field!=value ...]\fP"
-Uses metadata to build a view branch of the files in the current branch,
-and checks out the view branch. Only files in the current branch whose
-metadata matches all the specified field values and tags will be
-shown in the view.
-.IP
-See git-annex\-view(1) for details.
-.IP
-.IP "\fBvpop [N]\fP"
-Switches from the currently active view back to the previous view.
-Or, from the first view back to original branch.
-.IP
-See git-annex\-vpop(1) for details.
-.IP
-.IP "\fBvfilter [tag ...] [field=value ...] [!tag ...] [field!=value ...]\fP"
-Filters the current view to only the files that have the
-specified field values and tags.
-.IP
-See git-annex\-vfilter(1) for details.
-.IP
-.IP "\fBvadd [field=glob ...] [field=value ...] [tag ...]\fP"
-Changes the current view, adding an additional level of directories
-to categorize the files.
-.IP
-See git-annex\-vfilter(1) for details.
-.IP
-.IP "\fBvcycle\fP"
-When a view involves nested subdirectories, this cycles the order.
-.IP
-See git-annex\-vcycle(1) for details.
-.IP
-.SH UTILITY COMMANDS
-.IP "\fBmigrate [path ...]\fP"
-.IP
-Changes the specified annexed files to use a different key\-value backend.
-.IP
-See git-annex\-migrate(1) for details.
-.IP
-.IP "\fBreinject src dest\fP"
-Moves the src file into the annex as the content of the dest file.
-This can be useful if you have obtained the content of a file from
-elsewhere and want to put it in the local annex.
-.IP
-See git-annex\-reinject(1) for details.
-.IP
-.IP "\fBunannex [path ...]\fP"
-Use this to undo an accidental \fBgit annex add\fP command. It puts the
-file back how it was before the add.
-.IP
-See git-annex\-unannex(1) for details.
-.IP
-.IP "\fBuninit\fP"
-De\-initialize git-annex and clean out repository.
-.IP
-See git-annex\-uninit(1) for details.
-.IP
-.IP "\fBreinit uuid|description\fP"
-Initialize repository, reusing old UUID.
-.IP
-See git-annex\-reinit(1) for details.
-.IP
-.SH PLUMBING COMMANDS
-.IP "\fBpre\-commit [path ...]\fP"
-.IP
-This is meant to be called from git's pre\-commit hook. \fBgit annex init\fP
-automatically creates a pre\-commit hook using this.
-.IP
-See git-annex\-pre\-commit(1) for details.
-.IP
-.IP "\fBlookupkey [file ...]\fP"
-Looks up key used for file.
-.IP
-See git-annex\-lookupkey(1) for details.
-.IP
-.IP "\fBcalckey [file ...]\fP"
-Calculates the key that would be used to refer to a file.
-.IP
-See git-annex\-calckey(1) for details.
-.IP
-.IP "\fBcontentlocation [key ..]\fP"
-Looks up location of annexed content for a key.
-.IP
-See git-annex\-contentlocation(1) for details.
-.IP
-.IP "\fBexaminekey [key ...]\fP"
-Print information that can be determined purely by looking at the key.
-.IP
-See git-annex\-examinekey(1) for details.
-.IP
-.IP "\fBmatchexpression\fP"
-Checks if a preferred content expression matches provided data.
-.IP
-See git-annex\-matchexpression(1) for details.
-.IP
-.IP "\fBfromkey [key file]\fP"
-Manually set up a file in the git repository to link to a specified key.
-.IP
-See git-annex\-fromkey(1) for details.
-.IP
-.IP "\fBregisterurl [key url]\fP"
-Registers an url for a key.
-.IP
-See git-annex\-registerurl(1) for details.
-.IP
-.IP "\fBsetkey key file\fP"
-Moves a file into the annex as the content of a key.
-.IP
-See git-annex\-setkey(1) for details.
-.IP
-.IP "\fBdropkey [key ...]\fP"
-Drops annexed content for specified keys.
-.IP
-See git-annex\-dropkey(1) for details.
-.IP
-.IP "\fBtransferkey key [\-\-from=remote|\-\-to=remote]\fP"
-Transfers a key from or to a remote.
-.IP
-See git-annex\-transferkey(1) for details.
-.IP
-.IP "\fBtransferkeys\fP"
-Used internally by the assistant.
-.IP
-See git-annex\-transferkey(1) for details.
-.IP
-.IP "\fBsetpresentkey key uuid [1|0]\fP"
-This plumbing\-level command changes git-annex's records about whether
-the specified key's content is present in a remote with the specified uuid.
-.IP
-See git-annex\-setpresentkey(1) for details.
-.IP
-.IP "\fBreadpresentkey key uuid\fP"
-Read records of where key is present.
-.IP
-See git-annex\-readpresentkey(1) for details.
-.IP
-.IP "\fBcheckpresentkey key remote\fP"
-Check if key is present in remote.
-.IP
-See git-annex\-checkpresentkey(1) for details.
-.IP
-.IP "\fBrekey [file key ...]\fP"
-Change keys used for files.
-.IP
-See git-annex\-rekey(1) for details.
-.IP
-.IP "\fBfindref [ref]\fP"
-Lists files in a git ref.
-.IP
-See git-annex\-findref(1) for details.
-.IP
-.IP "\fBproxy \-\- git cmd [options]\fP"
-Only useful in a direct mode repository, this runs the specified git
-command with a temporary work tree, and updates the working tree to
-reflect any changes staged or committed by the git command.
-.IP
-See git-annex\-proxy(1) for details.
-.IP
-.IP "\fBresolvemerge\fP"
-Resolves a conflicted merge, by adding both conflicting versions of the
-file to the tree, using variants of their filename. This is done
-automatically when using \fBgit annex sync\fP or \fBgit annex merge\fP.
-.IP
-See git-annex\-resolvemerge(1) for details.
-.IP
-.IP "\fBdiffdriver\fP"
-This can be used to make \fBgit diff\fP use an external diff driver with
-annexed files.
-.IP
-See git-annex\-diffdriver(1) for details.
-.IP
-.IP "\fBsmudge\fP"
-This command lets git-annex be used as a git filter driver, allowing
-annexed files in the git repository to be unlocked at all times, instead
-of being symlinks.
-.IP
-See git-annex\-smudge(1) for details.
-.IP
-.IP "\fBremotedaemon\fP"
-Detects when network remotes have received git pushes and fetches from them.
-.IP
-See git-annex\-remotedaemon(1) for details.
-.IP
-.IP "\fBxmppgit\fP"
-This command is used internally by the assistant to perform git pulls
-over XMPP.
-.IP
-See git-annex\-xmppgit(1) for details.
-.IP
-.SH TESTING COMMANDS
-.IP "\fBtest\fP"
-.IP
-This runs git-annex's built\-in test suite.
-.IP
-See git-annex\-test(1) for details.
-.IP
-.IP "\fBtestremote remote\fP"
-This tests a remote by generating some random objects and sending them to
-the remote, then redownloading them, removing them from the remote, etc.
-.IP
-It's safe to run in an existing repository (the repository contents are
-not altered), although it may perform expensive data transfers.
-.IP
-See git-annex\-testremote(1) for details.
-.IP
-.IP "\fBfuzztest\fP"
-Generates random changes to files in the current repository,
-for use in testing the assistant.
-.IP
-See git-annex\-fuzztest(1) for details.
-.IP
-.IP "\fBbenchmark\fP"
-This runs git-annex's built\-in benchmarks, if it was built with
-benchmarking support.
-.IP
-.SH COMMON OPTIONS
-These common options are accepted by all git-annex commands, and
-may not be explicitly listed on their individual man pages.
-(Many commands also accept the git-annex\-matching\-options(1).)
-.PP
-.IP "\fB\-\-force\fP"
-Force unsafe actions, such as dropping a file's content when no other
-source of it can be verified to still exist, or adding ignored files.
-Use with care.
-.IP
-.IP "\fB\-\-fast\fP"
-Enable less expensive, but also less thorough versions of some commands.
-What is avoided depends on the command.
-.IP
-.IP "\fB\-\-quiet\fP"
-Avoid the default verbose display of what is done; only show errors.
-.IP
-.IP "\fB\-\-verbose\fP"
-Enable verbose display.
-.IP
-.IP "\fB\-\-debug\fP"
-Show debug messages.
-.IP
-.IP "\fB\-\-no\-debug\fP"
-Disable debug messages.
-.IP
-.IP "\fB\-\-numcopies=n\fP"
-Overrides the numcopies setting, forcing git-annex to ensure the
-specified number of copies exist.
-.IP
-Note that setting numcopies to 0 is very unsafe.
-.IP
-.IP "\fB\-\-time\-limit=time\fP"
-Limits how long a git-annex command runs. The time can be something
-like "5h", or "30m" or even "45s" or "10d".
-.IP
-Note that git-annex may continue running a little past the specified
-time limit, in order to finish processing a file.
-.IP
-Also, note that if the time limit prevents git-annex from doing all it
-was asked to, it will exit with a special code, 101.
-.IP
-.IP "\fB\-\-trust=repository\fP"
-.IP "\fB\-\-semitrust=repository\fP"
-.IP "\fB\-\-untrust=repository\fP"
-Overrides trust settings for a repository. May be specified more than once.
-.IP
-The repository should be specified using the name of a configured remote,
-or the UUID or description of a repository.
-.IP
-.IP "\fB\-\-trust\-glacier\-inventory\fP"
-Amazon Glacier inventories take hours to retrieve, and may not represent
-the current state of a repository. So git-annex does not trust that
-files that the inventory claims are in Glacier are really there.
-This switch can be used to allow it to trust the inventory.
-.IP
-Be careful using this, especially if you or someone else might have recently
-removed a file from Glacier. If you try to drop the only other copy of the
-file, and this switch is enabled, you could lose data!
-.IP
-.IP "\fB\-\-backend=name\fP"
-Specifies which key\-value backend to use. This can be used when
-adding a file to the annex, or migrating a file. Once files
-are in the annex, their backend is known and this option is not
-necessary.
-.IP
-.IP "\fB\-\-user\-agent=value\fP"
-Overrides the User\-Agent to use when downloading files from the web.
-.IP
-.IP "\fB\-\-notify\-finish\fP"
-Caused a desktop notification to be displayed after each successful
-file download and upload.
-.IP
-(Only supported on some platforms, e.g. Linux with dbus. A no\-op when
-not supported.)
-.IP
-.IP "\fB\-\-notify\-start\fP"
-Caused a desktop notification to be displayed when a file upload
-or download has started, or when a file is dropped.
-.IP
-.IP "\fB\-c name=value\fP"
-Overrides git configuration settings. May be specified multiple times.
-.IP
-.SH CONFIGURATION VIA .git/config
-Like other git commands, git-annex is configured via \fB.git/config\fP.
-Here are all the supported configuration settings.
-.PP
-.IP "\fBannex.uuid\fP"
-A unique UUID for this repository (automatically set).
-.IP
-.IP "\fBannex.backends\fP"
-Space\-separated list of names of the key\-value backends to use.
-The first listed is used to store new files by default.
-.IP
-This is overridden by annex annex.backend configuration in the
-\&.gitattributes files.
-.IP
-.IP "\fBannex.diskreserve\fP"
-Amount of disk space to reserve. Disk space is checked when transferring
-content to avoid running out, and additional free space can be reserved
-via this option, to make space for more important content (such as git
-commit logs). Can be specified with any commonly used units, for example,
-"0.5 gb", "500M", or "100 KiloBytes"
-.IP
-The default reserve is 1 megabyte.
-.IP
-.IP "\fBannex.largefiles\fP"
-Used to configure which files are large enough to be added to the annex.
-Default: All files.
-.IP
-Overrides any annex.largefiles attributes in \fB.gitattributes\fP files.
-.IP
-See <https://git-annex.branchable.com/tips/largefiles> for details.
-.IP
-.IP "\fBannex.addsmallfiles\fP"
-Controls whether small files (not matching annex.largefiles)
-should be checked into git by \fBgit annex add\fP. Defaults to true;
-set to false to instead make small files be skipped.
-.IP
-.IP "\fBannex.addunlocked\fP"
-Set to true to make commands like \fBgit-annex add\fP that add files to the
-repository add them in unlocked form. The default is to add files in
-locked form. This only has effect in version 6 repositories.
-.IP
-When a repository has core.symlinks set to false, it implicitly
-sets annex.addunlocked to true.
-.IP
-.IP "\fBannex.numcopies\fP"
-This is a deprecated setting. You should instead use the
-\fBgit annex numcopies\fP command to configure how many copies of files
-are kept across all repositories, or the annex.numcopies .gitattributes
-setting.
-.IP
-This config setting is only looked at when \fBgit annex numcopies\fP has
-never been configured, and when there's no annex.numcopies setting in the
-\&.gitattributes file.
-.IP
-Note that setting numcopies to 0 is very unsafe.
-.IP
-.IP "\fBannex.genmetadata\fP"
-Set this to \fBtrue\fP to make git-annex automatically generate some metadata
-when adding files to the repository.
-.IP
-In particular, it stores year and month metadata, from the file's
-modification date.
-.IP
-When importfeed is used, it stores additional metadata from the feed,
-such as the author, title, etc.
-.IP
-.IP "\fBannex.used\-refspec\fP"
-This controls which refs \fBgit-annex unused\fP considers to be used.
-See REFSPEC FORMAT in git-annex\-unused(1) for details.
-.IP
-.IP "\fBannex.queuesize\fP"
-git-annex builds a queue of git commands, in order to combine similar
-commands for speed. By default the size of the queue is limited to
-10240 commands; this can be used to change the size. If you have plenty
-of memory and are working with very large numbers of files, increasing
-the queue size can speed it up.
-.IP
-.IP "\fBannex.bloomcapacity\fP"
-The \fBgit annex unused\fP and \fBgit annex sync \-\-content\fP commands use
-a bloom filter to determine what files are present in eg, the work tree.
-The default bloom filter is sized to handle
-up to 500000 files. If your repository is larger than that,
-you should increase this value. Larger values will
-make \fBgit-annex unused\fP and \fBgit annex sync \-\-content\fP consume more memory;
-run \fBgit annex info\fP for memory usage numbers.
-.IP
-.IP "\fBannex.bloomaccuracy\fP"
-Adjusts the accuracy of the bloom filter used by
-\fBgit annex unused\fP and \fBgit annex sync \-\-content\fP. 
-The default accuracy is 10000000 \-\- 1 unused file out of 10000000
-will be missed by \fBgit annex unused\fP. Increasing the accuracy will make
-\fBgit annex unused\fP consume more memory; run \fBgit annex info\fP
-for memory usage numbers.
-.IP
-.IP "\fBannex.sshcaching\fP"
-By default, git-annex caches ssh connections using ssh's
-ControlMaster and ControlPersist settings
-(if built using a new enough ssh). To disable this, set to \fBfalse\fP.
-.IP
-.IP "\fBannex.alwayscommit\fP"
-By default, git-annex automatically commits data to the git-annex branch
-after each command is run. If you have a series
-of commands that you want to make a single commit, you can
-run the commands with \fB\-c annex.alwayscommit=false\fP. You can later
-commit the data by running \fBgit annex merge\fP (or by automatic merges)
-or \fBgit annex sync\fP.
-.IP
-Note that you beware running \fBgit gc\fP if using this configuration,
-since it could garbage collect objects that are staged in git-annex's
-index but not yet committed.
-.IP
-.IP "\fBannex.hardlink\fP"
-Set this to \fBtrue\fP to make file contents be hard linked between the
-repository and its remotes when possible, instead of a more expensive copy.
-.IP
-Use with caution \-\- This can invalidate numcopies counting, since
-with hard links, fewer copies of a file can exist. So, it is a good
-idea to mark a repository using this setting as untrusted.
-.IP
-When a repository is set up using \fBgit clone \-\-shared\fP, git-annex init
-will automatically set annex.hardlink and mark the repository as
-untrusted.
-.IP
-.IP "\fBannex.thin\fP"
-Set this to \fBtrue\fP to make unlocked files be a hard link to their content
-in the annex, rather than a second copy. (Only when supported by the file
-system, and only in repository version 6.) This can save considerable
-disk space, but when a modification is made to a file, you will lose the
-local (and possibly only) copy of the old version. So, enable with care.
-.IP
-After setting (or unsetting) this, you should run \fBgit annex fix\fP to
-fix up the annexed files in the work tree to be hard links (or copies).
-.IP
-Note that \fBannex.thin\fP is not honored when git updates an annexed file
-in the working tree. So when \fBgit checkout\fP or \fBgit merge\fP updates the
-working tree, a second copy of annexed files will result. You can run
-\fBgit-annex fix\fP to fix up the hard links after running such git commands.
-.IP
-.IP "\fBannex.delayadd\fP"
-Makes the watch and assistant commands delay for the specified number of
-seconds before adding a newly created file to the annex. Normally this
-is not needed, because they already wait for all writers of the file
-to close it. On Mac OSX, when not using direct mode this defaults to
-1 second, to work around a bad interaction with software there.
-.IP
-.IP "\fBannex.expireunused\fP"
-Controls what the assistant does about unused file contents
-that are stored in the repository.
-.IP
-The default is \fBfalse\fP, which causes
-all old and unused file contents to be retained, unless the assistant
-is able to move them to some other repository (such as a backup repository).
-.IP
-Can be set to a time specification, like "7d" or "1m", and then
-file contents that have been known to be unused for a week or a
-month will be deleted.
-.IP
-.IP "\fBannex.fscknudge\fP"
-When set to false, prevents the webapp from reminding you when using
-repositories that lack consistency checks.
-.IP
-.IP "\fBannex.autoupgrade\fP"
-When set to ask (the default), the webapp will check for new versions
-and prompt if they should be upgraded to. When set to true, automatically
-upgrades without prompting (on some supported platforms). When set to
-false, disables any upgrade checking.
-.IP
-Note that upgrade checking is only done when git-annex is installed
-from one of the prebuilt images from its website. This does not
-bypass e.g., a Linux distribution's own upgrade handling code.
-.IP
-This setting also controls whether to restart the git-annex assistant
-when the git-annex binary is detected to have changed. That is useful
-no matter how you installed git-annex.
-.IP
-.IP "\fBannex.autocommit\fP"
-Set to false to prevent the git-annex assistant and git-annex sync
-from automatically committing changes to files in the repository.
-.IP
-.IP "\fBannex.startupscan\fP"
-Set to false to prevent the git-annex assistant from scanning the
-repository for new and changed files on startup. This will prevent it
-from noticing changes that were made while it was not running, but can be
-a useful performance tweak for a large repository.
-.IP
-.IP "\fBannex.listen\fP"
-Configures which address the webapp listens on. The default is localhost.
-Can be either an IP address, or a hostname that resolves to the desired
-address.
-.IP
-.IP "\fBannex.debug\fP"
-Set to true to enable debug logging by default.
-.IP
-.IP "\fBannex.version\fP"
-Automatically maintained, and used to automate upgrades between versions.
-.IP
-.IP "\fBannex.direct\fP"
-Set to true when the repository is in direct mode. Should not be set
-manually; use the "git annex direct" and "git annex indirect" commands
-instead.
-.IP
-.IP "\fBannex.crippledfilesystem\fP"
-Set to true if the repository is on a crippled filesystem, such as FAT,
-which does not support symbolic links, or hard links, or unix permissions.
-This is automatically probed by "git annex init".
-.IP
-.IP "\fBannex.pidlock\fP"
-Normally, git-annex uses fine\-grained lock files to allow multiple
-processes to run concurrently without getting in each others' way.
-That works great, unless you are using git-annex on a filesystem that
-does not support POSIX fcntl locks. This is sometimes the case when
-using NFS or Lustre filesystems. 
-.IP
-To support such situations, you can set annex.pidlock to true, and it
-will fall back to a single top\-level pid file lock.
-.IP
-Although, often, you'd really be better off fixing your networked
-filesystem configuration to support POSIX locks.. And, some networked
-filesystems are so inconsistent that one node can't reliably tell when
-the other node is holding a pid lock. Caveat emptor.
-.IP
-.IP "\fBannex.pidlocktimeout\fP"
-When using pid lock files, it's possible for a stale lock file to get
-left behind by previous run of git-annex that crashed or was interrupted.
-This is mostly avoided, but can occur especially when using a network
-file system.
-.IP
-git-annex will wait up to this many seconds for the pid lock
-file to go away, and will then abort if it cannot continue. Default: 300
-.IP
-.IP "\fBremote.<name>.annex\-cost\fP"
-When determining which repository to
-transfer annexed files from or to, ones with lower costs are preferred.
-The default cost is 100 for local repositories, and 200 for remote
-repositories.
-.IP
-.IP "\fBremote.<name>.annex\-cost\-command\fP"
-If set, the command is run, and the number it outputs is used as the cost.
-This allows varying the cost based on e.g., the current network. The
-cost\-command can be any shell command line.
-.IP
-.IP "\fBremote.<name>.annex\-start\-command\fP"
-A command to run when git-annex begins to use the remote. This can
-be used to, for example, mount the directory containing the remote.
-.IP
-The command may be run repeatedly when multiple git-annex processes
-are running concurrently.
-.IP
-.IP "\fBremote.<name>.annex\-stop\-command\fP"
-A command to run when git-annex is done using the remote.
-.IP
-The command will only be run once *all* running git-annex processes
-are finished using the remote.
-.IP
-.IP "\fBremote.<name>.annex\-shell\fP"
-Specify an alternative git-annex\-shell executable on the remote
-instead of looking for "git-annex\-shell" on the PATH.
-.IP
-This is useful if the git-annex\-shell program is outside the PATH
-or has a non\-standard name.
-.IP
-.IP "\fBremote.<name>.annex\-ignore\fP"
-If set to \fBtrue\fP, prevents git-annex
-from storing file contents on this remote by default.
-(You can still request it be used by the \fB\-\-from\fP and \fB\-\-to\fP options.)
-.IP
-This is, for example, useful if the remote is located somewhere
-without git-annex\-shell. (For example, if it's on GitHub).
-Or, it could be used if the network connection between two
-repositories is too slow to be used normally.
-.IP
-This does not prevent git-annex sync (or the git-annex assistant) from
-syncing the git repository to the remote.
-.IP
-.IP "\fBremote.<name>.annex\-sync\fP"
-If set to \fBfalse\fP, prevents git-annex sync (and the git-annex assistant)
-from syncing with this remote.
-.IP
-.IP "\fBremote.<name>.annex\-readonly\fP"
-If set to \fBtrue\fP, prevents git-annex from making changes to a remote.
-This both prevents git-annex sync from pushing changes, and prevents
-storing or removing files from read\-only remote.
-.IP
-.IP "\fBremote.<name>.annex\-verify\fP, \fBannex.verify\fP"
-By default, git-annex will verify the checksums of objects downloaded
-from remotes. If you trust a remote and don't want the overhead
-of these checksums, you can set this to \fBfalse\fP.
-.IP
-.IP "\fBremote.<name>.annexUrl\fP"
-Can be used to specify a different url than the regular \fBremote.<name>.url\fP
-for git-annex to use when talking with the remote. Similar to the \fBpushUrl\fP
-used by git\-push.
-.IP
-.IP "\fBremote.<name>.annex\-uuid\fP"
-git-annex caches UUIDs of remote repositories here.
-.IP
-.IP "\fBremote.<name>.annex\-trustlevel\fP"
-Configures a local trust level for the remote. This overrides the value
-configured by the trust and untrust commands. The value can be any of
-"trusted", "semitrusted" or "untrusted".
-.IP
-.IP "\fBremote.<name>.annex\-availability\fP"
-Can be used to tell git-annex whether a remote is LocallyAvailable
-or GloballyAvailable. Normally, git-annex determines this automatically.
-.IP
-.IP "\fBremote.<name>.annex\-bare\fP"
-Can be used to tell git-annex if a remote is a bare repository
-or not. Normally, git-annex determines this automatically.
-.IP
-.IP "\fBremote.<name>.annex\-ssh\-options\fP"
-Options to use when using ssh to talk to this remote.
-.IP
-.IP "\fBremote.<name>.annex\-rsync\-options\fP"
-Options to use when using rsync
-to or from this remote. For example, to force IPv6, and limit
-the bandwidth to 100Kbyte/s, set it to \fB\-6 \-\-bwlimit 100\fP
-.IP
-.IP "\fBremote.<name>.annex\-rsync\-upload\-options\fP"
-Options to use when using rsync to upload a file to a remote.
-.IP
-These options are passed after other applicable rsync options,
-so can be used to override them. For example, to limit upload bandwidth
-to 10Kbyte/s, set \fB\-\-bwlimit 10\fP.
-.IP
-.IP "\fBremote.<name>.annex\-rsync\-download\-options\fP"
-Options to use when using rsync to download a file from a remote.
-.IP
-These options are passed after other applicable rsync options,
-so can be used to override them.
-.IP
-.IP "\fBremote.<name>.annex\-rsync\-transport\fP"
-The remote shell to use to connect to the rsync remote. Possible
-values are \fBssh\fP (the default) and \fBrsh\fP, together with their
-arguments, for instance \fBssh \-p 2222 \-c blowfish\fP; Note that the
-remote hostname should not appear there, see rsync(1) for details.
-When the transport used is \fBssh\fP, connections are automatically cached
-unless \fBannex.sshcaching\fP is unset.
-.IP
-.IP "\fBremote.<name>.annex\-bup\-split\-options\fP"
-Options to pass to bup split when storing content in this remote.
-For example, to limit the bandwidth to 100Kbyte/s, set it to \fB\-\-bwlimit 100k\fP
-(There is no corresponding option for bup join.)
-.IP
-.IP "\fBremote.<name>.annex\-gnupg\-options\fP"
-Options to pass to GnuPG when it's encrypting data. For instance, to
-use the AES cipher with a 256 bits key and disable compression, set it
-to \fB\-\-cipher\-algo AES256 \-\-compress\-algo none\fP. (These options take
-precedence over the default GnuPG configuration, which is otherwise
-used.)
-.IP
-.IP "\fBremote.<name>.annex\-gnupg\-decrypt\-options\fP"
-Options to pass to GnuPG when it's decrypting data. (These options take
-precedence over the default GnuPG configuration, which is otherwise
-used.)
-.IP
-.IP "\fBannex.ssh\-options\fP, \fBannex.rsync\-options\fP,"
-\fBannex.rsync\-upload\-options\fP, \fBannex.rsync\-download\-options\fP,
-\fBannex.bup\-split\-options\fP, \fBannex.gnupg\-options\fP,
-\fBannex.gnupg\-decrypt\-options\fP
-.IP
-Default options to use if a remote does not have more specific options
-as described above.
-.IP
-.IP "\fBannex.web\-options\fP"
-Options to pass when running wget or curl.
-For example, to force IPv4 only, set it to "\-4"
-.IP
-.IP "\fBannex.quvi\-options\fP"
-Options to pass to quvi when using it to find the url to download for a
-video.
-.IP
-.IP "\fBannex.aria\-torrent\-options\fP"
-Options to pass to aria2c when using it to download a torrent.
-.IP
-.IP "\fBannex.http\-headers\fP"
-HTTP headers to send when downloading from the web. Multiple lines of
-this option can be set, one per header.
-.IP
-.IP "\fBannex.http\-headers\-command\fP"
-If set, the command is run and each line of its output is used as a HTTP
-header. This overrides annex.http\-headers.
-.IP
-.IP "\fBannex.web\-download\-command\fP"
-Use to specify a command to run to download a file from the web.
-(The default is to use wget or curl.)
-.IP
-In the command line, %url is replaced with the url to download,
-and %file is replaced with the file that it should be saved to.
-.IP
-.IP "\fBannex.secure\-erase\-command\fP"
-This can be set to a command that should be run whenever git-annex
-removes the content of a file from the repository.
-.IP
-In the command line, %file is replaced with the file that should be
-erased.
-.IP
-For example, to use the wipe command, set it to \fBwipe \-f %file\fP.
-.IP
-.IP "\fBremote.<name>.rsyncurl\fP"
-Used by rsync special remotes, this configures
-the location of the rsync repository to use. Normally this is automatically
-set up by \fBgit annex initremote\fP, but you can change it if needed.
-.IP
-.IP "\fBremote.<name>.buprepo\fP"
-Used by bup special remotes, this configures
-the location of the bup repository to use. Normally this is automatically
-set up by \fBgit annex initremote\fP, but you can change it if needed.
-.IP
-.IP "\fBremote.<name>.ddarrepo\fP"
-Used by ddar special remotes, this configures
-the location of the ddar repository to use. Normally this is automatically
-set up by \fBgit annex initremote\fP, but you can change it if needed.
-.IP
-.IP "\fBremote.<name>.directory\fP"
-Used by directory special remotes, this configures
-the location of the directory where annexed files are stored for this
-remote. Normally this is automatically set up by \fBgit annex initremote\fP,
-but you can change it if needed.
-.IP
-.IP "\fBremote.<name>.s3\fP"
-Used to identify Amazon S3 special remotes.
-Normally this is automatically set up by \fBgit annex initremote\fP.
-.IP
-.IP "\fBremote.<name>.glacier\fP"
-Used to identify Amazon Glacier special remotes.
-Normally this is automatically set up by \fBgit annex initremote\fP.
-.IP
-.IP "\fBremote.<name>.webdav\fP"
-Used to identify webdav special remotes.
-Normally this is automatically set up by \fBgit annex initremote\fP.
-.IP
-.IP "\fBremote.<name>.tahoe\fP"
-Used to identify tahoe special remotes.
-Points to the configuration directory for tahoe.
-.IP
-.IP "\fBremote.<name>.annex\-xmppaddress\fP"
-Used to identify the XMPP address of a Jabber buddy.
-Normally this is set up by the git-annex assistant when pairing over XMPP.
-.IP
-.IP "\fBremote.<name>.gcrypt\fP"
-Used to identify gcrypt special remotes.
-Normally this is automatically set up by \fBgit annex initremote\fP.
-.IP
-It is set to "true" if this is a gcrypt remote.
-If the gcrypt remote is accessible over ssh and has git-annex\-shell
-available to manage it, it's set to "shell".
-.IP
-.IP "\fBremote.<name>.hooktype\fP, \fBremote.<name>.externaltype\fP"
-Used by hook special remotes and external special remotes to record
-the type of the remote.
-.IP
-.IP "\fBannex.tune.objecthash1\fP, \fBannex.tune.objecthashlower\fP, \fBannex.tune.branchhash1\fP"
-These can be passed to \fBgit annex init\fP to tune the repository.
-They cannot be safely changed in a running repository and should never be
-set in global git configuration.
-For details, see <https://git-annex.branchable.com/tuning/>.
-.IP
-.SH CONFIGURATION VIA .gitattributes
-The key\-value backend used when adding a new file to the annex can be
-configured on a per\-file\-type basis via \fB.gitattributes\fP files. In the file,
-the \fBannex.backend\fP attribute can be set to the name of the backend to
-use. For example, this here's how to use the WORM backend by default,
-but the SHA256E backend for ogg files:
-.PP
- * annex.backend=WORM
- *.ogg annex.backend=SHA256E
-.PP
-There is a annex.largefiles attribute; which is used to configure which
-files are large enough to be added to the annex.
-See <https://git-annex.branchable.com/tips/largefiles> for details.
-.PP
-The numcopies setting can also be configured on a per\-file\-type basis via
-the \fBannex.numcopies\fP attribute in \fB.gitattributes\fP files. This overrides
-other numcopies settings.
-For example, this makes two copies be needed for wav files and 3 copies
-for flac files:
-.PP
- *.wav annex.numcopies=2
- *.flac annex.numcopies=3
-.PP
-Note that setting numcopies to 0 is very unsafe.
-.PP
-These settings are honored by git-annex whenever it's operating on a
-matching file. However, when using \-\-all, \-\-unused, or \-\-key to specify
-keys to operate on, git-annex is operating on keys and not files, so will
-not honor the settings from .gitattributes. For this reason, the git annex
-numcopies command is useful to configure a global default for numcopies.
-.PP
-Also note that when using views, only the toplevel .gitattributes file is
-preserved in the view, so other settings in other files won't have any
-effect.
-.PP
-.SH EXIT STATUS
-git-annex, when called as a git subcommand, may return exit codes 0 or 1
-for success or failures, or, more rarely, 127 or 128 for certain very
-specific failures.  git-annex itself should return 0 on success and 1 on
-failure, unless the \fB\-\-time\-limit=time\fP option is hit, in which case it
-returns with exit code 101.
-.PP
-.SH FILES
-These files are used by git-annex:
-.PP
-\fB.git/annex/objects/\fP in your git repository contains the annexed file
-contents that are currently available. Annexed files in your git
-repository symlink to that content.
-.PP
-\fB.git/annex/\fP in your git repository contains other run\-time information
-used by git-annex.
-.PP
-\fB~/.config/git-annex/autostart\fP is a list of git repositories
-to start the git-annex assistant in.
-.PP
-\fB.git/hooks/pre\-commit\-annex\fP in your git repository will be run whenever
-a commit is made to the HEAD branch, either by git commit, git-annex
-sync, or the git-annex assistant.
-.PP
-\fB.git/hooks/post\-update\-annex\fP in your git repository will be run
-whenever the git-annex branch is updated. You can make this hook run
-\fBgit update\-server\-info\fP when publishing a git-annex repository by http.
-.PP
-.SH SEE ALSO
-More git-annex documentation is available on its web site,
-<https://git-annex.branchable.com/>
-.PP
-If git-annex is installed from a package, a copy of its documentation
-should be included, in, for example, \fB/usr/share/doc/git-annex/\fP.
-.PP
-.SH AUTHOR
-Joey Hess <id@joeyh.name>
-.PP
-<https://git-annex.branchable.com/>
-.PP
-.PP
-
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -19,10 +19,8 @@
     ekg: false
 packages:
 - '.'
-resolver: lts-5.5
+resolver: lts-5.18
 extra-deps:
-- mountpoints-1.0.1
-- disk-free-space-0.1.0.1
 - process-1.3.0.0
 explicit-setup-deps:
   git-annex: true
diff --git a/standalone/android/.gitignore b/standalone/android/.gitignore
deleted file mode 100644
--- a/standalone/android/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build-utils
-start
diff --git a/standalone/android/Makefile b/standalone/android/Makefile
deleted file mode 100644
--- a/standalone/android/Makefile
+++ /dev/null
@@ -1,84 +0,0 @@
-# Cross-compiles utilities needed for git-annex on Android,
-# and builds the Android app.
-
-build:
-	./buildapk 4
-	./buildapk 5
-
-# Targets below are used by buildapk, which sets
-# GIT_ANNEX_ANDROID_SOURCETREE
-
-source: $(GIT_ANNEX_ANDROID_SOURCETREE)
-
-$(GIT_ANNEX_ANDROID_SOURCETREE):
-	mkdir -p $(GIT_ANNEX_ANDROID_SOURCETREE)
-	git clone git://git.debian.org/git/d-i/busybox $(GIT_ANNEX_ANDROID_SOURCETREE)/busybox
-	git clone git://git.kernel.org/pub/scm/git/git.git $(GIT_ANNEX_ANDROID_SOURCETREE)/git
-	git clone git://git.samba.org/rsync.git $(GIT_ANNEX_ANDROID_SOURCETREE)/rsync
-	git clone git://git.gnupg.org/gnupg.git $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg
-	git clone git://git.openssl.org/openssl $(GIT_ANNEX_ANDROID_SOURCETREE)/openssl
-	git clone git://github.com/CyanogenMod/android_external_openssh.git $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh
-	git clone git://github.com/jackpal/Android-Terminal-Emulator.git $(GIT_ANNEX_ANDROID_SOURCETREE)/term
-
-$(GIT_ANNEX_ANDROID_SOURCETREE)/openssl/build-stamp:
-	# This is a version which the openssh below can build with.
-	# Newer versions changed something to do with BIGNUM.
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssl && git reset --hard 616f71e486d693991b594439c884ec624b32c2d4
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssl && CC=$$(which cc) ./Configure android
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssl && $(MAKE)
-	touch $@
-
-$(GIT_ANNEX_ANDROID_SOURCETREE)/openssh/build-stamp: openssh.patch openssh.config.h
-	# This is a known-good version that the patch works with.
-	# TODO: Upgrade
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh && git reset --hard 0a8617ed5af2f0248d0e9648e26b224e16ada742
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh && ./configure --host=arm-linux-androideabi --with-ssl-dir=../openssl --without-openssl-header-check
-	cat openssh.patch | (cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh && patch -p1)
-	cp openssh.config.h $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh/config.h
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh && sed -i -e 's/getrrsetbyname.o //' openbsd-compat/Makefile
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh && sed -i -e 's/auth-passwd.o //' Makefile
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/openssh && $(MAKE) ssh ssh-keygen
-	touch $@
-
-$(GIT_ANNEX_ANDROID_SOURCETREE)/busybox/build-stamp: busybox_config
-	cp busybox_config $(GIT_ANNEX_ANDROID_SOURCETREE)/busybox/.config
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/busybox && git reset --hard a758e3e1e04e7705f5d37b2f27be654cd0e7282c
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/busybox && yes '' | $(MAKE) oldconfig
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/busybox && $(MAKE)
-	touch $@
-	
-$(GIT_ANNEX_ANDROID_SOURCETREE)/git/build-stamp: git.patch
-	# This is a known-good version that the patch works with.
-	cat git.patch | (cd $(GIT_ANNEX_ANDROID_SOURCETREE)/git && git reset --hard d9c691a759d62cef53a6cc11864a2ef4b0829244 && git am)
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/git && $(MAKE) install NO_OPENSSL=1 NO_GETTEXT=1 NO_GECOS_IN_PWENT=1 NO_GETPASS=1 NO_NSEC=1 NO_MKDTEMP=1 NO_PTHREADS=1 NO_PERL=1 NO_CURL=1 NO_EXPAT=1 NO_TCLTK=1 NO_ICONV=1 HAVE_CLOCK_GETTIME= HAVE_GETDELIM= prefix= DESTDIR=installed-tree
-	touch $@
-
-$(GIT_ANNEX_ANDROID_SOURCETREE)/rsync/build-stamp: rsync.patch
-	# This is a known-good version that the patch works with.
-	cat rsync.patch | (cd $(GIT_ANNEX_ANDROID_SOURCETREE)/rsync && git reset --hard eec26089b1c7bdbb260674480ffe6ece257bca63 && git am)
-	cp /usr/share/misc/config.sub /usr/share/misc/config.guess $(GIT_ANNEX_ANDROID_SOURCETREE)/rsync/
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/rsync && ./configure --host=arm-linux-androideabi --disable-locale --disable-iconv-open --disable-iconv --disable-acl-support --disable-xattr-support
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/rsync && $(MAKE)
-	touch $@
-
-$(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg/build-stamp:
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && git checkout gnupg-1.4.15
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && ./autogen.sh
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && ./configure --host=arm-linux-androideabi --disable-gnupg-iconv --disable-card-support --disable-agent-support --disable-photo-viewers --disable-keyserver-helpers --disable-nls
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg; $(MAKE) || true # expected failure in doc build
-	touch $@
-
-$(GIT_ANNEX_ANDROID_SOURCETREE)/term/build-stamp: term.patch icons
-	# This is a known-good version that the patch works with.
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/term && git reset --hard 3d34b3c42295c215b62e70f3ee696dd664ba08ce
-	cat term.patch | (cd $(GIT_ANNEX_ANDROID_SOURCETREE)/term && patch -p1)
-	(cd icons && tar c .) | (cd $(GIT_ANNEX_ANDROID_SOURCETREE)/term/res && tar x)
-	# This renaming has a purpose. It makes the path to the app's
-	# /data directory shorter, which makes ssh connection caching
-	# sockets placed there have more space for their filenames.
-	# Also, it avoids overlap with the Android Terminal Emulator
-	# app, if it's also installed.
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/term && find -name .git -prune -o -type f -print0 | xargs -0 perl -pi -e 's/jackpal/ga/g'
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/term && perl -pi -e 's/Terminal Emulator/Git Annex/g' res/*/strings.xml
-	cd $(GIT_ANNEX_ANDROID_SOURCETREE)/term && echo y | tools/update.sh || true
-	touch $@
diff --git a/standalone/android/abiversion b/standalone/android/abiversion
deleted file mode 100644
--- a/standalone/android/abiversion
+++ /dev/null
@@ -1,1 +0,0 @@
-android-14/arm-linux-androideabi-4.8
diff --git a/standalone/android/buildapk b/standalone/android/buildapk
deleted file mode 100644
--- a/standalone/android/buildapk
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/sh
-#
-# Cross-compiles utilities needed for git-annex on Android,
-# and builds the Android app.
-
-set -e
-
-androidversion=$1
-if [ -z "$androidversion" ]; then
-	echo "need android version (4 or 5) as parameter" >&2
-	exit 1
-fi
-
-VER="$(perl -e '$_=<>;print m/\((.*?)\)/'<../../CHANGELOG)"
-
-wrap () {
-	sed -e "s!PROG!$1!" -e "s!OPTS!$3!" < wrapper.pl > "$2"
-	chmod +x "$2"
-}
-
-# Add Android cross-compiler to PATH (as installed by ghc-android)
-androidtoolchain="$HOME/.ghc/$(cat abiversion)/bin"
-# For Android 5, use a wrapped version of the C compiler,
-# which sets PIE build flags.
-if [ "$androidversion" = 5 ]; then
-	rm -rf "$androidtoolchain/5"
-	mkdir -p "$androidtoolchain/5"
-	for f in $(find "$androidtoolchain" -maxdepth 1 -not -type d -printf '%f\n'); do
-		src="$androidtoolchain/$f"
-		dest="$androidtoolchain/5/$f"
-		case "$f" in
-		*-ld*)
-			wrap "$src" "$dest" "-pie"
-		;;
-		*-gcc)
-			wrap "$src" "$dest" "-pie -fPIE"
-		;;
-		*'-g++')
-			wrap "$src" "$dest" "-pie -fPIE"
-		;;
-		*)
-			cp -a "$src" "$dest"
-		;;
-		esac
-	done
-	PATH="$androidtoolchain/5:$PATH"
-else
-	PATH="$androidtoolchain:$PATH"
-fi
-export PATH
-
-# Paths to the Android SDK and NDK.
-export ANDROID_SDK_ROOT="$HOME/.android/adt-bundle-linux-x86/sdk"
-export ANDROID_NDK_ROOT="$HOME/.android/android-ndk"
-
-GIT_ANNEX_ANDROID_SOURCETREE="$HOME/.android/git-annex-sourcetree"
-export GIT_ANNEX_ANDROID_SOURCETREE
-if [ ! -e "$GIT_ANNEX_ANDROID_SOURCETREE" ]; then
-	make source
-fi
-src="$GIT_ANNEX_ANDROID_SOURCETREE-$androidversion"
-if [ ! -e "$src" ] ; then
-	cp -a "$GIT_ANNEX_ANDROID_SOURCETREE" "$src"
-fi
-GIT_ANNEX_ANDROID_SOURCETREE="$src"
-export GIT_ANNEX_ANDROID_SOURCETREE
-
-gittree="$GIT_ANNEX_ANDROID_SOURCETREE/git/installed-tree"
-
-make "$GIT_ANNEX_ANDROID_SOURCETREE/openssl/build-stamp"
-make "$GIT_ANNEX_ANDROID_SOURCETREE/openssh/build-stamp"
-make "$GIT_ANNEX_ANDROID_SOURCETREE/busybox/build-stamp"
-make "$GIT_ANNEX_ANDROID_SOURCETREE/rsync/build-stamp"
-make "$GIT_ANNEX_ANDROID_SOURCETREE/gnupg/build-stamp"
-make "$GIT_ANNEX_ANDROID_SOURCETREE/git/build-stamp"
-make "$GIT_ANNEX_ANDROID_SOURCETREE/term/build-stamp"
-
-perl -i -pe 's/(android:versionName=)"[^"]+"/$1"'"$VER"'"/' \
-	"$GIT_ANNEX_ANDROID_SOURCETREE/term/AndroidManifest.xml"
-
-# Debug build because it does not need signing keys.
-(cd "$GIT_ANNEX_ANDROID_SOURCETREE/term" && tools/build-debug)
-
-# Install executables as pseudo-libraries so they will be
-# unpacked from the .apk.
-mkdir -p "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/busybox/busybox" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.busybox.so"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/openssh/ssh" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.ssh.so"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/openssh/ssh-keygen" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.ssh-keygen.so"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/rsync/rsync" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.rsync.so"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/gnupg/g10/gpg" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.gpg.so"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/git/git" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.git.so"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/git/git-shell" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.git-shell.so"
-cp "$GIT_ANNEX_ANDROID_SOURCETREE/git/git-upload-pack" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.git-upload-pack.so"
-arm-linux-androideabi-strip --strip-unneeded --remove-section=.comment --remove-section=.note "$GIT_ANNEX_ANDROID_SOURCETREE"/term/libs/armeabi/*
-cp runshell "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.runshell.so"
-cc start.c -o "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.start.so"
-
-# remove git stuff we don't need to save space
-rm -rf $gittree/bin/git-cvsserver \
-	$gittree/libexec/git-core/git-daemon \
-	$gittree/libexec/git-core/git-show-index \
-	$gittree/libexec/git-core/mergetools \
-	$gittree/libexec/git-core/git-credential-* \
-	$gittree/libexec/git-core/git-cvsserver \
-	$gittree/libexec/git-core/git-cvsimport \
-	$gittree/libexec/git-core/git-fast-import \
-	$gittree/libexec/git-core/git-http-backend \
-	$gittree/libexec/git-core/git-imap-send \
-	$gittree/libexec/git-core/git-instaweb \
-	$gittree/libexec/git-core/git-p4 \
-	$gittree/libexec/git-core/git-remote-test* \
-	$gittree/libexec/git-core/git-submodule \
-	$gittree/libexec/git-core/git-svn \
-	$gittree/libexec/git-core/git-web--browse
-
-# Most of git is in one multicall binary, but a few important
-# commands are still shell scripts. Those are put into
-# a tarball, along with a list of all the links that should be
-# set up.
-(cd $gittree && mkdir -p links)
-(cd $gittree && find -samefile bin/git -not -wholename ./bin/git > links/git)
-(cd $gittree && find -samefile bin/git-shell -not -wholename ./bin/git-shell > links/git-shell)
-(cd $gittree && find -samefile bin/git-upload-pack -not -wholename ./bin/git-upload-pack > links/git-upload-pack)
-(cd $gittree && find -type f -not -samefile bin/git -not -samefile bin/git-shell -not -samefile bin/git-upload-pack | tar czf ../git.tar.gz -T -)
-(cp "$GIT_ANNEX_ANDROID_SOURCETREE/git/git.tar.gz" "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.git.tar.gz.so")
-
-git rev-parse HEAD > "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.version.so"
-cp ../trustedkeys.gpg "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.trustedkeys.so"
-
-genapk () {
-	mkdir -p ../../tmp/$1; \
-	cp ../../tmp/androidtree/dist/build/git-annex/$1/git-annex "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.git-annex.so"
-	arm-linux-androideabi-strip --strip-unneeded --remove-section=.comment --remove-section=.note "$GIT_ANNEX_ANDROID_SOURCETREE/term/libs/armeabi/lib.git-annex.so"
-	(cd "$GIT_ANNEX_ANDROID_SOURCETREE/term" && ant debug)
-	cp "$GIT_ANNEX_ANDROID_SOURCETREE/term/bin/Term-debug.apk" ../../tmp/$1/git-annex.apk
-}
-
-if [ "$androidversion" = 4 ]; then
-	for v in 4.0 4.3; do
-		genapk $v
-	done
-else
-	genapk 5.0
-fi
diff --git a/standalone/android/buildchroot b/standalone/android/buildchroot
deleted file mode 100644
--- a/standalone/android/buildchroot
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-set -e
-if [ "$(whoami)" != root ]; then
-	echo "Must run this as root!" >&2
-	exit 1
-fi
-
-debootstrap --arch=i386 jessie debian-stable-android
-cp $0-inchroot debian-stable-android/tmp
-cp $0-inchroot-asuser debian-stable-android/tmp
-cp $(dirname $0)/abiversion debian-stable-android/tmp
-
-# Don't use these vars in the chroot.
-unset TMP
-unset TEMP
-unset TMPDIR
-unset TEMPDIR
-
-chroot debian-stable-android "tmp/$(basename $0)-inchroot"
-
-echo
-echo
-echo "debian-stable-android is set up, with a user builder"
-echo "your next step is probably to check out git-annex in this chroot"
-echo "and run standalone/android/install-haskell-packages"
-echo
-echo
diff --git a/standalone/android/buildchroot-inchroot b/standalone/android/buildchroot-inchroot
deleted file mode 100644
--- a/standalone/android/buildchroot-inchroot
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-# Runs inside the chroot set up by buildchroot
-set -e
-set -x
-if [ "$(whoami)" != root ]; then
-	echo "Must run this as root!" >&2
-	exit 1
-fi
-
-# java needs this mounted to work
-mount -t proc proc /proc || true
-
-echo "deb-src http://ftp.us.debian.org/debian jessie main" >> /etc/apt/sources.list
-apt-get update
-apt-get -y install build-essential ghc git libncurses5-dev cabal-install
-apt-get -y install happy alex
-apt-get -y install llvm-3.4
-apt-get -y install ca-certificates curl file m4 autoconf zlib1g-dev
-apt-get -y install libgnutls28-dev libxml2-dev libgsasl7-dev pkg-config c2hs
-apt-get -y install ant default-jdk rsync wget gnupg lsof
-apt-get -y install gettext unzip python
-apt-get -y install locales automake
-echo en_US.UTF-8 UTF-8 >> /etc/locale.gen
-locale-gen
-apt-get clean
-useradd builder --create-home || true
-su builder -c $0-asuser
diff --git a/standalone/android/buildchroot-inchroot-asuser b/standalone/android/buildchroot-inchroot-asuser
deleted file mode 100644
--- a/standalone/android/buildchroot-inchroot-asuser
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-# Runs inside the chroot set up by buildchroot, as the user it creates
-set -e
-set -x
-
-# Put in /tmp by buildchroot, but when bootstrapping with propellor,
-# this is run inside a checked out git-annex tree.
-if [ -e /tmp/abiversion ]; then
-	ABIVERSION=$(cat /tmp/abiversion)
-else
-	ABIVERSION=$(cat standalone/android/abiversion)
-fi
-
-cd
-rm -rf .ghc .cabal .android
-mkdir -p .android
-cd .android
-git clone https://github.com/joeyh/ghc-android
-cd ghc-android
-git checkout jessie-ghc-snapshot
-./build
-
-# This saves 2 gb, and the same sources are in build-*/ghc
-rm -rf stage0
-
-# Set up android SDK where the git-annex android Makefile
-# expects to find it.
-cd ..
-ln -s ghc-android/android-ndk-* android-ndk
-wget http://dl.google.com/android/adt/adt-bundle-linux-x86-20130917.zip
-unzip adt*.zip
-rm adt*.zip
-mv adt-bundle-linux-x86-* adt-bundle-linux-x86
-rm -rf adt-bundle-linux-x86/eclipse
-
-# The git-annex android Makefile needs this cc symlink.
-ln -s arm-linux-androideabi-gcc $HOME/.ghc/$ABIVERSION/bin/cc
-
-git config --global user.email androidbuilder@example.com
-git config --global user.name androidbuilder
diff --git a/standalone/android/busybox_config b/standalone/android/busybox_config
deleted file mode 100644
--- a/standalone/android/busybox_config
+++ /dev/null
@@ -1,997 +0,0 @@
-# Run "make android2_defconfig", then "make".
-#
-# Tested with the standalone toolchain from ndk r6:
-# android-ndk-r6/build/tools/make-standalone-toolchain.sh --platform=android-8
-#
-CONFIG_HAVE_DOT_CONFIG=y
-
-#
-# Busybox Settings
-#
-
-#
-# General Configuration
-#
-# CONFIG_DESKTOP is not set
-# CONFIG_EXTRA_COMPAT is not set
-# CONFIG_INCLUDE_SUSv2 is not set
-# CONFIG_USE_PORTABLE_CODE is not set
-CONFIG_PLATFORM_LINUX=y
-CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
-# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
-# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
-# CONFIG_SHOW_USAGE is not set
-# CONFIG_FEATURE_VERBOSE_USAGE is not set
-# CONFIG_FEATURE_COMPRESS_USAGE is not set
-CONFIG_FEATURE_INSTALLER=y
-# CONFIG_INSTALL_NO_USR is not set
-# CONFIG_LOCALE_SUPPORT is not set
-# CONFIG_UNICODE_SUPPORT is not set
-# CONFIG_UNICODE_USING_LOCALE is not set
-# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
-CONFIG_SUBST_WCHAR=0
-CONFIG_LAST_SUPPORTED_WCHAR=0
-# CONFIG_UNICODE_COMBINING_WCHARS is not set
-# CONFIG_UNICODE_WIDE_WCHARS is not set
-# CONFIG_UNICODE_BIDI_SUPPORT is not set
-# CONFIG_UNICODE_NEUTRAL_TABLE is not set
-# CONFIG_UNICODE_PRESERVE_BROKEN is not set
-# CONFIG_LONG_OPTS is not set
-# CONFIG_FEATURE_DEVPTS is not set
-# CONFIG_FEATURE_CLEAN_UP is not set
-# CONFIG_FEATURE_UTMP is not set
-# CONFIG_FEATURE_WTMP is not set
-# CONFIG_FEATURE_PIDFILE is not set
-# CONFIG_FEATURE_SUID is not set
-# CONFIG_FEATURE_SUID_CONFIG is not set
-# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
-# CONFIG_SELINUX is not set
-# CONFIG_FEATURE_PREFER_APPLETS is not set
-CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
-CONFIG_FEATURE_SYSLOG=y
-# CONFIG_FEATURE_HAVE_RPC is not set
-
-#
-# Build Options
-#
-# CONFIG_STATIC is not set
-# CONFIG_PIE is not set
-# CONFIG_NOMMU is not set
-# CONFIG_BUILD_LIBBUSYBOX is not set
-# CONFIG_FEATURE_INDIVIDUAL is not set
-# CONFIG_FEATURE_SHARED_BUSYBOX is not set
-# CONFIG_LFS is not set
-CONFIG_CROSS_COMPILER_PREFIX="arm-linux-androideabi-"
-CONFIG_EXTRA_CFLAGS=""
-
-#
-# Debugging Options
-#
-# CONFIG_DEBUG is not set
-# CONFIG_DEBUG_PESSIMIZE is not set
-# CONFIG_WERROR is not set
-CONFIG_NO_DEBUG_LIB=y
-# CONFIG_DMALLOC is not set
-# CONFIG_EFENCE is not set
-
-#
-# Installation Options ("make install" behavior)
-#
-CONFIG_INSTALL_APPLET_SYMLINKS=y
-# CONFIG_INSTALL_APPLET_HARDLINKS is not set
-# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
-# CONFIG_INSTALL_APPLET_DONT is not set
-# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
-# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
-# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
-CONFIG_PREFIX="./_install"
-
-#
-# Busybox Library Tuning
-#
-# CONFIG_FEATURE_SYSTEMD is not set
-# CONFIG_FEATURE_RTMINMAX is not set
-CONFIG_PASSWORD_MINLEN=6
-CONFIG_MD5_SMALL=1
-# CONFIG_FEATURE_FAST_TOP is not set
-# CONFIG_FEATURE_ETC_NETWORKS is not set
-CONFIG_FEATURE_USE_TERMIOS=y
-# CONFIG_FEATURE_EDITING is not set
-CONFIG_FEATURE_EDITING_MAX_LEN=0
-# CONFIG_FEATURE_EDITING_VI is not set
-CONFIG_FEATURE_EDITING_HISTORY=0
-# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
-# CONFIG_FEATURE_TAB_COMPLETION is not set
-# CONFIG_FEATURE_USERNAME_COMPLETION is not set
-# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set
-# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
-# CONFIG_FEATURE_NON_POSIX_CP is not set
-# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
-CONFIG_FEATURE_COPYBUF_KB=4
-# CONFIG_FEATURE_SKIP_ROOTFS is not set
-# CONFIG_MONOTONIC_SYSCALL is not set
-# CONFIG_IOCTL_HEX2STR_ERROR is not set
-# CONFIG_FEATURE_HWIB is not set
-
-#
-# Applets
-#
-
-#
-# Archival Utilities
-#
-CONFIG_FEATURE_SEAMLESS_XZ=y
-CONFIG_FEATURE_SEAMLESS_LZMA=y
-CONFIG_FEATURE_SEAMLESS_BZ2=y
-CONFIG_FEATURE_SEAMLESS_GZ=y
-CONFIG_FEATURE_SEAMLESS_Z=y
-CONFIG_AR=y
-CONFIG_FEATURE_AR_LONG_FILENAMES=y
-CONFIG_FEATURE_AR_CREATE=y
-CONFIG_BUNZIP2=y
-CONFIG_BZIP2=y
-CONFIG_CPIO=y
-CONFIG_FEATURE_CPIO_O=y
-CONFIG_FEATURE_CPIO_P=y
-CONFIG_DPKG=y
-CONFIG_DPKG_DEB=y
-# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
-CONFIG_GUNZIP=y
-CONFIG_GZIP=y
-# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
-CONFIG_LZOP=y
-CONFIG_LZOP_COMPR_HIGH=y
-CONFIG_RPM2CPIO=y
-CONFIG_RPM=y
-CONFIG_TAR=y
-CONFIG_FEATURE_TAR_CREATE=y
-CONFIG_FEATURE_TAR_AUTODETECT=y
-CONFIG_FEATURE_TAR_FROM=y
-CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
-CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y
-CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
-# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set
-# CONFIG_FEATURE_TAR_TO_COMMAND is not set
-CONFIG_FEATURE_TAR_UNAME_GNAME=y
-CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y
-# CONFIG_FEATURE_TAR_SELINUX is not set
-CONFIG_UNCOMPRESS=y
-CONFIG_UNLZMA=y
-CONFIG_FEATURE_LZMA_FAST=y
-CONFIG_LZMA=y
-CONFIG_UNXZ=y
-CONFIG_XZ=y
-CONFIG_UNZIP=y
-
-#
-# Coreutils
-#
-CONFIG_BASENAME=y
-CONFIG_CAT=y
-# CONFIG_DATE is not set
-# CONFIG_FEATURE_DATE_ISOFMT is not set
-# CONFIG_FEATURE_DATE_NANO is not set
-# CONFIG_FEATURE_DATE_COMPAT is not set
-# CONFIG_ID is not set
-# CONFIG_GROUPS is not set
-CONFIG_TEST=y
-CONFIG_FEATURE_TEST_64=y
-CONFIG_TOUCH=y
-CONFIG_TR=y
-CONFIG_FEATURE_TR_CLASSES=y
-CONFIG_FEATURE_TR_EQUIV=y
-CONFIG_BASE64=y
-CONFIG_CAL=y
-CONFIG_CATV=y
-CONFIG_CHGRP=y
-CONFIG_CHMOD=y
-CONFIG_CHOWN=y
-# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
-CONFIG_CHROOT=y
-CONFIG_CKSUM=y
-CONFIG_COMM=y
-CONFIG_CP=y
-# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
-CONFIG_CUT=y
-CONFIG_DD=y
-CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
-CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y
-CONFIG_FEATURE_DD_IBS_OBS=y
-# CONFIG_DF is not set
-# CONFIG_FEATURE_DF_FANCY is not set
-CONFIG_DIRNAME=y
-CONFIG_DOS2UNIX=y
-CONFIG_UNIX2DOS=y
-CONFIG_DU=y
-CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
-CONFIG_ECHO=y
-CONFIG_FEATURE_FANCY_ECHO=y
-# CONFIG_ENV is not set
-# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
-CONFIG_EXPAND=y
-# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
-# CONFIG_EXPR is not set
-# CONFIG_EXPR_MATH_SUPPORT_64 is not set
-CONFIG_FALSE=y
-CONFIG_FOLD=y
-# CONFIG_FSYNC is not set
-CONFIG_HEAD=y
-CONFIG_FEATURE_FANCY_HEAD=y
-# CONFIG_HOSTID is not set
-CONFIG_INSTALL=y
-# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set
-CONFIG_LN=y
-# CONFIG_LOGNAME is not set
-CONFIG_LS=y
-CONFIG_FEATURE_LS_FILETYPES=y
-CONFIG_FEATURE_LS_FOLLOWLINKS=y
-CONFIG_FEATURE_LS_RECURSIVE=y
-CONFIG_FEATURE_LS_SORTFILES=y
-CONFIG_FEATURE_LS_TIMESTAMPS=y
-CONFIG_FEATURE_LS_USERNAME=y
-# CONFIG_FEATURE_LS_COLOR is not set
-# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set
-CONFIG_MD5SUM=y
-CONFIG_MKDIR=y
-# CONFIG_FEATURE_MKDIR_LONG_OPTIONS is not set
-CONFIG_MKFIFO=y
-CONFIG_MKNOD=y
-CONFIG_MV=y
-# CONFIG_FEATURE_MV_LONG_OPTIONS is not set
-CONFIG_NICE=y
-CONFIG_NOHUP=y
-CONFIG_OD=y
-CONFIG_PRINTENV=y
-CONFIG_PRINTF=y
-CONFIG_PWD=y
-CONFIG_READLINK=y
-CONFIG_FEATURE_READLINK_FOLLOW=y
-CONFIG_REALPATH=y
-CONFIG_RM=y
-CONFIG_RMDIR=y
-# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
-CONFIG_SEQ=y
-CONFIG_SHA1SUM=y
-CONFIG_SHA256SUM=y
-CONFIG_SHA512SUM=y
-CONFIG_SLEEP=y
-CONFIG_FEATURE_FANCY_SLEEP=y
-CONFIG_FEATURE_FLOAT_SLEEP=y
-CONFIG_SORT=y
-CONFIG_FEATURE_SORT_BIG=y
-CONFIG_SPLIT=y
-CONFIG_FEATURE_SPLIT_FANCY=y
-# CONFIG_STAT is not set
-# CONFIG_FEATURE_STAT_FORMAT is not set
-CONFIG_STTY=y
-CONFIG_SUM=y
-CONFIG_SYNC=y
-CONFIG_TAC=y
-CONFIG_TAIL=y
-CONFIG_FEATURE_FANCY_TAIL=y
-CONFIG_TEE=y
-CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
-CONFIG_TRUE=y
-# CONFIG_TTY is not set
-CONFIG_UNAME=y
-CONFIG_UNEXPAND=y
-# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
-CONFIG_UNIQ=y
-# CONFIG_USLEEP is not set
-CONFIG_UUDECODE=y
-CONFIG_UUENCODE=y
-CONFIG_WC=y
-CONFIG_FEATURE_WC_LARGE=y
-# CONFIG_WHO is not set
-CONFIG_WHOAMI=y
-CONFIG_YES=y
-
-#
-# Common options for cp and mv
-#
-CONFIG_FEATURE_PRESERVE_HARDLINKS=y
-
-#
-# Common options for ls, more and telnet
-#
-CONFIG_FEATURE_AUTOWIDTH=y
-
-#
-# Common options for df, du, ls
-#
-CONFIG_FEATURE_HUMAN_READABLE=y
-
-#
-# Common options for md5sum, sha1sum, sha256sum, sha512sum
-#
-CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
-
-#
-# Console Utilities
-#
-CONFIG_CHVT=y
-CONFIG_FGCONSOLE=y
-CONFIG_CLEAR=y
-CONFIG_DEALLOCVT=y
-CONFIG_DUMPKMAP=y
-# CONFIG_KBD_MODE is not set
-# CONFIG_LOADFONT is not set
-CONFIG_LOADKMAP=y
-CONFIG_OPENVT=y
-CONFIG_RESET=y
-CONFIG_RESIZE=y
-CONFIG_FEATURE_RESIZE_PRINT=y
-CONFIG_SETCONSOLE=y
-# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
-# CONFIG_SETFONT is not set
-# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
-CONFIG_DEFAULT_SETFONT_DIR=""
-CONFIG_SETKEYCODES=y
-CONFIG_SETLOGCONS=y
-CONFIG_SHOWKEY=y
-# CONFIG_FEATURE_LOADFONT_PSF2 is not set
-# CONFIG_FEATURE_LOADFONT_RAW is not set
-
-#
-# Debian Utilities
-#
-CONFIG_MKTEMP=y
-CONFIG_PIPE_PROGRESS=y
-CONFIG_RUN_PARTS=y
-# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
-CONFIG_FEATURE_RUN_PARTS_FANCY=y
-CONFIG_START_STOP_DAEMON=y
-CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
-# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
-CONFIG_WHICH=y
-
-#
-# Editors
-#
-CONFIG_PATCH=y
-CONFIG_VI=y
-CONFIG_FEATURE_VI_MAX_LEN=0
-# CONFIG_FEATURE_VI_8BIT is not set
-# CONFIG_FEATURE_VI_COLON is not set
-# CONFIG_FEATURE_VI_YANKMARK is not set
-CONFIG_FEATURE_VI_SEARCH=y
-# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
-CONFIG_FEATURE_VI_USE_SIGNALS=y
-# CONFIG_FEATURE_VI_DOT_CMD is not set
-# CONFIG_FEATURE_VI_READONLY is not set
-# CONFIG_FEATURE_VI_SETOPTS is not set
-# CONFIG_FEATURE_VI_SET is not set
-CONFIG_FEATURE_VI_WIN_RESIZE=y
-# CONFIG_FEATURE_VI_ASK_TERMINAL is not set
-# CONFIG_FEATURE_VI_OPTIMIZE_CURSOR is not set
-# CONFIG_AWK is not set
-# CONFIG_FEATURE_AWK_LIBM is not set
-CONFIG_CMP=y
-CONFIG_DIFF=y
-# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
-CONFIG_FEATURE_DIFF_DIR=y
-# CONFIG_ED is not set
-CONFIG_SED=y
-# CONFIG_FEATURE_ALLOW_EXEC is not set
-
-#
-# Finding Utilities
-#
-CONFIG_FIND=y
-CONFIG_FEATURE_FIND_PRINT0=y
-CONFIG_FEATURE_FIND_MTIME=y
-# CONFIG_FEATURE_FIND_MMIN is not set
-CONFIG_FEATURE_FIND_PERM=y
-CONFIG_FEATURE_FIND_TYPE=y
-# CONFIG_FEATURE_FIND_XDEV is not set
-# CONFIG_FEATURE_FIND_MAXDEPTH is not set
-# CONFIG_FEATURE_FIND_NEWER is not set
-# CONFIG_FEATURE_FIND_INUM is not set
-# CONFIG_FEATURE_FIND_EXEC is not set
-# CONFIG_FEATURE_FIND_USER is not set
-# CONFIG_FEATURE_FIND_GROUP is not set
-# CONFIG_FEATURE_FIND_NOT is not set
-# CONFIG_FEATURE_FIND_DEPTH is not set
-# CONFIG_FEATURE_FIND_PAREN is not set
-# CONFIG_FEATURE_FIND_SIZE is not set
-# CONFIG_FEATURE_FIND_PRUNE is not set
-# CONFIG_FEATURE_FIND_DELETE is not set
-# CONFIG_FEATURE_FIND_PATH is not set
-# CONFIG_FEATURE_FIND_REGEX is not set
-# CONFIG_FEATURE_FIND_CONTEXT is not set
-# CONFIG_FEATURE_FIND_LINKS is not set
-CONFIG_GREP=y
-# CONFIG_FEATURE_GREP_EGREP_ALIAS is not set
-# CONFIG_FEATURE_GREP_FGREP_ALIAS is not set
-# CONFIG_FEATURE_GREP_CONTEXT is not set
-CONFIG_XARGS=y
-CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
-CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
-CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
-CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
-
-#
-# Init Utilities
-#
-# CONFIG_BOOTCHARTD is not set
-# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
-# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
-# CONFIG_HALT is not set
-# CONFIG_FEATURE_CALL_TELINIT is not set
-# CONFIG_TELINIT_PATH=""
-# CONFIG_INIT is not set
-# CONFIG_FEATURE_USE_INITTAB is not set
-# CONFIG_FEATURE_KILL_REMOVED is not set
-# CONFIG_FEATURE_KILL_DELAY=0
-# CONFIG_FEATURE_INIT_SCTTY is not set
-# CONFIG_FEATURE_INIT_SYSLOG is not set
-# CONFIG_FEATURE_EXTRA_QUIET is not set
-# CONFIG_FEATURE_INIT_COREDUMPS is not set
-# CONFIG_FEATURE_INITRD is not set
-# CONFIG_INIT_TERMINAL_TYPE="linux"
-# CONFIG_MESG is not set
-# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
-
-#
-# Login/Password Management Utilities
-#
-# CONFIG_ADD_SHELL is not set
-# CONFIG_REMOVE_SHELL is not set
-# CONFIG_FEATURE_SHADOWPASSWDS is not set
-# CONFIG_USE_BB_PWD_GRP is not set
-# CONFIG_USE_BB_SHADOW is not set
-# CONFIG_USE_BB_CRYPT is not set
-# CONFIG_USE_BB_CRYPT_SHA is not set
-# CONFIG_ADDUSER is not set
-# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
-# CONFIG_FEATURE_CHECK_NAMES is not set
-CONFIG_FIRST_SYSTEM_ID=0
-CONFIG_LAST_SYSTEM_ID=0
-# CONFIG_ADDGROUP is not set
-# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
-# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
-# CONFIG_DELUSER is not set
-# CONFIG_DELGROUP is not set
-# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
-# CONFIG_GETTY is not set
-# CONFIG_LOGIN is not set
-# CONFIG_PAM is not set
-# CONFIG_LOGIN_SCRIPTS is not set
-# CONFIG_FEATURE_NOLOGIN is not set
-# CONFIG_FEATURE_SECURETTY is not set
-# CONFIG_PASSWD is not set
-# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set
-# CONFIG_CRYPTPW is not set
-# CONFIG_CHPASSWD is not set
-# CONFIG_SU is not set
-# CONFIG_FEATURE_SU_SYSLOG is not set
-# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set
-# CONFIG_SULOGIN is not set
-# CONFIG_VLOCK is not set
-
-#
-# Linux Ext2 FS Progs
-#
-CONFIG_CHATTR=y
-# CONFIG_FSCK is not set
-CONFIG_LSATTR=y
-CONFIG_TUNE2FS=y
-
-#
-# Linux Module Utilities
-#
-# CONFIG_MODINFO is not set
-# CONFIG_MODPROBE_SMALL is not set
-# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE=y
-# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y
-# CONFIG_INSMOD is not set
-# CONFIG_RMMOD is not set
-# CONFIG_LSMOD is not set
-# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
-# CONFIG_MODPROBE is not set
-# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set
-# CONFIG_DEPMOD is not set
-
-#
-# Options common to multiple modutils
-#
-# CONFIG_FEATURE_2_4_MODULES is not set
-# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
-# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
-# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
-# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
-# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
-# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set
-# CONFIG_FEATURE_MODUTILS_ALIAS is not set
-# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set
-# CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
-# CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
-
-#
-# Linux System Utilities
-#
-CONFIG_BLOCKDEV=y
-CONFIG_REV=y
-# CONFIG_ACPID is not set
-# CONFIG_FEATURE_ACPID_COMPAT is not set
-CONFIG_BLKID=y
-# CONFIG_FEATURE_BLKID_TYPE is not set
-CONFIG_DMESG=y
-CONFIG_FEATURE_DMESG_PRETTY=y
-CONFIG_FBSET=y
-CONFIG_FEATURE_FBSET_FANCY=y
-CONFIG_FEATURE_FBSET_READMODE=y
-CONFIG_FDFLUSH=y
-CONFIG_FDFORMAT=y
-CONFIG_FDISK=y
-CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
-CONFIG_FEATURE_FDISK_WRITABLE=y
-# CONFIG_FEATURE_AIX_LABEL is not set
-# CONFIG_FEATURE_SGI_LABEL is not set
-# CONFIG_FEATURE_SUN_LABEL is not set
-# CONFIG_FEATURE_OSF_LABEL is not set
-# CONFIG_FEATURE_GPT_LABEL is not set
-CONFIG_FEATURE_FDISK_ADVANCED=y
-CONFIG_FINDFS=y
-CONFIG_FLOCK=y
-CONFIG_FREERAMDISK=y
-# CONFIG_FSCK_MINIX is not set
-# CONFIG_MKFS_EXT2 is not set
-# CONFIG_MKFS_MINIX is not set
-# CONFIG_FEATURE_MINIX2 is not set
-# CONFIG_MKFS_REISER is not set
-# CONFIG_MKFS_VFAT is not set
-CONFIG_GETOPT=y
-CONFIG_FEATURE_GETOPT_LONG=y
-CONFIG_HEXDUMP=y
-CONFIG_FEATURE_HEXDUMP_REVERSE=y
-CONFIG_HD=y
-# CONFIG_HWCLOCK is not set
-# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set
-# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set
-# CONFIG_IPCRM is not set
-# CONFIG_IPCS is not set
-CONFIG_LOSETUP=y
-CONFIG_LSPCI=y
-CONFIG_LSUSB=y
-# CONFIG_MDEV is not set
-# CONFIG_FEATURE_MDEV_CONF is not set
-# CONFIG_FEATURE_MDEV_RENAME is not set
-# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
-# CONFIG_FEATURE_MDEV_EXEC is not set
-# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
-CONFIG_MKSWAP=y
-CONFIG_FEATURE_MKSWAP_UUID=y
-CONFIG_MORE=y
-# CONFIG_MOUNT is not set
-# CONFIG_FEATURE_MOUNT_FAKE is not set
-# CONFIG_FEATURE_MOUNT_VERBOSE is not set
-# CONFIG_FEATURE_MOUNT_HELPERS is not set
-# CONFIG_FEATURE_MOUNT_LABEL is not set
-# CONFIG_FEATURE_MOUNT_NFS is not set
-# CONFIG_FEATURE_MOUNT_CIFS is not set
-# CONFIG_FEATURE_MOUNT_FLAGS is not set
-# CONFIG_FEATURE_MOUNT_FSTAB is not set
-# CONFIG_PIVOT_ROOT is not set
-# CONFIG_RDATE is not set
-CONFIG_RDEV=y
-CONFIG_READPROFILE=y
-CONFIG_RTCWAKE=y
-CONFIG_SCRIPT=y
-CONFIG_SCRIPTREPLAY=y
-# CONFIG_SETARCH is not set
-# CONFIG_SWAPONOFF is not set
-# CONFIG_FEATURE_SWAPON_PRI is not set
-# CONFIG_SWITCH_ROOT is not set
-# CONFIG_UMOUNT is not set
-# CONFIG_FEATURE_UMOUNT_ALL is not set
-# CONFIG_FEATURE_MOUNT_LOOP is not set
-# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set
-# CONFIG_FEATURE_MTAB_SUPPORT is not set
-CONFIG_VOLUMEID=y
-
-#
-# Filesystem/Volume identification
-#
-CONFIG_FEATURE_VOLUMEID_EXT=y
-CONFIG_FEATURE_VOLUMEID_BTRFS=y
-CONFIG_FEATURE_VOLUMEID_REISERFS=y
-CONFIG_FEATURE_VOLUMEID_FAT=y
-CONFIG_FEATURE_VOLUMEID_HFS=y
-CONFIG_FEATURE_VOLUMEID_JFS=y
-CONFIG_FEATURE_VOLUMEID_XFS=y
-CONFIG_FEATURE_VOLUMEID_NTFS=y
-CONFIG_FEATURE_VOLUMEID_ISO9660=y
-CONFIG_FEATURE_VOLUMEID_UDF=y
-CONFIG_FEATURE_VOLUMEID_LUKS=y
-CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
-CONFIG_FEATURE_VOLUMEID_CRAMFS=y
-CONFIG_FEATURE_VOLUMEID_ROMFS=y
-CONFIG_FEATURE_VOLUMEID_SYSV=y
-CONFIG_FEATURE_VOLUMEID_OCFS2=y
-CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
-
-#
-# Miscellaneous Utilities
-#
-# CONFIG_CONSPY is not set
-# CONFIG_NANDWRITE is not set
-CONFIG_NANDDUMP=y
-CONFIG_SETSERIAL=y
-# CONFIG_UBIATTACH is not set
-# CONFIG_UBIDETACH is not set
-# CONFIG_UBIMKVOL is not set
-# CONFIG_UBIRMVOL is not set
-# CONFIG_UBIRSVOL is not set
-# CONFIG_UBIUPDATEVOL is not set
-# CONFIG_ADJTIMEX is not set
-# CONFIG_BBCONFIG is not set
-# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
-CONFIG_BEEP=y
-CONFIG_FEATURE_BEEP_FREQ=4000
-CONFIG_FEATURE_BEEP_LENGTH_MS=30
-CONFIG_CHAT=y
-CONFIG_FEATURE_CHAT_NOFAIL=y
-# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
-CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
-CONFIG_FEATURE_CHAT_SWALLOW_OPTS=y
-CONFIG_FEATURE_CHAT_SEND_ESCAPES=y
-CONFIG_FEATURE_CHAT_VAR_ABORT_LEN=y
-CONFIG_FEATURE_CHAT_CLR_ABORT=y
-CONFIG_CHRT=y
-# CONFIG_CROND is not set
-# CONFIG_FEATURE_CROND_D is not set
-# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
-CONFIG_FEATURE_CROND_DIR=""
-# CONFIG_CRONTAB is not set
-CONFIG_DC=y
-CONFIG_FEATURE_DC_LIBM=y
-# CONFIG_DEVFSD is not set
-# CONFIG_DEVFSD_MODLOAD is not set
-# CONFIG_DEVFSD_FG_NP is not set
-# CONFIG_DEVFSD_VERBOSE is not set
-# CONFIG_FEATURE_DEVFS is not set
-CONFIG_DEVMEM=y
-# CONFIG_EJECT is not set
-# CONFIG_FEATURE_EJECT_SCSI is not set
-CONFIG_FBSPLASH=y
-CONFIG_FLASHCP=y
-CONFIG_FLASH_LOCK=y
-CONFIG_FLASH_UNLOCK=y
-# CONFIG_FLASH_ERASEALL is not set
-# CONFIG_IONICE is not set
-CONFIG_INOTIFYD=y
-# CONFIG_LAST is not set
-# CONFIG_FEATURE_LAST_SMALL is not set
-# CONFIG_FEATURE_LAST_FANCY is not set
-# CONFIG_LESS is not set
-CONFIG_FEATURE_LESS_MAXLINES=0
-# CONFIG_FEATURE_LESS_BRACKETS is not set
-# CONFIG_FEATURE_LESS_FLAGS is not set
-# CONFIG_FEATURE_LESS_MARKS is not set
-# CONFIG_FEATURE_LESS_REGEXP is not set
-# CONFIG_FEATURE_LESS_WINCH is not set
-# CONFIG_FEATURE_LESS_DASHCMD is not set
-# CONFIG_FEATURE_LESS_LINENUMS is not set
-CONFIG_HDPARM=y
-CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
-CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
-CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
-CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
-CONFIG_MAKEDEVS=y
-# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
-CONFIG_FEATURE_MAKEDEVS_TABLE=y
-CONFIG_MAN=y
-# CONFIG_MICROCOM is not set
-# CONFIG_MOUNTPOINT is not set
-# CONFIG_MT is not set
-CONFIG_RAIDAUTORUN=y
-# CONFIG_READAHEAD is not set
-# CONFIG_RFKILL is not set
-# CONFIG_RUNLEVEL is not set
-CONFIG_RX=y
-CONFIG_SETSID=y
-CONFIG_STRINGS=y
-# CONFIG_TASKSET is not set
-# CONFIG_FEATURE_TASKSET_FANCY is not set
-CONFIG_TIME=y
-CONFIG_TIMEOUT=y
-CONFIG_TTYSIZE=y
-CONFIG_VOLNAME=y
-# CONFIG_WALL is not set
-# CONFIG_WATCHDOG is not set
-
-#
-# Networking Utilities
-#
-# CONFIG_NAMEIF is not set
-# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
-CONFIG_NBDCLIENT=y
-CONFIG_NC=y
-CONFIG_NC_SERVER=y
-CONFIG_NC_EXTRA=y
-# CONFIG_NC_110_COMPAT is not set
-# CONFIG_PING is not set
-# CONFIG_PING6 is not set
-# CONFIG_FEATURE_FANCY_PING is not set
-CONFIG_WHOIS=y
-# CONFIG_FEATURE_IPV6 is not set
-# CONFIG_FEATURE_UNIX_LOCAL is not set
-# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
-# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
-CONFIG_ARP=y
-# CONFIG_ARPING is not set
-# CONFIG_BRCTL is not set
-# CONFIG_FEATURE_BRCTL_FANCY is not set
-# CONFIG_FEATURE_BRCTL_SHOW is not set
-CONFIG_DNSD=y
-# CONFIG_ETHER_WAKE is not set
-CONFIG_FAKEIDENTD=y
-CONFIG_FTPD=y
-CONFIG_FEATURE_FTP_WRITE=y
-CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
-CONFIG_FTPGET=y
-CONFIG_FTPPUT=y
-# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
-# CONFIG_HOSTNAME is not set
-CONFIG_HTTPD=y
-CONFIG_FEATURE_HTTPD_RANGES=y
-CONFIG_FEATURE_HTTPD_USE_SENDFILE=y
-CONFIG_FEATURE_HTTPD_SETUID=y
-CONFIG_FEATURE_HTTPD_BASIC_AUTH=y
-# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
-CONFIG_FEATURE_HTTPD_CGI=y
-CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y
-CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y
-CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y
-CONFIG_FEATURE_HTTPD_ERROR_PAGES=y
-CONFIG_FEATURE_HTTPD_PROXY=y
-CONFIG_FEATURE_HTTPD_GZIP=y
-CONFIG_IFCONFIG=y
-CONFIG_FEATURE_IFCONFIG_STATUS=y
-# CONFIG_FEATURE_IFCONFIG_SLIP is not set
-CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
-CONFIG_FEATURE_IFCONFIG_HW=y
-CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
-# CONFIG_IFENSLAVE is not set
-# CONFIG_IFPLUGD is not set
-CONFIG_IFUPDOWN=y
-CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
-CONFIG_FEATURE_IFUPDOWN_IP=y
-CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
-# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
-CONFIG_FEATURE_IFUPDOWN_IPV4=y
-# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
-CONFIG_FEATURE_IFUPDOWN_MAPPING=y
-# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
-# CONFIG_INETD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
-# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
-# CONFIG_FEATURE_INETD_RPC is not set
-CONFIG_IP=y
-CONFIG_FEATURE_IP_ADDRESS=y
-CONFIG_FEATURE_IP_LINK=y
-CONFIG_FEATURE_IP_ROUTE=y
-CONFIG_FEATURE_IP_TUNNEL=y
-CONFIG_FEATURE_IP_RULE=y
-CONFIG_FEATURE_IP_SHORT_FORMS=y
-# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
-CONFIG_IPADDR=y
-CONFIG_IPLINK=y
-CONFIG_IPROUTE=y
-CONFIG_IPTUNNEL=y
-CONFIG_IPRULE=y
-CONFIG_IPCALC=y
-CONFIG_FEATURE_IPCALC_FANCY=y
-# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
-CONFIG_NETSTAT=y
-CONFIG_FEATURE_NETSTAT_WIDE=y
-CONFIG_FEATURE_NETSTAT_PRG=y
-# CONFIG_NSLOOKUP is not set
-# CONFIG_NTPD is not set
-# CONFIG_FEATURE_NTPD_SERVER is not set
-CONFIG_PSCAN=y
-CONFIG_ROUTE=y
-# CONFIG_SLATTACH is not set
-CONFIG_TCPSVD=y
-# CONFIG_TELNET is not set
-# CONFIG_FEATURE_TELNET_TTYPE is not set
-# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set
-# CONFIG_TELNETD is not set
-# CONFIG_FEATURE_TELNETD_STANDALONE is not set
-# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
-# CONFIG_TFTP is not set
-# CONFIG_TFTPD is not set
-# CONFIG_FEATURE_TFTP_GET is not set
-# CONFIG_FEATURE_TFTP_PUT is not set
-# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set
-# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
-# CONFIG_TFTP_DEBUG is not set
-# CONFIG_TRACEROUTE is not set
-# CONFIG_TRACEROUTE6 is not set
-# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
-# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
-# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
-CONFIG_TUNCTL=y
-CONFIG_FEATURE_TUNCTL_UG=y
-# CONFIG_UDHCPD is not set
-# CONFIG_DHCPRELAY is not set
-# CONFIG_DUMPLEASES is not set
-# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
-# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
-CONFIG_DHCPD_LEASES_FILE=""
-CONFIG_UDHCPC=y
-CONFIG_FEATURE_UDHCPC_ARPING=y
-# CONFIG_FEATURE_UDHCP_PORT is not set
-CONFIG_UDHCP_DEBUG=9
-CONFIG_FEATURE_UDHCP_RFC3397=y
-CONFIG_FEATURE_UDHCP_8021Q=y
-CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
-CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
-CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
-# CONFIG_UDPSVD is not set
-# CONFIG_VCONFIG is not set
-CONFIG_WGET=y
-CONFIG_FEATURE_WGET_STATUSBAR=y
-CONFIG_FEATURE_WGET_AUTHENTICATION=y
-# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set
-CONFIG_FEATURE_WGET_TIMEOUT=y
-# CONFIG_ZCIP is not set
-
-#
-# Print Utilities
-#
-CONFIG_LPD=y
-CONFIG_LPR=y
-CONFIG_LPQ=y
-
-#
-# Mail Utilities
-#
-CONFIG_MAKEMIME=y
-CONFIG_FEATURE_MIME_CHARSET="us-ascii"
-CONFIG_POPMAILDIR=y
-CONFIG_FEATURE_POPMAILDIR_DELIVERY=y
-CONFIG_REFORMIME=y
-CONFIG_FEATURE_REFORMIME_COMPAT=y
-CONFIG_SENDMAIL=y
-
-#
-# Process Utilities
-#
-CONFIG_IOSTAT=y
-CONFIG_MPSTAT=y
-CONFIG_NMETER=y
-CONFIG_PMAP=y
-# CONFIG_POWERTOP is not set
-CONFIG_PSTREE=y
-CONFIG_PWDX=y
-CONFIG_SMEMCAP=y
-# CONFIG_FREE is not set
-CONFIG_FUSER=y
-# CONFIG_KILL is not set
-# CONFIG_KILLALL is not set
-# CONFIG_KILLALL5 is not set
-# CONFIG_PGREP is not set
-CONFIG_PIDOF=y
-CONFIG_FEATURE_PIDOF_SINGLE=y
-CONFIG_FEATURE_PIDOF_OMIT=y
-# CONFIG_PKILL is not set
-# CONFIG_PS is not set
-# CONFIG_FEATURE_PS_WIDE is not set
-# CONFIG_FEATURE_PS_TIME is not set
-# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
-# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
-CONFIG_RENICE=y
-CONFIG_BB_SYSCTL=y
-CONFIG_TOP=y
-CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
-CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
-CONFIG_FEATURE_TOP_SMP_CPU=y
-CONFIG_FEATURE_TOP_DECIMALS=y
-CONFIG_FEATURE_TOP_SMP_PROCESS=y
-CONFIG_FEATURE_TOPMEM=y
-CONFIG_FEATURE_SHOW_THREADS=y
-# CONFIG_UPTIME is not set
-CONFIG_WATCH=y
-
-#
-# Runit Utilities
-#
-CONFIG_RUNSV=y
-CONFIG_RUNSVDIR=y
-# CONFIG_FEATURE_RUNSVDIR_LOG is not set
-CONFIG_SV=y
-CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service"
-CONFIG_SVLOGD=y
-CONFIG_CHPST=y
-CONFIG_SETUIDGID=y
-CONFIG_ENVUIDGID=y
-CONFIG_ENVDIR=y
-CONFIG_SOFTLIMIT=y
-# CONFIG_CHCON is not set
-# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
-# CONFIG_GETENFORCE is not set
-# CONFIG_GETSEBOOL is not set
-# CONFIG_LOAD_POLICY is not set
-# CONFIG_MATCHPATHCON is not set
-# CONFIG_RESTORECON is not set
-# CONFIG_RUNCON is not set
-# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
-# CONFIG_SELINUXENABLED is not set
-# CONFIG_SETENFORCE is not set
-# CONFIG_SETFILES is not set
-# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
-# CONFIG_SETSEBOOL is not set
-# CONFIG_SESTATUS is not set
-
-#
-# Shells
-#
-CONFIG_ASH=y
-# CONFIG_ASH_BASH_COMPAT is not set
-# CONFIG_ASH_IDLE_TIMEOUT is not set
-CONFIG_ASH_JOB_CONTROL=y
-# CONFIG_ASH_ALIAS is not set
-CONFIG_ASH_GETOPTS=y
-# CONFIG_ASH_BUILTIN_ECHO is not set
-# CONFIG_ASH_BUILTIN_PRINTF is not set
-# CONFIG_ASH_BUILTIN_TEST is not set
-# CONFIG_ASH_CMDCMD is not set
-# CONFIG_ASH_MAIL is not set
-# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set
-# CONFIG_ASH_RANDOM_SUPPORT is not set
-# CONFIG_ASH_EXPAND_PRMT is not set
-CONFIG_CTTYHACK=y
-# CONFIG_HUSH is not set
-# CONFIG_HUSH_BASH_COMPAT is not set
-# CONFIG_HUSH_BRACE_EXPANSION is not set
-# CONFIG_HUSH_HELP is not set
-# CONFIG_HUSH_INTERACTIVE is not set
-# CONFIG_HUSH_SAVEHISTORY is not set
-# CONFIG_HUSH_JOB is not set
-# CONFIG_HUSH_TICK is not set
-# CONFIG_HUSH_IF is not set
-# CONFIG_HUSH_LOOPS is not set
-# CONFIG_HUSH_CASE is not set
-# CONFIG_HUSH_FUNCTIONS is not set
-# CONFIG_HUSH_LOCAL is not set
-# CONFIG_HUSH_RANDOM_SUPPORT is not set
-# CONFIG_HUSH_EXPORT_N is not set
-# CONFIG_HUSH_MODE_X is not set
-# CONFIG_MSH is not set
-CONFIG_FEATURE_SH_IS_ASH=y
-# CONFIG_FEATURE_SH_IS_HUSH is not set
-# CONFIG_FEATURE_SH_IS_NONE is not set
-# CONFIG_FEATURE_BASH_IS_ASH is not set
-# CONFIG_FEATURE_BASH_IS_HUSH is not set
-CONFIG_FEATURE_BASH_IS_NONE=y
-# CONFIG_SH_MATH_SUPPORT is not set
-# CONFIG_SH_MATH_SUPPORT_64 is not set
-# CONFIG_FEATURE_SH_EXTRA_QUIET is not set
-CONFIG_FEATURE_SH_STANDALONE=y
-# CONFIG_FEATURE_SH_NOFORK is not set
-# CONFIG_FEATURE_SH_HISTFILESIZE is not set
-
-#
-# System Logging Utilities
-#
-# CONFIG_SYSLOGD is not set
-# CONFIG_FEATURE_ROTATE_LOGFILE is not set
-# CONFIG_FEATURE_REMOTE_LOG is not set
-# CONFIG_FEATURE_SYSLOGD_DUP is not set
-# CONFIG_FEATURE_SYSLOGD_CFG is not set
-CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
-# CONFIG_FEATURE_IPC_SYSLOG is not set
-CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
-# CONFIG_LOGREAD is not set
-# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
-CONFIG_KLOGD=y
-CONFIG_FEATURE_KLOGD_KLOGCTL=y
-# CONFIG_LOGGER is not set
diff --git a/standalone/android/cabal.config b/standalone/android/cabal.config
deleted file mode 100644
--- a/standalone/android/cabal.config
+++ /dev/null
@@ -1,202 +0,0 @@
-constraints: unix installed,
-             Crypto ==4.2.5.1,
-             binary ==0.7.6.1,
-             DAV ==1.0.3,
-             HTTP ==4000.2.17,
-             HUnit ==1.2.5.2,
-             IfElse ==0.85,
-             MissingH ==1.2.1.0,
-	     directory ==1.2.2.0,
-             MonadRandom ==0.1.13,
-             QuickCheck ==2.7.6,
-             SafeSemaphore ==0.10.1,
-             aeson ==0.7.0.6,
-             ansi-wl-pprint ==0.6.7.1,
-             appar ==0.1.4,
-             asn1-encoding ==0.8.1.3,
-             asn1-parse ==0.8.1,
-             asn1-types ==0.2.3,
-             async ==2.0.1.5,
-             attoparsec ==0.11.3.4,
-             attoparsec-conduit ==1.1.0,
-             authenticate ==1.3.2.10,
-             base-unicode-symbols ==0.2.2.4,
-             base16-bytestring ==0.1.1.6,
-             base64-bytestring ==1.0.0.1,
-             bifunctors ==4.1.1.1,
-             bloomfilter ==2.0.0.0,
-             byteable ==0.1.1,
-             byteorder ==1.0.4,
-             case-insensitive ==1.2.0.1,
-             cereal ==0.4.0.1,
-             cipher-aes ==0.2.8,
-             cipher-des ==0.0.6,
-             cipher-rc4 ==0.1.4,
-             clientsession ==0.9.0.3,
-             comonad ==4.2,
-             conduit ==1.1.6,
-             conduit-extra ==1.1.3,
-             connection ==0.2.3,
-             contravariant ==0.6.1.1,
-             cookie ==0.4.1.2,
-             cprng-aes ==0.5.2,
-             crypto-api ==0.13.2,
-             crypto-cipher-types ==0.0.9,
-             crypto-numbers ==0.2.3,
-             crypto-pubkey ==0.2.4,
-             crypto-pubkey-types ==0.4.2.2,
-             crypto-random ==0.0.7,
-             cryptohash ==0.11.6,
-             cryptohash-conduit ==0.1.1,
-             css-text ==0.1.2.1,
-             data-default ==0.5.3,
-             data-default-class ==0.0.1,
-             data-default-instances-base ==0.0.1,
-             data-default-instances-containers ==0.0.1,
-             data-default-instances-dlist ==0.0.1,
-             data-default-instances-old-locale ==0.0.1,
-             sandi ==0.3.0.1,
-             dbus ==0.10.8,
-             distributive ==0.4.4,
-             dlist ==0.7.0.1,
-             dns ==1.3.0,
-             edit-distance ==0.2.1.2,
-             either ==4.3,
-             email-validate ==1.0.0,
-             entropy ==0.2.1,
-             errors ==1.4.7,
-             exceptions ==0.6.1,
-             failure ==0.2.0.3,
-             fast-logger ==2.1.5,
-             fdo-notify ==0.3.1,
-             feed ==0.3.9.2,
-             file-embed ==0.0.6,
-             fingertree ==0.1.0.0,
-             free ==4.9,
-             gnuidn ==0.2,
-             gnutls ==0.1.4,
-             gsasl ==0.3.5,
-             hS3 ==0.5.7,
-             hashable ==1.2.1.0,
-             hinotify ==0.3.5,
-             hjsmin ==0.1.4.7,
-             hslogger ==1.2.1,
-             http-client ==0.4.11.1,
-             http-client-tls ==0.2.2,
-             http-conduit ==2.1.5,
-             http-date ==0.0.2,
-             http-types ==0.8.5,
-	     blaze-builder ==0.3.3.2,
-             hxt ==9.3.1.4,
-             hxt-charproperties ==9.1.1.1,
-             hxt-regex-xmlschema ==9.0.4,
-             hxt-unicode ==9.0.2.2,
-             idna ==0.2,
-             iproute ==1.2.11,
-             json ==0.5,
-             keys ==3.10.1,
-             language-javascript ==0.5.13,
-             lens ==4.4.0.2,
-             libxml-sax ==0.7.5,
-             mime-mail ==0.4.1.2,
-             mime-types ==0.1.0.4,
-             mmorph ==1.0.3,
-             monad-control ==0.3.2.2,
-             monad-logger ==0.3.6.1,
-             monad-loops ==0.4.2.1,
-             monads-tf ==0.1.0.2,
-             mtl ==2.1.2,
-             nats ==0.1.2,
-             network ==2.4.1.2,
-             network-conduit ==1.1.0,
-             network-info ==0.2.0.5,
-             network-multicast ==0.0.10,
-             network-protocol-xmpp ==0.4.6,
-             network-uri ==2.6.0.1,
-             optparse-applicative ==0.11.0.2,
-             parallel ==3.2.0.4,
-             path-pieces ==0.1.4,
-             pem ==0.2.2,
-             persistent ==1.3.3,
-             persistent-template ==1.3.2.2,
-             pointed ==4.0,
-             prelude-extras ==0.4,
-             profunctors ==4.0.4,
-             publicsuffixlist ==0.1,
-             punycode ==2.0,
-             random ==1.0.1.1,
-             ranges ==0.2.4,
-             reducers ==3.10.2.1,
-             reflection ==1.2.0.1,
-             regex-base ==0.93.2,
-             regex-compat ==0.95.1,
-             regex-posix ==0.95.2,
-             regex-tdfa ==1.2.0,
-             resource-pool ==0.2.1.1,
-             resourcet ==1.1.2.3,
-             safe ==0.3.8,
-             securemem ==0.1.3,
-             semigroupoids ==4.2,
-             semigroups ==0.15.3,
-             shakespeare ==2.0.5,
-             silently ==1.2.4.1,
-             simple-sendfile ==0.2.14,
-             skein ==1.0.9,
-             socks ==0.5.4,
-             split ==0.2.2,
-             stm ==2.4.2,
-             stm-chans ==3.0.0.2,
-             streaming-commons ==0.1.4.1,
-             stringprep ==0.1.5,
-             stringsearch ==0.3.6.5,
-             syb ==0.4.0,
-             system-fileio ==0.3.14,
-             system-filepath ==0.4.12,
-             tagged ==0.7.2,
-             tagsoup ==0.13.1,
-             tagstream-conduit ==0.5.5.1,
-             text ==1.1.1.0,
-             text-icu ==0.6.3.7,
-             tf-random ==0.5,
-             tls ==1.2.9,
-             transformers ==0.3.0.0,
-             transformers-base ==0.4.1,
-             transformers-compat ==0.3.3.3,
-             unbounded-delays ==0.1.0.8,
-             unix-compat ==0.4.1.3,
-             unix-time ==0.2.2,
-             unordered-containers ==0.2.5.0,
-             utf8-string ==0.3.7,
-             uuid ==1.3.3,
-             vault ==0.3.0.3,
-             vector ==0.10.0.1,
-             void ==0.6.1,
-             wai ==3.0.1.1,
-             wai-app-static ==3.0.0.1,
-             wai-extra ==3.0.1.2,
-             wai-logger ==2.1.1,
-             warp ==3.0.0.5,
-             warp-tls ==3.0.0,
-             word8 ==0.1.1,
-             x509 ==1.4.11,
-             x509-store ==1.4.4,
-             x509-system ==1.4.5,
-             x509-validation ==1.5.0,
-             xml ==1.3.13,
-             xml-conduit ==1.2.1,
-             xml-hamlet ==0.4.0.9,
-             xml-types ==0.3.4,
-             xss-sanitize ==0.3.5.2,
-             yaml ==0.8.9.3,
-             yesod ==1.2.6.1,
-             yesod-auth ==1.3.4.6,
-             yesod-core ==1.2.20.1,
-             yesod-default ==1.2.0,
-             yesod-form ==1.3.16,
-             yesod-persistent ==1.2.3.1,
-             yesod-routes ==1.2.0.7,
-             yesod-static ==1.2.4,
-             zlib ==0.5.4.1,
-             bytestring installed,
-             scientific ==0.3.3.1,
-             clock ==0.4.6.0
diff --git a/standalone/android/clean-haskell-packages b/standalone/android/clean-haskell-packages
deleted file mode 100644
--- a/standalone/android/clean-haskell-packages
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-# Removes all currently installed cross-compiled haskell packages
-# except those part of ghc.
-# Useful if the build failed.
-rm -f $(grep -l $HOME/.ghc/$(cat abiversion)/.cabal/lib/ $HOME/.ghc/android-14/arm-linux-androideabi-4.8/lib/*-ghc-*/package.conf.d/*.conf)
-$HOME/.ghc/$(cat abiversion)/arm-linux-androideabi/bin/ghc-pkg recache
diff --git a/standalone/android/dropbear.patch b/standalone/android/dropbear.patch
deleted file mode 100644
--- a/standalone/android/dropbear.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 014dadb02fd984828a6232534c47dba8e2f7818a Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Wed, 13 Feb 2013 15:29:52 -0400
-Subject: [PATCH] android patch for dropbear
-
-* Disable HOME override
-* Use urandom to avoid blocking on every ssh connection.
-* Enable use of netbsd_getpass.c
----
- cli-auth.c |    1 +
- cli-main.c |    2 --
- options.h  |    2 +-
- 3 files changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/cli-auth.c b/cli-auth.c
-index 4c17a21..91dfdf8 100644
---- a/cli-auth.c
-+++ b/cli-auth.c
-@@ -31,6 +31,7 @@
- #include "ssh.h"
- #include "packet.h"
- #include "runopts.h"
-+#include "netbsd_getpass.c"
- 
- void cli_authinitialise() {
- 
-diff --git a/cli-main.c b/cli-main.c
-index 106006b..68cf023 100644
---- a/cli-main.c
-+++ b/cli-main.c
-@@ -47,8 +47,6 @@ int main(int argc, char ** argv) {
- 	_dropbear_exit = cli_dropbear_exit;
- 	_dropbear_log = cli_dropbear_log;
- 
--	putenv("HOME=/data/local");
--
- 	disallow_core();
- 
- 	cli_getopts(argc, argv);
-diff --git a/options.h b/options.h
-index 7625151..48e404d 100644
---- a/options.h
-+++ b/options.h
-@@ -159,7 +159,7 @@ etc) slower (perhaps by 50%). Recommended for most small systems. */
-  * however significantly reduce the security of your ssh connections
-  * if the PRNG state becomes guessable - make sure you know what you are
-  * doing if you change this. */
--#define DROPBEAR_RANDOM_DEV "/dev/random"
-+#define DROPBEAR_RANDOM_DEV "/dev/urandom"
- 
- /* prngd must be manually set up to produce output */
- /*#define DROPBEAR_PRNGD_SOCKET "/var/run/dropbear-rng"*/
--- 
-1.7.10.4
-
diff --git a/standalone/android/git.patch b/standalone/android/git.patch
deleted file mode 100644
--- a/standalone/android/git.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From e0fffe80a8815e64dbc1d690c79bf006651c7642 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Wed, 13 Aug 2014 13:50:56 -0400
-Subject: [PATCH] avoid using of chmod on android when changing config
-
-This breaks on Android's /sdcard, which has a variety of FUSE
-implentations, all total shite.
----
- config.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/config.c b/config.c
-index 9ba40bc..a350638 100644
---- a/config.c
-+++ b/config.c
-@@ -2124,12 +2124,14 @@ int git_config_set_multivar_in_file_gently(const char *config_filename,
- 		close(in_fd);
- 		in_fd = -1;
- 
-+		/* not on android
- 		if (chmod(get_lock_file_path(lock), st.st_mode & 07777) < 0) {
- 			error("chmod on %s failed: %s",
- 			      get_lock_file_path(lock), strerror(errno));
- 			ret = CONFIG_NO_WRITE;
- 			goto out_free;
- 		}
-+		*/
- 
- 		if (store.seen == 0)
- 			store.seen = 1;
-@@ -2329,11 +2331,13 @@ int git_config_rename_section_in_file(const char *config_filename,
- 
- 	fstat(fileno(config_file), &st);
- 
-+	/* not on android
- 	if (chmod(get_lock_file_path(lock), st.st_mode & 07777) < 0) {
- 		ret = error("chmod on %s failed: %s",
- 			    get_lock_file_path(lock), strerror(errno));
- 		goto out;
- 	}
-+	*/
- 
- 	while (fgets(buf, sizeof(buf), config_file)) {
- 		int i;
--- 
-2.1.4
-
diff --git a/standalone/android/haskell-patches/clock_hack-for-android.patch b/standalone/android/haskell-patches/clock_hack-for-android.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/clock_hack-for-android.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 5be3bdfc5ec83eaa5defd42e99f73a685123bea0 Mon Sep 17 00:00:00 2001
-From: androidbuilder <androidbuilder@example.com>
-Date: Fri, 22 May 2015 18:35:43 +0000
-Subject: [PATCH] hack for android
-
----
- System/Clock.hsc | 32 ++------------------------------
- 1 file changed, 2 insertions(+), 30 deletions(-)
-
-diff --git a/System/Clock.hsc b/System/Clock.hsc
-index b6a4968..92bcf8b 100644
---- a/System/Clock.hsc
-+++ b/System/Clock.hsc
-@@ -35,8 +35,6 @@ import GHC.Generics (Generic)
- #  endif
- #endif
- 
--#let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
--
- -- | Clock types. A clock may be system-wide (that is, visible to all processes)
- --   or per-process (measuring time that is meaningful only within a process).
- --   All implementations shall support CLOCK_REALTIME.
-@@ -119,7 +117,7 @@ getTime ThreadCPUTime = allocaAndPeek hs_clock_win32_gettime_threadtime
- #elif defined(__MACH__)
- getTime clk = allocaAndPeek $ hs_clock_darwin_gettime $ clockToConst clk
- #else
--getTime clk = allocaAndPeek $ clock_gettime $ clockToConst clk
-+getTime clk = error "getTime clk not implemented"
- #endif
- 
- #if defined(_WIN32)
-@@ -130,7 +128,7 @@ getRes ThreadCPUTime = allocaAndPeek hs_clock_win32_getres_threadtime
- #elif defined(__MACH__)
- getRes clk = allocaAndPeek $ hs_clock_darwin_getres $ clockToConst clk
- #else
--getRes clk = allocaAndPeek $ clock_getres $ clockToConst clk
-+getRes clk = error "getRes clk not implemented"
- #endif
- 
- -- | TimeSpec structure
-@@ -139,32 +137,6 @@ data TimeSpec = TimeSpec
-   , nsec :: {-# UNPACK #-} !Int64 -- ^ nanoseconds
-   } deriving (Eq, Generic, Read, Show, Typeable)
- 
--#if defined(_WIN32)
--instance Storable TimeSpec where
--  sizeOf _ = sizeOf (undefined :: Int64) * 2
--  alignment _ = alignment (undefined :: Int64)
--  poke ptr ts = do
--      pokeByteOff ptr 0 (sec ts)
--      pokeByteOff ptr (sizeOf (undefined :: Int64)) (nsec ts)
--  peek ptr = do
--      TimeSpec
--        <$> peekByteOff ptr 0
--        <*> peekByteOff ptr (sizeOf (undefined :: Int64))
--#else
--instance Storable TimeSpec where
--  sizeOf _ = #{size struct timespec}
--  alignment _ = #{alignment struct timespec}
--  poke ptr ts = do
--      let xs :: #{type time_t} = fromIntegral $ sec ts
--          xn :: #{type long} = fromIntegral $ nsec ts
--      #{poke struct timespec, tv_sec} ptr (xs)
--      #{poke struct timespec, tv_nsec} ptr (xn)
--  peek ptr = do
--      xs :: #{type time_t} <- #{peek struct timespec, tv_sec} ptr
--      xn :: #{type long} <- #{peek struct timespec, tv_nsec} ptr
--      return $ TimeSpec (fromIntegral xs) (fromIntegral xn)
--#endif
--
- normalize :: TimeSpec -> TimeSpec
- normalize (TimeSpec xs xn) =
-     let (q, r) = xn `divMod` (10^9)
--- 
-2.1.4
-
diff --git a/standalone/android/haskell-patches/comonad_cross-build.patch b/standalone/android/haskell-patches/comonad_cross-build.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/comonad_cross-build.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 589c6a87ec62e35942c9a86ea8d91b443c80da99 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Fri, 18 Oct 2013 23:07:02 +0000
-Subject: [PATCH] cross build
-
----
- comonad.cabal |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/comonad.cabal b/comonad.cabal
-index 5d34b13..756ed92 100644
---- a/comonad.cabal
-+++ b/comonad.cabal
-@@ -13,7 +13,7 @@ copyright:     Copyright (C) 2008-2013 Edward A. Kmett,
-                Copyright (C) 2004-2008 Dave Menendez
- synopsis:      Comonads
- description:   Comonads
--build-type:    Custom
-+build-type:    Simple
- extra-source-files:
-   .ghci
-   .gitignore
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/crypto-numbers_build-fix.patch b/standalone/android/haskell-patches/crypto-numbers_build-fix.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/crypto-numbers_build-fix.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-From 0cfdb30120976290068f4bcbebbf236b960afbb6 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 26 Dec 2013 20:01:30 -0400
-Subject: [PATCH] hack to build
-
----
- Crypto/Number/Basic.hs         |   14 --------------
- Crypto/Number/ModArithmetic.hs |   29 -----------------------------
- Crypto/Number/Prime.hs         |   18 ------------------
- crypto-numbers.cabal           |    2 +-
- 4 files changed, 1 insertion(+), 62 deletions(-)
-
-diff --git a/Crypto/Number/Basic.hs b/Crypto/Number/Basic.hs
-index 65c14b3..eaee853 100644
---- a/Crypto/Number/Basic.hs
-+++ b/Crypto/Number/Basic.hs
-@@ -20,11 +20,7 @@ module Crypto.Number.Basic
-     , areEven
-     ) where
- 
--#if MIN_VERSION_integer_gmp(0,5,1)
--import GHC.Integer.GMP.Internals
--#else
- import Data.Bits
--#endif
- 
- -- | sqrti returns two integer (l,b) so that l <= sqrt i <= b
- -- the implementation is quite naive, use an approximation for the first number
-@@ -63,25 +59,16 @@ sqrti i
- -- gcde 'a' 'b' find (x,y,gcd(a,b)) where ax + by = d
- --
- gcde :: Integer -> Integer -> (Integer, Integer, Integer)
--#if MIN_VERSION_integer_gmp(0,5,1)
--gcde a b = (s, t, g)
--  where (# g, s #) = gcdExtInteger a b
--        t = (g - s * a) `div` b
--#else
- gcde a b = if d < 0 then (-x,-y,-d) else (x,y,d) where
-     (d, x, y)                     = f (a,1,0) (b,0,1)
-     f t              (0, _, _)    = t
-     f (a', sa, ta) t@(b', sb, tb) =
-         let (q, r) = a' `divMod` b' in
-         f t (r, sa - (q * sb), ta - (q * tb))
--#endif
- 
- -- | get the extended GCD of two integer using the extended binary algorithm (HAC 14.61)
- -- get (x,y,d) where d = gcd(a,b) and x,y satisfying ax + by = d
- gcde_binary :: Integer -> Integer -> (Integer, Integer, Integer)
--#if MIN_VERSION_integer_gmp(0,5,1)
--gcde_binary = gcde
--#else
- gcde_binary a' b'
-     | b' == 0   = (1,0,a')
-     | a' >= b'  = compute a' b'
-@@ -105,7 +92,6 @@ gcde_binary a' b'
-              in if u2 >= v2
-                 then loop g x y (u2 - v2) v2 (a2 - c2) (b2 - d2) c2 d2
-                 else loop g x y u2 (v2 - u2) a2 b2 (c2 - a2) (d2 - b2)
--#endif
- 
- -- | check if a list of integer are all even
- areEven :: [Integer] -> Bool
-diff --git a/Crypto/Number/ModArithmetic.hs b/Crypto/Number/ModArithmetic.hs
-index 942c12f..f8cfc32 100644
---- a/Crypto/Number/ModArithmetic.hs
-+++ b/Crypto/Number/ModArithmetic.hs
-@@ -29,12 +29,8 @@ module Crypto.Number.ModArithmetic
- import Control.Exception (throw, Exception)
- import Data.Typeable
- 
--#if MIN_VERSION_integer_gmp(0,5,1)
--import GHC.Integer.GMP.Internals
--#else
- import Crypto.Number.Basic (gcde_binary)
- import Data.Bits
--#endif
- 
- -- | Raised when two numbers are supposed to be coprimes but are not.
- data CoprimesAssertionError = CoprimesAssertionError
-@@ -55,13 +51,7 @@ expSafe :: Integer -- ^ base
-         -> Integer -- ^ exponant
-         -> Integer -- ^ modulo
-         -> Integer -- ^ result
--#if MIN_VERSION_integer_gmp(0,5,1)
--expSafe b e m
--    | odd m     = powModSecInteger b e m
--    | otherwise = powModInteger b e m
--#else
- expSafe = exponentiation
--#endif
- 
- -- | Compute the modular exponentiation of base^exponant using
- -- the fastest algorithm without any consideration for
-@@ -74,11 +64,7 @@ expFast :: Integer -- ^ base
-         -> Integer -- ^ modulo
-         -> Integer -- ^ result
- expFast =
--#if MIN_VERSION_integer_gmp(0,5,1)
--    powModInteger
--#else
-     exponentiation
--#endif
- 
- -- note on exponentiation: 0^0 is treated as 1 for mimicking the standard library;
- -- the mathematic debate is still open on whether or not this is true, but pratically
-@@ -87,22 +73,15 @@ expFast =
- -- | exponentiation_rtl_binary computes modular exponentiation as b^e mod m
- -- using the right-to-left binary exponentiation algorithm (HAC 14.79)
- exponentiation_rtl_binary :: Integer -> Integer -> Integer -> Integer
--#if MIN_VERSION_integer_gmp(0,5,1)
--exponentiation_rtl_binary = expSafe
--#else
- exponentiation_rtl_binary 0 0 m = 1 `mod` m
- exponentiation_rtl_binary b e m = loop e b 1
-     where sq x          = (x * x) `mod` m
-           loop !0 _  !a = a `mod` m
-           loop !i !s !a = loop (i `shiftR` 1) (sq s) (if odd i then a * s else a)
--#endif
- 
- -- | exponentiation computes modular exponentiation as b^e mod m
- -- using repetitive squaring.
- exponentiation :: Integer -> Integer -> Integer -> Integer
--#if MIN_VERSION_integer_gmp(0,5,1)
--exponentiation = expSafe
--#else
- exponentiation b e m
-     | b == 1    = b
-     | e == 0    = 1
-@@ -110,7 +89,6 @@ exponentiation b e m
-     | even e    = let p = (exponentiation b (e `div` 2) m) `mod` m
-                    in (p^(2::Integer)) `mod` m
-     | otherwise = (b * exponentiation b (e-1) m) `mod` m
--#endif
- 
- --{-# DEPRECATED exponantiation_rtl_binary "typo in API name it's called exponentiation_rtl_binary #-}
- exponantiation_rtl_binary :: Integer -> Integer -> Integer -> Integer
-@@ -122,17 +100,10 @@ exponantiation = exponentiation
- 
- -- | inverse computes the modular inverse as in g^(-1) mod m
- inverse :: Integer -> Integer -> Maybe Integer
--#if MIN_VERSION_integer_gmp(0,5,1)
--inverse g m
--    | r == 0    = Nothing
--    | otherwise = Just r
--  where r = recipModInteger g m
--#else
- inverse g m
-     | d > 1     = Nothing
-     | otherwise = Just (x `mod` m)
-   where (x,_,d) = gcde_binary g m
--#endif
- 
- -- | Compute the modular inverse of 2 coprime numbers.
- -- This is equivalent to inverse except that the result
-diff --git a/Crypto/Number/Prime.hs b/Crypto/Number/Prime.hs
-index 0cea9da..458c94d 100644
---- a/Crypto/Number/Prime.hs
-+++ b/Crypto/Number/Prime.hs
-@@ -3,9 +3,7 @@
- #ifndef MIN_VERSION_integer_gmp
- #define MIN_VERSION_integer_gmp(a,b,c) 0
- #endif
--#if MIN_VERSION_integer_gmp(0,5,1)
- {-# LANGUAGE MagicHash #-}
--#endif
- -- |
- -- Module      : Crypto.Number.Prime
- -- License     : BSD-style
-@@ -30,12 +28,7 @@ import Crypto.Number.Generate
- import Crypto.Number.Basic (sqrti, gcde_binary)
- import Crypto.Number.ModArithmetic (exponantiation)
- 
--#if MIN_VERSION_integer_gmp(0,5,1)
--import GHC.Integer.GMP.Internals
--import GHC.Base
--#else
- import Data.Bits
--#endif
- 
- -- | returns if the number is probably prime.
- -- first a list of small primes are implicitely tested for divisibility,
-@@ -78,21 +71,11 @@ findPrimeFromWith rng prop !n
- -- | find a prime from a starting point with no specific property.
- findPrimeFrom :: CPRG g => g -> Integer -> (Integer, g)
- findPrimeFrom rng n =
--#if MIN_VERSION_integer_gmp(0,5,1)
--    (nextPrimeInteger n, rng)
--#else
-     findPrimeFromWith rng (\g _ -> (True, g)) n
--#endif
- 
- -- | Miller Rabin algorithm return if the number is probably prime or composite.
- -- the tries parameter is the number of recursion, that determines the accuracy of the test.
- primalityTestMillerRabin :: CPRG g => g -> Int -> Integer -> (Bool, g)
--#if MIN_VERSION_integer_gmp(0,5,1)
--primalityTestMillerRabin rng (I# tries) !n =
--    case testPrimeInteger n tries of
--        0# -> (False, rng)
--        _  -> (True, rng)
--#else
- primalityTestMillerRabin rng tries !n
-     | n <= 3     = error "Miller-Rabin requires tested value to be > 3"
-     | even n     = (False, rng)
-@@ -129,7 +112,6 @@ primalityTestMillerRabin rng tries !n
-                   | x2 == 1   = False
-                   | x2 /= nm1 = loop' ws ((x2*x2) `mod` n) (r+1)
-                   | otherwise = loop ws
--#endif
- 
- {-
-     n < z -> witness to test
-diff --git a/crypto-numbers.cabal b/crypto-numbers.cabal
-index 9610e34..6669d78 100644
---- a/crypto-numbers.cabal
-+++ b/crypto-numbers.cabal
-@@ -15,7 +15,7 @@ Extra-Source-Files:  Tests/*.hs
- 
- Flag integer-gmp
-   Description: Are we using integer-gmp?
--  Default: True
-+  Default: False
- 
- Library
-   Build-Depends:     base >= 4 && < 5
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch b/standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From afdec6c9e66211a0ac8419fffe191b059d1fd00c Mon Sep 17 00:00:00 2001
-From: foo <foo@bar>
-Date: Sun, 22 Sep 2013 17:24:33 +0000
-Subject: [PATCH] fix build with new base
-
----
- Data/Text/IDN/IDNA.chs       |    1 +
- Data/Text/IDN/Punycode.chs   |    1 +
- Data/Text/IDN/StringPrep.chs |    1 +
- 3 files changed, 3 insertions(+)
-
-diff --git a/Data/Text/IDN/IDNA.chs b/Data/Text/IDN/IDNA.chs
-index ed29ee4..dbb4ba5 100644
---- a/Data/Text/IDN/IDNA.chs
-+++ b/Data/Text/IDN/IDNA.chs
-@@ -31,6 +31,7 @@ import Foreign
- import Foreign.C
- 
- import Data.Text.IDN.Internal
-+import System.IO.Unsafe
- 
- #include <idna.h>
- #include <idn-free.h>
-diff --git a/Data/Text/IDN/Punycode.chs b/Data/Text/IDN/Punycode.chs
-index 24b5fa6..4e62555 100644
---- a/Data/Text/IDN/Punycode.chs
-+++ b/Data/Text/IDN/Punycode.chs
-@@ -32,6 +32,7 @@ import Data.List (unfoldr)
- import qualified Data.ByteString as B
- import qualified Data.Text as T
- 
-+import System.IO.Unsafe
- import Foreign
- import Foreign.C
- 
-diff --git a/Data/Text/IDN/StringPrep.chs b/Data/Text/IDN/StringPrep.chs
-index 752dc9e..5e9fd84 100644
---- a/Data/Text/IDN/StringPrep.chs
-+++ b/Data/Text/IDN/StringPrep.chs
-@@ -39,6 +39,7 @@ import qualified Data.ByteString as B
- import qualified Data.Text as T
- import qualified Data.Text.Encoding as TE
- 
-+import System.IO.Unsafe
- import Foreign
- import Foreign.C
- 
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/gsasl_0.3.5-0001-link-with-libgsasl.patch b/standalone/android/haskell-patches/gsasl_0.3.5-0001-link-with-libgsasl.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/gsasl_0.3.5-0001-link-with-libgsasl.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From df0f41f92d003f7d59ef927737ffec3a9bd61827 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Tue, 7 May 2013 18:41:01 -0400
-Subject: [PATCH] avoid cabal hell
-
----
- gsasl.cabal |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gsasl.cabal b/gsasl.cabal
-index d991873..c5c2b19 100644
---- a/gsasl.cabal
-+++ b/gsasl.cabal
-@@ -31,7 +31,7 @@ library
-   build-depends:
-       base >= 4.0 && < 5.0
-     , transformers >= 0.2
--    , bytestring >= 0.9
-+    , bytestring >= 0.10.3.0
- 
-   pkgconfig-depends: libgsasl >= 1.1
- 
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/socks_0.4.2_0001-remove-IPv6-stuff.patch b/standalone/android/haskell-patches/socks_0.4.2_0001-remove-IPv6-stuff.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/socks_0.4.2_0001-remove-IPv6-stuff.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From e1a2f80f6bec25921ab645a0aaf1c6422a8917ab Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Mon, 11 Nov 2013 01:06:58 +0000
-Subject: [PATCH] fix
-
----
- Network/Socks5/Command.hs  |    8 +-------
- Network/Socks5/Conf.hs     |    1 -
- Network/Socks5/Lowlevel.hs |    1 -
- Network/Socks5/Types.hs    |   18 +-----------------
- Network/Socks5/Wire.hs     |    2 --
- 5 files changed, 2 insertions(+), 28 deletions(-)
-
-diff --git a/Network/Socks5/Command.hs b/Network/Socks5/Command.hs
-index db95fbd..fdba5ec 100644
---- a/Network/Socks5/Command.hs
-+++ b/Network/Socks5/Command.hs
-@@ -13,7 +13,6 @@ module Network.Socks5.Command
-     , Connect(..)
-     , Command(..)
-     , connectIPV4
--    , connectIPV6
-     , connectDomainName
-     -- * lowlevel interface
-     , rpc
-@@ -29,7 +28,7 @@ import qualified Data.ByteString as B
- import qualified Data.ByteString.Char8 as BC
- import Data.Serialize
- 
--import Network.Socket (Socket, PortNumber, HostAddress, HostAddress6)
-+import Network.Socket (Socket, PortNumber, HostAddress)
- import Network.Socket.ByteString
- 
- import Network.Socks5.Types
-@@ -65,11 +64,6 @@ connectIPV4 socket hostaddr port = onReply <$> rpc_ socket (Connect $ SocksAddre
-     where onReply (SocksAddrIPV4 h, p) = (h, p)
-           onReply _                    = error "ipv4 requested, got something different"
- 
--connectIPV6 :: Socket -> HostAddress6 -> PortNumber -> IO (HostAddress6, PortNumber)
--connectIPV6 socket hostaddr6 port = onReply <$> rpc_ socket (Connect $ SocksAddress (SocksAddrIPV6 hostaddr6) port)
--    where onReply (SocksAddrIPV6 h, p) = (h, p)
--          onReply _                    = error "ipv6 requested, got something different"
--
- -- TODO: FQDN should only be ascii, maybe putting a "fqdn" data type
- -- in front to make sure and make the BC.pack safe.
- connectDomainName :: Socket -> String -> PortNumber -> IO (SocksHostAddress, PortNumber)
-diff --git a/Network/Socks5/Conf.hs b/Network/Socks5/Conf.hs
-index c29ff7b..007d382 100644
---- a/Network/Socks5/Conf.hs
-+++ b/Network/Socks5/Conf.hs
-@@ -47,5 +47,4 @@ defaultSocksConfFromSockAddr sockaddr = SocksConf server SocksVer5
-     where server       = SocksAddress haddr port
-           (haddr,port) = case sockaddr of
-                              SockAddrInet p h      -> (SocksAddrIPV4 h, p)
--                             SockAddrInet6 p _ h _ -> (SocksAddrIPV6 h, p)
-                              _                     -> error "unsupported unix sockaddr type"
-diff --git a/Network/Socks5/Lowlevel.hs b/Network/Socks5/Lowlevel.hs
-index c10d9b9..2c3d59c 100644
---- a/Network/Socks5/Lowlevel.hs
-+++ b/Network/Socks5/Lowlevel.hs
-@@ -17,7 +17,6 @@ resolveToSockAddr :: SocksAddress -> IO SockAddr
- resolveToSockAddr (SocksAddress sockHostAddr port) =
-     case sockHostAddr of
-         SocksAddrIPV4 ha       -> return $ SockAddrInet port ha
--        SocksAddrIPV6 ha6      -> return $ SockAddrInet6 port 0 ha6 0
-         SocksAddrDomainName bs -> do he <- getHostByName (BC.unpack bs)
-                                      return $ SockAddrInet port (hostAddress he)
- 
-diff --git a/Network/Socks5/Types.hs b/Network/Socks5/Types.hs
-index 7fbec25..17c7c83 100644
---- a/Network/Socks5/Types.hs
-+++ b/Network/Socks5/Types.hs
-@@ -19,7 +19,7 @@ module Network.Socks5.Types
- import Data.ByteString (ByteString)
- import Data.Word
- import Data.Data
--import Network.Socket (HostAddress, HostAddress6, PortNumber)
-+import Network.Socket (HostAddress, PortNumber)
- import Control.Exception
- import qualified Data.ByteString.Char8 as BC
- import Numeric (showHex)
-@@ -53,12 +53,10 @@ data SocksMethod =
- data SocksHostAddress =
-       SocksAddrIPV4 !HostAddress
-     | SocksAddrDomainName !ByteString
--    | SocksAddrIPV6 !HostAddress6
-     deriving (Eq,Ord)
- 
- instance Show SocksHostAddress where
-     show (SocksAddrIPV4 ha)       = "SocksAddrIPV4(" ++ showHostAddress ha ++ ")"
--    show (SocksAddrIPV6 ha6)      = "SocksAddrIPV6(" ++ showHostAddress6 ha6 ++ ")"
-     show (SocksAddrDomainName dn) = "SocksAddrDomainName(" ++ BC.unpack dn ++ ")"
- 
- -- | Converts a HostAddress to a String in dot-decimal notation
-@@ -69,20 +67,6 @@ showHostAddress num = concat [show q1, ".", show q2, ".", show q3, ".", show q4]
-         (num''',q3) = num'' `quotRem` 256
-         (_,q4)      = num''' `quotRem` 256
- 
---- | Converts a IPv6 HostAddress6 to standard hex notation
--showHostAddress6 :: HostAddress6 -> String
--showHostAddress6 (a,b,c,d) =
--    (concat . intersperse ":" . map (flip showHex ""))
--        [p1,p2,p3,p4,p5,p6,p7,p8]
--    where (a',p2) = a `quotRem` 65536
--          (_,p1)  = a' `quotRem` 65536
--          (b',p4) = b `quotRem` 65536
--          (_,p3)  = b' `quotRem` 65536
--          (c',p6) = c `quotRem` 65536
--          (_,p5)  = c' `quotRem` 65536
--          (d',p8) = d `quotRem` 65536
--          (_,p7)  = d' `quotRem` 65536
--
- -- | Describe a Socket address on the SOCKS protocol
- data SocksAddress = SocksAddress !SocksHostAddress !PortNumber
-     deriving (Show,Eq,Ord)
-diff --git a/Network/Socks5/Wire.hs b/Network/Socks5/Wire.hs
-index 10bd262..a30f32e 100644
---- a/Network/Socks5/Wire.hs
-+++ b/Network/Socks5/Wire.hs
-@@ -46,12 +46,10 @@ data SocksResponse = SocksResponse
- 
- getAddr 1 = SocksAddrIPV4 <$> getWord32host
- getAddr 3 = SocksAddrDomainName <$> (getWord8 >>= getByteString . fromIntegral)
--getAddr 4 = SocksAddrIPV6 <$> (liftM4 (,,,) getWord32host getWord32host getWord32host getWord32host)
- getAddr n = error ("cannot get unknown socket address type: " ++ show n)
- 
- putAddr (SocksAddrIPV4 h)         = putWord8 1 >> putWord32host h
- putAddr (SocksAddrDomainName b)   = putWord8 3 >> putWord8 (fromIntegral $ B.length b) >> putByteString b
--putAddr (SocksAddrIPV6 (a,b,c,d)) = putWord8 4 >> mapM_ putWord32host [a,b,c,d]
- 
- getSocksRequest 5 = do
-     cmd <- toEnum . fromIntegral <$> getWord8
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/stm-chans_cross-build.patch b/standalone/android/haskell-patches/stm-chans_cross-build.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/stm-chans_cross-build.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From c1b166ad1dbed80f7eed7b9c1b2dc5c668eeb8fc Mon Sep 17 00:00:00 2001
-From: androidbuilder <androidbuilder@example.com>
-Date: Fri, 18 Oct 2013 23:28:56 +0000
-Subject: [PATCH] cross build
-
----
- stm-chans.cabal |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/stm-chans.cabal b/stm-chans.cabal
-index 89d4780..2119a74 100644
---- a/stm-chans.cabal
-+++ b/stm-chans.cabal
-@@ -6,7 +6,7 @@
- -- and source-repository:.
- Cabal-Version:  >= 1.6
- -- We need a custom build in order to define __HADDOCK__
--Build-Type:     Custom
-+Build-Type:     Simple
- 
- Name:           stm-chans
- Version:        3.0.0
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/system-filepath_cross-build.patch b/standalone/android/haskell-patches/system-filepath_cross-build.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/system-filepath_cross-build.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 0e728d5b049224394908d793c73902a8c981e636 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Mon, 26 May 2014 01:04:40 +0000
-Subject: [PATCH] fix cross build
-
----
- system-filepath.cabal |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/system-filepath.cabal b/system-filepath.cabal
-index d6aa726..f4e5e0f 100644
---- a/system-filepath.cabal
-+++ b/system-filepath.cabal
-@@ -6,7 +6,7 @@ license-file: license.txt
- author: John Millikin <jmillikin@gmail.com>
- maintainer: John Millikin <jmillikin@gmail.com>
- copyright: John Millikin 2010-2012
--build-type: Custom
-+build-type: Simple
- cabal-version: >= 1.8
- category: System
- stability: experimental
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/unbounded-delays_crossbuild.patch b/standalone/android/haskell-patches/unbounded-delays_crossbuild.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/unbounded-delays_crossbuild.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 0ad071f80ee72e7b8ca5b0b70dfae5bbf8677969 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Wed, 12 Mar 2014 12:18:17 -0400
-Subject: [PATCH] cross build
-
----
- unbounded-delays.cabal |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/unbounded-delays.cabal b/unbounded-delays.cabal
-index 76d0a50..0f27569 100644
---- a/unbounded-delays.cabal
-+++ b/unbounded-delays.cabal
-@@ -1,7 +1,7 @@
- name:          unbounded-delays
- version:       0.1.0.6
- cabal-version: >= 1.6
--build-type:    Custom
-+build-type:    Simple
- author:        Bas van Dijk <v.dijk.bas@gmail.com>
-                Roel van Dijk <vandijk.roel@gmail.com>
- maintainer:    Bas van Dijk <v.dijk.bas@gmail.com>
--- 
-1.7.10.4
-
diff --git a/standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch b/standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch
deleted file mode 100644
--- a/standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From db9eb179885874af342bb2c3adef7185496ba1f1 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Wed, 15 Oct 2014 16:37:32 +0000
-Subject: [PATCH] hack for bionic
-
----
- Data/UnixTime/Types.hsc | 12 ------------
- cbits/conv.c            |  2 +-
- 2 files changed, 1 insertion(+), 13 deletions(-)
-
-diff --git a/Data/UnixTime/Types.hsc b/Data/UnixTime/Types.hsc
-index d30f39b..ec7ca4c 100644
---- a/Data/UnixTime/Types.hsc
-+++ b/Data/UnixTime/Types.hsc
-@@ -9,8 +9,6 @@ import Foreign.Storable
- 
- #include <sys/time.h>
- 
--#let alignment t = "%lu", (unsigned long)offsetof(struct {char x__; t (y__); }, y__)
--
- -- |
- -- Data structure for Unix time.
- data UnixTime = UnixTime {
-@@ -20,16 +18,6 @@ data UnixTime = UnixTime {
-   , utMicroSeconds :: {-# UNPACK #-} !Int32
-   } deriving (Eq,Ord,Show)
- 
--instance Storable UnixTime where
--    sizeOf _    = (#size struct timeval)
--    alignment _ = (#alignment struct timeval)
--    peek ptr    = UnixTime
--            <$> (#peek struct timeval, tv_sec)  ptr
--            <*> (#peek struct timeval, tv_usec) ptr
--    poke ptr ut = do
--            (#poke struct timeval, tv_sec)  ptr (utSeconds ut)
--            (#poke struct timeval, tv_usec) ptr (utMicroSeconds ut)
--
- -- |
- -- Format of the strptime()/strftime() style.
- type Format = ByteString
-diff --git a/cbits/conv.c b/cbits/conv.c
-index ec31fef..b7bc0f9 100644
---- a/cbits/conv.c
-+++ b/cbits/conv.c
-@@ -96,7 +96,7 @@ time_t c_parse_unix_time_gmt(char *fmt, char *src) {
- #else
-     strptime(src, fmt, &dst);
- #endif
--    return timegm(&dst);
-+    return NULL; /* timegm(&dst); (not in Bionic) */
- }
- 
- size_t c_format_unix_time(char *fmt, time_t src, char* dst, int siz) {
--- 
-2.1.1
-
diff --git a/standalone/android/icons/drawable-hdpi/ic_launcher.png b/standalone/android/icons/drawable-hdpi/ic_launcher.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable-hdpi/ic_launcher.png and /dev/null differ
diff --git a/standalone/android/icons/drawable-hdpi/ic_stat_service_notification_icon.png b/standalone/android/icons/drawable-hdpi/ic_stat_service_notification_icon.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable-hdpi/ic_stat_service_notification_icon.png and /dev/null differ
diff --git a/standalone/android/icons/drawable-ldpi/ic_launcher.png b/standalone/android/icons/drawable-ldpi/ic_launcher.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable-ldpi/ic_launcher.png and /dev/null differ
diff --git a/standalone/android/icons/drawable-ldpi/ic_stat_service_notification_icon.png b/standalone/android/icons/drawable-ldpi/ic_stat_service_notification_icon.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable-ldpi/ic_stat_service_notification_icon.png and /dev/null differ
diff --git a/standalone/android/icons/drawable-mdpi/ic_launcher.png b/standalone/android/icons/drawable-mdpi/ic_launcher.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable-mdpi/ic_launcher.png and /dev/null differ
diff --git a/standalone/android/icons/drawable-mdpi/ic_stat_service_notification_icon.png b/standalone/android/icons/drawable-mdpi/ic_stat_service_notification_icon.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable-mdpi/ic_stat_service_notification_icon.png and /dev/null differ
diff --git a/standalone/android/icons/drawable-xhdpi/ic_launcher.png b/standalone/android/icons/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/standalone/android/icons/drawable/ic_launcher.png b/standalone/android/icons/drawable/ic_launcher.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable/ic_launcher.png and /dev/null differ
diff --git a/standalone/android/icons/drawable/ic_stat_service_notification_icon.png b/standalone/android/icons/drawable/ic_stat_service_notification_icon.png
deleted file mode 100644
Binary files a/standalone/android/icons/drawable/ic_stat_service_notification_icon.png and /dev/null differ
diff --git a/standalone/android/install-haskell-packages b/standalone/android/install-haskell-packages
deleted file mode 100644
--- a/standalone/android/install-haskell-packages
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/bash
-# Bootstraps from an empty cabal to all the necessary haskell packages
-# being installed, with the necessary patches to work on Android.
-#
-# You should install ghc-android first.
-#
-# The cabal.config is used to pin the haskell packages to the last
-# versions that have been gotten working. To update, delete the
-# cabal.config, run this script with an empty cabal and fix up the broken
-# patches, and then use cabal freeze to generate a new cabal.config.
-
-set -e
-
-if [ ! -d haskell-patches ]; then
-	cd standalone/android
-fi
-
-setupcabal () {
-	# Some packages fail to install in a non unicode locale.
-	LANG=en_US.UTF-8
-	export LANG
-}
-
-patched () {
-	pkg=$1
-	ver=$2
-	if [ -z "$ver" ]; then
-		ver="$(grep " $pkg " ../cabal.config | cut -d= -f 3 | sed 's/,$//')"
-	fi
-	if [ -z "$ver" ]; then
-		cabal unpack --pristine $pkg
-	else
-		cabal unpack --pristine $pkg-$ver
-	fi
-	cd $pkg*
-	git init
-	git config user.name dummy
-	git config user.email dummy@example.com
-	git add .
-	git commit -m "pre-patched state of $pkg"
-	ln -sf ../../cabal.config
-	for patch in ../../haskell-patches/${pkg}_* ../../../no-th/haskell-patches/${pkg}_*; do
-		if [ -e "$patch" ]; then
-			echo trying $patch
-			if ! patch -p1 < $patch; then
-				echo "failed to apply $patch"
-				echo "please resolve this, replace the patch with a new version, and exit the subshell to continue"
-				$SHELL
-			fi
-		fi
-	done
-	if [ -e config.sub ]; then
-		cp /usr/share/misc/config.sub .
-	fi
-	if [ -e config.guess ]; then
-		cp /usr/share/misc/config.guess .
-	fi
-	cabal install # --force-reinstalls --reinstall
-	rm -f cabal.config
-
-	rm -rf $pkg*
-	cd ..
-}
-
-installgitannexdeps () {
-	pushd ../..
-	ln -sf standalone/android/cabal.config
-	cabal install --only-dependencies --flags="-magicmime -concurrentoutput" "$@" # --force-reinstalls --reinstall
-	rm -f cabal.config
-	popd
-}
-
-install_pkgs () {
-	rm -rf tmp
-	mkdir tmp
-	cd tmp
-cat <<EOF
-EOF
-	patched network
-	patched unix-time
-	patched lifted-base
-	patched zlib
-	patched MissingH
-	patched distributive
-	patched comonad
-	patched iproute
-	patched primitive
-	patched socks
-	patched vector
-	patched stm-chans
-	patched persistent
-	patched profunctors
-	patched skein
-	patched lens
-	patched certificate
-	patched x509-system
-	patched persistent-template
-	patched system-filepath
-	patched optparse-applicative
-	patched wai-app-static
-	patched yesod-routes
-	patched shakespeare
-	patched yesod-core
-	patched yesod-persistent
-	patched yesod-form
-	patched crypto-numbers
-	patched clock
-	patched yesod-auth
-	patched yesod
-	patched process-conduit
-	patched DAV
-	patched yesod-static
-	patched dns
-	patched gnutls
-	patched unbounded-delays
-	patched gnuidn
-	patched network-protocol-xmpp
-	patched uuid
-
-	cd ..
-
-	installgitannexdeps -fAndroid -f-Pairing
-}
-
-cabal update
-setupcabal
-
-# Install packages for host ghc.
-installgitannexdeps
-
-# Install packages for cross ghc, with patches as necessary.
-PATH=$HOME/.ghc/$(cat abiversion)/bin:$HOME/.ghc/$(cat abiversion)/arm-linux-androideabi/bin:$PATH
-cabal update
-install_pkgs
diff --git a/standalone/android/openssh.config.h b/standalone/android/openssh.config.h
deleted file mode 100644
--- a/standalone/android/openssh.config.h
+++ /dev/null
@@ -1,249 +0,0 @@
-#define DISABLE_SHADOW 1
-#define DISABLE_UTMP 1
-#define DISABLE_UTMPX 1
-#define DISABLE_WTMP 1
-#define DISABLE_WTMPX 1
-#define ENABLE_PKCS11 /**/
-#define GETPGRP_VOID 1
-#define GLOB_HAS_ALTDIRFUNC 1
-#define HAS_SHADOW_EXPIRE 1
-#define HAVE_ADDR_IN_UTMP 1
-#define HAVE_ADDR_IN_UTMPX 1
-#define HAVE_ADDR_V6_IN_UTMP 1
-#define HAVE_ADDR_V6_IN_UTMPX 1
-#define HAVE_ASPRINTF 1
-#define HAVE_ATTRIBUTE__NONNULL__ 1
-#define HAVE_BASENAME 1
-#define HAVE_BCOPY 1
-#define HAVE_BN_IS_PRIME_EX 1
-#define HAVE_CLOCK 1
-#define HAVE_CLOCK_T 1
-#define HAVE_CONST_GAI_STRERROR_PROTO 1
-#define HAVE_CONTROL_IN_MSGHDR 1
-#define HAVE_DAEMON 1
-#define HAVE_DECL_GLOB_NOMATCH 1
-#define HAVE_DECL_H_ERRNO 1
-#define HAVE_DECL_MAXSYMLINKS 1
-#define HAVE_DECL_OFFSETOF 1
-#define HAVE_DECL_O_NONBLOCK 1
-#define HAVE_DECL_SHUT_RD 1
-#define HAVE_DECL_WRITEV 1
-#define HAVE_DECL__GETLONG 0
-#define HAVE_DECL__GETSHORT 0
-#define HAVE_DEV_PTMX 1
-#define HAVE_DIRENT_H 1
-#define HAVE_DIRFD 1
-#define HAVE_DIRNAME 1
-#define HAVE_DSA_GENERATE_PARAMETERS_EX 1
-#define HAVE_ENDIAN_H 1
-#define HAVE_ENDUTENT 1
-#define HAVE_ENDUTXENT 1
-#define HAVE_EVP_SHA256 1
-#define HAVE_EXIT_IN_UTMP 1
-#define HAVE_FCHMOD 1
-#define HAVE_FCHOWN 1
-#define HAVE_FCNTL_H 1
-#define HAVE_FEATURES_H 1
-#define HAVE_FREEADDRINFO 1
-#define HAVE_FSBLKCNT_T 1
-#define HAVE_FSFILCNT_T 1
-#define HAVE_GAI_STRERROR 1
-#define HAVE_GETADDRINFO 1
-#define HAVE_GETCWD 1
-#define HAVE_GETNAMEINFO 1
-#define HAVE_GETOPT 1
-#define HAVE_GETOPT_H 1
-#define HAVE_GETPAGESIZE 1
-#define HAVE_GETRLIMIT 1
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_GETTTYENT 1
-#define HAVE_GETUTENT 1
-#define HAVE_GETUTID 1
-#define HAVE_GETUTLINE 1
-#define HAVE_GETUTXENT 1
-#define HAVE_GETUTXID 1
-#define HAVE_GETUTXLINE 1
-#define HAVE_GLOB 1
-#define HAVE_GLOB_H 1
-#define HAVE_HEADER_AD 1
-#define HAVE_HMAC_CTX_INIT 1
-#define HAVE_HOST_IN_UTMP 1
-#define HAVE_HOST_IN_UTMPX 1
-#define HAVE_ID_IN_UTMP 1
-#define HAVE_ID_IN_UTMPX 1
-#define HAVE_INET_ATON 1
-#define HAVE_INET_NTOA 1
-#define HAVE_INET_NTOP 1
-#define HAVE_INT64_T 1
-#define HAVE_INTTYPES_H 1
-#define HAVE_INTXX_T 1
-#define HAVE_IN_ADDR_T 1
-#define HAVE_ISBLANK 1
-#define HAVE_LASTLOG_H 1
-#define HAVE_LIBGEN_H 1
-#define HAVE_LIBNSL 1
-#define HAVE_LIBZ 1
-#define HAVE_LIMITS_H 1
-#define HAVE_LINUX_AUDIT_H 1
-#define HAVE_LINUX_FILTER_H 1
-#define HAVE_LINUX_IF_TUN_H 1
-#define HAVE_LOGOUT 1
-#define HAVE_LOGWTMP 1
-#define HAVE_LONG_DOUBLE 1
-#define HAVE_LONG_LONG 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MEMORY_H 1
-#define HAVE_MKDTEMP 1
-#define HAVE_MMAP 1
-#define HAVE_MODE_T 1
-#define HAVE_NANOSLEEP 1
-#define HAVE_NETDB_H 1
-#define HAVE_OPENSSL 1
-#define HAVE_PATHS_H 1
-#define HAVE_PID_IN_UTMP 1
-#define HAVE_PID_T 1
-#define HAVE_POLL 1
-#define HAVE_POLL_H 1
-#define HAVE_PRCTL 1
-#define HAVE_PROC_PID 1
-#define HAVE_PUTUTLINE 1
-#define HAVE_PUTUTXLINE 1
-#define HAVE_REALPATH 1
-#define HAVE_RECVMSG 1
-#define HAVE_RLIMIT_NPROC /**/
-#define HAVE_RSA_GENERATE_KEY_EX 1
-#define HAVE_RSA_GET_DEFAULT_METHOD 1
-#define HAVE_SA_FAMILY_T 1
-#define HAVE_SENDMSG 1
-#define HAVE_SETEGID 1
-#define HAVE_SETENV 1
-#define HAVE_SETEUID 1
-#define HAVE_SETGROUPS 1
-#define HAVE_SETREGID 1
-#define HAVE_SETRESGID 1
-#define HAVE_SETRESUID 1
-#define HAVE_SETREUID 1
-#define HAVE_SETRLIMIT 1
-#define HAVE_SETSID 1
-#define HAVE_SETUTENT 1
-#define HAVE_SETUTXENT 1
-#define HAVE_SETVBUF 1
-#define HAVE_SHA256_UPDATE 1
-#define HAVE_SIGACTION 1
-#define HAVE_SIGVEC 1
-#define HAVE_SIG_ATOMIC_T 1
-#define HAVE_SIZE_T 1
-#define HAVE_SNPRINTF 1
-#define HAVE_SOCKETPAIR 1
-#define HAVE_SO_PEERCRED 1
-#define HAVE_SSIZE_T 1
-#define HAVE_SS_FAMILY_IN_SS 1
-#define HAVE_STATFS 1
-#define HAVE_STDDEF_H 1
-#define HAVE_STDINT_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRDUP 1
-#define HAVE_STRERROR 1
-#define HAVE_STRFTIME 1
-#define HAVE_STRICT_MKSTEMP 1
-#define HAVE_STRINGS_H 1
-#define HAVE_STRING_H 1
-#define HAVE_STRNLEN 1
-#define HAVE_STRPTIME 1
-#define HAVE_STRSEP 1
-#define HAVE_STRTOLL 1
-#define HAVE_STRTOUL 1
-#define HAVE_STRUCT_ADDRINFO 1
-#define HAVE_STRUCT_IN6_ADDR 1
-#define HAVE_STRUCT_SOCKADDR_IN6 1
-#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
-#define HAVE_STRUCT_SOCKADDR_STORAGE 1
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-#define HAVE_STRUCT_TIMESPEC 1
-#define HAVE_STRUCT_TIMEVAL 1
-#define HAVE_SYSCONF 1
-#define HAVE_SYS_CDEFS_H 1
-#define HAVE_SYS_DIR_H 1
-#define HAVE_SYS_ERRLIST 1
-#define HAVE_SYS_MMAN_H 1
-#define HAVE_SYS_MOUNT_H 1
-#define HAVE_SYS_NERR 1
-#define HAVE_SYS_POLL_H 1
-#define HAVE_SYS_PRCTL_H 1
-#define HAVE_SYS_SELECT_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_SYSMACROS_H 1
-#define HAVE_SYS_TIME_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_UN_H 1
-#define HAVE_TCGETPGRP 1
-#define HAVE_TCSENDBREAK 1
-#define HAVE_TIME 1
-#define HAVE_TIME_H 1
-#define HAVE_TRUNCATE 1
-#define HAVE_TV_IN_UTMP 1
-#define HAVE_TV_IN_UTMPX 1
-#define HAVE_TYPE_IN_UTMP 1
-#define HAVE_TYPE_IN_UTMPX 1
-#define HAVE_UINTXX_T 1
-#define HAVE_UNISTD_H 1
-#define HAVE_UNSETENV 1
-#define HAVE_UNSIGNED_LONG_LONG 1
-#define HAVE_UPDWTMP 1
-#define HAVE_UPDWTMPX 1
-#define HAVE_UTIMES 1
-#define HAVE_UTIME_H 1
-#define HAVE_UTMPNAME 1
-#define HAVE_UTMPXNAME 1
-#define HAVE_UTMP_H 1
-#define HAVE_U_CHAR 1
-#define HAVE_U_INT 1
-#define HAVE_U_INT64_T 1
-#define HAVE_U_INTXX_T 1
-#define HAVE_VASPRINTF 1
-#define HAVE_VA_COPY 1
-#define HAVE_VSNPRINTF 1
-#define HAVE_WAITPID 1
-#define HAVE__GETLONG 1
-#define HAVE__GETSHORT 1
-#define HAVE__RES_EXTERN 1
-#define HAVE___FUNCTION__ 1
-#define HAVE___PROGNAME 1
-#define HAVE___VA_COPY 1
-#define HAVE___func__ 1
-#define IPV4_IN_IPV6 1
-#define LINK_OPNOTSUPP_ERRNO EPERM
-#define LINUX_OOM_ADJUST 1
-#define LOCKED_PASSWD_PREFIX "!"
-#define LOGIN_PROGRAM_FALLBACK "/bin/login"
-#define MISSING_FD_MASK 1
-#define MISSING_HOWMANY 1
-#define OPENSSL_HAS_ECC 1
-#define OPENSSL_PRNG_ONLY 1
-#define PACKAGE_BUGREPORT "openssh-unix-dev@mindrot.org"
-#define PACKAGE_NAME "OpenSSH"
-#define PACKAGE_STRING "OpenSSH Portable"
-#define PACKAGE_TARNAME "openssh"
-#define PACKAGE_URL ""
-#define PACKAGE_VERSION "Portable"
-#define PAM_TTY_KLUDGE 1
-#define SANDBOX_RLIMIT 1
-#define SECCOMP_AUDIT_ARCH AUDIT_ARCH_ARM
-#define SIZEOF_CHAR 1
-#define SIZEOF_INT 4
-#define SIZEOF_LONG_INT 8
-#define SIZEOF_LONG_LONG_INT 8
-#define SIZEOF_SHORT_INT 2
-#define SNPRINTF_CONST const
-#define SPT_TYPE SPT_REUSEARGV
-#define SSH_PRIVSEP_USER "shell"
-#define SSH_TUN_COMPAT_AF 1
-#define SSH_TUN_LINUX 1
-#define SSH_TUN_PREPEND_AF 1
-#define STDC_HEADERS 1
-#define USER_PATH "/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin"
-#define XAUTH_PATH "/usr/bin/xauth"
-#define _PATH_BTMP "/var/log/btmp"
-#define _PATH_PASSWD_PROG "/usr/bin/passwd"
-#define _PATH_SSH_PIDDIR "/var/run"
-#define ANDROID
diff --git a/standalone/android/openssh.patch b/standalone/android/openssh.patch
deleted file mode 100644
--- a/standalone/android/openssh.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-diff --git a/auth.c b/auth.c
-index 6623e0f..dd10253 100644
---- a/auth.c
-+++ b/auth.c
-@@ -337,7 +337,7 @@ expand_authorized_keys(const char *filename, struct passwd *pw)
- 	char *file, ret[MAXPATHLEN];
- 	int i;
- 
--	file = percent_expand(filename, "h", pw->pw_dir,
-+	file = percent_expand(filename, "h", _PATH_ROOT_HOME_PREFIX,
- 	    "u", pw->pw_name, (char *)NULL);
- 
- 	/*
-@@ -347,7 +347,7 @@ expand_authorized_keys(const char *filename, struct passwd *pw)
- 	if (*file == '/')
- 		return (file);
- 
--	i = snprintf(ret, sizeof(ret), "%s/%s", pw->pw_dir, file);
-+	i = snprintf(ret, sizeof(ret), "%s/%s", _PATH_ROOT_HOME_PREFIX, file);
- 	if (i < 0 || (size_t)i >= sizeof(ret))
- 		fatal("expand_authorized_keys: path too long");
- 	xfree(file);
-@@ -436,7 +436,7 @@ secure_filename(FILE *f, const char *file, struct passwd *pw,
- 		    strerror(errno));
- 		return -1;
- 	}
--	if (realpath(pw->pw_dir, homedir) != NULL)
-+	if (realpath(_PATH_ROOT_HOME_PREFIX, homedir) != NULL)
- 		comparehome = 1;
- 
- 	/* check the open file to avoid races */
-diff --git a/authfile.c b/authfile.c
-index 7dd4496..00462e9 100644
---- a/authfile.c
-+++ b/authfile.c
-@@ -613,6 +613,7 @@ int
- key_perm_ok(int fd, const char *filename)
- {
- 	struct stat st;
-+	return 1; /* check doesn't make sense on android */
- 
- 	if (fstat(fd, &st) < 0)
- 		return 0;
-diff --git a/misc.c b/misc.c
-index 0bf2db6..4327d03 100644
---- a/misc.c
-+++ b/misc.c
-@@ -25,6 +25,7 @@
-  */
- 
- #include "includes.h"
-+#include "pathnames.h"
- 
- #include <sys/types.h>
- #include <sys/ioctl.h>
-@@ -538,12 +539,13 @@ tilde_expand_filename(const char *filename, uid_t uid)
- 	} else if ((pw = getpwuid(uid)) == NULL)	/* ~/path */
- 		fatal("tilde_expand_filename: No such uid %ld", (long)uid);
- 
--	if (strlcpy(ret, pw->pw_dir, sizeof(ret)) >= sizeof(ret))
-+	char *pw_dir=_PATH_ROOT_HOME_PREFIX;
-+	if (strlcpy(ret, pw_dir, sizeof(ret)) >= sizeof(ret))
- 		fatal("tilde_expand_filename: Path too long");
- 
- 	/* Make sure directory has a trailing '/' */
--	len = strlen(pw->pw_dir);
--	if ((len == 0 || pw->pw_dir[len - 1] != '/') &&
-+	len = strlen(pw_dir);
-+	if ((len == 0 || pw_dir[len - 1] != '/') &&
- 	    strlcat(ret, "/", sizeof(ret)) >= sizeof(ret))
- 		fatal("tilde_expand_filename: Path too long");
- 
-diff --git a/openbsd-compat/getrrsetbyname.c b/openbsd-compat/getrrsetbyname.c
-index d2bea21..5b5d599 100644
---- a/openbsd-compat/getrrsetbyname.c
-+++ b/openbsd-compat/getrrsetbyname.c
-@@ -56,8 +56,7 @@
- #include <arpa/inet.h>
- 
- #include "getrrsetbyname.h"
--#include "nameser.h"
--#include "nameser_compat.h"
-+#include "arpa/nameser.h"
- 
- #if defined(HAVE_DECL_H_ERRNO) && !HAVE_DECL_H_ERRNO
- extern int h_errno;
-diff --git a/pathnames.h b/pathnames.h
-index b7b9d91..3c10b11 100644
---- a/pathnames.h
-+++ b/pathnames.h
-@@ -67,7 +67,7 @@
- #endif
- 
- #ifndef _PATH_ROOT_HOME_PREFIX
--#define _PATH_ROOT_HOME_PREFIX	"/data"
-+#define _PATH_ROOT_HOME_PREFIX	getenv("HOME")
- #endif
- 
- /*
-diff --git a/readconf.c b/readconf.c
-index 097bb05..dcbc008 100644
---- a/readconf.c
-+++ b/readconf.c
-@@ -1085,7 +1085,7 @@ read_config_file(const char *filename, const char *host, Options *options,
- 	if ((f = fopen(filename, "r")) == NULL)
- 		return 0;
- 
--	if (checkperm) {
-+	if (checkperm && 0) {
- 		struct stat sb;
- 
- 		if (fstat(fileno(f), &sb) == -1)
-diff --git a/ssh-add.c b/ssh-add.c
-index 738644d..f6fce4a 100644
---- a/ssh-add.c
-+++ b/ssh-add.c
-@@ -471,7 +471,7 @@ main(int argc, char **argv)
- 		}
- 
- 		for (i = 0; default_files[i]; i++) {
--			snprintf(buf, sizeof(buf), "%s/%s", pw->pw_dir,
-+			snprintf(buf, sizeof(buf), "%s/%s", _PATH_ROOT_HOME_PREFIX,
- 			    default_files[i]);
- 			if (stat(buf, &st) < 0)
- 				continue;
-diff --git a/ssh-keygen.c b/ssh-keygen.c
-index 4baf7df..ef8bb25 100644
---- a/ssh-keygen.c
-+++ b/ssh-keygen.c
-@@ -224,7 +224,7 @@ ask_filename(struct passwd *pw, const char *prompt)
- 		}
- 	}
- 	snprintf(identity_file, sizeof(identity_file), "%s/%s",
--	    strcmp(pw->pw_dir, "/") ? pw->pw_dir : _PATH_ROOT_HOME_PREFIX, name);
-+	    _PATH_ROOT_HOME_PREFIX, name);
- 	fprintf(stderr, "%s (%s): ", prompt, identity_file);
- 	if (fgets(buf, sizeof(buf), stdin) == NULL)
- 		exit(1);
-@@ -2268,7 +2268,7 @@ main(int argc, char **argv)
- 
- 	/* Create ~/.ssh directory if it doesn't already exist. */
- 	snprintf(dotsshdir, sizeof dotsshdir, "%s/%s",
--	    strcmp(pw->pw_dir, "/") ? pw->pw_dir : _PATH_ROOT_HOME_PREFIX,
-+	    _PATH_ROOT_HOME_PREFIX,
- 	    _PATH_SSH_USER_DIR);
- 	if (strstr(identity_file, dotsshdir) != NULL) {
- 		if (stat(dotsshdir, &st) < 0) {
-diff --git a/ssh.c b/ssh.c
-index 898e966..ef6c858 100644
---- a/ssh.c
-+++ b/ssh.c
-@@ -703,7 +703,7 @@ main(int ac, char **av)
- 			fatal("Can't open user config file %.100s: "
- 			    "%.100s", config, strerror(errno));
- 	} else {
--		r = snprintf(buf, sizeof buf, "%s/%s", pw->pw_dir,
-+		r = snprintf(buf, sizeof buf, "%s/%s", _PATH_ROOT_HOME_PREFIX,
- 		    _PATH_SSH_USER_CONFFILE);
- 		if (r > 0 && (size_t)r < sizeof(buf))
- 			(void)read_config_file(buf, host, &options, 1);
-@@ -748,7 +748,7 @@ main(int ac, char **av)
- 	if (options.local_command != NULL) {
- 		debug3("expanding LocalCommand: %s", options.local_command);
- 		cp = options.local_command;
--		options.local_command = percent_expand(cp, "d", pw->pw_dir,
-+		options.local_command = percent_expand(cp, "d", _PATH_ROOT_HOME_PREFIX,
- 		    "h", host, "l", thishost, "n", host_arg, "r", options.user,
- 		    "p", portstr, "u", pw->pw_name, "L", shorthost,
- 		    (char *)NULL);
-@@ -888,7 +888,7 @@ main(int ac, char **av)
- 	 */
- 	if (config == NULL) {
- 		r = snprintf(buf, sizeof buf, "%s/%s",
--		    strcmp(pw->pw_dir, "/") ? pw->pw_dir : _PATH_ROOT_HOME_PREFIX,
-+		    _PATH_ROOT_HOME_PREFIX,
- 		    _PATH_SSH_USER_DIR);
- 		if (r > 0 && (size_t)r < sizeof(buf) && stat(buf, &st) < 0) {
- #ifdef WITH_SELINUX
-@@ -1532,7 +1532,7 @@ load_public_identity_files(void)
- 	if ((pw = getpwuid(original_real_uid)) == NULL)
- 		fatal("load_public_identity_files: getpwuid failed");
- 	pwname = xstrdup(pw->pw_name);
--	pwdir = xstrdup(pw->pw_dir);
-+	pwdir = xstrdup(_PATH_ROOT_HOME_PREFIX);
- 	if (gethostname(thishost, sizeof(thishost)) == -1)
- 		fatal("load_public_identity_files: gethostname: %s",
- 		    strerror(errno));
-diff --git a/uidswap.c b/uidswap.c
-index bc6194e..5cbf5d1 100644
---- a/uidswap.c
-+++ b/uidswap.c
-@@ -28,7 +28,6 @@
- #include "xmalloc.h"
- 
- #ifdef ANDROID
--#include <private/android_filesystem_config.h>
- #include <linux/capability.h>
- #include <linux/prctl.h>
- #endif
-@@ -230,7 +229,7 @@ permanently_set_uid(struct passwd *pw)
- 	debug("permanently_set_uid: %u/%u", (u_int)pw->pw_uid,
- 	    (u_int)pw->pw_gid);
- 
--#ifdef ANDROID
-+#if 0
- 	if (pw->pw_uid == AID_SHELL) {
- 		prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);
- 
-@@ -317,7 +316,7 @@ permanently_set_uid(struct passwd *pw)
- 		    (u_int)pw->pw_uid);
- 	}
- 
--#ifdef ANDROID
-+#if 0
- 	if (pw->pw_uid == AID_SHELL) {
- 		/* set CAP_SYS_BOOT capability, so "adb reboot" will succeed */
- 		header.version = _LINUX_CAPABILITY_VERSION;
diff --git a/standalone/android/rsync.patch b/standalone/android/rsync.patch
deleted file mode 100644
--- a/standalone/android/rsync.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From f91df535053958600d57f9df78d9ce84c8718655 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Wed, 13 Feb 2013 15:51:40 -0400
-Subject: [PATCH] android portability
-
----
- authenticate.c |    3 ++-
- batch.c        |    2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/authenticate.c b/authenticate.c
-index 7650377..626dec6 100644
---- a/authenticate.c
-+++ b/authenticate.c
-@@ -296,7 +296,8 @@ void auth_client(int fd, const char *user, const char *challenge)
-                  *
-                  * OpenBSD has a readpassphrase() that might be more suitable.
-                  */
--		pass = getpass("Password: ");
-+		/*pass = getpass("Password: "); */
-+		exit(1);
- 	}
- 
- 	if (!pass)
-diff --git a/batch.c b/batch.c
-index a3e9dca..ee31532 100644
---- a/batch.c
-+++ b/batch.c
-@@ -221,7 +221,7 @@ void write_batch_shell_file(int argc, char *argv[], int file_arg_cnt)
- 	stringjoin(filename, sizeof filename,
- 		   batch_name, ".sh", NULL);
- 	fd = do_open(filename, O_WRONLY | O_CREAT | O_TRUNC,
--		     S_IRUSR | S_IWUSR | S_IEXEC);
-+		     S_IRUSR | S_IWUSR);
- 	if (fd < 0) {
- 		rsyserr(FERROR, errno, "Batch file %s open error",
- 			filename);
--- 
-1.7.10.4
-
diff --git a/standalone/android/runshell b/standalone/android/runshell
deleted file mode 100644
--- a/standalone/android/runshell
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/system/bin/sh
-# This is runs a shell in an environment configured for git-annex.
-# Nearly the only command that can be used in here is busybox!
-# lib.start.so will run us in the root of our app directory
-base=$(./busybox pwd)
-cmd=$base/busybox
-
-set -e
-
-prep () {
-	# Cannot rely on Android providing a sane HOME
-	HOME="/sdcard/git-annex.home"
-	export HOME
-}
-
-buildtree () {
-	$cmd echo "Installation starting to $base"
-	$cmd cat "lib/lib.version.so"
-
-	if $cmd test -e "$base/bin"; then
-		$cmd mv "$base/bin" "$base/bin.old"
-	fi
-	$cmd mkdir -p "$base/bin"
-
-	for prog in busybox git-annex git-shell git-upload-pack git gpg rsync ssh ssh-keygen; do
-		$cmd echo "installing $prog"
-		if $cmd test -e "$base/bin/$prog"; then
-			$cmd rm -f "$base/bin/$prog"
-		fi
-		$cmd ln -s "$base/lib/lib.$prog.so" "$base/bin/$prog"
-	done
-
-	$cmd --install -s $base/bin
-
-	$cmd rm -rf "$base/bin.old"
-
-	$cmd tar zxf $base/lib/lib.git.tar.gz.so
-	for prog in git git-shell git-upload-pack; do
-		for link in $($cmd cat "$base/links/$prog"); do
-			$cmd echo "linking $link to $prog"
-			if $cmd test -e "$base/$link"; then
-				$cmd rm -f "$base/$link"
-			fi
-			$cmd ln -s "$base/bin/$prog" "$base/$link"
-		done
-		$cmd rm -f "$base/links/$prog"
-	done
-
-	$cmd mkdir -p "$base/templates"
-	$cmd mkdir -p "$base/tmp"
-
-	$cmd echo "#!/system/bin/sh" > "$base/runshell"
-	$cmd echo "exec $base/lib/lib.start.so" >> "$base/runshell"
-	$cmd chmod 755 runshell
-
-	$cmd cat "$base/lib/lib.trustedkeys.so" > "$base/bin/trustedkeys.gpg"
-	$cmd cat "$base/lib/lib.version.so" > "$base/installed-version"
-	$cmd echo "Installation complete"
-}
-
-install () {
-	if ! $cmd mkdir -p "$HOME"; then
-		$cmd echo "mkdir of $HOME failed!"
-	fi
-	if $cmd test ! -e "$base/bin/git-annex"; then
-		if ! buildtree > $HOME/git-annex-install.log 2>&1; then
-			$cmd echo "Installation failed! Please report a bug and attach $HOME/git-annex-install.log"
-			$cmd sh
-		fi
-	elif $cmd test ! -e "$base/installed-version" || ! $cmd cmp "$base/installed-version" "$base/lib/lib.version.so" >/dev/null; then
-		if ! buildtree > $HOME/git-annex-install.log 2>&1; then
-			$cmd echo "Upgrade failed! Please report a bug and attach $HOME/git-annex-install.log"
-		fi
-	fi
-}
-
-run () {
-	PATH="$base/bin:$PATH"
-	export PATH
-	
-	ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH"
-	export ORIG_GIT_EXEC_PATH
-	GIT_EXEC_PATH=$base/libexec/git-core
-	export GIT_EXEC_PATH
-	
-	ORIG_GIT_TEMPLATE_DIR="$GIT_TEMPLATE_DIR"
-	export ORIG_GIT_TEMPLATE_DIR
-	GIT_TEMPLATE_DIR="$base/templates"
-	export GIT_TEMPLATE_DIR
-
-	# Indicate which variables were exported above.
-	GIT_ANNEX_STANDLONE_ENV="GIT_EXEC_PATH GIT_TEMPLATE_DIR"
-	export GIT_ANNEX_STANDLONE_ENV
-	
-	# This is a temporary directory on a non-crippled filesystem.
-	# Needs to be as short a path as possible, for ssh sockets.
-	GIT_ANNEX_TMP_DIR=$base/tmp
-	export GIT_ANNEX_TMP_DIR
-	# /tmp probably doesn't exist, so also use it as TMPDIR
-	TMPDIR=$GIT_ANNEX_TMP_DIR
-	export TMPDIR
-
-	if $cmd test ! -e "$HOME/.gitconfig"; then
-		git config --global user.email "git-annex@android"
-		git config --global user.name "android"
-	fi
-
-	if $cmd test "$1"; then
-		cmd="$1"
-		shift 1
-		exec "$cmd" "$@"
-	else
-		# As good a start point as any.
-		cd "$HOME"
-
-		/system/bin/sh
-	fi
-}
-
-if $cmd test -n "$MKFIFO"; then
-	# because java is insane
-	$cmd mkfifo "$MKFIFO"
-else
-	if ! prep; then
-		$cmd echo "prep failed. Please report a bug."
-		read line
-	fi
-	if ! install; then
-		$cmd echo "install failed. Please report a bug."
-		read line
-	fi
-	run
-fi
diff --git a/standalone/android/start.c b/standalone/android/start.c
deleted file mode 100644
--- a/standalone/android/start.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Installed as lib.start.so, this bootstraps a working busybox and uses
- * it to run lib.runshell.so. */
-
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-void chopdir (char *s) {
-	char *p=strrchr(s, '/');
-	if (p == NULL) {
-		fprintf(stderr, "cannot find directory in %s", s);
-		exit(1);
-	}
-	p[0] = '\0';
-}
-
-main () {
-	char buf[1024];
-	char *p;
-	struct stat st_buf;
-
-	/* Get something like /data/data/ga.androidterm/lib/lib.start.so */
-	int n=readlink("/proc/self/exe", buf, 1023);
-	if (n < 1) {
-		fprintf(stderr, "failed to find own name");
-		exit(1);
-	}
-	buf[n] = '\0';
-
-	/* Change directory to something like /data/data/ga.androidterm */
-	chopdir(buf);
-	chopdir(buf);
-	if (chdir(buf) != 0) {
-		perror("chdir");
-		exit(1);
-	}
-
-	if (stat("lib/lib.busybox.so", &st_buf) != 0) {
-		/* TODO my lib dir should be in LD_LIBRARY_PATH; check that */
-		fprintf(stderr, "Falling back to hardcoded app location; cannot find expected files in %s\n", buf);
-		if (chdir("/data/data/ga.androidterm") != 0) {
-			perror("chdir");
-			exit(1);
-		}
-	}
-
-	/* If this is the first run, set up busybox symlink,
-	 * which allows busybox to run. */
-	if (stat("busybox", &st_buf) != 0) {
-		if (symlink("lib/lib.busybox.so", "busybox") != 0) {
-			/* Just in case! */
-			if (link("lib/lib.busybox.so", "busybox") != 0) {
-				perror("link busybox");
-				exit(1);
-			}
-		}
-	}
-
-	execl("./busybox", "./busybox", "sh", "lib/lib.runshell.so", NULL);
-	perror("error running busybox sh");
-}
diff --git a/standalone/android/term.patch b/standalone/android/term.patch
deleted file mode 100644
--- a/standalone/android/term.patch
+++ /dev/null
@@ -1,598 +0,0 @@
-diff --git a/AndroidManifest.xml b/AndroidManifest.xml
-index b0e866a..1ab8515 100644
---- a/AndroidManifest.xml
-+++ b/AndroidManifest.xml
-@@ -7,6 +7,7 @@
-     <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
-     <uses-permission android:name="android.permission.INTERNET" />
-     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-+    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
-     <uses-permission android:name="android.permission.WAKE_LOCK" />
-     <permission android:name="jackpal.androidterm.permission.RUN_SCRIPT"
-                 android:label="@string/perm_run_script"
-diff --git a/examples/widget/src/jackpal/androidterm/sample/telnet/TermActivity.java b/examples/widget/src/jackpal/androidterm/sample/telnet/TermActivity.java
-index f6952f0..1a8df8f 100644
---- a/examples/widget/src/jackpal/androidterm/sample/telnet/TermActivity.java
-+++ b/examples/widget/src/jackpal/androidterm/sample/telnet/TermActivity.java
-@@ -166,7 +166,7 @@ public class TermActivity extends Activity
-         /* ... create a process ... */
-         String execPath = LaunchActivity.getDataDir(this) + "/bin/execpty";
-         ProcessBuilder execBuild =
--                new ProcessBuilder(execPath, "/system/bin/sh", "-");
-+                new ProcessBuilder(execPath, "/data/data/ga.androidterm/lib/lib.start.so", "");
-         execBuild.redirectErrorStream(true);
-         Process exec = null;
-         try {
-diff --git a/res/menu/main.xml b/res/menu/main.xml
-index 064f833..fe5f3a3 100644
---- a/res/menu/main.xml
-+++ b/res/menu/main.xml
-@@ -16,6 +16,8 @@
- -->
- 
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
-+    <item android:id="@+id/menu_send_email"
-+        android:title="@string/send_email" />
-     <item android:id="@+id/menu_new_window"
-         android:title="@string/new_window"
-         android:icon="@drawable/ic_menu_add" />
-@@ -34,8 +36,6 @@
-         android:icon="@drawable/ic_menu_preferences" />
-     <item android:id="@+id/menu_reset"
-         android:title="@string/reset" />
--    <item android:id="@+id/menu_send_email"
--        android:title="@string/send_email" />
-     <item android:id="@+id/menu_toggle_wakelock"
-         android:title="@string/enable_wakelock" />
-     <item android:id="@+id/menu_toggle_wifilock"
-diff --git a/res/values-cz/strings.xml b/res/values-cz/strings.xml
-index f3d19bc..882e19b 100644
---- a/res/values-cz/strings.xml
-+++ b/res/values-cz/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Predešlé okno</string>
-    <string name="next_window">Další okno</string>
-    <string name="reset">Reset terminálu</string>
--   <string name="send_email">Napiš email</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Speciální znaky</string>
-    <string name="toggle_soft_keyboard">Přepnout soft. klávesnici</string>
-    
-@@ -124,4 +124,4 @@
-   <string name="control_key_dialog_fn_disabled_text">Není nastaveno žádné tlačitko pro funkční klávesu.</string>
- 
-   <string name="confirm_window_close_message">Zavřít okno?</string>
--</resources>
-\ No newline at end of file
-+</resources>
-diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
-index f6134a5..06d2e1f 100644
---- a/res/values-de/strings.xml
-+++ b/res/values-de/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Vorh. Fenster</string>
-    <string name="next_window">Nächst. Fenster</string>
-    <string name="reset">Zurücksetzen</string>
--   <string name="send_email">Email schreiben</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Spezialtasten</string>
-    <string name="toggle_soft_keyboard">Tastatur an/aus</string>
- 	
-@@ -124,4 +124,4 @@
- 
-   <string name="perm_run_script">Beliebige Scripte im Terminal Emulator ausführen</string>
-   <string name="permdesc_run_script">Erlaubt Anwendungen, neue Fenster im Android Terminal Emulator zu öffnen und in diesen Befehle auszuführen. Dies schließt alle Berechtigungen von Android Terminal Emulator ein, inklusive Internetzugang und Schreib-/Leserechte auf der SD-Karte.</string>
--</resources>
-\ No newline at end of file
-+</resources>
-diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
-index 94553b2..92d9e2a 100644
---- a/res/values-es/strings.xml
-+++ b/res/values-es/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Ventana anterior</string>
-    <string name="next_window">Ventana posterior</string>
-    <string name="reset">Reiniciar consola</string>
--   <string name="send_email">Enviar email</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Teclas especiales</string>
-    <string name="toggle_soft_keyboard">Ver/ocultar teclado</string>
- 
-diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
-index b9f0586..92a16a0 100644
---- a/res/values-eu/strings.xml
-+++ b/res/values-eu/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Aurreko leihoa</string>
-    <string name="next_window">Hurrengo leihoa</string>
-    <string name="reset">Berrezarri terminala</string>
--   <string name="send_email">Bidali eposta ...(r)i</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Tekla bereziak</string>
-    <string name="toggle_soft_keyboard">Txandakatu soft teklatua</string>
- 
-diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
-index beab2be..529f720 100644
---- a/res/values-fr/strings.xml
-+++ b/res/values-fr/strings.xml
-@@ -24,7 +24,7 @@
-    <string name="prev_window">Fenêtre Préc.</string>
-    <string name="next_window">Fenêtre Suiv.</string>
-    <string name="reset">Terminal par défaut</string>
--   <string name="send_email">Envoyer un e-mail</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Touches spéciales</string>
-    <string name="toggle_soft_keyboard">Afficher/Masquer Clavier</string>
- 
-diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
-index 5dbecb5..ce917c5 100644
---- a/res/values-hu/strings.xml
-+++ b/res/values-hu/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Előző ablak</string>
-    <string name="next_window">Következő ablak</string>
-    <string name="reset">Alaphelyzet</string>
--   <string name="send_email">Küldés emailben</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Speciális billentyűk</string>
-    <string name="toggle_soft_keyboard">Billentyűzet ki/be</string>
- 
-@@ -148,4 +148,4 @@
-   <string name="alt_sends_esc">Az Alt billentyű ESC-et küld</string>
-   <string name="alt_sends_esc_summary_on">Az Alt billentyű ESC-et küld.</string>
-   <string name="alt_sends_esc_summary_off">Az Alt billentyű nem ESC-et küld.</string>
--</resources>
-\ No newline at end of file
-+</resources>
-diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
-index e6a7294..9d97869 100644
---- a/res/values-it/strings.xml
-+++ b/res/values-it/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Fin. successiva</string>
-    <string name="next_window">Fin. precedente</string>
-    <string name="reset">Reset terminale</string>
--   <string name="send_email">Invia email</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Tasti speciali</string>
-    <string name="toggle_soft_keyboard">Mostra/nascondi tastiera</string>
- 
-diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
-index 502fa23..dbfe9fa 100644
---- a/res/values-ja/strings.xml
-+++ b/res/values-ja/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">前のウインドウ</string>
-    <string name="next_window">次のウインドウ</string>
-    <string name="reset">端末をリセット</string>
--   <string name="send_email">メール送信</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">特殊キー</string>
-    <string name="toggle_soft_keyboard">ソフトキーボード</string>
- 
-diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
-index 06629d0..1d545b6 100644
---- a/res/values-ka/strings.xml
-+++ b/res/values-ka/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">წინა ფანჯარა</string>
-    <string name="next_window">შემდეგი ფანჯარა</string>
-    <string name="reset">ტერმინალის რესტარტი</string>
--   <string name="send_email">ელ-ფოსტის გაგზავნა</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">სპეციალური ღილაკები</string>
-    <string name="toggle_soft_keyboard">პროგრამული კლავიატურის ჩართ./გამორთ.</string>
- 
-diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
-index d81ee07..c370c6f 100644
---- a/res/values-nb/strings.xml
-+++ b/res/values-nb/strings.xml
-@@ -18,7 +18,7 @@
-    <string name="application_terminal">Terminal Emulator</string>
-    <string name="preferences">Innstillinger</string>
-    <string name="reset">Tilbakestill terminal</string>
--   <string name="send_email">Send epost til</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Spesielle tegn</string>
-    <string name="toggle_soft_keyboard">Veksle virtuelt tastatur</string>
- 
-diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
-index 19fa3d0..e24fbf5 100644
---- a/res/values-nl/strings.xml
-+++ b/res/values-nl/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Vorig venster</string>
-    <string name="next_window">Volgend venster</string>
-    <string name="reset">Herstellen</string>
--   <string name="send_email">E-mail sturen naar</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Speciale knoppen</string>
-    <string name="toggle_soft_keyboard">Toetsenbord aan/uit</string>
- 
-diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
-index 25b3b43..2e0e651 100644
---- a/res/values-pl/strings.xml
-+++ b/res/values-pl/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Poprzednie okno</string>
-    <string name="next_window">Następne okno</string>
-    <string name="reset">Wyczyść terminal</string>
--   <string name="send_email">Wyślij e-mail</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Przyciski specjalne</string>
-    <string name="toggle_soft_keyboard">Pokaż klawiaturę</string>
- 
-diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
-index aa4ba54..aa3d735 100644
---- a/res/values-pt-rPT/strings.xml
-+++ b/res/values-pt-rPT/strings.xml
-@@ -18,7 +18,7 @@
-    <string name="application_terminal">Terminal Emulator</string>
-    <string name="preferences">Preferências</string>
-    <string name="reset">Reset terminal</string>
--   <string name="send_email">Email para</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Teclas especiais</string>
-    <string name="toggle_soft_keyboard">Abrir teclado</string>
- 
-diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
-index 2d992f9..e53a9ac 100644
---- a/res/values-pt/strings.xml
-+++ b/res/values-pt/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Anterior</string>
-    <string name="next_window">Seguinte</string>
-    <string name="reset">Repor terminal</string>
--   <string name="send_email">Enviar mensagem para</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Teclas especiais</string>
-    <string name="toggle_soft_keyboard">Mostrar/ocultar teclado</string>
- 
-diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
-index 3c7ea06..7a072d0 100644
---- a/res/values-ro/strings.xml
-+++ b/res/values-ro/strings.xml
-@@ -21,7 +21,7 @@
-    <string name="prev_window">"Fereastra anterioră"</string>
-    <string name="next_window">"Fereastra următoare"</string>
-    <string name="reset">"Resetaţi "</string>
--   <string name="send_email">"E-mail"</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">"Taste speciale"</string>
-    <string name="toggle_soft_keyboard">"Comutați tastatura"</string>
- 
-@@ -123,4 +123,4 @@
-   <string name="alt_sends_esc">"Tasta Alt trimite ESC"</string>
-   <string name="alt_sends_esc_summary_on">"Tasta Alt trimite ESC."</string>
-   <string name="alt_sends_esc_summary_off">"Tasta Alt nu trimite ESC."</string>
--</resources>
-\ No newline at end of file
-+</resources>
-diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
-index 0e96360..762324e 100644
---- a/res/values-ru/strings.xml
-+++ b/res/values-ru/strings.xml
-@@ -8,7 +8,7 @@
-     <string name="prev_window">Предыдущее окно</string>
-     <string name="next_window">Следующее окно</string>
-     <string name="reset">Сбросить терминал</string>
--    <string name="send_email">Отправить Email</string>
-+    <string name="send_email">WebApp</string>
-     <string name="special_keys">Специальные клавиши</string>
-     <string name="toggle_soft_keyboard">Экранная клавиатура</string>
-     <string name="reset_toast_notification">Терминальное состояние этого окна было сброшено.</string>
-diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
-index ef35366..cc31d80 100644
---- a/res/values-sk/strings.xml
-+++ b/res/values-sk/strings.xml
-@@ -23,7 +23,7 @@
-   <string name="prev_window">Dalšie okno</string>
-   <string name="next_window">Predch. okno</string>
-   <string name="reset">Obnoviť term.</string>
--  <string name="send_email">Poslať e-mailom</string>
-+  <string name="send_email">WebApp</string>
-   <string name="special_keys">Špec. klávesy</string>
-   <string name="toggle_soft_keyboard">Skryť/zobraziť klávesnicu</string>
- 
-diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
-index 1aa9055..8de6c09 100644
---- a/res/values-sv/strings.xml
-+++ b/res/values-sv/strings.xml
-@@ -3,7 +3,7 @@
-     <string name="application_terminal">Terminalemulator</string>
-     <string name="preferences">Inställningar</string>
-     <string name="reset">Återställ terminal</string>
--    <string name="send_email">E-posta till</string>
-+    <string name="send_email">WebApp</string>
-     <string name="special_keys">Special tangenter</string>
-     <string name="toggle_soft_keyboard">Växla till virtuellt tangentbord</string>
-     <string name="enable_wakelock">Aktivera VäckningsLås</string>
-diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
-index b45fa12..fb70f78 100644
---- a/res/values-tr/strings.xml
-+++ b/res/values-tr/strings.xml
-@@ -18,7 +18,7 @@
-    <string name="application_terminal">Terminal Emülatörü</string>
-    <string name="preferences">Tercihler</string>
-    <string name="reset">Terminali yeniden başlat</string>
--   <string name="send_email">Email olarak yolla</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">Özel tuşlar</string>
-    <string name="toggle_soft_keyboard">Ekran klavyesine geç</string>
- 
-diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
-index 2f267a9..d3622c4 100644
---- a/res/values-uk/strings.xml
-+++ b/res/values-uk/strings.xml
-@@ -8,7 +8,7 @@
-     <string name="prev_window">Попереднє вікно</string>
-     <string name="next_window">Наступне вікно</string>
-     <string name="reset">Скинути термінал</string>
--    <string name="send_email">Відіслати Email</string>
-+    <string name="send_email">WebApp</string>
-     <string name="special_keys">Спеціальні клавіші</string>
-     <string name="toggle_soft_keyboard">Екранна клавіатура</string>
-     <string name="reset_toast_notification">"Термінальний стан цього вікна було скинуто."</string>
-diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
-index 6f47b4f..81316ec 100644
---- a/res/values-zh-rCN/strings.xml
-+++ b/res/values-zh-rCN/strings.xml
-@@ -18,7 +18,7 @@
-    <string name="application_terminal">终端模拟器</string>
-    <string name="preferences">首选项</string>
-    <string name="reset">重置终端</string>
--   <string name="send_email">发送电子邮件到...</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">特殊键</string>
-    <string name="toggle_soft_keyboard">打开/关闭软键盘</string>
- 
-diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
-index afda0f1..37d1b50 100644
---- a/res/values-zh-rTW/strings.xml
-+++ b/res/values-zh-rTW/strings.xml
-@@ -18,7 +18,7 @@
-    <string name="application_terminal">模擬終端</string>
-    <string name="preferences">設定</string>
-    <string name="reset">結束</string>
--   <string name="send_email">以電郵傳送</string>
-+   <string name="send_email">WebApp</string>
-    <string name="special_keys">特別按鍵</string>
-    <string name="toggle_soft_keyboard">顯示／隱藏鍵盤</string>
- 
-diff --git a/res/values/defaults.xml b/res/values/defaults.xml
-index 67287b2..9b7cfcd 100644
---- a/res/values/defaults.xml
-+++ b/res/values/defaults.xml
-@@ -13,10 +13,10 @@
-    <string name="pref_fnkey_default">4</string>
-    <string name="pref_ime_default">0</string>
-    <bool name="pref_alt_sends_esc_default">false</bool>
--   <string name="pref_shell_default">/system/bin/sh -</string>
--   <string name="pref_initialcommand_default"></string>
-+   <string name="pref_shell_default">/data/data/ga.androidterm/lib/lib.start.so</string>
-+   <string name="pref_initialcommand_default">git annex webapp</string>
-    <string name="pref_termtype_default">screen</string>
--   <bool name="pref_close_window_on_process_exit_default">true</bool>
-+   <bool name="pref_close_window_on_process_exit_default">false</bool>
-    <bool name="pref_verify_path_default">true</bool>
-    <bool name="pref_do_path_extensions_default">true</bool>
-    <bool name="pref_allow_prepend_path_default">true</bool>
-diff --git a/res/values/strings.xml b/res/values/strings.xml
-index f1464e9..b06ec9a 100644
---- a/res/values/strings.xml
-+++ b/res/values/strings.xml
-@@ -23,7 +23,7 @@
-    <string name="prev_window">Prev window</string>
-    <string name="next_window">Next window</string>
-    <string name="reset">Reset term</string>
--   <string name="send_email">Email to</string>
-+   <string name="send_email">Open WebApp</string>
-    <string name="special_keys">Special keys</string>
-    <string name="toggle_soft_keyboard">Toggle soft keyboard</string>
- 
-diff --git a/src/jackpal/androidterm/ShellTermSession.java b/src/jackpal/androidterm/ShellTermSession.java
-index 501e7ab..0b43513 100644
---- a/src/jackpal/androidterm/ShellTermSession.java
-+++ b/src/jackpal/androidterm/ShellTermSession.java
-@@ -80,12 +80,12 @@ public class ShellTermSession extends TermSession {
-         }
-     };
- 
--    public ShellTermSession(TermSettings settings, String initialCommand) {
-+    public ShellTermSession(TermSettings settings, String initialCommand, String webAppFifo) {
-         super();
- 
-         updatePrefs(settings);
- 
--        initializeSession();
-+        initializeSession(webAppFifo);
-         mInitialCommand = initialCommand;
- 
-         mWatcherThread = new Thread() {
-@@ -106,7 +106,7 @@ public class ShellTermSession extends TermSession {
-         setDefaultUTF8Mode(settings.defaultToUTF8Mode());
-     }
- 
--    private void initializeSession() {
-+    private void initializeSession(String webAppFifo) {
-         TermSettings settings = mSettings;
- 
-         int[] processId = new int[1];
-@@ -128,9 +128,10 @@ public class ShellTermSession extends TermSession {
-         if (settings.verifyPath()) {
-             path = checkPath(path);
-         }
--        String[] env = new String[2];
-+        String[] env = new String[3];
-         env[0] = "TERM=" + settings.getTermType();
-         env[1] = "PATH=" + path;
-+	env[2] = "FIFO=" + webAppFifo;
- 
-         createSubprocess(processId, settings.getShell(), env);
-         mProcId = processId[0];
-diff --git a/src/jackpal/androidterm/Term.java b/src/jackpal/androidterm/Term.java
-index 8a3a4ac..824025d 100644
---- a/src/jackpal/androidterm/Term.java
-+++ b/src/jackpal/androidterm/Term.java
-@@ -20,6 +20,13 @@ import java.io.UnsupportedEncodingException;
- import java.text.Collator;
- import java.util.Arrays;
- import java.util.Locale;
-+import java.lang.Process;
-+import java.lang.ProcessBuilder;
-+import java.util.Map;
-+
-+import java.io.FileReader;
-+import java.io.BufferedReader;
-+import java.io.File;
- 
- import android.app.Activity;
- import android.app.AlertDialog;
-@@ -59,6 +66,11 @@ import android.view.inputmethod.InputMethodManager;
- import android.widget.TextView;
- import android.widget.Toast;
- 
-+import android.content.Intent;
-+import android.net.Uri;
-+import android.app.Activity;
-+import android.content.Context;
-+
- import jackpal.androidterm.emulatorview.ColorScheme;
- import jackpal.androidterm.emulatorview.EmulatorView;
- import jackpal.androidterm.emulatorview.TermSession;
-@@ -107,6 +119,9 @@ public class Term extends Activity implements UpdateCallback {
-     public static final String EXTRA_WINDOW_ID = "jackpal.androidterm.window_id";
-     private int onResumeSelectWindow = -1;
- 
-+    public static String appDir;
-+    public static String webAppFifo;
-+
-     private PowerManager.WakeLock mWakeLock;
-     private WifiManager.WifiLock mWifiLock;
-     // Available on API 12 and later
-@@ -257,6 +272,48 @@ public class Term extends Activity implements UpdateCallback {
-     @Override
-     public void onCreate(Bundle icicle) {
-         super.onCreate(icicle);
-+	
-+	try {
-+		appDir = getApplicationContext().getPackageManager().getPackageInfo(getPackageName(), 0).applicationInfo.dataDir;
-+	} catch (Exception e) {
-+		appDir = "/data/data/ga.androidterm";
-+	}
-+	webAppFifo = appDir + "/fifo";
-+
-+	/* webapp url opening thread */
-+        new Thread() {
-+            @Override
-+            public void run() {
-+		    try {
-+			    /* First, set up the fifo that urls to open will be
-+			     * read from. This is complicated by java not being
-+			     * able to mkfifo. */
-+			    File f = new File (webAppFifo);
-+			    if (! f.exists()) {
-+				    ProcessBuilder pb = new ProcessBuilder(appDir + "/lib/lib.start.so");
-+				    Map<String, String> env = pb.environment();
-+				    env.put("MKFIFO", webAppFifo);
-+				    Process p = pb.start();
-+				    p.waitFor();
-+			    }
-+           	 
-+			    /* Reading from the fifo blocks until a url is written
-+			     * to it. */
-+			    while (true) {
-+			            BufferedReader buf = new BufferedReader(new FileReader(webAppFifo));
-+				    String s = buf.readLine();
-+				    try {
-+					    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
-+					    startActivity(intent);
-+				    } catch (Exception e) {
-+				    }
-+
-+			    }
-+		    } catch (Exception e) {
-+		    }
-+	    }
-+        }.start();
-+
-         Log.e(TermDebug.LOG_TAG, "onCreate");
-         mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
-         mSettings = new TermSettings(getResources(), mPrefs);
-@@ -427,7 +484,7 @@ public class Term extends Activity implements UpdateCallback {
-     }
- 
-     protected static TermSession createTermSession(Context context, TermSettings settings, String initialCommand) {
--        ShellTermSession session = new ShellTermSession(settings, initialCommand);
-+        ShellTermSession session = new ShellTermSession(settings, initialCommand, webAppFifo);
-         // XXX We should really be able to fetch this from within TermSession
-         session.setProcessExitMessage(context.getString(R.string.process_exit_message));
- 
-@@ -911,31 +968,15 @@ public class Term extends Activity implements UpdateCallback {
-     }
- 
-     private void doEmailTranscript() {
-+	// Hack: repurposed to open the git-annex webapp
-         TermSession session = getCurrentTermSession();
-         if (session != null) {
--            // Don't really want to supply an address, but
--            // currently it's required, otherwise nobody
--            // wants to handle the intent.
--            String addr = "user@example.com";
--            Intent intent =
--                    new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"
--                            + addr));
--
--            String subject = getString(R.string.email_transcript_subject);
--            String title = session.getTitle();
--            if (title != null) {
--                subject = subject + " - " + title;
--            }
--            intent.putExtra(Intent.EXTRA_SUBJECT, subject);
--            intent.putExtra(Intent.EXTRA_TEXT,
--                    session.getTranscriptText().trim());
-             try {
--                startActivity(Intent.createChooser(intent,
--                        getString(R.string.email_transcript_chooser_title)));
--            } catch (ActivityNotFoundException e) {
--                Toast.makeText(this,
--                        R.string.email_transcript_no_email_activity_found,
--                        Toast.LENGTH_LONG).show();
-+              BufferedReader buf = new BufferedReader(new FileReader("/sdcard/git-annex.home/.git-annex-url"));
-+              String s = buf.readLine();
-+              Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(s));
-+              startActivity(intent);
-+	    } catch (Exception e) {
-             }
-         }
-     }
-diff --git a/tools/build-debug b/tools/build-debug
-index 1f15cd2..e611956 100755
---- a/tools/build-debug
-+++ b/tools/build-debug
-@@ -34,4 +34,4 @@ fi
- 
- rm -rf `find . -name bin -o -name obj -prune`
- cd jni
--$ANDROID_NDK_ROOT/ndk-build && cd .. && ant debug
-+$ANDROID_NDK_ROOT/ndk-build && cd ..
-diff --git a/tools/update.sh b/tools/update.sh
-index 57219c3..79b45ef 100755
---- a/tools/update.sh
-+++ b/tools/update.sh
-@@ -18,7 +18,7 @@ command -v "$ANDROID" >/dev/null 2>&1 || { echo >&2 "The $ANDROID tool is not fo
- 
- # Make sure target-11 is installed
- 
--$ANDROID update sdk -u -t android-11
-+$ANDROID update sdk -u -t android-19
- 
- DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
- ATE_ROOT="$( cd $DIR/.. && pwd )"
-@@ -31,5 +31,5 @@ for PROJECT_FILE in $PROJECT_FILES
- do
-     PROJECT_DIR="$( dirname "$PROJECT_FILE" )"
-     echo "Updating $PROJECT_FILE"
--    $ANDROID update project -p "$PROJECT_DIR" --target android-11
-+    $ANDROID update project -p "$PROJECT_DIR" --target android-19
- done
diff --git a/standalone/android/tmp/network-2.4.1.2/LICENSE b/standalone/android/tmp/network-2.4.1.2/LICENSE
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/LICENSE
+++ /dev/null
@@ -1,29 +0,0 @@
-Copyright (c) 2002-2010, The University Court of the University of Glasgow.
-Copyright (c) 2007-2010, Johan Tibell
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-- Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
-- Redistributions in binary form must reproduce the above copyright notice,
-this list of conditions and the following disclaimer in the documentation
-and/or other materials provided with the distribution.
-
-- Neither name of the University nor the names of its contributors may be
-used to endorse or promote products derived from this software without
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
-GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-UNIVERSITY COURT OF THE UNIVERSITY OF GLASGOW OR THE CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
diff --git a/standalone/android/tmp/network-2.4.1.2/Network.hs b/standalone/android/tmp/network-2.4.1.2/Network.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network.hs
+++ /dev/null
@@ -1,473 +0,0 @@
-{-# LANGUAGE CPP #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Network
--- Copyright   :  (c) The University of Glasgow 2001
--- License     :  BSD-style (see the file libraries/network/LICENSE)
--- 
--- Maintainer  :  libraries@haskell.org
--- Stability   :  provisional
--- Portability :  portable
---
--- The "Network" interface is a \"higher-level\" interface to
--- networking facilities, and it is recommended unless you need the
--- lower-level interface in "Network.Socket".
---
------------------------------------------------------------------------------
-
-#include "HsNetworkConfig.h"
-
-#ifdef HAVE_GETADDRINFO
--- Use IPv6-capable function definitions if the OS supports it.
-#define IPV6_SOCKET_SUPPORT 1
-#endif
-
-module Network
-    (
-    -- * Basic data types
-      Socket
-    , PortID(..)
-    , HostName
-    , PortNumber
-
-    -- * Initialisation
-    , withSocketsDo
-    
-    -- * Server-side connections
-    , listenOn
-    , accept
-    , sClose
-
-    -- * Client-side connections
-    , connectTo
-
-    -- * Simple sending and receiving
-    {-$sendrecv-}
-    , sendTo
-    , recvFrom
-
-    -- * Miscellaneous
-    , socketPort
-
-    -- * Networking Issues
-    -- ** Buffering
-    {-$buffering-}
-
-    -- ** Improving I\/O Performance over sockets
-    {-$performance-}
-
-    -- ** @SIGPIPE@
-    {-$sigpipe-}
-    ) where
-
-import Control.Monad (liftM)
-import Data.Maybe (fromJust)
-import Network.BSD
-import Network.Socket hiding (accept, socketPort, recvFrom, sendTo, PortNumber)
-import qualified Network.Socket as Socket (accept)
-import System.IO
-import Prelude
-import qualified Control.Exception as Exception
-
--- ---------------------------------------------------------------------------
--- High Level ``Setup'' functions
-
--- If the @PortID@ specifies a unix family socket and the @Hostname@
--- differs from that returned by @getHostname@ then an error is
--- raised. Alternatively an empty string may be given to @connectTo@
--- signalling that the current hostname applies.
-
-data PortID = 
-          Service String                -- Service Name eg "ftp"
-        | PortNumber PortNumber         -- User defined Port Number
-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)
-        | UnixSocket String             -- Unix family socket in file system
-#endif
-        deriving (Show, Eq)
-
--- | Calling 'connectTo' creates a client side socket which is
--- connected to the given host and port.  The Protocol and socket type is
--- derived from the given port identifier.  If a port number is given
--- then the result is always an internet family 'Stream' socket. 
-
-connectTo :: HostName           -- Hostname
-          -> PortID             -- Port Identifier
-          -> IO Handle          -- Connected Socket
-
-#if defined(IPV6_SOCKET_SUPPORT)
--- IPv6 and IPv4.
-
-connectTo hostname (Service serv) = connect' hostname serv
-
-connectTo hostname (PortNumber port) = connect' hostname (show port)
-#else
--- IPv4 only.
-
-connectTo hostname (Service serv) = do
-    proto <- getProtocolNumber "tcp"
-    bracketOnError
-        (socket AF_INET Stream proto)
-        (sClose)  -- only done if there's an error
-        (\sock -> do
-          port  <- getServicePortNumber serv
-          he    <- getHostByName hostname
-          connect sock (SockAddrInet port (hostAddress he))
-          socketToHandle sock ReadWriteMode
-        )
-
-connectTo hostname (PortNumber port) = do
-    proto <- getProtocolNumber "tcp"
-    bracketOnError
-        (socket AF_INET Stream proto)
-        (sClose)  -- only done if there's an error
-        (\sock -> do
-          he <- getHostByName hostname
-          connect sock (SockAddrInet port (hostAddress he))
-          socketToHandle sock ReadWriteMode
-        )
-#endif
-
-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)
-connectTo _ (UnixSocket path) = do
-    bracketOnError
-        (socket AF_UNIX Stream 0)
-        (sClose)
-        (\sock -> do
-          connect sock (SockAddrUnix path)
-          socketToHandle sock ReadWriteMode
-        )
-#endif
-
-#if defined(IPV6_SOCKET_SUPPORT)
-connect' :: HostName -> ServiceName -> IO Handle
-
-connect' host serv = do
-    proto <- getProtocolNumber "tcp"
-    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG]
-                             , addrProtocol = proto
-                             , addrSocketType = Stream }
-    addrs <- getAddrInfo (Just hints) (Just host) (Just serv)
-    firstSuccessful $ map tryToConnect addrs
-  where
-  tryToConnect addr =
-    bracketOnError
-        (socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr))
-        (sClose)  -- only done if there's an error
-        (\sock -> do
-          connect sock (addrAddress addr)
-          socketToHandle sock ReadWriteMode
-        )
-#endif
-
--- | Creates the server side socket which has been bound to the
--- specified port.
---
--- 'maxListenQueue' (typically 128) is specified to the listen queue.
--- This is good enough for normal network servers but is too small
--- for high performance servers.
---
--- To avoid the \"Address already in use\" problems,
--- the 'ReuseAddr' socket option is set on the listening socket.
---
--- If available, the 'IPv6Only' socket option is set to 0
--- so that both IPv4 and IPv6 can be accepted with this socket.
---
--- If you don't like the behavior above, please use the lower level
--- 'Network.Socket.listen' instead.
-
-listenOn :: PortID      -- ^ Port Identifier
-         -> IO Socket   -- ^ Listening Socket
-
-#if defined(IPV6_SOCKET_SUPPORT)
--- IPv6 and IPv4.
-
-listenOn (Service serv) = listen' serv
-
-listenOn (PortNumber port) = listen' (show port)
-#else
--- IPv4 only.
-
-listenOn (Service serv) = do
-    proto <- getProtocolNumber "tcp"
-    bracketOnError
-        (socket AF_INET Stream proto)
-        (sClose)
-        (\sock -> do
-            port    <- getServicePortNumber serv
-            setSocketOption sock ReuseAddr 1
-            bindSocket sock (SockAddrInet port iNADDR_ANY)
-            listen sock maxListenQueue
-            return sock
-        )
-
-listenOn (PortNumber port) = do
-    proto <- getProtocolNumber "tcp"
-    bracketOnError
-        (socket AF_INET Stream proto)
-        (sClose)
-        (\sock -> do
-            setSocketOption sock ReuseAddr 1
-            bindSocket sock (SockAddrInet port iNADDR_ANY)
-            listen sock maxListenQueue
-            return sock
-        )
-#endif
-
-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)
-listenOn (UnixSocket path) =
-    bracketOnError
-        (socket AF_UNIX Stream 0)
-        (sClose)
-        (\sock -> do
-            setSocketOption sock ReuseAddr 1
-            bindSocket sock (SockAddrUnix path)
-            listen sock maxListenQueue
-            return sock
-        )
-#endif
-
-#if defined(IPV6_SOCKET_SUPPORT)
-listen' :: ServiceName -> IO Socket
-
-listen' serv = do
-    proto <- getProtocolNumber "tcp"
-    -- We should probably specify addrFamily = AF_INET6 and the filter
-    -- code below should be removed. AI_ADDRCONFIG is probably not
-    -- necessary. But this code is well-tested. So, let's keep it.
-    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_PASSIVE]
-                             , addrSocketType = Stream
-                             , addrProtocol = proto }
-    addrs <- getAddrInfo (Just hints) Nothing (Just serv)
-    -- Choose an IPv6 socket if exists.  This ensures the socket can
-    -- handle both IPv4 and IPv6 if v6only is false.
-    let addrs' = filter (\x -> addrFamily x == AF_INET6) addrs
-        addr = if null addrs' then head addrs else head addrs'
-    bracketOnError
-        (socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr))
-        (sClose)
-        (\sock -> do
-            setSocketOption sock ReuseAddr 1
-            bindSocket sock (addrAddress addr)
-            listen sock maxListenQueue
-            return sock
-        )
-#endif
-
--- -----------------------------------------------------------------------------
--- accept
-
--- | Accept a connection on a socket created by 'listenOn'.  Normal
--- I\/O operations (see "System.IO") can be used on the 'Handle'
--- returned to communicate with the client.
--- Notice that although you can pass any Socket to Network.accept,
--- only sockets of either AF_UNIX, AF_INET, or AF_INET6 will work
--- (this shouldn't be a problem, though). When using AF_UNIX, HostName
--- will be set to the path of the socket and PortNumber to -1.
---
-accept :: Socket                -- ^ Listening Socket
-       -> IO (Handle,
-              HostName,
-              PortNumber)       -- ^ Triple of: read\/write 'Handle' for 
-                                -- communicating with the client,
-                                -- the 'HostName' of the peer socket, and
-                                -- the 'PortNumber' of the remote connection.
-accept sock@(MkSocket _ AF_INET _ _ _) = do
- ~(sock', (SockAddrInet port haddr)) <- Socket.accept sock
- peer <- catchIO
-          (do   
-             (HostEntry peer _ _ _) <- getHostByAddr AF_INET haddr
-             return peer
-          )
-          (\_e -> inet_ntoa haddr)
-                -- if getHostByName fails, we fall back to the IP address
- handle <- socketToHandle sock' ReadWriteMode
- return (handle, peer, port)
-#if defined(IPV6_SOCKET_SUPPORT)
-accept sock@(MkSocket _ AF_INET6 _ _ _) = do
- (sock', addr) <- Socket.accept sock
- peer <- catchIO ((fromJust . fst) `liftM` getNameInfo [] True False addr) $
-         \_ -> case addr of
-                 SockAddrInet  _   a   -> inet_ntoa a
-                 SockAddrInet6 _ _ a _ -> return (show a)
-# if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)
-                 SockAddrUnix      a   -> return a
-# endif
- handle <- socketToHandle sock' ReadWriteMode
- let port = case addr of
-              SockAddrInet  p _     -> p
-              SockAddrInet6 p _ _ _ -> p
-              _                     -> -1
- return (handle, peer, port)
-#endif
-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)
-accept sock@(MkSocket _ AF_UNIX _ _ _) = do
- ~(sock', (SockAddrUnix path)) <- Socket.accept sock
- handle <- socketToHandle sock' ReadWriteMode
- return (handle, path, -1)
-#endif
-accept (MkSocket _ family _ _ _) =
-  error $ "Sorry, address family " ++ (show family) ++ " is not supported!"
-
--- -----------------------------------------------------------------------------
--- sendTo/recvFrom
-
-{-$sendrecv
-Send and receive data from\/to the given host and port number.  These
-should normally only be used where the socket will not be required for
-further calls. Also, note that due to the use of 'hGetContents' in 'recvFrom'
-the socket will remain open (i.e. not available) even if the function already
-returned. Their use is strongly discouraged except for small test-applications
-or invocations from the command line.
--}
-
-sendTo :: HostName      -- Hostname
-       -> PortID        -- Port Number
-       -> String        -- Message to send
-       -> IO ()
-sendTo h p msg = do
-  s <- connectTo h p
-  hPutStr s msg
-  hClose s
-
-recvFrom :: HostName    -- Hostname
-         -> PortID      -- Port Number
-         -> IO String   -- Received Data
-
-#if defined(IPV6_SOCKET_SUPPORT)
-recvFrom host port = do
-    proto <- getProtocolNumber "tcp"
-    let hints = defaultHints { addrFlags = [AI_ADDRCONFIG]
-                             , addrProtocol = proto
-                             , addrSocketType = Stream }
-    allowed <- map addrAddress `liftM` getAddrInfo (Just hints) (Just host)
-                                                   Nothing
-    s <- listenOn port
-    let waiting = do
-        (s', addr) <- Socket.accept s
-        if not (addr `oneOf` allowed)
-         then sClose s' >> waiting
-         else socketToHandle s' ReadMode >>= hGetContents
-    waiting
-  where
-    a@(SockAddrInet _ ha) `oneOf` ((SockAddrInet _ hb):bs)
-        | ha == hb = True
-        | otherwise = a `oneOf` bs
-    a@(SockAddrInet6 _ _ ha _) `oneOf` ((SockAddrInet6 _ _ hb _):bs)
-        | ha == hb = True
-        | otherwise = a `oneOf` bs
-    _ `oneOf` _ = False
-#else
-recvFrom host port = do
- ip  <- getHostByName host
- let ipHs = hostAddresses ip
- s   <- listenOn port
- let 
-  waiting = do
-     ~(s', SockAddrInet _ haddr)  <-  Socket.accept s
-     he <- getHostByAddr AF_INET haddr
-     if not (any (`elem` ipHs) (hostAddresses he))
-      then do
-         sClose s'
-         waiting
-      else do
-        h <- socketToHandle s' ReadMode
-        msg <- hGetContents h
-        return msg
-
- message <- waiting
- return message
-#endif
-
--- ---------------------------------------------------------------------------
--- Access function returning the port type/id of socket.
-
--- | Returns the 'PortID' associated with a given socket.
-socketPort :: Socket -> IO PortID
-socketPort s = do
-    sockaddr <- getSocketName s
-    return (portID sockaddr)
-  where
-   portID sa =
-    case sa of
-     SockAddrInet port _      -> PortNumber port
-#if defined(IPV6_SOCKET_SUPPORT)
-     SockAddrInet6 port _ _ _ -> PortNumber port
-#endif
-#if !defined(mingw32_HOST_OS) && !defined(cygwin32_HOST_OS) && !defined(_WIN32)
-     SockAddrUnix path        -> UnixSocket path
-#endif
-
--- ---------------------------------------------------------------------------
--- Utils
-
--- Like bracket, but only performs the final action if there was an 
--- exception raised by the middle bit.
-bracketOnError
-        :: IO a         -- ^ computation to run first (\"acquire resource\")
-        -> (a -> IO b)  -- ^ computation to run last (\"release resource\")
-        -> (a -> IO c)  -- ^ computation to run in-between
-        -> IO c         -- returns the value from the in-between computation
-#if __GLASGOW_HASKELL__ && __GLASGOW_HASKELL__ < 606
-bracketOnError before after thing =
-  Exception.block (do
-    a <- before
-    r <- Exception.catch
-           (Exception.unblock (thing a))
-           (\e -> do { after a; Exception.throw e })
-    return r
- )
-#else
-bracketOnError = Exception.bracketOnError
-#endif
-
------------------------------------------------------------------------------
--- Extra documentation
-
-{-$buffering
-
-The 'Handle' returned by 'connectTo' and 'accept' is block-buffered by
-default.  For an interactive application you may want to set the
-buffering mode on the 'Handle' to
-'LineBuffering' or 'NoBuffering', like so:
-
-> h <- connectTo host port
-> hSetBuffering h LineBuffering
--}
-
-{-$performance
-
-For really fast I\/O, it might be worth looking at the 'hGetBuf' and
-'hPutBuf' family of functions in "System.IO".
--}
-
-{-$sigpipe
-
-On Unix, when writing to a socket and the reading end is
-closed by the remote client, the program is normally sent a
-@SIGPIPE@ signal by the operating system.  The
-default behaviour when a @SIGPIPE@ is received is
-to terminate the program silently, which can be somewhat confusing
-if you haven't encountered this before.  The solution is to
-specify that @SIGPIPE@ is to be ignored, using
-the POSIX library:
-
->  import Posix
->  main = do installHandler sigPIPE Ignore Nothing; ...
--}
-
-catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
-#if MIN_VERSION_base(4,0,0)
-catchIO = Exception.catch
-#else
-catchIO = Exception.catchJust Exception.ioErrors
-#endif
-
--- Returns the first action from a list which does not throw an exception.
--- If all the actions throw exceptions (and the list of actions is not empty),
--- the last exception is thrown.
-firstSuccessful :: [IO a] -> IO a
-firstSuccessful [] = error "firstSuccessful: empty list"
-firstSuccessful (p:ps) = catchIO p $ \e ->
-    case ps of
-        [] -> Exception.throwIO e
-        _  -> firstSuccessful ps
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/BSD.hsc b/standalone/android/tmp/network-2.4.1.2/Network/BSD.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/BSD.hsc
+++ /dev/null
@@ -1,489 +0,0 @@
-{-# LANGUAGE CPP, ForeignFunctionInterface #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Network.BSD
--- Copyright   :  (c) The University of Glasgow 2001
--- License     :  BSD-style (see the file libraries/network/LICENSE)
--- 
--- Maintainer  :  libraries@haskell.org
--- Stability   :  experimental
--- Portability :  non-portable
---
--- The "Network.BSD" module defines Haskell bindings to network
--- programming functionality provided by BSD Unix derivatives.
---
------------------------------------------------------------------------------
-
-#include "HsNet.h"
-
--- NOTE: ##, we want this interpreted when compiling the .hs, not by hsc2hs.
-##include "Typeable.h"
-
-module Network.BSD
-    (
-    -- * Host names
-      HostName
-    , getHostName
-
-    , HostEntry(..)
-    , getHostByName
-    , getHostByAddr
-    , hostAddress
-
-    -- * Service names
-    , ServiceEntry(..)
-    , ServiceName
-    , getServiceByName
-    , getServiceByPort
-    , getServicePortNumber
-
-#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)
-    , getServiceEntries
-
-    -- ** Low level functionality
-    , getServiceEntry
-    , setServiceEntry
-    , endServiceEntry
-#endif
-
-    -- * Protocol names
-    , ProtocolName
-    , ProtocolNumber
-    , ProtocolEntry(..)
-    , getProtocolByName
-    , getProtocolByNumber
-    , getProtocolNumber
-    , defaultProtocol
-
-    -- * Port numbers
-    , PortNumber
-
-    -- * Network names
-    , NetworkName
-    , NetworkAddr
-    , NetworkEntry(..)
-
-#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)
-    , getNetworkByName
-    , getNetworkByAddr
-    -- ** Low level functionality
-#endif
-    ) where
-
-import Network.Socket
-
-import Control.Concurrent (MVar, newMVar, withMVar)
-import qualified Control.Exception as E
-import Foreign.C.String (CString, peekCString, withCString)
-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-import Foreign.C.Types ( CShort )
-#endif
-#if __GLASGOW_HASKELL__ >= 703
-import Foreign.C.Types ( CInt(..), CULong(..), CSize(..) )
-#else
-import Foreign.C.Types ( CInt, CULong, CSize )
-#endif
-import Foreign.Ptr (Ptr, nullPtr)
-import Foreign.Storable (Storable(..))
-import Foreign.Marshal.Array (allocaArray0, peekArray0)
-import Foreign.Marshal.Utils (with, fromBool)
-import Data.Typeable
-import System.IO.Error (ioeSetErrorString, mkIOError)
-import System.IO.Unsafe (unsafePerformIO)
-
-#if __GLASGOW_HASKELL__ >= 611
-import GHC.IO.Exception
-#else
-import GHC.IOBase
-#endif
-
-import Control.Monad (liftM)
-
-import Network.Socket.Internal (throwSocketErrorIfMinus1_)
-
--- ---------------------------------------------------------------------------
--- Basic Types
-
-type ProtocolName = String
-
--- ---------------------------------------------------------------------------
--- Service Database Access
-
--- Calling getServiceByName for a given service and protocol returns
--- the systems service entry.  This should be used to find the port
--- numbers for standard protocols such as SMTP and FTP.  The remaining
--- three functions should be used for browsing the service database
--- sequentially.
-
--- Calling setServiceEntry with True indicates that the service
--- database should be left open between calls to getServiceEntry.  To
--- close the database a call to endServiceEntry is required.  This
--- database file is usually stored in the file /etc/services.
-
-data ServiceEntry  = 
-  ServiceEntry  {
-     serviceName     :: ServiceName,    -- Official Name
-     serviceAliases  :: [ServiceName],  -- aliases
-     servicePort     :: PortNumber,     -- Port Number  ( network byte order )
-     serviceProtocol :: ProtocolName    -- Protocol
-  } deriving (Show, Typeable)
-
-instance Storable ServiceEntry where
-   sizeOf    _ = #const sizeof(struct servent)
-   alignment _ = alignment (undefined :: CInt) -- ???
-
-   peek p = do
-        s_name    <- (#peek struct servent, s_name) p >>= peekCString
-        s_aliases <- (#peek struct servent, s_aliases) p
-                           >>= peekArray0 nullPtr
-                           >>= mapM peekCString
-        s_port    <- (#peek struct servent, s_port) p
-        s_proto   <- (#peek struct servent, s_proto) p >>= peekCString
-        return (ServiceEntry {
-                        serviceName     = s_name,
-                        serviceAliases  = s_aliases,
-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-                        servicePort     = PortNum (fromIntegral (s_port :: CShort)),
-#else
-                           -- s_port is already in network byte order, but it
-                           -- might be the wrong size.
-                        servicePort     = PortNum (fromIntegral (s_port :: CInt)),
-#endif
-                        serviceProtocol = s_proto
-                })
-
-   poke _p = error "Storable.poke(BSD.ServiceEntry) not implemented"
-
-
--- | Get service by name.
-getServiceByName :: ServiceName         -- Service Name
-                 -> ProtocolName        -- Protocol Name
-                 -> IO ServiceEntry     -- Service Entry
-getServiceByName name proto = withLock $ do
- withCString name  $ \ cstr_name  -> do
- withCString proto $ \ cstr_proto -> do
- throwNoSuchThingIfNull "getServiceByName" "no such service entry"
-   $ (trySysCall (c_getservbyname cstr_name cstr_proto))
- >>= peek
-
-foreign import CALLCONV unsafe "getservbyname" 
-  c_getservbyname :: CString -> CString -> IO (Ptr ServiceEntry)
-
--- | Get the service given a 'PortNumber' and 'ProtocolName'.
-getServiceByPort :: PortNumber -> ProtocolName -> IO ServiceEntry
-getServiceByPort (PortNum port) proto = withLock $ do
- withCString proto $ \ cstr_proto -> do
- throwNoSuchThingIfNull "getServiceByPort" "no such service entry"
-   $ (trySysCall (c_getservbyport (fromIntegral port) cstr_proto))
- >>= peek
-
-foreign import CALLCONV unsafe "getservbyport" 
-  c_getservbyport :: CInt -> CString -> IO (Ptr ServiceEntry)
-
--- | Get the 'PortNumber' corresponding to the 'ServiceName'.
-getServicePortNumber :: ServiceName -> IO PortNumber
-getServicePortNumber name = do
-    (ServiceEntry _ _ port _) <- getServiceByName name "tcp"
-    return port
-
-#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)
-getServiceEntry :: IO ServiceEntry
-getServiceEntry = withLock $ do
- throwNoSuchThingIfNull "getServiceEntry" "no such service entry"
-   $ trySysCall c_getservent
- >>= peek
-
-foreign import ccall unsafe "getservent" c_getservent :: IO (Ptr ServiceEntry)
-
-setServiceEntry :: Bool -> IO ()
-setServiceEntry flg = withLock $ trySysCall $ c_setservent (fromBool flg)
-
-foreign import ccall unsafe  "setservent" c_setservent :: CInt -> IO ()
-
-endServiceEntry :: IO ()
-endServiceEntry = withLock $ trySysCall $ c_endservent
-
-foreign import ccall unsafe  "endservent" c_endservent :: IO ()
-
-getServiceEntries :: Bool -> IO [ServiceEntry]
-getServiceEntries stayOpen = do
-  setServiceEntry stayOpen
-  getEntries (getServiceEntry) (endServiceEntry)
-#endif
-
--- ---------------------------------------------------------------------------
--- Protocol Entries
-
--- The following relate directly to the corresponding UNIX C
--- calls for returning the protocol entries. The protocol entry is
--- represented by the Haskell type ProtocolEntry.
-
--- As for setServiceEntry above, calling setProtocolEntry.
--- determines whether or not the protocol database file, usually
--- @/etc/protocols@, is to be kept open between calls of
--- getProtocolEntry. Similarly, 
-
-data ProtocolEntry = 
-  ProtocolEntry  {
-     protoName    :: ProtocolName,      -- Official Name
-     protoAliases :: [ProtocolName],    -- aliases
-     protoNumber  :: ProtocolNumber     -- Protocol Number
-  } deriving (Read, Show, Typeable)
-
-instance Storable ProtocolEntry where
-   sizeOf    _ = #const sizeof(struct protoent)
-   alignment _ = alignment (undefined :: CInt) -- ???
-
-   peek p = do
-        p_name    <- (#peek struct protoent, p_name) p >>= peekCString
-        p_aliases <- (#peek struct protoent, p_aliases) p
-                           >>= peekArray0 nullPtr
-                           >>= mapM peekCString
-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-         -- With WinSock, the protocol number is only a short;
-         -- hoist it in as such, but represent it on the Haskell side
-         -- as a CInt.
-        p_proto_short  <- (#peek struct protoent, p_proto) p 
-        let p_proto = fromIntegral (p_proto_short :: CShort)
-#else
-        p_proto        <- (#peek struct protoent, p_proto) p 
-#endif
-        return (ProtocolEntry { 
-                        protoName    = p_name,
-                        protoAliases = p_aliases,
-                        protoNumber  = p_proto
-                })
-
-   poke _p = error "Storable.poke(BSD.ProtocolEntry) not implemented"
-
-getProtocolByName :: ProtocolName -> IO ProtocolEntry
-getProtocolByName "tcp" = return $
-	ProtocolEntry {protoName = "tcp", protoAliases = ["TCP"], protoNumber = 6}
-getProtocolByName "udp" = return $
-	ProtocolEntry {protoName = "udp", protoAliases = ["UDP"], protoNumber = 17}
-getProtocolByName name = withLock $ do
- withCString name $ \ name_cstr -> do
- throwNoSuchThingIfNull "getProtocolByName" ("no such protocol name: " ++ name)
-   $ (trySysCall.c_getprotobyname) name_cstr
- >>= peek
-
-foreign import  CALLCONV unsafe  "getprotobyname" 
-   c_getprotobyname :: CString -> IO (Ptr ProtocolEntry)
-
-
-getProtocolByNumber :: ProtocolNumber -> IO ProtocolEntry
-getProtocolByNumber num = withLock $ do
- throwNoSuchThingIfNull "getProtocolByNumber" ("no such protocol number: " ++ show num)
-   $ (trySysCall.c_getprotobynumber) (fromIntegral num)
- >>= peek
-
-foreign import CALLCONV unsafe  "getprotobynumber"
-   c_getprotobynumber :: CInt -> IO (Ptr ProtocolEntry)
-
-
-getProtocolNumber :: ProtocolName -> IO ProtocolNumber
-getProtocolNumber proto = do
- (ProtocolEntry _ _ num) <- getProtocolByName proto
- return num
-
--- ---------------------------------------------------------------------------
--- Host lookups
-
-data HostEntry = 
-  HostEntry  {
-     hostName      :: HostName,         -- Official Name
-     hostAliases   :: [HostName],       -- aliases
-     hostFamily    :: Family,           -- Host Type (currently AF_INET)
-     hostAddresses :: [HostAddress]     -- Set of Network Addresses  (in network byte order)
-  } deriving (Read, Show, Typeable)
-
-instance Storable HostEntry where
-   sizeOf    _ = #const sizeof(struct hostent)
-   alignment _ = alignment (undefined :: CInt) -- ???
-
-   peek p = do
-        h_name       <- (#peek struct hostent, h_name) p >>= peekCString
-        h_aliases    <- (#peek struct hostent, h_aliases) p
-                                >>= peekArray0 nullPtr
-                                >>= mapM peekCString
-        h_addrtype   <- (#peek struct hostent, h_addrtype) p
-        -- h_length       <- (#peek struct hostent, h_length) p
-        h_addr_list  <- (#peek struct hostent, h_addr_list) p
-                                >>= peekArray0 nullPtr
-                                >>= mapM peek
-        return (HostEntry {
-                        hostName       = h_name,
-                        hostAliases    = h_aliases,
-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-                        hostFamily     = unpackFamily (fromIntegral (h_addrtype :: CShort)),
-#else
-                        hostFamily     = unpackFamily h_addrtype,
-#endif
-                        hostAddresses  = h_addr_list
-                })
-
-   poke _p = error "Storable.poke(BSD.ServiceEntry) not implemented"
-
-
--- convenience function:
-hostAddress :: HostEntry -> HostAddress
-hostAddress (HostEntry nm _ _ ls) =
- case ls of
-   []    -> error ("BSD.hostAddress: empty network address list for " ++ nm)
-   (x:_) -> x
-
--- getHostByName must use the same lock as the *hostent functions
--- may cause problems if called concurrently.
-
--- | Resolve a 'HostName' to IPv4 address.
-getHostByName :: HostName -> IO HostEntry
-getHostByName name = withLock $ do
-  withCString name $ \ name_cstr -> do
-   ent <- throwNoSuchThingIfNull "getHostByName" "no such host entry"
-                $ trySysCall $ c_gethostbyname name_cstr
-   peek ent
-
-foreign import CALLCONV safe "gethostbyname" 
-   c_gethostbyname :: CString -> IO (Ptr HostEntry)
-
-
--- The locking of gethostbyaddr is similar to gethostbyname.
--- | Get a 'HostEntry' corresponding to the given address and family.
--- Note that only IPv4 is currently supported.
-getHostByAddr :: Family -> HostAddress -> IO HostEntry
-getHostByAddr family addr = do
- with addr $ \ ptr_addr -> withLock $ do
- throwNoSuchThingIfNull         "getHostByAddr" "no such host entry"
-   $ trySysCall $ c_gethostbyaddr ptr_addr (fromIntegral (sizeOf addr)) (packFamily family)
- >>= peek
-
-foreign import CALLCONV safe "gethostbyaddr"
-   c_gethostbyaddr :: Ptr HostAddress -> CInt -> CInt -> IO (Ptr HostEntry)
-
--- ---------------------------------------------------------------------------
--- Accessing network information
-
--- Same set of access functions as for accessing host,protocol and
--- service system info, this time for the types of networks supported.
-
--- network addresses are represented in host byte order.
-type NetworkAddr = CULong
-
-type NetworkName = String
-
-data NetworkEntry =
-  NetworkEntry {
-     networkName        :: NetworkName,   -- official name
-     networkAliases     :: [NetworkName], -- aliases
-     networkFamily      :: Family,         -- type
-     networkAddress     :: NetworkAddr
-   } deriving (Read, Show, Typeable)
-
-instance Storable NetworkEntry where
-   sizeOf    _ = #const sizeof(struct hostent)
-   alignment _ = alignment (undefined :: CInt) -- ???
-
-   peek p = do
-        n_name         <- (#peek struct netent, n_name) p >>= peekCString
-        n_aliases      <- (#peek struct netent, n_aliases) p
-                                >>= peekArray0 nullPtr
-                                >>= mapM peekCString
-        n_addrtype     <- (#peek struct netent, n_addrtype) p
-        n_net          <- (#peek struct netent, n_net) p
-        return (NetworkEntry {
-                        networkName      = n_name,
-                        networkAliases   = n_aliases,
-                        networkFamily    = unpackFamily (fromIntegral 
-                                                        (n_addrtype :: CInt)),
-                        networkAddress   = n_net
-                })
-
-   poke _p = error "Storable.poke(BSD.NetEntry) not implemented"
-
-
-#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)
-getNetworkByName :: NetworkName -> IO NetworkEntry
-getNetworkByName name = withLock $ do
- withCString name $ \ name_cstr -> do
-  throwNoSuchThingIfNull "getNetworkByName" "no such network entry"
-    $ trySysCall $ c_getnetbyname name_cstr
-  >>= peek
-
-foreign import ccall unsafe "getnetbyname" 
-   c_getnetbyname  :: CString -> IO (Ptr NetworkEntry)
-
-getNetworkByAddr :: NetworkAddr -> Family -> IO NetworkEntry
-getNetworkByAddr addr family = withLock $ do
- throwNoSuchThingIfNull "getNetworkByAddr" "no such network entry"
-   $ trySysCall $ c_getnetbyaddr addr (packFamily family)
- >>= peek
-
-foreign import ccall unsafe "getnetbyaddr" 
-   c_getnetbyaddr  :: NetworkAddr -> CInt -> IO (Ptr NetworkEntry)
-
-#endif
-
--- Mutex for name service lockdown
-
-{-# NOINLINE lock #-}
-lock :: MVar ()
-lock = unsafePerformIO $ newMVar ()
-
-withLock :: IO a -> IO a
-withLock act = withMVar lock (\_ -> act)
-
--- ---------------------------------------------------------------------------
--- Miscellaneous Functions
-
--- | Calling getHostName returns the standard host name for the current
--- processor, as set at boot time.
-
-getHostName :: IO HostName
-getHostName = do
-  let size = 256
-  allocaArray0 size $ \ cstr -> do
-    throwSocketErrorIfMinus1_ "getHostName" $ c_gethostname cstr (fromIntegral size)
-    peekCString cstr
-
-foreign import CALLCONV unsafe "gethostname" 
-   c_gethostname :: CString -> CSize -> IO CInt
-
--- Helper function used by the exported functions that provides a
--- Haskellised view of the enumerator functions:
-
-getEntries :: IO a  -- read
-           -> IO () -- at end
-           -> IO [a]
-getEntries getOne atEnd = loop
-  where
-    loop = do
-      vv <- E.catch (liftM Just getOne)
-            (\ e -> let _types = e :: IOException in return Nothing)
-      case vv of
-        Nothing -> return []
-        Just v  -> loop >>= \ vs -> atEnd >> return (v:vs)
-
-
--- ---------------------------------------------------------------------------
--- Winsock only:
---   The BSD API networking calls made locally return NULL upon failure.
---   That failure may very well be due to WinSock not being initialised,
---   so if NULL is seen try init'ing and repeat the call.
-#if !defined(mingw32_HOST_OS) && !defined(_WIN32)
-trySysCall :: IO a -> IO a
-trySysCall act = act
-#else
-trySysCall :: IO (Ptr a) -> IO (Ptr a)
-trySysCall act = do
-  ptr <- act
-  if (ptr == nullPtr)
-   then withSocketsDo act
-   else return ptr
-#endif
-
-throwNoSuchThingIfNull :: String -> String -> IO (Ptr a) -> IO (Ptr a)
-throwNoSuchThingIfNull loc desc act = do
-  ptr <- act
-  if (ptr == nullPtr)
-   then ioError (ioeSetErrorString (mkIOError NoSuchThing loc Nothing Nothing) desc)
-   else return ptr
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket.hsc b/standalone/android/tmp/network-2.4.1.2/Network/Socket.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket.hsc
+++ /dev/null
@@ -1,1663 +0,0 @@
-{-# LANGUAGE CPP, ScopedTypeVariables #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Network.Socket
--- Copyright   :  (c) The University of Glasgow 2001
--- License     :  BSD-style (see the file libraries/network/LICENSE)
---
--- Maintainer  :  libraries@haskell.org
--- Stability   :  provisional
--- Portability :  portable
---
--- The "Network.Socket" module is for when you want full control over
--- sockets.  Essentially the entire C socket API is exposed through
--- this module; in general the operations follow the behaviour of the C
--- functions of the same name (consult your favourite Unix networking book).
---
--- A higher level interface to networking operations is provided
--- through the module "Network".
---
------------------------------------------------------------------------------
-
-#include "HsNet.h"
-
--- NOTE: ##, we want this interpreted when compiling the .hs, not by hsc2hs.
-##include "Typeable.h"
-
--- In order to process this file, you need to have CALLCONV defined.
-
-module Network.Socket
-    (
-    -- * Types
-      Socket(..)
-    , Family(..)
-    , isSupportedFamily
-    , SocketType(..)
-    , isSupportedSocketType
-    , SockAddr(..)
-    , SocketStatus(..)
-    , HostAddress
-#if defined(IPV6_SOCKET_SUPPORTNO)
-    , HostAddress6
-    , FlowInfo
-    , ScopeID
-#endif
-    , ShutdownCmd(..)
-    , ProtocolNumber
-    , defaultProtocol
-    , PortNumber(..)
-    -- PortNumber is used non-abstractly in Network.BSD.  ToDo: remove
-    -- this use and make the type abstract.
-
-    -- * Address operations
-
-    , HostName
-    , ServiceName
-
-#if defined(IPV6_SOCKET_SUPPORT) || 1
-    , AddrInfo(..)
-
-    , AddrInfoFlag(..)
-    , addrInfoFlagImplemented
-
-    , defaultHints
-
-    , getAddrInfo
-
-    , NameInfoFlag(..)
-
-    , getNameInfo
-#endif
-
-    -- * Socket operations
-    , socket
-#if defined(DOMAIN_SOCKET_SUPPORT)
-    , socketPair
-#endif
-    , connect
-    , bind
-    , listen
-    , accept
-    , getPeerName
-    , getSocketName
-
-#ifdef HAVE_STRUCT_UCRED
-    -- get the credentials of our domain socket peer.
-    , getPeerCred
-#endif
-
-    , socketPort
-
-    , socketToHandle
-
-    -- ** Sending and receiving data
-    -- $sendrecv
-    , sendTo
-    , sendBufTo
-
-    , recvFrom
-    , recvBufFrom
-
-    , send
-    , recv
-    , recvLen
-    , sendBuf
-    , recvBuf
-
-    , inet_addr
-    , inet_ntoa
-
-    , shutdown
-    , close
-
-    -- ** Predicates on sockets
-    , isConnected
-    , isBound
-    , isListening
-    , isReadable
-    , isWritable
-
-    -- * Socket options
-    , SocketOption(..)
-    , isSupportedSocketOption
-    , getSocketOption
-    , setSocketOption
-
-    -- * File descriptor transmission
-#ifdef DOMAIN_SOCKET_SUPPORT
-    , sendFd
-    , recvFd
-
-#endif
-
-    -- * Special constants
-    , aNY_PORT
-    , iNADDR_ANY
-#if defined(IPV6_SOCKET_SUPPORTNO)
-    , iN6ADDR_ANY
-#endif
-    , sOMAXCONN
-    , sOL_SOCKET
-#ifdef SCM_RIGHTS
-    , sCM_RIGHTS
-#endif
-    , maxListenQueue
-
-    -- * Initialisation
-    , withSocketsDo
-
-    -- * Very low level operations
-    -- in case you ever want to get at the underlying file descriptor..
-    , fdSocket
-    , mkSocket
-
-    -- * Deprecated aliases
-    -- $deprecated-aliases
-    , bindSocket
-    , sClose
-    , sIsConnected
-    , sIsBound
-    , sIsListening
-    , sIsReadable
-    , sIsWritable
-
-    -- * Internal
-
-    -- | The following are exported ONLY for use in the BSD module and
-    -- should not be used anywhere else.
-
-    , packFamily
-    , unpackFamily
-    , packSocketType
-    ) where
-
-import Data.Bits
-import Data.List (delete, foldl')
-import Data.Maybe (fromMaybe, isJust)
-import Data.Word (Word8, Word16, Word32)
-import Foreign.Ptr (Ptr, castPtr, nullPtr)
-import Foreign.Storable (Storable(..))
-import Foreign.C.Error
-import Foreign.C.String (CString, withCString, peekCString, peekCStringLen)
-import Foreign.C.Types (CUInt, CChar)
-#if __GLASGOW_HASKELL__ >= 703
-import Foreign.C.Types (CInt(..), CSize(..))
-#else
-import Foreign.C.Types (CInt, CSize)
-#endif
-import Foreign.Marshal.Alloc ( alloca, allocaBytes )
-import Foreign.Marshal.Array ( peekArray )
-import Foreign.Marshal.Utils ( maybeWith, with )
-
-import System.IO
-import Control.Monad (liftM, when)
-import Data.Ratio ((%))
-
-import qualified Control.Exception as E
-import Control.Concurrent.MVar
-import Data.Typeable
-import System.IO.Error
-
-import GHC.Conc (threadWaitRead, threadWaitWrite)
-##if MIN_VERSION_base(4,3,1)
-import GHC.Conc (closeFdWith)
-##endif
-# if defined(mingw32_HOST_OS)
-import GHC.Conc (asyncDoProc)
-import Foreign (FunPtr)
-# endif
-# if __GLASGOW_HASKELL__ >= 611
-import qualified GHC.IO.Device
-import GHC.IO.Handle.FD
-import GHC.IO.Exception
-import GHC.IO
-# else
-import GHC.IOBase
-import GHC.Handle
-# endif
-import qualified System.Posix.Internals
-
-# if __GLASGOW_HASKELL__ >= 611
-import GHC.IO.FD
-#endif
-
-import Network.Socket.Internal
-import Network.Socket.Types
-
--- | Either a host name e.g., @\"haskell.org\"@ or a numeric host
--- address string consisting of a dotted decimal IPv4 address or an
--- IPv6 address e.g., @\"192.168.0.1\"@.
-type HostName       = String
-type ServiceName    = String
-
--- ----------------------------------------------------------------------------
--- On Windows, our sockets are not put in non-blocking mode (non-blocking
--- is not supported for regular file descriptors on Windows, and it would
--- be a pain to support it only for sockets).  So there are two cases:
---
---  - the threaded RTS uses safe calls for socket operations to get
---    non-blocking I/O, just like the rest of the I/O library
---
---  - with the non-threaded RTS, only some operations on sockets will be
---    non-blocking.  Reads and writes go through the normal async I/O
---    system.  accept() uses asyncDoProc so is non-blocking.  A handful
---    of others (recvFrom, sendFd, recvFd) will block all threads - if this
---    is a problem, -threaded is the workaround.
---
-##if defined(mingw32_HOST_OS)
-##define SAFE_ON_WIN safe
-##else
-##define SAFE_ON_WIN unsafe
-##endif
-
------------------------------------------------------------------------------
--- Socket types
-
-#if __GLASGOW_HASKELL__ >= 611 && defined(mingw32_HOST_OS)
-socket2FD  (MkSocket fd _ _ _ _) =
-  -- HACK, 1 means True
-  FD{fdFD = fd,fdIsSocket_ = 1}
-#endif
-
-mkSocket :: CInt
-         -> Family
-         -> SocketType
-         -> ProtocolNumber
-         -> SocketStatus
-         -> IO Socket
-mkSocket fd fam sType pNum stat = do
-   mStat <- newMVar stat
-   return (MkSocket fd fam sType pNum mStat)
-
-
-fdSocket :: Socket -> CInt
-fdSocket (MkSocket fd _ _ _ _) = fd
-
--- | This is the default protocol for a given service.
-defaultProtocol :: ProtocolNumber
-defaultProtocol = 0
-
------------------------------------------------------------------------------
--- SockAddr
-
-instance Show SockAddr where
-#if defined(DOMAIN_SOCKET_SUPPORT)
-  showsPrec _ (SockAddrUnix str) = showString str
-#endif
-  showsPrec _ (SockAddrInet port ha)
-   = showString (unsafePerformIO (inet_ntoa ha))
-   . showString ":"
-   . shows port
-#if defined(IPV6_SOCKET_SUPPORT)
-  showsPrec _ addr@(SockAddrInet6 port _ _ _)
-   = showChar '['
-   . showString (unsafePerformIO $
-                 fst `liftM` getNameInfo [NI_NUMERICHOST] True False addr >>=
-                 maybe (fail "showsPrec: impossible internal error") return)
-   . showString "]:"
-   . shows port
-#endif
-
------------------------------------------------------------------------------
--- Connection Functions
-
--- In the following connection and binding primitives.  The names of
--- the equivalent C functions have been preserved where possible. It
--- should be noted that some of these names used in the C library,
--- \tr{bind} in particular, have a different meaning to many Haskell
--- programmers and have thus been renamed by appending the prefix
--- Socket.
-
--- | Create a new socket using the given address family, socket type
--- and protocol number.  The address family is usually 'AF_INET',
--- 'AF_INET6', or 'AF_UNIX'.  The socket type is usually 'Stream' or
--- 'Datagram'.  The protocol number is usually 'defaultProtocol'.
--- If 'AF_INET6' is used, the 'IPv6Only' socket option is set to 0
--- so that both IPv4 and IPv6 can be handled with one socket.
-socket :: Family         -- Family Name (usually AF_INET)
-       -> SocketType     -- Socket Type (usually Stream)
-       -> ProtocolNumber -- Protocol Number (getProtocolByName to find value)
-       -> IO Socket      -- Unconnected Socket
-socket family stype protocol = do
-    c_stype <- packSocketTypeOrThrow "socket" stype
-    fd <- throwSocketErrorIfMinus1Retry "socket" $
-                c_socket (packFamily family) c_stype protocol
-    setNonBlockIfNeeded fd
-    socket_status <- newMVar NotConnected
-    let sock = MkSocket fd family stype protocol socket_status
-    return sock
-
--- | Build a pair of connected socket objects using the given address
--- family, socket type, and protocol number.  Address family, socket
--- type, and protocol number are as for the 'socket' function above.
--- Availability: Unix.
-#if defined(DOMAIN_SOCKET_SUPPORT)
-socketPair :: Family              -- Family Name (usually AF_INET or AF_INET6)
-           -> SocketType          -- Socket Type (usually Stream)
-           -> ProtocolNumber      -- Protocol Number
-           -> IO (Socket, Socket) -- unnamed and connected.
-socketPair family stype protocol = do
-    allocaBytes (2 * sizeOf (1 :: CInt)) $ \ fdArr -> do
-    c_stype <- packSocketTypeOrThrow "socketPair" stype
-    _rc <- throwSocketErrorIfMinus1Retry "socketpair" $
-                c_socketpair (packFamily family) c_stype protocol fdArr
-    [fd1,fd2] <- peekArray 2 fdArr
-    s1 <- mkNonBlockingSocket fd1
-    s2 <- mkNonBlockingSocket fd2
-    return (s1,s2)
-  where
-    mkNonBlockingSocket fd = do
-       setNonBlockIfNeeded fd
-       stat <- newMVar Connected
-       return (MkSocket fd family stype protocol stat)
-
-foreign import ccall unsafe "socketpair"
-  c_socketpair :: CInt -> CInt -> CInt -> Ptr CInt -> IO CInt
-#endif
-
--- | Set the socket to nonblocking, if applicable to this platform.
-setNonBlockIfNeeded :: CInt -> IO ()
-setNonBlockIfNeeded fd =
-#if __GLASGOW_HASKELL__ < 611
-    System.Posix.Internals.setNonBlockingFD fd
-#else
-    System.Posix.Internals.setNonBlockingFD fd True
-#endif
-
------------------------------------------------------------------------------
--- Binding a socket
-
--- | Bind the socket to an address. The socket must not already be
--- bound.  The 'Family' passed to @bind@ must be the
--- same as that passed to 'socket'.  If the special port number
--- 'aNY_PORT' is passed then the system assigns the next available
--- use port.
-bind :: Socket    -- Unconnected Socket
-           -> SockAddr  -- Address to Bind to
-           -> IO ()
-bind (MkSocket s _family _stype _protocol socketStatus) addr = do
- modifyMVar_ socketStatus $ \ status -> do
- if status /= NotConnected
-  then
-   ioError (userError ("bind: can't peform bind on socket in status " ++
-         show status))
-  else do
-   withSockAddr addr $ \p_addr sz -> do
-   _status <- throwSocketErrorIfMinus1Retry "bind" $ c_bind s p_addr (fromIntegral sz)
-   return Bound
-
------------------------------------------------------------------------------
--- Connecting a socket
-
--- | Connect to a remote socket at address.
-connect :: Socket    -- Unconnected Socket
-        -> SockAddr  -- Socket address stuff
-        -> IO ()
-connect sock@(MkSocket s _family _stype _protocol socketStatus) addr = do
- modifyMVar_ socketStatus $ \currentStatus -> do
- if currentStatus /= NotConnected && currentStatus /= Bound
-  then
-    ioError (userError ("connect: can't peform connect on socket in status " ++
-        show currentStatus))
-  else do
-    withSockAddr addr $ \p_addr sz -> do
-
-    let connectLoop = do
-           r <- c_connect s p_addr (fromIntegral sz)
-           if r == -1
-               then do
-#if !(defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS))
-                   err <- getErrno
-                   case () of
-                     _ | err == eINTR       -> connectLoop
-                     _ | err == eINPROGRESS -> connectBlocked
---                   _ | err == eAGAIN      -> connectBlocked
-                     _otherwise             -> throwSocketError "connect"
-#else
-                   rc <- c_getLastError
-                   case rc of
-                     #{const WSANOTINITIALISED} -> do
-                       withSocketsDo (return ())
-                       r <- c_connect s p_addr (fromIntegral sz)
-                       if r == -1
-                         then throwSocketError "connect"
-                         else return r
-                     _ -> throwSocketError "connect"
-#endif
-               else return r
-
-        connectBlocked = do
-           threadWaitWrite (fromIntegral s)
-           err <- getSocketOption sock SoError
-           if (err == 0)
-                then return 0
-                else throwSocketErrorCode "connect" (fromIntegral err)
-
-    connectLoop
-    return Connected
-
------------------------------------------------------------------------------
--- Listen
-
--- | Listen for connections made to the socket.  The second argument
--- specifies the maximum number of queued connections and should be at
--- least 1; the maximum value is system-dependent (usually 5).
-listen :: Socket  -- Connected & Bound Socket
-       -> Int     -- Queue Length
-       -> IO ()
-listen (MkSocket s _family _stype _protocol socketStatus) backlog = do
- modifyMVar_ socketStatus $ \ status -> do
- if status /= Bound
-   then
-     ioError (userError ("listen: can't peform listen on socket in status " ++
-         show status))
-   else do
-     throwSocketErrorIfMinus1Retry "listen" (c_listen s (fromIntegral backlog))
-     return Listening
-
------------------------------------------------------------------------------
--- Accept
---
--- A call to `accept' only returns when data is available on the given
--- socket, unless the socket has been set to non-blocking.  It will
--- return a new socket which should be used to read the incoming data and
--- should then be closed. Using the socket returned by `accept' allows
--- incoming requests to be queued on the original socket.
-
--- | Accept a connection.  The socket must be bound to an address and
--- listening for connections.  The return value is a pair @(conn,
--- address)@ where @conn@ is a new socket object usable to send and
--- receive data on the connection, and @address@ is the address bound
--- to the socket on the other end of the connection.
-accept :: Socket                        -- Queue Socket
-       -> IO (Socket,                   -- Readable Socket
-              SockAddr)                 -- Peer details
-
-accept sock@(MkSocket s family stype protocol status) = do
- currentStatus <- readMVar status
- okay <- isAcceptable sock
- if not okay
-   then
-     ioError (userError ("accept: can't perform accept on socket (" ++ (show (family,stype,protocol)) ++") in status " ++
-         show currentStatus))
-   else do
-     let sz = sizeOfSockAddrByFamily family
-     allocaBytes sz $ \ sockaddr -> do
-#if defined(mingw32_HOST_OS)
-     new_sock <-
-        if threaded
-           then with (fromIntegral sz) $ \ ptr_len ->
-                  throwSocketErrorIfMinus1Retry "Network.Socket.accept" $
-                    c_accept_safe s sockaddr ptr_len
-           else do
-                paramData <- c_newAcceptParams s (fromIntegral sz) sockaddr
-                rc        <- asyncDoProc c_acceptDoProc paramData
-                new_sock  <- c_acceptNewSock    paramData
-                c_free paramData
-                when (rc /= 0) $
-                     throwSocketErrorCode "Network.Socket.accept" (fromIntegral rc)
-                return new_sock
-#else
-     with (fromIntegral sz) $ \ ptr_len -> do
-     new_sock <-
-#if 0
-                 throwSocketErrorIfMinus1RetryMayBlock "accept"
-                        (threadWaitRead (fromIntegral s))
-                        (c_accept4 s sockaddr ptr_len (#const SOCK_NONBLOCK))
-# else
-                 throwSocketErrorWaitRead sock "accept"
-                        (c_accept s sockaddr ptr_len)
-# endif /* HAVE_ACCEPT4 */
-#endif
-     setNonBlockIfNeeded new_sock
-     addr <- peekSockAddr sockaddr
-     new_status <- newMVar Connected
-     return ((MkSocket new_sock family stype protocol new_status), addr)
-
-#if defined(mingw32_HOST_OS)
-foreign import ccall unsafe "HsNet.h acceptNewSock"
-  c_acceptNewSock :: Ptr () -> IO CInt
-foreign import ccall unsafe "HsNet.h newAcceptParams"
-  c_newAcceptParams :: CInt -> CInt -> Ptr a -> IO (Ptr ())
-foreign import ccall unsafe "HsNet.h &acceptDoProc"
-  c_acceptDoProc :: FunPtr (Ptr () -> IO Int)
-foreign import ccall unsafe "free"
-  c_free:: Ptr a -> IO ()
-#endif
-
------------------------------------------------------------------------------
--- ** Sending and reciving data
-
--- $sendrecv
---
--- Do not use the @send@ and @recv@ functions defined in this module
--- in new code, as they incorrectly represent binary data as a Unicode
--- string.  As a result, these functions are inefficient and may lead
--- to bugs in the program.  Instead use the @send@ and @recv@
--- functions defined in the 'Network.Socket.ByteString' module.
-
------------------------------------------------------------------------------
--- sendTo & recvFrom
-
--- | Send data to the socket.  The recipient can be specified
--- explicitly, so the socket need not be in a connected state.
--- Returns the number of bytes sent.  Applications are responsible for
--- ensuring that all data has been sent.
---
--- NOTE: blocking on Windows unless you compile with -threaded (see
--- GHC ticket #1129)
-sendTo :: Socket        -- (possibly) bound/connected Socket
-       -> String        -- Data to send
-       -> SockAddr
-       -> IO Int        -- Number of Bytes sent
-sendTo sock xs addr = do
- withCString xs $ \str -> do
-   sendBufTo sock str (length xs) addr
-
--- | Send data to the socket.  The recipient can be specified
--- explicitly, so the socket need not be in a connected state.
--- Returns the number of bytes sent.  Applications are responsible for
--- ensuring that all data has been sent.
-sendBufTo :: Socket            -- (possibly) bound/connected Socket
-          -> Ptr a -> Int  -- Data to send
-          -> SockAddr
-          -> IO Int            -- Number of Bytes sent
-sendBufTo sock@(MkSocket s _family _stype _protocol _status) ptr nbytes addr = do
- withSockAddr addr $ \p_addr sz -> do
-   liftM fromIntegral $
-     throwSocketErrorWaitWrite sock "sendTo" $
-        c_sendto s ptr (fromIntegral $ nbytes) 0{-flags-}
-                        p_addr (fromIntegral sz)
-
--- | Receive data from the socket. The socket need not be in a
--- connected state. Returns @(bytes, nbytes, address)@ where @bytes@
--- is a @String@ of length @nbytes@ representing the data received and
--- @address@ is a 'SockAddr' representing the address of the sending
--- socket.
---
--- NOTE: blocking on Windows unless you compile with -threaded (see
--- GHC ticket #1129)
-recvFrom :: Socket -> Int -> IO (String, Int, SockAddr)
-recvFrom sock nbytes =
-  allocaBytes nbytes $ \ptr -> do
-    (len, sockaddr) <- recvBufFrom sock ptr nbytes
-    str <- peekCStringLen (ptr, len)
-    return (str, len, sockaddr)
-
--- | Receive data from the socket, writing it into buffer instead of
--- creating a new string.  The socket need not be in a connected
--- state. Returns @(nbytes, address)@ where @nbytes@ is the number of
--- bytes received and @address@ is a 'SockAddr' representing the
--- address of the sending socket.
---
--- NOTE: blocking on Windows unless you compile with -threaded (see
--- GHC ticket #1129)
-recvBufFrom :: Socket -> Ptr a -> Int -> IO (Int, SockAddr)
-recvBufFrom sock@(MkSocket s family _stype _protocol _status) ptr nbytes
- | nbytes <= 0 = ioError (mkInvalidRecvArgError "Network.Socket.recvFrom")
- | otherwise   =
-    withNewSockAddr family $ \ptr_addr sz -> do
-      alloca $ \ptr_len -> do
-        poke ptr_len (fromIntegral sz)
-        len <- throwSocketErrorWaitRead sock "recvFrom" $
-                   c_recvfrom s ptr (fromIntegral nbytes) 0{-flags-}
-                                ptr_addr ptr_len
-        let len' = fromIntegral len
-        if len' == 0
-         then ioError (mkEOFError "Network.Socket.recvFrom")
-         else do
-           flg <- isConnected sock
-             -- For at least one implementation (WinSock 2), recvfrom() ignores
-             -- filling in the sockaddr for connected TCP sockets. Cope with
-             -- this by using getPeerName instead.
-           sockaddr <-
-                if flg then
-                   getPeerName sock
-                else
-                   peekSockAddr ptr_addr
-           return (len', sockaddr)
-
------------------------------------------------------------------------------
--- send & recv
-
--- | Send data to the socket. The socket must be connected to a remote
--- socket. Returns the number of bytes sent.  Applications are
--- responsible for ensuring that all data has been sent.
-send :: Socket  -- Bound/Connected Socket
-     -> String  -- Data to send
-     -> IO Int  -- Number of Bytes sent
-send sock@(MkSocket s _family _stype _protocol _status) xs = do
- let len = length xs
- withCString xs $ \str -> do
-   liftM fromIntegral $
-#if defined(mingw32_HOST_OS)
-# if __GLASGOW_HASKELL__ >= 611
-    writeRawBufferPtr
-      "Network.Socket.send"
-      (socket2FD sock)
-      (castPtr str)
-      0
-      (fromIntegral len)
-#else
-      writeRawBufferPtr
-        "Network.Socket.send"
-        (fromIntegral s)
-        True
-        str
-        0
-       (fromIntegral len)
-#endif
-
-#else
-     throwSocketErrorWaitWrite sock "send" $
-        c_send s str (fromIntegral len) 0{-flags-}
-#endif
-
--- | Send data to the socket. The socket must be connected to a remote
--- socket. Returns the number of bytes sent.  Applications are
--- responsible for ensuring that all data has been sent.
-sendBuf :: Socket     -- Bound/Connected Socket
-        -> Ptr Word8  -- Pointer to the data to send
-        -> Int        -- Length of the buffer
-        -> IO Int     -- Number of Bytes sent
-sendBuf sock@(MkSocket s _family _stype _protocol _status) str len = do
-   liftM fromIntegral $
-#if defined(mingw32_HOST_OS)
-# if __GLASGOW_HASKELL__ >= 611
-    writeRawBufferPtr
-      "Network.Socket.sendBuf"
-      (socket2FD sock)
-      (castPtr str)
-      0
-      (fromIntegral len)
-# else
-      writeRawBufferPtr
-        "Network.Socket.sendBuf"
-        (fromIntegral s)
-        True
-        str
-        0
-       (fromIntegral len)
-# endif
-#else
-     throwSocketErrorWaitWrite sock "sendBuf" $
-        c_send s str (fromIntegral len) 0{-flags-}
-#endif
-
-
--- | Receive data from the socket.  The socket must be in a connected
--- state. This function may return fewer bytes than specified.  If the
--- message is longer than the specified length, it may be discarded
--- depending on the type of socket.  This function may block until a
--- message arrives.
---
--- Considering hardware and network realities, the maximum number of
--- bytes to receive should be a small power of 2, e.g., 4096.
---
--- For TCP sockets, a zero length return value means the peer has
--- closed its half side of the connection.
-recv :: Socket -> Int -> IO String
-recv sock l = recvLen sock l >>= \ (s,_) -> return s
-
-recvLen :: Socket -> Int -> IO (String, Int)
-recvLen sock@(MkSocket s _family _stype _protocol _status) nbytes
- | nbytes <= 0 = ioError (mkInvalidRecvArgError "Network.Socket.recv")
- | otherwise   = do
-     allocaBytes nbytes $ \ptr -> do
-        len <-
-#if defined(mingw32_HOST_OS)
-# if __GLASGOW_HASKELL__ >= 611
-          readRawBufferPtr "Network.Socket.recvLen" (socket2FD sock) ptr 0
-                 (fromIntegral nbytes)
-#else
-          readRawBufferPtr "Network.Socket.recvLen" (fromIntegral s) True ptr 0
-                 (fromIntegral nbytes)
-#endif
-#else
-               throwSocketErrorWaitRead sock "recv" $
-                   c_recv s ptr (fromIntegral nbytes) 0{-flags-}
-#endif
-        let len' = fromIntegral len
-        if len' == 0
-         then ioError (mkEOFError "Network.Socket.recv")
-         else do
-           s' <- peekCStringLen (castPtr ptr,len')
-           return (s', len')
-
--- | Receive data from the socket.  The socket must be in a connected
--- state. This function may return fewer bytes than specified.  If the
--- message is longer than the specified length, it may be discarded
--- depending on the type of socket.  This function may block until a
--- message arrives.
---
--- Considering hardware and network realities, the maximum number of
--- bytes to receive should be a small power of 2, e.g., 4096.
---
--- For TCP sockets, a zero length return value means the peer has
--- closed its half side of the connection.
-recvBuf :: Socket -> Ptr Word8 -> Int -> IO Int
-recvBuf sock p l = recvLenBuf sock p l
-
-recvLenBuf :: Socket -> Ptr Word8 -> Int -> IO Int
-recvLenBuf sock@(MkSocket s _family _stype _protocol _status) ptr nbytes
- | nbytes <= 0 = ioError (mkInvalidRecvArgError "Network.Socket.recvBuf")
- | otherwise   = do
-        len <-
-#if defined(mingw32_HOST_OS)
-# if __GLASGOW_HASKELL__ >= 611
-          readRawBufferPtr "Network.Socket.recvLenBuf" (socket2FD sock) ptr 0
-                 (fromIntegral nbytes)
-#else
-          readRawBufferPtr "Network.Socket.recvLenBuf" (fromIntegral s) True ptr 0
-                 (fromIntegral nbytes)
-#endif
-#else
-               throwSocketErrorWaitRead sock "recvBuf" $
-                   c_recv s (castPtr ptr) (fromIntegral nbytes) 0{-flags-}
-#endif
-        let len' = fromIntegral len
-        if len' == 0
-         then ioError (mkEOFError "Network.Socket.recvBuf")
-         else return len'
-
-
--- ---------------------------------------------------------------------------
--- socketPort
---
--- The port number the given socket is currently connected to can be
--- determined by calling $port$, is generally only useful when bind
--- was given $aNY\_PORT$.
-
-socketPort :: Socket            -- Connected & Bound Socket
-           -> IO PortNumber     -- Port Number of Socket
-socketPort sock@(MkSocket _ AF_INET _ _ _) = do
-    (SockAddrInet port _) <- getSocketName sock
-    return port
-#if defined(IPV6_SOCKET_SUPPORT)
-socketPort sock@(MkSocket _ AF_INET6 _ _ _) = do
-    (SockAddrInet6 port _ _ _) <- getSocketName sock
-    return port
-#endif
-socketPort (MkSocket _ family _ _ _) =
-    ioError (userError ("socketPort: not supported for Family " ++ show family))
-
-
--- ---------------------------------------------------------------------------
--- getPeerName
-
--- Calling $getPeerName$ returns the address details of the machine,
--- other than the local one, which is connected to the socket. This is
--- used in programs such as FTP to determine where to send the
--- returning data.  The corresponding call to get the details of the
--- local machine is $getSocketName$.
-
-getPeerName   :: Socket -> IO SockAddr
-getPeerName (MkSocket s family _ _ _) = do
- withNewSockAddr family $ \ptr sz -> do
-   with (fromIntegral sz) $ \int_star -> do
-   throwSocketErrorIfMinus1Retry "getPeerName" $ c_getpeername s ptr int_star
-   _sz <- peek int_star
-   peekSockAddr ptr
-
-getSocketName :: Socket -> IO SockAddr
-getSocketName (MkSocket s family _ _ _) = do
- withNewSockAddr family $ \ptr sz -> do
-   with (fromIntegral sz) $ \int_star -> do
-   throwSocketErrorIfMinus1Retry "getSocketName" $ c_getsockname s ptr int_star
-   peekSockAddr ptr
-
------------------------------------------------------------------------------
--- Socket Properties
-
--- | Socket options for use with 'setSocketOption' and 'getSocketOption'.
---
--- The existence of a constructor does not imply that the relevant option
--- is supported on your system: see 'isSupportedSocketOption'
-data SocketOption
-    = Debug         -- ^ SO_DEBUG
-    | ReuseAddr     -- ^ SO_REUSEADDR
-    | Type          -- ^ SO_TYPE
-    | SoError       -- ^ SO_ERROR
-    | DontRoute     -- ^ SO_DONTROUTE
-    | Broadcast     -- ^ SO_BROADCAST
-    | SendBuffer    -- ^ SO_SNDBUF
-    | RecvBuffer    -- ^ SO_RCVBUF
-    | KeepAlive     -- ^ SO_KEEPALIVE
-    | OOBInline     -- ^ SO_OOBINLINE
-    | TimeToLive    -- ^ IP_TTL
-    | MaxSegment    -- ^ TCP_MAXSEG
-    | NoDelay       -- ^ TCP_NODELAY
-    | Cork          -- ^ TCP_CORK
-    | Linger        -- ^ SO_LINGER
-    | ReusePort     -- ^ SO_REUSEPORT
-    | RecvLowWater  -- ^ SO_RCVLOWAT
-    | SendLowWater  -- ^ SO_SNDLOWAT
-    | RecvTimeOut   -- ^ SO_RCVTIMEO
-    | SendTimeOut   -- ^ SO_SNDTIMEO
-    | UseLoopBack   -- ^ SO_USELOOPBACK
-    | IPv6Only      -- ^ IPV6_V6ONLY
-    deriving (Show, Typeable)
-
--- | Does the 'SocketOption' exist on this system?
-isSupportedSocketOption :: SocketOption -> Bool
-isSupportedSocketOption = isJust . packSocketOption
-
--- | For a socket option, return Just (level, value) where level is the
--- corresponding C option level constant (e.g. SOL_SOCKET) and value is
--- the option constant itself (e.g. SO_DEBUG)
--- If either constant does not exist, return Nothing.
-packSocketOption :: SocketOption -> Maybe (CInt, CInt)
-packSocketOption so =
-  -- The Just here is a hack to disable GHC's overlapping pattern detection:
-  -- the problem is if all constants are present, the fallback pattern is
-  -- redundant, but if they aren't then it isn't. Hence we introduce an
-  -- extra pattern (Nothing) that can't possibly happen, so that the
-  -- fallback is always (in principle) necessary.
-  -- I feel a little bad for including this, but such are the sacrifices we
-  -- make while working with CPP - excluding the fallback pattern correctly
-  -- would be a serious nuisance.
-  -- (NB: comments elsewhere in this file refer to this one)
-  case Just so of
-#ifdef SOL_SOCKET
-#ifdef SO_DEBUG
-    Just Debug         -> Just ((#const SOL_SOCKET), (#const SO_DEBUG))
-#endif
-#ifdef SO_REUSEADDR
-    Just ReuseAddr     -> Just ((#const SOL_SOCKET), (#const SO_REUSEADDR))
-#endif
-#ifdef SO_TYPE
-    Just Type          -> Just ((#const SOL_SOCKET), (#const SO_TYPE))
-#endif
-#ifdef SO_ERROR
-    Just SoError       -> Just ((#const SOL_SOCKET), (#const SO_ERROR))
-#endif
-#ifdef SO_DONTROUTE
-    Just DontRoute     -> Just ((#const SOL_SOCKET), (#const SO_DONTROUTE))
-#endif
-#ifdef SO_BROADCAST
-    Just Broadcast     -> Just ((#const SOL_SOCKET), (#const SO_BROADCAST))
-#endif
-#ifdef SO_SNDBUF
-    Just SendBuffer    -> Just ((#const SOL_SOCKET), (#const SO_SNDBUF))
-#endif
-#ifdef SO_RCVBUF
-    Just RecvBuffer    -> Just ((#const SOL_SOCKET), (#const SO_RCVBUF))
-#endif
-#ifdef SO_KEEPALIVE
-    Just KeepAlive     -> Just ((#const SOL_SOCKET), (#const SO_KEEPALIVE))
-#endif
-#ifdef SO_OOBINLINE
-    Just OOBInline     -> Just ((#const SOL_SOCKET), (#const SO_OOBINLINE))
-#endif
-#ifdef SO_LINGER
-    Just Linger        -> Just ((#const SOL_SOCKET), (#const SO_LINGER))
-#endif
-#ifdef SO_REUSEPORT
-    Just ReusePort     -> Just ((#const SOL_SOCKET), (#const SO_REUSEPORT))
-#endif
-#ifdef SO_RCVLOWAT
-    Just RecvLowWater  -> Just ((#const SOL_SOCKET), (#const SO_RCVLOWAT))
-#endif
-#ifdef SO_SNDLOWAT
-    Just SendLowWater  -> Just ((#const SOL_SOCKET), (#const SO_SNDLOWAT))
-#endif
-#ifdef SO_RCVTIMEO
-    Just RecvTimeOut   -> Just ((#const SOL_SOCKET), (#const SO_RCVTIMEO))
-#endif
-#ifdef SO_SNDTIMEO
-    Just SendTimeOut   -> Just ((#const SOL_SOCKET), (#const SO_SNDTIMEO))
-#endif
-#ifdef SO_USELOOPBACK
-    Just UseLoopBack   -> Just ((#const SOL_SOCKET), (#const SO_USELOOPBACK))
-#endif
-#endif // SOL_SOCKET
-#ifdef IPPROTO_IP
-#ifdef IP_TTL
-    Just TimeToLive    -> Just ((#const IPPROTO_IP), (#const IP_TTL))
-#endif
-#endif // IPPROTO_IP
-#ifdef IPPROTO_TCP
-#ifdef TCP_MAXSEG
-    Just MaxSegment    -> Just ((#const IPPROTO_TCP), (#const TCP_MAXSEG))
-#endif
-#ifdef TCP_NODELAY
-    Just NoDelay       -> Nothing -- Just ((#const IPPROTO_TCP), (#const TCP_NODELAY))
-#endif
-#ifdef TCP_CORK
-    Just Cork          -> Just ((#const IPPROTO_TCP), (#const TCP_CORK))
-#endif
-#endif // IPPROTO_TCP
-#ifdef IPPROTO_IPV6
-#if HAVE_DECL_IPV6_V6ONLY
-    Just IPv6Only      -> Just ((#const IPPROTO_IPV6), (#const IPV6_V6ONLY))
-#endif
-#endif // IPPROTO_IPV6
-    _             -> Nothing
-
--- | Return the option level and option value if they exist,
--- otherwise throw an error that begins "Network.Socket." ++ the String
--- parameter
-packSocketOption' :: String -> SocketOption -> IO (CInt, CInt)
-packSocketOption' caller so = maybe err return (packSocketOption so)
- where
-  err = ioError . userError . concat $ ["Network.Socket.", caller,
-    ": socket option ", show so, " unsupported on this system"]
-
--- | Set a socket option that expects an Int value.
--- There is currently no API to set e.g. the timeval socket options
-setSocketOption :: Socket
-                -> SocketOption -- Option Name
-                -> Int          -- Option Value
-                -> IO ()
-setSocketOption (MkSocket s _ _ _ _) so v = do
-   (level, opt) <- packSocketOption' "setSocketOption" so
-   with (fromIntegral v) $ \ptr_v -> do
-   throwSocketErrorIfMinus1_ "setSocketOption" $
-       c_setsockopt s level opt ptr_v
-          (fromIntegral (sizeOf (undefined :: CInt)))
-   return ()
-
-
--- | Get a socket option that gives an Int value.
--- There is currently no API to get e.g. the timeval socket options
-getSocketOption :: Socket
-                -> SocketOption  -- Option Name
-                -> IO Int        -- Option Value
-getSocketOption (MkSocket s _ _ _ _) so = do
-   (level, opt) <- packSocketOption' "getSocketOption" so
-   alloca $ \ptr_v ->
-     with (fromIntegral (sizeOf (undefined :: CInt))) $ \ptr_sz -> do
-       throwSocketErrorIfMinus1Retry "getSocketOption" $
-         c_getsockopt s level opt ptr_v ptr_sz
-       fromIntegral `liftM` peek ptr_v
-
-
-#ifdef HAVE_STRUCT_UCRED
--- | Returns the processID, userID and groupID of the socket's peer.
---
--- Only available on platforms that support SO_PEERCRED on domain sockets.
-getPeerCred :: Socket -> IO (CUInt, CUInt, CUInt)
-getPeerCred sock = do
-  let fd = fdSocket sock
-  let sz = (fromIntegral (#const sizeof(struct ucred)))
-  with sz $ \ ptr_cr ->
-   alloca       $ \ ptr_sz -> do
-     poke ptr_sz sz
-     throwSocketErrorIfMinus1Retry "getPeerCred" $
-       c_getsockopt fd (#const SOL_SOCKET) (#const SO_PEERCRED) ptr_cr ptr_sz
-     pid <- (#peek struct ucred, pid) ptr_cr
-     uid <- (#peek struct ucred, uid) ptr_cr
-     gid <- (#peek struct ucred, gid) ptr_cr
-     return (pid, uid, gid)
-#endif
-
-##if !(MIN_VERSION_base(4,3,1))
-closeFdWith closer fd = closer fd
-##endif
-
-#if defined(DOMAIN_SOCKET_SUPPORT)
--- sending/receiving ancillary socket data; low-level mechanism
--- for transmitting file descriptors, mainly.
-sendFd :: Socket -> CInt -> IO ()
-sendFd sock outfd = do
-  throwSocketErrorWaitWrite sock "sendFd" $
-     c_sendFd (fdSocket sock) outfd
-   -- Note: If Winsock supported FD-passing, thi would have been
-   -- incorrect (since socket FDs need to be closed via closesocket().)
-  closeFd outfd
-
-recvFd :: Socket -> IO CInt
-recvFd sock = do
-  theFd <- throwSocketErrorWaitRead sock "recvFd" $
-               c_recvFd (fdSocket sock)
-  return theFd
-
-foreign import ccall SAFE_ON_WIN "sendFd" c_sendFd :: CInt -> CInt -> IO CInt
-foreign import ccall SAFE_ON_WIN "recvFd" c_recvFd :: CInt -> IO CInt
-
-#endif
-
--- ---------------------------------------------------------------------------
--- Utility Functions
-
-aNY_PORT :: PortNumber
-aNY_PORT = 0
-
--- | The IPv4 wild card address.
-
-iNADDR_ANY :: HostAddress
-iNADDR_ANY = htonl (#const INADDR_ANY)
-
-foreign import CALLCONV unsafe "my_htonl" htonl :: Word32 -> Word32
-
-#if defined(IPV6_SOCKET_SUPPORTNO)
--- | The IPv6 wild card address.
-
-iN6ADDR_ANY :: HostAddress6
-iN6ADDR_ANY = (0, 0, 0, 0)
-#endif
-
-sOMAXCONN :: Int
-sOMAXCONN = #const SOMAXCONN
-
-sOL_SOCKET :: Int
-sOL_SOCKET = #const SOL_SOCKET
-
-#ifdef SCM_RIGHTS
-sCM_RIGHTS :: Int
-sCM_RIGHTS = #const SCM_RIGHTS
-#endif
-
--- | This is the value of SOMAXCONN, typically 128.
--- 128 is good enough for normal network servers but
--- is too small for high performance servers.
-maxListenQueue :: Int
-maxListenQueue = sOMAXCONN
-
--- -----------------------------------------------------------------------------
-
-data ShutdownCmd
- = ShutdownReceive
- | ShutdownSend
- | ShutdownBoth
- deriving Typeable
-
-sdownCmdToInt :: ShutdownCmd -> CInt
-sdownCmdToInt ShutdownReceive = 0
-sdownCmdToInt ShutdownSend    = 1
-sdownCmdToInt ShutdownBoth    = 2
-
--- | Shut down one or both halves of the connection, depending on the
--- second argument to the function.  If the second argument is
--- 'ShutdownReceive', further receives are disallowed.  If it is
--- 'ShutdownSend', further sends are disallowed.  If it is
--- 'ShutdownBoth', further sends and receives are disallowed.
-shutdown :: Socket -> ShutdownCmd -> IO ()
-shutdown (MkSocket s _ _ _ _) stype = do
-  throwSocketErrorIfMinus1Retry "shutdown" (c_shutdown s (sdownCmdToInt stype))
-  return ()
-
--- -----------------------------------------------------------------------------
-
--- | Close the socket.  All future operations on the socket object
--- will fail.  The remote end will receive no more data (after queued
--- data is flushed).
-close :: Socket -> IO ()
-close (MkSocket s _ _ _ socketStatus) = do
- modifyMVar_ socketStatus $ \ status ->
-   case status of
-     ConvertedToHandle ->
-         ioError (userError ("close: converted to a Handle, use hClose instead"))
-     Closed ->
-         return status
-     _ -> closeFdWith (closeFd . fromIntegral) (fromIntegral s) >> return Closed
-
--- -----------------------------------------------------------------------------
-
-isConnected :: Socket -> IO Bool
-isConnected (MkSocket _ _ _ _ status) = do
-    value <- readMVar status
-    return (value == Connected)
-
--- -----------------------------------------------------------------------------
--- Socket Predicates
-
-isBound :: Socket -> IO Bool
-isBound (MkSocket _ _ _ _ status) = do
-    value <- readMVar status
-    return (value == Bound)
-
-isListening :: Socket -> IO Bool
-isListening (MkSocket _ _ _  _ status) = do
-    value <- readMVar status
-    return (value == Listening)
-
-isReadable  :: Socket -> IO Bool
-isReadable (MkSocket _ _ _ _ status) = do
-    value <- readMVar status
-    return (value == Listening || value == Connected)
-
-isWritable  :: Socket -> IO Bool
-isWritable = isReadable -- sort of.
-
-isAcceptable :: Socket -> IO Bool
-#if defined(DOMAIN_SOCKET_SUPPORT)
-isAcceptable (MkSocket _ AF_UNIX x _ status)
-    | x == Stream || x == SeqPacket = do
-        value <- readMVar status
-        return (value == Connected || value == Bound || value == Listening)
-isAcceptable (MkSocket _ AF_UNIX _ _ _) = return False
-#endif
-isAcceptable (MkSocket _ _ _ _ status) = do
-    value <- readMVar status
-    return (value == Connected || value == Listening)
-
--- -----------------------------------------------------------------------------
--- Internet address manipulation routines:
-
-inet_addr :: String -> IO HostAddress
-inet_addr ipstr = do
-   withCString ipstr $ \str -> do
-   had <- c_inet_addr str
-   if had == -1
-    then ioError (userError ("inet_addr: Malformed address: " ++ ipstr))
-    else return had  -- network byte order
-
-inet_ntoa :: HostAddress -> IO String
-inet_ntoa haddr = do
-  pstr <- c_inet_ntoa haddr
-  peekCString pstr
-
--- | Turns a Socket into an 'Handle'. By default, the new handle is
--- unbuffered. Use 'System.IO.hSetBuffering' to change the buffering.
---
--- Note that since a 'Handle' is automatically closed by a finalizer
--- when it is no longer referenced, you should avoid doing any more
--- operations on the 'Socket' after calling 'socketToHandle'.  To
--- close the 'Socket' after 'socketToHandle', call 'System.IO.hClose'
--- on the 'Handle'.
-
-#ifndef __PARALLEL_HASKELL__
-socketToHandle :: Socket -> IOMode -> IO Handle
-socketToHandle s@(MkSocket fd _ _ _ socketStatus) mode = do
- modifyMVar socketStatus $ \ status ->
-    if status == ConvertedToHandle
-        then ioError (userError ("socketToHandle: already a Handle"))
-        else do
-# if __GLASGOW_HASKELL__ >= 611
-    h <- fdToHandle' (fromIntegral fd) (Just GHC.IO.Device.Stream) True (show s) mode True{-bin-}
-# elif __GLASGOW_HASKELL__ >= 608
-    h <- fdToHandle' (fromIntegral fd) (Just System.Posix.Internals.Stream) True (show s) mode True{-bin-}
-# elif __GLASGOW_HASKELL__ < 608
-    h <- openFd (fromIntegral fd) (Just System.Posix.Internals.Stream) True (show s) mode True{-bin-}
-# endif
-    hSetBuffering h NoBuffering
-    return (ConvertedToHandle, h)
-#else
-socketToHandle (MkSocket s family stype protocol status) m =
-  error "socketToHandle not implemented in a parallel setup"
-#endif
-
--- | Pack a list of values into a bitmask.  The possible mappings from
--- value to bit-to-set are given as the first argument.  We assume
--- that each value can cause exactly one bit to be set; unpackBits will
--- break if this property is not true.
-
-packBits :: (Eq a, Num b, Bits b) => [(a, b)] -> [a] -> b
-
-packBits mapping xs = foldl' pack 0 mapping
-    where pack acc (k, v) | k `elem` xs = acc .|. v
-                          | otherwise   = acc
-
--- | Unpack a bitmask into a list of values.
-
-unpackBits :: (Num b, Bits b) => [(a, b)] -> b -> [a]
-
--- Be permissive and ignore unknown bit values. At least on OS X,
--- getaddrinfo returns an ai_flags field with bits set that have no
--- entry in <netdb.h>.
-unpackBits [] _    = []
-unpackBits ((k,v):xs) r
-    | r .&. v /= 0 = k : unpackBits xs (r .&. complement v)
-    | otherwise    = unpackBits xs r
-
------------------------------------------------------------------------------
--- Address and service lookups
-
-#if defined(IPV6_SOCKET_SUPPORT) || 1
-
--- | Flags that control the querying behaviour of 'getAddrInfo'.
-data AddrInfoFlag
-    = AI_ADDRCONFIG
-    | AI_ALL
-    | AI_CANONNAME
-    | AI_NUMERICHOST
-    | AI_NUMERICSERV
-    | AI_PASSIVE
-    | AI_V4MAPPED
-    deriving (Eq, Read, Show, Typeable)
-
-aiFlagMapping :: [(AddrInfoFlag, CInt)]
-
-aiFlagMapping =
-    [
-#if HAVE_DECL_AI_ADDRCONFIG
-     (AI_ADDRCONFIG, #const AI_ADDRCONFIG),
-#else
-     (AI_ADDRCONFIG, 0),
-#endif
-#if HAVE_DECL_AI_ALL
-     (AI_ALL, #const AI_ALL),
-#else
-     (AI_ALL, 0),
-#endif
-     (AI_CANONNAME, #const AI_CANONNAME),
-     (AI_NUMERICHOST, #const AI_NUMERICHOST),
-#if HAVE_DECL_AI_NUMERICSERV
-     (AI_NUMERICSERV, #const AI_NUMERICSERV),
-#else
-     (AI_NUMERICSERV, 0),
-#endif
-     (AI_PASSIVE, #const AI_PASSIVE),
-#if HAVE_DECL_AI_V4MAPPED
-     (AI_V4MAPPED, #const AI_V4MAPPED)
-#else
-     (AI_V4MAPPED, 0)
-#endif
-    ]
-
--- | Indicate whether the given 'AddrInfoFlag' will have any effect on
--- this system.
-addrInfoFlagImplemented :: AddrInfoFlag -> Bool
-addrInfoFlagImplemented f = packBits aiFlagMapping [f] /= 0
-
-data AddrInfo =
-    AddrInfo {
-        addrFlags :: [AddrInfoFlag],
-        addrFamily :: Family,
-        addrSocketType :: SocketType,
-        addrProtocol :: ProtocolNumber,
-        addrAddress :: SockAddr,
-        addrCanonName :: Maybe String
-        }
-    deriving (Eq, Show, Typeable)
-
-instance Storable AddrInfo where
-    sizeOf    _ = #const sizeof(struct addrinfo)
-    alignment _ = alignment (undefined :: CInt)
-
-    peek p = do
-        ai_flags <- (#peek struct addrinfo, ai_flags) p
-        ai_family <- (#peek struct addrinfo, ai_family) p
-        ai_socktype <- (#peek struct addrinfo, ai_socktype) p
-        ai_protocol <- (#peek struct addrinfo, ai_protocol) p
-        ai_addr <- (#peek struct addrinfo, ai_addr) p >>= peekSockAddr
-        ai_canonname_ptr <- (#peek struct addrinfo, ai_canonname) p
-
-        ai_canonname <- if ai_canonname_ptr == nullPtr
-                        then return Nothing
-                        else liftM Just $ peekCString ai_canonname_ptr
-
-        socktype <- unpackSocketType' "AddrInfo.peek" ai_socktype
-        return (AddrInfo
-                {
-                 addrFlags = unpackBits aiFlagMapping ai_flags,
-                 addrFamily = unpackFamily ai_family,
-                 addrSocketType = socktype,
-                 addrProtocol = ai_protocol,
-                 addrAddress = ai_addr,
-                 addrCanonName = ai_canonname
-                })
-
-    poke p (AddrInfo flags family socketType protocol _ _) = do
-        c_stype <- packSocketTypeOrThrow "AddrInfo.poke" socketType
-
-        (#poke struct addrinfo, ai_flags) p (packBits aiFlagMapping flags)
-        (#poke struct addrinfo, ai_family) p (packFamily family)
-        (#poke struct addrinfo, ai_socktype) p c_stype
-        (#poke struct addrinfo, ai_protocol) p protocol
-
-        -- stuff below is probably not needed, but let's zero it for safety
-
-        (#poke struct addrinfo, ai_addrlen) p (0::CSize)
-        (#poke struct addrinfo, ai_addr) p nullPtr
-        (#poke struct addrinfo, ai_canonname) p nullPtr
-        (#poke struct addrinfo, ai_next) p nullPtr
-
-data NameInfoFlag
-    = NI_DGRAM
-    | NI_NAMEREQD
-    | NI_NOFQDN
-    | NI_NUMERICHOST
-    | NI_NUMERICSERV
-    deriving (Eq, Read, Show, Typeable)
-
-niFlagMapping :: [(NameInfoFlag, CInt)]
-
-niFlagMapping = [(NI_DGRAM, #const NI_DGRAM),
-                 (NI_NAMEREQD, #const NI_NAMEREQD),
-                 (NI_NOFQDN, #const NI_NOFQDN),
-                 (NI_NUMERICHOST, #const NI_NUMERICHOST),
-                 (NI_NUMERICSERV, #const NI_NUMERICSERV)]
-
--- | Default hints for address lookup with 'getAddrInfo'.  The values
--- of the 'addrAddress' and 'addrCanonName' fields are 'undefined',
--- and are never inspected by 'getAddrInfo'.
-
-defaultHints :: AddrInfo
-
-defaultHints = AddrInfo {
-                         addrFlags = [],
-                         addrFamily = AF_UNSPEC,
-                         addrSocketType = NoSocketType,
-                         addrProtocol = defaultProtocol,
-                         addrAddress = undefined,
-                         addrCanonName = undefined
-                        }
-
--- | Resolve a host or service name to one or more addresses.
--- The 'AddrInfo' values that this function returns contain 'SockAddr'
--- values that you can pass directly to 'connect' or
--- 'bind'.
---
--- This function is protocol independent.  It can return both IPv4 and
--- IPv6 address information.
---
--- The 'AddrInfo' argument specifies the preferred query behaviour,
--- socket options, or protocol.  You can override these conveniently
--- using Haskell's record update syntax on 'defaultHints', for example
--- as follows:
---
--- @
---   myHints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }
--- @
---
--- Values for 'addrFlags' control query behaviour.  The supported
--- flags are as follows:
---
---   [@AI_PASSIVE@] If no 'HostName' value is provided, the network
---     address in each 'SockAddr'
---     will be left as a "wild card", i.e. as either 'iNADDR_ANY'
---     or 'iN6ADDR_ANY'.  This is useful for server applications that
---     will accept connections from any client.
---
---   [@AI_CANONNAME@] The 'addrCanonName' field of the first returned
---     'AddrInfo' will contain the "canonical name" of the host.
---
---   [@AI_NUMERICHOST@] The 'HostName' argument /must/ be a numeric
---     address in string form, and network name lookups will not be
---     attempted.
---
--- /Note/: Although the following flags are required by RFC 3493, they
--- may not have an effect on all platforms, because the underlying
--- network stack may not support them.  To see whether a flag from the
--- list below will have any effect, call 'addrInfoFlagImplemented'.
---
---   [@AI_NUMERICSERV@] The 'ServiceName' argument /must/ be a port
---     number in string form, and service name lookups will not be
---     attempted.
---
---   [@AI_ADDRCONFIG@] The list of returned 'AddrInfo' values will
---     only contain IPv4 addresses if the local system has at least
---     one IPv4 interface configured, and likewise for IPv6.
---
---   [@AI_V4MAPPED@] If an IPv6 lookup is performed, and no IPv6
---     addresses are found, IPv6-mapped IPv4 addresses will be
---     returned.
---
---   [@AI_ALL@] If 'AI_ALL' is specified, return all matching IPv6 and
---     IPv4 addresses.  Otherwise, this flag has no effect.
---
--- You must provide a 'Just' value for at least one of the 'HostName'
--- or 'ServiceName' arguments.  'HostName' can be either a numeric
--- network address (dotted quad for IPv4, colon-separated hex for
--- IPv6) or a hostname.  In the latter case, its addresses will be
--- looked up unless 'AI_NUMERICHOST' is specified as a hint.  If you
--- do not provide a 'HostName' value /and/ do not set 'AI_PASSIVE' as
--- a hint, network addresses in the result will contain the address of
--- the loopback interface.
---
--- If the query fails, this function throws an IO exception instead of
--- returning an empty list.  Otherwise, it returns a non-empty list
--- of 'AddrInfo' values.
---
--- There are several reasons why a query might result in several
--- values.  For example, the queried-for host could be multihomed, or
--- the service might be available via several protocols.
---
--- Note: the order of arguments is slightly different to that defined
--- for @getaddrinfo@ in RFC 2553.  The 'AddrInfo' parameter comes first
--- to make partial application easier.
---
--- Example:
--- @
---   let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }
---   addrs <- getAddrInfo (Just hints) (Just "www.haskell.org") (Just "http")
---   let addr = head addrs
---   sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr)
---   connect sock (addrAddress addr)
--- @
-
-getAddrInfo :: Maybe AddrInfo -- ^ preferred socket type or protocol
-            -> Maybe HostName -- ^ host name to look up
-            -> Maybe ServiceName -- ^ service name to look up
-            -> IO [AddrInfo] -- ^ resolved addresses, with "best" first
-
-getAddrInfo hints node service =
-  maybeWith withCString node $ \c_node ->
-    maybeWith withCString service $ \c_service ->
-      maybeWith with filteredHints $ \c_hints ->
-        alloca $ \ptr_ptr_addrs -> do
-          ret <- c_getaddrinfo c_node c_service c_hints ptr_ptr_addrs
-          case ret of
-            0 -> do ptr_addrs <- peek ptr_ptr_addrs
-                    ais <- followAddrInfo ptr_addrs
-                    c_freeaddrinfo ptr_addrs
-                    return ais
-            _ -> do err <- gai_strerror ret
-                    ioError (ioeSetErrorString
-                             (mkIOError NoSuchThing "getAddrInfo" Nothing
-                              Nothing) err)
-    -- Leaving out the service and using AI_NUMERICSERV causes a
-    -- segfault on OS X 10.8.2. This code removes AI_NUMERICSERV
-    -- (which has no effect) in that case.
-  where
-#if defined(darwin_HOST_OS)
-    filteredHints = case service of
-        Nothing -> fmap (\ h -> h { addrFlags = delete AI_NUMERICSERV (addrFlags h) }) hints
-        _       -> hints
-#else
-    filteredHints = hints
-#endif
-
-followAddrInfo :: Ptr AddrInfo -> IO [AddrInfo]
-
-followAddrInfo ptr_ai | ptr_ai == nullPtr = return []
-                      | otherwise = do
-    a <- peek ptr_ai
-    as <- (#peek struct addrinfo, ai_next) ptr_ai >>= followAddrInfo
-    return (a:as)
-
-foreign import ccall safe "hsnet_getaddrinfo"
-    c_getaddrinfo :: CString -> CString -> Ptr AddrInfo -> Ptr (Ptr AddrInfo)
-                  -> IO CInt
-
-foreign import ccall safe "hsnet_freeaddrinfo"
-    c_freeaddrinfo :: Ptr AddrInfo -> IO ()
-
-gai_strerror :: CInt -> IO String
-
-#ifdef HAVE_GAI_STRERROR
-gai_strerror n = c_gai_strerror n >>= peekCString
-
-foreign import ccall safe "gai_strerror"
-    c_gai_strerror :: CInt -> IO CString
-#else
-gai_strerror n = return ("error " ++ show n)
-#endif
-
-withCStringIf :: Bool -> Int -> (CSize -> CString -> IO a) -> IO a
-withCStringIf False _ f = f 0 nullPtr
-withCStringIf True n f = allocaBytes n (f (fromIntegral n))
-
--- | Resolve an address to a host or service name.
--- This function is protocol independent.
---
--- The list of 'NameInfoFlag' values controls query behaviour.  The
--- supported flags are as follows:
---
---   [@NI_NOFQDN@] If a host is local, return only the
---     hostname part of the FQDN.
---
---   [@NI_NUMERICHOST@] The name of the host is not
---     looked up.  Instead, a numeric representation of the host's
---     address is returned.  For an IPv4 address, this will be a
---     dotted-quad string.  For IPv6, it will be colon-separated
---     hexadecimal.
---
---   [@NI_NUMERICSERV@] The name of the service is not
---     looked up.  Instead, a numeric representation of the
---     service is returned.
---
---   [@NI_NAMEREQD@] If the hostname cannot be looked up, an IO error
---     is thrown.
---
---   [@NI_DGRAM@] Resolve a datagram-based service name.  This is
---     required only for the few protocols that have different port
---     numbers for their datagram-based versions than for their
---     stream-based versions.
---
--- Hostname and service name lookups can be expensive.  You can
--- specify which lookups to perform via the two 'Bool' arguments.  If
--- one of these is 'False', the corresponding value in the returned
--- tuple will be 'Nothing', and no lookup will be performed.
---
--- If a host or service's name cannot be looked up, then the numeric
--- form of the address or service will be returned.
---
--- If the query fails, this function throws an IO exception.
---
--- Example:
--- @
---   (hostName, _) <- getNameInfo [] True False myAddress
--- @
-
-getNameInfo :: [NameInfoFlag] -- ^ flags to control lookup behaviour
-            -> Bool -- ^ whether to look up a hostname
-            -> Bool -- ^ whether to look up a service name
-            -> SockAddr -- ^ the address to look up
-            -> IO (Maybe HostName, Maybe ServiceName)
-
-getNameInfo flags doHost doService addr =
-  withCStringIf doHost (#const NI_MAXHOST) $ \c_hostlen c_host ->
-    withCStringIf doService (#const NI_MAXSERV) $ \c_servlen c_serv -> do
-      withSockAddr addr $ \ptr_addr sz -> do
-        ret <- c_getnameinfo ptr_addr (fromIntegral sz) c_host c_hostlen
-                             c_serv c_servlen (packBits niFlagMapping flags)
-        case ret of
-          0 -> do
-            let peekIf doIf c_val = if doIf
-                                     then liftM Just $ peekCString c_val
-                                     else return Nothing
-            host <- peekIf doHost c_host
-            serv <- peekIf doService c_serv
-            return (host, serv)
-          _ -> do err <- gai_strerror ret
-                  ioError (ioeSetErrorString
-                           (mkIOError NoSuchThing "getNameInfo" Nothing
-                            Nothing) err)
-
-foreign import ccall safe "hsnet_getnameinfo"
-    c_getnameinfo :: Ptr SockAddr -> CInt{-CSockLen???-} -> CString -> CSize -> CString
-                  -> CSize -> CInt -> IO CInt
-#endif
-
-mkInvalidRecvArgError :: String -> IOError
-mkInvalidRecvArgError loc = ioeSetErrorString (mkIOError
-                                    InvalidArgument
-                                    loc Nothing Nothing) "non-positive length"
-
-mkEOFError :: String -> IOError
-mkEOFError loc = ioeSetErrorString (mkIOError EOF loc Nothing Nothing) "end of file"
-
--- ---------------------------------------------------------------------------
--- foreign imports from the C library
-
-foreign import ccall unsafe "my_inet_ntoa"
-  c_inet_ntoa :: HostAddress -> IO (Ptr CChar)
-
-foreign import CALLCONV unsafe "inet_addr"
-  c_inet_addr :: Ptr CChar -> IO HostAddress
-
-foreign import CALLCONV unsafe "shutdown"
-  c_shutdown :: CInt -> CInt -> IO CInt
-
-closeFd :: CInt -> IO ()
-closeFd fd = throwSocketErrorIfMinus1_ "Network.Socket.close" $ c_close fd
-
-#if !defined(WITH_WINSOCK)
-foreign import ccall unsafe "close"
-  c_close :: CInt -> IO CInt
-#else
-foreign import stdcall unsafe "closesocket"
-  c_close :: CInt -> IO CInt
-#endif
-
-foreign import CALLCONV unsafe "socket"
-  c_socket :: CInt -> CInt -> CInt -> IO CInt
-foreign import CALLCONV unsafe "bind"
-  c_bind :: CInt -> Ptr SockAddr -> CInt{-CSockLen???-} -> IO CInt
-foreign import CALLCONV SAFE_ON_WIN "connect"
-  c_connect :: CInt -> Ptr SockAddr -> CInt{-CSockLen???-} -> IO CInt
-foreign import CALLCONV unsafe "accept"
-  c_accept :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> IO CInt
-#if 0
-foreign import CALLCONV unsafe "accept4"
-  c_accept4 :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> CInt -> IO CInt
-#endif
-foreign import CALLCONV unsafe "listen"
-  c_listen :: CInt -> CInt -> IO CInt
-
-#if defined(mingw32_HOST_OS)
-foreign import CALLCONV safe "accept"
-  c_accept_safe :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> IO CInt
-
-foreign import ccall unsafe "rtsSupportsBoundThreads" threaded :: Bool
-#endif
-
-foreign import CALLCONV unsafe "send"
-  c_send :: CInt -> Ptr a -> CSize -> CInt -> IO CInt
-foreign import CALLCONV SAFE_ON_WIN "sendto"
-  c_sendto :: CInt -> Ptr a -> CSize -> CInt -> Ptr SockAddr -> CInt -> IO CInt
-foreign import CALLCONV unsafe "recv"
-  c_recv :: CInt -> Ptr CChar -> CSize -> CInt -> IO CInt
-foreign import CALLCONV SAFE_ON_WIN "recvfrom"
-  c_recvfrom :: CInt -> Ptr a -> CSize -> CInt -> Ptr SockAddr -> Ptr CInt -> IO CInt
-foreign import CALLCONV unsafe "getpeername"
-  c_getpeername :: CInt -> Ptr SockAddr -> Ptr CInt -> IO CInt
-foreign import CALLCONV unsafe "getsockname"
-  c_getsockname :: CInt -> Ptr SockAddr -> Ptr CInt -> IO CInt
-
-foreign import CALLCONV unsafe "getsockopt"
-  c_getsockopt :: CInt -> CInt -> CInt -> Ptr CInt -> Ptr CInt -> IO CInt
-foreign import CALLCONV unsafe "setsockopt"
-  c_setsockopt :: CInt -> CInt -> CInt -> Ptr CInt -> CInt -> IO CInt
-
--- ---------------------------------------------------------------------------
--- * Deprecated aliases
-
--- $deprecated-aliases
---
--- These aliases are deprecated and should not be used in new code.
--- They will be removed in some future version of the package.
-
--- | Deprecated alias for 'bind'.
-bindSocket :: Socket    -- Unconnected Socket
-           -> SockAddr  -- Address to Bind to
-           -> IO ()
-bindSocket = bind
-
--- | Deprecated alias for 'close'.
-sClose :: Socket -> IO ()
-sClose = close
-
--- | Deprecated alias for 'isConnected'.
-sIsConnected :: Socket -> IO Bool
-sIsConnected = isConnected
-
--- | Deprecated alias for 'isBound'.
-sIsBound :: Socket -> IO Bool
-sIsBound = isBound
-
--- | Deprecated alias for 'isListening'.
-sIsListening :: Socket -> IO Bool
-sIsListening = isListening
-
--- | Deprecated alias for 'isReadable'.
-sIsReadable  :: Socket -> IO Bool
-sIsReadable = isReadable
-
--- | Deprecated alias for 'isWritable'.
-sIsWritable  :: Socket -> IO Bool
-sIsWritable = isWritable
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString.hsc b/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString.hsc
+++ /dev/null
@@ -1,374 +0,0 @@
-{-# LANGUAGE CPP, ForeignFunctionInterface #-}
-
-#include "HsNet.h"
-
--- |
--- Module      : Network.Socket.ByteString
--- Copyright   : (c) Johan Tibell 2007-2010
--- License     : BSD-style
---
--- Maintainer  : johan.tibell@gmail.com
--- Stability   : stable
--- Portability : portable
---
--- This module provides access to the BSD /socket/ interface.  This
--- module is generally more efficient than the 'String' based network
--- functions in 'Network.Socket'.  For detailed documentation, consult
--- your favorite POSIX socket reference. All functions communicate
--- failures by converting the error number to 'System.IO.IOError'.
---
--- This module is made to be imported with 'Network.Socket' like so:
---
--- > import Network.Socket hiding (send, sendTo, recv, recvFrom)
--- > import Network.Socket.ByteString
---
-module Network.Socket.ByteString
-    ( 
-    -- * Send data to a socket
-      send
-    , sendAll
-    , sendTo
-    , sendAllTo
-
-    -- ** Vectored I/O
-    -- $vectored
-    , sendMany
-    , sendManyTo
-
-    -- * Receive data from a socket
-    , recv
-    , recvFrom
-
-    -- * Example
-    -- $example
-    ) where
-
-import Control.Monad (liftM, when)
-import Data.ByteString (ByteString)
-import Data.ByteString.Internal (createAndTrim)
-import Data.ByteString.Unsafe (unsafeUseAsCStringLen)
-import Data.Word (Word8)
-#if __GLASGOW_HASKELL__ >= 703
-import Foreign.C.Types (CInt(..))
-#else
-import Foreign.C.Types (CInt)
-#endif
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (Ptr, castPtr)
-import Network.Socket (SockAddr, Socket(..), sendBufTo, recvBufFrom)
-
-import qualified Data.ByteString as B
-
-import Network.Socket.ByteString.Internal
-import Network.Socket.Internal
-import Network.Socket.Types
-
-#if !defined(mingw32_HOST_OS)
-import Control.Monad (zipWithM_)
-import Foreign.C.Types (CChar)
-# if __GLASGOW_HASKELL__ >= 703
-import Foreign.C.Types (CSize(..))
-# else
-import Foreign.C.Types (CSize)
-# endif
-import Foreign.Marshal.Array (allocaArray)
-import Foreign.Marshal.Utils (with)
-import Foreign.Ptr (plusPtr)
-import Foreign.Storable (Storable(..))
-
-import Network.Socket.ByteString.IOVec (IOVec(..))
-import Network.Socket.ByteString.MsgHdr (MsgHdr(..))
-
-import GHC.Conc (threadWaitRead, threadWaitWrite)
-#else
-#  if __GLASGOW_HASKELL__ >= 611
-import GHC.IO.FD
-#  else
-import GHC.Handle (readRawBufferPtr, writeRawBufferPtr)
-#  endif
-#endif
-
-#if !defined(mingw32_HOST_OS)
-foreign import CALLCONV unsafe "send"
-  c_send :: CInt -> Ptr a -> CSize -> CInt -> IO CInt
-foreign import CALLCONV unsafe "recv"
-  c_recv :: CInt -> Ptr CChar -> CSize -> CInt -> IO CInt
-#endif
-
--- ----------------------------------------------------------------------------
--- Sending
-
--- | Send data to the socket.  The socket must be connected to a
--- remote socket.  Returns the number of bytes sent. Applications are
--- responsible for ensuring that all data has been sent.
-send :: Socket      -- ^ Connected socket
-     -> ByteString  -- ^ Data to send
-     -> IO Int      -- ^ Number of bytes sent
-send sock@(MkSocket s _ _ _ _) xs =
-    unsafeUseAsCStringLen xs $ \(str, len) ->
-    liftM fromIntegral $
-#if defined(mingw32_HOST_OS)
-#  if __GLASGOW_HASKELL__ >= 611
-        writeRawBufferPtr "Network.Socket.ByteString.send"
-        (FD s 1) (castPtr str) 0 (fromIntegral len)
-#  else
-        writeRawBufferPtr "Network.Socket.ByteString.send"
-        (fromIntegral s) True str 0 (fromIntegral len)
-#  endif
-#else
-        throwSocketErrorWaitWrite sock "send" $
-        c_send s str (fromIntegral len) 0
-#endif
-
--- | Send data to the socket.  The socket must be connected to a
--- remote socket.  Unlike 'send', this function continues to send data
--- until either all data has been sent or an error occurs.  On error,
--- an exception is raised, and there is no way to determine how much
--- data, if any, was successfully sent.
-sendAll :: Socket      -- ^ Connected socket
-        -> ByteString  -- ^ Data to send
-        -> IO ()
-sendAll sock bs = do
-    sent <- send sock bs
-    when (sent < B.length bs) $ sendAll sock (B.drop sent bs)
-
--- | Send data to the socket.  The recipient can be specified
--- explicitly, so the socket need not be in a connected state.
--- Returns the number of bytes sent. Applications are responsible for
--- ensuring that all data has been sent.
-sendTo :: Socket      -- ^ Socket
-       -> ByteString  -- ^ Data to send
-       -> SockAddr    -- ^ Recipient address
-       -> IO Int      -- ^ Number of bytes sent
-sendTo sock xs addr =
-    unsafeUseAsCStringLen xs $ \(str, len) -> sendBufTo sock str len addr
-
--- | Send data to the socket. The recipient can be specified
--- explicitly, so the socket need not be in a connected state.  Unlike
--- 'sendTo', this function continues to send data until either all
--- data has been sent or an error occurs.  On error, an exception is
--- raised, and there is no way to determine how much data, if any, was
--- successfully sent.
-sendAllTo :: Socket      -- ^ Socket
-          -> ByteString  -- ^ Data to send
-          -> SockAddr    -- ^ Recipient address
-          -> IO ()
-sendAllTo sock xs addr = do
-    sent <- sendTo sock xs addr
-    when (sent < B.length xs) $ sendAllTo sock (B.drop sent xs) addr
-
--- ----------------------------------------------------------------------------
--- ** Vectored I/O
-
--- $vectored
---
--- Vectored I\/O, also known as scatter\/gather I\/O, allows multiple
--- data segments to be sent using a single system call, without first
--- concatenating the segments.  For example, given a list of
--- @ByteString@s, @xs@,
---
--- > sendMany sock xs
---
--- is equivalent to
---
--- > sendAll sock (concat xs)
---
--- but potentially more efficient.
---
--- Vectored I\/O are often useful when implementing network protocols
--- that, for example, group data into segments consisting of one or
--- more fixed-length headers followed by a variable-length body.
-
--- | Send data to the socket.  The socket must be in a connected
--- state.  The data is sent as if the parts have been concatenated.
--- This function continues to send data until either all data has been
--- sent or an error occurs.  On error, an exception is raised, and
--- there is no way to determine how much data, if any, was
--- successfully sent.
-sendMany :: Socket        -- ^ Connected socket
-         -> [ByteString]  -- ^ Data to send
-         -> IO ()
-#if !defined(mingw32_HOST_OS)
-sendMany sock@(MkSocket fd _ _ _ _) cs = do
-    sent <- sendManyInner
-    when (sent < totalLength cs) $ sendMany sock (remainingChunks sent cs)
-  where
-    sendManyInner =
-      liftM fromIntegral . withIOVec cs $ \(iovsPtr, iovsLen) ->
-          throwSocketErrorWaitWrite sock "writev" $
-              c_writev (fromIntegral fd) iovsPtr
-              (fromIntegral (min iovsLen (0x0026)))
-#else
-sendMany sock = sendAll sock . B.concat
-#endif
-
--- | Send data to the socket.  The recipient can be specified
--- explicitly, so the socket need not be in a connected state.  The
--- data is sent as if the parts have been concatenated.  This function
--- continues to send data until either all data has been sent or an
--- error occurs.  On error, an exception is raised, and there is no
--- way to determine how much data, if any, was successfully sent.
-sendManyTo :: Socket        -- ^ Socket
-           -> [ByteString]  -- ^ Data to send
-           -> SockAddr      -- ^ Recipient address
-           -> IO ()
-#if !defined(mingw32_HOST_OS)
-sendManyTo sock@(MkSocket fd _ _ _ _) cs addr = do
-    sent <- liftM fromIntegral sendManyToInner
-    when (sent < totalLength cs) $ sendManyTo sock (remainingChunks sent cs) addr
-  where
-    sendManyToInner =
-      withSockAddr addr $ \addrPtr addrSize ->
-        withIOVec cs $ \(iovsPtr, iovsLen) -> do
-          let msgHdr = MsgHdr
-                addrPtr (fromIntegral addrSize)
-                iovsPtr (fromIntegral iovsLen)
-          with msgHdr $ \msgHdrPtr ->
-            throwSocketErrorWaitWrite sock "sendmsg" $
-              c_sendmsg (fromIntegral fd) msgHdrPtr 0
-#else
-sendManyTo sock cs = sendAllTo sock (B.concat cs)
-#endif
-
--- ----------------------------------------------------------------------------
--- Receiving
-
--- | Receive data from the socket.  The socket must be in a connected
--- state.  This function may return fewer bytes than specified.  If
--- the message is longer than the specified length, it may be
--- discarded depending on the type of socket.  This function may block
--- until a message arrives.
---
--- Considering hardware and network realities, the maximum number of bytes to
--- receive should be a small power of 2, e.g., 4096.
---
--- For TCP sockets, a zero length return value means the peer has
--- closed its half side of the connection.
-recv :: Socket         -- ^ Connected socket
-     -> Int            -- ^ Maximum number of bytes to receive
-     -> IO ByteString  -- ^ Data received
-recv sock nbytes
-    | nbytes < 0 = ioError (mkInvalidRecvArgError "Network.Socket.ByteString.recv")
-    | otherwise  = createAndTrim nbytes $ recvInner sock nbytes
-
-recvInner :: Socket -> Int -> Ptr Word8 -> IO Int
-recvInner sock nbytes ptr =
-    fmap fromIntegral $
-#if defined(mingw32_HOST_OS)
-#  if __GLASGOW_HASKELL__ >= 611
-        readRawBufferPtr "Network.Socket.ByteString.recv" (FD s 1) ptr 0 (fromIntegral nbytes)
-#  else
-        readRawBufferPtr "Network.Socket.ByteString.recv" (fromIntegral s)
-        True (castPtr ptr) 0 (fromIntegral nbytes)
-#  endif
-#else
-        throwSocketErrorWaitRead sock "recv" $
-        c_recv s (castPtr ptr) (fromIntegral nbytes) 0
-#endif
-  where
-    s = sockFd sock
-
--- | Receive data from the socket.  The socket need not be in a
--- connected state.  Returns @(bytes, address)@ where @bytes@ is a
--- 'ByteString' representing the data received and @address@ is a
--- 'SockAddr' representing the address of the sending socket.
-recvFrom :: Socket                     -- ^ Socket
-         -> Int                        -- ^ Maximum number of bytes to receive
-         -> IO (ByteString, SockAddr)  -- ^ Data received and sender address
-recvFrom sock nbytes =
-    allocaBytes nbytes $ \ptr -> do
-        (len, sockaddr) <- recvBufFrom sock ptr nbytes
-        str <- B.packCStringLen (ptr, len)
-        return (str, sockaddr)
-
--- ----------------------------------------------------------------------------
--- Not exported
-
-#if !defined(mingw32_HOST_OS)
--- | Suppose we try to transmit a list of chunks @cs@ via a gathering write
--- operation and find that @n@ bytes were sent. Then @remainingChunks n cs@ is
--- list of chunks remaining to be sent.
-remainingChunks :: Int -> [ByteString] -> [ByteString]
-remainingChunks _ [] = []
-remainingChunks i (x:xs)
-    | i < len        = B.drop i x : xs
-    | otherwise      = let i' = i - len in i' `seq` remainingChunks i' xs
-  where
-    len = B.length x
-
--- | @totalLength cs@ is the sum of the lengths of the chunks in the list @cs@.
-totalLength :: [ByteString] -> Int
-totalLength = sum . map B.length
-
--- | @withIOVec cs f@ executes the computation @f@, passing as argument a pair
--- consisting of a pointer to a temporarily allocated array of pointers to
--- 'IOVec' made from @cs@ and the number of pointers (@length cs@).
--- /Unix only/.
-withIOVec :: [ByteString] -> ((Ptr IOVec, Int) -> IO a) -> IO a
-withIOVec cs f =
-    allocaArray csLen $ \aPtr -> do
-        zipWithM_ pokeIov (ptrs aPtr) cs
-        f (aPtr, csLen)
-  where
-    csLen = length cs
-    ptrs = iterate (`plusPtr` sizeOf (undefined :: IOVec))
-    pokeIov ptr s =
-        unsafeUseAsCStringLen s $ \(sPtr, sLen) ->
-        poke ptr $ IOVec sPtr (fromIntegral sLen)
-#endif
-
--- ---------------------------------------------------------------------
--- Example
-
--- $example
---
--- Here are two minimal example programs using the TCP/IP protocol: a
--- server that echoes all data that it receives back (servicing only
--- one client) and a client using it.
---
--- > -- Echo server program
--- > module Main where
--- >
--- > import Control.Monad (unless)
--- > import Network.Socket hiding (recv)
--- > import qualified Data.ByteString as S
--- > import Network.Socket.ByteString (recv, sendAll)
--- >
--- > main :: IO ()
--- > main = withSocketsDo $
--- >     do addrinfos <- getAddrInfo
--- >                     (Just (defaultHints {addrFlags = [AI_PASSIVE]}))
--- >                     Nothing (Just "3000")
--- >        let serveraddr = head addrinfos
--- >        sock <- socket (addrFamily serveraddr) Stream defaultProtocol
--- >        bindSocket sock (addrAddress serveraddr)
--- >        listen sock 1
--- >        (conn, _) <- accept sock
--- >        talk conn
--- >        sClose conn
--- >        sClose sock
--- >
--- >     where
--- >       talk :: Socket -> IO ()
--- >       talk conn =
--- >           do msg <- recv conn 1024
--- >              unless (S.null msg) $ sendAll conn msg >> talk conn
---
--- > -- Echo client program
--- > module Main where
--- >
--- > import Network.Socket hiding (recv)
--- > import Network.Socket.ByteString (recv, sendAll)
--- > import qualified Data.ByteString.Char8 as C
--- >
--- > main :: IO ()
--- > main = withSocketsDo $
--- >     do addrinfos <- getAddrInfo Nothing (Just "") (Just "3000")
--- >        let serveraddr = head addrinfos
--- >        sock <- socket (addrFamily serveraddr) Stream defaultProtocol
--- >        connect sock (addrAddress serveraddr)
--- >        sendAll sock $ C.pack "Hello, world!"
--- >        msg <- recv sock 1024
--- >        sClose sock
--- >        putStr "Received "
--- >        C.putStrLn msg
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/IOVec.hsc b/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/IOVec.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/IOVec.hsc
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# OPTIONS_GHC -funbox-strict-fields #-}
-
--- | Support module for the POSIX writev system call.
-module Network.Socket.ByteString.IOVec
-    ( IOVec(..)
-    ) where
-
-import Foreign.C.Types (CChar, CInt, CSize)
-import Foreign.Ptr (Ptr)
-import Foreign.Storable (Storable(..))
-
-#include <sys/uio.h>
-
-data IOVec = IOVec
-    { iovBase :: !(Ptr CChar)
-    , iovLen  :: !CSize
-    }
-
-instance Storable IOVec where
-  sizeOf _    = (#const sizeof(struct iovec))
-  alignment _ = alignment (undefined :: CInt)
-
-  peek p = do
-    base <- (#peek struct iovec, iov_base) p
-    len  <- (#peek struct iovec, iov_len)  p
-    return $ IOVec base len
-
-  poke p iov = do
-    (#poke struct iovec, iov_base) p (iovBase iov)
-    (#poke struct iovec, iov_len)  p (iovLen  iov)
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Internal.hs b/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Internal.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Internal.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-{-# LANGUAGE CPP, ForeignFunctionInterface #-}
-
--- |
--- Module      : Network.Socket.ByteString.Internal
--- Copyright   : (c) Johan Tibell 2007-2010
--- License     : BSD-style
---
--- Maintainer  : johan.tibell@gmail.com
--- Stability   : stable
--- Portability : portable
---
-module Network.Socket.ByteString.Internal
-    (
-      mkInvalidRecvArgError
-#if !defined(mingw32_HOST_OS)
-    , c_writev
-    , c_sendmsg
-#endif
-    ) where
-
-import System.IO.Error (ioeSetErrorString, mkIOError)
-
-#if !defined(mingw32_HOST_OS)
-# if __GLASGOW_HASKELL__ >= 703
-import Foreign.C.Types (CInt(..))
-import System.Posix.Types (CSsize(..))
-# else
-import Foreign.C.Types (CInt)
-import System.Posix.Types (CSsize)
-# endif
-import Foreign.Ptr (Ptr)
-
-import Network.Socket.ByteString.IOVec (IOVec)
-import Network.Socket.ByteString.MsgHdr (MsgHdr)
-#endif
-
-#if __GLASGOW_HASKELL__ < 611
-import GHC.IOBase (IOErrorType(..))
-#else
-import GHC.IO.Exception (IOErrorType(..))
-#endif
-
-mkInvalidRecvArgError :: String -> IOError
-mkInvalidRecvArgError loc = ioeSetErrorString (mkIOError
-                                    InvalidArgument
-                                    loc Nothing Nothing) "non-positive length"
-
-#if !defined(mingw32_HOST_OS)
-foreign import ccall unsafe "writev"
-  c_writev :: CInt -> Ptr IOVec -> CInt -> IO CSsize
-
-foreign import ccall unsafe "sendmsg"
-  c_sendmsg :: CInt -> Ptr MsgHdr -> CInt -> IO CSsize
-#endif
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Lazy.hsc b/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Lazy.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/Lazy.hsc
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# LANGUAGE BangPatterns, CPP, ForeignFunctionInterface #-}
-
--- |
--- Module      : Network.Socket.ByteString.Lazy
--- Copyright   : (c) Bryan O'Sullivan 2009
--- License     : BSD-style
---
--- Maintainer  : bos@serpentine.com
--- Stability   : experimental
--- Portability : POSIX, GHC
---
--- This module provides access to the BSD /socket/ interface.  This
--- module is generally more efficient than the 'String' based network
--- functions in 'Network.Socket'.  For detailed documentation, consult
--- your favorite POSIX socket reference. All functions communicate
--- failures by converting the error number to 'System.IO.IOError'.
---
--- This module is made to be imported with 'Network.Socket' like so:
---
--- > import Network.Socket hiding (send, sendTo, recv, recvFrom)
--- > import Network.Socket.ByteString.Lazy
--- > import Prelude hiding (getContents)
---
-module Network.Socket.ByteString.Lazy
-    (
-#if !defined(mingw32_HOST_OS)
-    -- * Send data to a socket
-      send
-    , sendAll
-    ,
-#endif
-
-    -- * Receive data from a socket
-      getContents
-    , recv
-    ) where
-
-import Control.Monad (liftM)
-import Data.ByteString.Lazy.Internal (ByteString(..), defaultChunkSize)
-import Data.Int (Int64)
-import Network.Socket (Socket(..), ShutdownCmd(..), shutdown)
-import Prelude hiding (getContents)
-import System.IO.Unsafe (unsafeInterleaveIO)
-
-import qualified Data.ByteString as S
-import qualified Network.Socket.ByteString as N
-
-#if !defined(mingw32_HOST_OS)
-import Control.Monad (unless)
-import Data.ByteString.Unsafe (unsafeUseAsCStringLen)
-import Foreign.Marshal.Array (allocaArray)
-import Foreign.Ptr (plusPtr)
-import Foreign.Storable (Storable(..))
-import Network.Socket.ByteString.IOVec (IOVec(IOVec))
-import Network.Socket.ByteString.Internal (c_writev)
-import Network.Socket.Internal
-
-import qualified Data.ByteString.Lazy as L
-
-import GHC.Conc (threadWaitWrite)
-#endif
-
-#if !defined(mingw32_HOST_OS)
--- -----------------------------------------------------------------------------
--- Sending
-
--- | Send data to the socket. The socket must be in a connected state.
--- Returns the number of bytes sent. Applications are responsible for
--- ensuring that all data has been sent.
---
--- Because a lazily generated 'ByteString' may be arbitrarily long,
--- this function caps the amount it will attempt to send at 4MB.  This
--- number is large (so it should not penalize performance on fast
--- networks), but not outrageously so (to avoid demanding lazily
--- computed data unnecessarily early).  Before being sent, the lazy
--- 'ByteString' will be converted to a list of strict 'ByteString's
--- with 'L.toChunks'; at most 1024 chunks will be sent.  /Unix only/.
-send :: Socket      -- ^ Connected socket
-     -> ByteString  -- ^ Data to send
-     -> IO Int64    -- ^ Number of bytes sent
-send sock@(MkSocket fd _ _ _ _) s = do
-  let cs  = take maxNumChunks (L.toChunks s)
-      len = length cs
-  liftM fromIntegral . allocaArray len $ \ptr ->
-    withPokes cs ptr $ \niovs ->
-      throwSocketErrorWaitWrite sock "writev" $
-        c_writev (fromIntegral fd) ptr niovs
-  where
-    withPokes ss p f = loop ss p 0 0
-      where loop (c:cs) q k !niovs
-                | k < maxNumBytes =
-                    unsafeUseAsCStringLen c $ \(ptr,len) -> do
-                      poke q $ IOVec ptr (fromIntegral len)
-                      loop cs (q `plusPtr` sizeOf (undefined :: IOVec))
-                              (k + fromIntegral len) (niovs + 1)
-                | otherwise = f niovs
-            loop _ _ _ niovs = f niovs
-    maxNumBytes  = 4194304 :: Int  -- maximum number of bytes to transmit in one system call
-    maxNumChunks = 1024    :: Int  -- maximum number of chunks to transmit in one system call
-
--- | Send data to the socket.  The socket must be in a connected
--- state. This function continues to send data until either all data
--- has been sent or an error occurs.  If there is an error, an
--- exception is raised, and there is no way to determine how much data
--- was sent.  /Unix only/.
-sendAll :: Socket      -- ^ Connected socket
-        -> ByteString  -- ^ Data to send
-        -> IO ()
-sendAll sock bs = do
-  sent <- send sock bs
-  let bs' = L.drop sent bs
-  unless (L.null bs') $ sendAll sock bs'
-#endif
-
--- -----------------------------------------------------------------------------
--- Receiving
-
--- | Receive data from the socket.  The socket must be in a connected
--- state.  Data is received on demand, in chunks; each chunk will be
--- sized to reflect the amount of data received by individual 'recv'
--- calls.
---
--- All remaining data from the socket is consumed.  When there is no
--- more data to be received, the receiving side of the socket is shut
--- down.  If there is an error and an exception is thrown, the socket
--- is not shut down.
-getContents :: Socket         -- ^ Connected socket
-            -> IO ByteString  -- ^ Data received
-getContents sock = loop where
-  loop = unsafeInterleaveIO $ do
-    s <- N.recv sock defaultChunkSize
-    if S.null s
-      then shutdown sock ShutdownReceive >> return Empty
-      else Chunk s `liftM` loop
-
--- | Receive data from the socket.  The socket must be in a connected
--- state.  This function may return fewer bytes than specified.  If
--- the received data is longer than the specified length, it may be
--- discarded depending on the type of socket.  This function may block
--- until a message arrives.
---
--- If there is no more data to be received, returns an empty 'ByteString'.
-recv :: Socket         -- ^ Connected socket
-     -> Int64          -- ^ Maximum number of bytes to receive
-     -> IO ByteString  -- ^ Data received
-recv sock nbytes = chunk `liftM` N.recv sock (fromIntegral nbytes) where
-  chunk k
-    | S.null k  = Empty
-    | otherwise = Chunk k Empty
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/MsgHdr.hsc b/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/MsgHdr.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket/ByteString/MsgHdr.hsc
+++ /dev/null
@@ -1,48 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# OPTIONS_GHC -funbox-strict-fields #-}
-
--- | Support module for the POSIX 'sendmsg' system call.
-module Network.Socket.ByteString.MsgHdr
-    ( MsgHdr(..)
-    ) where
-
-#include <sys/types.h>
-#include <sys/socket.h>
-
-import Foreign.C.Types (CInt, CSize, CUInt)
-import Foreign.Ptr (Ptr)
-import Foreign.Storable (Storable(..))
-import Network.Socket (SockAddr)
-import Network.Socket.Internal (zeroMemory)
-
-import Network.Socket.ByteString.IOVec (IOVec)
-
--- We don't use msg_control, msg_controllen, and msg_flags as these
--- don't exist on OpenSolaris.
-data MsgHdr = MsgHdr
-    { msgName    :: !(Ptr SockAddr)
-    , msgNameLen :: !CUInt
-    , msgIov     :: !(Ptr IOVec)
-    , msgIovLen  :: !CSize
-    }
-
-instance Storable MsgHdr where
-  sizeOf _    = (#const sizeof(struct msghdr))
-  alignment _ = alignment (undefined :: CInt)
-
-  peek p = do
-    name       <- (#peek struct msghdr, msg_name)       p
-    nameLen    <- (#peek struct msghdr, msg_namelen)    p
-    iov        <- (#peek struct msghdr, msg_iov)        p
-    iovLen     <- (#peek struct msghdr, msg_iovlen)     p
-    return $ MsgHdr name nameLen iov iovLen
-
-  poke p mh = do
-    -- We need to zero the msg_control, msg_controllen, and msg_flags
-    -- fields, but they only exist on some platforms (e.g. not on
-    -- Solaris).  Instead of using CPP, we zero the entire struct.
-    zeroMemory p (#const sizeof(struct msghdr))
-    (#poke struct msghdr, msg_name)       p (msgName       mh)
-    (#poke struct msghdr, msg_namelen)    p (msgNameLen    mh)
-    (#poke struct msghdr, msg_iov)        p (msgIov        mh)
-    (#poke struct msghdr, msg_iovlen)     p (msgIovLen     mh)
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket/Internal.hsc b/standalone/android/tmp/network-2.4.1.2/Network/Socket/Internal.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket/Internal.hsc
+++ /dev/null
@@ -1,257 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
------------------------------------------------------------------------------
--- |
--- Module      :  Network.Socket.Internal
--- Copyright   :  (c) The University of Glasgow 2001
--- License     :  BSD-style (see the file libraries/network/LICENSE)
---
--- Maintainer  :  libraries@haskell.org
--- Stability   :  provisional
--- Portability :  portable
---
--- A module containing semi-public 'Network.Socket' internals.
--- Modules which extend the 'Network.Socket' module will need to use
--- this module while ideally most users will be able to make do with
--- the public interface.
---
------------------------------------------------------------------------------
-
-#include "HsNet.h"
-
-module Network.Socket.Internal
-    (
-    -- * Socket addresses
-      HostAddress
-#if defined(IPV6_SOCKET_SUPPORTNO)
-    , HostAddress6
-    , FlowInfo
-    , ScopeID
-#endif
-    , PortNumber(..)
-    , SockAddr(..)
-
-    , peekSockAddr
-    , pokeSockAddr
-    , sizeOfSockAddr
-    , sizeOfSockAddrByFamily
-    , withSockAddr
-    , withNewSockAddr
-
-    -- * Protocol families
-    , Family(..)
-
-    -- * Socket error functions
-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-    , c_getLastError
-#endif
-    , throwSocketError
-    , throwSocketErrorCode
-
-    -- * Guards for socket operations that may fail
-    , throwSocketErrorIfMinus1_
-    , throwSocketErrorIfMinus1Retry
-    , throwSocketErrorIfMinus1RetryMayBlock
-
-    -- ** Guards that wait and retry if the operation would block
-    -- | These guards are based on 'throwSocketErrorIfMinus1RetryMayBlock'.
-    -- They wait for socket readiness if the action fails with @EWOULDBLOCK@
-    -- or similar.
-    , throwSocketErrorWaitRead
-    , throwSocketErrorWaitWrite
-
-    -- * Initialization
-    , withSocketsDo
-
-    -- * Low-level helpers
-    , zeroMemory
-    ) where
-
-import Data.Bits ( (.|.), shiftL, shiftR )
-import Data.Word ( Word8, Word16, Word32 )
-import Data.Typeable (Typeable)
-import Foreign.C.Error (throwErrno, throwErrnoIfMinus1Retry,
-                        throwErrnoIfMinus1RetryMayBlock, throwErrnoIfMinus1_,
-                        Errno(..), errnoToIOError)
-import Foreign.C.String ( castCharToCChar, peekCString )
-#if __GLASGOW_HASKELL__ >= 703
-import Foreign.C.Types ( CInt(..), CSize(..) )
-#else
-import Foreign.C.Types ( CInt, CSize )
-#endif
-import Foreign.Marshal.Alloc ( allocaBytes )
-import Foreign.Marshal.Array ( pokeArray, pokeArray0 )
-import Foreign.Ptr ( Ptr, castPtr, plusPtr )
-import Foreign.Storable ( Storable(..) )
-import GHC.Conc (threadWaitRead, threadWaitWrite)
-
-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-import Control.Exception ( finally )
-#  if __GLASGOW_HASKELL__ >= 707
-import GHC.IO.Exception ( IOErrorType(..) )
-#  else
-import GHC.IOBase ( IOErrorType(..) )
-#  endif
-import Foreign.C.Types ( CChar )
-import System.IO.Error ( ioeSetErrorString, mkIOError )
-#endif
-
-import Network.Socket.Types
-
--- ---------------------------------------------------------------------
--- Guards for socket operations that may fail
-
--- | Throw an 'IOError' corresponding to the current socket error.
-throwSocketError :: String  -- ^ textual description of the error location
-                 -> IO a
-
--- | Like 'throwSocketError', but the error code is supplied as an argument.
---
--- On Windows, do not use errno.  Use a system error code instead.
-throwSocketErrorCode :: String -> CInt -> IO a
-
--- | Throw an 'IOError' corresponding to the current socket error if
--- the IO action returns a result of @-1@.  Discards the result of the
--- IO action after error handling.
-throwSocketErrorIfMinus1_
-    :: (Eq a, Num a)
-    => String  -- ^ textual description of the location
-    -> IO a    -- ^ the 'IO' operation to be executed
-    -> IO ()
-
-{-# SPECIALIZE throwSocketErrorIfMinus1_ :: String -> IO CInt -> IO () #-}
-
--- | Throw an 'IOError' corresponding to the current socket error if
--- the IO action returns a result of @-1@, but retries in case of an
--- interrupted operation.
-throwSocketErrorIfMinus1Retry
-    :: (Eq a, Num a)
-    => String  -- ^ textual description of the location
-    -> IO a    -- ^ the 'IO' operation to be executed
-    -> IO a
-
-{-# SPECIALIZE throwSocketErrorIfMinus1Retry :: String -> IO CInt -> IO CInt #-}
-
--- | Throw an 'IOError' corresponding to the current socket error if
--- the IO action returns a result of @-1@, but retries in case of an
--- interrupted operation.  Checks for operations that would block and
--- executes an alternative action before retrying in that case.
-throwSocketErrorIfMinus1RetryMayBlock
-    :: (Eq a, Num a)
-    => String  -- ^ textual description of the location
-    -> IO b    -- ^ action to execute before retrying if an
-               --   immediate retry would block
-    -> IO a    -- ^ the 'IO' operation to be executed
-    -> IO a
-
-{-# SPECIALIZE throwSocketErrorIfMinus1RetryMayBlock
-        :: String -> IO b -> IO CInt -> IO CInt #-}
-
-#if (!defined(HAVE_WINSOCK2_H) || defined(cygwin32_HOST_OS))
-
-throwSocketErrorIfMinus1RetryMayBlock name on_block act =
-    throwErrnoIfMinus1RetryMayBlock name act on_block
-
-throwSocketErrorIfMinus1Retry = throwErrnoIfMinus1Retry
-
-throwSocketErrorIfMinus1_ = throwErrnoIfMinus1_
-
-throwSocketError = throwErrno
-
-throwSocketErrorCode loc errno =
-    ioError (errnoToIOError loc (Errno errno) Nothing Nothing)
-
-#else
-
-throwSocketErrorIfMinus1RetryMayBlock name _ act
-  = throwSocketErrorIfMinus1Retry name act
-
-throwSocketErrorIfMinus1_ name act = do
-  throwSocketErrorIfMinus1Retry name act
-  return ()
-
-# if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-throwSocketErrorIfMinus1Retry name act = do
-  r <- act
-  if (r == -1)
-   then do
-    rc   <- c_getLastError
-    case rc of
-      #{const WSANOTINITIALISED} -> do
-        withSocketsDo (return ())
-        r <- act
-        if (r == -1)
-           then throwSocketError name
-           else return r
-      _ -> throwSocketError name
-   else return r
-
-throwSocketErrorCode name rc = do
-    pstr <- c_getWSError rc
-    str  <- peekCString pstr
-    ioError (ioeSetErrorString (mkIOError OtherError name Nothing Nothing) str)
-
-throwSocketError name =
-    c_getLastError >>= throwSocketErrorCode name
-
-foreign import CALLCONV unsafe "WSAGetLastError"
-  c_getLastError :: IO CInt
-
-foreign import ccall unsafe "getWSErrorDescr"
-  c_getWSError :: CInt -> IO (Ptr CChar)
-
-
-# else
-throwSocketErrorIfMinus1Retry = throwErrnoIfMinus1Retry
-throwSocketError = throwErrno
-throwSocketErrorCode loc errno =
-    ioError (errnoToIOError loc (Errno errno) Nothing Nothing)
-# endif
-#endif
-
--- | Like 'throwSocketErrorIfMinus1Retry', but if the action fails with
--- @EWOULDBLOCK@ or similar, wait for the socket to be read-ready,
--- and try again.
-throwSocketErrorWaitRead :: (Eq a, Num a) => Socket -> String -> IO a -> IO a
-throwSocketErrorWaitRead sock name io =
-    throwSocketErrorIfMinus1RetryMayBlock name
-        (threadWaitRead $ fromIntegral $ sockFd sock)
-        io
-
--- | Like 'throwSocketErrorIfMinus1Retry', but if the action fails with
--- @EWOULDBLOCK@ or similar, wait for the socket to be write-ready,
--- and try again.
-throwSocketErrorWaitWrite :: (Eq a, Num a) => Socket -> String -> IO a -> IO a
-throwSocketErrorWaitWrite sock name io =
-    throwSocketErrorIfMinus1RetryMayBlock name
-        (threadWaitWrite $ fromIntegral $ sockFd sock)
-        io
-
--- ---------------------------------------------------------------------------
--- WinSock support
-
-{-| On Windows operating systems, the networking subsystem has to be
-initialised using 'withSocketsDo' before any networking operations can
-be used.  eg.
-
-> main = withSocketsDo $ do {...}
-
-Although this is only strictly necessary on Windows platforms, it is
-harmless on other platforms, so for portability it is good practice to
-use it all the time.
--}
-withSocketsDo :: IO a -> IO a
-#if !defined(WITH_WINSOCK)
-withSocketsDo x = x
-#else
-withSocketsDo act = do
-    x <- initWinSock
-    if x /= 0
-       then ioError (userError "Failed to initialise WinSock")
-       else act `finally` shutdownWinSock
-
-foreign import ccall unsafe "initWinSock" initWinSock :: IO Int
-foreign import ccall unsafe "shutdownWinSock" shutdownWinSock :: IO ()
-
-#endif
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/Socket/Types.hsc b/standalone/android/tmp/network-2.4.1.2/Network/Socket/Types.hsc
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/Socket/Types.hsc
+++ /dev/null
@@ -1,962 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
-module Network.Socket.Types
-    (
-    -- * Socket
-      Socket(..)
-    , sockFd
-    , sockFamily
-    , sockType
-    , sockProtocol
-    , sockStatus
-    , SocketStatus(..)
-
-    -- * Socket types
-    , SocketType(..)
-    , isSupportedSocketType
-    , packSocketType
-    , packSocketType'
-    , packSocketTypeOrThrow
-    , unpackSocketType
-    , unpackSocketType'
-
-    -- * Family
-    , Family(..)
-    , isSupportedFamily
-    , packFamily
-    , unpackFamily
-
-    -- * Socket addresses
-    , SockAddr(..)
-    , HostAddress
-#if defined(IPV6_SOCKET_SUPPORT)
-    , HostAddress6
-    , FlowInfo
-    , ScopeID
-#endif
-    , peekSockAddr
-    , pokeSockAddr
-    , sizeOfSockAddr
-    , sizeOfSockAddrByFamily
-    , withSockAddr
-    , withNewSockAddr
-
-    -- * Unsorted
-    , ProtocolNumber
-    , PortNumber(..)
-
-    -- * Low-level helpers
-    , zeroMemory
-    ) where
-
-#include "HsNet.h"
-
-import Control.Concurrent.MVar
-import Control.Monad
-import Data.Bits
-import Data.Maybe
-import Data.Ratio
-import Data.Typeable
-import Data.Word
-import Foreign.C
-import Foreign.Marshal.Alloc
-import Foreign.Marshal.Array
-import Foreign.Ptr
-import Foreign.Storable
-
-data Socket
-  = MkSocket
-            CInt                 -- File Descriptor
-            Family
-            SocketType
-            ProtocolNumber       -- Protocol Number
-            (MVar SocketStatus)  -- Status Flag
-  deriving Typeable
-
-sockFd       (MkSocket n _ _ _ _) = n
-sockFamily   (MkSocket _ f _ _ _) = f
-sockType     (MkSocket _ _ t _ _) = t
-sockProtocol (MkSocket _ _ _ p _) = p
-sockStatus   (MkSocket _ _ _ _ s) = s
-
-instance Eq Socket where
-  (MkSocket _ _ _ _ m1) == (MkSocket _ _ _ _ m2) = m1 == m2
-
-instance Show Socket where
-  showsPrec _n (MkSocket fd _ _ _ _) =
-        showString "<socket: " . shows fd . showString ">"
-
-type ProtocolNumber = CInt
-
-data SocketStatus
-  -- Returned Status    Function called
-  = NotConnected        -- socket
-  | Bound               -- bind
-  | Listening           -- listen
-  | Connected           -- connect/accept
-  | ConvertedToHandle   -- is now a Handle, don't touch
-  | Closed              -- close
-    deriving (Eq, Show, Typeable)
-
------------------------------------------------------------------------------
--- Socket types
-
--- There are a few possible ways to do this.  The first is convert the
--- structs used in the C library into an equivalent Haskell type. An
--- other possible implementation is to keep all the internals in the C
--- code and use an Int## and a status flag. The second method is used
--- here since a lot of the C structures are not required to be
--- manipulated.
-
--- Originally the status was non-mutable so we had to return a new
--- socket each time we changed the status.  This version now uses
--- mutable variables to avoid the need to do this.  The result is a
--- cleaner interface and better security since the application
--- programmer now can't circumvent the status information to perform
--- invalid operations on sockets.
-
--- | Socket Types.
---
--- The existence of a constructor does not necessarily imply that that
--- socket type is supported on your system: see 'isSupportedSocketType'.
-data SocketType
-        = NoSocketType -- ^ 0, used in getAddrInfo hints, for example
-        | Stream -- ^ SOCK_STREAM
-        | Datagram -- ^ SOCK_DGRAM
-        | Raw -- ^ SOCK_RAW
-        | RDM -- ^ SOCK_RDM
-        | SeqPacket -- ^ SOCK_SEQPACKET
-        deriving (Eq, Ord, Read, Show, Typeable)
-
--- | Does the SOCK_ constant corresponding to the given SocketType exist on
--- this system?
-isSupportedSocketType :: SocketType -> Bool
-isSupportedSocketType = isJust . packSocketType'
-
--- | Find the SOCK_ constant corresponding to the SocketType value.
-packSocketType' :: SocketType -> Maybe CInt
-packSocketType' stype = case Just stype of
-    -- the Just above is to disable GHC's overlapping pattern
-    -- detection: see comments for packSocketOption
-    Just NoSocketType -> Just 0
-#ifdef SOCK_STREAM
-    Just Stream -> Just #const SOCK_STREAM
-#endif
-#ifdef SOCK_DGRAM
-    Just Datagram -> Just #const SOCK_DGRAM
-#endif
-#ifdef SOCK_RAW
-    Just Raw -> Just #const SOCK_RAW
-#endif
-#ifdef SOCK_RDM
-    Just RDM -> Just #const SOCK_RDM
-#endif
-#ifdef SOCK_SEQPACKET
-    Just SeqPacket -> Just #const SOCK_SEQPACKET
-#endif
-    _ -> Nothing
-
-packSocketType :: SocketType -> CInt
-packSocketType stype = fromMaybe (error errMsg) (packSocketType' stype)
-  where
-    errMsg = concat ["Network.Socket.packSocketType: ",
-                     "socket type ", show stype, " unsupported on this system"]
-
--- | Try packSocketType' on the SocketType, if it fails throw an error with
--- message starting "Network.Socket." ++ the String parameter
-packSocketTypeOrThrow :: String -> SocketType -> IO CInt
-packSocketTypeOrThrow caller stype = maybe err return (packSocketType' stype)
- where
-  err = ioError . userError . concat $ ["Network.Socket.", caller, ": ",
-    "socket type ", show stype, " unsupported on this system"]
-
-
-unpackSocketType:: CInt -> Maybe SocketType
-unpackSocketType t = case t of
-        0 -> Just NoSocketType
-#ifdef SOCK_STREAM
-        (#const SOCK_STREAM) -> Just Stream
-#endif
-#ifdef SOCK_DGRAM
-        (#const SOCK_DGRAM) -> Just Datagram
-#endif
-#ifdef SOCK_RAW
-        (#const SOCK_RAW) -> Just Raw
-#endif
-#ifdef SOCK_RDM
-        (#const SOCK_RDM) -> Just RDM
-#endif
-#ifdef SOCK_SEQPACKET
-        (#const SOCK_SEQPACKET) -> Just SeqPacket
-#endif
-        _ -> Nothing
-
--- | Try unpackSocketType on the CInt, if it fails throw an error with
--- message starting "Network.Socket." ++ the String parameter
-unpackSocketType' :: String -> CInt -> IO SocketType
-unpackSocketType' caller ty = maybe err return (unpackSocketType ty)
- where
-  err = ioError . userError . concat $ ["Network.Socket.", caller, ": ",
-    "socket type ", show ty, " unsupported on this system"]
-
-------------------------------------------------------------------------
--- Protocol Families.
-
--- | Address families.
---
--- A constructor being present here does not mean it is supported by the
--- operating system: see 'isSupportedFamily'.
-data Family
-    = AF_UNSPEC           -- unspecified
-    | AF_UNIX             -- local to host (pipes, portals
-    | AF_INET             -- internetwork: UDP, TCP, etc
-    | AF_INET6            -- Internet Protocol version 6
-    | AF_IMPLINK          -- arpanet imp addresses
-    | AF_PUP              -- pup protocols: e.g. BSP
-    | AF_CHAOS            -- mit CHAOS protocols
-    | AF_NS               -- XEROX NS protocols
-    | AF_NBS              -- nbs protocols
-    | AF_ECMA             -- european computer manufacturers
-    | AF_DATAKIT          -- datakit protocols
-    | AF_CCITT            -- CCITT protocols, X.25 etc
-    | AF_SNA              -- IBM SNA
-    | AF_DECnet           -- DECnet
-    | AF_DLI              -- Direct data link interface
-    | AF_LAT              -- LAT
-    | AF_HYLINK           -- NSC Hyperchannel
-    | AF_APPLETALK        -- Apple Talk
-    | AF_ROUTE            -- Internal Routing Protocol
-    | AF_NETBIOS          -- NetBios-style addresses
-    | AF_NIT              -- Network Interface Tap
-    | AF_802              -- IEEE 802.2, also ISO 8802
-    | AF_ISO              -- ISO protocols
-    | AF_OSI              -- umbrella of all families used by OSI
-    | AF_NETMAN           -- DNA Network Management
-    | AF_X25              -- CCITT X.25
-    | AF_AX25
-    | AF_OSINET           -- AFI
-    | AF_GOSSIP           -- US Government OSI
-    | AF_IPX              -- Novell Internet Protocol
-    | Pseudo_AF_XTP       -- eXpress Transfer Protocol (no AF)
-    | AF_CTF              -- Common Trace Facility
-    | AF_WAN              -- Wide Area Network protocols
-    | AF_SDL              -- SGI Data Link for DLPI
-    | AF_NETWARE
-    | AF_NDD
-    | AF_INTF             -- Debugging use only
-    | AF_COIP             -- connection-oriented IP, aka ST II
-    | AF_CNT              -- Computer Network Technology
-    | Pseudo_AF_RTIP      -- Help Identify RTIP packets
-    | Pseudo_AF_PIP       -- Help Identify PIP packets
-    | AF_SIP              -- Simple Internet Protocol
-    | AF_ISDN             -- Integrated Services Digital Network
-    | Pseudo_AF_KEY       -- Internal key-management function
-    | AF_NATM             -- native ATM access
-    | AF_ARP              -- (rev.) addr. res. prot. (RFC 826)
-    | Pseudo_AF_HDRCMPLT  -- Used by BPF to not rewrite hdrs in iface output
-    | AF_ENCAP
-    | AF_LINK             -- Link layer interface
-    | AF_RAW              -- Link layer interface
-    | AF_RIF              -- raw interface
-    | AF_NETROM           -- Amateur radio NetROM
-    | AF_BRIDGE           -- multiprotocol bridge
-    | AF_ATMPVC           -- ATM PVCs
-    | AF_ROSE             -- Amateur Radio X.25 PLP
-    | AF_NETBEUI          -- 802.2LLC
-    | AF_SECURITY         -- Security callback pseudo AF
-    | AF_PACKET           -- Packet family
-    | AF_ASH              -- Ash
-    | AF_ECONET           -- Acorn Econet
-    | AF_ATMSVC           -- ATM SVCs
-    | AF_IRDA             -- IRDA sockets
-    | AF_PPPOX            -- PPPoX sockets
-    | AF_WANPIPE          -- Wanpipe API sockets
-    | AF_BLUETOOTH        -- bluetooth sockets
-      deriving (Eq, Ord, Read, Show)
-
-packFamily :: Family -> CInt
-packFamily f = case packFamily' f of
-    Just fam -> fam
-    Nothing -> error $
-               "Network.Socket.packFamily: unsupported address family: " ++
-               show f
-
--- | Does the AF_ constant corresponding to the given family exist on this
--- system?
-isSupportedFamily :: Family -> Bool
-isSupportedFamily = isJust . packFamily'
-
-packFamily' :: Family -> Maybe CInt
-packFamily' f = case Just f of
-    -- the Just above is to disable GHC's overlapping pattern
-    -- detection: see comments for packSocketOption
-    Just AF_UNSPEC -> Just #const AF_UNSPEC
-#ifdef AF_UNIX
-    Just AF_UNIX -> Just #const AF_UNIX
-#endif
-#ifdef AF_INET
-    Just AF_INET -> Just #const AF_INET
-#endif
-#ifdef AF_INET6
-    Just AF_INET6 -> Just #const AF_INET6
-#endif
-#ifdef AF_IMPLINK
-    Just AF_IMPLINK -> Just #const AF_IMPLINK
-#endif
-#ifdef AF_PUP
-    Just AF_PUP -> Just #const AF_PUP
-#endif
-#ifdef AF_CHAOS
-    Just AF_CHAOS -> Just #const AF_CHAOS
-#endif
-#ifdef AF_NS
-    Just AF_NS -> Just #const AF_NS
-#endif
-#ifdef AF_NBS
-    Just AF_NBS -> Just #const AF_NBS
-#endif
-#ifdef AF_ECMA
-    Just AF_ECMA -> Just #const AF_ECMA
-#endif
-#ifdef AF_DATAKIT
-    Just AF_DATAKIT -> Just #const AF_DATAKIT
-#endif
-#ifdef AF_CCITT
-    Just AF_CCITT -> Just #const AF_CCITT
-#endif
-#ifdef AF_SNA
-    Just AF_SNA -> Just #const AF_SNA
-#endif
-#ifdef AF_DECnet
-    Just AF_DECnet -> Just #const AF_DECnet
-#endif
-#ifdef AF_DLI
-    Just AF_DLI -> Just #const AF_DLI
-#endif
-#ifdef AF_LAT
-    Just AF_LAT -> Just #const AF_LAT
-#endif
-#ifdef AF_HYLINK
-    Just AF_HYLINK -> Just #const AF_HYLINK
-#endif
-#ifdef AF_APPLETALK
-    Just AF_APPLETALK -> Just #const AF_APPLETALK
-#endif
-#ifdef AF_ROUTE
-    Just AF_ROUTE -> Just #const AF_ROUTE
-#endif
-#ifdef AF_NETBIOS
-    Just AF_NETBIOS -> Just #const AF_NETBIOS
-#endif
-#ifdef AF_NIT
-    Just AF_NIT -> Just #const AF_NIT
-#endif
-#ifdef AF_802
-    Just AF_802 -> Just #const AF_802
-#endif
-#ifdef AF_ISO
-    Just AF_ISO -> Just #const AF_ISO
-#endif
-#ifdef AF_OSI
-    Just AF_OSI -> Just #const AF_OSI
-#endif
-#ifdef AF_NETMAN
-    Just AF_NETMAN -> Just #const AF_NETMAN
-#endif
-#ifdef AF_X25
-    Just AF_X25 -> Just #const AF_X25
-#endif
-#ifdef AF_AX25
-    Just AF_AX25 -> Just #const AF_AX25
-#endif
-#ifdef AF_OSINET
-    Just AF_OSINET -> Just #const AF_OSINET
-#endif
-#ifdef AF_GOSSIP
-    Just AF_GOSSIP -> Just #const AF_GOSSIP
-#endif
-#ifdef AF_IPX
-    Just AF_IPX -> Just #const AF_IPX
-#endif
-#ifdef Pseudo_AF_XTP
-    Just Pseudo_AF_XTP -> Just #const Pseudo_AF_XTP
-#endif
-#ifdef AF_CTF
-    Just AF_CTF -> Just #const AF_CTF
-#endif
-#ifdef AF_WAN
-    Just AF_WAN -> Just #const AF_WAN
-#endif
-#ifdef AF_SDL
-    Just AF_SDL -> Just #const AF_SDL
-#endif
-#ifdef AF_NETWARE
-    Just AF_NETWARE -> Just #const AF_NETWARE
-#endif
-#ifdef AF_NDD
-    Just AF_NDD -> Just #const AF_NDD
-#endif
-#ifdef AF_INTF
-    Just AF_INTF -> Just #const AF_INTF
-#endif
-#ifdef AF_COIP
-    Just AF_COIP -> Just #const AF_COIP
-#endif
-#ifdef AF_CNT
-    Just AF_CNT -> Just #const AF_CNT
-#endif
-#ifdef Pseudo_AF_RTIP
-    Just Pseudo_AF_RTIP -> Just #const Pseudo_AF_RTIP
-#endif
-#ifdef Pseudo_AF_PIP
-    Just Pseudo_AF_PIP -> Just #const Pseudo_AF_PIP
-#endif
-#ifdef AF_SIP
-    Just AF_SIP -> Just #const AF_SIP
-#endif
-#ifdef AF_ISDN
-    Just AF_ISDN -> Just #const AF_ISDN
-#endif
-#ifdef Pseudo_AF_KEY
-    Just Pseudo_AF_KEY -> Just #const Pseudo_AF_KEY
-#endif
-#ifdef AF_NATM
-    Just AF_NATM -> Just #const AF_NATM
-#endif
-#ifdef AF_ARP
-    Just AF_ARP -> Just #const AF_ARP
-#endif
-#ifdef Pseudo_AF_HDRCMPLT
-    Just Pseudo_AF_HDRCMPLT -> Just #const Pseudo_AF_HDRCMPLT
-#endif
-#ifdef AF_ENCAP
-    Just AF_ENCAP -> Just #const AF_ENCAP
-#endif
-#ifdef AF_LINK
-    Just AF_LINK -> Just #const AF_LINK
-#endif
-#ifdef AF_RAW
-    Just AF_RAW -> Just #const AF_RAW
-#endif
-#ifdef AF_RIF
-    Just AF_RIF -> Just #const AF_RIF
-#endif
-#ifdef AF_NETROM
-    Just AF_NETROM -> Just #const AF_NETROM
-#endif
-#ifdef AF_BRIDGE
-    Just AF_BRIDGE -> Just #const AF_BRIDGE
-#endif
-#ifdef AF_ATMPVC
-    Just AF_ATMPVC -> Just #const AF_ATMPVC
-#endif
-#ifdef AF_ROSE
-    Just AF_ROSE -> Just #const AF_ROSE
-#endif
-#ifdef AF_NETBEUI
-    Just AF_NETBEUI -> Just #const AF_NETBEUI
-#endif
-#ifdef AF_SECURITY
-    Just AF_SECURITY -> Just #const AF_SECURITY
-#endif
-#ifdef AF_PACKET
-    Just AF_PACKET -> Just #const AF_PACKET
-#endif
-#ifdef AF_ASH
-    Just AF_ASH -> Just #const AF_ASH
-#endif
-#ifdef AF_ECONET
-    Just AF_ECONET -> Just #const AF_ECONET
-#endif
-#ifdef AF_ATMSVC
-    Just AF_ATMSVC -> Just #const AF_ATMSVC
-#endif
-#ifdef AF_IRDA
-    Just AF_IRDA -> Just #const AF_IRDA
-#endif
-#ifdef AF_PPPOX
-    Just AF_PPPOX -> Just #const AF_PPPOX
-#endif
-#ifdef AF_WANPIPE
-    Just AF_WANPIPE -> Just #const AF_WANPIPE
-#endif
-#ifdef AF_BLUETOOTH
-    Just AF_BLUETOOTH -> Just #const AF_BLUETOOTH
-#endif
-    _ -> Nothing
-
---------- ----------
-
-unpackFamily :: CInt -> Family
-unpackFamily f = case f of
-        (#const AF_UNSPEC) -> AF_UNSPEC
-#ifdef AF_UNIX
-        (#const AF_UNIX) -> AF_UNIX
-#endif
-#ifdef AF_INET
-        (#const AF_INET) -> AF_INET
-#endif
-#ifdef AF_INET6
-        (#const AF_INET6) -> AF_INET6
-#endif
-#ifdef AF_IMPLINK
-        (#const AF_IMPLINK) -> AF_IMPLINK
-#endif
-#ifdef AF_PUP
-        (#const AF_PUP) -> AF_PUP
-#endif
-#ifdef AF_CHAOS
-        (#const AF_CHAOS) -> AF_CHAOS
-#endif
-#ifdef AF_NS
-        (#const AF_NS) -> AF_NS
-#endif
-#ifdef AF_NBS
-        (#const AF_NBS) -> AF_NBS
-#endif
-#ifdef AF_ECMA
-        (#const AF_ECMA) -> AF_ECMA
-#endif
-#ifdef AF_DATAKIT
-        (#const AF_DATAKIT) -> AF_DATAKIT
-#endif
-#ifdef AF_CCITT
-        (#const AF_CCITT) -> AF_CCITT
-#endif
-#ifdef AF_SNA
-        (#const AF_SNA) -> AF_SNA
-#endif
-#ifdef AF_DECnet
-        (#const AF_DECnet) -> AF_DECnet
-#endif
-#ifdef AF_DLI
-        (#const AF_DLI) -> AF_DLI
-#endif
-#ifdef AF_LAT
-        (#const AF_LAT) -> AF_LAT
-#endif
-#ifdef AF_HYLINK
-        (#const AF_HYLINK) -> AF_HYLINK
-#endif
-#ifdef AF_APPLETALK
-        (#const AF_APPLETALK) -> AF_APPLETALK
-#endif
-#ifdef AF_ROUTE
-        (#const AF_ROUTE) -> AF_ROUTE
-#endif
-#ifdef AF_NETBIOS
-        (#const AF_NETBIOS) -> AF_NETBIOS
-#endif
-#ifdef AF_NIT
-        (#const AF_NIT) -> AF_NIT
-#endif
-#ifdef AF_802
-        (#const AF_802) -> AF_802
-#endif
-#ifdef AF_ISO
-        (#const AF_ISO) -> AF_ISO
-#endif
-#ifdef AF_OSI
-# if (!defined(AF_ISO)) || (defined(AF_ISO) && (AF_ISO != AF_OSI))
-        (#const AF_OSI) -> AF_OSI
-# endif
-#endif
-#ifdef AF_NETMAN
-        (#const AF_NETMAN) -> AF_NETMAN
-#endif
-#ifdef AF_X25
-        (#const AF_X25) -> AF_X25
-#endif
-#ifdef AF_AX25
-        (#const AF_AX25) -> AF_AX25
-#endif
-#ifdef AF_OSINET
-        (#const AF_OSINET) -> AF_OSINET
-#endif
-#ifdef AF_GOSSIP
-        (#const AF_GOSSIP) -> AF_GOSSIP
-#endif
-#if defined(AF_IPX) && (!defined(AF_NS) || AF_NS != AF_IPX)
-        (#const AF_IPX) -> AF_IPX
-#endif
-#ifdef Pseudo_AF_XTP
-        (#const Pseudo_AF_XTP) -> Pseudo_AF_XTP
-#endif
-#ifdef AF_CTF
-        (#const AF_CTF) -> AF_CTF
-#endif
-#ifdef AF_WAN
-        (#const AF_WAN) -> AF_WAN
-#endif
-#ifdef AF_SDL
-        (#const AF_SDL) -> AF_SDL
-#endif
-#ifdef AF_NETWARE
-        (#const AF_NETWARE) -> AF_NETWARE
-#endif
-#ifdef AF_NDD
-        (#const AF_NDD) -> AF_NDD
-#endif
-#ifdef AF_INTF
-        (#const AF_INTF) -> AF_INTF
-#endif
-#ifdef AF_COIP
-        (#const AF_COIP) -> AF_COIP
-#endif
-#ifdef AF_CNT
-        (#const AF_CNT) -> AF_CNT
-#endif
-#ifdef Pseudo_AF_RTIP
-        (#const Pseudo_AF_RTIP) -> Pseudo_AF_RTIP
-#endif
-#ifdef Pseudo_AF_PIP
-        (#const Pseudo_AF_PIP) -> Pseudo_AF_PIP
-#endif
-#ifdef AF_SIP
-        (#const AF_SIP) -> AF_SIP
-#endif
-#ifdef AF_ISDN
-        (#const AF_ISDN) -> AF_ISDN
-#endif
-#ifdef Pseudo_AF_KEY
-        (#const Pseudo_AF_KEY) -> Pseudo_AF_KEY
-#endif
-#ifdef AF_NATM
-        (#const AF_NATM) -> AF_NATM
-#endif
-#ifdef AF_ARP
-        (#const AF_ARP) -> AF_ARP
-#endif
-#ifdef Pseudo_AF_HDRCMPLT
-        (#const Pseudo_AF_HDRCMPLT) -> Pseudo_AF_HDRCMPLT
-#endif
-#ifdef AF_ENCAP
-        (#const AF_ENCAP) -> AF_ENCAP
-#endif
-#ifdef AF_LINK
-        (#const AF_LINK) -> AF_LINK
-#endif
-#ifdef AF_RAW
-        (#const AF_RAW) -> AF_RAW
-#endif
-#ifdef AF_RIF
-        (#const AF_RIF) -> AF_RIF
-#endif
-#ifdef AF_NETROM
-        (#const AF_NETROM) -> AF_NETROM
-#endif
-#ifdef AF_BRIDGE
-        (#const AF_BRIDGE) -> AF_BRIDGE
-#endif
-#ifdef AF_ATMPVC
-        (#const AF_ATMPVC) -> AF_ATMPVC
-#endif
-#ifdef AF_ROSE
-        (#const AF_ROSE) -> AF_ROSE
-#endif
-#ifdef AF_NETBEUI
-        (#const AF_NETBEUI) -> AF_NETBEUI
-#endif
-#ifdef AF_SECURITY
-        (#const AF_SECURITY) -> AF_SECURITY
-#endif
-#ifdef AF_PACKET
-        (#const AF_PACKET) -> AF_PACKET
-#endif
-#ifdef AF_ASH
-        (#const AF_ASH) -> AF_ASH
-#endif
-#ifdef AF_ECONET
-        (#const AF_ECONET) -> AF_ECONET
-#endif
-#ifdef AF_ATMSVC
-        (#const AF_ATMSVC) -> AF_ATMSVC
-#endif
-#ifdef AF_IRDA
-        (#const AF_IRDA) -> AF_IRDA
-#endif
-#ifdef AF_PPPOX
-        (#const AF_PPPOX) -> AF_PPPOX
-#endif
-#ifdef AF_WANPIPE
-        (#const AF_WANPIPE) -> AF_WANPIPE
-#endif
-#ifdef AF_BLUETOOTH
-        (#const AF_BLUETOOTH) -> AF_BLUETOOTH
-#endif
-        unknown -> error ("Network.Socket.unpackFamily: unknown address " ++
-                          "family " ++ show unknown)
-
-------------------------------------------------------------------------
--- Port Numbers
-
-newtype PortNumber = PortNum Word16 deriving (Eq, Ord, Typeable)
--- newtyped to prevent accidental use of sane-looking
--- port numbers that haven't actually been converted to
--- network-byte-order first.
-
-instance Show PortNumber where
-  showsPrec p pn = showsPrec p (portNumberToInt pn)
-
-intToPortNumber :: Int -> PortNumber
-intToPortNumber v = PortNum (htons (fromIntegral v))
-
-portNumberToInt :: PortNumber -> Int
-portNumberToInt (PortNum po) = fromIntegral (ntohs po)
-
-foreign import CALLCONV unsafe "my_ntohs" ntohs :: Word16 -> Word16
-foreign import CALLCONV unsafe "my_htons" htons :: Word16 -> Word16
---foreign import CALLCONV unsafe "ntohl" ntohl :: Word32 -> Word32
-
-instance Enum PortNumber where
-    toEnum   = intToPortNumber
-    fromEnum = portNumberToInt
-
-instance Num PortNumber where
-   fromInteger i = intToPortNumber (fromInteger i)
-    -- for completeness.
-   (+) x y   = intToPortNumber (portNumberToInt x + portNumberToInt y)
-   (-) x y   = intToPortNumber (portNumberToInt x - portNumberToInt y)
-   negate x  = intToPortNumber (-portNumberToInt x)
-   (*) x y   = intToPortNumber (portNumberToInt x * portNumberToInt y)
-   abs n     = intToPortNumber (abs (portNumberToInt n))
-   signum n  = intToPortNumber (signum (portNumberToInt n))
-
-instance Real PortNumber where
-    toRational x = toInteger x % 1
-
-instance Integral PortNumber where
-    quotRem a b = let (c,d) = quotRem (portNumberToInt a) (portNumberToInt b) in
-                  (intToPortNumber c, intToPortNumber d)
-    toInteger a = toInteger (portNumberToInt a)
-
-instance Storable PortNumber where
-   sizeOf    _ = sizeOf    (undefined :: Word16)
-   alignment _ = alignment (undefined :: Word16)
-   poke p (PortNum po) = poke (castPtr p) po
-   peek p = PortNum `liftM` peek (castPtr p)
-
-------------------------------------------------------------------------
--- Socket addresses
-
--- The scheme used for addressing sockets is somewhat quirky. The
--- calls in the BSD socket API that need to know the socket address
--- all operate in terms of struct sockaddr, a `virtual' type of
--- socket address.
-
--- The Internet family of sockets are addressed as struct sockaddr_in,
--- so when calling functions that operate on struct sockaddr, we have
--- to type cast the Internet socket address into a struct sockaddr.
--- Instances of the structure for different families might *not* be
--- the same size. Same casting is required of other families of
--- sockets such as Xerox NS. Similarly for Unix domain sockets.
-
--- To represent these socket addresses in Haskell-land, we do what BSD
--- didn't do, and use a union/algebraic type for the different
--- families. Currently only Unix domain sockets and the Internet
--- families are supported.
-
-#if defined(IPV6_SOCKET_SUPPORT)
-type FlowInfo = Word32
-type ScopeID = Word32
-#endif
-
-data SockAddr       -- C Names
-  = SockAddrInet
-    PortNumber  -- sin_port  (network byte order)
-    HostAddress -- sin_addr  (ditto)
-#if defined(IPV6_SOCKET_SUPPORT)
-  | SockAddrInet6
-        PortNumber      -- sin6_port (network byte order)
-        FlowInfo        -- sin6_flowinfo (ditto)
-        HostAddress6    -- sin6_addr (ditto)
-        ScopeID         -- sin6_scope_id (ditto)
-#endif
-#if defined(DOMAIN_SOCKET_SUPPORT)
-  | SockAddrUnix
-        String          -- sun_path
-#endif
-  deriving (Eq, Ord, Typeable)
-
-#if defined(WITH_WINSOCK) || defined(cygwin32_HOST_OS)
-type CSaFamily = (#type unsigned short)
-#elif defined(darwin_HOST_OS)
-type CSaFamily = (#type u_char)
-#else
-type CSaFamily = (#type sa_family_t)
-#endif
-
--- | Computes the storage requirements (in bytes) of the given
--- 'SockAddr'.  This function differs from 'Foreign.Storable.sizeOf'
--- in that the value of the argument /is/ used.
-sizeOfSockAddr :: SockAddr -> Int
-#if defined(DOMAIN_SOCKET_SUPPORT)
-sizeOfSockAddr (SockAddrUnix path) =
-    case path of
-        '\0':_ -> (#const sizeof(sa_family_t)) + length path
-        _      -> #const sizeof(struct sockaddr_un)
-#endif
-sizeOfSockAddr (SockAddrInet _ _) = #const sizeof(struct sockaddr_in)
-#if defined(IPV6_SOCKET_SUPPORT)
-sizeOfSockAddr (SockAddrInet6 _ _ _ _) = #const sizeof(struct sockaddr_in6)
-#endif
-
--- | Computes the storage requirements (in bytes) required for a
--- 'SockAddr' with the given 'Family'.
-sizeOfSockAddrByFamily :: Family -> Int
-#if defined(DOMAIN_SOCKET_SUPPORT)
-sizeOfSockAddrByFamily AF_UNIX  = #const sizeof(struct sockaddr_un)
-#endif
-#if defined(IPV6_SOCKET_SUPPORT)
-sizeOfSockAddrByFamily AF_INET6 = #const sizeof(struct sockaddr_in6)
-#endif
-sizeOfSockAddrByFamily AF_INET  = #const sizeof(struct sockaddr_in)
-
--- | Use a 'SockAddr' with a function requiring a pointer to a
--- 'SockAddr' and the length of that 'SockAddr'.
-withSockAddr :: SockAddr -> (Ptr SockAddr -> Int -> IO a) -> IO a
-withSockAddr addr f = do
-    let sz = sizeOfSockAddr addr
-    allocaBytes sz $ \p -> pokeSockAddr p addr >> f (castPtr p) sz
-
--- | Create a new 'SockAddr' for use with a function requiring a
--- pointer to a 'SockAddr' and the length of that 'SockAddr'.
-withNewSockAddr :: Family -> (Ptr SockAddr -> Int -> IO a) -> IO a
-withNewSockAddr family f = do
-    let sz = sizeOfSockAddrByFamily family
-    allocaBytes sz $ \ptr -> f ptr sz
-
--- We can't write an instance of 'Storable' for 'SockAddr' because
--- @sockaddr@ is a sum type of variable size but
--- 'Foreign.Storable.sizeOf' is required to be constant.
-
--- Note that on Darwin, the sockaddr structure must be zeroed before
--- use.
-
--- | Write the given 'SockAddr' to the given memory location.
-pokeSockAddr :: Ptr a -> SockAddr -> IO ()
-#if defined(DOMAIN_SOCKET_SUPPORT)
-pokeSockAddr p (SockAddrUnix path) = do
-#if defined(darwin_HOST_OS)
-    zeroMemory p (#const sizeof(struct sockaddr_un))
-#endif
-#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
-    (#poke struct sockaddr_un, sun_len) p ((#const sizeof(struct sockaddr_un)) :: Word8)
-#endif
-    (#poke struct sockaddr_un, sun_family) p ((#const AF_UNIX) :: CSaFamily)
-    let pathC = map castCharToCChar path
-        poker = case path of ('\0':_) -> pokeArray; _ -> pokeArray0 0
-    poker ((#ptr struct sockaddr_un, sun_path) p) pathC
-#endif
-pokeSockAddr p (SockAddrInet (PortNum port) addr) = do
-#if defined(darwin_HOST_OS)
-    zeroMemory p (#const sizeof(struct sockaddr_in))
-#endif
-#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
-    (#poke struct sockaddr_in, sin_len) p ((#const sizeof(struct sockaddr_in)) :: Word8)
-#endif
-    (#poke struct sockaddr_in, sin_family) p ((#const AF_INET) :: CSaFamily)
-    (#poke struct sockaddr_in, sin_port) p port
-    (#poke struct sockaddr_in, sin_addr) p addr
-#if defined(IPV6_SOCKET_SUPPORT)
-pokeSockAddr p (SockAddrInet6 (PortNum port) flow addr scope) = do
-#if defined(darwin_HOST_OS)
-    zeroMemory p (#const sizeof(struct sockaddr_in6))
-#endif
-#if defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
-    (#poke struct sockaddr_in6, sin6_len) p ((#const sizeof(struct sockaddr_in6)) :: Word8)
-#endif
-    (#poke struct sockaddr_in6, sin6_family) p ((#const AF_INET6) :: CSaFamily)
-    (#poke struct sockaddr_in6, sin6_port) p port
-    (#poke struct sockaddr_in6, sin6_flowinfo) p flow
-    (#poke struct sockaddr_in6, sin6_addr) p addr
-    (#poke struct sockaddr_in6, sin6_scope_id) p scope
-#endif
-
--- | Read a 'SockAddr' from the given memory location.
-peekSockAddr :: Ptr SockAddr -> IO SockAddr
-peekSockAddr p = do
-  family <- (#peek struct sockaddr, sa_family) p
-  case family :: CSaFamily of
-#if defined(DOMAIN_SOCKET_SUPPORT)
-    (#const AF_UNIX) -> do
-        str <- peekCString ((#ptr struct sockaddr_un, sun_path) p)
-        return (SockAddrUnix str)
-#endif
-    (#const AF_INET) -> do
-        addr <- (#peek struct sockaddr_in, sin_addr) p
-        port <- (#peek struct sockaddr_in, sin_port) p
-        return (SockAddrInet (PortNum port) addr)
-#if defined(IPV6_SOCKET_SUPPORT)
-    (#const AF_INET6) -> do
-        port <- (#peek struct sockaddr_in6, sin6_port) p
-        flow <- (#peek struct sockaddr_in6, sin6_flowinfo) p
-        addr <- (#peek struct sockaddr_in6, sin6_addr) p
-        scope <- (#peek struct sockaddr_in6, sin6_scope_id) p
-        return (SockAddrInet6 (PortNum port) flow addr scope)
-#endif
-
-------------------------------------------------------------------------
-
--- | Network byte order.
-type HostAddress = Word32
-
-#if defined(IPV6_SOCKET_SUPPORT)
--- | Host byte order.
-type HostAddress6 = (Word32, Word32, Word32, Word32)
-
--- The peek32 and poke32 functions work around the fact that the RFCs
--- don't require 32-bit-wide address fields to be present.  We can
--- only portably rely on an 8-bit field, s6_addr.
-
-s6_addr_offset :: Int
-s6_addr_offset = (#offset struct in6_addr, s6_addr)
-
-peek32 :: Ptr a -> Int -> IO Word32
-peek32 p i0 = do
-    let i' = i0 * 4
-        peekByte n = peekByteOff p (s6_addr_offset + i' + n) :: IO Word8
-        a `sl` i = fromIntegral a `shiftL` i
-    a0 <- peekByte 0
-    a1 <- peekByte 1
-    a2 <- peekByte 2
-    a3 <- peekByte 3
-    return ((a0 `sl` 24) .|. (a1 `sl` 16) .|. (a2 `sl` 8) .|. (a3 `sl` 0))
-
-poke32 :: Ptr a -> Int -> Word32 -> IO ()
-poke32 p i0 a = do
-    let i' = i0 * 4
-        pokeByte n = pokeByteOff p (s6_addr_offset + i' + n)
-        x `sr` i = fromIntegral (x `shiftR` i) :: Word8
-    pokeByte 0 (a `sr` 24)
-    pokeByte 1 (a `sr` 16)
-    pokeByte 2 (a `sr`  8)
-    pokeByte 3 (a `sr`  0)
-
-instance Storable HostAddress6 where
-    sizeOf _    = (#const sizeof(struct in6_addr))
-    alignment _ = alignment (undefined :: CInt)
-
-    peek p = do
-        a <- peek32 p 0
-        b <- peek32 p 1
-        c <- peek32 p 2
-        d <- peek32 p 3
-        return (a, b, c, d)
-
-    poke p (a, b, c, d) = do
-        poke32 p 0 a
-        poke32 p 1 b
-        poke32 p 2 c
-        poke32 p 3 d
-#endif
-
-------------------------------------------------------------------------
--- Helper functions
-
-foreign import ccall unsafe "string.h" memset :: Ptr a -> CInt -> CSize -> IO ()
-
--- | Zero a structure.
-zeroMemory :: Ptr a -> CSize -> IO ()
-zeroMemory dest nbytes = memset dest 0 (fromIntegral nbytes)
diff --git a/standalone/android/tmp/network-2.4.1.2/Network/URI.hs b/standalone/android/tmp/network-2.4.1.2/Network/URI.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Network/URI.hs
+++ /dev/null
@@ -1,1349 +0,0 @@
-{-# LANGUAGE CPP #-}
---------------------------------------------------------------------------------
--- |
---  Module      :  Network.URI
---  Copyright   :  (c) 2004, Graham Klyne
---  License     :  BSD-style (see end of this file)
---
---  Maintainer  :  Graham Klyne <gk@ninebynine.org>
---  Stability   :  provisional
---  Portability :  portable
---
---  This module defines functions for handling URIs.  It presents substantially the
---  same interface as the older GHC Network.URI module, but is implemented using
---  Parsec rather than a Regex library that is not available with Hugs.  The internal
---  representation of URI has been changed so that URI strings are more
---  completely preserved when round-tripping to a URI value and back.
---
---  In addition, four methods are provided for parsing different
---  kinds of URI string (as noted in RFC3986):
---      'parseURI',
---      'parseURIReference',
---      'parseRelativeReference' and
---      'parseAbsoluteURI'.
---
---  Further, four methods are provided for classifying different
---  kinds of URI string (as noted in RFC3986):
---      'isURI',
---      'isURIReference',
---      'isRelativeReference' and
---      'isAbsoluteURI'.
---
---  The long-standing official reference for URI handling was RFC2396 [1],
---  as updated by RFC 2732 [2], but this was replaced by a new specification,
---  RFC3986 [3] in January 2005.  This latter specification has been used
---  as the primary reference for constructing the URI parser implemented
---  here, and it is intended that there is a direct relationship between
---  the syntax definition in that document and this parser implementation.
---
---  RFC 1808 [4] contains a number of test cases for relative URI handling.
---  Dan Connolly's Python module @uripath.py@ [5] also contains useful details
---  and test cases.
---
---  Some of the code has been copied from the previous GHC implementation,
---  but the parser is replaced with one that performs more complete
---  syntax checking of the URI itself, according to RFC3986 [3].
---
---  References
---
---  (1) <http://www.ietf.org/rfc/rfc2396.txt>
---
---  (2) <http://www.ietf.org/rfc/rfc2732.txt>
---
---  (3) <http://www.ietf.org/rfc/rfc3986.txt>
---
---  (4) <http://www.ietf.org/rfc/rfc1808.txt>
---
---  (5) <http://www.w3.org/2000/10/swap/uripath.py>
---
---------------------------------------------------------------------------------
-
-module Network.URI
-    (
-    -- * The URI type
-      URI(..)
-    , URIAuth(..)
-    , nullURI
-      
-    -- * Parsing
-    , parseURI
-    , parseURIReference
-    , parseRelativeReference
-    , parseAbsoluteURI
-      
-    -- * Test for strings containing various kinds of URI
-    , isURI
-    , isURIReference
-    , isRelativeReference
-    , isAbsoluteURI
-    , isIPv6address
-    , isIPv4address
-      
-    -- * Predicates
-    , uriIsAbsolute
-    , uriIsRelative
-      
-    -- * Relative URIs
-    , relativeTo
-    , nonStrictRelativeTo
-    , relativeFrom
-      
-    -- * Operations on URI strings
-    -- | Support for putting strings into URI-friendly
-    --   escaped format and getting them back again.
-    --   This can't be done transparently in all cases, because certain
-    --   characters have different meanings in different kinds of URI.
-    --   The URI spec [3], section 2.4, indicates that all URI components
-    --   should be escaped before they are assembled as a URI:
-    --   \"Once produced, a URI is always in its percent-encoded form\"
-    , uriToString
-    , isReserved, isUnreserved
-    , isAllowedInURI, isUnescapedInURI
-    , isUnescapedInURIComponent
-    , escapeURIChar
-    , escapeURIString
-    , unEscapeString
-      
-    -- * URI Normalization functions
-    , normalizeCase
-    , normalizeEscape
-    , normalizePathSegments
-      
-    -- * Deprecated functions
-    , parseabsoluteURI
-    , escapeString
-    , reserved, unreserved
-    , scheme, authority, path, query, fragment
-    ) where
-
-import Text.ParserCombinators.Parsec
-    ( GenParser, ParseError
-    , parse, (<|>), (<?>), try
-    , option, many, many1, count, notFollowedBy
-    , char, satisfy, oneOf, string, eof
-    , unexpected
-    )
-
-import Control.Monad (MonadPlus(..))
-import Data.Char (ord, chr, isHexDigit, toLower, toUpper, digitToInt)
-import Data.Bits ((.|.),(.&.),shiftL,shiftR)
-import Debug.Trace (trace)
-import Numeric (showIntAtBase)
-
-import Data.Typeable (Typeable)
-#if MIN_VERSION_base(4,0,0)
-import Data.Data (Data)
-#else
-import Data.Generics (Data)
-#endif
-
-------------------------------------------------------------
---  The URI datatype
-------------------------------------------------------------
-
--- |Represents a general universal resource identifier using
---  its component parts.
---
---  For example, for the URI
---
---  >   foo://anonymous@www.haskell.org:42/ghc?query#frag
---
---  the components are:
---
-data URI = URI
-    { uriScheme     :: String           -- ^ @foo:@
-    , uriAuthority  :: Maybe URIAuth    -- ^ @\/\/anonymous\@www.haskell.org:42@
-    , uriPath       :: String           -- ^ @\/ghc@
-    , uriQuery      :: String           -- ^ @?query@
-    , uriFragment   :: String           -- ^ @#frag@
-    } deriving (Eq, Ord, Typeable, Data)
-
--- |Type for authority value within a URI
-data URIAuth = URIAuth
-    { uriUserInfo   :: String           -- ^ @anonymous\@@
-    , uriRegName    :: String           -- ^ @www.haskell.org@
-    , uriPort       :: String           -- ^ @:42@
-    } deriving (Eq, Ord, Show, Typeable, Data)
-
--- |Blank URI
-nullURI :: URI
-nullURI = URI
-    { uriScheme     = ""
-    , uriAuthority  = Nothing
-    , uriPath       = ""
-    , uriQuery      = ""
-    , uriFragment   = ""
-    }
-
---  URI as instance of Show.  Note that for security reasons, the default
---  behaviour is to suppress any userinfo field (see RFC3986, section 7.5).
---  This can be overridden by using uriToString directly with first
---  argument @id@ (noting that this returns a ShowS value rather than a string).
---
---  [[[Another design would be to embed the userinfo mapping function in
---  the URIAuth value, with the default value suppressing userinfo formatting,
---  but providing a function to return a new URI value with userinfo
---  data exposed by show.]]]
---
-instance Show URI where
-    showsPrec _ = uriToString defaultUserInfoMap
-
-defaultUserInfoMap :: String -> String
-defaultUserInfoMap uinf = user++newpass
-    where
-        (user,pass) = break (==':') uinf
-        newpass     = if null pass || (pass == "@")
-                                   || (pass == ":@")
-                        then pass
-                        else ":...@"
-
-testDefaultUserInfoMap :: [Bool]
-testDefaultUserInfoMap =
-     [ defaultUserInfoMap ""                == ""
-     , defaultUserInfoMap "@"               == "@"
-     , defaultUserInfoMap "user@"           == "user@"
-     , defaultUserInfoMap "user:@"          == "user:@"
-     , defaultUserInfoMap "user:anonymous@" == "user:...@"
-     , defaultUserInfoMap "user:pass@"      == "user:...@"
-     , defaultUserInfoMap "user:pass"       == "user:...@"
-     , defaultUserInfoMap "user:anonymous"  == "user:...@"
-     ]
-
-------------------------------------------------------------
---  Parse a URI
-------------------------------------------------------------
-
--- |Turn a string containing a URI into a 'URI'.
---  Returns 'Nothing' if the string is not a valid URI;
---  (an absolute URI with optional fragment identifier).
---
---  NOTE: this is different from the previous network.URI,
---  whose @parseURI@ function works like 'parseURIReference'
---  in this module.
---
-parseURI :: String -> Maybe URI
-parseURI = parseURIAny uri
-
--- |Parse a URI reference to a 'URI' value.
---  Returns 'Nothing' if the string is not a valid URI reference.
---  (an absolute or relative URI with optional fragment identifier).
---
-parseURIReference :: String -> Maybe URI
-parseURIReference = parseURIAny uriReference
-
--- |Parse a relative URI to a 'URI' value.
---  Returns 'Nothing' if the string is not a valid relative URI.
---  (a relative URI with optional fragment identifier).
---
-parseRelativeReference :: String -> Maybe URI
-parseRelativeReference = parseURIAny relativeRef
-
--- |Parse an absolute URI to a 'URI' value.
---  Returns 'Nothing' if the string is not a valid absolute URI.
---  (an absolute URI without a fragment identifier).
---
-parseAbsoluteURI :: String -> Maybe URI
-parseAbsoluteURI = parseURIAny absoluteURI
-
--- |Test if string contains a valid URI
---  (an absolute URI with optional fragment identifier).
---
-isURI :: String -> Bool
-isURI = isValidParse uri
-
--- |Test if string contains a valid URI reference
---  (an absolute or relative URI with optional fragment identifier).
---
-isURIReference :: String -> Bool
-isURIReference = isValidParse uriReference
-
--- |Test if string contains a valid relative URI
---  (a relative URI with optional fragment identifier).
---
-isRelativeReference :: String -> Bool
-isRelativeReference = isValidParse relativeRef
-
--- |Test if string contains a valid absolute URI
---  (an absolute URI without a fragment identifier).
---
-isAbsoluteURI :: String -> Bool
-isAbsoluteURI = isValidParse absoluteURI
-
--- |Test if string contains a valid IPv6 address
---
-isIPv6address :: String -> Bool
-isIPv6address = isValidParse ipv6address
-
--- |Test if string contains a valid IPv4 address
---
-isIPv4address :: String -> Bool
-isIPv4address = isValidParse ipv4address
-
--- |Test function: parse and reconstruct a URI reference
---
-testURIReference :: String -> String
-testURIReference uristr = show (parseAll uriReference "" uristr)
-
---  Helper function for turning a string into a URI
---
-parseURIAny :: URIParser URI -> String -> Maybe URI
-parseURIAny parser uristr = case parseAll parser "" uristr of
-        Left  _ -> Nothing
-        Right u -> Just u
-
---  Helper function to test a string match to a parser
---
-isValidParse :: URIParser a -> String -> Bool
-isValidParse parser uristr = case parseAll parser "" uristr of
-        -- Left  e -> error (show e)
-        Left  _ -> False
-        Right _ -> True
-
-parseAll :: URIParser a -> String -> String -> Either ParseError a
-parseAll parser filename uristr = parse newparser filename uristr
-    where
-        newparser =
-            do  { res <- parser
-                ; eof
-                ; return res
-                }
-
-------------------------------------------------------------
---  Predicates
-------------------------------------------------------------
-
-uriIsAbsolute :: URI -> Bool
-uriIsAbsolute (URI {uriScheme = scheme}) = scheme /= ""
-
-uriIsRelative :: URI -> Bool
-uriIsRelative = not . uriIsAbsolute
-
-------------------------------------------------------------
---  URI parser body based on Parsec elements and combinators
-------------------------------------------------------------
-
---  Parser parser type.
---  Currently
-type URIParser a = GenParser Char () a
-
---  RFC3986, section 2.1
---
---  Parse and return a 'pct-encoded' sequence
---
-escaped :: URIParser String
-escaped =
-    do  { char '%'
-        ; h1 <- hexDigitChar
-        ; h2 <- hexDigitChar
-        ; return $ ['%',h1,h2]
-        }
-
---  RFC3986, section 2.2
---
--- |Returns 'True' if the character is a \"reserved\" character in a
---  URI.  To include a literal instance of one of these characters in a
---  component of a URI, it must be escaped.
---
-isReserved :: Char -> Bool
-isReserved c = isGenDelims c || isSubDelims c
-
-isGenDelims :: Char -> Bool
-isGenDelims c = c `elem` ":/?#[]@"
-
-isSubDelims :: Char -> Bool
-isSubDelims c = c `elem` "!$&'()*+,;="
-
-genDelims :: URIParser String
-genDelims = do { c <- satisfy isGenDelims ; return [c] }
-
-subDelims :: URIParser String
-subDelims = do { c <- satisfy isSubDelims ; return [c] }
-
---  RFC3986, section 2.3
---
--- |Returns 'True' if the character is an \"unreserved\" character in
---  a URI.  These characters do not need to be escaped in a URI.  The
---  only characters allowed in a URI are either \"reserved\",
---  \"unreserved\", or an escape sequence (@%@ followed by two hex digits).
---
-isUnreserved :: Char -> Bool
-isUnreserved c = isAlphaNumChar c || (c `elem` "-_.~")
-
-unreservedChar :: URIParser String
-unreservedChar = do { c <- satisfy isUnreserved ; return [c] }
-
---  RFC3986, section 3
---
---   URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
---
---   hier-part   = "//" authority path-abempty
---               / path-abs
---               / path-rootless
---               / path-empty
-
-uri :: URIParser URI
-uri =
-    do  { us <- try uscheme
-        -- ; ua <- option Nothing ( do { try (string "//") ; uauthority } )
-        -- ; up <- upath
-        ; (ua,up) <- hierPart
-        ; uq <- option "" ( do { char '?' ; uquery    } )
-        ; uf <- option "" ( do { char '#' ; ufragment } )
-        ; return $ URI
-            { uriScheme    = us
-            , uriAuthority = ua
-            , uriPath      = up
-            , uriQuery     = uq
-            , uriFragment  = uf
-            }
-        }
-
-hierPart :: URIParser ((Maybe URIAuth),String)
-hierPart =
-        do  { try (string "//")
-            ; ua <- uauthority
-            ; up <- pathAbEmpty
-            ; return (ua,up)
-            }
-    <|> do  { up <- pathAbs
-            ; return (Nothing,up)
-            }
-    <|> do  { up <- pathRootLess
-            ; return (Nothing,up)
-            }
-    <|> do  { return (Nothing,"")
-            }
-
---  RFC3986, section 3.1
-
-uscheme :: URIParser String
-uscheme =
-    do  { s <- oneThenMany alphaChar (satisfy isSchemeChar)
-        ; char ':'
-        ; return $ s++":"
-        }
-
---  RFC3986, section 3.2
-
-uauthority :: URIParser (Maybe URIAuth)
-uauthority =
-    do  { uu <- option "" (try userinfo)
-        ; uh <- host
-        ; up <- option "" port
-        ; return $ Just $ URIAuth
-            { uriUserInfo = uu
-            , uriRegName  = uh
-            , uriPort     = up
-            }
-        }
-
---  RFC3986, section 3.2.1
-
-userinfo :: URIParser String
-userinfo =
-    do  { uu <- many (uchar ";:&=+$,")
-        ; char '@'
-        ; return (concat uu ++"@")
-        }
-
---  RFC3986, section 3.2.2
-
-host :: URIParser String
-host = ipLiteral <|> try ipv4address <|> regName
-
-ipLiteral :: URIParser String
-ipLiteral =
-    do  { char '['
-        ; ua <- ( ipv6address <|> ipvFuture )
-        ; char ']'
-        ; return $ "[" ++ ua ++ "]"
-        }
-    <?> "IP address literal"
-
-ipvFuture :: URIParser String
-ipvFuture =
-    do  { char 'v'
-        ; h <- hexDigitChar
-        ; char '.'
-        ; a <- many1 (satisfy isIpvFutureChar)
-        ; return $ 'v':h:'.':a
-        }
-
-isIpvFutureChar :: Char -> Bool
-isIpvFutureChar c = isUnreserved c || isSubDelims c || (c==';')
-
-ipv6address :: URIParser String
-ipv6address =
-        try ( do
-                { a2 <- count 6 h4c
-                ; a3 <- ls32
-                ; return $ concat a2 ++ a3
-                } )
-    <|> try ( do
-                { string "::"
-                ; a2 <- count 5 h4c
-                ; a3 <- ls32
-                ; return $ "::" ++ concat a2 ++ a3
-                } )
-    <|> try ( do
-                { a1 <- opt_n_h4c_h4 0
-                ; string "::"
-                ; a2 <- count 4 h4c
-                ; a3 <- ls32
-                ; return $ a1 ++ "::" ++ concat a2 ++ a3
-                } )
-    <|> try ( do
-                { a1 <- opt_n_h4c_h4 1
-                ; string "::"
-                ; a2 <- count 3 h4c
-                ; a3 <- ls32
-                ; return $ a1 ++ "::" ++ concat a2 ++ a3
-                } )
-    <|> try ( do
-                { a1 <- opt_n_h4c_h4 2
-                ; string "::"
-                ; a2 <- count 2 h4c
-                ; a3 <- ls32
-                ; return $ a1 ++ "::" ++ concat a2 ++ a3
-                } )
-    <|> try ( do
-                { a1 <- opt_n_h4c_h4 3
-                ; string "::"
-                ; a2 <- h4c
-                ; a3 <- ls32
-                ; return $ a1 ++ "::" ++ a2 ++ a3
-                } )
-    <|> try ( do
-                { a1 <- opt_n_h4c_h4 4
-                ; string "::"
-                ; a3 <- ls32
-                ; return $ a1 ++ "::" ++ a3
-                } )
-    <|> try ( do
-                { a1 <- opt_n_h4c_h4 5
-                ; string "::"
-                ; a3 <- h4
-                ; return $ a1 ++ "::" ++ a3
-                } )
-    <|> try ( do
-                { a1 <- opt_n_h4c_h4 6
-                ; string "::"
-                ; return $ a1 ++ "::"
-                } )
-    <?> "IPv6 address"
-
-opt_n_h4c_h4 :: Int -> URIParser String
-opt_n_h4c_h4 n = option "" $
-    do  { a1 <- countMinMax 0 n h4c
-        ; a2 <- h4
-        ; return $ concat a1 ++ a2
-        }
-
-ls32 :: URIParser String
-ls32 =  try ( do
-                { a1 <- h4c
-                ; a2 <- h4
-                ; return (a1++a2)
-                } )
-    <|> ipv4address
-
-h4c :: URIParser String
-h4c = try $
-    do  { a1 <- h4
-        ; char ':'
-        ; notFollowedBy (char ':')
-        ; return $ a1 ++ ":"
-        }
-
-h4 :: URIParser String
-h4 = countMinMax 1 4 hexDigitChar
-
-ipv4address :: URIParser String
-ipv4address =
-    do  { a1 <- decOctet ; char '.'
-        ; a2 <- decOctet ; char '.'
-        ; a3 <- decOctet ; char '.'
-        ; a4 <- decOctet
-        ; notFollowedBy regName
-        ; return $ a1++"."++a2++"."++a3++"."++a4
-        }
-    <?> "IPv4 Address"
-
-decOctet :: URIParser String
-decOctet =
-    do  { a1 <- countMinMax 1 3 digitChar
-        ; if (read a1 :: Integer) > 255 then
-            fail "Decimal octet value too large"
-          else
-            return a1
-        }
-
-regName :: URIParser String
-regName =
-    do  { ss <- countMinMax 0 255 ( unreservedChar <|> escaped <|> subDelims )
-        ; return $ concat ss
-        }
-    <?> "Registered name"
-
---  RFC3986, section 3.2.3
-
-port :: URIParser String
-port =
-    do  { char ':'
-        ; p <- many digitChar
-        ; return (':':p)
-        }
-
---
---  RFC3986, section 3.3
---
---   path          = path-abempty    ; begins with "/" or is empty
---                 / path-abs        ; begins with "/" but not "//"
---                 / path-noscheme   ; begins with a non-colon segment
---                 / path-rootless   ; begins with a segment
---                 / path-empty      ; zero characters
---
---   path-abempty  = *( "/" segment )
---   path-abs      = "/" [ segment-nz *( "/" segment ) ]
---   path-noscheme = segment-nzc *( "/" segment )
---   path-rootless = segment-nz *( "/" segment )
---   path-empty    = 0<pchar>
---
---   segment       = *pchar
---   segment-nz    = 1*pchar
---   segment-nzc   = 1*( unreserved / pct-encoded / sub-delims / "@" )
---
---   pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
-
-{-
-upath :: URIParser String
-upath = pathAbEmpty
-    <|> pathAbs
-    <|> pathNoScheme
-    <|> pathRootLess
-    <|> pathEmpty
--}
-
-pathAbEmpty :: URIParser String
-pathAbEmpty =
-    do  { ss <- many slashSegment
-        ; return $ concat ss
-        }
-
-pathAbs :: URIParser String
-pathAbs =
-    do  { char '/'
-        ; ss <- option "" pathRootLess
-        ; return $ '/':ss
-        }
-
-pathNoScheme :: URIParser String
-pathNoScheme =
-    do  { s1 <- segmentNzc
-        ; ss <- many slashSegment
-        ; return $ concat (s1:ss)
-        }
-
-pathRootLess :: URIParser String
-pathRootLess =
-    do  { s1 <- segmentNz
-        ; ss <- many slashSegment
-        ; return $ concat (s1:ss)
-        }
-
-slashSegment :: URIParser String
-slashSegment =
-    do  { char '/'
-        ; s <- segment
-        ; return ('/':s)
-        }
-
-segment :: URIParser String
-segment =
-    do  { ps <- many pchar
-        ; return $ concat ps
-        }
-
-segmentNz :: URIParser String
-segmentNz =
-    do  { ps <- many1 pchar
-        ; return $ concat ps
-        }
-
-segmentNzc :: URIParser String
-segmentNzc =
-    do  { ps <- many1 (uchar "@")
-        ; return $ concat ps
-        }
-
-pchar :: URIParser String
-pchar = uchar ":@"
-
--- helper function for pchar and friends
-uchar :: String -> URIParser String
-uchar extras =
-        unreservedChar
-    <|> escaped
-    <|> subDelims
-    <|> do { c <- oneOf extras ; return [c] }
-
---  RFC3986, section 3.4
-
-uquery :: URIParser String
-uquery =
-    do  { ss <- many $ uchar (":@"++"/?")
-        ; return $ '?':concat ss
-        }
-
---  RFC3986, section 3.5
-
-ufragment :: URIParser String
-ufragment =
-    do  { ss <- many $ uchar (":@"++"/?")
-        ; return $ '#':concat ss
-        }
-
---  Reference, Relative and Absolute URI forms
---
---  RFC3986, section 4.1
-
-uriReference :: URIParser URI
-uriReference = uri <|> relativeRef
-
---  RFC3986, section 4.2
---
---   relative-URI  = relative-part [ "?" query ] [ "#" fragment ]
---
---   relative-part = "//" authority path-abempty
---                 / path-abs
---                 / path-noscheme
---                 / path-empty
-
-relativeRef :: URIParser URI
-relativeRef =
-    do  { notMatching uscheme
-        -- ; ua <- option Nothing ( do { try (string "//") ; uauthority } )
-        -- ; up <- upath
-        ; (ua,up) <- relativePart
-        ; uq <- option "" ( do { char '?' ; uquery    } )
-        ; uf <- option "" ( do { char '#' ; ufragment } )
-        ; return $ URI
-            { uriScheme    = ""
-            , uriAuthority = ua
-            , uriPath      = up
-            , uriQuery     = uq
-            , uriFragment  = uf
-            }
-        }
-
-relativePart :: URIParser ((Maybe URIAuth),String)
-relativePart =
-        do  { try (string "//")
-            ; ua <- uauthority
-            ; up <- pathAbEmpty
-            ; return (ua,up)
-            }
-    <|> do  { up <- pathAbs
-            ; return (Nothing,up)
-            }
-    <|> do  { up <- pathNoScheme
-            ; return (Nothing,up)
-            }
-    <|> do  { return (Nothing,"")
-            }
-
---  RFC3986, section 4.3
-
-absoluteURI :: URIParser URI
-absoluteURI =
-    do  { us <- uscheme
-        -- ; ua <- option Nothing ( do { try (string "//") ; uauthority } )
-        -- ; up <- upath
-        ; (ua,up) <- hierPart
-        ; uq <- option "" ( do { char '?' ; uquery    } )
-        ; return $ URI
-            { uriScheme    = us
-            , uriAuthority = ua
-            , uriPath      = up
-            , uriQuery     = uq
-            , uriFragment  = ""
-            }
-        }
-
---  Imports from RFC 2234
-
-    -- NOTE: can't use isAlphaNum etc. because these deal with ISO 8859
-    -- (and possibly Unicode!) chars.
-    -- [[[Above was a comment originally in GHC Network/URI.hs:
-    --    when IRIs are introduced then most codepoints above 128(?) should
-    --    be treated as unreserved, and higher codepoints for letters should
-    --    certainly be allowed.
-    -- ]]]
-
-isAlphaChar :: Char -> Bool
-isAlphaChar c    = (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')
-
-isDigitChar :: Char -> Bool
-isDigitChar c    = (c >= '0' && c <= '9')
-
-isAlphaNumChar :: Char -> Bool
-isAlphaNumChar c = isAlphaChar c || isDigitChar c
-
-isHexDigitChar :: Char -> Bool
-isHexDigitChar c = isHexDigit c
-
-isSchemeChar :: Char -> Bool
-isSchemeChar c   = (isAlphaNumChar c) || (c `elem` "+-.")
-
-alphaChar :: URIParser Char
-alphaChar = satisfy isAlphaChar         -- or: Parsec.letter ?
-
-digitChar :: URIParser Char
-digitChar = satisfy isDigitChar         -- or: Parsec.digit ?
-
-alphaNumChar :: URIParser Char
-alphaNumChar = satisfy isAlphaNumChar
-
-hexDigitChar :: URIParser Char
-hexDigitChar = satisfy isHexDigitChar   -- or: Parsec.hexDigit ?
-
---  Additional parser combinators for common patterns
-
-oneThenMany :: GenParser t s a -> GenParser t s a -> GenParser t s [a]
-oneThenMany p1 pr =
-    do  { a1 <- p1
-        ; ar <- many pr
-        ; return (a1:ar)
-        }
-
-countMinMax :: Int -> Int -> GenParser t s a -> GenParser t s [a]
-countMinMax m n p | m > 0 =
-    do  { a1 <- p
-        ; ar <- countMinMax (m-1) (n-1) p
-        ; return (a1:ar)
-        }
-countMinMax _ n _ | n <= 0 = return []
-countMinMax _ n p = option [] $
-    do  { a1 <- p
-        ; ar <- countMinMax 0 (n-1) p
-        ; return (a1:ar)
-        }
-
-notMatching :: Show a => GenParser tok st a -> GenParser tok st ()
-notMatching p = do { a <- try p ; unexpected (show a) } <|> return ()
-
-------------------------------------------------------------
---  Reconstruct a URI string
-------------------------------------------------------------
---
--- |Turn a 'URI' into a string.
---
---  Uses a supplied function to map the userinfo part of the URI.
---
---  The Show instance for URI uses a mapping that hides any password
---  that may be present in the URI.  Use this function with argument @id@
---  to preserve the password in the formatted output.
---
-uriToString :: (String->String) -> URI -> ShowS
-uriToString userinfomap URI { uriScheme=myscheme
-                            , uriAuthority=myauthority
-                            , uriPath=mypath
-                            , uriQuery=myquery
-                            , uriFragment=myfragment
-                            } =
-    (myscheme++) . (uriAuthToString userinfomap myauthority)
-               . (mypath++) . (myquery++) . (myfragment++)
-
-uriAuthToString :: (String->String) -> (Maybe URIAuth) -> ShowS
-uriAuthToString _           Nothing   = id          -- shows ""
-uriAuthToString userinfomap
-        (Just URIAuth { uriUserInfo = myuinfo
-                      , uriRegName  = myregname
-                      , uriPort     = myport
-                      } ) =
-    ("//"++) . (if null myuinfo then id else ((userinfomap myuinfo)++))
-             . (myregname++)
-             . (myport++)
-
-------------------------------------------------------------
---  Character classes
-------------------------------------------------------------
-
--- | Returns 'True' if the character is allowed in a URI.
---
-isAllowedInURI :: Char -> Bool
-isAllowedInURI c = isReserved c || isUnreserved c || c == '%' -- escape char
-
--- | Returns 'True' if the character is allowed unescaped in a URI.
---
-isUnescapedInURI :: Char -> Bool
-isUnescapedInURI c = isReserved c || isUnreserved c
-
--- | Returns 'True' if the character is allowed unescaped in a URI component.
---
-isUnescapedInURIComponent :: Char -> Bool
-isUnescapedInURIComponent c = not (isReserved c || not (isUnescapedInURI c))
-
-------------------------------------------------------------
---  Escape sequence handling
-------------------------------------------------------------
-
--- |Escape character if supplied predicate is not satisfied,
---  otherwise return character as singleton string.
---
-escapeURIChar :: (Char->Bool) -> Char -> String
-escapeURIChar p c
-    | p c       = [c]
-    | otherwise = concatMap (\i -> '%' : myShowHex i "") (utf8EncodeChar c)
-    where
-        myShowHex :: Int -> ShowS
-        myShowHex n r =  case showIntAtBase 16 (toChrHex) n r of
-            []  -> "00"
-            [x] -> ['0',x]
-            cs  -> cs
-        toChrHex d
-            | d < 10    = chr (ord '0' + fromIntegral d)
-            | otherwise = chr (ord 'A' + fromIntegral (d - 10))
-
--- From http://hackage.haskell.org/package/utf8-string
--- by Eric Mertens, BSD3
--- Returns [Int] for use with showIntAtBase
-utf8EncodeChar :: Char -> [Int]
-utf8EncodeChar = map fromIntegral . go . ord
- where
-  go oc
-   | oc <= 0x7f       = [oc]
-
-   | oc <= 0x7ff      = [ 0xc0 + (oc `shiftR` 6)
-                        , 0x80 + oc .&. 0x3f
-                        ]
-
-   | oc <= 0xffff     = [ 0xe0 + (oc `shiftR` 12)
-                        , 0x80 + ((oc `shiftR` 6) .&. 0x3f)
-                        , 0x80 + oc .&. 0x3f
-                        ]
-   | otherwise        = [ 0xf0 + (oc `shiftR` 18)
-                        , 0x80 + ((oc `shiftR` 12) .&. 0x3f)
-                        , 0x80 + ((oc `shiftR` 6) .&. 0x3f)
-                        , 0x80 + oc .&. 0x3f
-                        ]
-
--- |Can be used to make a string valid for use in a URI.
---
-escapeURIString
-    :: (Char->Bool)     -- ^ a predicate which returns 'False'
-                        --   if the character should be escaped
-    -> String           -- ^ the string to process
-    -> String           -- ^ the resulting URI string
-escapeURIString p s = concatMap (escapeURIChar p) s
-
--- |Turns all instances of escaped characters in the string back
---  into literal characters.
---
-unEscapeString :: String -> String
-unEscapeString [] = ""
-unEscapeString s@(c:cs) = case unEscapeByte s of
-    Just (byte, rest) -> unEscapeUtf8 byte rest
-    Nothing -> c : unEscapeString cs
-
-unEscapeByte :: String -> Maybe (Int, String)
-unEscapeByte ('%':x1:x2:s) | isHexDigit x1 && isHexDigit x2 =
-    Just (digitToInt x1 * 16 + digitToInt x2, s)
-unEscapeByte _ = Nothing
-
--- Adapted from http://hackage.haskell.org/package/utf8-string
--- by Eric Mertens, BSD3
-unEscapeUtf8 :: Int -> String -> String
-unEscapeUtf8 c rest
-    | c < 0x80 = chr c : unEscapeString rest
-    | c < 0xc0 = replacement_character : unEscapeString rest
-    | c < 0xe0 = multi1
-    | c < 0xf0 = multi_byte 2 0xf 0x800
-    | c < 0xf8 = multi_byte 3 0x7 0x10000
-    | c < 0xfc = multi_byte 4 0x3 0x200000
-    | c < 0xfe = multi_byte 5 0x1 0x4000000
-    | otherwise    = replacement_character : unEscapeString rest
-    where
-    replacement_character = '\xfffd'
-    multi1 = case unEscapeByte rest of
-      Just (c1, ds) | c1 .&. 0xc0 == 0x80 ->
-        let d = ((fromEnum c .&. 0x1f) `shiftL` 6) .|.  fromEnum (c1 .&. 0x3f)
-        in if d >= 0x000080 then toEnum d : unEscapeString ds
-                            else replacement_character : unEscapeString ds
-      _ -> replacement_character : unEscapeString rest
-
-    multi_byte i mask overlong =
-      aux i rest (unEscapeByte rest) (c .&. mask)
-      where
-        aux 0 rs _ acc
-          | overlong <= acc && acc <= 0x10ffff &&
-            (acc < 0xd800 || 0xdfff < acc)     &&
-            (acc < 0xfffe || 0xffff < acc)      = chr acc : unEscapeString rs
-          | otherwise = replacement_character : unEscapeString rs
-
-        aux n _ (Just (r, rs)) acc
-          | r .&. 0xc0 == 0x80 = aux (n-1) rs (unEscapeByte rs)
-                               $! shiftL acc 6 .|. (r .&. 0x3f)
-
-        aux _ rs _ _ = replacement_character : unEscapeString rs
-
-------------------------------------------------------------
--- Resolving a relative URI relative to a base URI
-------------------------------------------------------------
-
--- |Returns a new 'URI' which represents the value of the
---  first 'URI' interpreted as relative to the second 'URI'.
---  For example:
---
---  > "foo" `relativeTo` "http://bar.org/" = "http://bar.org/foo"
---  > "http:foo" `nonStrictRelativeTo` "http://bar.org/" = "http://bar.org/foo"
---
---  Algorithm from RFC3986 [3], section 5.2.2
---
-
-nonStrictRelativeTo :: URI -> URI -> URI
-nonStrictRelativeTo ref base = relativeTo ref' base
-    where
-        ref' = if uriScheme ref == uriScheme base
-               then ref { uriScheme="" }
-               else ref
-
-isDefined :: ( MonadPlus m, Eq (m a) ) => m a -> Bool
-isDefined a = a /= mzero
-
--- | Returns a new 'URI' which represents the value of the first 'URI'
--- interpreted as relative to the second 'URI'.
---
--- Algorithm from RFC3986 [3], section 5.2
-relativeTo :: URI -> URI -> URI
-relativeTo ref base
-    | isDefined ( uriScheme ref ) =
-        just_segments ref
-    | isDefined ( uriAuthority ref ) =
-        just_segments ref { uriScheme = uriScheme base }
-    | isDefined ( uriPath ref ) =
-        if (head (uriPath ref) == '/') then
-            just_segments ref
-                { uriScheme    = uriScheme base
-                , uriAuthority = uriAuthority base
-                }
-        else
-            just_segments ref
-                { uriScheme    = uriScheme base
-                , uriAuthority = uriAuthority base
-                , uriPath      = mergePaths base ref
-                }
-    | isDefined ( uriQuery ref ) =
-        just_segments ref
-            { uriScheme    = uriScheme base
-            , uriAuthority = uriAuthority base
-            , uriPath      = uriPath base
-            }
-    | otherwise =
-        just_segments ref
-            { uriScheme    = uriScheme base
-            , uriAuthority = uriAuthority base
-            , uriPath      = uriPath base
-            , uriQuery     = uriQuery base
-            }
-    where
-        just_segments u =
-            u { uriPath = removeDotSegments (uriPath u) }
-        mergePaths b r
-            | isDefined (uriAuthority b) && null pb = '/':pr
-            | otherwise                             = dropLast pb ++ pr
-            where
-                pb = uriPath b
-                pr = uriPath r
-        dropLast = fst . splitLast -- reverse . dropWhile (/='/') . reverse
-
---  Remove dot segments, but protect leading '/' character
-removeDotSegments :: String -> String
-removeDotSegments ('/':ps) = '/':elimDots ps []
-removeDotSegments ps       = elimDots ps []
-
---  Second arg accumulates segments processed so far in reverse order
-elimDots :: String -> [String] -> String
--- elimDots ps rs | traceVal "\nps " ps $ traceVal "rs " rs $ False = error ""
-elimDots [] [] = ""
-elimDots [] rs = concat (reverse rs)
-elimDots (    '.':'/':ps)     rs = elimDots ps rs
-elimDots (    '.':[]    )     rs = elimDots [] rs
-elimDots (    '.':'.':'/':ps) rs = elimDots ps (drop 1 rs)
-elimDots (    '.':'.':[]    ) rs = elimDots [] (drop 1 rs)
-elimDots ps rs = elimDots ps1 (r:rs)
-    where
-        (r,ps1) = nextSegment ps
-
---  Returns the next segment and the rest of the path from a path string.
---  Each segment ends with the next '/' or the end of string.
---
-nextSegment :: String -> (String,String)
-nextSegment ps =
-    case break (=='/') ps of
-        (r,'/':ps1) -> (r++"/",ps1)
-        (r,_)       -> (r,[])
-
---  Split last (name) segment from path, returning (path,name)
-splitLast :: String -> (String,String)
-splitLast p = (reverse revpath,reverse revname)
-    where
-        (revname,revpath) = break (=='/') $ reverse p
-
-------------------------------------------------------------
--- Finding a URI relative to a base URI
-------------------------------------------------------------
-
--- |Returns a new 'URI' which represents the relative location of
---  the first 'URI' with respect to the second 'URI'.  Thus, the
---  values supplied are expected to be absolute URIs, and the result
---  returned may be a relative URI.
---
---  Example:
---
---  > "http://example.com/Root/sub1/name2#frag"
---  >   `relativeFrom` "http://example.com/Root/sub2/name2#frag"
---  >   == "../sub1/name2#frag"
---
---  There is no single correct implementation of this function,
---  but any acceptable implementation must satisfy the following:
---
---  > (uabs `relativeFrom` ubase) `relativeTo` ubase == uabs
---
---  For any valid absolute URI.
---  (cf. <http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html>
---       <http://lists.w3.org/Archives/Public/uri/2003Jan/0005.html>)
---
-relativeFrom :: URI -> URI -> URI
-relativeFrom uabs base
-    | diff uriScheme    uabs base = uabs
-    | diff uriAuthority uabs base = uabs { uriScheme = "" }
-    | diff uriPath      uabs base = uabs
-        { uriScheme    = ""
-        , uriAuthority = Nothing
-        , uriPath      = relPathFrom (removeBodyDotSegments $ uriPath uabs)
-                                     (removeBodyDotSegments $ uriPath base)
-        }
-    | diff uriQuery     uabs base = uabs
-        { uriScheme    = ""
-        , uriAuthority = Nothing
-        , uriPath      = ""
-        }
-    | otherwise = uabs          -- Always carry fragment from uabs
-        { uriScheme    = ""
-        , uriAuthority = Nothing
-        , uriPath      = ""
-        , uriQuery     = ""
-        }
-    where
-        diff :: Eq b => (a -> b) -> a -> a -> Bool
-        diff sel u1 u2 = sel u1 /= sel u2
-        -- Remove dot segments except the final segment
-        removeBodyDotSegments p = removeDotSegments p1 ++ p2
-            where
-                (p1,p2) = splitLast p
-
-relPathFrom :: String -> String -> String
-relPathFrom []   _    = "/"
-relPathFrom pabs []   = pabs
-relPathFrom pabs base =                 -- Construct a relative path segments
-    if sa1 == sb1                       -- if the paths share a leading segment
-        then if (sa1 == "/")            -- other than a leading '/'
-            then if (sa2 == sb2)
-                then relPathFrom1 ra2 rb2
-                else pabs
-            else relPathFrom1 ra1 rb1
-        else pabs
-    where
-        (sa1,ra1) = nextSegment pabs
-        (sb1,rb1) = nextSegment base
-        (sa2,ra2) = nextSegment ra1
-        (sb2,rb2) = nextSegment rb1
-
---  relPathFrom1 strips off trailing names from the supplied paths,
---  and calls difPathFrom to find the relative path from base to
---  target
-relPathFrom1 :: String -> String -> String
-relPathFrom1 pabs base = relName
-    where
-        (sa,na) = splitLast pabs
-        (sb,nb) = splitLast base
-        rp      = relSegsFrom sa sb
-        relName = if null rp then
-                      if (na == nb) then ""
-                      else if protect na then "./"++na
-                      else na
-                  else
-                      rp++na
-        -- Precede name with some path if it is null or contains a ':'
-        protect s = null s || ':' `elem` s
-
---  relSegsFrom discards any common leading segments from both paths,
---  then invokes difSegsFrom to calculate a relative path from the end
---  of the base path to the end of the target path.
---  The final name is handled separately, so this deals only with
---  "directory" segtments.
---
-relSegsFrom :: String -> String -> String
-{-
-relSegsFrom sabs base
-    | traceVal "\nrelSegsFrom\nsabs " sabs $ traceVal "base " base $
-      False = error ""
--}
-relSegsFrom []   []   = ""      -- paths are identical
-relSegsFrom sabs base =
-    if sa1 == sb1
-        then relSegsFrom ra1 rb1
-        else difSegsFrom sabs base
-    where
-        (sa1,ra1) = nextSegment sabs
-        (sb1,rb1) = nextSegment base
-
---  difSegsFrom calculates a path difference from base to target,
---  not including the final name at the end of the path
---  (i.e. results always ends with '/')
---
---  This function operates under the invariant that the supplied
---  value of sabs is the desired path relative to the beginning of
---  base.  Thus, when base is empty, the desired path has been found.
---
-difSegsFrom :: String -> String -> String
-{-
-difSegsFrom sabs base
-    | traceVal "\ndifSegsFrom\nsabs " sabs $ traceVal "base " base $
-      False = error ""
--}
-difSegsFrom sabs ""   = sabs
-difSegsFrom sabs base = difSegsFrom ("../"++sabs) (snd $ nextSegment base)
-
-------------------------------------------------------------
---  Other normalization functions
-------------------------------------------------------------
-
--- |Case normalization; cf. RFC3986 section 6.2.2.1
---  NOTE:  authority case normalization is not performed
---
-normalizeCase :: String -> String
-normalizeCase uristr = ncScheme uristr
-    where
-        ncScheme (':':cs)                = ':':ncEscape cs
-        ncScheme (c:cs) | isSchemeChar c = toLower c:ncScheme cs
-        ncScheme _                       = ncEscape uristr -- no scheme present
-        ncEscape ('%':h1:h2:cs) = '%':toUpper h1:toUpper h2:ncEscape cs
-        ncEscape (c:cs)         = c:ncEscape cs
-        ncEscape []             = []
-
--- |Encoding normalization; cf. RFC3986 section 6.2.2.2
---
-normalizeEscape :: String -> String
-normalizeEscape ('%':h1:h2:cs)
-    | isHexDigit h1 && isHexDigit h2 && isUnreserved escval =
-        escval:normalizeEscape cs
-    where
-        escval = chr (digitToInt h1*16+digitToInt h2)
-normalizeEscape (c:cs)         = c:normalizeEscape cs
-normalizeEscape []             = []
-
--- |Path segment normalization; cf. RFC3986 section 6.2.2.4
---
-normalizePathSegments :: String -> String
-normalizePathSegments uristr = normstr juri
-    where
-        juri = parseURI uristr
-        normstr Nothing  = uristr
-        normstr (Just u) = show (normuri u)
-        normuri u = u { uriPath = removeDotSegments (uriPath u) }
-
-------------------------------------------------------------
---  Local trace helper functions
-------------------------------------------------------------
-
-traceShow :: Show a => String -> a -> a
-traceShow msg x = trace (msg ++ show x) x
-
-traceVal :: Show a => String -> a -> b -> b
-traceVal msg x y = trace (msg ++ show x) y
-
-------------------------------------------------------------
---  Deprecated functions
-------------------------------------------------------------
-
-{-# DEPRECATED parseabsoluteURI "use parseAbsoluteURI" #-}
-parseabsoluteURI :: String -> Maybe URI
-parseabsoluteURI = parseAbsoluteURI
-
-{-# DEPRECATED escapeString "use escapeURIString, and note the flipped arguments" #-}
-escapeString :: String -> (Char->Bool) -> String
-escapeString = flip escapeURIString
-
-{-# DEPRECATED reserved "use isReserved" #-}
-reserved :: Char -> Bool
-reserved = isReserved
-
-{-# DEPRECATED unreserved "use isUnreserved" #-}
-unreserved :: Char -> Bool
-unreserved = isUnreserved
-
---  Additional component access functions for backward compatibility
-
-{-# DEPRECATED scheme "use uriScheme" #-}
-scheme :: URI -> String
-scheme = orNull init . uriScheme
-
-{-# DEPRECATED authority "use uriAuthority, and note changed functionality" #-}
-authority :: URI -> String
-authority = dropss . ($"") . uriAuthToString id . uriAuthority
-    where
-        -- Old-style authority component does not include leading '//'
-        dropss ('/':'/':s) = s
-        dropss s           = s
-
-{-# DEPRECATED path "use uriPath" #-}
-path :: URI -> String
-path = uriPath
-
-{-# DEPRECATED query "use uriQuery, and note changed functionality" #-}
-query :: URI -> String
-query = orNull tail . uriQuery
-
-{-# DEPRECATED fragment "use uriFragment, and note changed functionality" #-}
-fragment :: URI -> String
-fragment = orNull tail . uriFragment
-
-orNull :: ([a]->[a]) -> [a] -> [a]
-orNull _ [] = []
-orNull f as = f as
-
---------------------------------------------------------------------------------
---
---  Copyright (c) 2004, G. KLYNE.  All rights reserved.
---  Distributed as free software under the following license.
---
---  Redistribution and use in source and binary forms, with or without
---  modification, are permitted provided that the following conditions
---  are met:
---
---  - Redistributions of source code must retain the above copyright notice,
---  this list of conditions and the following disclaimer.
---
---  - Redistributions in binary form must reproduce the above copyright
---  notice, this list of conditions and the following disclaimer in the
---  documentation and/or other materials provided with the distribution.
---
---  - Neither name of the copyright holders nor the names of its
---  contributors may be used to endorse or promote products derived from
---  this software without specific prior written permission.
---
---  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND THE CONTRIBUTORS
---  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
---  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
---  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
---  HOLDERS OR THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
---  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
---  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
---  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
---  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
---  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
---  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---
---------------------------------------------------------------------------------
diff --git a/standalone/android/tmp/network-2.4.1.2/README b/standalone/android/tmp/network-2.4.1.2/README
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/README
+++ /dev/null
@@ -1,4 +0,0 @@
-To build this package using Cabal directly from git, you must run
-"autoreconf" before the usual Cabal build steps (configure/build/install).
-autoreconf is included in the GNU autoconf tools.  There is no need to run
-the "configure" script: the "setup configure" step will do this for you.
diff --git a/standalone/android/tmp/network-2.4.1.2/Setup.hs b/standalone/android/tmp/network-2.4.1.2/Setup.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/Setup.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-module Main (main) where
-
-import Distribution.Simple
-
-main :: IO ()
-main = defaultMainWithHooks autoconfUserHooks
diff --git a/standalone/android/tmp/network-2.4.1.2/cabal.config b/standalone/android/tmp/network-2.4.1.2/cabal.config
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/cabal.config
+++ /dev/null
@@ -1,202 +0,0 @@
-constraints: unix installed,
-             Crypto ==4.2.5.1,
-             binary ==0.7.6.1,
-             DAV ==1.0.3,
-             HTTP ==4000.2.17,
-             HUnit ==1.2.5.2,
-             IfElse ==0.85,
-             MissingH ==1.2.1.0,
-	     directory ==1.2.2.0,
-             MonadRandom ==0.1.13,
-             QuickCheck ==2.7.6,
-             SafeSemaphore ==0.10.1,
-             aeson ==0.7.0.6,
-             ansi-wl-pprint ==0.6.7.1,
-             appar ==0.1.4,
-             asn1-encoding ==0.8.1.3,
-             asn1-parse ==0.8.1,
-             asn1-types ==0.2.3,
-             async ==2.0.1.5,
-             attoparsec ==0.11.3.4,
-             attoparsec-conduit ==1.1.0,
-             authenticate ==1.3.2.10,
-             base-unicode-symbols ==0.2.2.4,
-             base16-bytestring ==0.1.1.6,
-             base64-bytestring ==1.0.0.1,
-             bifunctors ==4.1.1.1,
-             bloomfilter ==2.0.0.0,
-             byteable ==0.1.1,
-             byteorder ==1.0.4,
-             case-insensitive ==1.2.0.1,
-             cereal ==0.4.0.1,
-             cipher-aes ==0.2.8,
-             cipher-des ==0.0.6,
-             cipher-rc4 ==0.1.4,
-             clientsession ==0.9.0.3,
-             comonad ==4.2,
-             conduit ==1.1.6,
-             conduit-extra ==1.1.3,
-             connection ==0.2.3,
-             contravariant ==0.6.1.1,
-             cookie ==0.4.1.2,
-             cprng-aes ==0.5.2,
-             crypto-api ==0.13.2,
-             crypto-cipher-types ==0.0.9,
-             crypto-numbers ==0.2.3,
-             crypto-pubkey ==0.2.4,
-             crypto-pubkey-types ==0.4.2.2,
-             crypto-random ==0.0.7,
-             cryptohash ==0.11.6,
-             cryptohash-conduit ==0.1.1,
-             css-text ==0.1.2.1,
-             data-default ==0.5.3,
-             data-default-class ==0.0.1,
-             data-default-instances-base ==0.0.1,
-             data-default-instances-containers ==0.0.1,
-             data-default-instances-dlist ==0.0.1,
-             data-default-instances-old-locale ==0.0.1,
-             sandi ==0.3.0.1,
-             dbus ==0.10.8,
-             distributive ==0.4.4,
-             dlist ==0.7.0.1,
-             dns ==1.3.0,
-             edit-distance ==0.2.1.2,
-             either ==4.3,
-             email-validate ==1.0.0,
-             entropy ==0.2.1,
-             errors ==1.4.7,
-             exceptions ==0.6.1,
-             failure ==0.2.0.3,
-             fast-logger ==2.1.5,
-             fdo-notify ==0.3.1,
-             feed ==0.3.9.2,
-             file-embed ==0.0.6,
-             fingertree ==0.1.0.0,
-             free ==4.9,
-             gnuidn ==0.2,
-             gnutls ==0.1.4,
-             gsasl ==0.3.5,
-             hS3 ==0.5.7,
-             hashable ==1.2.1.0,
-             hinotify ==0.3.5,
-             hjsmin ==0.1.4.7,
-             hslogger ==1.2.1,
-             http-client ==0.4.11.1,
-             http-client-tls ==0.2.2,
-             http-conduit ==2.1.5,
-             http-date ==0.0.2,
-             http-types ==0.8.5,
-	     blaze-builder ==0.3.3.2,
-             hxt ==9.3.1.4,
-             hxt-charproperties ==9.1.1.1,
-             hxt-regex-xmlschema ==9.0.4,
-             hxt-unicode ==9.0.2.2,
-             idna ==0.2,
-             iproute ==1.2.11,
-             json ==0.5,
-             keys ==3.10.1,
-             language-javascript ==0.5.13,
-             lens ==4.4.0.2,
-             libxml-sax ==0.7.5,
-             mime-mail ==0.4.1.2,
-             mime-types ==0.1.0.4,
-             mmorph ==1.0.3,
-             monad-control ==0.3.2.2,
-             monad-logger ==0.3.6.1,
-             monad-loops ==0.4.2.1,
-             monads-tf ==0.1.0.2,
-             mtl ==2.1.2,
-             nats ==0.1.2,
-             network ==2.4.1.2,
-             network-conduit ==1.1.0,
-             network-info ==0.2.0.5,
-             network-multicast ==0.0.10,
-             network-protocol-xmpp ==0.4.6,
-             network-uri ==2.6.0.1,
-             optparse-applicative ==0.11.0.2,
-             parallel ==3.2.0.4,
-             path-pieces ==0.1.4,
-             pem ==0.2.2,
-             persistent ==1.3.3,
-             persistent-template ==1.3.2.2,
-             pointed ==4.0,
-             prelude-extras ==0.4,
-             profunctors ==4.0.4,
-             publicsuffixlist ==0.1,
-             punycode ==2.0,
-             random ==1.0.1.1,
-             ranges ==0.2.4,
-             reducers ==3.10.2.1,
-             reflection ==1.2.0.1,
-             regex-base ==0.93.2,
-             regex-compat ==0.95.1,
-             regex-posix ==0.95.2,
-             regex-tdfa ==1.2.0,
-             resource-pool ==0.2.1.1,
-             resourcet ==1.1.2.3,
-             safe ==0.3.8,
-             securemem ==0.1.3,
-             semigroupoids ==4.2,
-             semigroups ==0.15.3,
-             shakespeare ==2.0.5,
-             silently ==1.2.4.1,
-             simple-sendfile ==0.2.14,
-             skein ==1.0.9,
-             socks ==0.5.4,
-             split ==0.2.2,
-             stm ==2.4.2,
-             stm-chans ==3.0.0.2,
-             streaming-commons ==0.1.4.1,
-             stringprep ==0.1.5,
-             stringsearch ==0.3.6.5,
-             syb ==0.4.0,
-             system-fileio ==0.3.14,
-             system-filepath ==0.4.12,
-             tagged ==0.7.2,
-             tagsoup ==0.13.1,
-             tagstream-conduit ==0.5.5.1,
-             text ==1.1.1.0,
-             text-icu ==0.6.3.7,
-             tf-random ==0.5,
-             tls ==1.2.9,
-             transformers ==0.3.0.0,
-             transformers-base ==0.4.1,
-             transformers-compat ==0.3.3.3,
-             unbounded-delays ==0.1.0.8,
-             unix-compat ==0.4.1.3,
-             unix-time ==0.2.2,
-             unordered-containers ==0.2.5.0,
-             utf8-string ==0.3.7,
-             uuid ==1.3.3,
-             vault ==0.3.0.3,
-             vector ==0.10.0.1,
-             void ==0.6.1,
-             wai ==3.0.1.1,
-             wai-app-static ==3.0.0.1,
-             wai-extra ==3.0.1.2,
-             wai-logger ==2.1.1,
-             warp ==3.0.0.5,
-             warp-tls ==3.0.0,
-             word8 ==0.1.1,
-             x509 ==1.4.11,
-             x509-store ==1.4.4,
-             x509-system ==1.4.5,
-             x509-validation ==1.5.0,
-             xml ==1.3.13,
-             xml-conduit ==1.2.1,
-             xml-hamlet ==0.4.0.9,
-             xml-types ==0.3.4,
-             xss-sanitize ==0.3.5.2,
-             yaml ==0.8.9.3,
-             yesod ==1.2.6.1,
-             yesod-auth ==1.3.4.6,
-             yesod-core ==1.2.20.1,
-             yesod-default ==1.2.0,
-             yesod-form ==1.3.16,
-             yesod-persistent ==1.2.3.1,
-             yesod-routes ==1.2.0.7,
-             yesod-static ==1.2.4,
-             zlib ==0.5.4.1,
-             bytestring installed,
-             scientific ==0.3.3.1,
-             clock ==0.4.6.0
diff --git a/standalone/android/tmp/network-2.4.1.2/cbits/HsNet.c b/standalone/android/tmp/network-2.4.1.2/cbits/HsNet.c
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/cbits/HsNet.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -----------------------------------------------------------------------------
- * (c) The University of Glasgow 2002
- *
- * static versions of the inline functions from HsNet.h
- * -------------------------------------------------------------------------- */
-
-#define INLINE
-#include "HsNet.h"
-
-#include <sys/endian.h>
-uint16_t my_htons(uint16_t v)
-{
-	htons(v);
-}
-uint32_t my_htonl(uint32_t v)
-{
-	htonl(v);
-}
-uint16_t my_ntohs(uint16_t v)
-{
-	ntohs(v);
-}
diff --git a/standalone/android/tmp/network-2.4.1.2/cbits/ancilData.c b/standalone/android/tmp/network-2.4.1.2/cbits/ancilData.c
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/cbits/ancilData.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- *  Copyright(c), 2002 The GHC Team.
- */
-
-#ifdef aix_HOST_OS
-#define _LINUX_SOURCE_COMPAT 
-// Required to get CMSG_SPACE/CMSG_LEN macros.  See #265.
-// Alternative is to #define COMPAT_43 and use the 
-// HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS code instead, but that means
-// fiddling with the configure script too.
-#endif
-
-#include "HsNet.h"
-#include <string.h>
-
-#if HAVE_STRUCT_MSGHDR_MSG_CONTROL || HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS /* until end */
-
-/* 
- *  Support for transmitting file descriptors.
- *
- *  
- */
- 
-
-/*
- * sendmsg() and recvmsg() wrappers for transmitting
- * ancillary socket data.
- *
- * Doesn't provide the full generality of either, specifically:
- *
- *  - no support for scattered read/writes.
- *  - only possible to send one ancillary chunk of data at a time.
- */
-
-int
-sendFd(int sock,
-       int outfd)
-{
-  struct msghdr msg = {0};
-  struct iovec iov[1];
-  char  buf[2];
-#if HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
-  msg.msg_accrights = (void*)&outfd;
-  msg.msg_accrightslen = sizeof(int);
-#else
-  struct cmsghdr *cmsg;
-  char ancBuffer[CMSG_SPACE(sizeof(int))];
-  char* dPtr;
-  
-  msg.msg_control = ancBuffer;
-  msg.msg_controllen = sizeof(ancBuffer);
-
-  cmsg = CMSG_FIRSTHDR(&msg);
-  cmsg->cmsg_level = SOL_SOCKET;
-  cmsg->cmsg_type = SCM_RIGHTS;
-  cmsg->cmsg_len = CMSG_LEN(sizeof(int));
-  dPtr = (char*)CMSG_DATA(cmsg);
-  
-  *(int*)dPtr = outfd;
-  msg.msg_controllen = cmsg->cmsg_len;
-#endif
-
-  buf[0] = 0; buf[1] = '\0';
-  iov[0].iov_base = buf;
-  iov[0].iov_len  = 2;
-
-  msg.msg_iov = iov;
-  msg.msg_iovlen = 1;
-  
-  return sendmsg(sock,&msg,0);
-}
-
-int
-recvFd(int sock)
-{
-  struct msghdr msg = {0};
-  char  duffBuf[10];
-  int rc;
-  int len = sizeof(int);
-  struct iovec iov[1];
-#if HAVE_STRUCT_MSGHDR_MSG_CONTROL
-  struct cmsghdr *cmsg = NULL;
-  struct cmsghdr *cptr;
-#else
-  int* fdBuffer;
-#endif
-
-  iov[0].iov_base = duffBuf;
-  iov[0].iov_len  = sizeof(duffBuf);
-  msg.msg_iov = iov;
-  msg.msg_iovlen = 1;
-
-#if HAVE_STRUCT_MSGHDR_MSG_CONTROL
-  cmsg = (struct cmsghdr*)malloc(CMSG_SPACE(len));
-  if (cmsg==NULL) {
-    return -1;
-  }
-  
-  msg.msg_control = (void *)cmsg;
-  msg.msg_controllen = CMSG_LEN(len);
-#else
-  fdBuffer = (int*)malloc(len);
-  if (fdBuffer) {
-    msg.msg_accrights    = (void *)fdBuffer;
-  } else {
-    return -1;
-  }
-  msg.msg_accrightslen = len;
-#endif
-
-  if ((rc = recvmsg(sock,&msg,0)) < 0) {
-    return rc;
-  }
-  
-#if HAVE_STRUCT_MSGHDR_MSG_CONTROL
-  cptr = (struct cmsghdr*)CMSG_FIRSTHDR(&msg);
-  return *(int*)CMSG_DATA(cptr);
-#else
-  return *(int*)fdBuffer;
-#endif
-}
-
-#endif
diff --git a/standalone/android/tmp/network-2.4.1.2/cbits/asyncAccept.c b/standalone/android/tmp/network-2.4.1.2/cbits/asyncAccept.c
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/cbits/asyncAccept.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * (c) sof, 2003.
- */
-
-#include "HsNet.h"
-#include "HsFFI.h"
-
-#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)
-
-/* all the way to the end */
-
-/*
- * To support non-blocking accept()s with WinSock, we use the asyncDoProc#
- * primop, which lets a Haskell thread call an external routine without
- * blocking the progress of other threads. 
- *
- * As can readily be seen, this is a low-level mechanism.
- *
- */
-
-typedef struct AcceptData {
-    int   fdSock;
-    int   newSock;
-    void* sockAddr;
-    int   size;
-} AcceptData;
-
-/*
- * Fill in parameter block that's passed along when the RTS invokes the 
- * accept()-calling proc below (acceptDoProc())
- */
-void*
-newAcceptParams(int sock,
-		int sz,
-		void* sockaddr)
-{
-    AcceptData* data = (AcceptData*)malloc(sizeof(AcceptData));
-    if (!data) return NULL;
-    data->fdSock   = sock;
-    data->newSock  = 0;
-    data->sockAddr = sockaddr;
-    data->size     = sz;
-    
-    return data;
-}
-
-/* Accessors for return code and accept()'s socket result. */
-
-int
-acceptNewSock(void* d)
-{
-    return (((AcceptData*)d)->newSock);
-}
-
-/* Routine invoked by an RTS worker thread */
-int
-acceptDoProc(void* param)
-{
-    SOCKET s;
-
-    AcceptData* data = (AcceptData*)param;
-    s = accept( data->fdSock,
-		data->sockAddr,
-		&data->size);
-    data->newSock = s;
-    if ( s == INVALID_SOCKET ) {
-	return GetLastError();
-    } else {
-	return 0;
-    }
-}
-#endif
diff --git a/standalone/android/tmp/network-2.4.1.2/cbits/initWinSock.c b/standalone/android/tmp/network-2.4.1.2/cbits/initWinSock.c
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/cbits/initWinSock.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "HsNet.h"
-#include "HsFFI.h"
-
-#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)
-
-static int winsock_inited = 0;
-static int winsock_uninited = 0;
-
-/* Initialising WinSock... */
-int
-initWinSock ()
-{
-  WORD wVersionRequested;
-  WSADATA wsaData;  
-  int err;
-
-  if (!winsock_inited) {
-    wVersionRequested = MAKEWORD( 2, 2 );
-
-    err = WSAStartup ( wVersionRequested, &wsaData );
-    
-    if ( err != 0 ) {
-       return err;
-    }
-
-    if ( LOBYTE( wsaData.wVersion ) != 2 ||
-       HIBYTE( wsaData.wVersion ) != 2 ) {
-      WSACleanup();
-      return (-1);
-    }
-
-    winsock_inited = 1;
-  }
-  return 0;
-}
-
-static void
-shutdownHandler(void)
-{
-  WSACleanup();
-}
-
-void
-shutdownWinSock()
-{
-    if (!winsock_uninited) {
-	atexit(shutdownHandler);
-	winsock_uninited = 1;
-    }
-}
-
-#endif
diff --git a/standalone/android/tmp/network-2.4.1.2/cbits/winSockErr.c b/standalone/android/tmp/network-2.4.1.2/cbits/winSockErr.c
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/cbits/winSockErr.c
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "HsNet.h"
-#include "HsFFI.h"
-
-#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)
-#include <stdio.h>
-
-/* to the end */
-
-const char*
-getWSErrorDescr(int err)
-{
-  static char  otherErrMsg[256];
-
-  switch (err) {
-  case WSAEINTR:  return "Interrupted function call (WSAEINTR)";
-  case WSAEBADF:  return "bad socket descriptor (WSAEBADF)";
-  case WSAEACCES: return "Permission denied (WSAEACCESS)";
-  case WSAEFAULT: return "Bad address (WSAEFAULT)";
-  case WSAEINVAL: return "Invalid argument (WSAEINVAL)";
-  case WSAEMFILE: return "Too many open files (WSAEMFILE)";
-  case WSAEWOULDBLOCK:  return "Resource temporarily unavailable (WSAEWOULDBLOCK)";
-  case WSAEINPROGRESS:  return "Operation now in progress (WSAEINPROGRESS)";
-  case WSAEALREADY:     return "Operation already in progress (WSAEALREADY)";
-  case WSAENOTSOCK:     return "Socket operation on non-socket (WSAENOTSOCK)";
-  case WSAEDESTADDRREQ: return "Destination address required (WSAEDESTADDRREQ)";
-  case WSAEMSGSIZE:    	return "Message too long (WSAEMSGSIZE)";
-  case WSAEPROTOTYPE:   return "Protocol wrong type for socket (WSAEPROTOTYPE)";
-  case WSAENOPROTOOPT:  return "Bad protocol option (WSAENOPROTOOPT)";
-  case WSAEPROTONOSUPPORT: return "Protocol not supported (WSAEPROTONOSUPPORT)";
-  case WSAESOCKTNOSUPPORT: return "Socket type not supported (WSAESOCKTNOSUPPORT)";
-  case WSAEOPNOTSUPP:      return "Operation not supported (WSAEOPNOTSUPP)";
-  case WSAEPFNOSUPPORT:    return "Protocol family not supported (WSAEPFNOSUPPORT)";
-  case WSAEAFNOSUPPORT:    return "Address family not supported by protocol family (WSAEAFNOSUPPORT)";
-  case WSAEADDRINUSE:      return "Address already in use (WSAEADDRINUSE)";
-  case WSAEADDRNOTAVAIL:   return "Cannot assign requested address (WSAEADDRNOTAVAIL)";
-  case WSAENETDOWN:        return "Network is down (WSAENETDOWN)";
-  case WSAENETUNREACH:     return "Network is unreachable (WSAENETUNREACH)";
-  case WSAENETRESET:       return "Network dropped connection on reset (WSAENETRESET)";
-  case WSAECONNABORTED:    return "Software caused connection abort (WSAECONNABORTED)";
-  case WSAECONNRESET:      return "Connection reset by peer (WSAECONNRESET)";
-  case WSAENOBUFS:         return "No buffer space available (WSAENOBUFS)";
-  case WSAEISCONN:         return "Socket is already connected (WSAEISCONN)";
-  case WSAENOTCONN:        return "Socket is not connected (WSAENOTCONN)";
-  case WSAESHUTDOWN:       return "Cannot send after socket shutdown (WSAESHUTDOWN)";
-  case WSAETOOMANYREFS:    return "Too many references (WSAETOOMANYREFS)";
-  case WSAETIMEDOUT:       return "Connection timed out (WSAETIMEDOUT)";
-  case WSAECONNREFUSED:    return "Connection refused (WSAECONNREFUSED)";
-  case WSAELOOP:           return "Too many levels of symbolic links (WSAELOOP)";
-  case WSAENAMETOOLONG:    return "Filename too long (WSAENAMETOOLONG)";
-  case WSAEHOSTDOWN:       return "Host is down (WSAEHOSTDOWN)";
-  case WSAEHOSTUNREACH:    return "Host is unreachable (WSAEHOSTUNREACH)";
-  case WSAENOTEMPTY:       return "Resource not empty (WSAENOTEMPTY)";
-  case WSAEPROCLIM:        return "Too many processes (WSAEPROCLIM)";
-  case WSAEUSERS:          return "Too many users (WSAEUSERS)";
-  case WSAEDQUOT:          return "Disk quota exceeded (WSAEDQUOT)";
-  case WSAESTALE:          return "Stale NFS file handle (WSAESTALE)";
-  case WSAEREMOTE:         return "Too many levels of remote in path (WSAEREMOTE)";
-  case WSAEDISCON:         return "Graceful shutdown in progress (WSAEDISCON)";
-  case WSASYSNOTREADY:     return "Network subsystem is unavailable (WSASYSNOTREADY)";
-  case WSAVERNOTSUPPORTED: return "Winsock.dll version out of range (WSAVERNOTSUPPORTED)";
-  case WSANOTINITIALISED:  return "Successful WSAStartup not yet performed (WSANOTINITIALISED)";
-#ifdef WSATYPE_NOT_FOUND
-  case WSATYPE_NOT_FOUND:  return "Class type not found (WSATYPE_NOT_FOUND)";
-#endif
-  case WSAHOST_NOT_FOUND:  return "Host not found (WSAHOST_NOT_FOUND)";
-  case WSATRY_AGAIN:       return "Nonauthoritative host not found (WSATRY_AGAIN)";
-  case WSANO_RECOVERY:     return "This is a nonrecoverable error (WSANO_RECOVERY)";
-  case WSANO_DATA:         return "Valid name, no data record of requested type (WSANO_DATA)";
-  default:
-    sprintf(otherErrMsg, "Unknown WinSock error: %u", err);
-    return otherErrMsg;
-  }
-}
-
-#endif
-
diff --git a/standalone/android/tmp/network-2.4.1.2/config.guess b/standalone/android/tmp/network-2.4.1.2/config.guess
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/config.guess
+++ /dev/null
@@ -1,1420 +0,0 @@
-#! /bin/sh
-# Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
-
-timestamp='2014-03-23'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner.
-#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION]
-
-Output the configuration name of the system \`$me' is run on.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.guess ($timestamp)
-
-Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help" >&2
-       exit 1 ;;
-    * )
-       break ;;
-  esac
-done
-
-if test $# != 0; then
-  echo "$me: too many arguments$help" >&2
-  exit 1
-fi
-
-trap 'exit 1' 1 2 15
-
-# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
-# compiler to aid in system detection is discouraged as it requires
-# temporary files to be created and, as you can see below, it is a
-# headache to deal with in a portable fashion.
-
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
-
-# Portable tmp directory creation inspired by the Autoconf team.
-
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
-
-# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
-# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
-	PATH=$PATH:/.attbin ; export PATH
-fi
-
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
-	# If the system lacks a compiler, then just pick glibc.
-	# We could probably try harder.
-	LIBC=gnu
-
-	eval $set_cc_for_build
-	cat <<-EOF > $dummy.c
-	#include <features.h>
-	#if defined(__UCLIBC__)
-	LIBC=uclibc
-	#elif defined(__dietlibc__)
-	LIBC=dietlibc
-	#else
-	LIBC=gnu
-	#endif
-	EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
-	;;
-esac
-
-# Note: order is significant - the case branches are not exclusive.
-
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
-    *:NetBSD:*:*)
-	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
-	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
-	# switched to ELF, *-*-netbsd* would select the old
-	# object file format.  This provides both forward
-	# compatibility and a consistent mechanism for selecting the
-	# object file format.
-	#
-	# Note: NetBSD doesn't particularly care about the vendor
-	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
-	    armeb) machine=armeb-unknown ;;
-	    arm*) machine=arm-unknown ;;
-	    sh3el) machine=shl-unknown ;;
-	    sh3eb) machine=sh-unknown ;;
-	    sh5el) machine=sh5le-unknown ;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
-	esac
-	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
-	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
-		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep -q __ELF__
-		then
-		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
-		    # Return netbsd for either.  FIX?
-		    os=netbsd
-		else
-		    os=netbsdelf
-		fi
-		;;
-	    *)
-		os=netbsd
-		;;
-	esac
-	# The OS release
-	# Debian GNU/NetBSD machines have a different userland, and
-	# thus, need a distinct triplet. However, they do not need
-	# kernel version information, so it can be replaced with a
-	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
-	    Debian*)
-		release='-gnu'
-		;;
-	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
-		;;
-	esac
-	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
-	# contains redundant information, the shorter form:
-	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
-	exit ;;
-    *:Bitrig:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
-	exit ;;
-    *:OpenBSD:*:*)
-	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
-	exit ;;
-    *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
-	exit ;;
-    alpha:OSF1:*:*)
-	case $UNAME_RELEASE in
-	*4.0)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-		;;
-	*5.*)
-		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
-		;;
-	esac
-	# According to Compaq, /usr/sbin/psrinfo has been available on
-	# OSF/1 and Tru64 systems produced since 1995.  I hope that
-	# covers most systems running today.  This code pipes the CPU
-	# types through head -n 1, so we only detect the type of CPU 0.
-	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
-	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
-	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
-	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
-	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
-	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
-	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
-	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
-	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
-	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
-	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
-	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
-	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
-	esac
-	# A Pn.n version is a patched version.
-	# A Vn.n version is a released version.
-	# A Tn.n version is a released field test version.
-	# A Xn.n version is an unreleased experimental baselevel.
-	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
-    Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
-    *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
-	exit ;;
-    *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
-	exit ;;
-    *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
-    *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
-    *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
-    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
-	exit ;;
-    arm*:riscos:*:*|arm*:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
-    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
-    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
-	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
-    NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
-    DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
-    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
-	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
-    s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
-	exit ;;
-    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
-	SUN_ARCH="i386"
-	# If there is a compiler, see if it is configured for 64-bit objects.
-	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		grep IS_64BIT_ARCH >/dev/null
-	    then
-		SUN_ARCH="x86_64"
-	    fi
-	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:6*:*)
-	# According to config.sub, this is the proper way to canonicalize
-	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
-	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
-	    Series*|S4*)
-		UNAME_RELEASE=`uname -v`
-		;;
-	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
-	exit ;;
-    sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
-	exit ;;
-    sun*:*:4.2BSD:*)
-	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
-	case "`/bin/arch`" in
-	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
-		;;
-	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
-		;;
-	esac
-	exit ;;
-    aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
-	exit ;;
-    # The situation for MiNT is a little confusing.  The machine name
-    # can be virtually everything (everything which is not
-    # "atarist" or "atariste" at least should have a processor
-    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
-    # to the lowercase version "mint" (or "freemint").  Finally
-    # the system name "TOS" denotes a system which is actually not
-    # MiNT.  But MiNT is downward compatible to TOS, so this should
-    # be no problem.
-    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
-	exit ;;
-    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint${UNAME_RELEASE}
-	exit ;;
-    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint${UNAME_RELEASE}
-	exit ;;
-    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint${UNAME_RELEASE}
-	exit ;;
-    m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
-	exit ;;
-    powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
-	exit ;;
-    RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
-    RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
-	exit ;;
-    2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
-	exit ;;
-    mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-#ifdef __cplusplus
-#include <stdio.h>  /* for printf() prototype */
-	int main (int argc, char *argv[]) {
-#else
-	int main (argc, argv) int argc; char *argv[]; {
-#endif
-	#if defined (host_mips) && defined (MIPSEB)
-	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
-	#endif
-	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
-	#endif
-	#endif
-	  exit (-1);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
-	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
-	exit ;;
-    Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
-    Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
-    Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
-    m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
-    m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
-    m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
-    AViiON:dgux:*:*)
-	# DG/UX returns AViiON for all architectures
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
-	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
-	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
-	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
-	    fi
-	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
-	fi
-	exit ;;
-    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
-    M88*:*:R3*:*)
-	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
-    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
-    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
-    *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
-	exit ;;
-    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
-    i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
-    ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:2:3)
-	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
-		#include <sys/systemcfg.h>
-
-		main()
-			{
-			if (!__power_pc())
-				exit(1);
-			puts("powerpc-ibm-aix3.2.5");
-			exit(0);
-			}
-EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
-		then
-			echo "$SYSTEM_NAME"
-		else
-			echo rs6000-ibm-aix3.2.5
-		fi
-	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
-	else
-		echo rs6000-ibm-aix3.2
-	fi
-	exit ;;
-    *:AIX:*:[4567])
-	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
-		IBM_ARCH=rs6000
-	else
-		IBM_ARCH=powerpc
-	fi
-	if [ -x /usr/bin/oslevel ] ; then
-		IBM_REV=`/usr/bin/oslevel`
-	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
-	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
-	exit ;;
-    *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
-    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
-    *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
-    DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
-    9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
-    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
-    9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
-	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
-		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-		      532)                      # CPU_PA_RISC2_0
-			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-			esac ;;
-		    esac
-		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^		//' << EOF >$dummy.c
-
-		#define _HPUX_SOURCE
-		#include <stdlib.h>
-		#include <unistd.h>
-
-		int main ()
-		{
-		#if defined(_SC_KERNEL_BITS)
-		    long bits = sysconf(_SC_KERNEL_BITS);
-		#endif
-		    long cpu  = sysconf (_SC_CPU_VERSION);
-
-		    switch (cpu)
-			{
-			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-			case CPU_PA_RISC2_0:
-		#if defined(_SC_KERNEL_BITS)
-			    switch (bits)
-				{
-				case 64: puts ("hppa2.0w"); break;
-				case 32: puts ("hppa2.0n"); break;
-				default: puts ("hppa2.0"); break;
-				} break;
-		#else  /* !defined(_SC_KERNEL_BITS) */
-			    puts ("hppa2.0"); break;
-		#endif
-			default: puts ("hppa1.0"); break;
-			}
-		    exit (0);
-		}
-EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
-		    test -z "$HP_ARCH" && HP_ARCH=hppa
-		fi ;;
-	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
-	then
-	    eval $set_cc_for_build
-
-	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
-	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
-	    # generating 64-bit code.  GNU and HP use different nomenclature:
-	    #
-	    # $ CC_FOR_BUILD=cc ./config.guess
-	    # => hppa2.0w-hp-hpux11.23
-	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
-	    # => hppa64-hp-hpux11.23
-
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep -q __LP64__
-	    then
-		HP_ARCH="hppa2.0w"
-	    else
-		HP_ARCH="hppa64"
-	    fi
-	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
-	exit ;;
-    ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
-	exit ;;
-    3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <unistd.h>
-	int
-	main ()
-	{
-	  long cpu = sysconf (_SC_CPU_VERSION);
-	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
-	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
-	     results, however.  */
-	  if (CPU_IS_PA_RISC (cpu))
-	    {
-	      switch (cpu)
-		{
-		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
-		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
-		  default: puts ("hppa-hitachi-hiuxwe2"); break;
-		}
-	    }
-	  else if (CPU_IS_HP_MC68K (cpu))
-	    puts ("m68k-hitachi-hiuxwe2");
-	  else puts ("unknown-hitachi-hiuxwe2");
-	  exit (0);
-	}
-EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
-		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
-	echo hppa1.1-hp-bsd
-	exit ;;
-    9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
-    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-	echo hppa1.1-hp-osf
-	exit ;;
-    hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
-    i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
-	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
-	fi
-	exit ;;
-    parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
-    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
-    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
-	if getsysinfo -f scalar_acc
-	then echo c32-convex-bsd
-	else echo c2-convex-bsd
-	fi
-	exit ;;
-    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
-    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
-    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
-    CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
-	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-	      -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
-    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
-    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
-	exit ;;
-    sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
-	exit ;;
-    *:FreeBSD:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case ${UNAME_PROCESSOR} in
-	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	esac
-	exit ;;
-    i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
-	exit ;;
-    *:MINGW64*:*)
-	echo ${UNAME_MACHINE}-pc-mingw64
-	exit ;;
-    *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
-	exit ;;
-    *:MSYS*:*)
-	echo ${UNAME_MACHINE}-pc-msys
-	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
-    i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
-	exit ;;
-    *:Interix*:*)
-	case ${UNAME_MACHINE} in
-	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
-		exit ;;
-	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
-		exit ;;
-	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
-    i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
-	exit ;;
-    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
-    prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-	exit ;;
-    *:GNU:*:*)
-	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
-	exit ;;
-    *:GNU/*:*:*)
-	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
-	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
-	exit ;;
-    aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    aarch64_be:Linux:*:*)
-	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-	esac
-	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    arm*:Linux:*:*)
-	eval $set_cc_for_build
-	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
-	    | grep -q __ARM_EABI__
-	then
-	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	else
-	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-		| grep -q __ARM_PCS_VFP
-	    then
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
-	    else
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
-	    fi
-	fi
-	exit ;;
-    avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    cris:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
-	exit ;;
-    frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    i*86:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
-	exit ;;
-    ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
-	;;
-    openrisc*:Linux:*:*)
-	echo or1k-unknown-linux-${LIBC}
-	exit ;;
-    or32:Linux:*:* | or1k*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    padre:Linux:*:*)
-	echo sparc-unknown-linux-${LIBC}
-	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-${LIBC}
-	exit ;;
-    parisc:Linux:*:* | hppa:Linux:*:*)
-	# Look for CPU level
-	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-	  *)    echo hppa-unknown-linux-${LIBC} ;;
-	esac
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-${LIBC}
-	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-${LIBC}
-	exit ;;
-    ppc64le:Linux:*:*)
-	echo powerpc64le-unknown-linux-${LIBC}
-	exit ;;
-    ppcle:Linux:*:*)
-	echo powerpcle-unknown-linux-${LIBC}
-	exit ;;
-    s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
-	exit ;;
-    sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
-	exit ;;
-    x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
-	exit ;;
-    i*86:DYNIX/ptx:4*:*)
-	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
-	# earlier versions are messed up and put the nodename in both
-	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
-    i*86:UNIX_SV:4.2MP:2.*)
-	# Unixware is an offshoot of SVR4, but it has its own version
-	# number series starting with 2...
-	# I am not positive that other SVR4 systems won't match this,
-	# I just have to hope.  -- rms.
-	# Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
-	exit ;;
-    i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
-	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
-	exit ;;
-    i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
-	exit ;;
-    i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
-	exit ;;
-    i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
-	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
-	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
-	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
-	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
-	fi
-	exit ;;
-    i*86:*:5:[678]*)
-	# UnixWare 7.x, OpenUNIX and OpenServer 6.
-	case `/bin/uname -X | grep "^Machine"` in
-	    *486*)	     UNAME_MACHINE=i486 ;;
-	    *Pentium)	     UNAME_MACHINE=i586 ;;
-	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
-	exit ;;
-    i*86:*:3.2:*)
-	if test -f /usr/options/cb.name; then
-		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
-	elif /bin/uname -X 2>/dev/null >/dev/null ; then
-		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
-		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-			&& UNAME_MACHINE=i586
-		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
-	else
-		echo ${UNAME_MACHINE}-pc-sysv32
-	fi
-	exit ;;
-    pc:*:*:*)
-	# Left here for compatibility:
-	# uname -m prints for DJGPP always 'pc', but it prints nothing about
-	# the processor, so we play safe by assuming i586.
-	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
-	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
-    Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
-    paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
-    i860:*:4.*:*) # i860-SVR4
-	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
-	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
-	fi
-	exit ;;
-    mini*:CTIX:SYS*5:*)
-	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
-    mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
-    M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
-    M68*:*:R3V[5678]*:*)
-	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
-	OS_REL=''
-	test -r /etc/.relid \
-	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-	OS_REL='.3'
-	test -r /etc/.relid \
-	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
-    TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
-	exit ;;
-    SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
-	exit ;;
-    RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
-    *:SINIX-*:*:*)
-	if uname -p 2>/dev/null >/dev/null ; then
-		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
-	else
-		echo ns32k-sni-sysv
-	fi
-	exit ;;
-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-			# says <Richard.M.Bartel@ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
-    *:UNIX_System_V:4*:FTX*)
-	# From Gerald Hewes <hewes@openmarket.com>.
-	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
-    *:*:*:FTX*)
-	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
-    i*86:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
-	exit ;;
-    *:VOS:*:*)
-	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
-    mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
-	exit ;;
-    news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
-    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv${UNAME_RELEASE}
-	else
-		echo mips-unknown-sysv${UNAME_RELEASE}
-	fi
-	exit ;;
-    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
-    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
-    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
-    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    x86_64:Haiku:*:*)
-	echo x86_64-unknown-haiku
-	exit ;;
-    SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
-	exit ;;
-    SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
-	exit ;;
-    Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
-	exit ;;
-    *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	eval $set_cc_for_build
-	if test "$UNAME_PROCESSOR" = unknown ; then
-	    UNAME_PROCESSOR=powerpc
-	fi
-	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-		    grep IS_64BIT_ARCH >/dev/null
-		then
-		    case $UNAME_PROCESSOR in
-			i386) UNAME_PROCESSOR=x86_64 ;;
-			powerpc) UNAME_PROCESSOR=powerpc64 ;;
-		    esac
-		fi
-	    fi
-	elif test "$UNAME_PROCESSOR" = i386 ; then
-	    # Avoid executing cc on OS X 10.9, as it ships with a stub
-	    # that puts up a graphical alert prompting to install
-	    # developer tools.  Any system running Mac OS X 10.7 or
-	    # later (Darwin 11 and later) is required to have a 64-bit
-	    # processor. This is not true of the ARM version of Darwin
-	    # that Apple uses in portable devices.
-	    UNAME_PROCESSOR=x86_64
-	fi
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
-	exit ;;
-    *:procnto*:*:* | *:QNX:[0123456789]*:*)
-	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
-		UNAME_PROCESSOR=i386
-		UNAME_MACHINE=pc
-	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
-	exit ;;
-    *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
-	exit ;;
-    *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
-    BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
-    DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
-	exit ;;
-    *:Plan9:*:*)
-	# "uname -m" is not consistent, so use $cputype instead. 386
-	# is converted to i386 for consistency with other x86
-	# operating systems.
-	if test "$cputype" = "386"; then
-	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
-	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
-	exit ;;
-    *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
-    *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
-    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
-    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
-    *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
-    *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
-    SEI:*:*:SEIUX)
-	echo mips-sei-seiux${UNAME_RELEASE}
-	exit ;;
-    *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
-	exit ;;
-    *:*VMS:*:*)
-	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
-	esac ;;
-    *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
-    i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
-	exit ;;
-    i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
-	exit ;;
-    x86_64:VMkernel:*:*)
-	echo ${UNAME_MACHINE}-unknown-esx
-	exit ;;
-esac
-
-cat >&2 <<EOF
-$0: unable to guess system type
-
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
-
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
-and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
-
-config.guess timestamp = $timestamp
-
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-
-hostinfo               = `(hostinfo) 2>/dev/null`
-/bin/universe          = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch              = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
-EOF
-
-exit 1
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/standalone/android/tmp/network-2.4.1.2/config.sub b/standalone/android/tmp/network-2.4.1.2/config.sub
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/config.sub
+++ /dev/null
@@ -1,1799 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
-
-timestamp='2014-09-11'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program.  This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support.  The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
-  -h, --help         print this help, then exit
-  -t, --time-stamp   print date of last modification, then exit
-  -v, --version      print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2014 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
-  case $1 in
-    --time-stamp | --time* | -t )
-       echo "$timestamp" ; exit ;;
-    --version | -v )
-       echo "$version" ; exit ;;
-    --help | --h* | -h )
-       echo "$usage"; exit ;;
-    -- )     # Stop option processing
-       shift; break ;;
-    - )	# Use stdin as input.
-       break ;;
-    -* )
-       echo "$me: invalid option $1$help"
-       exit 1 ;;
-
-    *local*)
-       # First pass through any local machine types.
-       echo $1
-       exit ;;
-
-    * )
-       break ;;
-  esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
-    exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
-    exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze*)
-		os=
-		basic_machine=$1
-		;;
-	-bluegene*)
-		os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
-	-chorusrdb)
-		os=-chorusrdb
-		basic_machine=$1
-		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
-	-lynx*)
-		os=-lynxos
-		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
-		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
-	-psos*)
-		os=-psos
-		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| aarch64 | aarch64_be \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arceb \
-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-	| avr | avr32 \
-	| be32 | be64 \
-	| bfin \
-	| c4x | c8051 | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| hexagon \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| k1om \
-	| le32 | le64 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa32r6 | mipsisa32r6el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64r6 | mipsisa64r6el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipsr5900 | mipsr5900el \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nds32 | nds32le | nds32be \
-	| nios | nios2 | nios2eb | nios2el \
-	| ns16k | ns32k \
-	| open8 | or1k | or1knd | or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle \
-	| pyramid \
-	| riscv32 | riscv64 \
-	| rl78 | rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu \
-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-	| we32k \
-	| x86 | xc16x | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	c54x)
-		basic_machine=tic54x-unknown
-		;;
-	c55x)
-		basic_machine=tic55x-unknown
-		;;
-	c6x)
-		basic_machine=tic6x-unknown
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-		;;
-	ms1)
-		basic_machine=mt-unknown
-		;;
-
-	strongarm | thumb | xscale)
-		basic_machine=arm-unknown
-		;;
-	xgate)
-		basic_machine=$basic_machine-unknown
-		os=-none
-		;;
-	xscaleeb)
-		basic_machine=armeb-unknown
-		;;
-
-	xscaleel)
-		basic_machine=armel-unknown
-		;;
-
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| aarch64-* | aarch64_be-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| be32-* | be64-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| c8051-* | clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| k1om-* \
-	| le32-* | le64-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| microblaze-* | microblazeel-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa32r6-* | mipsisa32r6el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64r6-* | mipsisa64r6el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipsr5900-* | mipsr5900el-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| open8-* \
-	| or1k*-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-	| pyramid-* \
-	| rl78-* | romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
-	| tahoe-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile*-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-	| vax-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
-	# Recognize the various machine names and aliases which stand
-	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
-		;;
-	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c54x-*)
-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c55x-*)
-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c6x-*)
-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16 | cr16-*)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
-		;;
-	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
-		;;
-	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
-		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
-		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
-		;;
-	encore | umax | mmax)
-		basic_machine=ns32k-encore
-		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
-		;;
-	fx2800)
-		basic_machine=i860-alliant
-		;;
-	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
-		;;
-	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
-		;;
-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
-		;;
-	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
-		;;
-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k78[0-9] | hp78[0-9])
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
-		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
-		;;
-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
-		;;
-	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
-		;;
-	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
-		;;
-	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
-		;;
-	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
-		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
-		;;
-	iris | iris4d)
-		basic_machine=mips-sgi
-		case $os in
-		    -irix*)
-			;;
-		    *)
-			os=-irix4
-			;;
-		esac
-		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	microblaze*)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw64)
-		basic_machine=x86_64-pc
-		os=-mingw64
-		;;
-	mingw32)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
-	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	moxiebox)
-		basic_machine=moxie-unknown
-		os=-moxiebox
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	msys)
-		basic_machine=i686-pc
-		os=-msys
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
-		;;
-	nacl)
-		basic_machine=le32-unknown
-		os=-nacl
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
-		;;
-	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
-		;;
-	next | m*-next )
-		basic_machine=m68k-next
-		case $os in
-		    -nextstep* )
-			;;
-		    -ns2*)
-		      os=-nextstep2
-			;;
-		    *)
-		      os=-nextstep3
-			;;
-		esac
-		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
-	np1)
-		basic_machine=np1-gould
-		;;
-	neo-tandem)
-		basic_machine=neo-tandem
-		;;
-	nse-tandem)
-		basic_machine=nse-tandem
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
-		;;
-	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
-		;;
-	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	pbd)
-		basic_machine=sparc-tti
-		;;
-	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
-		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pn)
-		basic_machine=pn-gould
-		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc | ppcbe)	basic_machine=powerpc-unknown
-		;;
-	ppc-* | ppcbe-*)
-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos | rdos64)
-		basic_machine=x86_64-pc
-		os=-rdos
-		;;
-	rdos32)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	rm[46]00)
-		basic_machine=mips-siemens
-		;;
-	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
-		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
-		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
-		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
-		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
-		;;
-	sequent)
-		basic_machine=i386-sequent
-		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
-		;;
-	sh5el)
-		basic_machine=sh5le-unknown
-		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
-		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
-		;;
-	spur)
-		basic_machine=spur-unknown
-		;;
-	st2000)
-		basic_machine=m68k-tandem
-		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
-		;;
-	strongarm-* | thumb-*)
-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	sun2)
-		basic_machine=m68000-sun
-		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
-		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
-		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
-		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
-		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
-		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
-		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
-		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
-		;;
-	sun4)
-		basic_machine=sparc-sun
-		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
-		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
-		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
-		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
-		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
-		;;
-	tile*)
-		basic_machine=$basic_machine-unknown
-		os=-linux-gnu
-		;;
-	tx39)
-		basic_machine=mipstx39-unknown
-		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
-		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
-		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
-		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
-		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
-		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
-		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
-		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
-		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
-		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
-		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
-		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
-		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
-		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
-		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
-		;;
-	xscale-* | xscalee[bl]-*)
-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
-		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
-		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
-		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
-		;;
-	none)
-		basic_machine=none-none
-		os=-none
-		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
-		;;
-	op50n)
-		basic_machine=hppa1.1-oki
-		;;
-	op60c)
-		basic_machine=hppa1.1-oki
-		;;
-	romp)
-		basic_machine=romp-ibm
-		;;
-	mmix)
-		basic_machine=mmix-knuth
-		;;
-	rs6000)
-		basic_machine=rs6000-ibm
-		;;
-	vax)
-		basic_machine=vax-dec
-		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
-		;;
-	pdp11)
-		basic_machine=pdp11-dec
-		;;
-	we32k)
-		basic_machine=we32k-att
-		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
-		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
-		;;
-	cydra)
-		basic_machine=cydra-cydrome
-		;;
-	orion)
-		basic_machine=orion-highlevel
-		;;
-	orion105)
-		basic_machine=clipper-highlevel
-		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
-		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
-		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
-		;;
-	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
-		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
-		;;
-	*)
-		;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-auroraux)
-		os=-auroraux
-		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
-		;;
-	-solaris)
-		os=-solaris2
-		;;
-	-svr4*)
-		os=-sysv4
-		;;
-	-unixware*)
-		os=-sysv4.2uw
-		;;
-	-gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
-		;;
-	# First accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* | -plan9* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
-			;;
-		    *)
-			os=-nto$os
-			;;
-		esac
-		;;
-	-nto-qnx*)
-		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
-		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
-		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
-		;;
-	-linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
-		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
-		;;
-	-opened*)
-		os=-openedition
-		;;
-	-os400*)
-		os=-os400
-		;;
-	-wince*)
-		os=-wince
-		;;
-	-osfrose*)
-		os=-osfrose
-		;;
-	-osf*)
-		os=-osf
-		;;
-	-utek*)
-		os=-bsd
-		;;
-	-dynix*)
-		os=-bsd
-		;;
-	-acis*)
-		os=-aos
-		;;
-	-atheos*)
-		os=-atheos
-		;;
-	-syllable*)
-		os=-syllable
-		;;
-	-386bsd)
-		os=-bsd
-		;;
-	-ctix* | -uts*)
-		os=-sysv
-		;;
-	-nova*)
-		os=-rtmk-nova
-		;;
-	-ns2 )
-		os=-nextstep2
-		;;
-	-nsk*)
-		os=-nsk
-		;;
-	# Preserve the version number of sinix5.
-	-sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
-		;;
-	-sinix*)
-		os=-sysv4
-		;;
-	-tpf*)
-		os=-tpf
-		;;
-	-triton*)
-		os=-sysv3
-		;;
-	-oss*)
-		os=-sysv3
-		;;
-	-svr4)
-		os=-sysv4
-		;;
-	-svr3)
-		os=-sysv3
-		;;
-	-sysvr4)
-		os=-sysv4
-		;;
-	# This must come after -sysvr4.
-	-sysv*)
-		;;
-	-ose*)
-		os=-ose
-		;;
-	-es1800*)
-		os=-ose
-		;;
-	-xenix)
-		os=-xenix
-		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
-		;;
-	-aros*)
-		os=-aros
-		;;
-	-zvmoe)
-		os=-zvmoe
-		;;
-	-dicos*)
-		os=-dicos
-		;;
-	-nacl*)
-		;;
-	-none)
-		;;
-	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
-		exit 1
-		;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system.  Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
-	score-*)
-		os=-elf
-		;;
-	spu-*)
-		os=-elf
-		;;
-	*-acorn)
-		os=-riscix1.2
-		;;
-	arm*-rebel)
-		os=-linux
-		;;
-	arm*-semi)
-		os=-aout
-		;;
-	c4x-* | tic4x-*)
-		os=-coff
-		;;
-	c8051-*)
-		os=-elf
-		;;
-	hexagon-*)
-		os=-elf
-		;;
-	tic54x-*)
-		os=-coff
-		;;
-	tic55x-*)
-		os=-coff
-		;;
-	tic6x-*)
-		os=-coff
-		;;
-	# This must come before the *-dec entry.
-	pdp10-*)
-		os=-tops20
-		;;
-	pdp11-*)
-		os=-none
-		;;
-	*-dec | vax-*)
-		os=-ultrix4.2
-		;;
-	m68*-apollo)
-		os=-domain
-		;;
-	i386-sun)
-		os=-sunos4.0.2
-		;;
-	m68000-sun)
-		os=-sunos3
-		;;
-	m68*-cisco)
-		os=-aout
-		;;
-	mep-*)
-		os=-elf
-		;;
-	mips*-cisco)
-		os=-elf
-		;;
-	mips*-*)
-		os=-elf
-		;;
-	or32-*)
-		os=-coff
-		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
-		;;
-	sparc-* | *-sun)
-		os=-sunos4.1.1
-		;;
-	*-be)
-		os=-beos
-		;;
-	*-haiku)
-		os=-haiku
-		;;
-	*-ibm)
-		os=-aix
-		;;
-	*-knuth)
-		os=-mmixware
-		;;
-	*-wec)
-		os=-proelf
-		;;
-	*-winbond)
-		os=-proelf
-		;;
-	*-oki)
-		os=-proelf
-		;;
-	*-hp)
-		os=-hpux
-		;;
-	*-hitachi)
-		os=-hiux
-		;;
-	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
-		;;
-	*-cbm)
-		os=-amigaos
-		;;
-	*-dg)
-		os=-dgux
-		;;
-	*-dolphin)
-		os=-sysv3
-		;;
-	m68k-ccur)
-		os=-rtu
-		;;
-	m88k-omron*)
-		os=-luna
-		;;
-	*-next )
-		os=-nextstep
-		;;
-	*-sequent)
-		os=-ptx
-		;;
-	*-crds)
-		os=-unos
-		;;
-	*-ns)
-		os=-genix
-		;;
-	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
-		;;
-	*-gould)
-		os=-sysv
-		;;
-	*-highlevel)
-		os=-bsd
-		;;
-	*-encore)
-		os=-bsd
-		;;
-	*-sgi)
-		os=-irix
-		;;
-	*-siemens)
-		os=-sysv4
-		;;
-	*-masscomp)
-		os=-rtu
-		;;
-	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
-		;;
-	*-rom68k)
-		os=-coff
-		;;
-	*-*bug)
-		os=-coff
-		;;
-	*-apple)
-		os=-macos
-		;;
-	*-atari*)
-		os=-mint
-		;;
-	*)
-		os=-none
-		;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
-		case $os in
-			-riscix*)
-				vendor=acorn
-				;;
-			-sunos*)
-				vendor=sun
-				;;
-			-cnk*|-aix*)
-				vendor=ibm
-				;;
-			-beos*)
-				vendor=be
-				;;
-			-hpux*)
-				vendor=hp
-				;;
-			-mpeix*)
-				vendor=hp
-				;;
-			-hiux*)
-				vendor=hitachi
-				;;
-			-unos*)
-				vendor=crds
-				;;
-			-dgux*)
-				vendor=dg
-				;;
-			-luna*)
-				vendor=omron
-				;;
-			-genix*)
-				vendor=ns
-				;;
-			-mvs* | -opened*)
-				vendor=ibm
-				;;
-			-os400*)
-				vendor=ibm
-				;;
-			-ptx*)
-				vendor=sequent
-				;;
-			-tpf*)
-				vendor=ibm
-				;;
-			-vxsim* | -vxworks* | -windiss*)
-				vendor=wrs
-				;;
-			-aux*)
-				vendor=apple
-				;;
-			-hms*)
-				vendor=hitachi
-				;;
-			-mpw* | -macos*)
-				vendor=apple
-				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-				vendor=atari
-				;;
-			-vos*)
-				vendor=stratus
-				;;
-		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
-		;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/standalone/android/tmp/network-2.4.1.2/configure b/standalone/android/tmp/network-2.4.1.2/configure
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/configure
+++ /dev/null
@@ -1,5327 +0,0 @@
-#! /bin/sh
-set -- --host=arm-linux-androideabi
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for Haskell network package 2.3.0.14.
-#
-# Report bugs to <libraries@haskell.org>.
-#
-#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
-#
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# Use a proper internal environment variable to ensure we don't fall
-  # into an infinite loop, continuously re-executing ourselves.
-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
-    _as_can_reexec=no; export _as_can_reexec;
-    # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
-  fi
-  # We don't want this to propagate to other subprocesses.
-          { _as_can_reexec=; unset _as_can_reexec;}
-if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-"
-  as_required="as_fn_return () { (exit \$1); }
-as_fn_success () { as_fn_return 0; }
-as_fn_failure () { as_fn_return 1; }
-as_fn_ret_success () { return 0; }
-as_fn_ret_failure () { return 1; }
-
-exitcode=0
-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
-  exitcode=1; echo positional parameters were not saved.
-fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
-  as_have_required=yes
-else
-  as_have_required=no
-fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_found=false
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  as_found=:
-  case $as_dir in #(
-	 /*)
-	   for as_base in sh bash ksh sh5; do
-	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
-  break 2
-fi
-fi
-	   done;;
-       esac
-  as_found=false
-done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
-  export CONFIG_SHELL
-             # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
-  *v*x* | *x*v* ) as_opts=-vx ;;
-  *v* ) as_opts=-v ;;
-  *x* ) as_opts=-x ;;
-  * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
-fi
-
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
-  else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: libraries@haskell.org about your system, including any
-$0: error possibly output before this message. Then install
-$0: a modern shell, or manually run the script under such a
-$0: shell if you do have one."
-  fi
-  exit 1
-fi
-fi
-fi
-SHELL=${CONFIG_SHELL-/bin/sh}
-export SHELL
-# Unset more variables known to interfere with behavior of common tools.
-CLICOLOR_FORCE= GREP_OPTIONS=
-unset CLICOLOR_FORCE GREP_OPTIONS
-
-## --------------------- ##
-## M4sh Shell Functions. ##
-## --------------------- ##
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-
-  as_lineno_1=$LINENO as_lineno_1a=$LINENO
-  as_lineno_2=$LINENO as_lineno_2a=$LINENO
-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
-  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
-  # already done that, so ensure we don't try to do so again and fall
-  # in an infinite loop.  This has already happened in practice.
-  _as_can_reexec=no; export _as_can_reexec
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-test -n "$DJDIR" || exec 7<&0 </dev/null
-exec 6>&1
-
-# Name of the host.
-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_clean_files=
-ac_config_libobj_dir=.
-LIBOBJS=
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-
-# Identity of this package.
-PACKAGE_NAME='Haskell network package'
-PACKAGE_TARNAME='network'
-PACKAGE_VERSION='2.3.0.14'
-PACKAGE_STRING='Haskell network package 2.3.0.14'
-PACKAGE_BUGREPORT='libraries@haskell.org'
-PACKAGE_URL=''
-
-ac_unique_file="include/HsNet.h"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
-# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-#ifdef HAVE_STDINT_H
-# include <stdint.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif"
-
-ac_subst_vars='LTLIBOBJS
-LIBOBJS
-EXTRA_SRCS
-EXTRA_LIBS
-EXTRA_CPPFLAGS
-CALLCONV
-EGREP
-GREP
-CPP
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
-host_os
-host_vendor
-host_cpu
-host
-build_os
-build_vendor
-build_cpu
-build
-target_alias
-host_alias
-build_alias
-LIBS
-ECHO_T
-ECHO_N
-ECHO_C
-DEFS
-mandir
-localedir
-libdir
-psdir
-pdfdir
-dvidir
-htmldir
-infodir
-docdir
-oldincludedir
-includedir
-localstatedir
-sharedstatedir
-sysconfdir
-datadir
-datarootdir
-libexecdir
-sbindir
-bindir
-program_transform_name
-prefix
-exec_prefix
-PACKAGE_URL
-PACKAGE_BUGREPORT
-PACKAGE_STRING
-PACKAGE_VERSION
-PACKAGE_TARNAME
-PACKAGE_NAME
-PATH_SEPARATOR
-SHELL'
-ac_subst_files=''
-ac_user_opts='
-enable_option_checking
-with_cc
-'
-      ac_precious_vars='build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-LIBS
-CPPFLAGS
-CPP'
-
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-ac_unrecognized_opts=
-ac_unrecognized_sep=
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-# (The list follows the same order as the GNU Coding Standards.)
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datarootdir='${prefix}/share'
-datadir='${datarootdir}'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
-infodir='${datarootdir}/info'
-htmldir='${docdir}'
-dvidir='${docdir}'
-pdfdir='${docdir}'
-psdir='${docdir}'
-libdir='${exec_prefix}/lib'
-localedir='${datarootdir}/locale'
-mandir='${datarootdir}/man'
-
-ac_prev=
-ac_dashdash=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval $ac_prev=\$ac_option
-    ac_prev=
-    continue
-  fi
-
-  case $ac_option in
-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *=)   ac_optarg= ;;
-  *)    ac_optarg=yes ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_dashdash$ac_option in
-  --)
-    ac_dashdash=yes ;;
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=*)
-    datadir=$ac_optarg ;;
-
-  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
-  | --dataroo | --dataro | --datar)
-    ac_prev=datarootdir ;;
-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
-    datarootdir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=no ;;
-
-  -docdir | --docdir | --docdi | --doc | --do)
-    ac_prev=docdir ;;
-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
-    docdir=$ac_optarg ;;
-
-  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
-    ac_prev=dvidir ;;
-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
-    dvidir=$ac_optarg ;;
-
-  -enable-* | --enable-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"enable_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval enable_$ac_useropt=\$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
-    ac_prev=htmldir ;;
-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
-  | --ht=*)
-    htmldir=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localedir | --localedir | --localedi | --localed | --locale)
-    ac_prev=localedir ;;
-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
-    localedir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst | --locals)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
-    ac_prev=pdfdir ;;
-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
-    pdfdir=$ac_optarg ;;
-
-  -psdir | --psdir | --psdi | --psd | --ps)
-    ac_prev=psdir ;;
-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
-    psdir=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=\$ac_optarg ;;
-
-  -without-* | --without-*)
-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
-    ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
-    case $ac_user_opts in
-      *"
-"with_$ac_useropt"
-"*) ;;
-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
-	 ac_unrecognized_sep=', ';;
-    esac
-    eval with_$ac_useropt=no ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    case $ac_envvar in #(
-      '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
-    esac
-    eval $ac_envvar=\$ac_optarg
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error $? "missing argument to $ac_option"
-fi
-
-if test -n "$ac_unrecognized_opts"; then
-  case $enable_option_checking in
-    no) ;;
-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
-  esac
-fi
-
-# Check all directory arguments for consistency.
-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
-		datadir sysconfdir sharedstatedir localstatedir includedir \
-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
-do
-  eval ac_val=\$$ac_var
-  # Remove trailing slashes.
-  case $ac_val in
-    */ )
-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
-      eval $ac_var=\$ac_val;;
-  esac
-  # Be sure to have absolute directory names.
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* )  continue;;
-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
-  esac
-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-ac_pwd=`pwd` && test -n "$ac_pwd" &&
-ac_ls_di=`ls -di .` &&
-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  as_fn_error $? "working directory cannot be determined"
-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  as_fn_error $? "pwd does not report name of working directory"
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$as_myself" ||
-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_myself" : 'X\(//\)[^/]' \| \
-	 X"$as_myself" : 'X\(//\)$' \| \
-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r "$srcdir/$ac_unique_file"; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r "$srcdir/$ac_unique_file"; then
-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
-fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
-ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
-	pwd)`
-# When building in place, set srcdir=.
-if test "$ac_abs_confdir" = "$ac_pwd"; then
-  srcdir=.
-fi
-# Remove unnecessary trailing slashes from srcdir.
-# Double slashes in file names in object file debugging info
-# mess up M-x gdb in Emacs.
-case $srcdir in
-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
-esac
-for ac_var in $ac_precious_vars; do
-  eval ac_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_env_${ac_var}_value=\$${ac_var}
-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
-  eval ac_cv_env_${ac_var}_value=\$${ac_var}
-done
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures Haskell network package 2.3.0.14 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR            user executables [EPREFIX/bin]
-  --sbindir=DIR           system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR        program executables [EPREFIX/libexec]
-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --libdir=DIR            object code libraries [EPREFIX/lib]
-  --includedir=DIR        C header files [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR           info documentation [DATAROOTDIR/info]
-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/network]
-  --htmldir=DIR           html documentation [DOCDIR]
-  --dvidir=DIR            dvi documentation [DOCDIR]
-  --pdfdir=DIR            pdf documentation [DOCDIR]
-  --psdir=DIR             ps documentation [DOCDIR]
-_ACEOF
-
-  cat <<\_ACEOF
-
-System types:
-  --build=BUILD     configure for building on BUILD [guessed]
-  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of Haskell network package 2.3.0.14:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-C compiler
-
-Some influential environment variables:
-  CC          C compiler command
-  CFLAGS      C compiler flags
-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
-              nonstandard directory <lib dir>
-  LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
-              you have headers in a nonstandard directory <include dir>
-  CPP         C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <libraries@haskell.org>.
-_ACEOF
-ac_status=$?
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" ||
-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
-      continue
-    ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-    cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
-    if test -f "$ac_srcdir/configure.gnu"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
-    elif test -f "$ac_srcdir/configure"; then
-      echo &&
-      $SHELL "$ac_srcdir/configure" --help=recursive
-    else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi || ac_status=$?
-    cd "$ac_pwd" || { ac_status=$?; break; }
-  done
-fi
-
-test -n "$ac_init_help" && exit $ac_status
-if $ac_init_version; then
-  cat <<\_ACEOF
-Haskell network package configure 2.3.0.14
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit
-fi
-
-## ------------------------ ##
-## Autoconf initialization. ##
-## ------------------------ ##
-
-# ac_fn_c_try_compile LINENO
-# --------------------------
-# Try to compile conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
-  if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_compile
-
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------ ##
-## Report this to libraries@haskell.org ##
-## ------------------------------------ ##"
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
-
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 test -x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
-fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
-# ac_fn_c_check_func LINENO FUNC VAR
-# ----------------------------------
-# Tests whether FUNC exists, setting the cache variable VAR accordingly
-ac_fn_c_check_func ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $2 innocuous_$2
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $2
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$2 || defined __stub___$2
-choke me
-#endif
-
-int
-main ()
-{
-return $2 ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_func
-
-# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
-# ----------------------------------------------------
-# Tries to find if the field MEMBER exists in type AGGR, after including
-# INCLUDES, setting cache variable VAR accordingly.
-ac_fn_c_check_member ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
-{
-static $2 ac_aggr;
-if (sizeof ac_aggr.$3)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$4=yes"
-else
-  eval "$4=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$4
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_member
-
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  as_decl_name=`echo $2|sed 's/ *(.*//'`
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
-  (void) $as_decl_use;
-#else
-  (void) $as_decl_name;
-#endif
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_decl
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by Haskell network package $as_me 2.3.0.14, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-exec 5>>config.log
-{
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
-  done
-IFS=$as_save_IFS
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
-    2)
-      as_fn_append ac_configure_args1 " '$ac_arg'"
-      if test $ac_must_keep_next = true; then
-	ac_must_keep_next=false # Got value, back to normal.
-      else
-	case $ac_arg in
-	  *=* | --config-cache | -C | -disable-* | --disable-* \
-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
-	  | -with-* | --with-* | -without-* | --without-* | --x)
-	    case "$ac_configure_args0 " in
-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
-	    esac
-	    ;;
-	  -* ) ac_must_keep_next=true ;;
-	esac
-      fi
-      as_fn_append ac_configure_args " '$ac_arg'"
-      ;;
-    esac
-  done
-done
-{ ac_configure_args0=; unset ac_configure_args0;}
-{ ac_configure_args1=; unset ac_configure_args1;}
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-
-    $as_echo "## ---------------- ##
-## Cache variables. ##
-## ---------------- ##"
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-	"s/'\''/'\''\\\\'\'''\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
-
-    $as_echo "## ----------------- ##
-## Output variables. ##
-## ----------------- ##"
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      $as_echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
-## File substitutions. ##
-## ------------------- ##"
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=\$$ac_var
-	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      $as_echo "## ----------- ##
-## confdefs.h. ##
-## ----------- ##"
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
-
-$as_echo "/* confdefs.h */" > confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
-if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
-elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special files
-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . "$cache_file";;
-      *)                      . "./$cache_file";;
-    esac
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-ac_includes_default="$ac_includes_default
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-# include <winsock2.h>
-#endif
-#ifdef HAVE_WS2TCPIP_H
-# include <ws2tcpip.h>
-// fix for MingW not defining IPV6_V6ONLY
-# define IPV6_V6ONLY 27
-#endif
-#ifdef HAVE_WSPIAPI_H
-# include <wspiapi.h>
-#endif"
-
-# Safety check: Ensure that we are in the correct source directory.
-
-
-ac_config_headers="$ac_config_headers include/HsNetworkConfig.h"
-
-
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
-  if test -f "$ac_dir/install-sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f "$ac_dir/install.sh"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f "$ac_dir/shtool"; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
-
-
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
-  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
-  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "x$host_alias" = x; then
-  ac_cv_host=$ac_cv_build
-else
-  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
-
-
-
-# Check whether --with-cc was given.
-if test "${with_cc+set}" = set; then :
-  withval=$with_cc; CC=$withval
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this sort of thing.  */
-  typedef int charset[2];
-  const charset cs = { 0, 0 };
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this sort of thing.  */
-    char tx;
-    char *t = &tx;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; } bx;
-    struct s *b = &bx; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_c_const=yes
-else
-  ac_cv_c_const=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
-
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  # Broken: success on invalid input.
-continue
-else
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in fcntl.h limits.h stdlib.h sys/types.h unistd.h winsock2.h ws2tcpip.h wspiapi.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-for ac_header in arpa/inet.h netdb.h netinet/in.h netinet/tcp.h sys/socket.h sys/uio.h sys/un.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_func in readlink symlink
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_control" "ac_cv_member_struct_msghdr_msg_control" "#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#if HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif
-"
-if test "x$ac_cv_member_struct_msghdr_msg_control" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct msghdr" "msg_accrights" "ac_cv_member_struct_msghdr_msg_accrights" "#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#if HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif
-"
-if test "x$ac_cv_member_struct_msghdr_msg_accrights" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS 1
-_ACEOF
-
-
-fi
-
-
-ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_len" "ac_cv_member_struct_sockaddr_sa_len" "#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-"
-if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_SA_LEN 1
-_ACEOF
-
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for in_addr_t in netinet/in.h" >&5
-$as_echo_n "checking for in_addr_t in netinet/in.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <netinet/in.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "in_addr_t" >/dev/null 2>&1; then :
-
-$as_echo "#define HAVE_IN_ADDR_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f conftest*
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SO_PEERCRED and struct ucred in sys/socket.h" >&5
-$as_echo_n "checking for SO_PEERCRED and struct ucred in sys/socket.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifndef SO_PEERCRED
-# error no SO_PEERCRED
-#endif
-struct ucred u;
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_ucred=yes
-else
-  ac_cv_ucred=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-if test "x$ac_cv_ucred" = xno; then
-    old_CFLAGS="$CFLAGS"
-    CFLAGS="-D_GNU_SOURCE $CFLAGS"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifndef SO_PEERCRED
-# error no SO_PEERCRED
-#endif
-struct ucred u;
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_ucred=yes
-else
-  ac_cv_ucred=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-    if test "x$ac_cv_ucred" = xyes; then
-        EXTRA_CPPFLAGS=-D_GNU_SOURCE
-    fi
-else
-    old_CFLAGS="$CFLAGS"
-fi
-if test "x$ac_cv_ucred" = xno; then
-    CFLAGS="$old_CFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
-
-$as_echo "#define HAVE_STRUCT_UCRED 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _head_libws2_32_a in -lws2_32" >&5
-$as_echo_n "checking for _head_libws2_32_a in -lws2_32... " >&6; }
-if ${ac_cv_lib_ws2_32__head_libws2_32_a+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lws2_32  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char _head_libws2_32_a ();
-int
-main ()
-{
-return _head_libws2_32_a ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_ws2_32__head_libws2_32_a=yes
-else
-  ac_cv_lib_ws2_32__head_libws2_32_a=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ws2_32__head_libws2_32_a" >&5
-$as_echo "$ac_cv_lib_ws2_32__head_libws2_32_a" >&6; }
-if test "x$ac_cv_lib_ws2_32__head_libws2_32_a" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBWS2_32 1
-_ACEOF
-
-  LIBS="-lws2_32 $LIBS"
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
-$as_echo_n "checking for getaddrinfo... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int testme(){ getaddrinfo; }
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
- ac_have_getaddrinfo=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test "x$ac_have_getaddrinfo" = x; then
-  old_CFLAGS="$CFLAGS"
-  if test "z$ac_cv_lib_ws2_32__head_libws2_32_a" = zyes; then
-    CFLAGS="-DWINVER=0x0501 $CFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo if WINVER is 0x0501" >&5
-$as_echo_n "checking for getaddrinfo if WINVER is 0x0501... " >&6; }
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-    int testme(){ getaddrinfo; }
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
-
-$as_echo "#define NEED_WINVER_XP 1" >>confdefs.h
- EXTRA_CPPFLAGS="-DWINVER=0x0501 $EXTRA_CPPFLAGS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  CFLAGS="$old_CFLAGS"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  fi
-fi
-
-for ac_func in gai_strerror
-do :
-  ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"
-if test "x$ac_cv_func_gai_strerror" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GAI_STRERROR 1
-_ACEOF
-
-fi
-done
-
-
-ac_fn_c_check_decl "$LINENO" "AI_ADDRCONFIG" "ac_cv_have_decl_AI_ADDRCONFIG" "$ac_includes_default"
-if test "x$ac_cv_have_decl_AI_ADDRCONFIG" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_AI_ADDRCONFIG $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "AI_ALL" "ac_cv_have_decl_AI_ALL" "$ac_includes_default"
-if test "x$ac_cv_have_decl_AI_ALL" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_AI_ALL $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "AI_NUMERICSERV" "ac_cv_have_decl_AI_NUMERICSERV" "$ac_includes_default"
-if test "x$ac_cv_have_decl_AI_NUMERICSERV" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_AI_NUMERICSERV $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "AI_V4MAPPED" "ac_cv_have_decl_AI_V4MAPPED" "$ac_includes_default"
-if test "x$ac_cv_have_decl_AI_V4MAPPED" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_AI_V4MAPPED $ac_have_decl
-_ACEOF
-
-
-ac_fn_c_check_decl "$LINENO" "IPV6_V6ONLY" "ac_cv_have_decl_IPV6_V6ONLY" "$ac_includes_default"
-if test "x$ac_cv_have_decl_IPV6_V6ONLY" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_IPV6_V6ONLY $ac_have_decl
-_ACEOF
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfile in sys/sendfile.h" >&5
-$as_echo_n "checking for sendfile in sys/sendfile.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/sendfile.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "sendfile" >/dev/null 2>&1; then :
-
-$as_echo "#define HAVE_LINUX_SENDFILE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f conftest*
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sendfile in sys/socket.h" >&5
-$as_echo_n "checking for sendfile in sys/socket.h... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/socket.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "sendfile" >/dev/null 2>&1; then :
-
-$as_echo "#define HAVE_BSD_SENDFILE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f conftest*
-
-
-for ac_func in gethostent
-do :
-  ac_fn_c_check_func "$LINENO" "gethostent" "ac_cv_func_gethostent"
-if test "x$ac_cv_func_gethostent" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETHOSTENT 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in accept4
-do :
-  ac_fn_c_check_func "$LINENO" "accept4" "ac_cv_func_accept4"
-if test "x$ac_cv_func_accept4" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_ACCEPT4 1
-_ACEOF
-
-fi
-done
-
-
-case "$host" in
-*-mingw32)
-	EXTRA_SRCS="cbits/initWinSock.c, cbits/winSockErr.c, cbits/asyncAccept.c"
-	EXTRA_LIBS=ws2_32
-	CALLCONV=stdcall ;;
-*-solaris2*)
-	EXTRA_SRCS="cbits/ancilData.c"
-	EXTRA_LIBS="nsl, socket"
-	CALLCONV=ccall ;;
-*)
-	EXTRA_SRCS="cbits/ancilData.c"
-	EXTRA_LIBS=
-	CALLCONV=ccall ;;
-esac
-
-
-
-
-
-ac_config_files="$ac_config_files network.buildinfo"
-
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, we kill variables containing newlines.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(
-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
-      *) { eval $ac_var=; unset $ac_var;} ;;
-      esac ;;
-    esac
-  done
-
-  (set) 2>&1 |
-    case $as_nl`(ac_space=' '; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \.
-      sed -n \
-	"s/'/'\\\\''/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;; #(
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-) |
-  sed '
-     /^ac_cv_env_/b end
-     t clear
-     :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     :end' >>confcache
-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
-  if test -w "$cache_file"; then
-    if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
-      if test ! -f "$cache_file" || test -h "$cache_file"; then
-	cat confcache >"$cache_file"
-      else
-        case $cache_file in #(
-        */* | ?:*)
-	  mv -f confcache "$cache_file"$$ &&
-	  mv -f "$cache_file"$$ "$cache_file" ;; #(
-        *)
-	  mv -f confcache "$cache_file" ;;
-	esac
-      fi
-    fi
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-DEFS=-DHAVE_CONFIG_H
-
-ac_libobjs=
-ac_ltlibobjs=
-U=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
-  # 1. Remove the extension, and $U if already installed.
-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
-  #    will be set to the directory where LIBOBJS objects are built.
-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-
-: "${CONFIG_STATUS=./config.status}"
-ac_write_fail=0
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
-as_write_fail=0
-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-ac_cs_recheck=false
-ac_cs_silent=false
-
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='	';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
-  test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## ----------------------------------- ##
-## Main body of $CONFIG_STATUS script. ##
-## ----------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# Save the log message, to keep $0 and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.
-ac_log="
-This file was extended by Haskell network package $as_me 2.3.0.14, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-on `(hostname || uname -n) 2>/dev/null | sed 1q`
-"
-
-_ACEOF
-
-case $ac_config_files in *"
-"*) set x $ac_config_files; shift; ac_config_files=$*;;
-esac
-
-case $ac_config_headers in *"
-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
-esac
-
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-# Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
-from templates according to the current configuration.  Unless the files
-and actions are specified as TAGs, all are instantiated by default.
-
-Usage: $0 [OPTION]... [TAG]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number and configuration settings, then exit
-      --config     print configuration, then exit
-  -q, --quiet, --silent
-                   do not print progress messages
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-      --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-      --header=FILE[:TEMPLATE]
-                   instantiate the configuration header FILE
-
-Configuration files:
-$config_files
-
-Configuration headers:
-$config_headers
-
-Report bugs to <libraries@haskell.org>."
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
-ac_cs_version="\\
-Haskell network package config.status 2.3.0.14
-configured by $0, generated by GNU Autoconf 2.69,
-  with options \\"\$ac_cs_config\\"
-
-Copyright (C) 2012 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-
-ac_pwd='$ac_pwd'
-srcdir='$srcdir'
-test -n "\$AWK" || AWK=awk
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# The default lists apply if the user does not specify any file.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=?*)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
-    ac_shift=:
-    ;;
-  --*=)
-    ac_option=`expr "X$1" : 'X\([^=]*\)='`
-    ac_optarg=
-    ac_shift=:
-    ;;
-  *)
-    ac_option=$1
-    ac_optarg=$2
-    ac_shift=shift
-    ;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
-  --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
-  --debug | --debu | --deb | --de | --d | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    '') as_fn_error $? "missing file argument" ;;
-    esac
-    as_fn_append CONFIG_FILES " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
-    ac_need_defaults=false;;
-  --he | --h)
-    # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
-  --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
-
-  *) as_fn_append ac_config_targets " $1"
-     ac_need_defaults=false ;;
-
-  esac
-  shift
-done
-
-ac_configure_extra_args=
-
-if $ac_cs_silent; then
-  exec 6>/dev/null
-  ac_configure_extra_args="$ac_configure_extra_args --silent"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-if \$ac_cs_recheck; then
-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-  shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
-  CONFIG_SHELL='$SHELL'
-  export CONFIG_SHELL
-  exec "\$@"
-fi
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-  $as_echo "$ac_log"
-} >&5
-
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-
-# Handling of arguments.
-for ac_config_target in $ac_config_targets
-do
-  case $ac_config_target in
-    "include/HsNetworkConfig.h") CONFIG_HEADERS="$CONFIG_HEADERS include/HsNetworkConfig.h" ;;
-    "network.buildinfo") CONFIG_FILES="$CONFIG_FILES network.buildinfo" ;;
-
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
-  esac
-done
-
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
-fi
-
-# Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason against having it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Hook for its removal unless debugging.
-# Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
-$debug ||
-{
-  tmp= ac_tmp=
-  trap 'exit_status=$?
-  : "${ac_tmp:=$tmp}"
-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
-' 0
-  trap 'as_fn_exit 1' 1 2 13 15
-}
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -d "$tmp"
-}  ||
-{
-  tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
-ac_tmp=$tmp
-
-# Set up the scripts for CONFIG_FILES section.
-# No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
-if test -n "$CONFIG_FILES"; then
-
-
-ac_cr=`echo X | tr X '\015'`
-# On cygwin, bash can eat \r inside `` if the user requested igncr.
-# But we know of no other shell where ac_cr would be empty at this
-# point, so we can use a bashism as a fallback.
-if test "x$ac_cr" = x; then
-  eval ac_cr=\$\'\\r\'
-fi
-ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
-if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\\r'
-else
-  ac_cs_awk_cr=$ac_cr
-fi
-
-echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
-_ACEOF
-
-
-{
-  echo "cat >conf$$subs.awk <<_ACEOF" &&
-  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
-  echo "_ACEOF"
-} >conf$$subs.sh ||
-  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  . ./conf$$subs.sh ||
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-
-  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
-  if test $ac_delim_n = $ac_delim_num; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-rm -f conf$$subs.sh
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
-_ACEOF
-sed -n '
-h
-s/^/S["/; s/!.*/"]=/
-p
-g
-s/^[^!]*!//
-:repl
-t repl
-s/'"$ac_delim"'$//
-t delim
-:nl
-h
-s/\(.\{148\}\)..*/\1/
-t more1
-s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
-p
-n
-b repl
-:more1
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t nl
-:delim
-h
-s/\(.\{148\}\)..*/\1/
-t more2
-s/["\\]/\\&/g; s/^/"/; s/$/"/
-p
-b
-:more2
-s/["\\]/\\&/g; s/^/"/; s/$/"\\/
-p
-g
-s/.\{148\}//
-t delim
-' <conf$$subs.awk | sed '
-/^[^""]/{
-  N
-  s/\n//
-}
-' >>$CONFIG_STATUS || ac_write_fail=1
-rm -f conf$$subs.awk
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-_ACAWK
-cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
-  for (key in S) S_is_set[key] = 1
-  FS = ""
-
-}
-{
-  line = $ 0
-  nfields = split(line, field, "@")
-  substed = 0
-  len = length(field[1])
-  for (i = 2; i < nfields; i++) {
-    key = field[i]
-    keylen = length(key)
-    if (S_is_set[key]) {
-      value = S[key]
-      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
-      len += length(value) + length(field[++i])
-      substed = 1
-    } else
-      len += 1 + keylen
-  }
-
-  print line
-}
-
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
-  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
-else
-  cat
-fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
-  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
-_ACEOF
-
-# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
-# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
-h
-s///
-s/^/:/
-s/[	 ]*$/:/
-s/:\$(srcdir):/:/g
-s/:\${srcdir}:/:/g
-s/:@srcdir@:/:/g
-s/^:*//
-s/:*$//
-x
-s/\(=[	 ]*\).*/\1/
-G
-s/\n//
-s/^[^=]*=[	 ]*$//
-}'
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-fi # test -n "$CONFIG_FILES"
-
-# Set up the scripts for CONFIG_HEADERS section.
-# No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
-if test -n "$CONFIG_HEADERS"; then
-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
-BEGIN {
-_ACEOF
-
-# Transform confdefs.h into an awk script `defines.awk', embedded as
-# here-document in config.status, that substitutes the proper values into
-# config.h.in to produce config.h.
-
-# Create a delimiter string that does not exist in confdefs.h, to ease
-# handling of long lines.
-ac_delim='%!_!# '
-for ac_last_try in false false :; do
-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
-  if test -z "$ac_tt"; then
-    break
-  elif $ac_last_try; then
-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
-
-# For the awk script, D is an array of macro values keyed by name,
-# likewise P contains macro parameters if any.  Preserve backslash
-# newline sequences.
-
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-sed -n '
-s/.\{148\}/&'"$ac_delim"'/g
-t rset
-:rset
-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
-t def
-d
-:def
-s/\\$//
-t bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3"/p
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
-d
-:bsnl
-s/["\\]/\\&/g
-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
-D["\1"]=" \3\\\\\\n"\\/p
-t cont
-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
-t cont
-d
-:cont
-n
-s/.\{148\}/&'"$ac_delim"'/g
-t clear
-:clear
-s/\\$//
-t bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/"/p
-d
-:bsnlc
-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
-b cont
-' <confdefs.h | sed '
-s/'"$ac_delim"'/"\\\
-"/g' >>$CONFIG_STATUS || ac_write_fail=1
-
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  for (key in D) D_is_set[key] = 1
-  FS = ""
-}
-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
-  line = \$ 0
-  split(line, arg, " ")
-  if (arg[1] == "#") {
-    defundef = arg[2]
-    mac1 = arg[3]
-  } else {
-    defundef = substr(arg[1], 2)
-    mac1 = arg[2]
-  }
-  split(mac1, mac2, "(") #)
-  macro = mac2[1]
-  prefix = substr(line, 1, index(line, defundef) - 1)
-  if (D_is_set[macro]) {
-    # Preserve the white space surrounding the "#".
-    print prefix "define", macro P[macro] D[macro]
-    next
-  } else {
-    # Replace #undef with comments.  This is necessary, for example,
-    # in the case of _POSIX_SOURCE, which is predefined and required
-    # on some systems where configure will not decide to define it.
-    if (defundef == "undef") {
-      print "/*", prefix defundef, macro, "*/"
-      next
-    }
-  }
-}
-{ print }
-_ACAWK
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
-fi # test -n "$CONFIG_HEADERS"
-
-
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    "
-shift
-for ac_tag
-do
-  case $ac_tag in
-  :[FHLC]) ac_mode=$ac_tag; continue;;
-  esac
-  case $ac_mode$ac_tag in
-  :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
-  :[FH]-) ac_tag=-:-;;
-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
-  esac
-  ac_save_IFS=$IFS
-  IFS=:
-  set x $ac_tag
-  IFS=$ac_save_IFS
-  shift
-  ac_file=$1
-  shift
-
-  case $ac_mode in
-  :L) ac_source=$1;;
-  :[FH])
-    ac_file_inputs=
-    for ac_f
-    do
-      case $ac_f in
-      -) ac_f="$ac_tmp/stdin";;
-      *) # Look for the file first in the build tree, then in the source tree
-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
-	 # because $ac_f cannot contain `:'.
-	 test -f "$ac_f" ||
-	   case $ac_f in
-	   [\\/$]*) false;;
-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
-	   esac ||
-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
-      esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
-      as_fn_append ac_file_inputs " '$ac_f'"
-    done
-
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
-    # use $as_me), people would be surprised to read:
-    #    /* config.h.  Generated by config.status.  */
-    configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
-	`' by configure.'
-    if test x"$ac_file" != x-; then
-      configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
-    fi
-    # Neutralize special characters interpreted by sed in replacement strings.
-    case $configure_input in #(
-    *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
-       sed 's/[\\\\&|]/\\\\&/g'`;; #(
-    *) ac_sed_conf_input=$configure_input;;
-    esac
-
-    case $ac_tag in
-    *:-:* | *:-) cat >"$ac_tmp/stdin" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
-    esac
-    ;;
-  esac
-
-  ac_dir=`$as_dirname -- "$ac_file" ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  as_dir="$ac_dir"; as_fn_mkdir_p
-  ac_builddir=.
-
-case "$ac_dir" in
-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
-*)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
-  # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
-  case $ac_top_builddir_sub in
-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
-  esac ;;
-esac
-ac_abs_top_builddir=$ac_pwd
-ac_abs_builddir=$ac_pwd$ac_dir_suffix
-# for backward compatibility:
-ac_top_builddir=$ac_top_build_prefix
-
-case $srcdir in
-  .)  # We are building in place.
-    ac_srcdir=.
-    ac_top_srcdir=$ac_top_builddir_sub
-    ac_abs_top_srcdir=$ac_pwd ;;
-  [\\/]* | ?:[\\/]* )  # Absolute name.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir
-    ac_abs_top_srcdir=$srcdir ;;
-  *) # Relative name.
-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_build_prefix$srcdir
-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
-esac
-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
-
-
-  case $ac_mode in
-  :F)
-  #
-  # CONFIG_FILE
-  #
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-# If the template does not know about datarootdir, expand it.
-# FIXME: This hack should be removed a few years after 2.60.
-ac_datarootdir_hack=; ac_datarootdir_seen=
-ac_sed_dataroot='
-/datarootdir/ {
-  p
-  q
-}
-/@datadir@/p
-/@docdir@/p
-/@infodir@/p
-/@localedir@/p
-/@mandir@/p'
-case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
-*datarootdir*) ac_datarootdir_seen=yes;;
-*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-  ac_datarootdir_hack='
-  s&@datadir@&$datadir&g
-  s&@docdir@&$docdir&g
-  s&@infodir@&$infodir&g
-  s&@localedir@&$localedir&g
-  s&@mandir@&$mandir&g
-  s&\\\${datarootdir}&$datarootdir&g' ;;
-esac
-_ACEOF
-
-# Neutralize VPATH when `$srcdir' = `.'.
-# Shell code in configure.ac might set extrasub.
-# FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_sed_extra="$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s|@configure_input@|$ac_sed_conf_input|;t t
-s&@top_builddir@&$ac_top_builddir_sub&;t t
-s&@top_build_prefix@&$ac_top_build_prefix&;t t
-s&@srcdir@&$ac_srcdir&;t t
-s&@abs_srcdir@&$ac_abs_srcdir&;t t
-s&@top_srcdir@&$ac_top_srcdir&;t t
-s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
-s&@builddir@&$ac_builddir&;t t
-s&@abs_builddir@&$ac_abs_builddir&;t t
-s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
-$ac_datarootdir_hack
-"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
-  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-
-test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
-      "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined" >&2;}
-
-  rm -f "$ac_tmp/stdin"
-  case $ac_file in
-  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
-  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
-  esac \
-  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
- ;;
-  :H)
-  #
-  # CONFIG_HEADER
-  #
-  if test x"$ac_file" != x-; then
-    {
-      $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
-    } >"$ac_tmp/config.h" \
-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      rm -f "$ac_file"
-      mv "$ac_tmp/config.h" "$ac_file" \
-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
-    fi
-  else
-    $as_echo "/* $configure_input  */" \
-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error $? "could not create -" "$LINENO" 5
-  fi
- ;;
-
-
-  esac
-
-done # for ac_tag
-
-
-as_fn_exit 0
-_ACEOF
-ac_clean_files=$ac_clean_files_save
-
-test $ac_write_fail = 0 ||
-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  ac_config_status_args=
-  test "$silent" = yes &&
-    ac_config_status_args="$ac_config_status_args --quiet"
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || as_fn_exit 1
-fi
-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
diff --git a/standalone/android/tmp/network-2.4.1.2/configure.ac b/standalone/android/tmp/network-2.4.1.2/configure.ac
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/configure.ac
+++ /dev/null
@@ -1,184 +0,0 @@
-AC_INIT([Haskell network package], [2.3.0.14], [libraries@haskell.org], [network])
-
-ac_includes_default="$ac_includes_default
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_WINSOCK2_H
-# include <winsock2.h>
-#endif
-#ifdef HAVE_WS2TCPIP_H
-# include <ws2tcpip.h>
-// fix for MingW not defining IPV6_V6ONLY
-# define IPV6_V6ONLY 27
-#endif
-#ifdef HAVE_WSPIAPI_H
-# include <wspiapi.h>
-#endif"
-
-# Safety check: Ensure that we are in the correct source directory.
-AC_CONFIG_SRCDIR([include/HsNet.h])
-
-AC_CONFIG_HEADERS([include/HsNetworkConfig.h])
-
-AC_CANONICAL_HOST
-
-AC_ARG_WITH([cc],
-            [C compiler],
-            [CC=$withval])
-AC_PROG_CC()
-
-AC_C_CONST
-
-dnl ** check for specific header (.h) files that we are interested in
-AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h sys/types.h unistd.h winsock2.h ws2tcpip.h wspiapi.h])
-AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h netinet/tcp.h sys/socket.h sys/uio.h sys/un.h])
-
-AC_CHECK_FUNCS([readlink symlink])
-
-dnl ** check what fields struct msghdr contains
-AC_CHECK_MEMBERS([struct msghdr.msg_control, struct msghdr.msg_accrights], [], [], [#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#if HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif])
-
-dnl ** check if struct sockaddr contains sa_len
-AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif])
-
-dnl --------------------------------------------------
-dnl * test for in_addr_t
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for in_addr_t in netinet/in.h)
-AC_EGREP_HEADER(in_addr_t, netinet/in.h,
- [ AC_DEFINE([HAVE_IN_ADDR_T], [1], [Define to 1 if in_addr_t is available.]) AC_MSG_RESULT(yes) ],
- AC_MSG_RESULT(no))
-
-dnl --------------------------------------------------
-dnl * test for SO_PEERCRED and struct ucred
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for SO_PEERCRED and struct ucred in sys/socket.h)
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <sys/socket.h>
-#ifndef SO_PEERCRED
-# error no SO_PEERCRED
-#endif
-struct ucred u;]])],ac_cv_ucred=yes,ac_cv_ucred=no)
-if test "x$ac_cv_ucred" = xno; then
-    old_CFLAGS="$CFLAGS"
-    CFLAGS="-D_GNU_SOURCE $CFLAGS"
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
-#include <sys/socket.h>
-#ifndef SO_PEERCRED
-# error no SO_PEERCRED
-#endif
-struct ucred u;]])],ac_cv_ucred=yes,ac_cv_ucred=no)
-    if test "x$ac_cv_ucred" = xyes; then
-        EXTRA_CPPFLAGS=-D_GNU_SOURCE
-    fi
-else
-    old_CFLAGS="$CFLAGS"
-fi
-if test "x$ac_cv_ucred" = xno; then
-    CFLAGS="$old_CFLAGS"
-    AC_MSG_RESULT(no)
-else
-    AC_DEFINE([HAVE_STRUCT_UCRED], [1], [Define to 1 if you have both SO_PEERCRED and struct ucred.])
-    AC_MSG_RESULT(yes)
-fi
-
-dnl --------------------------------------------------
-dnl * check for Windows networking libraries
-dnl --------------------------------------------------
-AC_CHECK_LIB(ws2_32, _head_libws2_32_a)
-
-dnl --------------------------------------------------
-dnl * test for getaddrinfo as proxy for IPv6 support
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for getaddrinfo)
-dnl Can't use AC_CHECK_FUNC here, because it doesn't do the right
-dnl thing on Windows.
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$ac_includes_default
-int testme(){ getaddrinfo; }]])],[AC_DEFINE([HAVE_GETADDRINFO], [1], [Define to 1 if you have the `getaddrinfo' function.]) ac_have_getaddrinfo=yes; AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
-
-dnl Under mingw, we may need to set WINVER to 0x0501 to expose getaddrinfo.
-if test "x$ac_have_getaddrinfo" = x; then
-  old_CFLAGS="$CFLAGS"
-  if test "z$ac_cv_lib_ws2_32__head_libws2_32_a" = zyes; then
-    CFLAGS="-DWINVER=0x0501 $CFLAGS"
-    AC_MSG_CHECKING(for getaddrinfo if WINVER is 0x0501)
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$ac_includes_default
-    int testme(){ getaddrinfo; }]])],[AC_DEFINE([HAVE_GETADDRINFO], [1], [Define to 1 if you have the `getaddrinfo' function.]) AC_DEFINE([NEED_WINVER_XP], [1], [Define to 1 if the `getaddrinfo' function needs WINVER set.]) EXTRA_CPPFLAGS="-DWINVER=0x0501 $EXTRA_CPPFLAGS"; AC_MSG_RESULT(yes)],[CFLAGS="$old_CFLAGS"; AC_MSG_RESULT(no)])
-  fi
-fi
-
-dnl Missing under mingw, sigh.
-AC_CHECK_FUNCS(gai_strerror)
-
-dnl -------------------------------------------------------
-dnl * test for AI_* flags that not all implementations have
-dnl -------------------------------------------------------
-AC_CHECK_DECLS([AI_ADDRCONFIG, AI_ALL, AI_NUMERICSERV, AI_V4MAPPED])
-
-dnl -------------------------------------------------------
-dnl * test for IPV6_V6ONLY flags that not all implementations have
-dnl -------------------------------------------------------
-AC_CHECK_DECLS([IPV6_V6ONLY])
-
-dnl --------------------------------------------------
-dnl * test for Linux sendfile(2)
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for sendfile in sys/sendfile.h)
-AC_EGREP_HEADER(sendfile, sys/sendfile.h,
- [ AC_DEFINE([HAVE_LINUX_SENDFILE], [1], [Define to 1 if you have a Linux sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
- AC_MSG_RESULT(no))
-
-dnl --------------------------------------------------
-dnl * test for BSD sendfile(2)
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for sendfile in sys/socket.h)
-AC_EGREP_HEADER(sendfile, sys/socket.h,
- [ AC_DEFINE([HAVE_BSD_SENDFILE], [1], [Define to 1 if you have a BSDish sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
- AC_MSG_RESULT(no))
-
-AC_CHECK_FUNCS(gethostent)
-
-AC_CHECK_FUNCS(accept4)
-
-case "$host" in
-*-mingw32)
-	EXTRA_SRCS="cbits/initWinSock.c, cbits/winSockErr.c, cbits/asyncAccept.c"
-	EXTRA_LIBS=ws2_32
-	CALLCONV=stdcall ;;
-*-solaris2*)
-	EXTRA_SRCS="cbits/ancilData.c"
-	EXTRA_LIBS="nsl, socket"
-	CALLCONV=ccall ;;
-*)
-	EXTRA_SRCS="cbits/ancilData.c"
-	EXTRA_LIBS=
-	CALLCONV=ccall ;;
-esac
-AC_SUBST([CALLCONV])
-AC_SUBST([EXTRA_CPPFLAGS])
-AC_SUBST([EXTRA_LIBS])
-AC_SUBST([EXTRA_SRCS])
-
-AC_CONFIG_FILES([network.buildinfo])
-
-AC_OUTPUT
diff --git a/standalone/android/tmp/network-2.4.1.2/examples/EchoClient.hs b/standalone/android/tmp/network-2.4.1.2/examples/EchoClient.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/examples/EchoClient.hs
+++ /dev/null
@@ -1,18 +0,0 @@
--- Echo client program
-module Main where
-
-import Network.Socket hiding (recv)
-import Network.Socket.ByteString (recv, sendAll)
-import qualified Data.ByteString.Char8 as C
-
-main :: IO ()
-main = withSocketsDo $
-    do addrinfos <- getAddrInfo Nothing (Just "") (Just "3000")
-       let serveraddr = head addrinfos
-       sock <- socket (addrFamily serveraddr) Stream defaultProtocol
-       connect sock (addrAddress serveraddr)
-       sendAll sock $ C.pack "Hello, world!"
-       msg <- recv sock 1024
-       sClose sock
-       putStr "Received "
-       C.putStrLn msg
diff --git a/standalone/android/tmp/network-2.4.1.2/examples/EchoServer.hs b/standalone/android/tmp/network-2.4.1.2/examples/EchoServer.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/examples/EchoServer.hs
+++ /dev/null
@@ -1,27 +0,0 @@
--- Echo server program
-module Main where
-
-import Control.Monad (unless)
-import Network.Socket hiding (recv)
-import qualified Data.ByteString as S
-import Network.Socket.ByteString (recv, sendAll)
-
-main :: IO ()
-main = withSocketsDo $
-    do addrinfos <- getAddrInfo
-                    (Just (defaultHints {addrFlags = [AI_PASSIVE]}))
-                    Nothing (Just "3000")
-       let serveraddr = head addrinfos
-       sock <- socket (addrFamily serveraddr) Stream defaultProtocol
-       bindSocket sock (addrAddress serveraddr)
-       listen sock 1
-       (conn, _) <- accept sock
-       talk conn
-       sClose conn
-       sClose sock
-
-    where
-      talk :: Socket -> IO ()
-      talk conn =
-          do msg <- recv conn 1024
-             unless (S.null msg) $ sendAll conn msg >> talk conn
diff --git a/standalone/android/tmp/network-2.4.1.2/include/HsNet.h b/standalone/android/tmp/network-2.4.1.2/include/HsNet.h
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/include/HsNet.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/* -----------------------------------------------------------------------------
- *
- * Definitions for package `net' which are visible in Haskell land.
- *
- * ---------------------------------------------------------------------------*/
-
-#ifndef HSNET_H
-#define HSNET_H
-
-#include "HsNetworkConfig.h"
-
-#ifdef NEED_WINVER
-# define WINVER 0x0501
-#endif
-
-/* ultra-evil... */
-#undef PACKAGE_BUGREPORT
-#undef PACKAGE_NAME
-#undef PACKAGE_STRING
-#undef PACKAGE_TARNAME
-#undef PACKAGE_VERSION
-
-#ifndef INLINE
-# if defined(_MSC_VER)
-#  define INLINE extern __inline
-# elif defined(__GNUC__)
-#  define INLINE extern inline
-# else
-#  define INLINE inline
-# endif
-#endif
-
-#ifdef HAVE_GETADDRINFO
-# define IPV6_SOCKET_SUPPORT 1
-#else
-# undef IPV6_SOCKET_SUPPORT
-#endif
-
-#if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)
-#include <winsock2.h>
-# ifdef HAVE_WS2TCPIP_H
-#  include <ws2tcpip.h>
-// fix for MingW not defining IPV6_V6ONLY
-#  define IPV6_V6ONLY 27
-# endif
-# ifdef HAVE_WSPIAPI_H
-#  include <wspiapi.h>
-# endif
-
-extern void  shutdownWinSock();
-extern int   initWinSock ();
-extern const char* getWSErrorDescr(int err);
-extern void* newAcceptParams(int sock,
-			     int sz,
-			     void* sockaddr);
-extern int   acceptNewSock(void* d);
-extern int   acceptDoProc(void* param);
-
-#else
-
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-#ifdef HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-# include <netinet/tcp.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_SYS_UN_H
-# include <sys/un.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-#ifdef HAVE_BSD_SENDFILE
-#include <sys/uio.h>
-#endif
-#ifdef HAVE_LINUX_SENDFILE
-#if !defined(__USE_FILE_OFFSET64)
-#include <sys/sendfile.h>
-#endif
-#endif
-
-extern int
-sendFd(int sock, int outfd);
-
-extern int
-recvFd(int sock);
-
-#endif /* HAVE_WINSOCK2_H && !__CYGWIN */
-
-INLINE char *
-my_inet_ntoa(
-#if defined(HAVE_WINSOCK2_H)
-             u_long addr
-#elif defined(HAVE_IN_ADDR_T)
-             in_addr_t addr
-#elif defined(HAVE_INTTYPES_H)
-             u_int32_t addr
-#else
-             unsigned long addr
-#endif
-	    )
-{ 
-    struct in_addr a;
-    a.s_addr = addr;
-    return inet_ntoa(a);
-}
-
-#ifdef HAVE_GETADDRINFO
-INLINE int
-hsnet_getnameinfo(const struct sockaddr* a,socklen_t b, char* c,
-# if defined(HAVE_WINSOCK2_H) && !defined(__CYGWIN__)
-                  DWORD d, char* e, DWORD f, int g)
-# else
-                  socklen_t d, char* e, socklen_t f, int g)
-# endif
-{
-  return getnameinfo(a,b,c,d,e,f,g);
-}
-
-INLINE int
-hsnet_getaddrinfo(const char *hostname, const char *servname,
-		  const struct addrinfo *hints, struct addrinfo **res)
-{
-    return getaddrinfo(hostname, servname, hints, res);
-}
-
-INLINE void
-hsnet_freeaddrinfo(struct addrinfo *ai)
-{
-    freeaddrinfo(ai);
-}
-#endif
-
-#if defined(HAVE_WINSOCK2_H) && !defined(cygwin32_HOST_OS)
-# define WITH_WINSOCK  1
-#endif
-
-#if !defined(mingw32_HOST_OS) && !defined(_WIN32)
-# define DOMAIN_SOCKET_SUPPORT 1
-#endif
-
-#if !defined(CALLCONV)
-# if defined(WITH_WINSOCK)
-#  define CALLCONV stdcall
-# else
-#  define CALLCONV ccall
-# endif
-#endif
-
-#if !defined(IOV_MAX)
-# define IOV_MAX 1024
-#endif
-
-#endif /* HSNET_H */
diff --git a/standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h b/standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/* include/HsNetworkConfig.h.  Generated from HsNetworkConfig.h.in by configure.  */
-/* include/HsNetworkConfig.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if you have the `accept4' function. */
-/* #undef HAVE_ACCEPT4 */
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have a BSDish sendfile(2) implementation. */
-#define HAVE_BSD_SENDFILE 1
-
-/* Define to 1 if you have the declaration of `AI_ADDRCONFIG', and to 0 if you
-   don't. */
-#define HAVE_DECL_AI_ADDRCONFIG 1
-
-/* Define to 1 if you have the declaration of `AI_ALL', and to 0 if you don't.
-   */
-#define HAVE_DECL_AI_ALL 1
-
-/* Define to 1 if you have the declaration of `AI_NUMERICSERV', and to 0 if
-   you don't. */
-#define HAVE_DECL_AI_NUMERICSERV 1
-
-/* Define to 1 if you have the declaration of `AI_V4MAPPED', and to 0 if you
-   don't. */
-#define HAVE_DECL_AI_V4MAPPED 1
-
-/* Define to 1 if you have the declaration of `IPV6_V6ONLY', and to 0 if you
-   don't. */
-#define HAVE_DECL_IPV6_V6ONLY 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the `gai_strerror' function. */
-#define HAVE_GAI_STRERROR 1
-
-/* Define to 1 if you have the `getaddrinfo' function. */
-#define HAVE_GETADDRINFO 1
-
-/* Define to 1 if you have the `gethostent' function. */
-#define HAVE_GETHOSTENT 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if in_addr_t is available. */
-#define HAVE_IN_ADDR_T 1
-
-/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
-/* #undef HAVE_LIBWS2_32 */
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have a Linux sendfile(2) implementation. */
-/* #undef HAVE_LINUX_SENDFILE */
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#define HAVE_NETDB_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#define HAVE_NETINET_TCP_H 1
-
-/* Define to 1 if you have the `readlink' function. */
-#define HAVE_READLINK 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if `msg_accrights' is a member of `struct msghdr'. */
-/* #undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS */
-
-/* Define to 1 if `msg_control' is a member of `struct msghdr'. */
-#define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
-
-/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
-#define HAVE_STRUCT_SOCKADDR_SA_LEN 1
-
-/* Define to 1 if you have both SO_PEERCRED and struct ucred. */
-/* #undef HAVE_STRUCT_UCRED */
-
-/* Define to 1 if you have the `symlink' function. */
-#define HAVE_SYMLINK 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#define HAVE_SYS_UIO_H 1
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#define HAVE_SYS_UN_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-/* #undef HAVE_WINSOCK2_H */
-
-/* Define to 1 if you have the <ws2tcpip.h> header file. */
-/* #undef HAVE_WS2TCPIP_H */
-
-/* Define to 1 if you have the <wspiapi.h> header file. */
-/* #undef HAVE_WSPIAPI_H */
-
-/* Define to 1 if the `getaddrinfo' function needs WINVER set. */
-/* #undef NEED_WINVER_XP */
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "libraries@haskell.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "Haskell network package"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "Haskell network package 2.3.0.14"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "network"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "2.3.0.14"
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
diff --git a/standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h.in b/standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h.in
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/include/HsNetworkConfig.h.in
+++ /dev/null
@@ -1,153 +0,0 @@
-/* include/HsNetworkConfig.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to 1 if you have the `accept4' function. */
-#undef HAVE_ACCEPT4
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define to 1 if you have a BSDish sendfile(2) implementation. */
-#undef HAVE_BSD_SENDFILE
-
-/* Define to 1 if you have the declaration of `AI_ADDRCONFIG', and to 0 if you
-   don't. */
-#undef HAVE_DECL_AI_ADDRCONFIG
-
-/* Define to 1 if you have the declaration of `AI_ALL', and to 0 if you don't.
-   */
-#undef HAVE_DECL_AI_ALL
-
-/* Define to 1 if you have the declaration of `AI_NUMERICSERV', and to 0 if
-   you don't. */
-#undef HAVE_DECL_AI_NUMERICSERV
-
-/* Define to 1 if you have the declaration of `AI_V4MAPPED', and to 0 if you
-   don't. */
-#undef HAVE_DECL_AI_V4MAPPED
-
-/* Define to 1 if you have the declaration of `IPV6_V6ONLY', and to 0 if you
-   don't. */
-#undef HAVE_DECL_IPV6_V6ONLY
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `gai_strerror' function. */
-#undef HAVE_GAI_STRERROR
-
-/* Define to 1 if you have the `getaddrinfo' function. */
-#undef HAVE_GETADDRINFO
-
-/* Define to 1 if you have the `gethostent' function. */
-#undef HAVE_GETHOSTENT
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if in_addr_t is available. */
-#undef HAVE_IN_ADDR_T
-
-/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
-#undef HAVE_LIBWS2_32
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have a Linux sendfile(2) implementation. */
-#undef HAVE_LINUX_SENDFILE
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#undef HAVE_NETDB_H
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#undef HAVE_NETINET_TCP_H
-
-/* Define to 1 if you have the `readlink' function. */
-#undef HAVE_READLINK
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if `msg_accrights' is a member of `struct msghdr'. */
-#undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS
-
-/* Define to 1 if `msg_control' is a member of `struct msghdr'. */
-#undef HAVE_STRUCT_MSGHDR_MSG_CONTROL
-
-/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
-#undef HAVE_STRUCT_SOCKADDR_SA_LEN
-
-/* Define to 1 if you have both SO_PEERCRED and struct ucred. */
-#undef HAVE_STRUCT_UCRED
-
-/* Define to 1 if you have the `symlink' function. */
-#undef HAVE_SYMLINK
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#undef HAVE_SYS_UIO_H
-
-/* Define to 1 if you have the <sys/un.h> header file. */
-#undef HAVE_SYS_UN_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the <winsock2.h> header file. */
-#undef HAVE_WINSOCK2_H
-
-/* Define to 1 if you have the <ws2tcpip.h> header file. */
-#undef HAVE_WS2TCPIP_H
-
-/* Define to 1 if you have the <wspiapi.h> header file. */
-#undef HAVE_WSPIAPI_H
-
-/* Define to 1 if the `getaddrinfo' function needs WINVER set. */
-#undef NEED_WINVER_XP
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
diff --git a/standalone/android/tmp/network-2.4.1.2/install-sh b/standalone/android/tmp/network-2.4.1.2/install-sh
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/install-sh
+++ /dev/null
@@ -1,295 +0,0 @@
-#!/bin/sh
-# install - install a program, script, or datafile
-
-scriptversion=2003-09-24.23
-
-# This originates from X11R5 (mit/util/scripts/install.sh), which was
-# later released in X11R6 (xc/config/util/install.sh) with the
-# following copyright and license.
-#
-# Copyright (C) 1994 X Consortium
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
-# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#
-# Except as contained in this notice, the name of the X Consortium shall not
-# be used in advertising or otherwise to promote the sale, use or other deal-
-# ings in this Software without prior written authorization from the X Consor-
-# tium.
-#
-#
-# FSF changes to this file are in the public domain.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=
-transform_arg=
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=
-chgrpcmd=
-stripcmd=
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=
-dst=
-dir_arg=
-
-usage="Usage: $0 [OPTION]... SRCFILE DSTFILE
-   or: $0 -d DIR1 DIR2...
-
-In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default.
-In the second, create the directory path DIR.
-
-Options:
--b=TRANSFORMBASENAME
--c         copy source (using $cpprog) instead of moving (using $mvprog).
--d         create directories instead of installing files.
--g GROUP   $chgrp installed files to GROUP.
--m MODE    $chmod installed files to MODE.
--o USER    $chown installed files to USER.
--s         strip installed files (using $stripprog).
--t=TRANSFORM
---help     display this help and exit.
---version  display version info and exit.
-
-Environment variables override the default commands:
-  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
-"
-
-while test -n "$1"; do
-  case $1 in
-    -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-        shift
-        continue;;
-
-    -c) instcmd=$cpprog
-        shift
-        continue;;
-
-    -d) dir_arg=true
-        shift
-        continue;;
-
-    -g) chgrpcmd="$chgrpprog $2"
-        shift
-        shift
-        continue;;
-
-    --help) echo "$usage"; exit 0;;
-
-    -m) chmodcmd="$chmodprog $2"
-        shift
-        shift
-        continue;;
-
-    -o) chowncmd="$chownprog $2"
-        shift
-        shift
-        continue;;
-
-    -s) stripcmd=$stripprog
-        shift
-        continue;;
-
-    -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-        shift
-        continue;;
-
-    --version) echo "$0 $scriptversion"; exit 0;;
-
-    *)  if test -z "$src"; then
-          src=$1
-        else
-          # this colon is to work around a 386BSD /bin/sh bug
-          :
-          dst=$1
-        fi
-        shift
-        continue;;
-  esac
-done
-
-if test -z "$src"; then
-  echo "$0: no input file specified." >&2
-  exit 1
-fi
-
-# Protect names starting with `-'.
-case $src in
-  -*) src=./$src ;;
-esac
-
-if test -n "$dir_arg"; then
-  dst=$src
-  src=
-
-  if test -d "$dst"; then
-    instcmd=:
-    chmodcmd=
-  else
-    instcmd=$mkdirprog
-  fi
-else
-  # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-  # might cause directories to be created, which would be especially bad
-  # if $src (and thus $dsttmp) contains '*'.
-  if test ! -f "$src" && test ! -d "$src"; then
-    echo "$0: $src does not exist." >&2
-    exit 1
-  fi
-
-  if test -z "$dst"; then
-    echo "$0: no destination specified." >&2
-    exit 1
-  fi
-
-  # Protect names starting with `-'.
-  case $dst in
-    -*) dst=./$dst ;;
-  esac
-
-  # If destination is a directory, append the input filename; won't work
-  # if double slashes aren't ignored.
-  if test -d "$dst"; then
-    dst=$dst/`basename "$src"`
-  fi
-fi
-
-# This sed command emulates the dirname command.
-dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-
-# Skip lots of stat calls in the usual case.
-if test ! -d "$dstdir"; then
-  defaultIFS='
-	'
-  IFS="${IFS-$defaultIFS}"
-
-  oIFS=$IFS
-  # Some sh's can't handle IFS=/ for some reason.
-  IFS='%'
-  set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-  IFS=$oIFS
-
-  pathcomp=
-
-  while test $# -ne 0 ; do
-    pathcomp=$pathcomp$1
-    shift
-    test -d "$pathcomp" || $mkdirprog "$pathcomp"
-    pathcomp=$pathcomp/
-  done
-fi
-
-if test -n "$dir_arg"; then
-  $doit $instcmd "$dst" \
-    && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
-    && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
-    && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
-    && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
-else
-  # If we're going to rename the final executable, determine the name now.
-  if test -z "$transformarg"; then
-    dstfile=`basename "$dst"`
-  else
-    dstfile=`basename "$dst" $transformbasename \
-             | sed $transformarg`$transformbasename
-  fi
-
-  # don't allow the sed command to completely eliminate the filename.
-  test -z "$dstfile" && dstfile=`basename "$dst"`
-
-  # Make a couple of temp file names in the proper directory.
-  dsttmp=$dstdir/_inst.$$_
-  rmtmp=$dstdir/_rm.$$_
-
-  # Trap to clean up those temp files at exit.
-  trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
-  trap '(exit $?); exit' 1 2 13 15
-
-  # Move or copy the file name to the temp name
-  $doit $instcmd "$src" "$dsttmp" &&
-
-  # and set any options; do chmod last to preserve setuid bits.
-  #
-  # If any of these fail, we abort the whole thing.  If we want to
-  # ignore errors from any of these, just make sure not to ignore
-  # errors from the above "$doit $instcmd $src $dsttmp" command.
-  #
-  { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
-    && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
-    && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
-    && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
-
-  # Now remove or move aside any old file at destination location.  We
-  # try this two ways since rm can't unlink itself on some systems and
-  # the destination file might be busy for other reasons.  In this case,
-  # the final cleanup might fail but the new file should still install
-  # successfully.
-  {
-    if test -f "$dstdir/$dstfile"; then
-      $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
-      || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
-      || {
-	  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
-	  (exit 1); exit
-      }
-    else
-      :
-    fi
-  } &&
-
-  # Now rename the file to the real destination.
-  $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
-fi &&
-
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
-  (exit 0); exit
-}
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "scriptversion="
-# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-end: "$"
-# End:
diff --git a/standalone/android/tmp/network-2.4.1.2/network.buildinfo.in b/standalone/android/tmp/network-2.4.1.2/network.buildinfo.in
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/network.buildinfo.in
+++ /dev/null
@@ -1,5 +0,0 @@
-ghc-options: -DCALLCONV=@CALLCONV@ @EXTRA_CPPFLAGS@
-ghc-prof-options: -DCALLCONV=@CALLCONV@ @EXTRA_CPPFLAGS@
-cc-options: -DCALLCONV=@CALLCONV@ @EXTRA_CPPFLAGS@
-c-sources: @EXTRA_SRCS@
-extra-libraries: @EXTRA_LIBS@
diff --git a/standalone/android/tmp/network-2.4.1.2/network.cabal b/standalone/android/tmp/network-2.4.1.2/network.cabal
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/network.cabal
+++ /dev/null
@@ -1,103 +0,0 @@
-name:           network
-version:        2.4.1.2
-license:        BSD3
-license-file:   LICENSE
-maintainer:     Johan Tibell <johan.tibell@gmail.com>
-synopsis:       Low-level networking interface
-description:    Low-level networking interface
-category:       Network
-build-type:     Configure
-cabal-version:  >=1.8
-extra-tmp-files:
-  config.log config.status autom4te.cache network.buildinfo
-  include/HsNetworkConfig.h
-extra-source-files:
-  README examples/*.hs tests/*.hs config.guess config.sub install-sh
-  configure.ac configure network.buildinfo.in
-  include/HsNetworkConfig.h.in include/HsNet.h
-  -- C sources only used on some systems
-  cbits/ancilData.c cbits/asyncAccept.c cbits/initWinSock.c
-  cbits/winSockErr.c
-homepage:       https://github.com/haskell/network
-bug-reports:    https://github.com/haskell/network/issues
-
-library
-  exposed-modules:
-    Network
-    Network.BSD
-    Network.Socket
-    Network.Socket.ByteString
-    Network.Socket.ByteString.Lazy
-    Network.Socket.Internal
-    Network.URI
-  other-modules:
-    Network.Socket.ByteString.Internal
-    Network.Socket.Types
-
-  if !os(windows)
-    other-modules:
-      Network.Socket.ByteString.IOVec
-      Network.Socket.ByteString.MsgHdr
-
-  build-depends:
-    base >= 3 && < 5,
-    bytestring,
-    parsec >= 3.0
-
-  if !os(windows)
-    build-depends:
-      unix >= 2
-
-  extensions:
-    CPP, DeriveDataTypeable, ForeignFunctionInterface, TypeSynonymInstances
-  include-dirs: include
-  includes: HsNet.h
-  install-includes: HsNet.h HsNetworkConfig.h
-  c-sources: cbits/HsNet.c
-  if impl(ghc >= 6.8)
-    ghc-options: -fwarn-tabs
-
-test-suite simple
-  hs-source-dirs: tests
-  main-is: Simple.hs
-  type: exitcode-stdio-1.0
-
-  build-depends:
-    base < 5,
-    bytestring,
-    HUnit,
-    network,
-    test-framework,
-    test-framework-hunit
-
-test-suite regression
-  hs-source-dirs: tests
-  main-is: Regression.hs
-  type: exitcode-stdio-1.0
-
-  build-depends:
-    base < 5,
-    bytestring,
-    HUnit,
-    network,
-    test-framework,
-    test-framework-hunit
-
-  ghc-options: -Wall
-
-test-suite uri
-  hs-source-dirs: tests
-  main-is: uri001.hs
-  type: exitcode-stdio-1.0
-
-  build-depends:
-    base < 5,
-    HUnit,
-    network,
-    test-framework,
-    test-framework-hunit,
-    test-framework-quickcheck2
-
-source-repository head
-  type:     git
-  location: git://github.com/haskell/network.git
diff --git a/standalone/android/tmp/network-2.4.1.2/tests/Regression.hs b/standalone/android/tmp/network-2.4.1.2/tests/Regression.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/tests/Regression.hs
+++ /dev/null
@@ -1,31 +0,0 @@
--- | Tests for things that didn't work in the past.
-module Main where
-
-import Network.Socket
-import Test.Framework (Test, defaultMain)
-import Test.Framework.Providers.HUnit (testCase)
-
-------------------------------------------------------------------------
--- Tests
-
--- Used to segfault on OS X 10.8.2 due to AI_NUMERICSERV being set
--- without a service being set. This is a OS X bug.
-testGetAddrInfo :: IO ()
-testGetAddrInfo = do
-    let hints = defaultHints { addrFlags = [AI_NUMERICSERV] }
-    _ <- getAddrInfo (Just hints) (Just "localhost") Nothing
-    return ()
-
-------------------------------------------------------------------------
--- List of all tests
-
-tests :: [Test]
-tests =
-    [ testCase "testGetAddrInfo" testGetAddrInfo
-    ]
-
-------------------------------------------------------------------------
--- Test harness
-
-main :: IO ()
-main = withSocketsDo $ defaultMain tests
diff --git a/standalone/android/tmp/network-2.4.1.2/tests/Simple.hs b/standalone/android/tmp/network-2.4.1.2/tests/Simple.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/tests/Simple.hs
+++ /dev/null
@@ -1,244 +0,0 @@
-{-# LANGUAGE ScopedTypeVariables #-}
-
-module Main where
-
-import Control.Concurrent (ThreadId, forkIO, myThreadId)
-import Control.Concurrent.MVar (newEmptyMVar, putMVar, takeMVar, readMVar)
-import qualified Control.Exception as E
-import qualified Data.ByteString as S
-import qualified Data.ByteString.Char8 as C
-import Network.Socket hiding (recv, recvFrom, send, sendTo)
-import Network.Socket.ByteString
-import Test.Framework (Test, defaultMain, testGroup)
-import Test.Framework.Providers.HUnit (testCase)
-import Test.HUnit (Assertion, (@=?))
-
-------------------------------------------------------------------------
-
-serverAddr :: String
-serverAddr = "127.0.0.1"
-
-testMsg :: S.ByteString
-testMsg = C.pack "This is a test message."
-
-------------------------------------------------------------------------
--- Tests
-
-------------------------------------------------------------------------
--- Sending and receiving
-
-testSend :: Assertion
-testSend = tcpTest client server
-  where
-    server sock = recv sock 1024 >>= (@=?) testMsg
-    client sock = send sock testMsg
-
-testSendAll :: Assertion
-testSendAll = tcpTest client server
-  where
-    server sock = recv sock 1024 >>= (@=?) testMsg
-    client sock = sendAll sock testMsg
-
-testSendTo :: Assertion
-testSendTo = udpTest client server
-  where
-    server sock = recv sock 1024 >>= (@=?) testMsg
-    client sock serverPort = do
-        addr <- inet_addr serverAddr
-        sendTo sock testMsg (SockAddrInet serverPort addr)
-
-testSendAllTo :: Assertion
-testSendAllTo = udpTest client server
-  where
-    server sock = recv sock 1024 >>= (@=?) testMsg
-    client sock serverPort = do
-        addr <- inet_addr serverAddr
-        sendAllTo sock testMsg (SockAddrInet serverPort addr)
-
-testSendMany :: Assertion
-testSendMany = tcpTest client server
-  where
-    server sock = recv sock 1024 >>= (@=?) (S.append seg1 seg2)
-    client sock = sendMany sock [seg1, seg2]
-
-    seg1 = C.pack "This is a "
-    seg2 = C.pack "test message."
-
-testSendManyTo :: Assertion
-testSendManyTo = udpTest client server
-  where
-    server sock = recv sock 1024 >>= (@=?) (S.append seg1 seg2)
-    client sock serverPort = do
-        addr <- inet_addr serverAddr
-        sendManyTo sock [seg1, seg2] (SockAddrInet serverPort addr)
-
-    seg1 = C.pack "This is a "
-    seg2 = C.pack "test message."
-
-testRecv :: Assertion
-testRecv = tcpTest client server
-  where
-    server sock = recv sock 1024 >>= (@=?) testMsg
-    client sock = send sock testMsg
-
-testOverFlowRecv :: Assertion
-testOverFlowRecv = tcpTest client server
-  where
-    server sock = do seg1 <- recv sock (S.length testMsg - 3)
-                     seg2 <- recv sock 1024
-                     let msg = S.append seg1 seg2
-                     testMsg @=? msg
-
-    client sock = send sock testMsg
-
-testRecvFrom :: Assertion
-testRecvFrom = tcpTest client server
-  where
-    server sock = do (msg, _) <- recvFrom sock 1024
-                     testMsg @=? msg
-
-    client sock = do
-        serverPort <- getPeerPort sock
-        addr <- inet_addr serverAddr
-        sendTo sock testMsg (SockAddrInet serverPort addr)
-
-testOverFlowRecvFrom :: Assertion
-testOverFlowRecvFrom = tcpTest client server
-  where
-    server sock = do (seg1, _) <- recvFrom sock (S.length testMsg - 3)
-                     (seg2, _) <- recvFrom sock 1024
-                     let msg = S.append seg1 seg2
-                     testMsg @=? msg
-
-    client sock = send sock testMsg
-
-------------------------------------------------------------------------
--- Other
-
-------------------------------------------------------------------------
--- List of all tests
-
-basicTests :: Test
-basicTests = testGroup "Basic socket operations"
-    [
-      -- Sending and receiving
-      testCase "testSend" testSend
-    , testCase "testSendAll" testSendAll
-    , testCase "testSendTo" testSendTo
-    , testCase "testSendAllTo" testSendAllTo
-    , testCase "testSendMany" testSendMany
-    , testCase "testSendManyTo" testSendManyTo
-    , testCase "testRecv" testRecv
-    , testCase "testOverFlowRecv" testOverFlowRecv
-    , testCase "testRecvFrom" testRecvFrom
-    , testCase "testOverFlowRecvFrom" testOverFlowRecvFrom
-    ]
-
-tests :: [Test]
-tests = [basicTests]
-
-------------------------------------------------------------------------
--- Test helpers
-
--- | Returns the 'PortNumber' of the peer. Will throw an 'error' if
--- used on a non-IP socket.
-getPeerPort :: Socket -> IO PortNumber
-getPeerPort sock = do
-    sockAddr <- getPeerName sock
-    case sockAddr of
-        (SockAddrInet port _) -> return port
-        (SockAddrInet6 port _ _ _) -> return port
-        _ -> error "getPeerPort: only works with IP sockets"
-
--- | Establish a connection between client and server and then run
--- 'clientAct' and 'serverAct', in different threads.  Both actions
--- get passed a connected 'Socket', used for communicating between
--- client and server.  'tcpTest' makes sure that the 'Socket' is
--- closed after the actions have run.
-tcpTest :: (Socket -> IO a) -> (Socket -> IO b) -> IO ()
-tcpTest clientAct serverAct = do
-    portVar <- newEmptyMVar
-    test (clientSetup portVar) clientAct (serverSetup portVar) server
-  where
-    clientSetup portVar = do
-        sock <- socket AF_INET Stream defaultProtocol
-        addr <- inet_addr serverAddr
-        serverPort <- readMVar portVar
-        connect sock $ SockAddrInet serverPort addr
-        return sock
-
-    serverSetup portVar = do
-        sock <- socket AF_INET Stream defaultProtocol
-        setSocketOption sock ReuseAddr 1
-        addr <- inet_addr serverAddr
-        bindSocket sock (SockAddrInet aNY_PORT addr)
-        listen sock 1
-        serverPort <- socketPort sock
-        putMVar portVar serverPort
-        return sock
-
-    server sock = do
-        (clientSock, _) <- accept sock
-        serverAct clientSock
-        sClose clientSock
-
--- | Create an unconnected 'Socket' for sending UDP and receiving
--- datagrams and then run 'clientAct' and 'serverAct'.
-udpTest :: (Socket -> PortNumber -> IO a) -> (Socket -> IO b) -> IO ()
-udpTest clientAct serverAct = do
-    portVar <- newEmptyMVar
-    test clientSetup (client portVar) (serverSetup portVar) serverAct
-  where
-    clientSetup = socket AF_INET Datagram defaultProtocol
-
-    client portVar sock = do
-        serverPort <- readMVar portVar
-        clientAct sock serverPort
-
-    serverSetup portVar = do
-        sock <- socket AF_INET Datagram defaultProtocol
-        setSocketOption sock ReuseAddr 1
-        addr <- inet_addr serverAddr
-        bindSocket sock (SockAddrInet aNY_PORT addr)
-        serverPort <- socketPort sock
-        putMVar portVar serverPort
-        return sock
-
--- | Run a client/server pair and synchronize them so that the server
--- is started before the client and the specified server action is
--- finished before the client closes the 'Socket'.
-test :: IO Socket -> (Socket -> IO b) -> IO Socket -> (Socket -> IO c) -> IO ()
-test clientSetup clientAct serverSetup serverAct = do
-    tid <- myThreadId
-    barrier <- newEmptyMVar
-    forkIO $ server barrier
-    client tid barrier
-  where
-    server barrier = do
-        E.bracket serverSetup sClose $ \sock -> do
-            serverReady
-            serverAct sock
-            putMVar barrier ()
-      where
-        -- | Signal to the client that it can proceed.
-        serverReady = putMVar barrier ()
-
-    client tid barrier = do
-        takeMVar barrier
-        -- Transfer exceptions to the main thread.
-        bracketWithReraise tid clientSetup sClose $ \res -> do
-            clientAct res
-            takeMVar barrier
-
--- | Like 'bracket' but catches and reraises the exception in another
--- thread, specified by the first argument.
-bracketWithReraise :: ThreadId -> IO a -> (a -> IO b) -> (a -> IO ()) -> IO ()
-bracketWithReraise tid before after thing =
-    E.bracket before after thing
-    `E.catch` \ (e :: E.SomeException) -> E.throwTo tid e
-
-------------------------------------------------------------------------
--- Test harness
-
-main :: IO ()
-main = withSocketsDo $ defaultMain tests
diff --git a/standalone/android/tmp/network-2.4.1.2/tests/uri001.hs b/standalone/android/tmp/network-2.4.1.2/tests/uri001.hs
deleted file mode 100644
--- a/standalone/android/tmp/network-2.4.1.2/tests/uri001.hs
+++ /dev/null
@@ -1,1431 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
---------------------------------------------------------------------------------
---  $Id: URITest.hs,v 1.8 2005/07/19 22:01:27 gklyne Exp $
---
---  Copyright (c) 2004, G. KLYNE.  All rights reserved.
---  See end of this file for licence information.
---------------------------------------------------------------------------------
--- |
---  Module      :  URITest
---  Copyright   :  (c) 2004, Graham Klyne
---  License     :  BSD-style (see end of this file)
---
---  Maintainer  :  Graham Klyne
---  Stability   :  provisional
---  Portability :  H98
---
---  This Module contains test cases for module URI.
---
---  To run this test without using Cabal to build the package
---  (2013-01-05, instructions tested on MacOS):
---  1. Install Haskell platform
---  2. cabal install test-framework
---  3. cabal install test-framework-hunit
---  4. ghc -XDeriveDataTypeable -D"MIN_VERSION_base(x,y,z)=1" ../Network/URI.hs uri001.hs
---  5. ./uri001
---
---  Previous build instructions:
---  Using GHC, I compile with this command line:
---  ghc --make -fglasgow-exts
---      -i..\;C:\Dev\Haskell\Lib\HUnit;C:\Dev\Haskell\Lib\Parsec
---      -o URITest.exe URITest -main-is URITest.main
---  The -i line may need changing for alternative installations.
---
---------------------------------------------------------------------------------
-
-module Main where
-
-import Network.URI
-    ( URI(..), URIAuth(..)
-    , nullURI
-    , parseURI, parseURIReference, parseRelativeReference, parseAbsoluteURI
-    , parseAbsoluteURI
-    , isURI, isURIReference, isRelativeReference, isAbsoluteURI
-    , uriIsAbsolute, uriIsRelative
-    , relativeTo, nonStrictRelativeTo
-    , relativeFrom
-    , uriToString
-    , isUnescapedInURIComponent
-    , isUnescapedInURI, escapeURIString, unEscapeString
-    , normalizeCase, normalizeEscape, normalizePathSegments
-    )
-
-import Test.HUnit
-
-import Data.Maybe (fromJust)
-import System.IO (openFile, IOMode(WriteMode), hClose)
-import qualified Test.Framework as TF
-import qualified Test.Framework.Providers.HUnit as TF
-import qualified Test.Framework.Providers.QuickCheck2 as TF
-
--- Test supplied string for valid URI reference syntax
---   isValidURIRef :: String -> Bool
--- Test supplied string for valid absolute URI reference syntax
---   isAbsoluteURIRef :: String -> Bool
--- Test supplied string for valid absolute URI syntax
---   isAbsoluteURI :: String -> Bool
-
-data URIType = AbsId    -- URI form (absolute, no fragment)
-             | AbsRf    -- Absolute URI reference
-             | RelRf    -- Relative URI reference
-             | InvRf    -- Invalid URI reference
-isValidT :: URIType -> Bool
-isValidT InvRf = False
-isValidT _     = True
-
-isAbsRfT :: URIType -> Bool
-isAbsRfT AbsId = True
-isAbsRfT AbsRf = True
-isAbsRfT _     = False
-
-isRelRfT :: URIType -> Bool
-isRelRfT RelRf = True
-isRelRfT _     = False
-
-isAbsIdT :: URIType -> Bool
-isAbsIdT AbsId = True
-isAbsIdT _     = False
-
-testEq :: (Eq a, Show a) => String -> a -> a -> Assertion
-testEq lab a1 a2 = assertEqual lab a1 a2
-
-testURIRef :: URIType -> String -> Assertion
-testURIRef t u = sequence_
-  [ testEq ("test_isURIReference:"++u) (isValidT t) (isURIReference u)
-  , testEq ("test_isRelativeReference:"++u)  (isRelRfT t) (isRelativeReference  u)
-  , testEq ("test_isAbsoluteURI:"++u)  (isAbsIdT t) (isAbsoluteURI  u)
-  ]
-
-testURIRefComponents :: String -> (Maybe URI) -> String -> Assertion
-testURIRefComponents _lab uv us =
-    testEq ("testURIRefComponents:"++us) uv (parseURIReference us)
-
-
-testURIRef001 = testURIRef AbsRf "http://example.org/aaa/bbb#ccc"
-testURIRef002 = testURIRef AbsId "mailto:local@domain.org"
-testURIRef003 = testURIRef AbsRf "mailto:local@domain.org#frag"
-testURIRef004 = testURIRef AbsRf "HTTP://EXAMPLE.ORG/AAA/BBB#CCC"
-testURIRef005 = testURIRef RelRf "//example.org/aaa/bbb#ccc"
-testURIRef006 = testURIRef RelRf "/aaa/bbb#ccc"
-testURIRef007 = testURIRef RelRf "bbb#ccc"
-testURIRef008 = testURIRef RelRf "#ccc"
-testURIRef009 = testURIRef RelRf "#"
-testURIRef010 = testURIRef RelRf "/"
--- escapes
-testURIRef011 = testURIRef AbsRf "http://example.org/aaa%2fbbb#ccc"
-testURIRef012 = testURIRef AbsRf "http://example.org/aaa%2Fbbb#ccc"
-testURIRef013 = testURIRef RelRf "%2F"
-testURIRef014 = testURIRef RelRf "aaa%2Fbbb"
--- ports
-testURIRef015 = testURIRef AbsRf "http://example.org:80/aaa/bbb#ccc"
-testURIRef016 = testURIRef AbsRf "http://example.org:/aaa/bbb#ccc"
-testURIRef017 = testURIRef AbsRf "http://example.org./aaa/bbb#ccc"
-testURIRef018 = testURIRef AbsRf "http://example.123./aaa/bbb#ccc"
--- bare authority
-testURIRef019 = testURIRef AbsId "http://example.org"
--- IPv6 literals (from RFC2732):
-testURIRef021 = testURIRef AbsId "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html"
-testURIRef022 = testURIRef AbsId "http://[1080:0:0:0:8:800:200C:417A]/index.html"
-testURIRef023 = testURIRef AbsId "http://[3ffe:2a00:100:7031::1]"
-testURIRef024 = testURIRef AbsId "http://[1080::8:800:200C:417A]/foo"
-testURIRef025 = testURIRef AbsId "http://[::192.9.5.5]/ipng"
-testURIRef026 = testURIRef AbsId "http://[::FFFF:129.144.52.38]:80/index.html"
-testURIRef027 = testURIRef AbsId "http://[2010:836B:4179::836B:4179]"
-testURIRef028 = testURIRef RelRf "//[2010:836B:4179::836B:4179]"
-testURIRef029 = testURIRef InvRf "[2010:836B:4179::836B:4179]"
--- RFC2396 test cases
-testURIRef031 = testURIRef RelRf "./aaa"
-testURIRef032 = testURIRef RelRf "../aaa"
-testURIRef033 = testURIRef AbsId "g:h"
-testURIRef034 = testURIRef RelRf "g"
-testURIRef035 = testURIRef RelRf "./g"
-testURIRef036 = testURIRef RelRf "g/"
-testURIRef037 = testURIRef RelRf "/g"
-testURIRef038 = testURIRef RelRf "//g"
-testURIRef039 = testURIRef RelRf "?y"
-testURIRef040 = testURIRef RelRf "g?y"
-testURIRef041 = testURIRef RelRf "#s"
-testURIRef042 = testURIRef RelRf "g#s"
-testURIRef043 = testURIRef RelRf "g?y#s"
-testURIRef044 = testURIRef RelRf ";x"
-testURIRef045 = testURIRef RelRf "g;x"
-testURIRef046 = testURIRef RelRf "g;x?y#s"
-testURIRef047 = testURIRef RelRf "."
-testURIRef048 = testURIRef RelRf "./"
-testURIRef049 = testURIRef RelRf ".."
-testURIRef050 = testURIRef RelRf "../"
-testURIRef051 = testURIRef RelRf "../g"
-testURIRef052 = testURIRef RelRf "../.."
-testURIRef053 = testURIRef RelRf "../../"
-testURIRef054 = testURIRef RelRf "../../g"
-testURIRef055 = testURIRef RelRf "../../../g"
-testURIRef056 = testURIRef RelRf "../../../../g"
-testURIRef057 = testURIRef RelRf "/./g"
-testURIRef058 = testURIRef RelRf "/../g"
-testURIRef059 = testURIRef RelRf "g."
-testURIRef060 = testURIRef RelRf ".g"
-testURIRef061 = testURIRef RelRf "g.."
-testURIRef062 = testURIRef RelRf "..g"
-testURIRef063 = testURIRef RelRf "./../g"
-testURIRef064 = testURIRef RelRf "./g/."
-testURIRef065 = testURIRef RelRf "g/./h"
-testURIRef066 = testURIRef RelRf "g/../h"
-testURIRef067 = testURIRef RelRf "g;x=1/./y"
-testURIRef068 = testURIRef RelRf "g;x=1/../y"
-testURIRef069 = testURIRef RelRf "g?y/./x"
-testURIRef070 = testURIRef RelRf "g?y/../x"
-testURIRef071 = testURIRef RelRf "g#s/./x"
-testURIRef072 = testURIRef RelRf "g#s/../x"
-testURIRef073 = testURIRef RelRf ""
-testURIRef074 = testURIRef RelRf "A'C"
-testURIRef075 = testURIRef RelRf "A$C"
-testURIRef076 = testURIRef RelRf "A@C"
-testURIRef077 = testURIRef RelRf "A,C"
--- Invalid
-testURIRef080 = testURIRef InvRf "http://foo.org:80Path/More"
-testURIRef081 = testURIRef InvRf "::"
-testURIRef082 = testURIRef InvRf " "
-testURIRef083 = testURIRef InvRf "%"
-testURIRef084 = testURIRef InvRf "A%Z"
-testURIRef085 = testURIRef InvRf "%ZZ"
-testURIRef086 = testURIRef InvRf "%AZ"
-testURIRef087 = testURIRef InvRf "A C"
--- testURIRef088 = -- (case removed)
--- testURIRef089 = -- (case removed)
-testURIRef090 = testURIRef InvRf "A\"C"
-testURIRef091 = testURIRef InvRf "A`C"
-testURIRef092 = testURIRef InvRf "A<C"
-testURIRef093 = testURIRef InvRf "A>C"
-testURIRef094 = testURIRef InvRf "A^C"
-testURIRef095 = testURIRef InvRf "A\\C"
-testURIRef096 = testURIRef InvRf "A{C"
-testURIRef097 = testURIRef InvRf "A|C"
-testURIRef098 = testURIRef InvRf "A}C"
--- From RFC2396:
--- rel_segment   = 1*( unreserved | escaped |
---                     ";" | "@" | "&" | "=" | "+" | "$" | "," )
--- unreserved    = alphanum | mark
--- mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
---                 "(" | ")"
--- Note RFC 2732 allows '[', ']' ONLY for reserved purpose of IPv6 literals,
--- or does it?
-testURIRef101 = testURIRef InvRf "A[C"
-testURIRef102 = testURIRef InvRf "A]C"
-testURIRef103 = testURIRef InvRf "A[**]C"
-testURIRef104 = testURIRef InvRf "http://[xyz]/"
-testURIRef105 = testURIRef InvRf "http://]/"
-testURIRef106 = testURIRef InvRf "http://example.org/[2010:836B:4179::836B:4179]"
-testURIRef107 = testURIRef InvRf "http://example.org/abc#[2010:836B:4179::836B:4179]"
-testURIRef108 = testURIRef InvRf "http://example.org/xxx/[qwerty]#a[b]"
--- Random other things that crop up
-testURIRef111 = testURIRef AbsRf "http://example/Andr&#567;"
-testURIRef112 = testURIRef AbsId "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/"
-testURIRef113 = testURIRef AbsId "http://46229EFFE16A9BD60B9F1BE88B2DB047ADDED785/demo.mp3"
-testURIRef114 = testURIRef InvRf "http://example.org/xxx/qwerty#a#b"
-testURIRef115 = testURIRef InvRf "dcp.tcp.pft://192.168.0.1:1002:3002?fec=1&crc=0"
-testURIRef116 = testURIRef AbsId "dcp.tcp.pft://192.168.0.1:1002?fec=1&crc=0"
-testURIRef117 = testURIRef AbsId "foo://"
--- URIs prefixed with IPv4 addresses
-testURIRef118 = testURIRef AbsId "http://192.168.0.1.example.com/"
-testURIRef119 = testURIRef AbsId "http://192.168.0.1.example.com./"
--- URI prefixed with 3 octets of an IPv4 address and a subdomain part with a leading digit.
-testURIRef120 = testURIRef AbsId "http://192.168.0.1test.example.com/"
--- URI with IPv(future) address
-testURIRef121 = testURIRef AbsId "http://[v9.123.abc;456.def]/"
-testURIRef122 = testEq "v.future authority" 
-                       (Just (URIAuth "" "[v9.123.abc;456.def]" ":42"))
-                       ((maybe Nothing uriAuthority) . parseURI $ "http://[v9.123.abc;456.def]:42/") 
--- URI with non-ASCII characters, fail with Network.HTTP escaping code (see below)
--- Currently not supported by Network.URI, but captured here for possible future reference
--- when IRI support may be added.
-testURIRef123 = testURIRef AbsId "http://example.com/test123/䡥汬漬⁗潲汤/index.html"
-testURIRef124 = testURIRef AbsId "http://example.com/test124/Москва/index.html"
-
--- From report by Alexander Ivanov:
--- should return " 䡥汬漬⁗潲汤", but returns "Hello, World" instead
--- print $ urlDecode $ urlEncode " 䡥汬漬⁗潲汤"
--- should return "Москва"
--- print $ urlDecode $ urlEncode "Москва"
-
-testURIRefSuite = TF.testGroup "Test URIrefs" testURIRefList
-testURIRefList =
-  [ TF.testCase "testURIRef001" testURIRef001
-  , TF.testCase "testURIRef002" testURIRef002
-  , TF.testCase "testURIRef003" testURIRef003
-  , TF.testCase "testURIRef004" testURIRef004
-  , TF.testCase "testURIRef005" testURIRef005
-  , TF.testCase "testURIRef006" testURIRef006
-  , TF.testCase "testURIRef007" testURIRef007
-  , TF.testCase "testURIRef008" testURIRef008
-  , TF.testCase "testURIRef009" testURIRef009
-  , TF.testCase "testURIRef010" testURIRef010
-    --
-  , TF.testCase "testURIRef011" testURIRef011
-  , TF.testCase "testURIRef012" testURIRef012
-  , TF.testCase "testURIRef013" testURIRef013
-  , TF.testCase "testURIRef014" testURIRef014
-  , TF.testCase "testURIRef015" testURIRef015
-  , TF.testCase "testURIRef016" testURIRef016
-  , TF.testCase "testURIRef017" testURIRef017
-  , TF.testCase "testURIRef018" testURIRef018
-    --
-  , TF.testCase "testURIRef019" testURIRef019
-    --
-  , TF.testCase "testURIRef021" testURIRef021
-  , TF.testCase "testURIRef022" testURIRef022
-  , TF.testCase "testURIRef023" testURIRef023
-  , TF.testCase "testURIRef024" testURIRef024
-  , TF.testCase "testURIRef025" testURIRef025
-  , TF.testCase "testURIRef026" testURIRef026
-  , TF.testCase "testURIRef027" testURIRef027
-  , TF.testCase "testURIRef028" testURIRef028
-  , TF.testCase "testURIRef029" testURIRef029
-    --
-  , TF.testCase "testURIRef031" testURIRef031
-  , TF.testCase "testURIRef032" testURIRef032
-  , TF.testCase "testURIRef033" testURIRef033
-  , TF.testCase "testURIRef034" testURIRef034
-  , TF.testCase "testURIRef035" testURIRef035
-  , TF.testCase "testURIRef036" testURIRef036
-  , TF.testCase "testURIRef037" testURIRef037
-  , TF.testCase "testURIRef038" testURIRef038
-  , TF.testCase "testURIRef039" testURIRef039
-  , TF.testCase "testURIRef040" testURIRef040
-  , TF.testCase "testURIRef041" testURIRef041
-  , TF.testCase "testURIRef042" testURIRef042
-  , TF.testCase "testURIRef043" testURIRef043
-  , TF.testCase "testURIRef044" testURIRef044
-  , TF.testCase "testURIRef045" testURIRef045
-  , TF.testCase "testURIRef046" testURIRef046
-  , TF.testCase "testURIRef047" testURIRef047
-  , TF.testCase "testURIRef048" testURIRef048
-  , TF.testCase "testURIRef049" testURIRef049
-  , TF.testCase "testURIRef050" testURIRef050
-  , TF.testCase "testURIRef051" testURIRef051
-  , TF.testCase "testURIRef052" testURIRef052
-  , TF.testCase "testURIRef053" testURIRef053
-  , TF.testCase "testURIRef054" testURIRef054
-  , TF.testCase "testURIRef055" testURIRef055
-  , TF.testCase "testURIRef056" testURIRef056
-  , TF.testCase "testURIRef057" testURIRef057
-  , TF.testCase "testURIRef058" testURIRef058
-  , TF.testCase "testURIRef059" testURIRef059
-  , TF.testCase "testURIRef060" testURIRef060
-  , TF.testCase "testURIRef061" testURIRef061
-  , TF.testCase "testURIRef062" testURIRef062
-  , TF.testCase "testURIRef063" testURIRef063
-  , TF.testCase "testURIRef064" testURIRef064
-  , TF.testCase "testURIRef065" testURIRef065
-  , TF.testCase "testURIRef066" testURIRef066
-  , TF.testCase "testURIRef067" testURIRef067
-  , TF.testCase "testURIRef068" testURIRef068
-  , TF.testCase "testURIRef069" testURIRef069
-  , TF.testCase "testURIRef070" testURIRef070
-  , TF.testCase "testURIRef071" testURIRef071
-  , TF.testCase "testURIRef072" testURIRef072
-  , TF.testCase "testURIRef073" testURIRef073
-  , TF.testCase "testURIRef074" testURIRef074
-  , TF.testCase "testURIRef075" testURIRef075
-  , TF.testCase "testURIRef076" testURIRef076
-  , TF.testCase "testURIRef077" testURIRef077
-    --
-  , TF.testCase "testURIRef080" testURIRef080
-  , TF.testCase "testURIRef081" testURIRef081
-  , TF.testCase "testURIRef082" testURIRef082
-  , TF.testCase "testURIRef083" testURIRef083
-  , TF.testCase "testURIRef084" testURIRef084
-  , TF.testCase "testURIRef085" testURIRef085
-  , TF.testCase "testURIRef086" testURIRef086
-  , TF.testCase "testURIRef087" testURIRef087
-    -- testURIRef088,
-    -- testURIRef089,
-  , TF.testCase "testURIRef090" testURIRef090
-  , TF.testCase "testURIRef091" testURIRef091
-  , TF.testCase "testURIRef092" testURIRef092
-  , TF.testCase "testURIRef093" testURIRef093
-  , TF.testCase "testURIRef094" testURIRef094
-  , TF.testCase "testURIRef095" testURIRef095
-  , TF.testCase "testURIRef096" testURIRef096
-  , TF.testCase "testURIRef097" testURIRef097
-  , TF.testCase "testURIRef098" testURIRef098
-    -- testURIRef099,
-    --
-  , TF.testCase "testURIRef101" testURIRef101
-  , TF.testCase "testURIRef102" testURIRef102
-  , TF.testCase "testURIRef103" testURIRef103
-  , TF.testCase "testURIRef104" testURIRef104
-  , TF.testCase "testURIRef105" testURIRef105
-  , TF.testCase "testURIRef106" testURIRef106
-  , TF.testCase "testURIRef107" testURIRef107
-  , TF.testCase "testURIRef108" testURIRef108
-    --
-  , TF.testCase "testURIRef111" testURIRef111
-  , TF.testCase "testURIRef112" testURIRef112
-  , TF.testCase "testURIRef113" testURIRef113
-  , TF.testCase "testURIRef114" testURIRef114
-  , TF.testCase "testURIRef115" testURIRef115
-  , TF.testCase "testURIRef116" testURIRef116
-  , TF.testCase "testURIRef117" testURIRef117
-    --
-  , TF.testCase "testURIRef118" testURIRef118
-  , TF.testCase "testURIRef119" testURIRef119
-  , TF.testCase "testURIRef120" testURIRef120
-    --
-  , TF.testCase "testURIRef121" testURIRef121
-  , TF.testCase "testURIRef122" testURIRef122
-    -- IRI test cases not currently supported
-  -- , TF.testCase "testURIRef123" testURIRef123
-  -- , TF.testCase "testURIRef124" testURIRef124
-  ]
-
--- test decomposition of URI into components
-testComponent01 = testURIRefComponents "testComponent01"
-        ( Just $ URI
-            { uriScheme    = "http:"
-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")
-            , uriPath      = "/aaa/bbb"
-            , uriQuery     = "?qqq"
-            , uriFragment  = "#fff"
-            } )
-        "http://user:pass@example.org:99/aaa/bbb?qqq#fff"
-testComponent02 = testURIRefComponents "testComponent02"
-        ( const Nothing
-        ( Just $ URI
-            { uriScheme    = "http:"
-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")
-            , uriPath      = "aaa/bbb"
-            , uriQuery     = ""
-            , uriFragment  = ""
-            } )
-        )
-        "http://user:pass@example.org:99aaa/bbb"
-testComponent03 = testURIRefComponents "testComponent03"
-        ( Just $ URI
-            { uriScheme    = "http:"
-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")
-            , uriPath      = ""
-            , uriQuery     = "?aaa/bbb"
-            , uriFragment  = ""
-            } )
-        "http://user:pass@example.org:99?aaa/bbb"
-testComponent04 = testURIRefComponents "testComponent03"
-        ( Just $ URI
-            { uriScheme    = "http:"
-            , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")
-            , uriPath      = ""
-            , uriQuery     = ""
-            , uriFragment  = "#aaa/bbb"
-            } )
-        "http://user:pass@example.org:99#aaa/bbb"
--- These test cases contributed by Robert Buck (mathworks.com)
-testComponent11 = testURIRefComponents "testComponent03"
-        ( Just $ URI
-            { uriScheme    = "about:"
-            , uriAuthority = Nothing
-            , uriPath      = ""
-            , uriQuery     = ""
-            , uriFragment  = ""
-            } )
-        "about:"
-testComponent12 = testURIRefComponents "testComponent03"
-        ( Just $ URI
-            { uriScheme    = "file:"
-            , uriAuthority = Just (URIAuth "" "windowsauth" "")
-            , uriPath      = "/d$"
-            , uriQuery     = ""
-            , uriFragment  = ""
-            } )
-        "file://windowsauth/d$"
-
-testComponentSuite = TF.testGroup "Test URIrefs" $
-  [ TF.testCase "testComponent01" testComponent01
-  , TF.testCase "testComponent02" testComponent02
-  , TF.testCase "testComponent03" testComponent03
-  , TF.testCase "testComponent04" testComponent04
-  , TF.testCase "testComponent11" testComponent11
-  , TF.testCase "testComponent12" testComponent12
-  ]
-
--- Get reference relative to given base
---   relativeRef :: String -> String -> String
---
--- Get absolute URI given base and relative reference
---   absoluteURI :: String -> String -> String
---
--- Test cases taken from: http://www.w3.org/2000/10/swap/uripath.py
--- (Thanks, Dan Connolly)
---
--- NOTE:  absoluteURI base (relativeRef base u) is always equivalent to u.
--- cf. http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html
-
-testRelSplit :: String -> String -> String -> String -> Assertion
-testRelSplit label base uabs urel =
-    testEq label urel (mkrel puabs pubas)
-    where
-        mkrel (Just u1) (Just u2) = show (u1 `relativeFrom` u2)
-        mkrel Nothing   _         = "Invalid URI: "++urel
-        mkrel _         Nothing   = "Invalid URI: "++uabs
-        puabs = parseURIReference uabs
-        pubas = parseURIReference base
-
-testRelJoin  :: String -> String -> String -> String -> Assertion
-testRelJoin label base urel uabs =
-    testEq label uabs (mkabs purel pubas)
-    where
-        mkabs (Just u1) (Just u2) = show (u1 `relativeTo` u2)
-        mkabs Nothing   _         = "Invalid URI: "++urel
-        mkabs _         Nothing   = "Invalid URI: "++uabs
-        purel = parseURIReference urel
-        pubas = parseURIReference base
-
-testRelative :: String -> String -> String -> String -> Assertion
-testRelative label base uabs urel = sequence_
-    [
-    (testRelSplit (label++"(rel)") base uabs urel),
-    (testRelJoin  (label++"(abs)") base urel uabs)
-    ]
-
-testRelative01 = testRelative "testRelative01"
-                    "foo:xyz" "bar:abc" "bar:abc"
-testRelative02 = testRelative "testRelative02"
-                    "http://example/x/y/z" "http://example/x/abc" "../abc"
-testRelative03 = testRelative "testRelative03"
-                    "http://example2/x/y/z" "http://example/x/abc" "//example/x/abc"
-                    -- "http://example2/x/y/z" "http://example/x/abc" "http://example/x/abc"
-testRelative04 = testRelative "testRelative04"
-                    "http://ex/x/y/z" "http://ex/x/r" "../r"
-testRelative05 = testRelative "testRelative05"
-                    "http://ex/x/y/z" "http://ex/r" "/r"
-                    -- "http://ex/x/y/z" "http://ex/r" "../../r"
-testRelative06 = testRelative "testRelative06"
-                    "http://ex/x/y/z" "http://ex/x/y/q/r" "q/r"
-testRelative07 = testRelative "testRelative07"
-                    "http://ex/x/y" "http://ex/x/q/r#s" "q/r#s"
-testRelative08 = testRelative "testRelative08"
-                    "http://ex/x/y" "http://ex/x/q/r#s/t" "q/r#s/t"
-testRelative09 = testRelative "testRelative09"
-                    "http://ex/x/y" "ftp://ex/x/q/r" "ftp://ex/x/q/r"
-testRelative10 = testRelative "testRelative10"
-                    -- "http://ex/x/y" "http://ex/x/y" "y"
-                    "http://ex/x/y" "http://ex/x/y" ""
-testRelative11 = testRelative "testRelative11"
-                    -- "http://ex/x/y/" "http://ex/x/y/" "./"
-                    "http://ex/x/y/" "http://ex/x/y/" ""
-testRelative12 = testRelative "testRelative12"
-                    -- "http://ex/x/y/pdq" "http://ex/x/y/pdq" "pdq"
-                    "http://ex/x/y/pdq" "http://ex/x/y/pdq" ""
-testRelative13 = testRelative "testRelative13"
-                    "http://ex/x/y/" "http://ex/x/y/z/" "z/"
-testRelative14 = testRelative "testRelative14"
-                    -- "file:/swap/test/animal.rdf" "file:/swap/test/animal.rdf#Animal" "animal.rdf#Animal"
-                    "file:/swap/test/animal.rdf" "file:/swap/test/animal.rdf#Animal" "#Animal"
-testRelative15 = testRelative "testRelative15"
-                    "file:/e/x/y/z" "file:/e/x/abc" "../abc"
-testRelative16 = testRelative "testRelative16"
-                    "file:/example2/x/y/z" "file:/example/x/abc" "/example/x/abc"
-testRelative17 = testRelative "testRelative17"
-                    "file:/ex/x/y/z" "file:/ex/x/r" "../r"
-testRelative18 = testRelative "testRelative18"
-                    "file:/ex/x/y/z" "file:/r" "/r"
-testRelative19 = testRelative "testRelative19"
-                    "file:/ex/x/y" "file:/ex/x/q/r" "q/r"
-testRelative20 = testRelative "testRelative20"
-                    "file:/ex/x/y" "file:/ex/x/q/r#s" "q/r#s"
-testRelative21 = testRelative "testRelative21"
-                    "file:/ex/x/y" "file:/ex/x/q/r#" "q/r#"
-testRelative22 = testRelative "testRelative22"
-                    "file:/ex/x/y" "file:/ex/x/q/r#s/t" "q/r#s/t"
-testRelative23 = testRelative "testRelative23"
-                    "file:/ex/x/y" "ftp://ex/x/q/r" "ftp://ex/x/q/r"
-testRelative24 = testRelative "testRelative24"
-                    -- "file:/ex/x/y" "file:/ex/x/y" "y"
-                    "file:/ex/x/y" "file:/ex/x/y" ""
-testRelative25 = testRelative "testRelative25"
-                    -- "file:/ex/x/y/" "file:/ex/x/y/" "./"
-                    "file:/ex/x/y/" "file:/ex/x/y/" ""
-testRelative26 = testRelative "testRelative26"
-                    -- "file:/ex/x/y/pdq" "file:/ex/x/y/pdq" "pdq"
-                    "file:/ex/x/y/pdq" "file:/ex/x/y/pdq" ""
-testRelative27 = testRelative "testRelative27"
-                    "file:/ex/x/y/" "file:/ex/x/y/z/" "z/"
-testRelative28 = testRelative "testRelative28"
-                    "file:/devel/WWW/2000/10/swap/test/reluri-1.n3"
-                    "file://meetings.example.com/cal#m1" "//meetings.example.com/cal#m1"
-                    -- "file:/devel/WWW/2000/10/swap/test/reluri-1.n3"
-                    -- "file://meetings.example.com/cal#m1" "file://meetings.example.com/cal#m1"
-testRelative29 = testRelative "testRelative29"
-                    "file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3"
-                    "file://meetings.example.com/cal#m1" "//meetings.example.com/cal#m1"
-                    -- "file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3"
-                    -- "file://meetings.example.com/cal#m1" "file://meetings.example.com/cal#m1"
-testRelative30 = testRelative "testRelative30"
-                    "file:/some/dir/foo" "file:/some/dir/#blort" "./#blort"
-testRelative31 = testRelative "testRelative31"
-                    "file:/some/dir/foo" "file:/some/dir/#" "./#"
-testRelative32 = testRelative "testRelative32"
-                    "http://ex/x/y" "http://ex/x/q:r" "./q:r"
-                    -- see RFC2396bis, section 5       ^^
-testRelative33 = testRelative "testRelative33"
-                    "http://ex/x/y" "http://ex/x/p=q:r" "./p=q:r"
-                    -- "http://ex/x/y" "http://ex/x/p=q:r" "p=q:r"
-testRelative34 = testRelative "testRelative34"
-                    "http://ex/x/y?pp/qq" "http://ex/x/y?pp/rr" "?pp/rr"
-testRelative35 = testRelative "testRelative35"
-                    "http://ex/x/y?pp/qq" "http://ex/x/y/z" "y/z"
-testRelative36 = testRelative "testRelative36"
-                    "mailto:local"
-                    "mailto:local/qual@domain.org#frag"
-                    "local/qual@domain.org#frag"
-testRelative37 = testRelative "testRelative37"
-                    "mailto:local/qual1@domain1.org"
-                    "mailto:local/more/qual2@domain2.org#frag"
-                    "more/qual2@domain2.org#frag"
-testRelative38 = testRelative "testRelative38"
-                    "http://ex/x/z?q" "http://ex/x/y?q" "y?q"
-testRelative39 = testRelative "testRelative39"
-                    "http://ex?p" "http://ex/x/y?q" "/x/y?q"
-testRelative40 = testRelative "testRelative40"
-                    "foo:a/b" "foo:a/c/d" "c/d"
-testRelative41 = testRelative "testRelative41"
-                    "foo:a/b" "foo:/c/d" "/c/d"
-testRelative42 = testRelative "testRelative42"
-                    "foo:a/b?c#d" "foo:a/b?c" ""
-testRelative43 = testRelative "testRelative42"
-                    "foo:a" "foo:b/c" "b/c"
-testRelative44 = testRelative "testRelative44"
-                    "foo:/a/y/z" "foo:/a/b/c" "../b/c"
-testRelative45 = testRelJoin "testRelative45"
-                    "foo:a" "./b/c" "foo:b/c"
-testRelative46 = testRelJoin "testRelative46"
-                    "foo:a" "/./b/c" "foo:/b/c"
-testRelative47 = testRelJoin "testRelative47"
-                    "foo://a//b/c" "../../d" "foo://a/d"
-testRelative48 = testRelJoin "testRelative48"
-                    "foo:a" "." "foo:"
-testRelative49 = testRelJoin "testRelative49"
-                    "foo:a" ".." "foo:"
-
--- add escape tests
-testRelative50 = testRelative "testRelative50"
-                    "http://example/x/y%2Fz" "http://example/x/abc" "abc"
-testRelative51 = testRelative "testRelative51"
-                    "http://example/a/x/y/z" "http://example/a/x%2Fabc" "../../x%2Fabc"
-testRelative52 = testRelative "testRelative52"
-                    "http://example/a/x/y%2Fz" "http://example/a/x%2Fabc" "../x%2Fabc"
-testRelative53 = testRelative "testRelative53"
-                    "http://example/x%2Fy/z" "http://example/x%2Fy/abc" "abc"
-testRelative54 = testRelative "testRelative54"
-                    "http://ex/x/y" "http://ex/x/q%3Ar" "q%3Ar"
-testRelative55 = testRelative "testRelative55"
-                    "http://example/x/y%2Fz" "http://example/x%2Fabc" "/x%2Fabc"
--- Apparently, TimBL prefers the following way to 41, 42 above
--- cf. http://lists.w3.org/Archives/Public/uri/2003Feb/0028.html
--- He also notes that there may be different relative fuctions
--- that satisfy the basic equivalence axiom:
--- cf. http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html
-testRelative56 = testRelative "testRelative56"
-                    "http://example/x/y/z" "http://example/x%2Fabc" "/x%2Fabc"
-testRelative57 = testRelative "testRelative57"
-                    "http://example/x/y%2Fz" "http://example/x%2Fabc" "/x%2Fabc"
-
--- Other oddball tests
-    -- Check segment normalization code:
-testRelative60 = testRelJoin "testRelative60"
-                    "ftp://example/x/y" "http://example/a/b/../../c" "http://example/c"
-testRelative61 = testRelJoin "testRelative61"
-                    "ftp://example/x/y" "http://example/a/b/c/../../" "http://example/a/"
-testRelative62 = testRelJoin "testRelative62"
-                    "ftp://example/x/y" "http://example/a/b/c/./" "http://example/a/b/c/"
-testRelative63 = testRelJoin "testRelative63"
-                    "ftp://example/x/y" "http://example/a/b/c/.././" "http://example/a/b/"
-testRelative64 = testRelJoin "testRelative64"
-                    "ftp://example/x/y" "http://example/a/b/c/d/../../../../e" "http://example/e"
-testRelative65 = testRelJoin "testRelative65"
-                    "ftp://example/x/y" "http://example/a/b/c/d/../.././../../e" "http://example/e"
-    -- Check handling of queries and fragments with non-relative paths
-testRelative70 = testRelative "testRelative70"
-                    "mailto:local1@domain1?query1" "mailto:local2@domain2"
-                    "local2@domain2"
-testRelative71 = testRelative "testRelative71"
-                    "mailto:local1@domain1" "mailto:local2@domain2?query2"
-                    "local2@domain2?query2"
-testRelative72 = testRelative "testRelative72"
-                    "mailto:local1@domain1?query1" "mailto:local2@domain2?query2"
-                    "local2@domain2?query2"
-testRelative73 = testRelative "testRelative73"
-                    "mailto:local@domain?query1" "mailto:local@domain?query2"
-                    "?query2"
-testRelative74 = testRelative "testRelative74"
-                    "mailto:?query1" "mailto:local@domain?query2"
-                    "local@domain?query2"
-testRelative75 = testRelative "testRelative75"
-                    "mailto:local@domain?query1" "mailto:local@domain?query2"
-                    "?query2"
-testRelative76 = testRelative "testRelative76"
-                    "foo:bar" "http://example/a/b?c/../d"  "http://example/a/b?c/../d"
-testRelative77 = testRelative "testRelative77"
-                    "foo:bar" "http://example/a/b#c/../d"  "http://example/a/b#c/../d"
-{- These (78-81) are some awkward test cases thrown up by a question on the URI list:
-     http://lists.w3.org/Archives/Public/uri/2005Jul/0013
-   Mote that RFC 3986 discards path segents after the final '/' only when merging two
-   paths - otherwise the final segment in the base URI is mnaintained.  This leads to
-   difficulty in constructinmg a reversible relativeTo/relativeFrom pair of functions.
--}
-testRelative78 = testRelative "testRelative78"
-                    "http://www.example.com/data/limit/.." "http://www.example.com/data/limit/test.xml"
-                    "test.xml"
-testRelative79 = testRelative "testRelative79"
-                    "file:/some/dir/foo" "file:/some/dir/#blort" "./#blort"
-testRelative80 = testRelative "testRelative80"
-                    "file:/some/dir/foo" "file:/some/dir/#" "./#"
-testRelative81 = testRelative "testRelative81"
-                    "file:/some/dir/.." "file:/some/dir/#blort" "./#blort"
-
--- testRelative  base abs rel
--- testRelSplit  base abs rel
--- testRelJoin   base rel abs
-testRelative91 = testRelSplit "testRelative91"
-                    "http://example.org/base/uri" "http:this"
-                    "this"
-testRelative92 = testRelJoin "testRelative92"
-                    "http://example.org/base/uri" "http:this"
-                    "http:this"
-testRelative93 = testRelJoin "testRelative93"
-                    "http:base" "http:this"
-                    "http:this"
-testRelative94 = testRelJoin "testRelative94"
-                    "f:/a" ".//g"
-                    "f://g"
-testRelative95 = testRelJoin "testRelative95"
-                    "f://example.org/base/a" "b/c//d/e"
-                    "f://example.org/base/b/c//d/e"
-testRelative96 = testRelJoin "testRelative96"
-                    "mid:m@example.ord/c@example.org" "m2@example.ord/c2@example.org"
-                    "mid:m@example.ord/m2@example.ord/c2@example.org"
-testRelative97 = testRelJoin "testRelative97"
-                    "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/" "mini1.xml"
-                    "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/mini1.xml"
-testRelative98 = testRelative "testRelative98"
-                    "foo:a/y/z" "foo:a/b/c" "../b/c"
-testRelative99 = testRelJoin "testRelative99"
-                    "f:/a/" "..//g"
-                    "f://g"
-
-
-testRelativeSuite = TF.testGroup "Test Relative URIs" testRelativeList
-testRelativeList  =
-  [ TF.testCase "testRelative01" testRelative01
-  , TF.testCase "testRelative02" testRelative02
-  , TF.testCase "testRelative03" testRelative03
-  , TF.testCase "testRelative04" testRelative04
-  , TF.testCase "testRelative05" testRelative05
-  , TF.testCase "testRelative06" testRelative06
-  , TF.testCase "testRelative07" testRelative07
-  , TF.testCase "testRelative08" testRelative08
-  , TF.testCase "testRelative09" testRelative09
-  , TF.testCase "testRelative10" testRelative10
-  , TF.testCase "testRelative11" testRelative11
-  , TF.testCase "testRelative12" testRelative12
-  , TF.testCase "testRelative13" testRelative13
-  , TF.testCase "testRelative14" testRelative14
-  , TF.testCase "testRelative15" testRelative15
-  , TF.testCase "testRelative16" testRelative16
-  , TF.testCase "testRelative17" testRelative17
-  , TF.testCase "testRelative18" testRelative18
-  , TF.testCase "testRelative19" testRelative19
-  , TF.testCase "testRelative20" testRelative20
-  , TF.testCase "testRelative21" testRelative21
-  , TF.testCase "testRelative22" testRelative22
-  , TF.testCase "testRelative23" testRelative23
-  , TF.testCase "testRelative24" testRelative24
-  , TF.testCase "testRelative25" testRelative25
-  , TF.testCase "testRelative26" testRelative26
-  , TF.testCase "testRelative27" testRelative27
-  , TF.testCase "testRelative28" testRelative28
-  , TF.testCase "testRelative29" testRelative29
-  , TF.testCase "testRelative30" testRelative30
-  , TF.testCase "testRelative31" testRelative31
-  , TF.testCase "testRelative32" testRelative32
-  , TF.testCase "testRelative33" testRelative33
-  , TF.testCase "testRelative34" testRelative34
-  , TF.testCase "testRelative35" testRelative35
-  , TF.testCase "testRelative36" testRelative36
-  , TF.testCase "testRelative37" testRelative37
-  , TF.testCase "testRelative38" testRelative38
-  , TF.testCase "testRelative39" testRelative39
-  , TF.testCase "testRelative40" testRelative40
-  , TF.testCase "testRelative41" testRelative41
-  , TF.testCase "testRelative42" testRelative42
-  , TF.testCase "testRelative43" testRelative43
-  , TF.testCase "testRelative44" testRelative44
-  , TF.testCase "testRelative45" testRelative45
-  , TF.testCase "testRelative46" testRelative46
-  , TF.testCase "testRelative47" testRelative47
-  , TF.testCase "testRelative48" testRelative48
-  , TF.testCase "testRelative49" testRelative49
-    --
-  , TF.testCase "testRelative50" testRelative50
-  , TF.testCase "testRelative51" testRelative51
-  , TF.testCase "testRelative52" testRelative52
-  , TF.testCase "testRelative53" testRelative53
-  , TF.testCase "testRelative54" testRelative54
-  , TF.testCase "testRelative55" testRelative55
-  , TF.testCase "testRelative56" testRelative56
-  , TF.testCase "testRelative57" testRelative57
-    --
-  , TF.testCase "testRelative60" testRelative60
-  , TF.testCase "testRelative61" testRelative61
-  , TF.testCase "testRelative62" testRelative62
-  , TF.testCase "testRelative63" testRelative63
-  , TF.testCase "testRelative64" testRelative64
-  , TF.testCase "testRelative65" testRelative65
-    --
-  , TF.testCase "testRelative70" testRelative70
-  , TF.testCase "testRelative71" testRelative71
-  , TF.testCase "testRelative72" testRelative72
-  , TF.testCase "testRelative73" testRelative73
-  , TF.testCase "testRelative74" testRelative74
-  , TF.testCase "testRelative75" testRelative75
-  , TF.testCase "testRelative76" testRelative76
-  , TF.testCase "testRelative77" testRelative77
-  -- Awkward cases:
-  , TF.testCase "testRelative78" testRelative78
-  , TF.testCase "testRelative79" testRelative79
-  , TF.testCase "testRelative80" testRelative80
-  , TF.testCase "testRelative81" testRelative81
-    --
-  -- , TF.testCase "testRelative90" testRelative90
-  , TF.testCase "testRelative91" testRelative91
-  , TF.testCase "testRelative92" testRelative92
-  , TF.testCase "testRelative93" testRelative93
-  , TF.testCase "testRelative94" testRelative94
-  , TF.testCase "testRelative95" testRelative95
-  , TF.testCase "testRelative96" testRelative96
-  , TF.testCase "testRelative97" testRelative97
-  , TF.testCase "testRelative98" testRelative98
-  , TF.testCase "testRelative99" testRelative99
-  ]
-
--- RFC2396 relative-to-absolute URI tests
-
-rfcbase  = "http://a/b/c/d;p?q"
--- normal cases, RFC2396bis 5.4.1
-testRFC01 = testRelJoin "testRFC01" rfcbase "g:h" "g:h"
-testRFC02 = testRelJoin "testRFC02" rfcbase "g" "http://a/b/c/g"
-testRFC03 = testRelJoin "testRFC03" rfcbase "./g" "http://a/b/c/g"
-testRFC04 = testRelJoin "testRFC04" rfcbase "g/" "http://a/b/c/g/"
-testRFC05 = testRelJoin "testRFC05" rfcbase "/g" "http://a/g"
-testRFC06 = testRelJoin "testRFC06" rfcbase "//g" "http://g"
-testRFC07 = testRelJoin "testRFC07" rfcbase "?y" "http://a/b/c/d;p?y"
-testRFC08 = testRelJoin "testRFC08" rfcbase "g?y" "http://a/b/c/g?y"
-testRFC09 = testRelJoin "testRFC09" rfcbase "?q#s" "http://a/b/c/d;p?q#s"
-testRFC23 = testRelJoin "testRFC10" rfcbase "#s" "http://a/b/c/d;p?q#s"
-testRFC10 = testRelJoin "testRFC11" rfcbase "g#s" "http://a/b/c/g#s"
-testRFC11 = testRelJoin "testRFC12" rfcbase "g?y#s" "http://a/b/c/g?y#s"
-testRFC12 = testRelJoin "testRFC13" rfcbase ";x" "http://a/b/c/;x"
-testRFC13 = testRelJoin "testRFC14" rfcbase "g;x" "http://a/b/c/g;x"
-testRFC14 = testRelJoin "testRFC15" rfcbase "g;x?y#s" "http://a/b/c/g;x?y#s"
-testRFC24 = testRelJoin "testRFC16" rfcbase "" "http://a/b/c/d;p?q"
-testRFC15 = testRelJoin "testRFC17" rfcbase "." "http://a/b/c/"
-testRFC16 = testRelJoin "testRFC18" rfcbase "./" "http://a/b/c/"
-testRFC17 = testRelJoin "testRFC19" rfcbase ".." "http://a/b/"
-testRFC18 = testRelJoin "testRFC20" rfcbase "../" "http://a/b/"
-testRFC19 = testRelJoin "testRFC21" rfcbase "../g" "http://a/b/g"
-testRFC20 = testRelJoin "testRFC22" rfcbase "../.." "http://a/"
-testRFC21 = testRelJoin "testRFC23" rfcbase "../../" "http://a/"
-testRFC22 = testRelJoin "testRFC24" rfcbase "../../g" "http://a/g"
--- abnormal cases, RFC2396bis 5.4.2
-testRFC31 = testRelJoin "testRFC31" rfcbase "?q" rfcbase
-testRFC32 = testRelJoin "testRFC32" rfcbase "../../../g" "http://a/g"
-testRFC33 = testRelJoin "testRFC33" rfcbase "../../../../g" "http://a/g"
-testRFC34 = testRelJoin "testRFC34" rfcbase "/./g" "http://a/g"
-testRFC35 = testRelJoin "testRFC35" rfcbase "/../g" "http://a/g"
-testRFC36 = testRelJoin "testRFC36" rfcbase "g." "http://a/b/c/g."
-testRFC37 = testRelJoin "testRFC37" rfcbase ".g" "http://a/b/c/.g"
-testRFC38 = testRelJoin "testRFC38" rfcbase "g.." "http://a/b/c/g.."
-testRFC39 = testRelJoin "testRFC39" rfcbase "..g" "http://a/b/c/..g"
-testRFC40 = testRelJoin "testRFC40" rfcbase "./../g" "http://a/b/g"
-testRFC41 = testRelJoin "testRFC41" rfcbase "./g/." "http://a/b/c/g/"
-testRFC42 = testRelJoin "testRFC42" rfcbase "g/./h" "http://a/b/c/g/h"
-testRFC43 = testRelJoin "testRFC43" rfcbase "g/../h" "http://a/b/c/h"
-testRFC44 = testRelJoin "testRFC44" rfcbase "g;x=1/./y" "http://a/b/c/g;x=1/y"
-testRFC45 = testRelJoin "testRFC45" rfcbase "g;x=1/../y" "http://a/b/c/y"
-testRFC46 = testRelJoin "testRFC46" rfcbase "g?y/./x" "http://a/b/c/g?y/./x"
-testRFC47 = testRelJoin "testRFC47" rfcbase "g?y/../x" "http://a/b/c/g?y/../x"
-testRFC48 = testRelJoin "testRFC48" rfcbase "g#s/./x" "http://a/b/c/g#s/./x"
-testRFC49 = testRelJoin "testRFC49" rfcbase "g#s/../x" "http://a/b/c/g#s/../x"
-testRFC50 = testRelJoin "testRFC50" rfcbase "http:x" "http:x"
-
--- Null path tests
--- See RFC2396bis, section 5.2,
--- "If the base URI's path component is the empty string, then a single
---  slash character is copied to the buffer"
-testRFC60 = testRelative "testRFC60" "http://ex"     "http://ex/x/y?q" "/x/y?q"
-testRFC61 = testRelJoin  "testRFC61" "http://ex"     "x/y?q"           "http://ex/x/y?q"
-testRFC62 = testRelative "testRFC62" "http://ex?p"   "http://ex/x/y?q" "/x/y?q"
-testRFC63 = testRelJoin  "testRFC63" "http://ex?p"   "x/y?q"           "http://ex/x/y?q"
-testRFC64 = testRelative "testRFC64" "http://ex#f"   "http://ex/x/y?q" "/x/y?q"
-testRFC65 = testRelJoin  "testRFC65" "http://ex#f"   "x/y?q"           "http://ex/x/y?q"
-testRFC66 = testRelative "testRFC66" "http://ex?p"   "http://ex/x/y#g" "/x/y#g"
-testRFC67 = testRelJoin  "testRFC67" "http://ex?p"   "x/y#g"           "http://ex/x/y#g"
-testRFC68 = testRelative "testRFC68" "http://ex"     "http://ex/"      "/"
-testRFC69 = testRelJoin  "testRFC69" "http://ex"     "./"              "http://ex/"
-testRFC70 = testRelative "testRFC70" "http://ex"     "http://ex/a/b"   "/a/b"
-testRFC71 = testRelative "testRFC71" "http://ex/a/b" "http://ex"       "./"
-
-testRFC2396Suite = TF.testGroup "Test RFC2396 examples" testRFC2396List
-testRFC2396List  =
-  [ TF.testCase "testRFC01" testRFC01
-  , TF.testCase "testRFC02" testRFC02
-  , TF.testCase "testRFC03" testRFC03
-  , TF.testCase "testRFC04" testRFC04
-  , TF.testCase "testRFC05" testRFC05
-  , TF.testCase "testRFC06" testRFC06
-  , TF.testCase "testRFC07" testRFC07
-  , TF.testCase "testRFC08" testRFC08
-  , TF.testCase "testRFC09" testRFC09
-  , TF.testCase "testRFC10" testRFC10
-  , TF.testCase "testRFC11" testRFC11
-  , TF.testCase "testRFC12" testRFC12
-  , TF.testCase "testRFC13" testRFC13
-  , TF.testCase "testRFC14" testRFC14
-  , TF.testCase "testRFC15" testRFC15
-  , TF.testCase "testRFC16" testRFC16
-  , TF.testCase "testRFC17" testRFC17
-  , TF.testCase "testRFC18" testRFC18
-  , TF.testCase "testRFC19" testRFC19
-  , TF.testCase "testRFC20" testRFC20
-  , TF.testCase "testRFC21" testRFC21
-  , TF.testCase "testRFC22" testRFC22
-  , TF.testCase "testRFC23" testRFC23
-  , TF.testCase "testRFC24" testRFC24
-    -- testRFC30,
-  , TF.testCase "testRFC31" testRFC31
-  , TF.testCase "testRFC32" testRFC32
-  , TF.testCase "testRFC33" testRFC33
-  , TF.testCase "testRFC34" testRFC34
-  , TF.testCase "testRFC35" testRFC35
-  , TF.testCase "testRFC36" testRFC36
-  , TF.testCase "testRFC37" testRFC37
-  , TF.testCase "testRFC38" testRFC38
-  , TF.testCase "testRFC39" testRFC39
-  , TF.testCase "testRFC40" testRFC40
-  , TF.testCase "testRFC41" testRFC41
-  , TF.testCase "testRFC42" testRFC42
-  , TF.testCase "testRFC43" testRFC43
-  , TF.testCase "testRFC44" testRFC44
-  , TF.testCase "testRFC45" testRFC45
-  , TF.testCase "testRFC46" testRFC46
-  , TF.testCase "testRFC47" testRFC47
-  , TF.testCase "testRFC48" testRFC48
-  , TF.testCase "testRFC49" testRFC49
-  , TF.testCase "testRFC50" testRFC50
-    --
-  , TF.testCase "testRFC60" testRFC60
-  , TF.testCase "testRFC61" testRFC61
-  , TF.testCase "testRFC62" testRFC62
-  , TF.testCase "testRFC63" testRFC63
-  , TF.testCase "testRFC64" testRFC64
-  , TF.testCase "testRFC65" testRFC65
-  , TF.testCase "testRFC66" testRFC66
-  , TF.testCase "testRFC67" testRFC67
-  , TF.testCase "testRFC68" testRFC68
-  , TF.testCase "testRFC69" testRFC69
-  , TF.testCase "testRFC70" testRFC70
-  ]
-
--- And some other oddballs:
-mailbase = "mailto:local/option@domain.org?notaquery#frag"
-testMail01 = testRelJoin "testMail01"
-            mailbase "more@domain"
-            "mailto:local/more@domain"
-testMail02 = testRelJoin "testMail02"
-            mailbase "#newfrag"
-            "mailto:local/option@domain.org?notaquery#newfrag"
-testMail03 = testRelJoin "testMail03"
-            mailbase "l1/q1@domain"
-            "mailto:local/l1/q1@domain"
-
-testMail11 = testRelJoin "testMail11"
-             "mailto:local1@domain1?query1" "mailto:local2@domain2"
-             "mailto:local2@domain2"
-testMail12 = testRelJoin "testMail12"
-             "mailto:local1@domain1" "mailto:local2@domain2?query2"
-             "mailto:local2@domain2?query2"
-testMail13 = testRelJoin "testMail13"
-             "mailto:local1@domain1?query1" "mailto:local2@domain2?query2"
-             "mailto:local2@domain2?query2"
-testMail14 = testRelJoin "testMail14"
-             "mailto:local@domain?query1" "mailto:local@domain?query2"
-             "mailto:local@domain?query2"
-testMail15 = testRelJoin "testMail15"
-             "mailto:?query1" "mailto:local@domain?query2"
-             "mailto:local@domain?query2"
-testMail16 = testRelJoin "testMail16"
-             "mailto:local@domain?query1" "?query2"
-             "mailto:local@domain?query2"
-testInfo17 = testRelJoin "testInfo17"
-             "info:name/1234/../567" "name/9876/../543"
-             "info:name/name/543"
-testInfo18 = testRelJoin "testInfo18"
-             "info:/name/1234/../567" "name/9876/../543"
-             "info:/name/name/543"
-
-testOddballSuite = TF.testGroup "Test oddball examples" testOddballList
-testOddballList  =
-  [ TF.testCase "testMail01" testMail01
-  , TF.testCase "testMail02" testMail02
-  , TF.testCase "testMail03" testMail03
-  , TF.testCase "testMail11" testMail11
-  , TF.testCase "testMail12" testMail12
-  , TF.testCase "testMail13" testMail13
-  , TF.testCase "testMail14" testMail14
-  , TF.testCase "testMail15" testMail15
-  , TF.testCase "testMail16" testMail16
-  , TF.testCase "testInfo17" testInfo17
-  ]
-
---  Normalization tests
-
---  Case normalization; cf. RFC2396bis section 6.2.2.1
---  NOTE:  authority case normalization is not performed
-testNormalize01 = testEq "testNormalize01"
-                  "http://EXAMPLE.com/Root/%2A?%2B#%2C"
-                  (normalizeCase "HTTP://EXAMPLE.com/Root/%2a?%2b#%2c")
-
---  Encoding normalization; cf. RFC2396bis section 6.2.2.2
-testNormalize11 = testEq "testNormalize11"
-                  "HTTP://EXAMPLE.com/Root/~Me/"
-                  (normalizeEscape "HTTP://EXAMPLE.com/Root/%7eMe/")
-testNormalize12 = testEq "testNormalize12"
-                  "foo:%40AZ%5b%60az%7b%2f09%3a-._~"
-                  (normalizeEscape "foo:%40%41%5a%5b%60%61%7a%7b%2f%30%39%3a%2d%2e%5f%7e")
-testNormalize13 = testEq "testNormalize13"
-                  "foo:%3a%2f%3f%23%5b%5d%40"
-                  (normalizeEscape "foo:%3a%2f%3f%23%5b%5d%40")
-
---  Path segment normalization; cf. RFC2396bis section 6.2.2.4
-testNormalize21 = testEq "testNormalize21"
-                    "http://example/c"
-                    (normalizePathSegments "http://example/a/b/../../c")
-testNormalize22 = testEq "testNormalize22"
-                    "http://example/a/"
-                    (normalizePathSegments "http://example/a/b/c/../../")
-testNormalize23 = testEq "testNormalize23"
-                    "http://example/a/b/c/"
-                    (normalizePathSegments "http://example/a/b/c/./")
-testNormalize24 = testEq "testNormalize24"
-                    "http://example/a/b/"
-                    (normalizePathSegments "http://example/a/b/c/.././")
-testNormalize25 = testEq "testNormalize25"
-                    "http://example/e"
-                    (normalizePathSegments "http://example/a/b/c/d/../../../../e")
-testNormalize26 = testEq "testNormalize26"
-                    "http://example/e"
-                    (normalizePathSegments "http://example/a/b/c/d/../.././../../e")
-testNormalize27 = testEq "testNormalize27"
-                    "http://example/e"
-                    (normalizePathSegments "http://example/a/b/../.././../../e")
-testNormalize28 = testEq "testNormalize28"
-                    "foo:e"
-                    (normalizePathSegments "foo:a/b/../.././../../e")
-
-testNormalizeSuite = TF.testGroup "testNormalizeSuite"
-  [ TF.testCase "testNormalize01" testNormalize01
-  , TF.testCase "testNormalize11" testNormalize11
-  , TF.testCase "testNormalize12" testNormalize12
-  , TF.testCase "testNormalize13" testNormalize13
-  , TF.testCase "testNormalize21" testNormalize21
-  , TF.testCase "testNormalize22" testNormalize22
-  , TF.testCase "testNormalize23" testNormalize23
-  , TF.testCase "testNormalize24" testNormalize24
-  , TF.testCase "testNormalize25" testNormalize25
-  , TF.testCase "testNormalize26" testNormalize26
-  , TF.testCase "testNormalize27" testNormalize27
-  , TF.testCase "testNormalize28" testNormalize28
-  ]
-
--- URI formatting (show) tests
-
-ts02URI = URI   { uriScheme    = "http:"
-                , uriAuthority = Just (URIAuth "user:pass@" "example.org" ":99")
-                , uriPath      = "/aaa/bbb"
-                , uriQuery     = "?ccc"
-                , uriFragment  = "#ddd/eee"
-                }
-
-ts04URI = URI   { uriScheme    = "http:"
-                , uriAuthority = Just (URIAuth "user:anonymous@" "example.org" ":99")
-                , uriPath      = "/aaa/bbb"
-                , uriQuery     = "?ccc"
-                , uriFragment  = "#ddd/eee"
-                }
-
-ts02str = "http://user:...@example.org:99/aaa/bbb?ccc#ddd/eee"
-ts03str = "http://user:pass@example.org:99/aaa/bbb?ccc#ddd/eee"
-ts04str = "http://user:...@example.org:99/aaa/bbb?ccc#ddd/eee"
-
-testShowURI01 = testEq "testShowURI01" ""      (show nullURI)
-testShowURI02 = testEq "testShowURI02" ts02str (show ts02URI)
-testShowURI03 = testEq "testShowURI03" ts03str ((uriToString id ts02URI) "")
-testShowURI04 = testEq "testShowURI04" ts04str (show ts04URI)
-
-testShowURI = TF.testGroup "testShowURI"
-  [ TF.testCase "testShowURI01" testShowURI01
-  , TF.testCase "testShowURI02" testShowURI02
-  , TF.testCase "testShowURI03" testShowURI03
-  , TF.testCase "testShowURI04" testShowURI04
-  ]
-
-
--- URI escaping tests
-
-te01str = "http://example.org/az/09-_/.~:/?#[]@!$&'()*+,;="
-te02str = "http://example.org/a</b>/c%/d /e"
-te02esc = "http://example.org/a%3C/b%3E/c%25/d%20/e"
-
-testEscapeURIString01 = testEq "testEscapeURIString01"
-    te01str (escapeURIString isUnescapedInURI te01str)
-
-testEscapeURIString02 = testEq "testEscapeURIString02"
-    te02esc (escapeURIString isUnescapedInURI te02str)
-
-testEscapeURIString03 = testEq "testEscapeURIString03"
-    te01str (unEscapeString te01str)
-
-testEscapeURIString04 = testEq "testEscapeURIString04"
-    te02str (unEscapeString te02esc)
-
-testEscapeURIString05 = testEq "testEscapeURIString05"
-    "http%3A%2F%2Fexample.org%2Faz%2F09-_%2F.~%3A%2F%3F%23%5B%5D%40%21%24%26%27%28%29%2A%2B%2C%3B%3D"
-    (escapeURIString isUnescapedInURIComponent te01str)
-
-testEscapeURIString06 = testEq "testEscapeURIString06"
-    "hello%C3%B8%C2%A9%E6%97%A5%E6%9C%AC"
-    (escapeURIString isUnescapedInURIComponent "helloø©日本")
-
-propEscapeUnEscapeLoop :: String -> Bool
-propEscapeUnEscapeLoop s = s == (unEscapeString $! escaped)
-	where
-	escaped = escapeURIString (const False) s
-	{-# NOINLINE escaped #-}
-
-testEscapeURIString = TF.testGroup "testEscapeURIString"
-  [ TF.testCase "testEscapeURIString01" testEscapeURIString01
-  , TF.testCase "testEscapeURIString02" testEscapeURIString02
-  , TF.testCase "testEscapeURIString03" testEscapeURIString03
-  , TF.testCase "testEscapeURIString04" testEscapeURIString04
-  , TF.testCase "testEscapeURIString05" testEscapeURIString05
-  , TF.testCase "testEscapeURIString06" testEscapeURIString06
-  , TF.testProperty "propEscapeUnEscapeLoop" propEscapeUnEscapeLoop
-  ]
-
--- URI string normalization tests
-
-tn01str = "eXAMPLE://a/b/%7bfoo%7d"
-tn01nrm = "example://a/b/%7Bfoo%7D"
-
-tn02str = "example://a/b/%63/"
-tn02nrm = "example://a/b/c/"
-
-tn03str = "example://a/./b/../b/c/foo"
-tn03nrm = "example://a/b/c/foo"
-
-tn04str = "eXAMPLE://a/b/%7bfoo%7d"     -- From RFC2396bis, 6.2.2
-tn04nrm = "example://a/b/%7Bfoo%7D"
-
-tn06str = "file:/x/..//y"
-tn06nrm = "file://y"
-
-tn07str = "file:x/..//y/"
-tn07nrm = "file:/y/"
-
-testNormalizeURIString01 = testEq "testNormalizeURIString01"
-    tn01nrm (normalizeCase tn01str)
-testNormalizeURIString02 = testEq "testNormalizeURIString02"
-    tn02nrm (normalizeEscape tn02str)
-testNormalizeURIString03 = testEq "testNormalizeURIString03"
-    tn03nrm (normalizePathSegments tn03str)
-testNormalizeURIString04 = testEq "testNormalizeURIString04"
-    tn04nrm ((normalizeCase . normalizeEscape . normalizePathSegments) tn04str)
-testNormalizeURIString05 = testEq "testNormalizeURIString05"
-    tn04nrm ((normalizePathSegments . normalizeEscape . normalizeCase) tn04str)
-testNormalizeURIString06 = testEq "testNormalizeURIString06"
-    tn06nrm (normalizePathSegments tn06str)
-testNormalizeURIString07 = testEq "testNormalizeURIString07"
-    tn07nrm (normalizePathSegments tn07str)
-
-testNormalizeURIString = TF.testGroup "testNormalizeURIString"
-  [ TF.testCase "testNormalizeURIString01" testNormalizeURIString01
-  , TF.testCase "testNormalizeURIString02" testNormalizeURIString02
-  , TF.testCase "testNormalizeURIString03" testNormalizeURIString03
-  , TF.testCase "testNormalizeURIString04" testNormalizeURIString04
-  , TF.testCase "testNormalizeURIString05" testNormalizeURIString05
-  , TF.testCase "testNormalizeURIString06" testNormalizeURIString06
-  , TF.testCase "testNormalizeURIString07" testNormalizeURIString07
-  ]
-
--- Test strict vs non-strict relativeTo logic
-
-trbase = fromJust $ parseURIReference "http://bar.org/"
-
-testRelativeTo01 = testEq "testRelativeTo01"
-    "http://bar.org/foo"
-    (show $
-      (fromJust $ parseURIReference "foo") `relativeTo` trbase)
-
-testRelativeTo02 = testEq "testRelativeTo02"
-    "http:foo"
-    (show $
-      (fromJust $ parseURIReference "http:foo") `relativeTo` trbase)
-
-testRelativeTo03 = testEq "testRelativeTo03"
-    "http://bar.org/foo"
-    (show $
-      (fromJust $ parseURIReference "http:foo") `nonStrictRelativeTo` trbase)
-
-testRelativeTo = TF.testGroup "testRelativeTo"
-  [ TF.testCase "testRelativeTo01" testRelativeTo01
-  , TF.testCase "testRelativeTo02" testRelativeTo02
-  , TF.testCase "testRelativeTo03" testRelativeTo03
-  ]
-
--- Test alternative parsing functions
-testAltFn01 = testEq "testAltFn01" "Just http://a.b/c#f"
-    (show . parseURI $ "http://a.b/c#f")
-testAltFn02 = testEq "testAltFn02" "Just http://a.b/c#f"
-    (show . parseURIReference $ "http://a.b/c#f")
-testAltFn03 = testEq "testAltFn03" "Just c/d#f"
-    (show . parseRelativeReference $ "c/d#f")
-testAltFn04 = testEq "testAltFn04" "Nothing"
-    (show . parseRelativeReference $ "http://a.b/c#f")
-testAltFn05 = testEq "testAltFn05" "Just http://a.b/c"
-    (show . parseAbsoluteURI $ "http://a.b/c")
-testAltFn06 = testEq "testAltFn06" "Nothing"
-    (show . parseAbsoluteURI $ "http://a.b/c#f")
-testAltFn07 = testEq "testAltFn07" "Nothing"
-    (show . parseAbsoluteURI $ "c/d")
-testAltFn08 = testEq "testAltFn08" "Just http://a.b/c"
-    (show . parseAbsoluteURI $ "http://a.b/c")
-
-testAltFn11 = testEq "testAltFn11" True  (isURI "http://a.b/c#f")
-testAltFn12 = testEq "testAltFn12" True  (isURIReference "http://a.b/c#f")
-testAltFn13 = testEq "testAltFn13" True  (isRelativeReference "c/d#f")
-testAltFn14 = testEq "testAltFn14" False (isRelativeReference "http://a.b/c#f")
-testAltFn15 = testEq "testAltFn15" True  (isAbsoluteURI "http://a.b/c")
-testAltFn16 = testEq "testAltFn16" False (isAbsoluteURI "http://a.b/c#f")
-testAltFn17 = testEq "testAltFn17" False (isAbsoluteURI "c/d")
-
-testAltFn = TF.testGroup "testAltFn"
-  [ TF.testCase "testAltFn01" testAltFn01
-  , TF.testCase "testAltFn02" testAltFn02
-  , TF.testCase "testAltFn03" testAltFn03
-  , TF.testCase "testAltFn04" testAltFn04
-  , TF.testCase "testAltFn05" testAltFn05
-  , TF.testCase "testAltFn06" testAltFn06
-  , TF.testCase "testAltFn07" testAltFn07
-  , TF.testCase "testAltFn08" testAltFn08
-  , TF.testCase "testAltFn11" testAltFn11
-  , TF.testCase "testAltFn12" testAltFn12
-  , TF.testCase "testAltFn13" testAltFn13
-  , TF.testCase "testAltFn14" testAltFn14
-  , TF.testCase "testAltFn15" testAltFn15
-  , TF.testCase "testAltFn16" testAltFn16
-  , TF.testCase "testAltFn17" testAltFn17
-  ]
-
-testUriIsAbsolute :: String -> Assertion
-testUriIsAbsolute str =
-    assertBool str (uriIsAbsolute uri)
-    where
-    Just uri = parseURIReference str
-
-testUriIsRelative :: String -> Assertion
-testUriIsRelative str =
-    assertBool str (uriIsRelative uri)
-    where
-    Just uri = parseURIReference str
-
-testIsAbsolute = TF.testGroup "testIsAbsolute"
-  [ TF.testCase "testIsAbsolute01" $ testUriIsAbsolute "http://google.com"
-  , TF.testCase "testIsAbsolute02" $ testUriIsAbsolute "ftp://p.x.ca/woo?hai=a"
-  , TF.testCase "testIsAbsolute03" $ testUriIsAbsolute "mailto:bob@example.com"
-  ]
-
-testIsRelative = TF.testGroup "testIsRelative"
-  [ TF.testCase "testIsRelative01" $ testUriIsRelative "//google.com"
-  , TF.testCase "testIsRelative02" $ testUriIsRelative "/hello"
-  , TF.testCase "testIsRelative03" $ testUriIsRelative "this/is/a/path"
-  , TF.testCase "testIsRelative04" $ testUriIsRelative "?what=that"
-  ]
-
--- Full test suite
-allTests =
-  [ testURIRefSuite
-  , testComponentSuite
-  , testRelativeSuite
-  , testRFC2396Suite
-  , testOddballSuite
-  , testNormalizeSuite
-  , testShowURI
-  , testEscapeURIString
-  , testNormalizeURIString
-  , testRelativeTo
-  , testAltFn
-  , testIsAbsolute
-  , testIsRelative
-  ]
-
-main = TF.defaultMain allTests
-
-runTestFile t = do
-    h <- openFile "a.tmp" WriteMode
-    _ <- runTestText (putTextToHandle h False) t
-    hClose h
-tf = runTestFile
-tt = runTestTT
-
--- Miscellaneous values for hand-testing/debugging in Hugs:
-
-uref = testURIRefSuite
-tr01 = testRelative01
-tr02 = testRelative02
-tr03 = testRelative03
-tr04 = testRelative04
-rel  = testRelativeSuite
-rfc  = testRFC2396Suite
-oddb = testOddballSuite
-
-(Just bu02) = parseURIReference "http://example/x/y/z"
-(Just ou02) = parseURIReference "../abc"
-(Just ru02) = parseURIReference "http://example/x/abc"
--- fileuri = testURIReference "file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/"
-
-cu02 = ou02 `relativeTo` bu02
-
---------------------------------------------------------------------------------
---
---  Copyright (c) 2004, G. KLYNE.  All rights reserved.
---  Distributed as free software under the following license.
---
---  Redistribution and use in source and binary forms, with or without
---  modification, are permitted provided that the following conditions
---  are met:
---
---  - Redistributions of source code must retain the above copyright notice,
---  this list of conditions and the following disclaimer.
---
---  - Redistributions in binary form must reproduce the above copyright
---  notice, this list of conditions and the following disclaimer in the
---  documentation and/or other materials provided with the distribution.
---
---  - Neither name of the copyright holders nor the names of its
---  contributors may be used to endorse or promote products derived from
---  this software without specific prior written permission.
---
---  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND THE CONTRIBUTORS
---  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
---  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
---  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
---  HOLDERS OR THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
---  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
---  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
---  OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
---  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
---  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
---  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---
---------------------------------------------------------------------------------
--- $Source: /srv/cvs/cvs.haskell.org/fptools/libraries/network/tests/URITest.hs,v $
--- $Author: gklyne $
--- $Revision: 1.8 $
--- $Log: URITest.hs,v $
--- Revision 1.81 2012/08/01           aaronfriel
--- Added additional test case for the "xip.io" service style URLs and absolute URLs prefixed with ipv4 addresses.
---
--- Revision 1.8  2005/07/19 22:01:27  gklyne
--- Added some additional test cases raised by discussion on URI@w3.org mailing list about 2005-07-19.  The test p[roposed by this discussion exposed a subtle bug in relativeFrom not being an exact inverse of relativeTo.
---
--- Revision 1.7  2005/06/06 16:31:44  gklyne
--- Added two new test cases.
---
--- Revision 1.6  2005/05/31 17:18:36  gklyne
--- Added some additional test cases triggered by URI-list discussions.
---
--- Revision 1.5  2005/04/07 11:09:37  gklyne
--- Added test cases for alternate parsing functions (including deprecated 'parseabsoluteURI')
---
--- Revision 1.4  2005/04/05 12:47:32  gklyne
--- Added test case.
--- Changed module name, now requires GHC -main-is to compile.
--- All tests run OK with GHC 6.4 on MS-Windows.
---
--- Revision 1.3  2004/11/05 17:29:09  gklyne
--- Changed password-obscuring logic to reflect late change in revised URI
--- specification (password "anonymous" is no longer a special case).
--- Updated URI test module to use function 'escapeURIString'.
--- (Should unEscapeString be similarly updated?)
---
--- Revision 1.2  2004/10/27 13:06:55  gklyne
--- Updated URI module function names per:
--- http://www.haskell.org//pipermail/cvs-libraries/2004-October/002916.html
--- Added test cases to give better covereage of module functions.
---
--- Revision 1.1  2004/10/14 16:11:30  gklyne
--- Add URI unit test to cvs.haskell.org repository
---
--- Revision 1.17  2004/10/14 11:51:09  graham
--- Confirm that URITest runs with GHC.
--- Fix up some comments and other minor details.
---
--- Revision 1.16  2004/10/14 11:45:30  graham
--- Use moduke name main for GHC 6.2
---
--- Revision 1.15  2004/08/11 11:07:39  graham
--- Add new test case.
---
--- Revision 1.14  2004/06/30 11:35:27  graham
--- Update URI code to use hierarchical libraries for Parsec and Network.
---
--- Revision 1.13  2004/06/22 16:19:16  graham
--- New URI test case added.
---
--- Revision 1.12  2004/04/21 15:13:29  graham
--- Add test case
---
--- Revision 1.11  2004/04/21 14:54:05  graham
--- Fix up some tests
---
--- Revision 1.10  2004/04/20 14:54:13  graham
--- Fix up test cases related to port number in authority,
--- and add some more URI decomposition tests.
---
--- Revision 1.9  2004/04/07 15:06:17  graham
--- Add extra test case
--- Revise syntax in line with changes to RFC2396bis
---
--- Revision 1.8  2004/03/17 14:34:58  graham
--- Add Network.HTTP files to CVS
---
--- Revision 1.7  2004/03/16 14:19:38  graham
--- Change licence to BSD style;  add nullURI definition; new test cases.
---
--- Revision 1.6  2004/02/20 12:12:00  graham
--- Add URI normalization functions
---
--- Revision 1.5  2004/02/19 23:19:35  graham
--- Network.URI module passes all test cases
---
--- Revision 1.4  2004/02/17 20:06:02  graham
--- Revised URI parser to reflect latest RFC2396bis (-04)
---
--- Revision 1.3  2004/02/11 14:32:14  graham
--- Added work-in-progress notes.
---
--- Revision 1.2  2004/02/02 14:00:39  graham
--- Fix optional host name in URI.  Add test cases.
---
--- Revision 1.1  2004/01/27 21:13:45  graham
--- New URI module and test suite added,
--- implementing the GHC Network.URI interface.
---
diff --git a/standalone/android/wrapper.pl b/standalone/android/wrapper.pl
deleted file mode 100644
--- a/standalone/android/wrapper.pl
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/perl
-my $prog=q{PROG}; # replaced
-my @opts=qw{OPTS}; # replaced
-
-if (grep { $_ eq "-r" || $_ eq "--relocatable" } @ARGV) {
-	exec($prog,@ARGV) || die "failed to run $prog";
-}
-else {
-	exec($prog,@opts,@ARGV) || die "failed to run $prog";
-}
diff --git a/standalone/licences.gz b/standalone/licences.gz
deleted file mode 100644
Binary files a/standalone/licences.gz and /dev/null differ
diff --git a/standalone/linux/cabal.config b/standalone/linux/cabal.config
deleted file mode 100644
--- a/standalone/linux/cabal.config
+++ /dev/null
@@ -1,1069 +0,0 @@
--- Stackage snapshot from: http://www.stackage.org/snapshot/lts-2.10
--- Please place this file next to your .cabal file as cabal.config
--- To only use tested packages, uncomment the following line:
--- remote-repo: stackage-lts-2.10:http://www.stackage.org/snapshot/lts-2.10
-constraints: abstract-deque ==0.3,
-             abstract-par ==0.3.3,
-             accelerate ==0.15.1.0,
-             ace ==0.6,
-             action-permutations ==0.0.0.1,
-             active ==0.1.0.19,
-             AC-Vector ==2.3.2,
-             ad ==4.2.2,
-             adjunctions ==4.2.1,
-             aeson ==0.8.0.2,
-             aeson-pretty ==0.7.2,
-             aeson-qq ==0.7.4,
-             aeson-utils ==0.3.0.1,
-             alarmclock ==0.2.0.6,
-             alex ==3.1.4,
-             amazonka ==0.3.4,
-             amazonka-autoscaling ==0.3.4,
-             amazonka-cloudformation ==0.3.4,
-             amazonka-cloudfront ==0.3.4,
-             amazonka-cloudhsm ==0.3.4,
-             amazonka-cloudsearch ==0.3.4,
-             amazonka-cloudsearch-domains ==0.3.4,
-             amazonka-cloudtrail ==0.3.4,
-             amazonka-cloudwatch ==0.3.4,
-             amazonka-cloudwatch-logs ==0.3.4,
-             amazonka-codedeploy ==0.3.4,
-             amazonka-cognito-identity ==0.3.4,
-             amazonka-cognito-sync ==0.3.4,
-             amazonka-config ==0.3.4,
-             amazonka-core ==0.3.4,
-             amazonka-datapipeline ==0.3.4,
-             amazonka-directconnect ==0.3.4,
-             amazonka-dynamodb ==0.3.4,
-             amazonka-ec2 ==0.3.4,
-             amazonka-ecs ==0.3.4,
-             amazonka-elasticache ==0.3.4,
-             amazonka-elasticbeanstalk ==0.3.4,
-             amazonka-elastictranscoder ==0.3.4,
-             amazonka-elb ==0.3.4,
-             amazonka-emr ==0.3.4,
-             amazonka-glacier ==0.3.4,
-             amazonka-iam ==0.3.4,
-             amazonka-importexport ==0.3.4,
-             amazonka-kinesis ==0.3.4,
-             amazonka-kms ==0.3.4,
-             amazonka-lambda ==0.3.4,
-             amazonka-opsworks ==0.3.4,
-             amazonka-rds ==0.3.4,
-             amazonka-redshift ==0.3.4,
-             amazonka-route53 ==0.3.4,
-             amazonka-route53-domains ==0.3.4,
-             amazonka-s3 ==0.3.4,
-             amazonka-sdb ==0.3.4,
-             amazonka-ses ==0.3.4,
-             amazonka-sns ==0.3.4,
-             amazonka-sqs ==0.3.4,
-             amazonka-ssm ==0.3.4,
-             amazonka-storagegateway ==0.3.4,
-             amazonka-sts ==0.3.4,
-             amazonka-support ==0.3.4,
-             amazonka-swf ==0.3.4,
-             amqp ==0.12.2,
-             ansi-terminal ==0.6.2.1,
-             ansi-wl-pprint ==0.6.7.2,
-             appar ==0.1.4,
-             applicative-quoters ==0.1.0.8,
-             approximate ==0.2.1.1,
-             arbtt ==0.9.0.2,
-             arithmoi ==0.4.1.2,
-             array installed,
-             arrow-list ==0.7,
-             asn1-data ==0.7.1,
-             asn1-encoding ==0.9.0,
-             asn1-parse ==0.9.1,
-             asn1-types ==0.3.0,
-             async ==2.0.2,
-             atto-lisp ==0.2.2,
-             attoparsec ==0.12.1.6,
-             attoparsec-enumerator ==0.3.4,
-             attoparsec-expr ==0.1.1.2,
-             authenticate ==1.3.2.11,
-             authenticate-oauth ==1.5.1.1,
-             auto-update ==0.1.2.1,
-             aws ==0.11.4,
-             bake ==0.2,
-             bank-holidays-england ==0.1.0.3,
-             base installed,
-             base16-bytestring ==0.1.1.6,
-             base64-bytestring ==1.0.0.1,
-             base64-string ==0.2,
-             base-compat ==0.6.0,
-             base-prelude ==0.1.19,
-             base-unicode-symbols ==0.2.2.4,
-             basic-prelude ==0.3.13,
-             bcrypt ==0.0.6,
-             bifunctors ==4.2.1,
-             binary installed,
-             binary-conduit ==1.2.3,
-             binary-list ==1.1.1.0,
-             bindings-DSL ==1.0.22,
-             bin-package-db installed,
-             bioace ==0.0.1,
-             bioalign ==0.0.5,
-             biocore ==0.3.1,
-             biofasta ==0.0.3,
-             biofastq ==0.1,
-             biophd ==0.0.7,
-             biopsl ==0.4,
-             biosff ==0.3.7.1,
-             bits ==0.4,
-             blank-canvas ==0.5,
-             BlastHTTP ==1.0.1,
-             blastxml ==0.3.2,
-             blaze-builder ==0.4.0.1,
-             blaze-builder-enumerator ==0.2.1.0,
-             blaze-html ==0.8.0.2,
-             blaze-markup ==0.7.0.2,
-             blaze-svg ==0.3.4.1,
-             blaze-textual ==0.2.0.9,
-             bloodhound ==0.5.0.1,
-             bmp ==1.2.5.2,
-             Boolean ==0.2.3,
-             boolsimplifier ==0.1.8,
-             bound ==1.0.5,
-             BoundedChan ==1.0.3.0,
-             broadcast-chan ==0.1.0,
-             bson ==0.3.1,
-             bumper ==0.6.0.3,
-             byteable ==0.1.1,
-             bytedump ==1.0,
-             byteorder ==1.0.4,
-             bytes ==0.15,
-             bytestring installed,
-             bytestring-builder ==0.10.6.0.0,
-             bytestring-conversion ==0.3.0,
-             bytestring-lexing ==0.4.3.2,
-             bytestring-mmap ==0.2.2,
-             bytestring-progress ==1.0.5,
-             bytestring-trie ==0.2.4.1,
-             bzlib ==0.5.0.5,
-             bzlib-conduit ==0.2.1.3,
-             c2hs ==0.25.2,
-             Cabal installed,
-             cabal-file-th ==0.2.3,
-             Cabal-ide-backend ==1.23.0.0,
-             cabal-install ==1.18.1.0,
-             cabal-rpm ==0.9.6,
-             cabal-src ==0.2.5.1,
-             cabal-test-quickcheck ==0.1.4,
-             cairo ==0.13.1.0,
-             cartel ==0.14.2.6,
-             case-insensitive ==1.2.0.4,
-             cases ==0.1.2.1,
-             cassava ==0.4.2.4,
-             cereal ==0.4.1.1,
-             cereal-conduit ==0.7.2.3,
-             certificate ==1.3.9,
-             charset ==0.3.7.1,
-             Chart ==1.3.3,
-             Chart-diagrams ==1.3.3,
-             ChasingBottoms ==1.3.0.12,
-             check-email ==1.0,
-             checkers ==0.4.3,
-             chell ==0.4.0.1,
-             chell-quickcheck ==0.2.5,
-             chunked-data ==0.1.0.1,
-             cipher-aes ==0.2.10,
-             cipher-aes128 ==0.6.4,
-             cipher-blowfish ==0.0.3,
-             cipher-camellia ==0.0.2,
-             cipher-des ==0.0.6,
-             cipher-rc4 ==0.1.4,
-             circle-packing ==0.1.0.4,
-             classy-prelude ==0.11.1.1,
-             classy-prelude-conduit ==0.11.1,
-             classy-prelude-yesod ==0.11.1,
-             clay ==0.10.1,
-             clientsession ==0.9.1.1,
-             clock ==0.4.6.0,
-             cmdargs ==0.10.13,
-             code-builder ==0.1.3,
-             colour ==2.3.3,
-             comonad ==4.2.6,
-             comonads-fd ==4.0,
-             comonad-transformers ==4.0,
-             compdata ==0.9,
-             compensated ==0.6.1,
-             composition ==1.0.1.1,
-             compressed ==3.10,
-             concatenative ==1.0.1,
-             concurrent-extra ==0.7.0.9,
-             concurrent-supply ==0.1.7.1,
-             cond ==0.4.1.1,
-             conduit ==1.2.4.2,
-             conduit-combinators ==0.3.1,
-             conduit-extra ==1.1.8,
-             configurator ==0.3.0.0,
-             connection ==0.2.4,
-             constraints ==0.4.1.3,
-             consul-haskell ==0.1,
-             containers installed,
-             containers-unicode-symbols ==0.3.1.1,
-             contravariant ==1.3.1.1,
-             control-monad-free ==0.6.1,
-             control-monad-loop ==0.1,
-             convertible ==1.1.1.0,
-             cookie ==0.4.1.5,
-             courier ==0.1.0.15,
-             cpphs ==1.19,
-             cprng-aes ==0.6.1,
-             cpu ==0.1.2,
-             criterion ==1.1.0.0,
-             crypto-api ==0.13.2,
-             crypto-api-tests ==0.3,
-             cryptocipher ==0.6.2,
-             crypto-cipher-tests ==0.0.11,
-             crypto-cipher-types ==0.0.9,
-             cryptohash ==0.11.6,
-             cryptohash-conduit ==0.1.1,
-             cryptohash-cryptoapi ==0.1.3,
-             cryptol ==2.2.2,
-             crypto-numbers ==0.2.7,
-             crypto-pubkey ==0.2.8,
-             crypto-pubkey-types ==0.4.3,
-             crypto-random ==0.0.9,
-             crypto-random-api ==0.2.0,
-             css-text ==0.1.2.1,
-             csv ==0.1.2,
-             csv-conduit ==0.6.6,
-             cubicspline ==0.1.1,
-             curl ==1.3.8,
-             data-accessor ==0.2.2.6,
-             data-accessor-mtl ==0.2.0.4,
-             data-binary-ieee754 ==0.4.4,
-             data-default ==0.5.3,
-             data-default-class ==0.0.1,
-             data-default-instances-base ==0.0.1,
-             data-default-instances-containers ==0.0.1,
-             data-default-instances-dlist ==0.0.1,
-             data-default-instances-old-locale ==0.0.1,
-             data-inttrie ==0.1.0,
-             data-lens-light ==0.1.2.1,
-             data-memocombinators ==0.5.1,
-             data-reify ==0.6.1,
-             DAV ==1.0.5,
-             Decimal ==0.4.2,
-             deepseq installed,
-             deepseq-generics ==0.1.1.2,
-             derive ==2.5.22,
-             descriptive ==0.9.3,
-             diagrams ==1.2,
-             diagrams-cairo ==1.2.0.7,
-             diagrams-canvas ==0.3.0.4,
-             diagrams-contrib ==1.1.2.6,
-             diagrams-core ==1.2.0.6,
-             diagrams-lib ==1.2.0.9,
-             diagrams-postscript ==1.1.0.5,
-             diagrams-rasterific ==0.1.0.8,
-             diagrams-svg ==1.1.0.5,
-             Diff ==0.3.2,
-             digest ==0.0.1.2,
-             digestive-functors ==0.7.1.5,
-             dimensional ==0.13.0.2,
-             directory installed,
-             directory-tree ==0.12.0,
-             direct-sqlite ==2.3.15,
-             distributed-process ==0.5.3,
-             distributed-process-async ==0.2.1,
-             distributed-process-client-server ==0.1.2,
-             distributed-process-execution ==0.1.1,
-             distributed-process-extras ==0.2.0,
-             distributed-process-simplelocalnet ==0.2.2.0,
-             distributed-process-supervisor ==0.1.2,
-             distributed-process-task ==0.1.1,
-             distributed-static ==0.3.1.0,
-             distributive ==0.4.4,
-             djinn-ghc ==0.0.2.3,
-             djinn-lib ==0.0.1.2,
-             dlist ==0.7.1.1,
-             dlist-instances ==0.1,
-             doctest ==0.9.13,
-             double-conversion ==2.0.1.0,
-             DRBG ==0.5.4,
-             dual-tree ==0.2.0.6,
-             easy-file ==0.2.1,
-             ede ==0.2.8.2,
-             edit-distance ==0.2.1.3,
-             effect-handlers ==0.1.0.6,
-             either ==4.3.4,
-             elm-core-sources ==1.0.0,
-             email-validate ==2.0.1,
-             enclosed-exceptions ==1.0.1.1,
-             entropy ==0.3.6,
-             enumerator ==0.4.20,
-             eq ==4.0.4,
-             erf ==2.0.0.0,
-             errorcall-eq-instance ==0.2.0.1,
-             errors ==1.4.7,
-             ersatz ==0.3,
-             esqueleto ==2.1.3,
-             exception-mtl ==0.3.0.5,
-             exceptions ==0.8.0.2,
-             exception-transformers ==0.3.0.4,
-             executable-hash ==0.2.0.0,
-             executable-path ==0.0.3,
-             extensible-exceptions ==0.1.1.4,
-             extra ==1.1,
-             fast-logger ==2.3.1,
-             fay ==0.23.1.4,
-             fay-base ==0.20.0.0,
-             fay-builder ==0.2.0.5,
-             fay-dom ==0.5.0.1,
-             fay-jquery ==0.6.0.3,
-             fay-text ==0.3.2.2,
-             fay-uri ==0.2.0.0,
-             fb ==1.0.10,
-             fb-persistent ==0.3.4,
-             fclabels ==2.0.2.2,
-             FenwickTree ==0.1.2.1,
-             fgl ==5.5.1.0,
-             file-embed ==0.0.8.2,
-             file-location ==0.4.7.1,
-             filemanip ==0.3.6.3,
-             filepath installed,
-             fingertree ==0.1.0.2,
-             fixed ==0.2.1.1,
-             fixed-list ==0.1.6,
-             fixed-vector ==0.7.0.3,
-             flexible-defaults ==0.0.1.1,
-             flock ==0.3.1.8,
-             fmlist ==0.9,
-             focus ==0.1.4,
-             foldl ==1.0.10,
-             FontyFruity ==0.5.1.1,
-             force-layout ==0.3.0.11,
-             foreign-store ==0.2,
-             formatting ==6.2.0,
-             free ==4.11,
-             freenect ==1.2,
-             frisby ==0.2,
-             fsnotify ==0.1.0.3,
-             fuzzcheck ==0.1.1,
-             gd ==3000.7.3,
-             generic-aeson ==0.2.0.5,
-             generic-deriving ==1.6.3,
-             GenericPretty ==1.2.1,
-             generics-sop ==0.1.1.2,
-             generic-xmlpickler ==0.1.0.2,
-             ghc installed,
-             ghc-heap-view ==0.5.3,
-             ghcid ==0.3.6,
-             ghc-mod ==5.2.1.2,
-             ghc-mtl ==1.2.1.0,
-             ghc-paths ==0.1.0.9,
-             ghc-prim installed,
-             ghc-syb-utils ==0.2.3,
-             gio ==0.13.1.0,
-             gipeda ==0.1.0.2,
-             git-embed ==0.1.0,
-             gitlib ==3.1.0.1,
-             gitlib-libgit2 ==3.1.0.4,
-             gitlib-test ==3.1.0.2,
-             gitrev ==1.0.0,
-             gitson ==0.5.1,
-             gl ==0.7.7,
-             glib ==0.13.1.0,
-             Glob ==0.7.5,
-             GLURaw ==1.5.0.1,
-             GLUT ==2.7.0.1,
-             graph-core ==0.2.2.0,
-             graphs ==0.6.0.1,
-             GraphSCC ==1.0.4,
-             graphviz ==2999.17.0.2,
-             gravatar ==0.8.0,
-             groundhog ==0.7.0.3,
-             groundhog-mysql ==0.7.0.1,
-             groundhog-postgresql ==0.7.0.2,
-             groundhog-sqlite ==0.7.0.1,
-             groundhog-th ==0.7.0.1,
-             groupoids ==4.0,
-             groups ==0.4.0.0,
-             gtk ==0.13.6,
-             gtk2hs-buildtools ==0.13.0.3,
-             gtk3 ==0.13.6,
-             hackage-mirror ==0.1.0.0,
-             haddock-api ==2.15.0.2,
-             haddock-library ==1.1.1,
-             hakyll ==4.6.9.0,
-             half ==0.2.0.1,
-             HandsomeSoup ==0.3.5,
-             happstack-server ==7.4.2,
-             happy ==1.19.5,
-             hashable ==1.2.3.2,
-             hashable-extras ==0.2.1,
-             hashmap ==1.3.0.1,
-             hashtables ==1.2.0.2,
-             haskeline installed,
-             haskell2010 installed,
-             haskell98 installed,
-             haskell-lexer ==1.0,
-             haskell-names ==0.5.2,
-             HaskellNet ==0.4.4,
-             haskell-packages ==0.2.4.4,
-             haskell-src ==1.0.2.0,
-             haskell-src-exts ==1.16.0.1,
-             haskell-src-meta ==0.6.0.9,
-             haskintex ==0.5.0.3,
-             hasql ==0.7.3.1,
-             hasql-backend ==0.4.1,
-             hasql-postgres ==0.10.3.1,
-             hastache ==0.6.1,
-             HaTeX ==3.16.1.1,
-             HaXml ==1.25.3,
-             haxr ==3000.10.4.2,
-             HCodecs ==0.5,
-             hdaemonize ==0.5.0.0,
-             hdevtools ==0.1.0.8,
-             hdocs ==0.4.1.3,
-             heap ==1.0.2,
-             heaps ==0.3.2.1,
-             hebrew-time ==0.1.1,
-             heist ==0.14.1,
-             here ==1.2.7,
-             heredoc ==0.2.0.0,
-             hexpat ==0.20.9,
-             hflags ==0.4,
-             highlighting-kate ==0.5.12,
-             hindent ==4.4.2,
-             hinotify ==0.3.7,
-             hint ==0.4.2.3,
-             histogram-fill ==0.8.4.1,
-             hit ==0.6.3,
-             hjsmin ==0.1.4.7,
-             hledger ==0.24.1,
-             hledger-lib ==0.24.1,
-             hledger-web ==0.24.1,
-             hlibgit2 ==0.18.0.14,
-             hlint ==1.9.20,
-             hmatrix ==0.16.1.5,
-             hmatrix-gsl ==0.16.0.3,
-             hmatrix-gsl-stats ==0.2.1,
-             hmatrix-repa ==0.1.2.1,
-             hoauth2 ==0.4.7,
-             holy-project ==0.1.1.1,
-             hoogle ==4.2.41,
-             hoopl installed,
-             hOpenPGP ==2.0,
-             hopenpgp-tools ==0.14.1,
-             hostname ==1.0,
-             hostname-validate ==1.0.0,
-             hourglass ==0.2.9,
-             hpc installed,
-             hpc-coveralls ==0.9.0,
-             hPDB ==1.2.0.3,
-             hPDB-examples ==1.2.0.2,
-             hs-bibutils ==5.5,
-             hscolour ==1.22,
-             hsdev ==0.1.3.4,
-             hse-cpp ==0.1,
-             hsignal ==0.2.7,
-             hslogger ==1.2.9,
-             hslua ==0.3.13,
-             HsOpenSSL ==0.11.1.1,
-             hspec ==2.1.7,
-             hspec-attoparsec ==0.1.0.2,
-             hspec-core ==2.1.7,
-             hspec-discover ==2.1.7,
-             hspec-expectations ==0.6.1.1,
-             hspec-meta ==2.1.7,
-             hspec-smallcheck ==0.3.0,
-             hspec-wai ==0.6.3,
-             hspec-wai-json ==0.6.0,
-             hstatistics ==0.2.5.2,
-             HStringTemplate ==0.8.3,
-             hsyslog ==2.0,
-             HTF ==0.12.2.4,
-             html ==1.0.1.2,
-             html-conduit ==1.1.1.2,
-             HTTP ==4000.2.19,
-             http-client ==0.4.11.2,
-             http-client-openssl ==0.2.0.1,
-             http-client-tls ==0.2.2,
-             http-conduit ==2.1.5,
-             http-date ==0.0.6.1,
-             http-media ==0.6.2,
-             http-reverse-proxy ==0.4.2,
-             http-types ==0.8.6,
-             HUnit ==1.2.5.2,
-             hweblib ==0.6.3,
-             hxt ==9.3.1.15,
-             hxt-charproperties ==9.2.0.1,
-             hxt-curl ==9.1.1.1,
-             hxt-expat ==9.1.1,
-             hxt-http ==9.1.5.2,
-             hxt-pickle-utils ==0.1.0.3,
-             hxt-regex-xmlschema ==9.2.0.2,
-             hxt-relaxng ==9.1.5.5,
-             hxt-tagsoup ==9.1.3,
-             hxt-unicode ==9.0.2.4,
-             hybrid-vectors ==0.1.2.1,
-             hyphenation ==0.4.2.1,
-             iconv ==0.4.1.2,
-             ide-backend ==0.9.0.9,
-             ide-backend-common ==0.9.1.1,
-             ide-backend-rts ==0.1.3.1,
-             idna ==0.3.0,
-             ieee754 ==0.7.6,
-             IfElse ==0.85,
-             imagesize-conduit ==1.1,
-             immortal ==0.2,
-             include-file ==0.1.0.2,
-             incremental-parser ==0.2.3.4,
-             indents ==0.3.3,
-             ini ==0.3.1,
-             integer-gmp installed,
-             integration ==0.2.1,
-             interpolate ==0.1.0,
-             interpolatedstring-perl6 ==0.9.0,
-             intervals ==0.7.1,
-             io-choice ==0.0.5,
-             io-manager ==0.1.0.2,
-             io-memoize ==1.1.1.0,
-             iproute ==1.3.2,
-             iterable ==3.0,
-             ixset ==1.0.6,
-             jmacro ==0.6.12,
-             jmacro-rpc ==0.3.2,
-             jmacro-rpc-happstack ==0.3.2,
-             jmacro-rpc-snap ==0.3,
-             jose-jwt ==0.4.2,
-             js-flot ==0.8.3,
-             js-jquery ==1.11.3,
-             json ==0.9.1,
-             json-autotype ==0.2.5.13,
-             json-schema ==0.7.3.5,
-             JuicyPixels ==3.2.4,
-             JuicyPixels-repa ==0.7,
-             kan-extensions ==4.2.2,
-             kansas-comet ==0.3.1,
-             kdt ==0.2.3,
-             keter ==1.3.10.1,
-             keys ==3.10.2,
-             kmeans ==0.1.3,
-             koofr-client ==1.0.0.3,
-             kure ==2.16.10,
-             language-c ==0.4.7,
-             language-c-quote ==0.10.2.1,
-             language-ecmascript ==0.17,
-             language-glsl ==0.1.1,
-             language-haskell-extract ==0.2.4,
-             language-java ==0.2.7,
-             language-javascript ==0.5.13.3,
-             lattices ==1.2.1.1,
-             lazy-csv ==0.5,
-             lca ==0.3,
-             lens ==4.7.0.1,
-             lens-action ==0.1.0.1,
-             lens-aeson ==1.0.0.4,
-             lens-family-core ==1.2.0,
-             lens-family-th ==0.4.1.0,
-             lhs2tex ==1.19,
-             libgit ==0.3.1,
-             libnotify ==0.1.1.0,
-             lifted-async ==0.7.0.1,
-             lifted-base ==0.2.3.6,
-             linear ==1.18.1.1,
-             linear-accelerate ==0.2,
-             List ==0.5.2,
-             ListLike ==4.2.0,
-             list-t ==0.4.5.1,
-             loch-th ==0.2.1,
-             log-domain ==0.10.0.1,
-             logict ==0.6.0.2,
-             loop ==0.2.0,
-             lrucache ==1.2.0.0,
-             lucid ==2.9.2,
-             lucid-svg ==0.4.0.4,
-             lzma-conduit ==1.1.3,
-             machines ==0.4.1,
-             machines-directory ==0.2.0.6,
-             machines-io ==0.2.0.6,
-             machines-process ==0.2.0.4,
-             mainland-pretty ==0.2.7.2,
-             managed ==1.0.0,
-             mandrill ==0.2.2.0,
-             map-syntax ==0.2,
-             markdown ==0.1.13.2,
-             markdown-unlit ==0.2.0.1,
-             math-functions ==0.1.5.2,
-             matrix ==0.3.4.3,
-             maximal-cliques ==0.1.1,
-             MaybeT ==0.1.2,
-             mbox ==0.3.1,
-             MemoTrie ==0.6.2,
-             mersenne-random-pure64 ==0.2.0.4,
-             messagepack ==0.3.0,
-             messagepack-rpc ==0.1.0.3,
-             MFlow ==0.4.5.9,
-             mime-mail ==0.4.8.2,
-             mime-mail-ses ==0.3.2.2,
-             mime-types ==0.1.0.6,
-             missing-foreign ==0.1.1,
-             MissingH ==1.3.0.1,
-             mmap ==0.5.9,
-             mmorph ==1.0.4,
-             MonadCatchIO-transformers ==0.3.1.3,
-             monad-control ==1.0.0.4,
-             monad-coroutine ==0.9.0.1,
-             monadcryptorandom ==0.6.1,
-             monadic-arrays ==0.2.1.4,
-             monad-journal ==0.7,
-             monadLib ==3.7.3,
-             monadloc ==0.7.1,
-             monad-logger ==0.3.13.1,
-             monad-logger-json ==0.1.0.0,
-             monad-logger-syslog ==0.1.1.1,
-             monad-loops ==0.4.2.1,
-             monad-par ==0.3.4.7,
-             monad-parallel ==0.7.1.4,
-             monad-par-extras ==0.3.3,
-             monad-primitive ==0.1,
-             monad-products ==4.0.0.1,
-             MonadPrompt ==1.0.0.5,
-             MonadRandom ==0.3.0.2,
-             monad-st ==0.2.4,
-             monads-tf ==0.1.0.2,
-             mongoDB ==2.0.5,
-             monoid-extras ==0.3.3.5,
-             monoid-subclasses ==0.4.0.4,
-             mono-traversable ==0.9.1,
-             mtl ==2.1.3.1,
-             mtl-compat ==0.2.1.1,
-             mtlparse ==0.1.4.0,
-             mtl-prelude ==1.0.3,
-             multiarg ==0.30.0.8,
-             multimap ==1.2.1,
-             multipart ==0.1.2,
-             MusicBrainz ==0.2.4,
-             mutable-containers ==0.3.0,
-             mwc-random ==0.13.3.2,
-             mysql ==0.1.1.8,
-             mysql-simple ==0.2.2.5,
-             nanospec ==0.2.1,
-             nats ==1,
-             neat-interpolation ==0.2.2.1,
-             nettle ==0.1.0,
-             network ==2.6.1.0,
-             network-anonymous-i2p ==0.10.0,
-             network-attoparsec ==0.12.2,
-             network-conduit ==1.1.0,
-             network-conduit-tls ==1.1.2,
-             network-info ==0.2.0.5,
-             network-multicast ==0.0.11,
-             network-simple ==0.4.0.4,
-             network-transport ==0.4.1.0,
-             network-transport-tcp ==0.4.1,
-             network-transport-tests ==0.2.2.0,
-             network-uri ==2.6.0.3,
-             newtype ==0.2,
-             nsis ==0.2.5,
-             numbers ==3000.2.0.1,
-             numeric-extras ==0.0.3,
-             NumInstances ==1.4,
-             numtype ==1.1,
-             ObjectName ==1.1.0.0,
-             Octree ==0.5.4.2,
-             old-locale installed,
-             old-time installed,
-             OneTuple ==0.2.1,
-             opaleye ==0.3.1.2,
-             OpenGL ==2.12.0.1,
-             OpenGLRaw ==2.4.1.0,
-             openpgp-asciiarmor ==0.1,
-             operational ==0.2.3.2,
-             options ==1.2.1.1,
-             optparse-applicative ==0.11.0.2,
-             optparse-simple ==0.0.2,
-             osdkeys ==0.0,
-             pagerduty ==0.0.3.1,
-             palette ==0.1.0.2,
-             pandoc ==1.13.2.1,
-             pandoc-citeproc ==0.6.0.1,
-             pandoc-types ==1.12.4.2,
-             pango ==0.13.1.0,
-             parallel ==3.2.0.6,
-             parallel-io ==0.3.3,
-             parseargs ==0.1.5.2,
-             parsec ==3.1.9,
-             parsers ==0.12.2.1,
-             partial-handler ==0.1.1,
-             path-pieces ==0.2.0,
-             patience ==0.1.1,
-             pcre-heavy ==0.2.2,
-             pcre-light ==0.4.0.3,
-             pdfinfo ==1.5.4,
-             pem ==0.2.2,
-             persistent ==2.1.5,
-             persistent-mongoDB ==2.1.2.2,
-             persistent-mysql ==2.1.3.1,
-             persistent-postgresql ==2.1.5.3,
-             persistent-sqlite ==2.1.4.2,
-             persistent-template ==2.1.3.1,
-             phantom-state ==0.2.0.2,
-             picoparsec ==0.1.2.2,
-             pipes ==4.1.5,
-             pipes-aeson ==0.4.1.3,
-             pipes-attoparsec ==0.5.1.2,
-             pipes-binary ==0.4.0.4,
-             pipes-bytestring ==2.1.1,
-             pipes-concurrency ==2.0.3,
-             pipes-group ==1.0.2,
-             pipes-network ==0.6.4,
-             pipes-parse ==3.0.2,
-             pipes-safe ==2.2.2,
-             placeholders ==0.1,
-             plot ==0.2.3.4,
-             plot-gtk ==0.2.0.2,
-             plot-gtk3 ==0.1,
-             pointed ==4.2.0.2,
-             polyparse ==1.11,
-             postgresql-binary ==0.5.2.1,
-             postgresql-libpq ==0.9.0.2,
-             postgresql-simple ==0.4.10.0,
-             post-mess-age ==0.1.0.0,
-             prednote ==0.32.0.6,
-             prefix-units ==0.1.0.2,
-             prelude-extras ==0.4,
-             presburger ==1.3.1,
-             present ==2.2,
-             pretty installed,
-             prettyclass ==1.0.0.0,
-             pretty-class ==1.0.1.1,
-             pretty-show ==1.6.8.2,
-             primes ==0.2.1.0,
-             primitive ==0.6,
-             process installed,
-             process-extras ==0.3.3.4,
-             product-profunctors ==0.6.1,
-             profunctor-extras ==4.0,
-             profunctors ==4.4.1,
-             project-template ==0.1.4.2,
-             PSQueue ==1.1,
-             publicsuffixlist ==0.1,
-             punycode ==2.0,
-             pure-io ==0.2.1,
-             pureMD5 ==2.1.2.1,
-             pwstore-fast ==2.4.4,
-             quandl-api ==0.2.1.0,
-             QuasiText ==0.1.2.5,
-             QuickCheck ==2.7.6,
-             quickcheck-assertions ==0.2.0,
-             quickcheck-instances ==0.3.11,
-             quickcheck-io ==0.1.1,
-             quickcheck-unicode ==1.0.0.1,
-             rainbow ==0.22.0.2,
-             random ==1.1,
-             random-fu ==0.2.6.2,
-             random-shuffle ==0.0.4,
-             random-source ==0.3.0.6,
-             rank1dynamic ==0.2.0.1,
-             Rasterific ==0.5.2.1,
-             rasterific-svg ==0.1.0.3,
-             raw-strings-qq ==1.0.2,
-             ReadArgs ==1.2.2,
-             reducers ==3.10.3.1,
-             reflection ==1.5.2.1,
-             RefSerialize ==0.3.1.4,
-             regex-applicative ==0.3.1,
-             regex-base ==0.93.2,
-             regex-compat ==0.95.1,
-             regex-pcre-builtin ==0.94.4.8.8.35,
-             regex-posix ==0.95.2,
-             regexpr ==0.5.4,
-             regex-tdfa ==1.2.0,
-             regex-tdfa-rc ==1.1.8.3,
-             regular ==0.3.4.4,
-             regular-xmlpickler ==0.2,
-             rematch ==0.2.0.0,
-             repa ==3.3.1.2,
-             repa-algorithms ==3.3.1.2,
-             repa-devil ==0.3.2.6,
-             repa-io ==3.3.1.2,
-             reroute ==0.2.3.0,
-             resource-pool ==0.2.3.2,
-             resourcet ==1.1.5,
-             rest-client ==0.5.0.3,
-             rest-core ==0.35.1,
-             rest-gen ==0.17.0.4,
-             rest-happstack ==0.2.10.8,
-             rest-snap ==0.1.17.18,
-             rest-stringmap ==0.2.0.4,
-             rest-types ==1.13.1,
-             rest-wai ==0.1.0.8,
-             rethinkdb-client-driver ==0.0.18,
-             retry ==0.6,
-             rev-state ==0.1,
-             rfc5051 ==0.1.0.3,
-             RSA ==2.1.0.1,
-             rts installed,
-             runmemo ==1.0.0.1,
-             rvar ==0.2.0.2,
-             safe ==0.3.9,
-             safecopy ==0.8.5,
-             sbv ==4.2,
-             scientific ==0.3.3.8,
-             scotty ==0.9.1,
-             scrobble ==0.2.1.1,
-             sdl2 ==1.3.1,
-             securemem ==0.1.7,
-             semigroupoid-extras ==4.0,
-             semigroupoids ==4.3,
-             semigroups ==0.16.2.2,
-             semver ==0.3.3.1,
-             sendfile ==0.7.9,
-             seqloc ==0.6.1.1,
-             servant ==0.2.2,
-             servant-client ==0.2.2,
-             servant-docs ==0.3.1,
-             servant-jquery ==0.2.2.1,
-             servant-server ==0.2.4,
-             setenv ==0.1.1.3,
-             set-monad ==0.2.0.0,
-             SHA ==1.6.4.2,
-             shake ==0.15.2,
-             shake-language-c ==0.6.4,
-             shakespeare ==2.0.5,
-             shakespeare-text ==1.1.0,
-             shell-conduit ==4.5.2,
-             shelltestrunner ==1.3.5,
-             shelly ==1.6.1.2,
-             silently ==1.2.4.1,
-             simple-reflect ==0.3.2,
-             simple-sendfile ==0.2.20,
-             singletons ==1.1.2,
-             siphash ==1.0.3,
-             skein ==1.0.9.3,
-             slave-thread ==0.1.6,
-             smallcheck ==1.1.1,
-             smoothie ==0.1.3,
-             smtLib ==1.0.7,
-             snap ==0.14.0.4,
-             snap-core ==0.9.7.0,
-             snaplet-fay ==0.3.3.11,
-             snap-server ==0.9.5.1,
-             snowflake ==0.1.1.1,
-             soap ==0.2.2.5,
-             soap-openssl ==0.1.0.2,
-             soap-tls ==0.1.1.2,
-             socks ==0.5.4,
-             sodium ==0.11.0.3,
-             sourcemap ==0.1.3.0,
-             speculation ==1.5.0.2,
-             sphinx ==0.6.0.1,
-             split ==0.2.2,
-             Spock ==0.7.9.0,
-             Spock-digestive ==0.1.0.0,
-             Spock-worker ==0.2.1.3,
-             spoon ==0.3.1,
-             sqlite-simple ==0.4.8.0,
-             srcloc ==0.4.1,
-             stackage ==0.7.2.0,
-             stackage-build-plan ==0.1.1.0,
-             stackage-cli ==0.1.0.2,
-             stackage-curator ==0.7.4,
-             stackage-install ==0.1.1.1,
-             stackage-types ==1.0.1.1,
-             stackage-update ==0.1.2,
-             stackage-upload ==0.1.0.5,
-             stateref ==0.3,
-             statestack ==0.2.0.4,
-             StateVar ==1.1.0.0,
-             statistics ==0.13.2.3,
-             statistics-linreg ==0.3,
-             stm ==2.4.4,
-             stm-chans ==3.0.0.3,
-             stm-conduit ==2.5.4,
-             stm-containers ==0.2.9,
-             stm-stats ==0.2.0.0,
-             storable-complex ==0.2.2,
-             storable-endian ==0.2.5,
-             streaming-commons ==0.1.12.1,
-             streams ==3.2,
-             strict ==0.3.2,
-             stringable ==0.1.3,
-             stringbuilder ==0.5.0,
-             string-conversions ==0.3.0.3,
-             stringprep ==1.0.0,
-             stringsearch ==0.3.6.6,
-             stylish-haskell ==0.5.13.0,
-             SVGFonts ==1.4.0.3,
-             svg-tree ==0.1.1,
-             syb ==0.4.4,
-             syb-with-class ==0.6.1.5,
-             symbol ==0.2.4,
-             system-canonicalpath ==0.3.2.0,
-             system-fileio ==0.3.16.3,
-             system-filepath ==0.4.13.4,
-             system-posix-redirect ==1.1.0.1,
-             tabular ==0.2.2.7,
-             tagged ==0.7.3,
-             tagshare ==0.0,
-             tagsoup ==0.13.3,
-             tagstream-conduit ==0.5.5.3,
-             tar ==0.4.1.0,
-             tardis ==0.3.0.0,
-             tasty ==0.10.1.2,
-             tasty-ant-xml ==1.0.1,
-             tasty-golden ==2.3.0.1,
-             tasty-hunit ==0.9.2,
-             tasty-kat ==0.0.3,
-             tasty-quickcheck ==0.8.3.2,
-             tasty-smallcheck ==0.8.0.1,
-             tasty-th ==0.1.3,
-             TCache ==0.12.0,
-             template-haskell installed,
-             temporary ==1.2.0.3,
-             temporary-rc ==1.2.0.3,
-             terminal-progress-bar ==0.0.1.4,
-             terminal-size ==0.3.0,
-             terminfo installed,
-             test-framework ==0.8.1.1,
-             test-framework-hunit ==0.3.0.1,
-             test-framework-quickcheck2 ==0.3.0.3,
-             test-framework-th ==0.2.4,
-             testing-feat ==0.4.0.2,
-             testpack ==2.1.3.0,
-             texmath ==0.8.2,
-             text ==1.2.0.6,
-             text-binary ==0.1.0,
-             text-format ==0.3.1.1,
-             text-icu ==0.7.0.1,
-             text-manipulate ==0.1.3.1,
-             tf-random ==0.5,
-             th-desugar ==1.5.3,
-             th-expand-syns ==0.3.0.6,
-             th-extras ==0.0.0.2,
-             th-lift ==0.7.2,
-             th-orphans ==0.11.1,
-             threads ==0.5.1.3,
-             th-reify-many ==0.1.3,
-             thyme ==0.3.5.5,
-             time installed,
-             time-compat ==0.1.0.3,
-             time-lens ==0.4.0.1,
-             time-locale-compat ==0.1.0.1,
-             timezone-olson ==0.1.7,
-             timezone-series ==0.1.5.1,
-             tls ==1.2.17,
-             tls-debug ==0.3.4,
-             tostring ==0.2.1.1,
-             transformers installed,
-             transformers-base ==0.4.4,
-             transformers-compat ==0.4.0.3,
-             traverse-with-class ==0.2.0.3,
-             tree-view ==0.4,
-             trifecta ==1.5.1.3,
-             tttool ==1.3,
-             tuple ==0.3.0.2,
-             turtle ==1.0.2,
-             type-eq ==0.5,
-             type-list ==0.0.0.1,
-             udbus ==0.2.1,
-             unbounded-delays ==0.1.0.9,
-             unbound-generics ==0.1.2.1,
-             union-find ==0.2,
-             uniplate ==1.6.12,
-             unix installed,
-             unix-compat ==0.4.1.4,
-             unix-time ==0.3.5,
-             unordered-containers ==0.2.5.1,
-             uri-encode ==1.5.0.4,
-             url ==2.1.3,
-             users ==0.1.0.0,
-             users-postgresql-simple ==0.1.0.1,
-             users-test ==0.1.0.0,
-             utf8-light ==0.4.2,
-             utf8-string ==1,
-             uuid ==1.3.10,
-             uuid-types ==1.0.1,
-             vault ==0.3.0.4,
-             vector ==0.10.12.3,
-             vector-algorithms ==0.6.0.4,
-             vector-binary-instances ==0.2.1.0,
-             vector-buffer ==0.4.1,
-             vector-instances ==3.3.0.1,
-             vector-space ==0.9,
-             vector-space-points ==0.2.1.1,
-             vector-th-unbox ==0.2.1.2,
-             vhd ==0.2.2,
-             void ==0.7,
-             wai ==3.0.2.3,
-             wai-app-static ==3.0.1.1,
-             wai-conduit ==3.0.0.2,
-             wai-eventsource ==3.0.0,
-             wai-extra ==3.0.7.1,
-             wai-handler-launch ==3.0.0.3,
-             wai-logger ==2.2.4,
-             wai-middleware-consul ==0.1.0.2,
-             wai-middleware-static ==0.6.0.1,
-             waitra ==0.0.3.0,
-             wai-websockets ==3.0.0.5,
-             warp ==3.0.13.1,
-             warp-tls ==3.0.3,
-             webdriver ==0.6.1,
-             web-fpco ==0.1.1.0,
-             websockets ==0.9.4.0,
-             wizards ==1.0.2,
-             wl-pprint ==1.1,
-             wl-pprint-extras ==3.5.0.4,
-             wl-pprint-terminfo ==3.7.1.3,
-             wl-pprint-text ==1.1.0.4,
-             word8 ==0.1.2,
-             wordpass ==1.0.0.3,
-             Workflow ==0.8.3,
-             wrap ==0.0.0,
-             wreq ==0.3.0.1,
-             X11 ==1.6.1.2,
-             x509 ==1.5.0.1,
-             x509-store ==1.5.0,
-             x509-system ==1.5.0,
-             x509-validation ==1.5.2,
-             xenstore ==0.1.1,
-             xhtml installed,
-             xml ==1.3.14,
-             xml-conduit ==1.2.6,
-             xml-conduit-writer ==0.1.1.1,
-             xmlgen ==0.6.2.1,
-             xml-hamlet ==0.4.0.11,
-             xmlhtml ==0.2.3.4,
-             xml-to-json ==2.0.1,
-             xml-to-json-fast ==2.0.0,
-             xml-types ==0.3.4,
-             xss-sanitize ==0.3.5.5,
-             yackage ==0.7.0.8,
-             yaml ==0.8.11,
-             Yampa ==0.9.7,
-             YampaSynth ==0.2,
-             yarr ==1.3.3.3,
-             yesod ==1.4.1.5,
-             yesod-auth ==1.4.5,
-             yesod-auth-deskcom ==1.4.0,
-             yesod-auth-fb ==1.6.6,
-             yesod-auth-hashdb ==1.4.2.1,
-             yesod-auth-oauth ==1.4.0.2,
-             yesod-auth-oauth2 ==0.0.12,
-             yesod-bin ==1.4.9.2,
-             yesod-core ==1.4.9.1,
-             yesod-eventsource ==1.4.0.1,
-             yesod-fay ==0.7.1,
-             yesod-fb ==0.3.4,
-             yesod-form ==1.4.4.1,
-             yesod-gitrepo ==0.1.1.0,
-             yesod-newsfeed ==1.4.0.1,
-             yesod-persistent ==1.4.0.2,
-             yesod-sitemap ==1.4.0.1,
-             yesod-static ==1.4.0.4,
-             yesod-test ==1.4.3.1,
-             yesod-text-markdown ==0.1.7,
-             yesod-websockets ==0.2.1.1,
-             zeromq4-haskell ==0.6.3,
-             zip-archive ==0.2.3.7,
-             zlib ==0.5.4.2,
-             zlib-bindings ==0.1.1.5,
-             zlib-enum ==0.2.3.1,
-             zlib-lens ==0.1.2
diff --git a/standalone/linux/haskell-patches/network_disable_accept4.patch b/standalone/linux/haskell-patches/network_disable_accept4.patch
deleted file mode 100644
--- a/standalone/linux/haskell-patches/network_disable_accept4.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f89652f762cf40e4c737fc1b9d6f395eb8df1959 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Mon, 10 Mar 2014 13:28:25 -0400
-Subject: [PATCH] disable use of accept4, for compatability with older systems
-
-See http://git-annex.branchable.com/bugs/Assistant_lost_dbus_connection_spamming_log/
----
- Network/Socket.hsc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Network/Socket.hsc b/Network/Socket.hsc
-index 6d304bb..d7fe733 100644
---- a/Network/Socket.hsc
-+++ b/Network/Socket.hsc
-@@ -510,7 +510,7 @@ accept sock@(MkSocket s family stype protocol status) = do
-                 return new_sock
- #else
-      with (fromIntegral sz) $ \ ptr_len -> do
--# ifdef HAVE_ACCEPT4
-+# if 0
-      new_sock <- throwSocketErrorIfMinus1RetryMayBlock "accept"
-                         (threadWaitRead (fromIntegral s))
-                         (c_accept4 s sockaddr ptr_len (#const SOCK_NONBLOCK))
--- 
-1.9.0
-
diff --git a/standalone/linux/install-haskell-packages b/standalone/linux/install-haskell-packages
deleted file mode 100644
--- a/standalone/linux/install-haskell-packages
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/bash
-# Bootstraps from an empty cabal (plus apt-get build-dep git-annex)
-# to all the necessary haskell packages being installed.
-# Some packages are patched for wider portability.
-#
-# The cabal.config is used to pin the haskell packages to the last
-# versions that have been gotten working. To update, delete the
-# cabal.config, run this script with an empty cabal and fix up the broken
-# patches, and then use cabal freeze to generate a new cabal.config.
-
-set -e
-
-if [ ! -d haskell-patches ]; then
-	cd standalone/linux
-fi
-
-cabalopts="$@"
-
-cabalinstall () {
-	echo cabal install -j1 "$@" "$cabalopts"
-	eval cabal install -j1 "$@" "$cabalopts"
-}
-
-patched () {
-	pkg=$1
-	ver=$2
-        if [ -z "$ver" ]; then
-                ver="$(grep " $pkg " ../cabal.config | cut -d= -f 3 | sed 's/,$//')"
-        fi
-        if [ -z "$ver" ]; then
-                cabal unpack --pristine $pkg
-        else
-                cabal unpack --pristine $pkg-$ver
-        fi
-	cd $pkg*
-	git init
-	git config user.name dummy
-	git config user.email dummy@example.com
-	git add .
-	git commit -m "pre-patched state of $pkg"
-	ln -sf ../../cabal.config
-	for patch in ../../haskell-patches/${pkg}_* ../../../no-th/haskell-patches/${pkg}_*; do
-		if [ -e "$patch" ]; then
-			echo trying $patch
-			if ! patch -p1 < $patch; then
-				echo "failed to apply $patch"
-				echo "please resolve this, replace the patch with a new version, and exit the subshell to continue"
-				$SHELL
-			fi
-		fi
-	done
-	cabalinstall
-	rm -f cabal.config
-	cd ..
-	rm -rf $pkg*
-}
-
-installgitannexdeps () {
-	pushd ../..
-	ln -sf standalone/linux/cabal.config
-	echo cabal install --only-dependencies "$@"
-	cabal install -j1 --only-dependencies "$@"
-	rm -f cabal.config
-	popd
-}
-
-install_pkgs () {
-	rm -rf tmp
-	mkdir tmp
-	cd tmp
-
-	patched network
-
-	cd ..
-
-	installgitannexdeps
-}
-
-cabal update
-
-# Some packages fail to install in a non unicode locale.
-LANG=C.UTF-8
-export LANG
-
-install_pkgs
diff --git a/standalone/linux/skel/README b/standalone/linux/skel/README
deleted file mode 100644
--- a/standalone/linux/skel/README
+++ /dev/null
@@ -1,20 +0,0 @@
-You can put this directory into your PATH, or symlink the programs in this
-directory to anyplace already in your PATH, and use git-annex the same
-as if you'd installed it using a package manager.
-
-Or, you can use the runshell script in this directory to start a shell
-that is configured to use git-annex and the other utilities included in
-this bundle, including git, gpg, rsync, ssh, etc.
-
-This should work on any Linux system of the appropriate architecture.
-More or less.
-
-
-How it works: This directory tree contains a lot of libraries and programs
-that git-annex needs. But it's not a chroot. Instead, runshell sets a lot
-of environment variables to cause files from here to be used, and a shim
-around the binaries arranges for them to be run with the libraries in here.
-
-It shouldn't even be dependent on the host system's glibc libraries.
-All that's needed is a kernel that supports the glibc included in this
-bundle.
diff --git a/standalone/linux/skel/git b/standalone/linux/skel/git
deleted file mode 100644
--- a/standalone/linux/skel/git
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/bin/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git "$@"
diff --git a/standalone/linux/skel/git-annex b/standalone/linux/skel/git-annex
deleted file mode 100644
--- a/standalone/linux/skel/git-annex
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/bin/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-annex "$@"
diff --git a/standalone/linux/skel/git-annex-shell b/standalone/linux/skel/git-annex-shell
deleted file mode 100644
--- a/standalone/linux/skel/git-annex-shell
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/bin/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-annex-shell "$@"
diff --git a/standalone/linux/skel/git-annex-webapp b/standalone/linux/skel/git-annex-webapp
deleted file mode 100644
--- a/standalone/linux/skel/git-annex-webapp
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/bin/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-annex webapp "$@"
diff --git a/standalone/linux/skel/git-receive-pack b/standalone/linux/skel/git-receive-pack
deleted file mode 100644
--- a/standalone/linux/skel/git-receive-pack
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/bin/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-receive-pack "$@"
diff --git a/standalone/linux/skel/git-shell b/standalone/linux/skel/git-shell
deleted file mode 100644
--- a/standalone/linux/skel/git-shell
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/bin/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-shell "$@"
diff --git a/standalone/linux/skel/git-upload-pack b/standalone/linux/skel/git-upload-pack
deleted file mode 100644
--- a/standalone/linux/skel/git-upload-pack
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink -f "$0" 2>/dev/null || readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/bin/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-upload-pack "$@"
diff --git a/standalone/linux/skel/runshell b/standalone/linux/skel/runshell
deleted file mode 100644
--- a/standalone/linux/skel/runshell
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/sh
-# Runs a shell command (or interactive shell) using the binaries and
-# libraries bundled with this app.
-
-set -e
-
-base="$(dirname "$0")"
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-
-if [ ! -e "$base/bin/git-annex" ]; then
-	echo "** base directory $base does not contain bin/git-annex" >&2
-	exit 1
-fi
-if [ ! -e "$base/bin/git" ]; then
-	echo "** base directory $base does not contain bin/git" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# --library-path won't work if $base contains : or ;
-# Detect this problem, and work around it by using a temp directory.
-if echo "$base" | grep -q '[:;]'; then
-	tbase=$(mktemp -d -p /tmp annexshimXXXXXXXXX 2>/dev/null || true)
-	if [ -z "$tbase" ]; then
-		tbase="/tmp/annexshim.$$"
-		mkdir "$tbase"
-	fi
-	ln -s "$base" "$tbase/link"
-	base="$tbase/link"
-	cleanuptbase () {
-		rm -rf "$tbase"
-	}
-	trap cleanuptbase EXIT
-fi
-
-# Set this variable when using this script inside a package of git-annex,
-# which arranges for git-annex, git-annex-shell, and git to all be in the
-# standard PATH.
-GIT_ANNEX_PACKAGE_INSTALL=
-if [ -z "$GIT_ANNEX_PACKAGE_INSTALL" ]; then
-	# Install shim that's used to run git-annex-shell from ssh authorized
-	# keys. The assistant also does this when run, but the user may not
-	# be using the assistant.
-	if [ ! -e "$HOME/.ssh/git-annex-shell" ]; then
-		mkdir "$HOME/.ssh" >/dev/null 2>&1 || true
-		if [ -e "$HOME/.ssh" ]; then
-			(
-				echo "#!/bin/sh"
-				echo "set -e"
-				echo "if [ \"x\$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then"
-				echo "exec '$base/runshell' git-annex-shell -c \"\$SSH_ORIGINAL_COMMAND\""
-				echo "else"
-				echo "exec '$base/runshell' git-annex-shell -c \"\$@\""
-				echo "fi"
-			) > "$HOME/.ssh/git-annex-shell"
-			chmod +x "$HOME/.ssh/git-annex-shell"
-		fi
-	fi
-
-	# And this shim is used by the webapp when adding a remote ssh server.
-	if [ ! -e "$HOME/.ssh/git-annex-wrapper" ]; then
-		mkdir "$HOME/.ssh" >/dev/null 2>&1 || true
-		if [ -e "$HOME/.ssh" ]; then
-			(
-				echo "#!/bin/sh"
-				echo "set -e"
-				echo "exec '$base/runshell' \"\$@\""
-			) > "$HOME/.ssh/git-annex-wrapper"
-			chmod +x "$HOME/.ssh/git-annex-wrapper"
-		fi
-	fi
-fi
-
-# Put our binaries first, to avoid issues with out of date or incompatable
-# system binaries. Extra binaries come after system path.
-ORIG_PATH="$PATH"
-export ORIG_PATH
-PATH="$base/bin:$PATH:$base/extra"
-export PATH
-
-# These env vars are used by the shim wrapper around each binary.
-for lib in $(cat "$base/libdirs"); do
-	GIT_ANNEX_LD_LIBRARY_PATH="$base/$lib:$GIT_ANNEX_LD_LIBRARY_PATH"
-done
-export GIT_ANNEX_LD_LIBRARY_PATH
-GIT_ANNEX_DIR="$base"
-export GIT_ANNEX_DIR
-
-ORIG_GCONV_PATH="$GCONV_PATH"
-export ORIG_GCONV_PATH
-GCONV_PATH="$base/$(cat "$base/gconvdir")"
-export GCONV_PATH
-
-ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH"
-export ORIG_GIT_EXEC_PATH
-GIT_EXEC_PATH="$base/git-core"
-export GIT_EXEC_PATH
-
-ORIG_GIT_TEMPLATE_DIR="$GIT_TEMPLATE_DIR"
-export ORIG_GIT_TEMPLATE_DIR
-GIT_TEMPLATE_DIR="$base/templates"
-export GIT_TEMPLATE_DIR
-
-ORIG_MANPATH="$MANPATH"
-export ORIG_MANPATH
-MANPATH="$base/usr/share/man:$MANPATH"
-export MANPATH
-
-# Indicate which variables were exported above and should be cleaned
-# when running non-bundled programs.
-GIT_ANNEX_STANDLONE_ENV="PATH GCONV_PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR MANPATH"
-export GIT_ANNEX_STANDLONE_ENV
-
-if [ "$1" ]; then
-	cmd="$1"
-	shift 1
-	if [ -z "$tbase" ]; then
-		exec "$cmd" "$@"
-	else
-		# allow EXIT trap to cleanup
-		"$cmd" "$@"
-	fi
-else
-	sh
-fi
diff --git a/standalone/no-th/evilsplicer-headers.hs b/standalone/no-th/evilsplicer-headers.hs
deleted file mode 100644
--- a/standalone/no-th/evilsplicer-headers.hs
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-{- This file was modified by the EvilSplicer, adding these headers,
- - and expanding Template Haskell. 
- -
- - ** DO NOT COMMIT ** 
- -}
-import qualified Data.Monoid
-import qualified Control.Applicative
-import qualified Data.Set
-import qualified Data.Set as Data.Set.Base
-import qualified Data.Map
-import qualified Data.Map as Data.Map.Base
-import qualified Data.HashMap.Strict
-import qualified Data.HashMap.Strict as Data.HashMap.Base
-import qualified Data.Foldable
-import qualified Data.Text
-import qualified Data.Text.Lazy.Builder
-import qualified Data.Text.Lazy.Builder as Data.Text.Internal.Builder
-import qualified Text.Shakespeare
-import qualified Text.Hamlet
-import qualified Text.Julius
-import qualified Text.Css
-import qualified "blaze-markup" Text.Blaze.Internal
-import qualified Yesod.Core.Widget
-import qualified Yesod.Routes.TH.Types
-import qualified Yesod.Core.Dispatch
-import qualified Yesod.Routes.Dispatch
-import qualified WaiAppStatic.Storage.Embedded
-import qualified WaiAppStatic.Storage.Embedded.Runtime
-import qualified Data.FileEmbed
-import qualified Data.ByteString.Internal
-import qualified Data.Text.Encoding
-import qualified Network.Wai
-import qualified Network.Wai as Network.Wai.Internal
-import qualified Yesod.Core.Types
-import qualified GHC.IO
-import qualified Data.ByteString.Unsafe
-import qualified Data.ByteString.Char8
-import qualified Database.Persist.Class as Database.Persist.Class.PersistField
-import qualified Database.Persist as Database.Persist.Class.PersistField
-import qualified Database.Persist.Sql as Database.Persist.Sql.Class
-import qualified Database.Persist.Sql as Database.Persist.Types.Base
-import qualified Control.Monad.Logger
-import qualified Control.Monad.IO.Class
-import qualified Control.Monad.Trans.Control
-import Database.Persist.Sql (fromPersistValue)
-{- End EvilSplicer headers. -}
-
-
diff --git a/standalone/no-th/haskell-patches/DAV_build-without-TH.patch b/standalone/no-th/haskell-patches/DAV_build-without-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/DAV_build-without-TH.patch
+++ /dev/null
@@ -1,420 +0,0 @@
-From e54cfacbb9fb24f75d3d93cd8ee6da67b161574f Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 16 Oct 2014 02:51:28 +0000
-Subject: [PATCH] remove TH
-
----
- DAV.cabal                       |  28 +----
- Network/Protocol/HTTP/DAV.hs    |  92 +++++++++++++---
- Network/Protocol/HTTP/DAV/TH.hs | 232 +++++++++++++++++++++++++++++++++++++++-
- 3 files changed, 306 insertions(+), 46 deletions(-)
-
-diff --git a/DAV.cabal b/DAV.cabal
-index 95fffd8..5669c51 100644
---- a/DAV.cabal
-+++ b/DAV.cabal
-@@ -47,33 +47,7 @@ library
-                      , utf8-string
-                      , xml-conduit >= 1.0          && < 1.3
-                      , xml-hamlet >= 0.4           && < 0.5
--executable hdav
--  main-is:           hdav.hs
--  ghc-options:       -Wall
--  build-depends:       base >= 4.5                 && < 5
--                     , bytestring
--                     , bytestring
--                     , case-insensitive >= 0.4
--                     , containers
--                     , data-default
--                     , either >= 4.3
--                     , errors
--                     , exceptions
--                     , http-client >= 0.2
--                     , http-client-tls >= 0.2
--                     , http-types >= 0.7
--                     , lens >= 3.0
--                     , mtl >= 2.1
--                     , optparse-applicative >= 0.10.0
--                     , transformers >= 0.3
--                     , transformers-base
--                     , utf8-string
--                     , xml-conduit >= 1.0          && < 1.3
--                     , xml-hamlet >= 0.4           && < 0.5
--  if flag(network-uri)
--    build-depends: network-uri >= 2.6, network >= 2.6
--  else
--    build-depends: network >= 2.3 && <2.6
-+                     , text
- 
- source-repository head
-   type:     git
-diff --git a/Network/Protocol/HTTP/DAV.hs b/Network/Protocol/HTTP/DAV.hs
-index 4c6d68f..55979b6 100644
---- a/Network/Protocol/HTTP/DAV.hs
-+++ b/Network/Protocol/HTTP/DAV.hs
-@@ -82,6 +82,7 @@ import Network.HTTP.Types (hContentType, Method, Status, RequestHeaders, unautho
- import qualified Text.XML as XML
- import Text.XML.Cursor (($/), (&/), element, node, fromDocument, checkName)
- import Text.Hamlet.XML (xml)
-+import qualified Data.Text
- 
- import Data.CaseInsensitive (mk)
- 
-@@ -330,31 +331,88 @@ withLockIfPossibleForDelete nocreate f = do
- propname :: XML.Document
- propname = XML.Document (XML.Prologue [] Nothing []) root []
-     where
--        root = XML.Element "D:propfind" (Map.fromList [("xmlns:D", "DAV:")]) [xml|
--<D:allprop>
--|]
-+        root = XML.Element "D:propfind" (Map.fromList [("xmlns:D", "DAV:")])  $         concat
-+          [[XML.NodeElement
-+              (XML.Element
-+                 (XML.Name
-+                    (Data.Text.pack "D:allprop") Nothing Nothing)
-+                 Map.empty
-+                 (concat []))]]
-+
- 
- locky :: XML.Document
- locky = XML.Document (XML.Prologue [] Nothing []) root []
-     where
--        root = XML.Element "D:lockinfo" (Map.fromList [("xmlns:D", "DAV:")]) [xml|
--<D:lockscope>
--  <D:exclusive>
--<D:locktype>
--  <D:write>
--<D:owner>Haskell DAV user
--|]
-+        root = XML.Element "D:lockinfo" (Map.fromList [("xmlns:D", "DAV:")])  $         concat
-+          [[XML.NodeElement
-+              (XML.Element
-+                 (XML.Name
-+                    (Data.Text.pack "D:lockscope") Nothing Nothing)
-+                 Map.empty
-+                 (concat
-+                    [[XML.NodeElement
-+                        (XML.Element
-+                           (XML.Name
-+                              (Data.Text.pack "D:exclusive") Nothing Nothing)
-+                           Map.empty
-+                           (concat []))]]))],
-+           [XML.NodeElement
-+              (XML.Element
-+                 (XML.Name
-+                    (Data.Text.pack "D:locktype") Nothing Nothing)
-+                 Map.empty
-+                 (concat
-+                    [[XML.NodeElement
-+                        (XML.Element
-+                           (XML.Name (Data.Text.pack "D:write") Nothing Nothing)
-+                           Map.empty
-+                           (concat []))]]))],
-+           [XML.NodeElement
-+              (XML.Element
-+                 (XML.Name (Data.Text.pack "D:owner") Nothing Nothing)
-+                 Map.empty
-+                 (concat
-+                    [[XML.NodeContent
-+                        (Data.Text.pack "Haskell DAV user")]]))]]
-+
- 
- calendarquery :: XML.Document
- calendarquery = XML.Document (XML.Prologue [] Nothing []) root []
-     where
--        root = XML.Element "C:calendar-query" (Map.fromList [("xmlns:D", "DAV:"),("xmlns:C", "urn:ietf:params:xml:ns:caldav")]) [xml|
--<D:prop>
--  <D:getetag>
--  <C:calendar-data>
--<C:filter>
--  <C:comp-filter name="VCALENDAR">
--|]
-+        root = XML.Element "C:calendar-query" (Map.fromList [("xmlns:D", "DAV:"),("xmlns:C", "urn:ietf:params:xml:ns:caldav")])  $         concat
-+          [[XML.NodeElement
-+              (XML.Element
-+                 (XML.Name (Data.Text.pack "D:prop") Nothing Nothing)
-+                 Map.empty
-+                 (concat
-+                    [[XML.NodeElement
-+                        (XML.Element
-+                           (XML.Name
-+                              (Data.Text.pack "D:getetag") Nothing Nothing)
-+                           Map.empty
-+                           (concat []))],
-+                     [XML.NodeElement
-+                        (XML.Element
-+                           (XML.Name
-+                              (Data.Text.pack "C:calendar-data") Nothing Nothing)
-+                           Map.empty
-+                           (concat []))]]))],
-+           [XML.NodeElement
-+              (XML.Element
-+                 (XML.Name (Data.Text.pack "C:filter") Nothing Nothing)
-+                 Map.empty
-+                 (concat
-+                    [[XML.NodeElement
-+                        (XML.Element
-+                           (XML.Name
-+                              (Data.Text.pack "C:comp-filter") Nothing Nothing)
-+                           (Map.insert
-+                              (XML.Name (Data.Text.pack "name") Nothing Nothing)
-+                              (Data.Text.concat
-+                                 [Data.Text.pack "VCALENDAR"])
-+                              Map.empty)
-+                           (concat []))]]))]]
-+
- 
- -- | Normally, DAVT actions act on the url that is provided to eg, evalDAVT.
- -- Sometimes, it's useful to adjust the url that is acted on, while
-diff --git a/Network/Protocol/HTTP/DAV/TH.hs b/Network/Protocol/HTTP/DAV/TH.hs
-index 0ecd476..1653bf6 100644
---- a/Network/Protocol/HTTP/DAV/TH.hs
-+++ b/Network/Protocol/HTTP/DAV/TH.hs
-@@ -20,9 +20,11 @@
- 
- module Network.Protocol.HTTP.DAV.TH where
- 
--import Control.Lens (makeLenses)
-+import Control.Lens
- import qualified Data.ByteString as B
- import Network.HTTP.Client (Manager, Request)
-+import qualified Data.Functor
-+import qualified Control.Lens.Type
- 
- data Depth = Depth0 | Depth1 | DepthInfinity
- instance Read Depth where
-@@ -47,4 +49,230 @@ data DAVContext = DAVContext {
-   , _lockToken :: Maybe B.ByteString
-   , _userAgent :: B.ByteString
- }
--makeLenses ''DAVContext
-+allowedMethods :: Control.Lens.Type.Lens' DAVContext [B.ByteString]
-+allowedMethods
-+  _f_a3iH
-+  (DAVContext __allowedMethods'_a3iI
-+              __baseRequest_a3iK
-+              __basicusername_a3iL
-+              __basicpassword_a3iM
-+              __complianceClasses_a3iN
-+              __depth_a3iO
-+              __httpManager_a3iP
-+              __lockToken_a3iQ
-+              __userAgent_a3iR)
-+  = ((\ __allowedMethods_a3iJ
-+        -> DAVContext
-+             __allowedMethods_a3iJ
-+             __baseRequest_a3iK
-+             __basicusername_a3iL
-+             __basicpassword_a3iM
-+             __complianceClasses_a3iN
-+             __depth_a3iO
-+             __httpManager_a3iP
-+             __lockToken_a3iQ
-+             __userAgent_a3iR)
-+     Data.Functor.<$> (_f_a3iH __allowedMethods'_a3iI))
-+{-# INLINE allowedMethods #-}
-+baseRequest :: Control.Lens.Type.Lens' DAVContext Request
-+baseRequest
-+  _f_a3iS
-+  (DAVContext __allowedMethods_a3iT
-+              __baseRequest'_a3iU
-+              __basicusername_a3iW
-+              __basicpassword_a3iX
-+              __complianceClasses_a3iY
-+              __depth_a3iZ
-+              __httpManager_a3j0
-+              __lockToken_a3j1
-+              __userAgent_a3j2)
-+  = ((\ __baseRequest_a3iV
-+        -> DAVContext
-+             __allowedMethods_a3iT
-+             __baseRequest_a3iV
-+             __basicusername_a3iW
-+             __basicpassword_a3iX
-+             __complianceClasses_a3iY
-+             __depth_a3iZ
-+             __httpManager_a3j0
-+             __lockToken_a3j1
-+             __userAgent_a3j2)
-+     Data.Functor.<$> (_f_a3iS __baseRequest'_a3iU))
-+{-# INLINE baseRequest #-}
-+basicpassword :: Control.Lens.Type.Lens' DAVContext B.ByteString
-+basicpassword
-+  _f_a3j3
-+  (DAVContext __allowedMethods_a3j4
-+              __baseRequest_a3j5
-+              __basicusername_a3j6
-+              __basicpassword'_a3j7
-+              __complianceClasses_a3j9
-+              __depth_a3ja
-+              __httpManager_a3jb
-+              __lockToken_a3jc
-+              __userAgent_a3jd)
-+  = ((\ __basicpassword_a3j8
-+        -> DAVContext
-+             __allowedMethods_a3j4
-+             __baseRequest_a3j5
-+             __basicusername_a3j6
-+             __basicpassword_a3j8
-+             __complianceClasses_a3j9
-+             __depth_a3ja
-+             __httpManager_a3jb
-+             __lockToken_a3jc
-+             __userAgent_a3jd)
-+     Data.Functor.<$> (_f_a3j3 __basicpassword'_a3j7))
-+{-# INLINE basicpassword #-}
-+basicusername :: Control.Lens.Type.Lens' DAVContext B.ByteString
-+basicusername
-+  _f_a3je
-+  (DAVContext __allowedMethods_a3jf
-+              __baseRequest_a3jg
-+              __basicusername'_a3jh
-+              __basicpassword_a3jj
-+              __complianceClasses_a3jk
-+              __depth_a3jl
-+              __httpManager_a3jm
-+              __lockToken_a3jn
-+              __userAgent_a3jo)
-+  = ((\ __basicusername_a3ji
-+        -> DAVContext
-+             __allowedMethods_a3jf
-+             __baseRequest_a3jg
-+             __basicusername_a3ji
-+             __basicpassword_a3jj
-+             __complianceClasses_a3jk
-+             __depth_a3jl
-+             __httpManager_a3jm
-+             __lockToken_a3jn
-+             __userAgent_a3jo)
-+     Data.Functor.<$> (_f_a3je __basicusername'_a3jh))
-+{-# INLINE basicusername #-}
-+complianceClasses ::
-+  Control.Lens.Type.Lens' DAVContext [B.ByteString]
-+complianceClasses
-+  _f_a3jp
-+  (DAVContext __allowedMethods_a3jq
-+              __baseRequest_a3jr
-+              __basicusername_a3js
-+              __basicpassword_a3jt
-+              __complianceClasses'_a3ju
-+              __depth_a3jw
-+              __httpManager_a3jx
-+              __lockToken_a3jy
-+              __userAgent_a3jz)
-+  = ((\ __complianceClasses_a3jv
-+        -> DAVContext
-+             __allowedMethods_a3jq
-+             __baseRequest_a3jr
-+             __basicusername_a3js
-+             __basicpassword_a3jt
-+             __complianceClasses_a3jv
-+             __depth_a3jw
-+             __httpManager_a3jx
-+             __lockToken_a3jy
-+             __userAgent_a3jz)
-+     Data.Functor.<$> (_f_a3jp __complianceClasses'_a3ju))
-+{-# INLINE complianceClasses #-}
-+depth :: Control.Lens.Type.Lens' DAVContext (Maybe Depth)
-+depth
-+  _f_a3jA
-+  (DAVContext __allowedMethods_a3jB
-+              __baseRequest_a3jC
-+              __basicusername_a3jD
-+              __basicpassword_a3jE
-+              __complianceClasses_a3jF
-+              __depth'_a3jG
-+              __httpManager_a3jI
-+              __lockToken_a3jJ
-+              __userAgent_a3jK)
-+  = ((\ __depth_a3jH
-+        -> DAVContext
-+             __allowedMethods_a3jB
-+             __baseRequest_a3jC
-+             __basicusername_a3jD
-+             __basicpassword_a3jE
-+             __complianceClasses_a3jF
-+             __depth_a3jH
-+             __httpManager_a3jI
-+             __lockToken_a3jJ
-+             __userAgent_a3jK)
-+     Data.Functor.<$> (_f_a3jA __depth'_a3jG))
-+{-# INLINE depth #-}
-+httpManager :: Control.Lens.Type.Lens' DAVContext (Maybe Manager)
-+httpManager
-+  _f_a3jL
-+  (DAVContext __allowedMethods_a3jM
-+              __baseRequest_a3jN
-+              __basicusername_a3jO
-+              __basicpassword_a3jP
-+              __complianceClasses_a3jQ
-+              __depth_a3jR
-+              __httpManager'_a3jS
-+              __lockToken_a3jU
-+              __userAgent_a3jV)
-+  = ((\ __httpManager_a3jT
-+        -> DAVContext
-+             __allowedMethods_a3jM
-+             __baseRequest_a3jN
-+             __basicusername_a3jO
-+             __basicpassword_a3jP
-+             __complianceClasses_a3jQ
-+             __depth_a3jR
-+             __httpManager_a3jT
-+             __lockToken_a3jU
-+             __userAgent_a3jV)
-+     Data.Functor.<$> (_f_a3jL __httpManager'_a3jS))
-+{-# INLINE httpManager #-}
-+lockToken ::
-+  Control.Lens.Type.Lens' DAVContext (Maybe B.ByteString)
-+lockToken
-+  _f_a3jW
-+  (DAVContext __allowedMethods_a3jX
-+              __baseRequest_a3jY
-+              __basicusername_a3jZ
-+              __basicpassword_a3k0
-+              __complianceClasses_a3k1
-+              __depth_a3k2
-+              __httpManager_a3k3
-+              __lockToken'_a3k4
-+              __userAgent_a3k6)
-+  = ((\ __lockToken_a3k5
-+        -> DAVContext
-+             __allowedMethods_a3jX
-+             __baseRequest_a3jY
-+             __basicusername_a3jZ
-+             __basicpassword_a3k0
-+             __complianceClasses_a3k1
-+             __depth_a3k2
-+             __httpManager_a3k3
-+             __lockToken_a3k5
-+             __userAgent_a3k6)
-+     Data.Functor.<$> (_f_a3jW __lockToken'_a3k4))
-+{-# INLINE lockToken #-}
-+userAgent :: Control.Lens.Type.Lens' DAVContext B.ByteString
-+userAgent
-+  _f_a3k7
-+  (DAVContext __allowedMethods_a3k8
-+              __baseRequest_a3k9
-+              __basicusername_a3ka
-+              __basicpassword_a3kb
-+              __complianceClasses_a3kc
-+              __depth_a3kd
-+              __httpManager_a3ke
-+              __lockToken_a3kf
-+              __userAgent'_a3kg)
-+  = ((\ __userAgent_a3kh
-+        -> DAVContext
-+             __allowedMethods_a3k8
-+             __baseRequest_a3k9
-+             __basicusername_a3ka
-+             __basicpassword_a3kb
-+             __complianceClasses_a3kc
-+             __depth_a3kd
-+             __httpManager_a3ke
-+             __lockToken_a3kf
-+             __userAgent_a3kh)
-+     Data.Functor.<$> (_f_a3k7 __userAgent'_a3kg))
-+{-# INLINE userAgent #-}
--- 
-2.1.1
-
diff --git a/standalone/no-th/haskell-patches/aeson_remove-TH.patch b/standalone/no-th/haskell-patches/aeson_remove-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/aeson_remove-TH.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From f147ec9aeaa03ca6e30232c84c413ef29b95fb62 Mon Sep 17 00:00:00 2001
-From: Your Name <you@example.com>
-Date: Tue, 20 May 2014 19:53:55 +0000
-Subject: [PATCH] avoid TH
-
----
- aeson.cabal | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/aeson.cabal b/aeson.cabal
-index 493d625..02dc6f4 100644
---- a/aeson.cabal
-+++ b/aeson.cabal
-@@ -88,7 +88,6 @@ library
-     Data.Aeson.Generic
-     Data.Aeson.Parser
-     Data.Aeson.Types
--    Data.Aeson.TH
- 
-   other-modules:
-     Data.Aeson.Functions
-@@ -121,7 +120,6 @@ library
-     old-locale,
-     scientific >= 0.3.1 && < 0.4,
-     syb,
--    template-haskell >= 2.4,
-     time,
-     unordered-containers >= 0.2.3.0,
-     vector >= 0.7.1
-@@ -164,7 +162,6 @@ test-suite tests
-     base,
-     containers,
-     bytestring,
--    template-haskell,
-     test-framework,
-     test-framework-quickcheck2,
-     test-framework-hunit,
--- 
-2.0.0.rc2
-
diff --git a/standalone/no-th/haskell-patches/file-embed_remove-TH.patch b/standalone/no-th/haskell-patches/file-embed_remove-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/file-embed_remove-TH.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 497d09a91f9eb1e5979948cd128078491b0e8bca Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Fri, 12 Sep 2014 20:52:08 -0400
-Subject: [PATCH] remove TH
-
----
- Data/FileEmbed.hs | 87 ++++---------------------------------------------------
- 1 file changed, 5 insertions(+), 82 deletions(-)
-
-diff --git a/Data/FileEmbed.hs b/Data/FileEmbed.hs
-index 5617493..adacdba 100644
---- a/Data/FileEmbed.hs
-+++ b/Data/FileEmbed.hs
-@@ -17,13 +17,13 @@
- -- > {-# LANGUAGE TemplateHaskell #-}
- module Data.FileEmbed
-     ( -- * Embed at compile time
--      embedFile
--    , embedOneFileOf
--    , embedDir
--    , getDir
-+    --  embedFile
-+    --, embedOneFileOf
-+    --, embedDir
-+      getDir
-       -- * Inject into an executable
- #if MIN_VERSION_template_haskell(2,5,0)
--    , dummySpace
-+    --, dummySpace
- #endif
-     , inject
-     , injectFile
-@@ -56,73 +56,12 @@ import Data.ByteString.Unsafe (unsafePackAddressLen)
- import System.IO.Unsafe (unsafePerformIO)
- import System.FilePath ((</>))
- 
---- | Embed a single file in your source code.
----
---- > import qualified Data.ByteString
---- >
---- > myFile :: Data.ByteString.ByteString
---- > myFile = $(embedFile "dirName/fileName")
--embedFile :: FilePath -> Q Exp
--embedFile fp =
--#if MIN_VERSION_template_haskell(2,7,0)
--    qAddDependentFile fp >>
--#endif
--  (runIO $ B.readFile fp) >>= bsToExp
--
---- | Embed a single existing file in your source code
---- out of list a list of paths supplied.
----
---- > import qualified Data.ByteString
---- >
---- > myFile :: Data.ByteString.ByteString
---- > myFile = $(embedFile' [ "dirName/fileName", "src/dirName/fileName" ])
--embedOneFileOf :: [FilePath] -> Q Exp
--embedOneFileOf ps =
--  (runIO $ readExistingFile ps) >>= \ ( path, content ) -> do
--#if MIN_VERSION_template_haskell(2,7,0)
--    qAddDependentFile path
--#endif
--    bsToExp content
--  where
--    readExistingFile :: [FilePath] -> IO ( FilePath, B.ByteString )
--    readExistingFile xs = do
--      ys <- filterM doesFileExist xs
--      case ys of
--        (p:_) -> B.readFile p >>= \ c -> return ( p, c )
--        _ -> throw $ ErrorCall "Cannot find file to embed as resource"
--
---- | Embed a directory recursively in your source code.
----
---- > import qualified Data.ByteString
---- >
---- > myDir :: [(FilePath, Data.ByteString.ByteString)]
---- > myDir = $(embedDir "dirName")
--embedDir :: FilePath -> Q Exp
--embedDir fp = do
--    typ <- [t| [(FilePath, B.ByteString)] |]
--    e <- ListE <$> ((runIO $ fileList fp) >>= mapM (pairToExp fp))
--    return $ SigE e typ
--
- -- | Get a directory tree in the IO monad.
- --
- -- This is the workhorse of 'embedDir'
- getDir :: FilePath -> IO [(FilePath, B.ByteString)]
- getDir = fileList
- 
--pairToExp :: FilePath -> (FilePath, B.ByteString) -> Q Exp
--pairToExp _root (path, bs) = do
--#if MIN_VERSION_template_haskell(2,7,0)
--    qAddDependentFile $ _root ++ '/' : path
--#endif
--    exp' <- bsToExp bs
--    return $! TupE [LitE $ StringL path, exp']
--
--bsToExp :: B.ByteString -> Q Exp
--bsToExp bs = do
--    helper <- [| stringToBs |]
--    let chars = B8.unpack bs
--    return $! AppE helper $! LitE $! StringL chars
--
- stringToBs :: String -> B.ByteString
- stringToBs = B8.pack
- 
-@@ -164,22 +103,6 @@ padSize i =
-     let s = show i
-      in replicate (sizeLen - length s) '0' ++ s
- 
--#if MIN_VERSION_template_haskell(2,5,0)
--dummySpace :: Int -> Q Exp
--dummySpace space = do
--    let size = padSize space
--    let start = magic ++ size
--    let chars = LitE $ StringPrimL $
--#if MIN_VERSION_template_haskell(2,6,0)
--            map (toEnum . fromEnum) $
--#endif
--            start ++ replicate space '0'
--    let len = LitE $ IntegerL $ fromIntegral $ length start + space
--    upi <- [|unsafePerformIO|]
--    pack <- [|unsafePackAddressLen|]
--    getInner' <- [|getInner|]
--    return $ getInner' `AppE` (upi `AppE` (pack `AppE` len `AppE` chars))
--#endif
- 
- inject :: B.ByteString -- ^ bs to inject
-        -> B.ByteString -- ^ original BS containing dummy
--- 
-2.1.0
-
diff --git a/standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch b/standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch
+++ /dev/null
@@ -1,394 +0,0 @@
-From 9a41401d903f160e11d56fff35c24eb59d97885d Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Tue, 17 Dec 2013 19:04:40 +0000
-Subject: [PATCH] remove TH
-
----
- src/Generics/Deriving/TH.hs | 354 --------------------------------------------
- 1 file changed, 354 deletions(-)
-
-diff --git a/src/Generics/Deriving/TH.hs b/src/Generics/Deriving/TH.hs
-index 783cb65..9aab713 100644
---- a/src/Generics/Deriving/TH.hs
-+++ b/src/Generics/Deriving/TH.hs
-@@ -19,18 +19,6 @@
- 
- -- Adapted from Generics.Regular.TH
- module Generics.Deriving.TH (
--      
--      deriveMeta
--    , deriveData
--    , deriveConstructors
--    , deriveSelectors
--
--#if __GLASGOW_HASKELL__ < 701
--    , deriveAll
--    , deriveRepresentable0
--    , deriveRep0
--    , simplInstance
--#endif
-   ) where
- 
- import Generics.Deriving.Base
-@@ -41,124 +29,6 @@ import Language.Haskell.TH.Syntax (Lift(..))
- import Data.List (intercalate)
- import Control.Monad
- 
---- | Given the names of a generic class, a type to instantiate, a function in
---- the class and the default implementation, generates the code for a basic
---- generic instance.
--simplInstance :: Name -> Name -> Name -> Name -> Q [Dec]
--simplInstance cl ty fn df = do
--  i <- reify (genRepName 0 ty)
--  x <- newName "x"
--  let typ = ForallT [PlainTV x] [] 
--        ((foldl (\a -> AppT a . VarT . tyVarBndrToName) (ConT (genRepName 0 ty)) 
--          (typeVariables i)) `AppT` (VarT x))
--  fmap (: []) $ instanceD (cxt []) (conT cl `appT` conT ty)
--    [funD fn [clause [] (normalB (varE df `appE` 
--      (sigE (global 'undefined) (return typ)))) []]]
--
--
---- | Given the type and the name (as string) for the type to derive,
---- generate the 'Data' instance, the 'Constructor' instances, the 'Selector'
---- instances, and the 'Representable0' instance.
--deriveAll :: Name -> Q [Dec]
--deriveAll n =
--  do a <- deriveMeta n
--     b <- deriveRepresentable0 n
--     return (a ++ b)
--
---- | Given the type and the name (as string) for the type to derive,
---- generate the 'Data' instance, the 'Constructor' instances, and the 'Selector'
---- instances.
--deriveMeta :: Name -> Q [Dec]
--deriveMeta n =
--  do a <- deriveData n
--     b <- deriveConstructors n
--     c <- deriveSelectors n
--     return (a ++ b ++ c)
--
---- | Given a datatype name, derive a datatype and instance of class 'Datatype'.
--deriveData :: Name -> Q [Dec]
--deriveData = dataInstance
--
---- | Given a datatype name, derive datatypes and 
---- instances of class 'Constructor'.
--deriveConstructors :: Name -> Q [Dec]
--deriveConstructors = constrInstance
--
---- | Given a datatype name, derive datatypes and instances of class 'Selector'.
--deriveSelectors :: Name -> Q [Dec]
--deriveSelectors = selectInstance
--
---- | Given the type and the name (as string) for the Representable0 type
---- synonym to derive, generate the 'Representable0' instance.
--deriveRepresentable0 :: Name -> Q [Dec]
--deriveRepresentable0 n = do
--    rep0 <- deriveRep0 n
--    inst <- deriveInst n
--    return $ rep0 ++ inst
--
---- | Derive only the 'Rep0' type synonym. Not needed if 'deriveRepresentable0'
---- is used.
--deriveRep0 :: Name -> Q [Dec]
--deriveRep0 n = do
--  i <- reify n
--  fmap (:[]) $ tySynD (genRepName 0 n) (typeVariables i) (rep0Type n)
--
--deriveInst :: Name -> Q [Dec]
--deriveInst t = do
--  i <- reify t
--  let typ q = foldl (\a -> AppT a . VarT . tyVarBndrToName) (ConT q) 
--                (typeVariables i)
--#if __GLASGOW_HASKELL__ >= 707
--  let tyIns = TySynInstD ''Rep (TySynEqn [typ t] (typ (genRepName 0 t)))
--#else
--  let tyIns = TySynInstD ''Rep [typ t] (typ (genRepName 0 t))
--#endif
--  fcs <- mkFrom t 1 0 t
--  tcs <- mkTo   t 1 0 t
--  liftM (:[]) $
--    instanceD (cxt []) (conT ''Generic `appT` return (typ t))
--                         [return tyIns, funD 'from fcs, funD 'to tcs]
--
--
--dataInstance :: Name -> Q [Dec]
--dataInstance n = do
--  i <- reify n
--  case i of
--    TyConI (DataD    _ n _ _ _) -> mkInstance n
--    TyConI (NewtypeD _ n _ _ _) -> mkInstance n
--    _ -> return []
--  where
--    mkInstance n = do
--      ds <- mkDataData n
--      is <- mkDataInstance n
--      return $ [ds,is]
--
--constrInstance :: Name -> Q [Dec]
--constrInstance n = do
--  i <- reify n
--  case i of
--    TyConI (DataD    _ n _ cs _) -> mkInstance n cs
--    TyConI (NewtypeD _ n _ c  _) -> mkInstance n [c]
--    _ -> return []
--  where
--    mkInstance n cs = do
--      ds <- mapM (mkConstrData n) cs
--      is <- mapM (mkConstrInstance n) cs
--      return $ ds ++ is
--
--selectInstance :: Name -> Q [Dec]
--selectInstance n = do
--  i <- reify n
--  case i of
--    TyConI (DataD    _ n _ cs _) -> mkInstance n cs
--    TyConI (NewtypeD _ n _ c  _) -> mkInstance n [c]
--    _ -> return []
--  where
--    mkInstance n cs = do
--      ds <- mapM (mkSelectData n) cs
--      is <- mapM (mkSelectInstance n) cs
--      return $ concat (ds ++ is)
--
- typeVariables :: Info -> [TyVarBndr]
- typeVariables (TyConI (DataD    _ _ tv _ _)) = tv
- typeVariables (TyConI (NewtypeD _ _ tv _ _)) = tv
-@@ -179,233 +49,9 @@ genName = mkName . (++"_") . intercalate "_" . map nameBase
- genRepName :: Int -> Name -> Name
- genRepName n = mkName . (++"_") . (("Rep" ++ show n) ++) . nameBase
- 
--mkDataData :: Name -> Q Dec
--mkDataData n = dataD (cxt []) (genName [n]) [] [] []
--
--mkConstrData :: Name -> Con -> Q Dec
--mkConstrData dt (NormalC n _) =
--  dataD (cxt []) (genName [dt, n]) [] [] [] 
--mkConstrData dt r@(RecC _ _) =
--  mkConstrData dt (stripRecordNames r)
--mkConstrData dt (InfixC t1 n t2) =
--  mkConstrData dt (NormalC n [t1,t2])
--
--mkSelectData :: Name -> Con -> Q [Dec]
--mkSelectData dt r@(RecC n fs) = return (map one fs)
--  where one (f, _, _) = DataD [] (genName [dt, n, f]) [] [] []
--mkSelectData dt _ = return []
--
--
--mkDataInstance :: Name -> Q Dec
--mkDataInstance n =
--  instanceD (cxt []) (appT (conT ''Datatype) (conT $ genName [n]))
--    [funD 'datatypeName [clause [wildP] (normalB (stringE (nameBase n))) []]
--    ,funD 'moduleName   [clause [wildP] (normalB (stringE name)) []]]
--  where
--    name = maybe (error "Cannot fetch module name!") id (nameModule n)
--
--instance Lift Fixity where
--  lift Prefix      = conE 'Prefix
--  lift (Infix a n) = conE 'Infix `appE` [| a |] `appE` [| n |]
--
--instance Lift Associativity where
--  lift LeftAssociative  = conE 'LeftAssociative
--  lift RightAssociative = conE 'RightAssociative
--  lift NotAssociative   = conE 'NotAssociative
--
--mkConstrInstance :: Name -> Con -> Q Dec
--mkConstrInstance dt (NormalC n _) = mkConstrInstanceWith dt n []
--mkConstrInstance dt (RecC    n _) = mkConstrInstanceWith dt n
--      [ funD 'conIsRecord [clause [wildP] (normalB (conE 'True)) []]]
--mkConstrInstance dt (InfixC t1 n t2) =
--    do
--      i <- reify n
--      let fi = case i of
--                 DataConI _ _ _ f -> convertFixity f
--                 _ -> Prefix
--      instanceD (cxt []) (appT (conT ''Constructor) (conT $ genName [dt, n]))
--        [funD 'conName   [clause [wildP] (normalB (stringE (nameBase n))) []],
--         funD 'conFixity [clause [wildP] (normalB [| fi |]) []]]
--  where
--    convertFixity (Fixity n d) = Infix (convertDirection d) n
--    convertDirection InfixL = LeftAssociative
--    convertDirection InfixR = RightAssociative
--    convertDirection InfixN = NotAssociative
--
--mkConstrInstanceWith :: Name -> Name -> [Q Dec] -> Q Dec
--mkConstrInstanceWith dt n extra = 
--  instanceD (cxt []) (appT (conT ''Constructor) (conT $ genName [dt, n]))
--    (funD 'conName [clause [wildP] (normalB (stringE (nameBase n))) []] : extra)
--
--mkSelectInstance :: Name -> Con -> Q [Dec]
--mkSelectInstance dt r@(RecC n fs) = return (map one fs) where
--  one (f, _, _) = 
--    InstanceD ([]) (AppT (ConT ''Selector) (ConT $ genName [dt, n, f]))
--      [FunD 'selName [Clause [WildP] 
--        (NormalB (LitE (StringL (nameBase f)))) []]]
--mkSelectInstance _ _ = return []
--
--rep0Type :: Name -> Q Type
--rep0Type n =
--    do
--      -- runIO $ putStrLn $ "processing " ++ show n
--      i <- reify n
--      let b = case i of
--                TyConI (DataD _ dt vs cs _) ->
--                  (conT ''D1) `appT` (conT $ genName [dt]) `appT` 
--                    (foldr1' sum (conT ''V1) 
--                      (map (rep0Con (dt, map tyVarBndrToName vs)) cs))
--                TyConI (NewtypeD _ dt vs c _) ->
--                  (conT ''D1) `appT` (conT $ genName [dt]) `appT`
--                    (rep0Con (dt, map tyVarBndrToName vs) c)
--                TyConI (TySynD t _ _) -> error "type synonym?" 
--                _ -> error "unknown construct" 
--      --appT b (conT $ mkName (nameBase n))
--      b where
--    sum :: Q Type -> Q Type -> Q Type
--    sum a b = conT ''(:+:) `appT` a `appT` b
--
--
--rep0Con :: (Name, [Name]) -> Con -> Q Type
--rep0Con (dt, vs) (NormalC n []) =
--    conT ''C1 `appT` (conT $ genName [dt, n]) `appT` 
--     (conT ''S1 `appT` conT ''NoSelector `appT` conT ''U1)
--rep0Con (dt, vs) (NormalC n fs) =
--    conT ''C1 `appT` (conT $ genName [dt, n]) `appT` 
--     (foldr1 prod (map (repField (dt, vs) . snd) fs)) where
--    prod :: Q Type -> Q Type -> Q Type
--    prod a b = conT ''(:*:) `appT` a `appT` b
--rep0Con (dt, vs) r@(RecC n []) =
--    conT ''C1 `appT` (conT $ genName [dt, n]) `appT` conT ''U1
--rep0Con (dt, vs) r@(RecC n fs) =
--    conT ''C1 `appT` (conT $ genName [dt, n]) `appT` 
--      (foldr1 prod (map (repField' (dt, vs) n) fs)) where
--    prod :: Q Type -> Q Type -> Q Type
--    prod a b = conT ''(:*:) `appT` a `appT` b
--
--rep0Con d (InfixC t1 n t2) = rep0Con d (NormalC n [t1,t2])
--
----dataDeclToType :: (Name, [Name]) -> Type
----dataDeclToType (dt, vs) = foldl (\a b -> AppT a (VarT b)) (ConT dt) vs
--
--repField :: (Name, [Name]) -> Type -> Q Type
----repField d t | t == dataDeclToType d = conT ''I
--repField d t = conT ''S1 `appT` conT ''NoSelector `appT`
--                 (conT ''Rec0 `appT` return t)
--
--repField' :: (Name, [Name]) -> Name -> (Name, Strict, Type) -> Q Type
----repField' d ns (_, _, t) | t == dataDeclToType d = conT ''I
--repField' (dt, vs) ns (f, _, t) = conT ''S1 `appT` conT (genName [dt, ns, f]) 
--                                    `appT` (conT ''Rec0 `appT` return t)
---- Note: we should generate Par0 too, at some point
--
--
--mkFrom :: Name -> Int -> Int -> Name -> Q [Q Clause]
--mkFrom ns m i n =
--    do
--      -- runIO $ putStrLn $ "processing " ++ show n
--      let wrapE e = lrE m i e
--      i <- reify n
--      let b = case i of
--                TyConI (DataD _ dt vs cs _) ->
--                  zipWith (fromCon wrapE ns (dt, map tyVarBndrToName vs)
--                    (length cs)) [0..] cs
--                TyConI (NewtypeD _ dt vs c _) ->
--                  [fromCon wrapE ns (dt, map tyVarBndrToName vs) 1 0 c]
--                TyConI (TySynD t _ _) -> error "type synonym?" 
--                  -- [clause [varP (field 0)] (normalB (wrapE $ conE 'K1 `appE` varE (field 0))) []]
--                _ -> error "unknown construct"
--      return b
--
--mkTo :: Name -> Int -> Int -> Name -> Q [Q Clause]
--mkTo ns m i n =
--    do
--      -- runIO $ putStrLn $ "processing " ++ show n
--      let wrapP p = lrP m i p
--      i <- reify n
--      let b = case i of
--                TyConI (DataD _ dt vs cs _) ->
--                  zipWith (toCon wrapP ns (dt, map tyVarBndrToName vs)
--                    (length cs)) [0..] cs
--                TyConI (NewtypeD _ dt vs c _) ->
--                  [toCon wrapP ns (dt, map tyVarBndrToName vs) 1 0 c]
--                TyConI (TySynD t _ _) -> error "type synonym?" 
--                  -- [clause [wrapP $ conP 'K1 [varP (field 0)]] (normalB $ varE (field 0)) []]
--                _ -> error "unknown construct" 
--      return b
--
--fromCon :: (Q Exp -> Q Exp) -> Name -> (Name, [Name]) -> Int -> Int -> Con -> Q Clause
--fromCon wrap ns (dt, vs) m i (NormalC cn []) =
--  clause
--    [conP cn []]
--    (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ appE (conE 'M1) $ 
--      conE 'M1 `appE` (conE 'U1)) []
--fromCon wrap ns (dt, vs) m i (NormalC cn fs) =
--  -- runIO (putStrLn ("constructor " ++ show ix)) >>
--  clause
--    [conP cn (map (varP . field) [0..length fs - 1])]
--    (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ conE 'M1 `appE` 
--      foldr1 prod (zipWith (fromField (dt, vs)) [0..] (map snd fs))) []
--  where prod x y = conE '(:*:) `appE` x `appE` y
--fromCon wrap ns (dt, vs) m i r@(RecC cn []) =
--  clause
--    [conP cn []]
--    (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ conE 'M1 `appE` (conE 'U1)) []
--fromCon wrap ns (dt, vs) m i r@(RecC cn fs) =
--  clause
--    [conP cn (map (varP . field) [0..length fs - 1])]
--    (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ conE 'M1 `appE` 
--      foldr1 prod (zipWith (fromField (dt, vs)) [0..] (map trd fs))) []
--  where prod x y = conE '(:*:) `appE` x `appE` y
--fromCon wrap ns (dt, vs) m i (InfixC t1 cn t2) =
--  fromCon wrap ns (dt, vs) m i (NormalC cn [t1,t2])
--
--fromField :: (Name, [Name]) -> Int -> Type -> Q Exp
----fromField (dt, vs) nr t | t == dataDeclToType (dt, vs) = conE 'I `appE` varE (field nr)
--fromField (dt, vs) nr t = conE 'M1 `appE` (conE 'K1 `appE` varE (field nr))
--
--toCon :: (Q Pat -> Q Pat) -> Name -> (Name, [Name]) -> Int -> Int -> Con -> Q Clause
--toCon wrap ns (dt, vs) m i (NormalC cn []) =
--    clause
--      [wrap $ conP 'M1 [lrP m i $ conP 'M1 [conP 'M1 [conP 'U1 []]]]]
--      (normalB $ conE cn) []
--toCon wrap ns (dt, vs) m i (NormalC cn fs) =
--    -- runIO (putStrLn ("constructor " ++ show ix)) >>
--    clause
--      [wrap $ conP 'M1 [lrP m i $ conP 'M1
--        [foldr1 prod (zipWith (toField (dt, vs)) [0..] (map snd fs))]]]
--      (normalB $ foldl appE (conE cn) (map (varE . field) [0..length fs - 1])) []
--  where prod x y = conP '(:*:) [x,y]
--toCon wrap ns (dt, vs) m i r@(RecC cn []) =
--    clause
--      [wrap $ conP 'M1 [lrP m i $ conP 'M1 [conP 'U1 []]]]
--      (normalB $ conE cn) []
--toCon wrap ns (dt, vs) m i r@(RecC cn fs) =
--    clause
--      [wrap $ conP 'M1 [lrP m i $ conP 'M1
--        [foldr1 prod (zipWith (toField (dt, vs)) [0..] (map trd fs))]]]
--      (normalB $ foldl appE (conE cn) (map (varE . field) [0..length fs - 1])) []
--  where prod x y = conP '(:*:) [x,y]
--toCon wrap ns (dt, vs) m i (InfixC t1 cn t2) =
--  toCon wrap ns (dt, vs) m i (NormalC cn [t1,t2])
--
--toField :: (Name, [Name]) -> Int -> Type -> Q Pat
----toField (dt, vs) nr t | t == dataDeclToType (dt, vs) = conP 'I [varP (field nr)]
--toField (dt, vs) nr t = conP 'M1 [conP 'K1 [varP (field nr)]]
--
--
- field :: Int -> Name
- field n = mkName $ "f" ++ show n
- 
--lrP :: Int -> Int -> (Q Pat -> Q Pat)
--lrP 1 0 p = p
--lrP m 0 p = conP 'L1 [p]
--lrP m i p = conP 'R1 [lrP (m-1) (i-1) p]
--
--lrE :: Int -> Int -> (Q Exp -> Q Exp)
--lrE 1 0 e = e
--lrE m 0 e = conE 'L1 `appE` e
--lrE m i e = conE 'R1 `appE` lrE (m-1) (i-1) e
- 
- trd (_,_,c) = c
- 
--- 
-1.8.5.1
-
diff --git a/standalone/no-th/haskell-patches/lens_no-TH.patch b/standalone/no-th/haskell-patches/lens_no-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/lens_no-TH.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-From 10c9ade98b3ac2054947f411d77db2eb28896b9f Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 16 Oct 2014 01:43:10 +0000
-Subject: [PATCH] avoid TH
-
----
- lens.cabal                          | 17 +----------------
- src/Control/Lens.hs                 |  8 ++------
- src/Control/Lens/Cons.hs            |  2 --
- src/Control/Lens/Internal/Fold.hs   |  2 --
- src/Control/Lens/Operators.hs       |  2 +-
- src/Control/Lens/Prism.hs           |  2 --
- src/Control/Monad/Primitive/Lens.hs |  1 -
- 7 files changed, 4 insertions(+), 30 deletions(-)
-
-diff --git a/lens.cabal b/lens.cabal
-index 5388301..d7b02b9 100644
---- a/lens.cabal
-+++ b/lens.cabal
-@@ -10,7 +10,7 @@ stability:     provisional
- homepage:      http://github.com/ekmett/lens/
- bug-reports:   http://github.com/ekmett/lens/issues
- copyright:     Copyright (C) 2012-2014 Edward A. Kmett
--build-type:    Custom
-+build-type:    Simple
- -- build-tools:   cpphs
- tested-with:   GHC == 7.4.1, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.1, GHC == 7.8.2
- synopsis:      Lenses, Folds and Traversals
-@@ -217,7 +217,6 @@ library
-     Control.Exception.Lens
-     Control.Lens
-     Control.Lens.Action
--    Control.Lens.At
-     Control.Lens.Combinators
-     Control.Lens.Cons
-     Control.Lens.Each
-@@ -234,8 +233,6 @@ library
-     Control.Lens.Internal.Context
-     Control.Lens.Internal.Deque
-     Control.Lens.Internal.Exception
--    Control.Lens.Internal.FieldTH
--    Control.Lens.Internal.PrismTH
-     Control.Lens.Internal.Fold
-     Control.Lens.Internal.Getter
-     Control.Lens.Internal.Indexed
-@@ -247,25 +244,21 @@ library
-     Control.Lens.Internal.Reflection
-     Control.Lens.Internal.Review
-     Control.Lens.Internal.Setter
--    Control.Lens.Internal.TH
-     Control.Lens.Internal.Zoom
-     Control.Lens.Iso
-     Control.Lens.Lens
-     Control.Lens.Level
-     Control.Lens.Loupe
-     Control.Lens.Operators
--    Control.Lens.Plated
-     Control.Lens.Prism
-     Control.Lens.Reified
-     Control.Lens.Review
-     Control.Lens.Setter
--    Control.Lens.TH
-     Control.Lens.Traversal
-     Control.Lens.Tuple
-     Control.Lens.Type
-     Control.Lens.Wrapped
-     Control.Lens.Zoom
--    Control.Monad.Error.Lens
-     Control.Monad.Primitive.Lens
-     Control.Parallel.Strategies.Lens
-     Control.Seq.Lens
-@@ -291,12 +284,8 @@ library
-     Data.Typeable.Lens
-     Data.Vector.Lens
-     Data.Vector.Generic.Lens
--    Generics.Deriving.Lens
--    GHC.Generics.Lens
-     System.Exit.Lens
-     System.FilePath.Lens
--    System.IO.Error.Lens
--    Language.Haskell.TH.Lens
-     Numeric.Lens
- 
-   other-modules:
-@@ -403,7 +392,6 @@ test-suite doctests
-       deepseq,
-       doctest        >= 0.9.1,
-       filepath,
--      generic-deriving,
-       mtl,
-       nats,
-       parallel,
-@@ -441,7 +429,6 @@ benchmark plated
-     comonad,
-     criterion,
-     deepseq,
--    generic-deriving,
-     lens,
-     transformers
- 
-@@ -476,7 +463,6 @@ benchmark unsafe
-     comonads-fd,
-     criterion,
-     deepseq,
--    generic-deriving,
-     lens,
-     transformers
- 
-@@ -493,6 +479,5 @@ benchmark zipper
-     comonads-fd,
-     criterion,
-     deepseq,
--    generic-deriving,
-     lens,
-     transformers
-diff --git a/src/Control/Lens.hs b/src/Control/Lens.hs
-index 7e15267..433f1fc 100644
---- a/src/Control/Lens.hs
-+++ b/src/Control/Lens.hs
-@@ -41,7 +41,6 @@
- ----------------------------------------------------------------------------
- module Control.Lens
-   ( module Control.Lens.Action
--  , module Control.Lens.At
-   , module Control.Lens.Cons
-   , module Control.Lens.Each
-   , module Control.Lens.Empty
-@@ -53,12 +52,11 @@ module Control.Lens
-   , module Control.Lens.Lens
-   , module Control.Lens.Level
-   , module Control.Lens.Loupe
--  , module Control.Lens.Plated
-   , module Control.Lens.Prism
-   , module Control.Lens.Reified
-   , module Control.Lens.Review
-   , module Control.Lens.Setter
--#ifndef DISABLE_TEMPLATE_HASKELL
-+#if 0
-   , module Control.Lens.TH
- #endif
-   , module Control.Lens.Traversal
-@@ -69,7 +67,6 @@ module Control.Lens
-   ) where
- 
- import Control.Lens.Action
--import Control.Lens.At
- import Control.Lens.Cons
- import Control.Lens.Each
- import Control.Lens.Empty
-@@ -81,12 +78,11 @@ import Control.Lens.Iso
- import Control.Lens.Lens
- import Control.Lens.Level
- import Control.Lens.Loupe
--import Control.Lens.Plated
- import Control.Lens.Prism
- import Control.Lens.Reified
- import Control.Lens.Review
- import Control.Lens.Setter
--#ifndef DISABLE_TEMPLATE_HASKELL
-+#if 0
- import Control.Lens.TH
- #endif
- import Control.Lens.Traversal
-diff --git a/src/Control/Lens/Cons.hs b/src/Control/Lens/Cons.hs
-index a80e9c8..7d27b80 100644
---- a/src/Control/Lens/Cons.hs
-+++ b/src/Control/Lens/Cons.hs
-@@ -55,8 +55,6 @@ import           Data.Vector.Unboxed (Unbox)
- import qualified Data.Vector.Unboxed as Unbox
- import           Data.Word
- 
--{-# ANN module "HLint: ignore Eta reduce" #-}
--
- -- $setup
- -- >>> :set -XNoOverloadedStrings
- -- >>> import Control.Lens
-diff --git a/src/Control/Lens/Internal/Fold.hs b/src/Control/Lens/Internal/Fold.hs
-index ab09c6b..43aa905 100644
---- a/src/Control/Lens/Internal/Fold.hs
-+++ b/src/Control/Lens/Internal/Fold.hs
-@@ -37,8 +37,6 @@ import Data.Maybe
- import Data.Semigroup hiding (Min, getMin, Max, getMax)
- import Data.Reflection
- 
--{-# ANN module "HLint: ignore Avoid lambda" #-}
--
- ------------------------------------------------------------------------------
- -- Folding
- ------------------------------------------------------------------------------
-diff --git a/src/Control/Lens/Operators.hs b/src/Control/Lens/Operators.hs
-index 9992e63..631e8e6 100644
---- a/src/Control/Lens/Operators.hs
-+++ b/src/Control/Lens/Operators.hs
-@@ -111,7 +111,7 @@ module Control.Lens.Operators
-   , (<#~)
-   , (<#=)
-   -- * "Control.Lens.Plated"
--  , (...)
-+  --, (...)
-   -- * "Control.Lens.Review"
-   , ( # )
-   -- * "Control.Lens.Setter"
-diff --git a/src/Control/Lens/Prism.hs b/src/Control/Lens/Prism.hs
-index b75c870..c6c6596 100644
---- a/src/Control/Lens/Prism.hs
-+++ b/src/Control/Lens/Prism.hs
-@@ -61,8 +61,6 @@ import Unsafe.Coerce
- import Data.Profunctor.Unsafe
- #endif
- 
--{-# ANN module "HLint: ignore Use camelCase" #-}
--
- -- $setup
- -- >>> :set -XNoOverloadedStrings
- -- >>> import Control.Lens
-diff --git a/src/Control/Monad/Primitive/Lens.hs b/src/Control/Monad/Primitive/Lens.hs
-index ee942c6..2f37134 100644
---- a/src/Control/Monad/Primitive/Lens.hs
-+++ b/src/Control/Monad/Primitive/Lens.hs
-@@ -20,7 +20,6 @@ import Control.Lens
- import Control.Monad.Primitive (PrimMonad(..))
- import GHC.Prim (State#)
- 
--{-# ANN module "HLint: ignore Unused LANGUAGE pragma" #-}
- 
- prim :: (PrimMonad m) => Iso' (m a) (State# (PrimState m) -> (# State# (PrimState m), a #))
- prim = iso internal primitive
--- 
-2.1.1
-
diff --git a/standalone/no-th/haskell-patches/monad-logger_remove-TH.patch b/standalone/no-th/haskell-patches/monad-logger_remove-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/monad-logger_remove-TH.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 8e78a25ce0cc19e52d063f66bd4cd316462393d4 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 6 Mar 2014 23:27:06 +0000
-Subject: [PATCH] disable th
-
----
- monad-logger.cabal | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/monad-logger.cabal b/monad-logger.cabal
-index b0aa271..cd56c0f 100644
---- a/monad-logger.cabal
-+++ b/monad-logger.cabal
-@@ -14,8 +14,8 @@ cabal-version:       >=1.8
- 
- flag template_haskell {
-       Description: Enable Template Haskell support
--      Default:     True
--      Manual:      True
-+      Default:     False
-+      Manual:      False
- }
- 
- library
--- 
-1.9.0
-
diff --git a/standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch b/standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b128590966d4946219e45e2efd88acf7a354abc2 Mon Sep 17 00:00:00 2001
-From: androidbuilder <androidbuilder@example.com>
-Date: Tue, 14 Oct 2014 02:28:02 +0000
-Subject: [PATCH] remove ANN
-
----
- Options/Applicative.hs           |    2 --
- Options/Applicative/Help/Core.hs |    2 --
- 2 files changed, 4 deletions(-)
-
-diff --git a/Options/Applicative.hs b/Options/Applicative.hs
-index bd4129d..f412062 100644
---- a/Options/Applicative.hs
-+++ b/Options/Applicative.hs
-@@ -34,5 +34,3 @@ import Options.Applicative.Common
- import Options.Applicative.Builder
- import Options.Applicative.Builder.Completer
- import Options.Applicative.Extra
--
--{-# ANN module "HLint: ignore Use import/export shortcut" #-}
-diff --git a/Options/Applicative/Help/Core.hs b/Options/Applicative/Help/Core.hs
-index 0a79169..3f1ce3f 100644
---- a/Options/Applicative/Help/Core.hs
-+++ b/Options/Applicative/Help/Core.hs
-@@ -139,5 +139,3 @@ parserUsage pprefs p progn = hsep
-   [ string "Usage:"
-   , string progn
-   , align (extractChunk (briefDesc pprefs p)) ]
--
--{-# ANN footerHelp "HLint: ignore Eta reduce" #-}
--- 
-1.7.10.4
-
diff --git a/standalone/no-th/haskell-patches/persistent-template_stub-out.patch b/standalone/no-th/haskell-patches/persistent-template_stub-out.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/persistent-template_stub-out.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From b22a4d77c1262f77ce4298b53ca90a138a14ceb7 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joeyh@joeyh.name>
-Date: Sun, 22 Feb 2015 15:21:19 -0400
-Subject: [PATCH] stub out TH
-
-this method avoids needing to delete the entire file contents, so patch is
-kept minimal
----
- Database/Persist/TH.hs      |  1 +
- persistent-template.cabal   |  1 +
- stub/Database/Persist/TH.hs | 21 +++++++++++++++++++++
- 3 files changed, 23 insertions(+)
- create mode 100644 stub/Database/Persist/TH.hs
-
-diff --git a/Database/Persist/TH.hs b/Database/Persist/TH.hs
-index 43eb3ee..2172b77 100644
---- a/Database/Persist/TH.hs
-+++ b/Database/Persist/TH.hs
-@@ -35,6 +35,7 @@ module Database.Persist.TH
-       -- * Internal
-     , packPTH
-     , lensPTH
-+    , plusPlus
-     ) where
- 
- import Prelude hiding ((++), take, concat, splitAt)
-diff --git a/persistent-template.cabal b/persistent-template.cabal
-index 59b4149..4705d97 100644
---- a/persistent-template.cabal
-+++ b/persistent-template.cabal
-@@ -30,6 +30,7 @@ library
-     ghc-options:     -Wall
-     if impl(ghc >= 7.4)
-        cpp-options: -DGHC_7_4
-+    hs-source-dirs: stub
- 
- test-suite test
-     type:          exitcode-stdio-1.0
-diff --git a/stub/Database/Persist/TH.hs b/stub/Database/Persist/TH.hs
-new file mode 100644
-index 0000000..dfbb874
---- /dev/null
-+++ b/stub/Database/Persist/TH.hs
-@@ -0,0 +1,21 @@
-+{-# LANGUAGE RecordWildCards #-}
-+{-# LANGUAGE CPP #-}
-+{-# LANGUAGE OverloadedStrings #-}
-+{-# LANGUAGE RankNTypes #-}
-+{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-missing-fields #-}
-+-- | This module provides utilities for creating backends. Regular users do not
-+-- need to use this module.
-+module Database.Persist.TH where
-+
-+import Data.Text
-+
-+type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
-+
-+lensPTH :: (s -> a) -> (s -> b -> t) -> Lens s t a b
-+lensPTH sa sbt afb s = fmap (sbt s) (afb $ sa s)
-+
-+packPTH :: String -> Text
-+packPTH = pack
-+#if !MIN_VERSION_text(0, 11, 2)
-+{-# NOINLINE packPTH #-}
-+#endif
--- 
-2.1.4
-
diff --git a/standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch b/standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From aae3ace106cf26c931cc94c96fb6fbfe83f950f2 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Wed, 15 Oct 2014 17:05:37 +0000
-Subject: [PATCH] avoid TH
-
----
- Database/Persist/Sql/Raw.hs | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/Database/Persist/Sql/Raw.hs b/Database/Persist/Sql/Raw.hs
-index 3ac2ca9..bcc2011 100644
---- a/Database/Persist/Sql/Raw.hs
-+++ b/Database/Persist/Sql/Raw.hs
-@@ -11,7 +11,7 @@ import Data.IORef (writeIORef, readIORef, newIORef)
- import Control.Exception (throwIO)
- import Control.Monad (when, liftM)
- import Data.Text (Text, pack)
--import Control.Monad.Logger (logDebugS)
-+--import Control.Monad.Logger (logDebugS)
- import Data.Int (Int64)
- import Control.Monad.Trans.Class (lift)
- import qualified Data.Text as T
-@@ -23,7 +23,6 @@ rawQuery :: (MonadSqlPersist m, MonadResource m)
-          -> [PersistValue]
-          -> Source m [PersistValue]
- rawQuery sql vals = do
--    lift $ $logDebugS (pack "SQL") $ pack $ show sql ++ " " ++ show vals
-     conn <- lift askSqlConn
-     bracketP
-         (getStmtConn conn sql)
-@@ -35,7 +34,6 @@ rawExecute x y = liftM (const ()) $ rawExecuteCount x y
- 
- rawExecuteCount :: MonadSqlPersist m => Text -> [PersistValue] -> m Int64
- rawExecuteCount sql vals = do
--    $logDebugS (pack "SQL") $ pack $ show sql ++ " " ++ show vals
-     stmt <- getStmt sql
-     res <- liftIO $ stmtExecute stmt vals
-     liftIO $ stmtReset stmt
--- 
-2.1.1
-
diff --git a/standalone/no-th/haskell-patches/process-conduit_avoid-TH.patch b/standalone/no-th/haskell-patches/process-conduit_avoid-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/process-conduit_avoid-TH.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From ed77588c57704030a9d412dd49f11c172c6268ab Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Tue, 14 Oct 2014 03:46:03 +0000
-Subject: [PATCH] unused
-
----
- process-conduit.cabal |    1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/process-conduit.cabal b/process-conduit.cabal
-index 34bb168..2f137a8 100644
---- a/process-conduit.cabal
-+++ b/process-conduit.cabal
-@@ -22,7 +22,6 @@ source-repository head
- 
- library
-   exposed-modules:     Data.Conduit.ProcessOld
--                       System.Process.QQ
- 
-   build-depends:       base             == 4.*
-                      , template-haskell >= 2.4
--- 
-1.7.10.4
-
diff --git a/standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch b/standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 392602f5ff14c0b5a801397d075ddcbcd890aa83 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Thu, 18 Apr 2013 17:50:59 -0400
-Subject: [PATCH] fix cross build
-
----
- src/Data/Profunctor/Unsafe.hs | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/src/Data/Profunctor/Unsafe.hs b/src/Data/Profunctor/Unsafe.hs
-index 025c7c4..0249274 100644
---- a/src/Data/Profunctor/Unsafe.hs
-+++ b/src/Data/Profunctor/Unsafe.hs
-@@ -40,9 +40,6 @@ import Data.Tagged
- import Prelude hiding (id,(.),sequence)
- import Unsafe.Coerce
- 
--{-# ANN module "Hlint: ignore Redundant lambda" #-}
--{-# ANN module "Hlint: ignore Collapse lambdas" #-}
--
- infixr 9 #.
- infixl 8 .#
- 
--- 
-1.8.2.rc3
-
diff --git a/standalone/no-th/haskell-patches/reflection_remove-TH.patch b/standalone/no-th/haskell-patches/reflection_remove-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/reflection_remove-TH.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From c0f5dcfd6ba7a05bb84b6adc4664c8dde109e6ac Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Fri, 7 Mar 2014 04:30:22 +0000
-Subject: [PATCH] remove TH
-
----
- fast/Data/Reflection.hs | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/fast/Data/Reflection.hs b/fast/Data/Reflection.hs
-index ca57d35..d3f8356 100644
---- a/fast/Data/Reflection.hs
-+++ b/fast/Data/Reflection.hs
-@@ -59,7 +59,7 @@ module Data.Reflection
-     , Given(..)
-     , give
-     -- * Template Haskell reflection
--    , int, nat
-+    --, int, nat
-     -- * Useful compile time naturals
-     , Z, D, SD, PD
-     ) where
-@@ -161,6 +161,7 @@ instance Reifies n Int => Reifies (PD n) Int where
- -- instead of @$(int 3)@. Sometimes the two will produce the same
- -- representation (if compiled without the @-DUSE_TYPE_LITS@ preprocessor
- -- directive).
-+{-
- int :: Int -> TypeQ
- int n = case quotRem n 2 of
-   (0, 0) -> conT ''Z
-@@ -176,7 +177,7 @@ nat :: Int -> TypeQ
- nat n
-   | n >= 0 = int n
-   | otherwise = error "nat: negative"
--
-+-}
- #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL < 704
- instance Show (Q a)
- instance Eq (Q a)
-@@ -195,6 +196,7 @@ instance Fractional a => Fractional (Q a) where
-   recip = fmap recip
-   fromRational = return . fromRational
- 
-+{-
- -- | This permits the use of $(5) as a type splice.
- instance Num Type where
- #ifdef USE_TYPE_LITS
-@@ -254,7 +256,7 @@ instance Num Exp where
-   abs = onProxyType1 abs
-   signum = onProxyType1 signum
-   fromInteger n = ConE 'Proxy `SigE` (ConT ''Proxy `AppT` fromInteger n)
--
-+-}
- #ifdef USE_TYPE_LITS
- addProxy :: Proxy a -> Proxy b -> Proxy (a + b)
- addProxy _ _ = Proxy
--- 
-1.9.0
-
diff --git a/standalone/no-th/haskell-patches/shakespeare_remove-TH.patch b/standalone/no-th/haskell-patches/shakespeare_remove-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/shakespeare_remove-TH.patch
+++ /dev/null
@@ -1,1438 +0,0 @@
-From 4694f3a7ee4eb15d33ecda9d62712ea236304c1b Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 2 Jul 2015 22:17:29 +0000
-Subject: [PATCH] hack TH
-
----
- Text/Cassius.hs          |  30 +---
- Text/Coffee.hs           |  56 +-------
- Text/Css.hs              | 151 ---------------------
- Text/CssCommon.hs        |  22 ---
- Text/Hamlet.hs           | 346 +++--------------------------------------------
- Text/Julius.hs           |  59 +-------
- Text/Lucius.hs           |  47 +------
- Text/Roy.hs              |  52 +------
- Text/Shakespeare.hs      |  70 ++--------
- Text/Shakespeare/Base.hs |  28 ----
- Text/Shakespeare/Text.hs | 117 ++--------------
- Text/TypeScript.hs       |  48 +------
- shakespeare.cabal        |   6 +-
- 13 files changed, 69 insertions(+), 963 deletions(-)
-
-diff --git a/Text/Cassius.hs b/Text/Cassius.hs
-index ba73bdd..ffe7c51 100644
---- a/Text/Cassius.hs
-+++ b/Text/Cassius.hs
-@@ -14,12 +14,7 @@ module Text.Cassius
-     , renderCss
-     , renderCssUrl
-       -- * Parsing
--    , cassius
--    , cassiusFile
--    , cassiusFileDebug
--    , cassiusFileReload
-       -- ** Mixims
--    , cassiusMixin
-     , Mixin
-       -- * ToCss instances
-       -- ** Color
-@@ -27,15 +22,12 @@ module Text.Cassius
-     , colorRed
-     , colorBlack
-       -- ** Size
--    , mkSize
-+    --, mkSize
-     , AbsoluteUnit (..)
-     , AbsoluteSize (..)
-     , absoluteSize
--    , EmSize (..)
--    , ExSize (..)
-     , PercentageSize (..)
-     , percentageSize
--    , PixelSize (..)
-       -- * Internal
-     , cassiusUsedIdentifiers
-     ) where
-@@ -47,25 +39,9 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..))
- import Language.Haskell.TH.Syntax
- import qualified Data.Text.Lazy as TL
- import Text.CssCommon
--import Text.Lucius (lucius)
- import qualified Text.Lucius
- import Text.IndentToBrace (i2b)
- 
--cassius :: QuasiQuoter
--cassius = QuasiQuoter { quoteExp = quoteExp lucius . i2b }
--
--cassiusFile :: FilePath -> Q Exp
--cassiusFile fp = do
--#ifdef GHC_7_4
--    qAddDependentFile fp
--#endif
--    contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp
--    quoteExp cassius contents
--
--cassiusFileDebug, cassiusFileReload :: FilePath -> Q Exp
--cassiusFileDebug = cssFileDebug True [|Text.Lucius.parseTopLevels|] Text.Lucius.parseTopLevels
--cassiusFileReload = cassiusFileDebug
--
- -- | Determine which identifiers are used by the given template, useful for
- -- creating systems like yesod devel.
- cassiusUsedIdentifiers :: String -> [(Deref, VarType)]
-@@ -74,10 +50,6 @@ cassiusUsedIdentifiers = cssUsedIdentifiers True Text.Lucius.parseTopLevels
- -- | Create a mixin with Cassius syntax.
- --
- -- Since 2.0.3
--cassiusMixin :: QuasiQuoter
--cassiusMixin = QuasiQuoter
--    { quoteExp = quoteExp Text.Lucius.luciusMixin . i2bMixin
--    }
- 
- i2bMixin :: String -> String
- i2bMixin s' =
-diff --git a/Text/Coffee.hs b/Text/Coffee.hs
-index 488c81b..4e28c94 100644
---- a/Text/Coffee.hs
-+++ b/Text/Coffee.hs
-@@ -51,13 +51,13 @@ module Text.Coffee
-       -- ** Template-Reading Functions
-       -- | These QuasiQuoter and Template Haskell methods return values of
-       -- type @'JavascriptUrl' url@. See the Yesod book for details.
--      coffee
--    , coffeeFile
--    , coffeeFileReload
--    , coffeeFileDebug
-+    --  coffee
-+    --, coffeeFile
-+    --, coffeeFileReload
-+    --, coffeeFileDebug
- 
- #ifdef TEST_EXPORT
--    , coffeeSettings
-+    -- , coffeeSettings
- #endif
-     ) where
- 
-@@ -65,49 +65,3 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..))
- import Language.Haskell.TH.Syntax
- import Text.Shakespeare
- import Text.Julius
--
--coffeeSettings :: Q ShakespeareSettings
--coffeeSettings = do
--  jsettings <- javascriptSettings
--  return $ jsettings { varChar = '%'
--  , preConversion = Just PreConvert {
--      preConvert = ReadProcess "coffee" ["-spb"]
--    , preEscapeIgnoreBalanced = "'\"`"     -- don't insert backtacks for variable already inside strings or backticks.
--    , preEscapeIgnoreLine = "#"            -- ignore commented lines
--    , wrapInsertion = Just WrapInsertion { 
--        wrapInsertionIndent = Just "  "
--      , wrapInsertionStartBegin = "("
--      , wrapInsertionSeparator = ", "
--      , wrapInsertionStartClose = ") =>"
--      , wrapInsertionEnd = ""
--      , wrapInsertionAddParens = False
--      }
--    }
--  }
--
---- | Read inline, quasiquoted CoffeeScript.
--coffee :: QuasiQuoter
--coffee = QuasiQuoter { quoteExp = \s -> do
--    rs <- coffeeSettings
--    quoteExp (shakespeare rs) s
--    }
--
---- | Read in a CoffeeScript template file. This function reads the file once, at
---- compile time.
--coffeeFile :: FilePath -> Q Exp
--coffeeFile fp = do
--    rs <- coffeeSettings
--    shakespeareFile rs fp
--
---- | Read in a CoffeeScript template file. This impure function uses
---- unsafePerformIO to re-read the file on every call, allowing for rapid
---- iteration.
--coffeeFileReload :: FilePath -> Q Exp
--coffeeFileReload fp = do
--    rs <- coffeeSettings
--    shakespeareFileReload rs fp
--
---- | Deprecated synonym for 'coffeeFileReload'
--coffeeFileDebug :: FilePath -> Q Exp
--coffeeFileDebug = coffeeFileReload
--{-# DEPRECATED coffeeFileDebug "Please use coffeeFileReload instead." #-}
-diff --git a/Text/Css.hs b/Text/Css.hs
-index 75dc549..20c206c 100644
---- a/Text/Css.hs
-+++ b/Text/Css.hs
-@@ -166,22 +166,6 @@ cssUsedIdentifiers toi2b parseBlocks s' =
-         (scope, rest') = go rest
-     go' (Attr k v) = k ++ v
- 
--cssFileDebug :: Bool -- ^ perform the indent-to-brace conversion
--             -> Q Exp
--             -> Parser [TopLevel Unresolved]
--             -> FilePath
--             -> Q Exp
--cssFileDebug toi2b parseBlocks' parseBlocks fp = do
--    s <- fmap TL.unpack $ qRunIO $ readUtf8File fp
--#ifdef GHC_7_4
--    qAddDependentFile fp
--#endif
--    let vs = cssUsedIdentifiers toi2b parseBlocks s
--    c <- mapM vtToExp vs
--    cr <- [|cssRuntime toi2b|]
--    parseBlocks'' <- parseBlocks'
--    return $ cr `AppE` parseBlocks'' `AppE` (LitE $ StringL fp) `AppE` ListE c
--
- combineSelectors :: HasLeadingSpace
-                  -> [Contents]
-                  -> [Contents]
-@@ -287,18 +271,6 @@ cssRuntime toi2b parseBlocks fp cd render' = unsafePerformIO $ do
- 
-     addScope scope = map (DerefIdent . Ident *** CDPlain . fromString) scope ++ cd
- 
--vtToExp :: (Deref, VarType) -> Q Exp
--vtToExp (d, vt) = do
--    d' <- lift d
--    c' <- c vt
--    return $ TupE [d', c' `AppE` derefToExp [] d]
--  where
--    c :: VarType -> Q Exp
--    c VTPlain = [|CDPlain . toCss|]
--    c VTUrl = [|CDUrl|]
--    c VTUrlParam = [|CDUrlParam|]
--    c VTMixin = [|CDMixin|]
--
- getVars :: Monad m => [(String, String)] -> Content -> m [(Deref, VarType)]
- getVars _ ContentRaw{} = return []
- getVars scope (ContentVar d) =
-@@ -342,111 +314,8 @@ compressBlock (Block x y blocks mixins) =
-     cc (ContentRaw a:ContentRaw b:c) = cc $ ContentRaw (a ++ b) : c
-     cc (a:b) = a : cc b
- 
--blockToMixin :: Name
--             -> Scope
--             -> Block Unresolved
--             -> Q Exp
--blockToMixin r scope (Block _sel props subblocks mixins) =
--    [|Mixin
--        { mixinAttrs    = concat
--                        $ $(listE $ map go props)
--                        : map mixinAttrs $mixinsE
--        -- FIXME too many complications to implement sublocks for now...
--        , mixinBlocks   = [] -- foldr (.) id $(listE $ map subGo subblocks) []
--        }|]
--      {-
--      . foldr (.) id $(listE $ map subGo subblocks)
--      . (concatMap mixinBlocks $mixinsE ++)
--    |]
--    -}
--  where
--    mixinsE = return $ ListE $ map (derefToExp []) mixins
--    go (Attr x y) = conE 'Attr
--        `appE` (contentsToBuilder r scope x)
--        `appE` (contentsToBuilder r scope y)
--    subGo (Block sel' b c d) = blockToCss r scope $ Block sel' b c d
--
--blockToCss :: Name
--           -> Scope
--           -> Block Unresolved
--           -> Q Exp
--blockToCss r scope (Block sel props subblocks mixins) =
--    [|((Block
--        { blockSelector = $(selectorToBuilder r scope sel)
--        , blockAttrs    = concat
--                        $ $(listE $ map go props)
--                        : map mixinAttrs $mixinsE
--        , blockBlocks   = ()
--        , blockMixins   = ()
--        } :: Block Resolved):)
--      . foldr (.) id $(listE $ map subGo subblocks)
--      . (concatMap mixinBlocks $mixinsE ++)
--    |]
--  where
--    mixinsE = return $ ListE $ map (derefToExp []) mixins
--    go (Attr x y) = conE 'Attr
--        `appE` (contentsToBuilder r scope x)
--        `appE` (contentsToBuilder r scope y)
--    subGo (hls, Block sel' b c d) =
--        blockToCss r scope $ Block sel'' b c d
--      where
--        sel'' = combineSelectors hls sel sel'
--
--selectorToBuilder :: Name -> Scope -> [Contents] -> Q Exp
--selectorToBuilder r scope sels =
--    contentsToBuilder r scope $ intercalate [ContentRaw ","] sels
--
--contentsToBuilder :: Name -> Scope -> [Content] -> Q Exp
--contentsToBuilder r scope contents =
--    appE [|mconcat|] $ listE $ map (contentToBuilder r scope) contents
--
--contentToBuilder :: Name -> Scope -> Content -> Q Exp
--contentToBuilder _ _ (ContentRaw x) =
--    [|fromText . pack|] `appE` litE (StringL x)
--contentToBuilder _ scope (ContentVar d) =
--    case d of
--        DerefIdent (Ident s)
--            | Just val <- lookup s scope -> [|fromText . pack|] `appE` litE (StringL val)
--        _ -> [|toCss|] `appE` return (derefToExp [] d)
--contentToBuilder r _ (ContentUrl u) =
--    [|fromText|] `appE`
--        (varE r `appE` return (derefToExp [] u) `appE` listE [])
--contentToBuilder r _ (ContentUrlParam u) =
--    [|fromText|] `appE`
--        ([|uncurry|] `appE` varE r `appE` return (derefToExp [] u))
--contentToBuilder _ _ ContentMixin{} = error "contentToBuilder on ContentMixin"
--
- type Scope = [(String, String)]
- 
--topLevelsToCassius :: [TopLevel Unresolved]
--                   -> Q Exp
--topLevelsToCassius a = do
--    r <- newName "_render"
--    lamE [varP r] $ appE [|CssNoWhitespace . foldr ($) []|] $ fmap ListE $ go r [] a
--  where
--    go _ _ [] = return []
--    go r scope (TopBlock b:rest) = do
--        e <- [|(++) $ map TopBlock ($(blockToCss r scope b) [])|]
--        es <- go r scope rest
--        return $ e : es
--    go r scope (TopAtBlock name s b:rest) = do
--        let s' = contentsToBuilder r scope s
--        e <- [|(:) $ TopAtBlock $(lift name) $(s') $(blocksToCassius r scope b)|]
--        es <- go r scope rest
--        return $ e : es
--    go r scope (TopAtDecl dec cs:rest) = do
--        e <- [|(:) $ TopAtDecl $(lift dec) $(contentsToBuilder r scope cs)|]
--        es <- go r scope rest
--        return $ e : es
--    go r scope (TopVar k v:rest) = go r ((k, v) : scope) rest
--
--blocksToCassius :: Name
--                -> Scope
--                -> [Block Unresolved]
--                -> Q Exp
--blocksToCassius r scope a = do
--    appE [|foldr ($) []|] $ listE $ map (blockToCss r scope) a
--
- renderCss :: Css -> TL.Text
- renderCss css =
-     toLazyText $ mconcat $ map go tops
-@@ -515,23 +384,3 @@ renderBlock haveWhiteSpace indent (Block sel attrs () ())
-         | haveWhiteSpace = fromString ";\n"
-         | otherwise = singleton ';'
- 
--instance Lift Mixin where
--    lift (Mixin a b) = [|Mixin a b|]
--instance Lift (Attr Unresolved) where
--    lift (Attr k v) = [|Attr k v :: Attr Unresolved |]
--instance Lift (Attr Resolved) where
--    lift (Attr k v) = [|Attr $(liftBuilder k) $(liftBuilder v) :: Attr Resolved |]
--
--liftBuilder :: Builder -> Q Exp
--liftBuilder b = [|fromText $ pack $(lift $ TL.unpack $ toLazyText b)|]
--
--instance Lift Content where
--    lift (ContentRaw s) = [|ContentRaw s|]
--    lift (ContentVar d) = [|ContentVar d|]
--    lift (ContentUrl d) = [|ContentUrl d|]
--    lift (ContentUrlParam d) = [|ContentUrlParam d|]
--    lift (ContentMixin m) = [|ContentMixin m|]
--instance Lift (Block Unresolved) where
--    lift (Block a b c d) = [|Block a b c d|]
--instance Lift (Block Resolved) where
--    lift (Block a b () ()) = [|Block $(liftBuilder a) b () ()|]
-diff --git a/Text/CssCommon.hs b/Text/CssCommon.hs
-index 719e0a8..0635cf4 100644
---- a/Text/CssCommon.hs
-+++ b/Text/CssCommon.hs
-@@ -1,4 +1,3 @@
--{-# LANGUAGE TemplateHaskell #-}
- {-# LANGUAGE GeneralizedNewtypeDeriving #-}
- {-# LANGUAGE FlexibleInstances #-}
- {-# LANGUAGE CPP #-}
-@@ -47,24 +46,6 @@ colorBlack = Color 0 0 0
- 
- -- CSS size wrappers
- 
---- | Create a CSS size, e.g. $(mkSize "100px").
--mkSize :: String -> ExpQ
--mkSize s = appE nameE valueE
--  where [(value, unit)] = reads s :: [(Double, String)]
--        absoluteSizeE = varE $ mkName "absoluteSize"
--        nameE = case unit of
--          "cm" -> appE absoluteSizeE (conE $ mkName "Centimeter")
--          "em" -> conE $ mkName "EmSize"
--          "ex" -> conE $ mkName "ExSize"
--          "in" -> appE absoluteSizeE (conE $ mkName "Inch")
--          "mm" -> appE absoluteSizeE (conE $ mkName "Millimeter")
--          "pc" -> appE absoluteSizeE (conE $ mkName "Pica")
--          "pt" -> appE absoluteSizeE (conE $ mkName "Point")
--          "px" -> conE $ mkName "PixelSize"
--          "%" -> varE $ mkName "percentageSize"
--          _ -> error $ "In mkSize, invalid unit: " ++ unit
--        valueE = litE $ rationalL (toRational value)
--
- -- | Absolute size units.
- data AbsoluteUnit = Centimeter
-                   | Inch
-@@ -156,6 +137,3 @@ showSize :: Rational -> String -> String
- showSize value' unit = printf "%f" value ++ unit
-   where value = fromRational value' :: Double
- 
--mkSizeType "EmSize" "em"
--mkSizeType "ExSize" "ex"
--mkSizeType "PixelSize" "px"
-diff --git a/Text/Hamlet.hs b/Text/Hamlet.hs
-index 4618be3..4ad3633 100644
---- a/Text/Hamlet.hs
-+++ b/Text/Hamlet.hs
-@@ -11,36 +11,36 @@
- module Text.Hamlet
-     ( -- * Plain HTML
-       Html
--    , shamlet
--    , shamletFile
--    , xshamlet
--    , xshamletFile
-+    --, shamlet
-+    --, shamletFile
-+    --, xshamlet
-+    --, xshamletFile
-       -- * Hamlet
-     , HtmlUrl
--    , hamlet
--    , hamletFile
--    , hamletFileReload
--    , ihamletFileReload
--    , xhamlet
--    , xhamletFile
-+    --, hamlet
-+    -- , hamletFile
-+    -- , hamletFileReload
-+    -- , ihamletFileReload
-+    -- , xhamlet
-+    -- , xhamletFile
-       -- * I18N Hamlet
-     , HtmlUrlI18n
--    , ihamlet
--    , ihamletFile
-+    -- , ihamlet
-+    -- , ihamletFile
-       -- * Type classes
-     , ToAttributes (..)
-       -- * Internal, for making more
-     , HamletSettings (..)
-     , NewlineStyle (..)
--    , hamletWithSettings
--    , hamletFileWithSettings
-+    -- , hamletWithSettings
-+    -- , hamletFileWithSettings
-     , defaultHamletSettings
-     , xhtmlHamletSettings
--    , Env (..)
--    , HamletRules (..)
--    , hamletRules
--    , ihamletRules
--    , htmlRules
-+    --, Env (..)
-+    --, HamletRules (..)
-+    --, hamletRules
-+    --, ihamletRules
-+    --, htmlRules
-     , CloseStyle (..)
-       -- * Used by generated code
-     , condH
-@@ -109,48 +109,9 @@ type HtmlUrl url = Render url -> Html
- -- | A function generating an 'Html' given a message translator and a URL rendering function.
- type HtmlUrlI18n msg url = Translate msg -> Render url -> Html
- 
--docsToExp :: Env -> HamletRules -> Scope -> [Doc] -> Q Exp
--docsToExp env hr scope docs = do
--    exps <- mapM (docToExp env hr scope) docs
--    case exps of
--        [] -> [|return ()|]
--        [x] -> return x
--        _ -> return $ DoE $ map NoBindS exps
--
- unIdent :: Ident -> String
- unIdent (Ident s) = s
- 
--bindingPattern :: Binding -> Q (Pat, [(Ident, Exp)])
--bindingPattern (BindAs i@(Ident s) b) = do
--    name <- newName s
--    (pattern, scope) <- bindingPattern b
--    return (AsP name pattern, (i, VarE name):scope)
--bindingPattern (BindVar i@(Ident s))
--    | s == "_" = return (WildP, [])
--    | all isDigit s = do
--        return (LitP $ IntegerL $ read s, [])
--    | otherwise = do
--        name <- newName s
--        return (VarP name, [(i, VarE name)])
--bindingPattern (BindTuple is) = do
--    (patterns, scopes) <- fmap unzip $ mapM bindingPattern is
--    return (TupP patterns, concat scopes)
--bindingPattern (BindList is) = do
--    (patterns, scopes) <- fmap unzip $ mapM bindingPattern is
--    return (ListP patterns, concat scopes)
--bindingPattern (BindConstr con is) = do
--    (patterns, scopes) <- fmap unzip $ mapM bindingPattern is
--    return (ConP (mkConName con) patterns, concat scopes)
--bindingPattern (BindRecord con fields wild) = do
--    let f (Ident field,b) =
--           do (p,s) <- bindingPattern b
--              return ((mkName field,p),s)
--    (patterns, scopes) <- fmap unzip $ mapM f fields
--    (patterns1, scopes1) <- if wild
--       then bindWildFields con $ map fst fields
--       else return ([],[])
--    return (RecP (mkConName con) (patterns++patterns1), concat scopes ++ scopes1)
--
- mkConName :: DataConstr -> Name
- mkConName = mkName . conToStr
- 
-@@ -158,257 +119,15 @@ conToStr :: DataConstr -> String
- conToStr (DCUnqualified (Ident x)) = x
- conToStr (DCQualified (Module xs) (Ident x)) = intercalate "." $ xs ++ [x]
- 
---- Wildcards bind all of the unbound fields to variables whose name
---- matches the field name.
----
---- For example: data R = C { f1, f2 :: Int }
---- C {..}           is equivalent to   C {f1=f1, f2=f2}
---- C {f1 = a, ..}   is equivalent to   C {f1=a,  f2=f2}
---- C {f2 = a, ..}   is equivalent to   C {f1=f1, f2=a}
--bindWildFields :: DataConstr -> [Ident] -> Q ([(Name, Pat)], [(Ident, Exp)])
--bindWildFields conName fields = do
--  fieldNames <- recordToFieldNames conName
--  let available n     = nameBase n `notElem` map unIdent fields
--  let remainingFields = filter available fieldNames
--  let mkPat n = do
--        e <- newName (nameBase n)
--        return ((n,VarP e), (Ident (nameBase n), VarE e))
--  fmap unzip $ mapM mkPat remainingFields
--
---- Important note! reify will fail if the record type is defined in the
---- same module as the reify is used. This means quasi-quoted Hamlet
---- literals will not be able to use wildcards to match record types
---- defined in the same module.
--recordToFieldNames :: DataConstr -> Q [Name]
--recordToFieldNames conStr = do
--  -- use 'lookupValueName' instead of just using 'mkName' so we reify the
--  -- data constructor and not the type constructor if their names match.
--  Just conName                <- lookupValueName $ conToStr conStr
--  DataConI _ _ typeName _     <- reify conName
--  TyConI (DataD _ _ _ cons _) <- reify typeName
--  [fields] <- return [fields | RecC name fields <- cons, name == conName]
--  return [fieldName | (fieldName, _, _) <- fields]
--
--docToExp :: Env -> HamletRules -> Scope -> Doc -> Q Exp
--docToExp env hr scope (DocForall list idents inside) = do
--    let list' = derefToExp scope list
--    (pat, extraScope) <- bindingPattern idents
--    let scope' = extraScope ++ scope
--    mh <- [|F.mapM_|]
--    inside' <- docsToExp env hr scope' inside
--    let lam = LamE [pat] inside'
--    return $ mh `AppE` lam `AppE` list'
--docToExp env hr scope (DocWith [] inside) = do
--    inside' <- docsToExp env hr scope inside
--    return $ inside'
--docToExp env hr scope (DocWith ((deref, idents):dis) inside) = do
--    let deref' = derefToExp scope deref
--    (pat, extraScope) <- bindingPattern idents
--    let scope' = extraScope ++ scope
--    inside' <- docToExp env hr scope' (DocWith dis inside)
--    let lam = LamE [pat] inside'
--    return $ lam `AppE` deref'
--docToExp env hr scope (DocMaybe val idents inside mno) = do
--    let val' = derefToExp scope val
--    (pat, extraScope) <- bindingPattern idents
--    let scope' = extraScope ++ scope
--    inside' <- docsToExp env hr scope' inside
--    let inside'' = LamE [pat] inside'
--    ninside' <- case mno of
--                    Nothing -> [|Nothing|]
--                    Just no -> do
--                        no' <- docsToExp env hr scope no
--                        j <- [|Just|]
--                        return $ j `AppE` no'
--    mh <- [|maybeH|]
--    return $ mh `AppE` val' `AppE` inside'' `AppE` ninside'
--docToExp env hr scope (DocCond conds final) = do
--    conds' <- mapM go conds
--    final' <- case final of
--                Nothing -> [|Nothing|]
--                Just f -> do
--                    f' <- docsToExp env hr scope f
--                    j <- [|Just|]
--                    return $ j `AppE` f'
--    ch <- [|condH|]
--    return $ ch `AppE` ListE conds' `AppE` final'
--  where
--    go :: (Deref, [Doc]) -> Q Exp
--    go (d, docs) = do
--        let d' = derefToExp ((specialOrIdent, VarE 'or):scope) d
--        docs' <- docsToExp env hr scope docs
--        return $ TupE [d', docs']
--docToExp env hr scope (DocCase deref cases) = do
--    let exp_ = derefToExp scope deref
--    matches <- mapM toMatch cases
--    return $ CaseE exp_ matches
--  where
--    toMatch :: (Binding, [Doc]) -> Q Match
--    toMatch (idents, inside) = do
--        (pat, extraScope) <- bindingPattern idents
--        let scope' = extraScope ++ scope
--        insideExp <- docsToExp env hr scope' inside
--        return $ Match pat (NormalB insideExp) []
--docToExp env hr v (DocContent c) = contentToExp env hr v c
--
--contentToExp :: Env -> HamletRules -> Scope -> Content -> Q Exp
--contentToExp _ hr _ (ContentRaw s) = do
--    os <- [|preEscapedText . pack|]
--    let s' = LitE $ StringL s
--    return $ hrFromHtml hr `AppE` (os `AppE` s')
--contentToExp _ hr scope (ContentVar d) = do
--    str <- [|toHtml|]
--    return $ hrFromHtml hr `AppE` (str `AppE` derefToExp scope d)
--contentToExp env hr scope (ContentUrl hasParams d) =
--    case urlRender env of
--        Nothing -> error "URL interpolation used, but no URL renderer provided"
--        Just wrender -> wrender $ \render -> do
--            let render' = return render
--            ou <- if hasParams
--                    then [|\(u, p) -> $(render') u p|]
--                    else [|\u -> $(render') u []|]
--            let d' = derefToExp scope d
--            pet <- [|toHtml|]
--            return $ hrFromHtml hr `AppE` (pet `AppE` (ou `AppE` d'))
--contentToExp env hr scope (ContentEmbed d) = hrEmbed hr env $ derefToExp scope d
--contentToExp env hr scope (ContentMsg d) =
--    case msgRender env of
--        Nothing -> error "Message interpolation used, but no message renderer provided"
--        Just wrender -> wrender $ \render ->
--            return $ hrFromHtml hr `AppE` (render `AppE` derefToExp scope d)
--contentToExp _ hr scope (ContentAttrs d) = do
--    html <- [|attrsToHtml . toAttributes|]
--    return $ hrFromHtml hr `AppE` (html `AppE` derefToExp scope d)
--
--shamlet :: QuasiQuoter
--shamlet = hamletWithSettings htmlRules defaultHamletSettings
--
--xshamlet :: QuasiQuoter
--xshamlet = hamletWithSettings htmlRules xhtmlHamletSettings
--
--htmlRules :: Q HamletRules
--htmlRules = do
--    i <- [|id|]
--    return $ HamletRules i ($ (Env Nothing Nothing)) (\_ b -> return b)
--
--hamlet :: QuasiQuoter
--hamlet = hamletWithSettings hamletRules defaultHamletSettings
--
--xhamlet :: QuasiQuoter
--xhamlet = hamletWithSettings hamletRules xhtmlHamletSettings
--
- asHtmlUrl :: HtmlUrl url -> HtmlUrl url
- asHtmlUrl = id
- 
--hamletRules :: Q HamletRules
--hamletRules = do
--    i <- [|id|]
--    let ur f = do
--            r <- newName "_render"
--            let env = Env
--                    { urlRender = Just ($ (VarE r))
--                    , msgRender = Nothing
--                    }
--            h <- f env
--            return $ LamE [VarP r] h
--    return $ HamletRules i ur em
--  where
--    em (Env (Just urender) Nothing) e = do
--        asHtmlUrl' <- [|asHtmlUrl|]
--        urender $ \ur' -> return ((asHtmlUrl' `AppE` e) `AppE` ur')
--    em _ _ = error "bad Env"
--
--ihamlet :: QuasiQuoter
--ihamlet = hamletWithSettings ihamletRules defaultHamletSettings
--
--ihamletRules :: Q HamletRules
--ihamletRules = do
--    i <- [|id|]
--    let ur f = do
--            u <- newName "_urender"
--            m <- newName "_mrender"
--            let env = Env
--                    { urlRender = Just ($ (VarE u))
--                    , msgRender = Just ($ (VarE m))
--                    }
--            h <- f env
--            return $ LamE [VarP m, VarP u] h
--    return $ HamletRules i ur em
--  where
--    em (Env (Just urender) (Just mrender)) e =
--          urender $ \ur' -> mrender $ \mr -> return (e `AppE` mr `AppE` ur')
--    em _ _ = error "bad Env"
--
--hamletWithSettings :: Q HamletRules -> HamletSettings -> QuasiQuoter
--hamletWithSettings hr set =
--    QuasiQuoter
--        { quoteExp = hamletFromString hr set
--        }
--
--data HamletRules = HamletRules
--    { hrFromHtml :: Exp
--    , hrWithEnv :: (Env -> Q Exp) -> Q Exp
--    , hrEmbed :: Env -> Exp -> Q Exp
--    }
--
--data Env = Env
--    { urlRender :: Maybe ((Exp -> Q Exp) -> Q Exp)
--    , msgRender :: Maybe ((Exp -> Q Exp) -> Q Exp)
--    }
--
--hamletFromString :: Q HamletRules -> HamletSettings -> String -> Q Exp
--hamletFromString qhr set s = do
--    hr <- qhr
--    hrWithEnv hr $ \env -> docsToExp env hr [] $ docFromString set s
--
- docFromString :: HamletSettings -> String -> [Doc]
- docFromString set s =
-     case parseDoc set s of
-         Error s' -> error s'
-         Ok (_, d) -> d
- 
--hamletFileWithSettings :: Q HamletRules -> HamletSettings -> FilePath -> Q Exp
--hamletFileWithSettings qhr set fp = do
--#ifdef GHC_7_4
--    qAddDependentFile fp
--#endif
--    contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp
--    hamletFromString qhr set contents
--
--hamletFile :: FilePath -> Q Exp
--hamletFile = hamletFileWithSettings hamletRules defaultHamletSettings
--
--hamletFileReload :: FilePath -> Q Exp
--hamletFileReload = hamletFileReloadWithSettings runtimeRules defaultHamletSettings
--  where runtimeRules = HamletRuntimeRules { hrrI18n = False }
--
--ihamletFileReload :: FilePath -> Q Exp
--ihamletFileReload = hamletFileReloadWithSettings runtimeRules defaultHamletSettings
--  where runtimeRules = HamletRuntimeRules { hrrI18n = True }
--
--xhamletFile :: FilePath -> Q Exp
--xhamletFile = hamletFileWithSettings hamletRules xhtmlHamletSettings
--
--shamletFile :: FilePath -> Q Exp
--shamletFile = hamletFileWithSettings htmlRules defaultHamletSettings
--
--xshamletFile :: FilePath -> Q Exp
--xshamletFile = hamletFileWithSettings htmlRules xhtmlHamletSettings
--
--ihamletFile :: FilePath -> Q Exp
--ihamletFile = hamletFileWithSettings ihamletRules defaultHamletSettings
--
--varName :: Scope -> String -> Exp
--varName _ "" = error "Illegal empty varName"
--varName scope v@(_:_) = fromMaybe (strToExp v) $ lookup (Ident v) scope
--
--strToExp :: String -> Exp
--strToExp s@(c:_)
--    | all isDigit s = LitE $ IntegerL $ read s
--    | isUpper c = ConE $ mkName s
--    | otherwise = VarE $ mkName s
--strToExp "" = error "strToExp on empty string"
--
- -- | Checks for truth in the left value in each pair in the first argument. If
- -- a true exists, then the corresponding right action is performed. Only the
- -- first is performed. In there are no true values, then the second argument is
-@@ -461,33 +180,6 @@ data HamletRuntimeRules = HamletRuntimeRules {
-                             hrrI18n :: Bool
-                           }
- 
--hamletFileReloadWithSettings :: HamletRuntimeRules
--                             -> HamletSettings -> FilePath -> Q Exp
--hamletFileReloadWithSettings hrr settings fp = do
--    s <- readFileQ fp
--    let b = hamletUsedIdentifiers settings s
--    c <- mapM vtToExp b
--    rt <- if hrrI18n hrr
--      then [|hamletRuntimeMsg settings fp|]
--      else [|hamletRuntime settings fp|]
--    return $ rt `AppE` ListE c
--  where
--    vtToExp :: (Deref, VarType) -> Q Exp
--    vtToExp (d, vt) = do
--        d' <- lift d
--        c' <- toExp vt
--        return $ TupE [d', c' `AppE` derefToExp [] d]
--      where
--        toExp = c
--          where
--            c :: VarType -> Q Exp
--            c VTAttrs = [|EPlain . attrsToHtml . toAttributes|]
--            c VTPlain = [|EPlain . toHtml|]
--            c VTUrl = [|EUrl|]
--            c VTUrlParam = [|EUrlParam|]
--            c VTMixin = [|\r -> EMixin $ \c -> r c|]
--            c VTMsg = [|EMsg|]
--
- -- move to Shakespeare.Base?
- readFileUtf8 :: FilePath -> IO String
- readFileUtf8 fp = fmap TL.unpack $ readUtf8File fp
-diff --git a/Text/Julius.hs b/Text/Julius.hs
-index 8c15a99..47b42fd 100644
---- a/Text/Julius.hs
-+++ b/Text/Julius.hs
-@@ -14,17 +14,9 @@ module Text.Julius
-       -- ** Template-Reading Functions
-       -- | These QuasiQuoter and Template Haskell methods return values of
-       -- type @'JavascriptUrl' url@. See the Yesod book for details.
--      js
--    , julius
--    , juliusFile
--    , jsFile
--    , juliusFileDebug
--    , jsFileDebug
--    , juliusFileReload
--    , jsFileReload
- 
-       -- * Datatypes
--    , JavascriptUrl
-+      JavascriptUrl
-     , Javascript (..)
-     , RawJavascript (..)
- 
-@@ -37,9 +29,9 @@ module Text.Julius
-     , renderJavascriptUrl
- 
-       -- ** internal, used by 'Text.Coffee'
--    , javascriptSettings
-+    --, javascriptSettings
-       -- ** internal
--    , juliusUsedIdentifiers
-+    --, juliusUsedIdentifiers
-     , asJavascriptUrl
-     ) where
- 
-@@ -102,48 +94,3 @@ instance RawJS TL.Text where rawJS = RawJavascript . fromLazyText
- instance RawJS Builder where rawJS = RawJavascript
- instance RawJS Bool where rawJS = RawJavascript . unJavascript . toJavascript
- 
--javascriptSettings :: Q ShakespeareSettings
--javascriptSettings = do
--  toJExp <- [|toJavascript|]
--  wrapExp <- [|Javascript|]
--  unWrapExp <- [|unJavascript|]
--  asJavascriptUrl' <- [|asJavascriptUrl|]
--  return $ defaultShakespeareSettings { toBuilder = toJExp
--  , wrap = wrapExp
--  , unwrap = unWrapExp
--  , modifyFinalValue = Just asJavascriptUrl'
--  }
--
--js, julius :: QuasiQuoter
--js = QuasiQuoter { quoteExp = \s -> do
--    rs <- javascriptSettings
--    quoteExp (shakespeare rs) s
--    }
--
--julius = js
--
--jsFile, juliusFile :: FilePath -> Q Exp
--jsFile fp = do
--    rs <- javascriptSettings
--    shakespeareFile rs fp
--
--juliusFile = jsFile
--
--
--jsFileReload, juliusFileReload :: FilePath -> Q Exp
--jsFileReload fp = do
--    rs <- javascriptSettings
--    shakespeareFileReload rs fp
--
--juliusFileReload = jsFileReload
--
--jsFileDebug, juliusFileDebug :: FilePath -> Q Exp
--juliusFileDebug = jsFileReload
--{-# DEPRECATED juliusFileDebug "Please use juliusFileReload instead." #-}
--jsFileDebug = jsFileReload
--{-# DEPRECATED jsFileDebug "Please use jsFileReload instead." #-}
--
---- | Determine which identifiers are used by the given template, useful for
---- creating systems like yesod devel.
--juliusUsedIdentifiers :: String -> [(Deref, VarType)]
--juliusUsedIdentifiers = shakespeareUsedIdentifiers defaultShakespeareSettings
-diff --git a/Text/Lucius.hs b/Text/Lucius.hs
-index 3226b79..fd0b7be 100644
---- a/Text/Lucius.hs
-+++ b/Text/Lucius.hs
-@@ -9,13 +9,13 @@
- {-# OPTIONS_GHC -fno-warn-missing-fields #-}
- module Text.Lucius
-     ( -- * Parsing
--      lucius
--    , luciusFile
--    , luciusFileDebug
--    , luciusFileReload
-+    --  lucius
-+    --, luciusFile
-+    --, luciusFileDebug
-+    --, luciusFileReload
-       -- ** Mixins
--    , luciusMixin
--    , Mixin
-+    --, luciusMixin
-+      Mixin
-       -- ** Runtime
-     , luciusRT
-     , luciusRT'
-@@ -37,15 +37,12 @@ module Text.Lucius
-     , colorRed
-     , colorBlack
-       -- ** Size
--    , mkSize
-+    --, mkSize
-     , AbsoluteUnit (..)
-     , AbsoluteSize (..)
-     , absoluteSize
--    , EmSize (..)
--    , ExSize (..)
-     , PercentageSize (..)
-     , percentageSize
--    , PixelSize (..)
-       -- * Internal
-     , parseTopLevels
-     , luciusUsedIdentifiers
-@@ -72,13 +69,6 @@ import Text.Shakespeare (VarType)
- --
- -- >>> renderCss ([lucius|foo{bar:baz}|] undefined)
- -- "foo{bar:baz}"
--lucius :: QuasiQuoter
--lucius = QuasiQuoter { quoteExp = luciusFromString }
--
--luciusFromString :: String -> Q Exp
--luciusFromString s =
--    topLevelsToCassius
--  $ either (error . show) id $ parse parseTopLevels s s
- 
- whiteSpace :: Parser ()
- whiteSpace = many whiteSpace1 >> return ()
-@@ -219,18 +209,6 @@ parseComment = do
-     _ <- manyTill anyChar $ try $ string "*/"
-     return $ ContentRaw ""
- 
--luciusFile :: FilePath -> Q Exp
--luciusFile fp = do
--#ifdef GHC_7_4
--    qAddDependentFile fp
--#endif
--    contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp
--    luciusFromString contents
--
--luciusFileDebug, luciusFileReload :: FilePath -> Q Exp
--luciusFileDebug = cssFileDebug False [|parseTopLevels|] parseTopLevels
--luciusFileReload = luciusFileDebug
--
- parseTopLevels :: Parser [TopLevel Unresolved]
- parseTopLevels =
-     go id
-@@ -379,14 +357,3 @@ luciusRTMinified tl scope = either Left (Right . renderCss . CssNoWhitespace) $
- luciusUsedIdentifiers :: String -> [(Deref, VarType)]
- luciusUsedIdentifiers = cssUsedIdentifiers False parseTopLevels
- 
--luciusMixin :: QuasiQuoter
--luciusMixin = QuasiQuoter { quoteExp = luciusMixinFromString }
--
--luciusMixinFromString :: String -> Q Exp
--luciusMixinFromString s' = do
--    r <- newName "_render"
--    case fmap compressBlock $ parse parseBlock s s of
--        Left e -> error $ show e
--        Right block -> blockToMixin r [] block
--  where
--    s = concat ["mixin{", s', "}"]
-diff --git a/Text/Roy.hs b/Text/Roy.hs
-index 6e5e246..a08b019 100644
---- a/Text/Roy.hs
-+++ b/Text/Roy.hs
-@@ -39,12 +39,12 @@ module Text.Roy
-       -- ** Template-Reading Functions
-       -- | These QuasiQuoter and Template Haskell methods return values of
-       -- type @'JavascriptUrl' url@. See the Yesod book for details.
--      roy
--    , royFile
--    , royFileReload
-+    --  roy
-+    --, royFile
-+    --, royFileReload
- 
- #ifdef TEST_EXPORT
--    , roySettings
-+    --, roySettings
- #endif
-     ) where
- 
-@@ -52,47 +52,3 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..))
- import Language.Haskell.TH.Syntax
- import Text.Shakespeare
- import Text.Julius
--
---- | The Roy language compiles down to Javascript.
---- We do this compilation once at compile time to avoid needing to do it during the request.
---- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call.
--roySettings :: Q ShakespeareSettings
--roySettings = do
--  jsettings <- javascriptSettings
--  return $ jsettings { varChar = '#'
--  , preConversion = Just PreConvert {
--      preConvert = ReadProcess "roy" ["--stdio", "--browser"]
--    , preEscapeIgnoreBalanced = "'\""
--    , preEscapeIgnoreLine = "//"
--    , wrapInsertion = Just WrapInsertion {
--        wrapInsertionIndent = Just "  "
--      , wrapInsertionStartBegin = "(\\"
--      , wrapInsertionSeparator = " "
--      , wrapInsertionStartClose = " ->\n"
--      , wrapInsertionEnd = ")"
--      , wrapInsertionAddParens = True
--      }
--    }
--  }
--
---- | Read inline, quasiquoted Roy.
--roy :: QuasiQuoter
--roy = QuasiQuoter { quoteExp = \s -> do
--    rs <- roySettings
--    quoteExp (shakespeare rs) s
--    }
--
---- | Read in a Roy template file. This function reads the file once, at
---- compile time.
--royFile :: FilePath -> Q Exp
--royFile fp = do
--    rs <- roySettings
--    shakespeareFile rs fp
--
---- | Read in a Roy template file. This impure function uses
---- unsafePerformIO to re-read the file on every call, allowing for rapid
---- iteration.
--royFileReload :: FilePath -> Q Exp
--royFileReload fp = do
--    rs <- roySettings
--    shakespeareFileReload rs fp
-diff --git a/Text/Shakespeare.hs b/Text/Shakespeare.hs
-index 98c0c2d..2f6431b 100644
---- a/Text/Shakespeare.hs
-+++ b/Text/Shakespeare.hs
-@@ -16,12 +16,12 @@ module Text.Shakespeare
-     , WrapInsertion (..)
-     , PreConversion (..)
-     , defaultShakespeareSettings
--    , shakespeare
--    , shakespeareFile
--    , shakespeareFileReload
-+    -- , shakespeare
-+    -- , shakespeareFile
-+    -- , shakespeareFileReload
-     -- * low-level
--    , shakespeareFromString
--    , shakespeareUsedIdentifiers
-+    -- , shakespeareFromString
-+    -- , shakespeareUsedIdentifiers
-     , RenderUrl
-     , VarType (..)
-     , Deref
-@@ -153,38 +153,6 @@ defaultShakespeareSettings = ShakespeareSettings {
-   , modifyFinalValue = Nothing
- }
- 
--instance Lift PreConvert where
--    lift (PreConvert convert ignore comment wrapInsertion) =
--        [|PreConvert $(lift convert) $(lift ignore) $(lift comment) $(lift wrapInsertion)|]
--
--instance Lift WrapInsertion where
--    lift (WrapInsertion indent sb sep sc e wp) =
--        [|WrapInsertion $(lift indent) $(lift sb) $(lift sep) $(lift sc) $(lift e) $(lift wp)|]
--
--instance Lift PreConversion where
--    lift (ReadProcess command args) =
--        [|ReadProcess $(lift command) $(lift args)|]
--    lift Id = [|Id|]
--
--instance Lift ShakespeareSettings where
--    lift (ShakespeareSettings x1 x2 x3 x4 x5 x6 x7 x8 x9) =
--        [|ShakespeareSettings
--            $(lift x1) $(lift x2) $(lift x3)
--            $(liftExp x4) $(liftExp x5) $(liftExp x6) $(lift x7) $(lift x8) $(liftMExp x9)|]
--      where
--        liftExp (VarE n) = [|VarE $(liftName n)|]
--        liftExp (ConE n) = [|ConE $(liftName n)|]
--        liftExp _ = error "liftExp only supports VarE and ConE"
--        liftMExp Nothing = [|Nothing|]
--        liftMExp (Just e) = [|Just|] `appE` liftExp e
--        liftName (Name (OccName a) b) = [|Name (OccName $(lift a)) $(liftFlavour b)|]
--        liftFlavour NameS = [|NameS|]
--        liftFlavour (NameQ (ModName a)) = [|NameQ (ModName $(lift a))|]
--        liftFlavour (NameU _) = error "liftFlavour NameU" -- [|NameU $(lift $ fromIntegral a)|]
--        liftFlavour (NameL _) = error "liftFlavour NameL" -- [|NameU $(lift $ fromIntegral a)|]
--        liftFlavour (NameG ns (PkgName p) (ModName m)) = [|NameG $(liftNS ns) (PkgName $(lift p)) (ModName $(lift m))|]
--        liftNS VarName = [|VarName|]
--        liftNS DataName = [|DataName|]
- 
- type QueryParameters = [(TS.Text, TS.Text)]
- type RenderUrl url = (url -> QueryParameters -> TS.Text)
-@@ -348,6 +316,7 @@ pack' = TS.pack
- {-# NOINLINE pack' #-}
- #endif
- 
-+{-
- contentsToShakespeare :: ShakespeareSettings -> [Content] -> Q Exp
- contentsToShakespeare rs a = do
-     r <- newName "_render"
-@@ -399,16 +368,19 @@ shakespeareFile r fp =
-     qAddDependentFile fp >>
- #endif
-         readFileQ fp >>= shakespeareFromString r
-+-}
- 
- data VarType = VTPlain | VTUrl | VTUrlParam | VTMixin
-     deriving (Show, Eq, Ord, Enum, Bounded, Typeable, Data, Generic)
- 
-+{-
- getVars :: Content -> [(Deref, VarType)]
- getVars ContentRaw{} = []
- getVars (ContentVar d) = [(d, VTPlain)]
- getVars (ContentUrl d) = [(d, VTUrl)]
- getVars (ContentUrlParam d) = [(d, VTUrlParam)]
- getVars (ContentMix d) = [(d, VTMixin)]
-+-}
- 
- data VarExp url = EPlain Builder
-                 | EUrl url
-@@ -417,8 +389,10 @@ data VarExp url = EPlain Builder
- 
- -- | Determine which identifiers are used by the given template, useful for
- -- creating systems like yesod devel.
-+{-
- shakespeareUsedIdentifiers :: ShakespeareSettings -> String -> [(Deref, VarType)]
- shakespeareUsedIdentifiers settings = concatMap getVars . contentFromString settings
-+-}
- 
- type MTime = UTCTime
- 
-@@ -435,28 +409,6 @@ insertReloadMap :: FilePath -> (MTime, [Content]) -> IO [Content]
- insertReloadMap fp (mt, content) = atomicModifyIORef reloadMapRef
-   (\reloadMap -> (M.insert fp (mt, content) reloadMap, content))
- 
--shakespeareFileReload :: ShakespeareSettings -> FilePath -> Q Exp
--shakespeareFileReload settings fp = do
--    str <- readFileQ fp
--    s <- qRunIO $ preFilter (Just fp) settings str
--    let b = shakespeareUsedIdentifiers settings s
--    c <- mapM vtToExp b
--    rt <- [|shakespeareRuntime settings fp|]
--    wrap' <- [|\x -> $(return $ wrap settings) . x|]
--    return $ wrap' `AppE` (rt `AppE` ListE c)
--  where
--    vtToExp :: (Deref, VarType) -> Q Exp
--    vtToExp (d, vt) = do
--        d' <- lift d
--        c' <- c vt
--        return $ TupE [d', c' `AppE` derefToExp [] d]
--      where
--        c :: VarType -> Q Exp
--        c VTPlain = [|EPlain . $(return $
--          InfixE (Just $ unwrap settings) (VarE '(.)) (Just $ toBuilder settings))|]
--        c VTUrl = [|EUrl|]
--        c VTUrlParam = [|EUrlParam|]
--        c VTMixin = [|\x -> EMixin $ \r -> $(return $ unwrap settings) $ x r|]
- 
- 
- 
-diff --git a/Text/Shakespeare/Base.hs b/Text/Shakespeare/Base.hs
-index a0e983c..23b4692 100644
---- a/Text/Shakespeare/Base.hs
-+++ b/Text/Shakespeare/Base.hs
-@@ -52,34 +52,6 @@ data Deref = DerefModulesIdent [String] Ident
-            | DerefTuple [Deref]
-     deriving (Show, Eq, Read, Data, Typeable, Ord)
- 
--instance Lift Ident where
--    lift (Ident s) = [|Ident|] `appE` lift s
--instance Lift Deref where
--    lift (DerefModulesIdent v s) = do
--        dl <- [|DerefModulesIdent|]
--        v' <- lift v
--        s' <- lift s
--        return $ dl `AppE` v' `AppE` s'
--    lift (DerefIdent s) = do
--        dl <- [|DerefIdent|]
--        s' <- lift s
--        return $ dl `AppE` s'
--    lift (DerefBranch x y) = do
--        x' <- lift x
--        y' <- lift y
--        db <- [|DerefBranch|]
--        return $ db `AppE` x' `AppE` y'
--    lift (DerefIntegral i) = [|DerefIntegral|] `appE` lift i
--    lift (DerefRational r) = do
--        n <- lift $ numerator r
--        d <- lift $ denominator r
--        per <- [|(%) :: Int -> Int -> Ratio Int|]
--        dr <- [|DerefRational|]
--        return $ dr `AppE` InfixE (Just n) per (Just d)
--    lift (DerefString s) = [|DerefString|] `appE` lift s
--    lift (DerefList x) = [|DerefList $(lift x)|]
--    lift (DerefTuple x) = [|DerefTuple $(lift x)|]
--
- derefParens, derefCurlyBrackets :: UserParser a Deref
- derefParens        = between (char '(') (char ')') parseDeref
- derefCurlyBrackets = between (char '{') (char '}') parseDeref
-diff --git a/Text/Shakespeare/Text.hs b/Text/Shakespeare/Text.hs
-index f490d7f..5154618 100644
---- a/Text/Shakespeare/Text.hs
-+++ b/Text/Shakespeare/Text.hs
-@@ -7,20 +7,20 @@ module Text.Shakespeare.Text
-     ( TextUrl
-     , ToText (..)
-     , renderTextUrl
--    , stext
--    , text
--    , textFile
--    , textFileDebug
--    , textFileReload
--    , st -- | strict text
--    , lt -- | lazy text, same as stext :)
--    , sbt -- | strict text whose left edge is aligned with bar ('|')
--    , lbt -- | lazy text, whose left edge is aligned with bar ('|')
-+    --, stext
-+    --, text
-+    --, textFile
-+    --, textFileDebug
-+    --, textFileReload
-+    --, st -- | strict text
-+    --, lt -- | lazy text, same as stext :)
-+    --, sbt -- | strict text whose left edge is aligned with bar ('|')
-+    --, lbt -- | lazy text, whose left edge is aligned with bar ('|')
-     -- * Yesod code generation
--    , codegen
--    , codegenSt
--    , codegenFile
--    , codegenFileReload
-+    --, codegen
-+    --, codegenSt
-+    --, codegenFile
-+    --, codegenFileReload
-     ) where
- 
- import Language.Haskell.TH.Quote (QuasiQuoter (..))
-@@ -59,66 +59,12 @@ settings = do
-   }
- 
- 
--stext, lt, st, text, lbt, sbt :: QuasiQuoter
--stext = 
--  QuasiQuoter { quoteExp = \s -> do
--    rs <- settings
--    render <- [|toLazyText|]
--    rendered <- shakespeareFromString rs { justVarInterpolation = True } s
--    return (render `AppE` rendered)
--    }
--lt = stext
--
--st = 
--  QuasiQuoter { quoteExp = \s -> do
--    rs <- settings
--    render <- [|TL.toStrict . toLazyText|]
--    rendered <- shakespeareFromString rs { justVarInterpolation = True } s
--    return (render `AppE` rendered)
--    }
--
--text = QuasiQuoter { quoteExp = \s -> do
--    rs <- settings
--    quoteExp (shakespeare rs) $ filter (/='\r') s
--    }
--
- dropBar :: [TL.Text] -> [TL.Text]
- dropBar [] = []
- dropBar (c:cx) = c:dropBar' cx
-   where
-     dropBar' txt = reverse $ drop 1 $ map (TL.drop 1 . TL.dropWhile (/= '|')) $ reverse txt
- 
--lbt = 
--  QuasiQuoter { quoteExp = \s -> do
--    rs <- settings
--    render <- [|TL.unlines . dropBar . TL.lines . toLazyText|]
--    rendered <- shakespeareFromString rs { justVarInterpolation = True } s
--    return (render `AppE` rendered)
--    }
--
--sbt = 
--  QuasiQuoter { quoteExp = \s -> do
--    rs <- settings
--    render <- [|TL.toStrict . TL.unlines . dropBar . TL.lines . toLazyText|]
--    rendered <- shakespeareFromString rs { justVarInterpolation = True } s
--    return (render `AppE` rendered)
--    }
--
--textFile :: FilePath -> Q Exp
--textFile fp = do
--    rs <- settings
--    shakespeareFile rs fp
--
--
--textFileDebug :: FilePath -> Q Exp
--textFileDebug = textFileReload
--{-# DEPRECATED textFileDebug "Please use textFileReload instead" #-}
--
--textFileReload :: FilePath -> Q Exp
--textFileReload fp = do
--    rs <- settings
--    shakespeareFileReload rs fp
--
- -- | codegen is designed for generating Yesod code, including templates
- -- So it uses different interpolation characters that won't clash with templates.
- codegenSettings :: Q ShakespeareSettings
-@@ -135,40 +81,3 @@ codegenSettings = do
-   , justVarInterpolation = True -- always!
-   }
- 
---- | codegen is designed for generating Yesod code, including templates
---- So it uses different interpolation characters that won't clash with templates.
---- You can use the normal text quasiquoters to generate code
--codegen :: QuasiQuoter
--codegen =
--  QuasiQuoter { quoteExp = \s -> do
--    rs <- codegenSettings
--    render <- [|toLazyText|]
--    rendered <- shakespeareFromString rs { justVarInterpolation = True } s
--    return (render `AppE` rendered)
--    }
--
---- | Generates strict Text
---- codegen is designed for generating Yesod code, including templates
---- So it uses different interpolation characters that won't clash with templates.
--codegenSt :: QuasiQuoter
--codegenSt =
--  QuasiQuoter { quoteExp = \s -> do
--    rs <- codegenSettings
--    render <- [|TL.toStrict . toLazyText|]
--    rendered <- shakespeareFromString rs { justVarInterpolation = True } s
--    return (render `AppE` rendered)
--    }
--
--codegenFileReload :: FilePath -> Q Exp
--codegenFileReload fp = do
--    rs <- codegenSettings
--    render <- [|TL.toStrict . toLazyText|]
--    rendered <- shakespeareFileReload rs{ justVarInterpolation = True } fp
--    return (render `AppE` rendered)
--
--codegenFile :: FilePath -> Q Exp
--codegenFile fp = do
--    rs <- codegenSettings
--    render <- [|TL.toStrict . toLazyText|]
--    rendered <- shakespeareFile rs{ justVarInterpolation = True } fp
--    return (render `AppE` rendered)
-diff --git a/Text/TypeScript.hs b/Text/TypeScript.hs
-index 85f6abd..3188272 100644
---- a/Text/TypeScript.hs
-+++ b/Text/TypeScript.hs
-@@ -57,12 +57,12 @@ module Text.TypeScript
-       -- ** Template-Reading Functions
-       -- | These QuasiQuoter and Template Haskell methods return values of
-       -- type @'JavascriptUrl' url@. See the Yesod book for details.
--      tsc
--    , typeScriptFile
--    , typeScriptFileReload
-+    --  tsc
-+    --, typeScriptFile
-+    --, typeScriptFileReload
- 
- #ifdef TEST_EXPORT
--    , typeScriptSettings
-+    --, typeScriptSettings
- #endif
-     ) where
- 
-@@ -74,43 +74,3 @@ import Text.Julius
- -- | The TypeScript language compiles down to Javascript.
- -- We do this compilation once at compile time to avoid needing to do it during the request.
- -- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call.
--typeScriptSettings :: Q ShakespeareSettings
--typeScriptSettings = do
--  jsettings <- javascriptSettings
--  return $ jsettings { varChar = '#'
--  , preConversion = Just PreConvert {
--      preConvert = ReadProcess "sh" ["-c", "TMP_IN=$(mktemp XXXXXXXXXX.ts); TMP_OUT=$(mktemp XXXXXXXXXX.js); cat /dev/stdin > ${TMP_IN} && tsc --out ${TMP_OUT} ${TMP_IN} && cat ${TMP_OUT}; rm ${TMP_IN} && rm ${TMP_OUT}"]
--    , preEscapeIgnoreBalanced = "'\""
--    , preEscapeIgnoreLine = "//"
--    , wrapInsertion = Just WrapInsertion { 
--        wrapInsertionIndent = Nothing
--      , wrapInsertionStartBegin = ";(function("
--      , wrapInsertionSeparator = ", "
--      , wrapInsertionStartClose = "){"
--      , wrapInsertionEnd = "})"
--      , wrapInsertionAddParens = False
--      }
--    }
--  }
--
---- | Read inline, quasiquoted TypeScript
--tsc :: QuasiQuoter
--tsc = QuasiQuoter { quoteExp = \s -> do
--    rs <- typeScriptSettings
--    quoteExp (shakespeare rs) s
--    }
--
---- | Read in a TypeScript template file. This function reads the file once, at
---- compile time.
--typeScriptFile :: FilePath -> Q Exp
--typeScriptFile fp = do
--    rs <- typeScriptSettings
--    shakespeareFile rs fp
--
---- | Read in a TypeScript template file. This impure function uses
---- unsafePerformIO to re-read the file on every call, allowing for rapid
---- iteration.
--typeScriptFileReload :: FilePath -> Q Exp
--typeScriptFileReload fp = do
--    rs <- typeScriptSettings
--    shakespeareFileReload rs fp
-diff --git a/shakespeare.cabal b/shakespeare.cabal
-index 37029fc..2c4b557 100644
---- a/shakespeare.cabal
-+++ b/shakespeare.cabal
-@@ -62,18 +62,16 @@ library
-                      Text.Shakespeare.Base
-                      Text.Shakespeare
-                      Text.TypeScript
--    other-modules:   Text.Hamlet.Parse
-                      Text.Css
-+                     Text.CssCommon
-+    other-modules:   Text.Hamlet.Parse
-                      Text.MkSizeType
-                      Text.IndentToBrace
--                     Text.CssCommon
-     ghc-options:     -Wall
- 
-     if flag(test_export)
-       cpp-options: -DTEST_EXPORT
- 
--    extensions: TemplateHaskell
--
-     if impl(ghc >= 7.4)
-        cpp-options: -DGHC_7_4
- 
--- 
-2.1.4
-
diff --git a/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch b/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 3a04b41ffce4e4e87b0fedd3a1e3434a3f06cc76 Mon Sep 17 00:00:00 2001
-From: foo <foo@bar>
-Date: Sun, 22 Sep 2013 00:18:12 +0000
-Subject: [PATCH] hardcode little endian
-
-This is the same as building with a cabal flag.
-
----
- c_impl/optimized/skein_port.h |    1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/c_impl/optimized/skein_port.h b/c_impl/optimized/skein_port.h
-index a2d0fc2..6929bb0 100644
---- a/c_impl/optimized/skein_port.h
-+++ b/c_impl/optimized/skein_port.h
-@@ -45,6 +45,7 @@ typedef uint64_t        u64b_t;             /* 64-bit unsigned integer */
-  * platform-specific code instead (e.g., for big-endian CPUs).
-  *
-  */
-+#define SKEIN_NEED_SWAP  (0)
- #ifndef SKEIN_NEED_SWAP /* compile-time "override" for endianness? */
- 
- #include "brg_endian.h"                     /* get endianness selection */
--- 
-1.7.10.4
-
diff --git a/standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch b/standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 6ffd4fcb7d27ec6df709d80a40a262406446a259 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Wed, 15 Oct 2014 17:00:56 +0000
-Subject: [PATCH] cross build
-
----
- Data/Vector/Fusion/Stream/Monadic.hs |  1 -
- Data/Vector/Unboxed/Base.hs          | 13 -------------
- 2 files changed, 14 deletions(-)
-
-diff --git a/Data/Vector/Fusion/Stream/Monadic.hs b/Data/Vector/Fusion/Stream/Monadic.hs
-index 51fec75..b089b3d 100644
---- a/Data/Vector/Fusion/Stream/Monadic.hs
-+++ b/Data/Vector/Fusion/Stream/Monadic.hs
-@@ -101,7 +101,6 @@ import GHC.Exts ( SpecConstrAnnotation(..) )
- 
- data SPEC = SPEC | SPEC2
- #if __GLASGOW_HASKELL__ >= 700
--{-# ANN type SPEC ForceSpecConstr #-}
- #endif
- 
- emptyStream :: String
-diff --git a/Data/Vector/Unboxed/Base.hs b/Data/Vector/Unboxed/Base.hs
-index 00350cb..34bfc4a 100644
---- a/Data/Vector/Unboxed/Base.hs
-+++ b/Data/Vector/Unboxed/Base.hs
-@@ -65,19 +65,6 @@ vectorTyCon = mkTyCon3 "vector"
- vectorTyCon m s = mkTyCon $ m ++ "." ++ s
- #endif
- 
--instance Typeable1 Vector where
--  typeOf1 _ = mkTyConApp (vectorTyCon "Data.Vector.Unboxed" "Vector") []
--
--instance Typeable2 MVector where
--  typeOf2 _ = mkTyConApp (vectorTyCon "Data.Vector.Unboxed.Mutable" "MVector") []
--
--instance (Data a, Unbox a) => Data (Vector a) where
--  gfoldl       = G.gfoldl
--  toConstr _   = error "toConstr"
--  gunfold _ _  = error "gunfold"
--  dataTypeOf _ = G.mkType "Data.Vector.Unboxed.Vector"
--  dataCast1    = G.dataCast
--
- -- ----
- -- Unit
- -- ----
--- 
-2.1.1
-
diff --git a/standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch b/standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 3aef808eee43c973ae1fbf6e8769d89b7f0d355b Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Tue, 10 Jun 2014 14:47:42 +0000
-Subject: [PATCH] deal with TH
-
-Export modules referenced by it.
-
-Should not need these icons in git-annex, so not worth using the Evil
-Splicer.
----
- Network/Wai/Application/Static.hs | 4 ----
- WaiAppStatic/Storage/Embedded.hs  | 8 ++++----
- wai-app-static.cabal              | 4 +---
- 3 files changed, 5 insertions(+), 11 deletions(-)
-
-diff --git a/Network/Wai/Application/Static.hs b/Network/Wai/Application/Static.hs
-index db2b835..b2c1aec 100644
---- a/Network/Wai/Application/Static.hs
-+++ b/Network/Wai/Application/Static.hs
-@@ -33,8 +33,6 @@ import Control.Monad.IO.Class (liftIO)
- 
- import Blaze.ByteString.Builder (toByteString)
- 
--import Data.FileEmbed (embedFile)
--
- import Data.Text (Text)
- import qualified Data.Text as T
- 
-@@ -198,8 +196,6 @@ staticAppPieces _ _ req sendResponse
-         H.status405
-         [("Content-Type", "text/plain")]
-         "Only GET is supported"
--staticAppPieces _ [".hidden", "folder.png"] _ sendResponse = sendResponse $ W.responseLBS H.status200 [("Content-Type", "image/png")] $ L.fromChunks [$(embedFile "images/folder.png")]
--staticAppPieces _ [".hidden", "haskell.png"] _ sendResponse = sendResponse $ W.responseLBS H.status200 [("Content-Type", "image/png")] $ L.fromChunks [$(embedFile "images/haskell.png")]
- staticAppPieces ss rawPieces req sendResponse = liftIO $ do
-     case toPieces rawPieces of
-         Just pieces -> checkPieces ss pieces req >>= response
-diff --git a/WaiAppStatic/Storage/Embedded.hs b/WaiAppStatic/Storage/Embedded.hs
-index daa6e50..9873d4e 100644
---- a/WaiAppStatic/Storage/Embedded.hs
-+++ b/WaiAppStatic/Storage/Embedded.hs
-@@ -3,10 +3,10 @@ module WaiAppStatic.Storage.Embedded(
-       embeddedSettings
- 
-     -- * Template Haskell
--    , Etag
--    , EmbeddableEntry(..)
--    , mkSettings
-+    --, Etag
-+    --, EmbeddableEntry(..)
-+    --, mkSettings
-     ) where
- 
- import WaiAppStatic.Storage.Embedded.Runtime
--import WaiAppStatic.Storage.Embedded.TH
-+--import WaiAppStatic.Storage.Embedded.TH
-diff --git a/wai-app-static.cabal b/wai-app-static.cabal
-index ef6f898..9a59d71 100644
---- a/wai-app-static.cabal
-+++ b/wai-app-static.cabal
-@@ -33,7 +33,6 @@ library
-                    , containers                >= 0.2
-                    , time                      >= 1.1.4
-                    , old-locale                >= 1.0.0.2
--                   , file-embed                >= 0.0.3.1
-                    , text                      >= 0.7
-                    , blaze-builder             >= 0.2.1.4
-                    , base64-bytestring         >= 0.1
-@@ -61,9 +60,8 @@ library
-                      WaiAppStatic.Listing
-                      WaiAppStatic.Types
-                      WaiAppStatic.CmdLine
--    other-modules:   Util
-                      WaiAppStatic.Storage.Embedded.Runtime
--                     WaiAppStatic.Storage.Embedded.TH
-+    other-modules:   Util
-     ghc-options:     -Wall
-     extensions:     CPP
- 
--- 
-2.0.0
-
diff --git a/standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch b/standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From b53713fbb4f3bb6bdd25b07afcaed4940b32dfa8 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Wed, 18 Dec 2013 03:32:44 +0000
-Subject: [PATCH] remove TH
-
----
- Text/Hamlet/XML.hs | 81 +-----------------------------------------------------
- 1 file changed, 1 insertion(+), 80 deletions(-)
-
-diff --git a/Text/Hamlet/XML.hs b/Text/Hamlet/XML.hs
-index f587410..4e830bd 100644
---- a/Text/Hamlet/XML.hs
-+++ b/Text/Hamlet/XML.hs
-@@ -1,9 +1,7 @@
- {-# LANGUAGE TemplateHaskell #-}
- {-# OPTIONS_GHC -fno-warn-missing-fields #-}
- module Text.Hamlet.XML
--    ( xml
--    , xmlFile
--    ) where
-+    () where
- 
- import Language.Haskell.TH.Syntax
- import Language.Haskell.TH.Quote
-@@ -19,80 +17,3 @@ import qualified Data.Foldable as F
- import Data.Maybe (fromMaybe)
- import qualified Data.Map as Map
- 
--xml :: QuasiQuoter
--xml = QuasiQuoter { quoteExp = strToExp }
--
--xmlFile :: FilePath -> Q Exp
--xmlFile = strToExp . TL.unpack <=< qRunIO . readUtf8File
--
--strToExp :: String -> Q Exp
--strToExp s =
--    case parseDoc s of
--        Error e -> error e
--        Ok x -> docsToExp [] x
--
--docsToExp :: Scope -> [Doc] -> Q Exp
--docsToExp scope docs = [| concat $(fmap ListE $ mapM (docToExp scope) docs) |]
--
--docToExp :: Scope -> Doc -> Q Exp
--docToExp scope (DocTag name attrs cs) =
--    [| [ X.NodeElement (X.Element ($(liftName name)) $(mkAttrs scope attrs) $(docsToExp scope cs))
--       ] |]
--docToExp _ (DocContent (ContentRaw s)) = [| [ X.NodeContent (pack $(lift s)) ] |]
--docToExp scope (DocContent (ContentVar d)) = [| [ X.NodeContent $(return $ derefToExp scope d) ] |]
--docToExp scope (DocContent (ContentEmbed d)) = return $ derefToExp scope d
--docToExp scope (DocForall deref ident@(Ident ident') inside) = do
--    let list' = derefToExp scope deref
--    name <- newName ident'
--    let scope' = (ident, VarE name) : scope
--    inside' <- docsToExp scope' inside
--    let lam = LamE [VarP name] inside'
--    [| F.concatMap $(return lam) $(return list') |]
--docToExp scope (DocWith [] inside) = docsToExp scope inside
--docToExp scope (DocWith ((deref, ident@(Ident name)):dis) inside) = do
--    let deref' = derefToExp scope deref
--    name' <- newName name
--    let scope' = (ident, VarE name') : scope
--    inside' <- docToExp scope' (DocWith dis inside)
--    let lam = LamE [VarP name'] inside'
--    return $ lam `AppE` deref'
--docToExp scope (DocMaybe deref ident@(Ident name) just nothing) = do
--    let deref' = derefToExp scope deref
--    name' <- newName name
--    let scope' = (ident, VarE name') : scope
--    inside' <- docsToExp scope' just
--    let inside'' = LamE [VarP name'] inside'
--    nothing' <-
--        case nothing of
--            Nothing -> [| [] |]
--            Just n -> docsToExp scope n
--    [| maybe $(return nothing') $(return inside'') $(return deref') |]
--docToExp scope (DocCond conds final) = do
--    unit <- [| () |]
--    body <- fmap GuardedB $ mapM go $ conds ++ [(DerefIdent $ Ident "otherwise", fromMaybe [] final)]
--    return $ CaseE unit [Match (TupP []) body []]
--  where
--    go (deref, inside) = do
--        inside' <- docsToExp scope inside
--        return (NormalG $ derefToExp scope deref, inside')
--
--mkAttrs :: Scope -> [(Maybe Deref, String, [Content])] -> Q Exp
--mkAttrs _ [] = [| Map.empty |]
--mkAttrs scope ((mderef, name, value):rest) = do
--    rest' <- mkAttrs scope rest
--    this <- [| Map.insert $(liftName name) (T.concat $(fmap ListE $ mapM go value)) |]
--    let with = [| $(return this) $(return rest') |]
--    case mderef of
--        Nothing -> with
--        Just deref -> [| if $(return $ derefToExp scope deref) then $(with) else $(return rest') |]
--  where
--    go (ContentRaw s) = [| pack $(lift s) |]
--    go (ContentVar d) = return $ derefToExp scope d
--    go ContentEmbed{} = error "Cannot use embed interpolation in attribute value"
--
--liftName :: String -> Q Exp
--liftName s = do
--    X.Name local mns _ <- return $ fromString s
--    case mns of
--        Nothing -> [| X.Name (pack $(lift $ unpack local)) Nothing Nothing |]
--        Just ns -> [| X.Name (pack $(lift $ unpack local)) (Just $ pack $(lift $ unpack ns)) Nothing |]
--- 
-1.8.5.1
-
diff --git a/standalone/no-th/haskell-patches/yesod-auth_don-t-really-build.patch b/standalone/no-th/haskell-patches/yesod-auth_don-t-really-build.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/yesod-auth_don-t-really-build.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 583575461dc58b76c6c7e14d429f73182d49ef81 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Tue, 10 Jun 2014 20:29:51 +0000
-Subject: [PATCH] don't really build
-
----
- yesod-auth.cabal | 11 -----------
- 1 file changed, 11 deletions(-)
-
-diff --git a/yesod-auth.cabal b/yesod-auth.cabal
-index 906c08b..b4bc841 100644
---- a/yesod-auth.cabal
-+++ b/yesod-auth.cabal
-@@ -65,17 +65,6 @@ library
-                    , conduit-extra
-                    , attoparsec-conduit
- 
--    exposed-modules: Yesod.Auth
--                     Yesod.Auth.BrowserId
--                     Yesod.Auth.Dummy
--                     Yesod.Auth.Email
--                     Yesod.Auth.OpenId
--                     Yesod.Auth.Rpxnow
--                     Yesod.Auth.Message
--                     Yesod.Auth.GoogleEmail
--                     Yesod.Auth.GoogleEmail2
--    other-modules:   Yesod.Auth.Routes
--                     Yesod.PasswordStore
-     ghc-options:     -Wall
- 
- source-repository head
--- 
-2.0.0
-
diff --git a/standalone/no-th/haskell-patches/yesod-core_expand_TH.patch b/standalone/no-th/haskell-patches/yesod-core_expand_TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/yesod-core_expand_TH.patch
+++ /dev/null
@@ -1,768 +0,0 @@
-From f1feea61dcba0b16afed5ce8dd5d2433fe505461 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 16 Oct 2014 02:15:23 +0000
-Subject: [PATCH] hack TH
-
----
- Yesod/Core.hs              |  30 +++---
- Yesod/Core/Class/Yesod.hs  | 256 ++++++++++++++++++++++++++++++---------------
- Yesod/Core/Dispatch.hs     |  38 ++-----
- Yesod/Core/Handler.hs      |  25 ++---
- Yesod/Core/Internal/Run.hs |   6 +-
- Yesod/Core/Internal/TH.hs  | 111 --------------------
- Yesod/Core/Types.hs        |   3 +-
- Yesod/Core/Widget.hs       |  32 +-----
- 8 files changed, 213 insertions(+), 288 deletions(-)
-
-diff --git a/Yesod/Core.hs b/Yesod/Core.hs
-index 9b29317..7c0792d 100644
---- a/Yesod/Core.hs
-+++ b/Yesod/Core.hs
-@@ -31,16 +31,16 @@ module Yesod.Core
-     , unauthorizedI
-       -- * Logging
-     , LogLevel (..)
--    , logDebug
--    , logInfo
--    , logWarn
--    , logError
--    , logOther
--    , logDebugS
--    , logInfoS
--    , logWarnS
--    , logErrorS
--    , logOtherS
-+    --, logDebug
-+    --, logInfo
-+    --, logWarn
-+    --, logError
-+    --, logOther
-+    --, logDebugS
-+    --, logInfoS
-+    --, logWarnS
-+    --, logErrorS
-+    --, logOtherS
-       -- * Sessions
-     , SessionBackend (..)
-     , customizeSessionCookies
-@@ -87,17 +87,15 @@ module Yesod.Core
-     , readIntegral
-       -- * Shakespeare
-       -- ** Hamlet
--    , hamlet
--    , shamlet
--    , xhamlet
-+    --, hamlet
-+    -- , shamlet
-+    --, xhamlet
-     , HtmlUrl
-       -- ** Julius
--    , julius
-+    --, julius
-     , JavascriptUrl
-     , renderJavascriptUrl
-       -- ** Cassius/Lucius
--    , cassius
--    , lucius
-     , CssUrl
-     , renderCssUrl
-     ) where
-diff --git a/Yesod/Core/Class/Yesod.hs b/Yesod/Core/Class/Yesod.hs
-index 8631d27..c40eb10 100644
---- a/Yesod/Core/Class/Yesod.hs
-+++ b/Yesod/Core/Class/Yesod.hs
-@@ -5,18 +5,22 @@
- {-# LANGUAGE CPP               #-}
- module Yesod.Core.Class.Yesod where
- 
--import           Control.Monad.Logger               (logErrorS)
-+--import           Control.Monad.Logger               (logErrorS)
- import           Yesod.Core.Content
- import           Yesod.Core.Handler
- 
- import           Yesod.Routes.Class
-+import qualified Text.Blaze.Internal
-+import qualified Control.Monad.Logger
-+import qualified Text.Hamlet
-+import qualified Data.Foldable
- 
- import           Blaze.ByteString.Builder           (Builder)
- import           Blaze.ByteString.Builder.Char.Utf8 (fromText)
- import           Control.Arrow                      ((***), second)
- import           Control.Monad                      (forM, when, void)
- import           Control.Monad.IO.Class             (MonadIO (liftIO))
--import           Control.Monad.Logger               (LogLevel (LevelInfo, LevelOther),
-+import           Control.Monad.Logger               (Loc, LogLevel (LevelInfo, LevelOther),
-                                                      LogSource)
- import qualified Data.ByteString.Char8              as S8
- import qualified Data.ByteString.Lazy               as L
-@@ -33,7 +37,6 @@ import qualified Data.Text.Encoding.Error           as TEE
- import           Data.Text.Lazy.Builder             (toLazyText)
- import           Data.Text.Lazy.Encoding            (encodeUtf8)
- import           Data.Word                          (Word64)
--import           Language.Haskell.TH.Syntax         (Loc (..))
- import           Network.HTTP.Types                 (encodePath)
- import qualified Network.Wai                        as W
- import           Data.Default                       (def)
-@@ -94,18 +97,26 @@ class RenderRoute site => Yesod site where
-     defaultLayout w = do
-         p <- widgetToPageContent w
-         mmsg <- getMessage
--        withUrlRenderer [hamlet|
--            $newline never
--            $doctype 5
--            <html>
--                <head>
--                    <title>#{pageTitle p}
--                    ^{pageHead p}
--                <body>
--                    $maybe msg <- mmsg
--                        <p .message>#{msg}
--                    ^{pageBody p}
--            |]
-+        withUrlRenderer  $         \ _render_aHra
-+          -> do { id
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "<!DOCTYPE html>\n<html><head><title>");
-+                  id (TBH.toHtml (pageTitle p));
-+                  id ((Text.Blaze.Internal.preEscapedText . T.pack) "</title>");
-+                  Text.Hamlet.asHtmlUrl (pageHead p) _render_aHra;
-+                  id ((Text.Blaze.Internal.preEscapedText . T.pack) "</head><body>");
-+                  Text.Hamlet.maybeH
-+                    mmsg
-+                    (\ msg_aHrb
-+                       -> do { id
-+                                 ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                    "<p class=\"message\">");
-+                               id (TBH.toHtml msg_aHrb);
-+                               id ((Text.Blaze.Internal.preEscapedText . T.pack) "</p>") })
-+                    Nothing;
-+                  Text.Hamlet.asHtmlUrl (pageBody p) _render_aHra;
-+                  id
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack) "</body></html>") }
- 
-     -- | Override the rendering function for a particular URL. One use case for
-     -- this is to offload static hosting to a different domain name to avoid
-@@ -374,45 +385,103 @@ widgetToPageContent w = do
-     -- modernizr should be at the end of the <head> http://www.modernizr.com/docs/#installing
-     -- the asynchronous loader means your page doesn't have to wait for all the js to load
-     let (mcomplete, asyncScripts) = asyncHelper render scripts jscript jsLoc
--        regularScriptLoad = [hamlet|
--            $newline never
--            $forall s <- scripts
--                ^{mkScriptTag s}
--            $maybe j <- jscript
--                $maybe s <- jsLoc
--                    <script src="#{s}">
--                $nothing
--                    <script>^{jelper j}
--        |]
--
--        headAll = [hamlet|
--            $newline never
--            \^{head'}
--            $forall s <- stylesheets
--                ^{mkLinkTag s}
--            $forall s <- css
--                $maybe t <- right $ snd s
--                    $maybe media <- fst s
--                        <link rel=stylesheet media=#{media} href=#{t}>
--                    $nothing
--                        <link rel=stylesheet href=#{t}>
--                $maybe content <- left $ snd s
--                    $maybe media <- fst s
--                        <style media=#{media}>#{content}
--                    $nothing
--                        <style>#{content}
--            $case jsLoader master
--              $of BottomOfBody
--              $of BottomOfHeadAsync asyncJsLoader
--                  ^{asyncJsLoader asyncScripts mcomplete}
--              $of BottomOfHeadBlocking
--                  ^{regularScriptLoad}
--        |]
--    let bodyScript = [hamlet|
--            $newline never
--            ^{body}
--            ^{regularScriptLoad}
--        |]
-+        regularScriptLoad =         \ _render_aHsO
-+          -> do { Data.Foldable.mapM_
-+                    (\ s_aHsP
-+                       -> Text.Hamlet.asHtmlUrl (mkScriptTag s_aHsP) _render_aHsO)
-+                    scripts;
-+                  Text.Hamlet.maybeH
-+                    jscript
-+                    (\ j_aHsQ
-+                       -> Text.Hamlet.maybeH
-+                            jsLoc
-+                            (\ s_aHsR
-+                               -> do { id
-+                                         ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                            "<script src=\"");
-+                                       id (TBH.toHtml s_aHsR);
-+                                       id
-+                                         ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                            "\"></script>") })
-+                            (Just
-+                               (do { id
-+                                       ((Text.Blaze.Internal.preEscapedText . T.pack) "<script>");
-+                                     Text.Hamlet.asHtmlUrl (jelper j_aHsQ) _render_aHsO;
-+                                     id ((Text.Blaze.Internal.preEscapedText . T.pack) "</script>") })))
-+                    Nothing }
-+
-+
-+        headAll =         \ _render_aHsW
-+          -> do { Text.Hamlet.asHtmlUrl head' _render_aHsW;
-+                  Data.Foldable.mapM_
-+                    (\ s_aHsX -> Text.Hamlet.asHtmlUrl (mkLinkTag s_aHsX) _render_aHsW)
-+                    stylesheets;
-+                  Data.Foldable.mapM_
-+                    (\ s_aHsY
-+                       -> do { Text.Hamlet.maybeH
-+                                 (right (snd s_aHsY))
-+                                 (\ t_aHsZ
-+                                    -> Text.Hamlet.maybeH
-+                                         (fst s_aHsY)
-+                                         (\ media_aHt0
-+                                            -> do { id
-+                                                      ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                         "<link rel=\"stylesheet\" media=\"");
-+                                                    id (TBH.toHtml media_aHt0);
-+                                                    id
-+                                                      ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                         "\" href=\"");
-+                                                    id (TBH.toHtml t_aHsZ);
-+                                                    id
-+                                                      ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                         "\">") })
-+                                         (Just
-+                                            (do { id
-+                                                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                       "<link rel=\"stylesheet\" href=\"");
-+                                                  id (TBH.toHtml t_aHsZ);
-+                                                  id
-+                                                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                       "\">") })))
-+                                 Nothing;
-+                               Text.Hamlet.maybeH
-+                                 (left (snd s_aHsY))
-+                                 (\ content_aHt1
-+                                    -> Text.Hamlet.maybeH
-+                                         (fst s_aHsY)
-+                                         (\ media_aHt2
-+                                            -> do { id
-+                                                      ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                         "<style media=\"");
-+                                                    id (TBH.toHtml media_aHt2);
-+                                                    id
-+                                                      ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                         "\">");
-+                                                    id (TBH.toHtml content_aHt1);
-+                                                    id
-+                                                      ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                         "</style>") })
-+                                         (Just
-+                                            (do { id
-+                                                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                       "<style>");
-+                                                  id (TBH.toHtml content_aHt1);
-+                                                  id
-+                                                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                       "</style>") })))
-+                                 Nothing })
-+                    css;
-+                  case jsLoader master of {
-+                    BottomOfBody -> return ()
-+                    ; BottomOfHeadAsync asyncJsLoader_aHt3
-+                      -> Text.Hamlet.asHtmlUrl
-+                           (asyncJsLoader_aHt3 asyncScripts mcomplete) _render_aHsW
-+                    ; BottomOfHeadBlocking
-+                      -> Text.Hamlet.asHtmlUrl regularScriptLoad _render_aHsW } }
-+
-+    let bodyScript =     \ _render_aHt8 -> do { Text.Hamlet.asHtmlUrl body _render_aHt8;
-+              Text.Hamlet.asHtmlUrl regularScriptLoad _render_aHt8 }
-+
- 
-     return $ PageContent title headAll $
-         case jsLoader master of
-@@ -442,10 +511,13 @@ defaultErrorHandler NotFound = selectRep $ do
-         r <- waiRequest
-         let path' = TE.decodeUtf8With TEE.lenientDecode $ W.rawPathInfo r
-         setTitle "Not Found"
--        toWidget [hamlet|
--            <h1>Not Found
--            <p>#{path'}
--        |]
-+        toWidget  $         \ _render_aHte
-+          -> do { id
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "<h1>Not Found</h1>\n<p>");
-+                  id (TBH.toHtml path');
-+                  id ((Text.Blaze.Internal.preEscapedText . T.pack) "</p>") }
-+
-     provideRep $ return $ object ["message" .= ("Not Found" :: Text)]
- 
- -- For API requests.
-@@ -455,10 +527,11 @@ defaultErrorHandler NotFound = selectRep $ do
- defaultErrorHandler NotAuthenticated = selectRep $ do
-     provideRep $ defaultLayout $ do
-         setTitle "Not logged in"
--        toWidget [hamlet|
--            <h1>Not logged in
--            <p style="display:none;">Set the authRoute and the user will be redirected there.
--        |]
-+        toWidget  $         \ _render_aHti
-+          -> id
-+               ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                  "<h1>Not logged in</h1>\n<p style=\"none;\">Set the authRoute and the user will be redirected there.</p>")
-+
- 
-     provideRep $ do
-         -- 401 *MUST* include a WWW-Authenticate header
-@@ -480,10 +553,13 @@ defaultErrorHandler NotAuthenticated = selectRep $ do
- defaultErrorHandler (PermissionDenied msg) = selectRep $ do
-     provideRep $ defaultLayout $ do
-         setTitle "Permission Denied"
--        toWidget [hamlet|
--            <h1>Permission denied
--            <p>#{msg}
--        |]
-+        toWidget  $         \ _render_aHtq
-+          -> do { id
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "<h1>Permission denied</h1>\n<p>");
-+                  id (TBH.toHtml msg);
-+                  id ((Text.Blaze.Internal.preEscapedText . T.pack) "</p>") }
-+
-     provideRep $
-         return $ object $ [
-           "message" .= ("Permission Denied. " <> msg)
-@@ -492,30 +568,42 @@ defaultErrorHandler (PermissionDenied msg) = selectRep $ do
- defaultErrorHandler (InvalidArgs ia) = selectRep $ do
-     provideRep $ defaultLayout $ do
-         setTitle "Invalid Arguments"
--        toWidget [hamlet|
--            <h1>Invalid Arguments
--            <ul>
--                $forall msg <- ia
--                    <li>#{msg}
--        |]
-+        toWidget  $         \ _render_aHtv
-+          -> do { id
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "<h1>Invalid Arguments</h1>\n<ul>");
-+                  Data.Foldable.mapM_
-+                    (\ msg_aHtw
-+                       -> do { id ((Text.Blaze.Internal.preEscapedText . T.pack) "<li>");
-+                               id (TBH.toHtml msg_aHtw);
-+                               id ((Text.Blaze.Internal.preEscapedText . T.pack) "</li>") })
-+                    ia;
-+                  id ((Text.Blaze.Internal.preEscapedText . T.pack) "</ul>") }
-+
-     provideRep $ return $ object ["message" .= ("Invalid Arguments" :: Text), "errors" .= ia]
- defaultErrorHandler (InternalError e) = do
--    $logErrorS "yesod-core" e
-     selectRep $ do
-         provideRep $ defaultLayout $ do
-             setTitle "Internal Server Error"
--            toWidget [hamlet|
--                <h1>Internal Server Error
--                <pre>#{e}
--            |]
-+            toWidget  $             \ _render_aHtC
-+              -> do { id
-+                        ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                           "<h1>Internal Server Error</h1>\n<pre>");
-+                      id (TBH.toHtml e);
-+                      id ((Text.Blaze.Internal.preEscapedText . T.pack) "</pre>") }
-+
-         provideRep $ return $ object ["message" .= ("Internal Server Error" :: Text), "error" .= e]
- defaultErrorHandler (BadMethod m) = selectRep $ do
-     provideRep $ defaultLayout $ do
-         setTitle"Bad Method"
--        toWidget [hamlet|
--            <h1>Method Not Supported
--            <p>Method <code>#{S8.unpack m}</code> not supported
--        |]
-+        toWidget  $         \ _render_aHtH
-+          -> do { id
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "<h1>Method Not Supported</h1>\n<p>Method <code>");
-+                  id (TBH.toHtml (S8.unpack m));
-+                  id
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "</code> not supported</p>") }
-     provideRep $ return $ object ["message" .= ("Bad method" :: Text), "method" .= TE.decodeUtf8With TEE.lenientDecode m]
- 
- asyncHelper :: (url -> [x] -> Text)
-@@ -682,8 +770,4 @@ loadClientSession key getCachedDate sessionName req = load
- -- turn the TH Loc loaction information into a human readable string
- -- leaving out the loc_end parameter
- fileLocationToString :: Loc -> String
--fileLocationToString loc = (loc_package loc) ++ ':' : (loc_module loc) ++
--  ' ' : (loc_filename loc) ++ ':' : (line loc) ++ ':' : (char loc)
--  where
--    line = show . fst . loc_start
--    char = show . snd . loc_start
-+fileLocationToString loc = "unknown"
-diff --git a/Yesod/Core/Dispatch.hs b/Yesod/Core/Dispatch.hs
-index e0d1f0e..cc23fdd 100644
---- a/Yesod/Core/Dispatch.hs
-+++ b/Yesod/Core/Dispatch.hs
-@@ -1,4 +1,3 @@
--{-# LANGUAGE TemplateHaskell #-}
- {-# LANGUAGE OverloadedStrings #-}
- {-# LANGUAGE TypeFamilies #-}
- {-# LANGUAGE FlexibleInstances #-}
-@@ -6,18 +5,18 @@
- {-# LANGUAGE CPP #-}
- module Yesod.Core.Dispatch
-     ( -- * Quasi-quoted routing
--      parseRoutes
--    , parseRoutesNoCheck
--    , parseRoutesFile
--    , parseRoutesFileNoCheck
--    , mkYesod
-+    --  parseRoutes
-+    --, parseRoutesNoCheck
-+    --, parseRoutesFile
-+    --, parseRoutesFileNoCheck
-+    --, mkYesod
-       -- ** More fine-grained
--    , mkYesodData
--    , mkYesodSubData
--    , mkYesodDispatch
--    , mkYesodSubDispatch
-+    --, mkYesodData
-+    --, mkYesodSubData
-+    --, mkYesodDispatch
-+    --, mkYesodSubDispatch
-       -- ** Path pieces
--    , PathPiece (..)
-+      PathPiece (..)
-     , PathMultiPiece (..)
-     , Texts
-       -- * Convert to WAI
-@@ -135,13 +134,6 @@ toWaiAppLogger logger site = do
-                 , yreSite = site
-                 , yreSessionBackend = sb
-                 }
--    messageLoggerSource
--        site
--        logger
--        $(qLocation >>= liftLoc)
--        "yesod-core"
--        LevelInfo
--        (toLogStr ("Application launched" :: S.ByteString))
-     middleware <- mkDefaultMiddlewares logger
-     return $ middleware $ toWaiAppYre yre
- 
-@@ -170,14 +162,7 @@ warp port site = do
-                 ]
-             -}
-             , Network.Wai.Handler.Warp.settingsOnException = const $ \e ->
--                when (shouldLog' e) $
--                messageLoggerSource
--                    site
--                    logger
--                    $(qLocation >>= liftLoc)
--                    "yesod-core"
--                    LevelError
--                    (toLogStr $ "Exception from Warp: " ++ show e)
-+                when (shouldLog' e) $ error (show e)
-             }
-   where
-     shouldLog' =
-@@ -211,7 +196,6 @@ defaultMiddlewaresNoLogging = acceptOverride . autohead . gzip def . methodOverr
- -- | Deprecated synonym for 'warp'.
- warpDebug :: YesodDispatch site => Int -> site -> IO ()
- warpDebug = warp
--{-# DEPRECATED warpDebug "Please use warp instead" #-}
- 
- -- | Runs your application using default middlewares (i.e., via 'toWaiApp'). It
- -- reads port information from the PORT environment variable, as used by tools
-diff --git a/Yesod/Core/Handler.hs b/Yesod/Core/Handler.hs
-index d2b196b..13cac17 100644
---- a/Yesod/Core/Handler.hs
-+++ b/Yesod/Core/Handler.hs
-@@ -174,7 +174,7 @@ import           Data.Text.Encoding            (decodeUtf8With, encodeUtf8)
- import           Data.Text.Encoding.Error      (lenientDecode)
- import qualified Data.Text.Lazy                as TL
- import qualified Text.Blaze.Html.Renderer.Text as RenderText
--import           Text.Hamlet                   (Html, HtmlUrl, hamlet)
-+import           Text.Hamlet                   (Html, HtmlUrl)
- 
- import qualified Data.ByteString               as S
- import qualified Data.ByteString.Lazy          as L
-@@ -203,6 +203,7 @@ import Control.Exception (throwIO)
- import Blaze.ByteString.Builder (Builder)
- import Safe (headMay)
- import Data.CaseInsensitive (CI)
-+import qualified Text.Blaze.Internal
- import qualified Data.Conduit.List as CL
- import Control.Monad (unless)
- import           Control.Monad.Trans.Resource  (MonadResource, InternalState, runResourceT, withInternalState, getInternalState, liftResourceT, resourceForkIO
-@@ -855,19 +856,15 @@ redirectToPost :: (MonadHandler m, RedirectUrl (HandlerSite m) url)
-                -> m a
- redirectToPost url = do
-     urlText <- toTextUrl url
--    withUrlRenderer [hamlet|
--$newline never
--$doctype 5
--
--<html>
--    <head>
--        <title>Redirecting...
--    <body onload="document.getElementById('form').submit()">
--        <form id="form" method="post" action=#{urlText}>
--            <noscript>
--                <p>Javascript has been disabled; please click on the button below to be redirected.
--            <input type="submit" value="Continue">
--|] >>= sendResponse
-+    withUrlRenderer  $     \ _render_awps
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                   "<!DOCTYPE html>\n<html><head><title>Redirecting...</title></head><body onload=\"document.getElementById('form').submit()\"><form id=\"form\" method=\"post\" action=\"");
-+              id (toHtml urlText);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                   "\"><noscript><p>Javascript has been disabled; please click on the button below to be redirected.</p></noscript><input type=\"submit\" value=\"Continue\"></form></body></html>") }
-+ >>= sendResponse
- 
- -- | Wraps the 'Content' generated by 'hamletToContent' in a 'RepHtml'.
- hamletToRepHtml :: MonadHandler m => HtmlUrl (Route (HandlerSite m)) -> m Html
-diff --git a/Yesod/Core/Internal/Run.hs b/Yesod/Core/Internal/Run.hs
-index 311f208..63f666f 100644
---- a/Yesod/Core/Internal/Run.hs
-+++ b/Yesod/Core/Internal/Run.hs
-@@ -16,7 +16,7 @@ import           Control.Exception.Lifted     (catch)
- import           Control.Monad                (mplus)
- import           Control.Monad.IO.Class       (MonadIO)
- import           Control.Monad.IO.Class       (liftIO)
--import           Control.Monad.Logger         (LogLevel (LevelError), LogSource,
-+import           Control.Monad.Logger         (Loc, LogLevel (LevelError), LogSource,
-                                                liftLoc)
- import           Control.Monad.Trans.Resource (runResourceT, withInternalState, runInternalState, createInternalState, closeInternalState)
- import qualified Data.ByteString              as S
-@@ -31,7 +31,7 @@ import qualified Data.Text                    as T
- import           Data.Text.Encoding           (encodeUtf8)
- import           Data.Text.Encoding           (decodeUtf8With)
- import           Data.Text.Encoding.Error     (lenientDecode)
--import           Language.Haskell.TH.Syntax   (Loc, qLocation)
-+import           Language.Haskell.TH.Syntax   (qLocation)
- import qualified Network.HTTP.Types           as H
- import           Network.Wai
- #if MIN_VERSION_wai(2, 0, 0)
-@@ -158,8 +158,6 @@ safeEh :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
-        -> ErrorResponse
-        -> YesodApp
- safeEh log' er req = do
--    liftIO $ log' $(qLocation >>= liftLoc) "yesod-core" LevelError
--           $ toLogStr $ "Error handler errored out: " ++ show er
-     return $ YRPlain
-         H.status500
-         []
-diff --git a/Yesod/Core/Internal/TH.hs b/Yesod/Core/Internal/TH.hs
-index 7e84c1c..a273c29 100644
---- a/Yesod/Core/Internal/TH.hs
-+++ b/Yesod/Core/Internal/TH.hs
-@@ -23,114 +23,3 @@ import Yesod.Core.Content
- import Yesod.Core.Class.Dispatch
- import Yesod.Core.Internal.Run
- 
---- | Generates URL datatype and site function for the given 'Resource's. This
---- is used for creating sites, /not/ subsites. See 'mkYesodSub' for the latter.
---- Use 'parseRoutes' to create the 'Resource's.
--mkYesod :: String -- ^ name of the argument datatype
--        -> [ResourceTree String]
--        -> Q [Dec]
--mkYesod name = fmap (uncurry (++)) . mkYesodGeneral name [] False
--
---- | Sometimes, you will want to declare your routes in one file and define
---- your handlers elsewhere. For example, this is the only way to break up a
---- monolithic file into smaller parts. Use this function, paired with
---- 'mkYesodDispatch', to do just that.
--mkYesodData :: String -> [ResourceTree String] -> Q [Dec]
--mkYesodData name res = mkYesodDataGeneral name False res
--
--mkYesodSubData :: String -> [ResourceTree String] -> Q [Dec]
--mkYesodSubData name res = mkYesodDataGeneral name True res
--
--mkYesodDataGeneral :: String -> Bool -> [ResourceTree String] -> Q [Dec]
--mkYesodDataGeneral name isSub res = do
--    let (name':rest) = words name
--    fmap fst $ mkYesodGeneral name' rest isSub res
--
---- | See 'mkYesodData'.
--mkYesodDispatch :: String -> [ResourceTree String] -> Q [Dec]
--mkYesodDispatch name = fmap snd . mkYesodGeneral name [] False
--
---- | Get the Handler and Widget type synonyms for the given site.
--masterTypeSyns :: Type -> [Dec]
--masterTypeSyns site =
--    [ TySynD (mkName "Handler") []
--      $ ConT ''HandlerT `AppT` site `AppT` ConT ''IO
--    , TySynD (mkName "Widget")  []
--      $ ConT ''WidgetT `AppT` site `AppT` ConT ''IO `AppT` ConT ''()
--    ]
--
--mkYesodGeneral :: String                   -- ^ foundation type
--               -> [String]                 -- ^ arguments for the type
--               -> Bool                     -- ^ it this a subsite
--               -> [ResourceTree String]
--               -> Q([Dec],[Dec])
--mkYesodGeneral name args isSub resS = do
--    renderRouteDec <- mkRenderRouteInstance site res
--    routeAttrsDec  <- mkRouteAttrsInstance site res
--    dispatchDec    <- mkDispatchInstance site res
--    parse <- mkParseRouteInstance site res
--    let rname = mkName $ "resources" ++ name
--    eres <- lift resS
--    let resourcesDec =
--            [ SigD rname $ ListT `AppT` (ConT ''ResourceTree `AppT` ConT ''String)
--            , FunD rname [Clause [] (NormalB eres) []]
--            ]
--    let dataDec = concat
--            [ [parse]
--            , renderRouteDec
--            , [routeAttrsDec]
--            , resourcesDec
--            , if isSub then [] else masterTypeSyns site
--            ]
--    return (dataDec, dispatchDec)
--  where site    = foldl' AppT (ConT $ mkName name) (map (VarT . mkName) args)
--        res     = map (fmap parseType) resS
--
--mkMDS :: Q Exp -> MkDispatchSettings
--mkMDS rh = MkDispatchSettings
--    { mdsRunHandler = rh
--    , mdsSubDispatcher =
--        [|\parentRunner getSub toParent env -> yesodSubDispatch
--                                 YesodSubRunnerEnv
--                                    { ysreParentRunner = parentRunner
--                                    , ysreGetSub = getSub
--                                    , ysreToParentRoute = toParent
--                                    , ysreParentEnv = env
--                                    }
--                              |]
--    , mdsGetPathInfo = [|W.pathInfo|]
--    , mdsSetPathInfo = [|\p r -> r { W.pathInfo = p }|]
--    , mdsMethod = [|W.requestMethod|]
--    , mds404 = [|notFound >> return ()|]
--    , mds405 = [|badMethod >> return ()|]
--    , mdsGetHandler = defaultGetHandler
--    }
--
---- | If the generation of @'YesodDispatch'@ instance require finer
---- control of the types, contexts etc. using this combinator. You will
---- hardly need this generality. However, in certain situations, like
---- when writing library/plugin for yesod, this combinator becomes
---- handy.
--mkDispatchInstance :: Type                -- ^ The master site type
--                   -> [ResourceTree a]    -- ^ The resource
--                   -> DecsQ
--mkDispatchInstance master res = do
--    clause' <- mkDispatchClause (mkMDS [|yesodRunner|]) res
--    let thisDispatch = FunD 'yesodDispatch [clause']
--    return [InstanceD [] yDispatch [thisDispatch]]
--  where
--    yDispatch = ConT ''YesodDispatch `AppT` master
--
--mkYesodSubDispatch :: [ResourceTree a] -> Q Exp
--mkYesodSubDispatch res = do
--    clause' <- mkDispatchClause (mkMDS [|subHelper . fmap toTypedContent|]) res
--    inner <- newName "inner"
--    let innerFun = FunD inner [clause']
--    helper <- newName "helper"
--    let fun = FunD helper
--                [ Clause
--                    []
--                    (NormalB $ VarE inner)
--                    [innerFun]
--                ]
--    return $ LetE [fun] (VarE helper)
-diff --git a/Yesod/Core/Types.hs b/Yesod/Core/Types.hs
-index 388dfe3..b3fce0f 100644
---- a/Yesod/Core/Types.hs
-+++ b/Yesod/Core/Types.hs
-@@ -21,6 +21,7 @@ import           Control.Monad.Catch                (MonadCatch (..))
- import           Control.Monad.Catch                (MonadMask (..))
- #endif
- import           Control.Monad.IO.Class             (MonadIO (liftIO))
-+import qualified Control.Monad.Logger
- import           Control.Monad.Logger               (LogLevel, LogSource,
-                                                      MonadLogger (..))
- import           Control.Monad.Trans.Control        (MonadBaseControl (..))
-@@ -191,7 +192,7 @@ data RunHandlerEnv site = RunHandlerEnv
-     , rheRoute    :: !(Maybe (Route site))
-     , rheSite     :: !site
-     , rheUpload   :: !(RequestBodyLength -> FileUpload)
--    , rheLog      :: !(Loc -> LogSource -> LogLevel -> LogStr -> IO ())
-+    , rheLog      :: !(Control.Monad.Logger.Loc -> LogSource -> LogLevel -> LogStr -> IO ())
-     , rheOnError  :: !(ErrorResponse -> YesodApp)
-       -- ^ How to respond when an error is thrown internally.
-       --
-diff --git a/Yesod/Core/Widget.hs b/Yesod/Core/Widget.hs
-index 481199e..8489fbe 100644
---- a/Yesod/Core/Widget.hs
-+++ b/Yesod/Core/Widget.hs
-@@ -16,8 +16,8 @@ module Yesod.Core.Widget
-       WidgetT
-     , PageContent (..)
-       -- * Special Hamlet quasiquoter/TH for Widgets
--    , whamlet
--    , whamletFile
-+    --, whamlet
-+    --, whamletFile
-     , ihamletToRepHtml
-     , ihamletToHtml
-       -- * Convert to Widget
-@@ -46,7 +46,7 @@ module Yesod.Core.Widget
-     , widgetToParentWidget
-     , handlerToWidget
-       -- * Internal
--    , whamletFileWithSettings
-+    --, whamletFileWithSettings
-     , asWidgetT
-     ) where
- 
-@@ -207,35 +207,9 @@ addScriptRemote = flip addScriptRemoteAttrs []
- addScriptRemoteAttrs :: MonadWidget m => Text -> [(Text, Text)] -> m ()
- addScriptRemoteAttrs x y = tell $ GWData mempty mempty (toUnique $ Script (Remote x) y) mempty mempty mempty mempty
- 
--whamlet :: QuasiQuoter
--whamlet = NP.hamletWithSettings rules NP.defaultHamletSettings
--
--whamletFile :: FilePath -> Q Exp
--whamletFile = NP.hamletFileWithSettings rules NP.defaultHamletSettings
--
--whamletFileWithSettings :: NP.HamletSettings -> FilePath -> Q Exp
--whamletFileWithSettings = NP.hamletFileWithSettings rules
--
- asWidgetT :: WidgetT site m () -> WidgetT site m ()
- asWidgetT = id
- 
--rules :: Q NP.HamletRules
--rules = do
--    ah <- [|asWidgetT . toWidget|]
--    let helper qg f = do
--            x <- newName "urender"
--            e <- f $ VarE x
--            let e' = LamE [VarP x] e
--            g <- qg
--            bind <- [|(>>=)|]
--            return $ InfixE (Just g) bind (Just e')
--    let ur f = do
--            let env = NP.Env
--                    (Just $ helper [|getUrlRenderParams|])
--                    (Just $ helper [|liftM (toHtml .) getMessageRender|])
--            f env
--    return $ NP.HamletRules ah ur $ \_ b -> return $ ah `AppE` b
--
- -- | Wraps the 'Content' generated by 'hamletToContent' in a 'RepHtml'.
- ihamletToRepHtml :: (MonadHandler m, RenderMessage (HandlerSite m) message)
-                  => HtmlUrlI18n message (Route (HandlerSite m))
--- 
-2.1.1
-
diff --git a/standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch b/standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch
+++ /dev/null
@@ -1,2086 +0,0 @@
-From 1b24ece1a40c9365f719472ca6e342c8c4065c25 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 16 Oct 2014 02:31:20 +0000
-Subject: [PATCH] hack TH
-
----
- Yesod/Form/Bootstrap3.hs | 186 +++++++++--
- Yesod/Form/Fields.hs     | 816 +++++++++++++++++++++++++++++++++++------------
- Yesod/Form/Functions.hs  | 257 ++++++++++++---
- Yesod/Form/Jquery.hs     | 134 ++++++--
- Yesod/Form/MassInput.hs  | 226 ++++++++++---
- Yesod/Form/Nic.hs        |  67 +++-
- 6 files changed, 1322 insertions(+), 364 deletions(-)
-
-diff --git a/Yesod/Form/Bootstrap3.hs b/Yesod/Form/Bootstrap3.hs
-index 84e85fc..1954fb4 100644
---- a/Yesod/Form/Bootstrap3.hs
-+++ b/Yesod/Form/Bootstrap3.hs
-@@ -26,6 +26,9 @@ import Data.String (IsString(..))
- import Yesod.Core
- 
- import qualified Data.Text as T
-+import qualified Text.Hamlet
-+import qualified Text.Blaze.Internal
-+import qualified Data.Foldable
- 
- import Yesod.Form.Types
- import Yesod.Form.Functions
-@@ -152,44 +155,144 @@ renderBootstrap3 formLayout aform fragment = do
-     let views = views' []
-         has (Just _) = True
-         has Nothing  = False
--        widget = [whamlet|
--            $newline never
--            #{fragment}
--            $forall view <- views
--              <div .form-group :fvRequired view:.required :not $ fvRequired view:.optional :has $ fvErrors view:.has-error>
--                $case formLayout
--                  $of BootstrapBasicForm
--                    $if fvId view /= bootstrapSubmitId
--                      <label for=#{fvId view}>#{fvLabel view}
--                    ^{fvInput view}
--                    ^{helpWidget view}
--                  $of BootstrapInlineForm
--                    $if fvId view /= bootstrapSubmitId
--                      <label .sr-only for=#{fvId view}>#{fvLabel view}
--                    ^{fvInput view}
--                    ^{helpWidget view}
--                  $of BootstrapHorizontalForm labelOffset labelSize inputOffset inputSize
--                    $if fvId view /= bootstrapSubmitId
--                      <label .control-label .#{toOffset labelOffset} .#{toColumn labelSize} for=#{fvId view}>#{fvLabel view}
--                      <div .#{toOffset inputOffset} .#{toColumn inputSize}>
--                        ^{fvInput view}
--                        ^{helpWidget view}
--                    $else
--                      <div .#{toOffset (addGO inputOffset (addGO labelOffset labelSize))} .#{toColumn inputSize}>
--                        ^{fvInput view}
--                        ^{helpWidget view}
--                |]
-+        widget =         do { (asWidgetT . toWidget) (toHtml fragment);
-+             Data.Foldable.mapM_
-+               (\ view_as0a
-+                  -> do { (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                               "<div class=\"form-group ");
-+                          Text.Hamlet.condH
-+                            [(fvRequired view_as0a, 
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . T.pack) "required "))]
-+                            Nothing;
-+                          Text.Hamlet.condH
-+                            [(not (fvRequired view_as0a), 
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . T.pack) "optional "))]
-+                            Nothing;
-+                          Text.Hamlet.condH
-+                            [(has (fvErrors view_as0a), 
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . T.pack) "has-error"))]
-+                            Nothing;
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+                          case formLayout of {
-+                            ; BootstrapBasicForm
-+                              -> do { Text.Hamlet.condH
-+                                        [((/=) (fvId view_as0a) bootstrapSubmitId, 
-+                                          do { (asWidgetT . toWidget)
-+                                                 ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                    "<label for=\"");
-+                                               (asWidgetT . toWidget) (toHtml (fvId view_as0a));
-+                                               (asWidgetT . toWidget)
-+                                                 ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+                                               (asWidgetT . toWidget) (toHtml (fvLabel view_as0a));
-+                                               (asWidgetT . toWidget)
-+                                                 ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                    "</label>") })]
-+                                        Nothing;
-+                                      (asWidgetT . toWidget) (fvInput view_as0a);
-+                                      (asWidgetT . toWidget) (helpWidget view_as0a) }
-+                            ; BootstrapInlineForm
-+                              -> do { Text.Hamlet.condH
-+                                        [((/=) (fvId view_as0a) bootstrapSubmitId, 
-+                                          do { (asWidgetT . toWidget)
-+                                                 ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                    "<label class=\"sr-only\" for=\"");
-+                                               (asWidgetT . toWidget) (toHtml (fvId view_as0a));
-+                                               (asWidgetT . toWidget)
-+                                                 ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+                                               (asWidgetT . toWidget) (toHtml (fvLabel view_as0a));
-+                                               (asWidgetT . toWidget)
-+                                                 ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                    "</label>") })]
-+                                        Nothing;
-+                                      (asWidgetT . toWidget) (fvInput view_as0a);
-+                                      (asWidgetT . toWidget) (helpWidget view_as0a) }
-+                            ; BootstrapHorizontalForm labelOffset_as0b
-+                                                    labelSize_as0c
-+                                                    inputOffset_as0d
-+                                                    inputSize_as0e
-+                              -> Text.Hamlet.condH
-+                                   [((/=) (fvId view_as0a) bootstrapSubmitId, 
-+                                     do { (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                               "<label class=\"control-label ");
-+                                          (asWidgetT . toWidget) (toHtml (toOffset labelOffset_as0b));
-+                                          (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack) " ");
-+                                          (asWidgetT . toWidget) (toHtml (toColumn labelSize_as0c));
-+                                          (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack) "\" for=\"");
-+                                          (asWidgetT . toWidget) (toHtml (fvId view_as0a));
-+                                          (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+                                          (asWidgetT . toWidget) (toHtml (fvLabel view_as0a));
-+                                          (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                               "</label><div class=\"");
-+                                          (asWidgetT . toWidget) (toHtml (toOffset inputOffset_as0d));
-+                                          (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack) " ");
-+                                          (asWidgetT . toWidget) (toHtml (toColumn inputSize_as0e));
-+                                          (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+                                          (asWidgetT . toWidget) (fvInput view_as0a);
-+                                          (asWidgetT . toWidget) (helpWidget view_as0a);
-+                                          (asWidgetT . toWidget)
-+                                            ((Text.Blaze.Internal.preEscapedText . T.pack) "</div>") })]
-+                                   (Just
-+                                      (do { (asWidgetT . toWidget)
-+                                              ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                 "<div class=\"");
-+                                            (asWidgetT . toWidget)
-+                                              (toHtml
-+                                                 (toOffset
-+                                                    (addGO
-+                                                       inputOffset_as0d
-+                                                       (addGO labelOffset_as0b labelSize_as0c))));
-+                                            (asWidgetT . toWidget)
-+                                              ((Text.Blaze.Internal.preEscapedText . T.pack) " ");
-+                                            (asWidgetT . toWidget) (toHtml (toColumn inputSize_as0e));
-+                                            (asWidgetT . toWidget)
-+                                              ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+                                            (asWidgetT . toWidget) (fvInput view_as0a);
-+                                            (asWidgetT . toWidget) (helpWidget view_as0a);
-+                                            (asWidgetT . toWidget)
-+                                              ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                                                 "</div>") })) };
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . T.pack) "</div>") })
-+               views }
-+
-     return (res, widget)
- 
- 
- -- | (Internal) Render a help widget for tooltips and errors.
- helpWidget :: FieldView site -> WidgetT site IO ()
--helpWidget view = [whamlet|
--    $maybe tt <- fvTooltip view
--      <span .help-block>#{tt}
--    $maybe err <- fvErrors view
--      <span .help-block>#{err}
--|]
-+helpWidget view = do { Text.Hamlet.maybeH
-+       (fvTooltip view)
-+       (\ tt_as0k
-+          -> do { (asWidgetT . toWidget)
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "<span class=\"help-block\">");
-+                  (asWidgetT . toWidget) (toHtml tt_as0k);
-+                  (asWidgetT . toWidget)
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack) "</span>") })
-+       Nothing;
-+     Text.Hamlet.maybeH
-+       (fvErrors view)
-+       (\ err_as0l
-+          -> do { (asWidgetT . toWidget)
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                       "<span class=\"help-block\">");
-+                  (asWidgetT . toWidget) (toHtml err_as0l);
-+                  (asWidgetT . toWidget)
-+                    ((Text.Blaze.Internal.preEscapedText . T.pack) "</span>") })
-+       Nothing }
-+
- 
- 
- -- | How the 'bootstrapSubmit' button should be rendered.
-@@ -244,7 +347,22 @@ mbootstrapSubmit
-     => BootstrapSubmit msg -> MForm m (FormResult (), FieldView site)
- mbootstrapSubmit (BootstrapSubmit msg classes attrs) =
-     let res = FormSuccess ()
--        widget = [whamlet|<button class="btn #{classes}" type=submit *{attrs}>_{msg}|]
-+        widget =         do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                  "<button class=\"btn ");
-+             (asWidgetT . toWidget) (toHtml classes);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . T.pack)
-+                  "\" type=\"submit\"");
-+             (asWidgetT . toWidget)
-+               ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . T.pack) ">");
-+             ((liftM (toHtml .) getMessageRender)
-+              >>= (\ urender_as0w -> (asWidgetT . toWidget) (urender_as0w msg)));
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . T.pack) "</button>") }
-+
-         fv  = FieldView { fvLabel    = ""
-                         , fvTooltip  = Nothing
-                         , fvId       = bootstrapSubmitId
-diff --git a/Yesod/Form/Fields.hs b/Yesod/Form/Fields.hs
-index c6091a9..9e6bd4e 100644
---- a/Yesod/Form/Fields.hs
-+++ b/Yesod/Form/Fields.hs
-@@ -1,4 +1,3 @@
--{-# LANGUAGE QuasiQuotes #-}
- {-# LANGUAGE TypeFamilies #-}
- {-# LANGUAGE OverloadedStrings #-}
- {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-@@ -18,9 +17,6 @@ module Yesod.Form.Fields
-     , timeField
-     , htmlField
-     , emailField
--    , multiEmailField
--    , searchField
--    , AutoFocus
-     , urlField
-     , doubleField
-     , parseDate
-@@ -37,15 +33,11 @@ module Yesod.Form.Fields
-     , selectFieldList
-     , radioField
-     , radioFieldList
--    , checkboxesFieldList
--    , checkboxesField
-     , multiSelectField
-     , multiSelectFieldList
-     , Option (..)
-     , OptionList (..)
-     , mkOptionList
--    , optionsPersist
--    , optionsPersistKey
-     , optionsPairs
-     , optionsEnum
-     ) where
-@@ -72,6 +64,15 @@ import Control.Monad (when, unless)
- import Data.Either (partitionEithers)
- import Data.Maybe (listToMaybe, fromMaybe)
- 
-+import qualified Text.Blaze as Text.Blaze.Internal
-+import qualified Text.Blaze.Internal
-+import qualified Text.Hamlet
-+import qualified Yesod.Core.Widget
-+import qualified Text.Css
-+import qualified Data.Monoid
-+import qualified Data.Foldable
-+import qualified Control.Monad
-+
- import qualified Blaze.ByteString.Builder.Html.Utf8 as B
- import Blaze.ByteString.Builder (writeByteString, toLazyByteString)
- import Blaze.ByteString.Builder.Internal.Write (fromWriteList)
-@@ -91,15 +92,12 @@ import qualified Data.Text as T (drop, dropWhile)
- import qualified Data.Text.Read
- 
- import qualified Data.Map as Map
--import Yesod.Persist (selectList, runDB, Filter, SelectOpt, Key, YesodPersist, PersistEntity, PersistQuery)
- import Control.Arrow ((&&&))
- 
- import Control.Applicative ((<$>), (<|>))
- 
- import Data.Attoparsec.Text (Parser, char, string, digit, skipSpace, endOfInput, parseOnly)
- 
--import Yesod.Persist.Core
--
- defaultFormMessage :: FormMessage -> Text
- defaultFormMessage = englishFormMessage
- 
-@@ -111,10 +109,25 @@ intField = Field
-             Right (a, "") -> Right a
-             _ -> Left $ MsgInvalidInteger s
- 
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="number" step=1 :isReq:required="" value="#{showVal val}">
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJJh
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . pack)
-+                   "\" type=\"number\" step=\"1\"");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+              id (toHtml (showVal val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
-   where
-@@ -128,10 +141,25 @@ doubleField = Field
-             Right (a, "") -> Right a
-             _ -> Left $ MsgInvalidNumber s
- 
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="number" step=any :isReq:required="" value="#{showVal val}">
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJJu
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . pack)
-+                   "\" type=\"number\" step=\"any\"");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+              id (toHtml (showVal val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
-   where showVal = either id (pack . show)
-@@ -139,10 +167,24 @@ $newline never
- dayField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Day
- dayField = Field
-     { fieldParse = parseHelper $ parseDate . unpack
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}">
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJJF
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"date\"");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+              id (toHtml (showVal val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
-   where showVal = either id (pack . show)
-@@ -150,10 +192,23 @@ $newline never
- timeField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m TimeOfDay
- timeField = Field
-     { fieldParse = parseHelper parseTime
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} :isReq:required="" value="#{showVal val}">
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJJT
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+              id (toHtml (showVal val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
-   where
-@@ -166,10 +221,23 @@ $newline never
- htmlField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Html
- htmlField = Field
-     { fieldParse = parseHelper $ Right . preEscapedText . sanitizeBalance
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<textarea :isReq:required="" id="#{theId}" name="#{name}" *{attrs}>#{showVal val}
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJK4
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<textarea");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+              id (toHtml (showVal val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "</textarea>") }
-+
-     , fieldEnctype = UrlEncoded
-     }
-   where showVal = either id (pack . renderHtml)
-@@ -197,10 +265,18 @@ instance ToHtml Textarea where
- textareaField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Textarea
- textareaField = Field
-     { fieldParse = parseHelper $ Right . Textarea
--    , fieldView = \theId name attrs val _isReq -> toWidget [hamlet|
--$newline never
--<textarea id="#{theId}" name="#{name}" *{attrs}>#{either id unTextarea val}
--|]
-+    , fieldView = \theId name attrs val _isReq -> toWidget  $     \ _render_aJKe
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<textarea id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+              id (toHtml (either id unTextarea val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "</textarea>") }
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-@@ -208,10 +284,19 @@ hiddenField :: (Monad m, PathPiece p, RenderMessage (HandlerSite m) FormMessage)
-             => Field m p
- hiddenField = Field
-     { fieldParse = parseHelper $ maybe (Left MsgValueRequired) Right . fromPathPiece
--    , fieldView = \theId name attrs val _isReq -> toWidget [hamlet|
--$newline never
--<input type="hidden" id="#{theId}" name="#{name}" *{attrs} value="#{either id toPathPiece val}">
--|]
-+    , fieldView = \theId name attrs val _isReq -> toWidget  $     \ _render_aJKo
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack)
-+                   "<input type=\"hidden\" id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"");
-+              id (toHtml (either id toPathPiece val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-@@ -219,20 +304,53 @@ textField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Tex
- textField = Field
-     { fieldParse = parseHelper $ Right
-     , fieldView = \theId name attrs val isReq ->
--        [whamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required value="#{either id id val}">
--|]
-+        do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+             (asWidgetT . toWidget) (toHtml theId);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+             (asWidgetT . toWidget) (toHtml name);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"text\"");
-+             condH
-+               [(isReq, 
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) " required"))]
-+               Nothing;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+             (asWidgetT . toWidget) (toHtml (either id id val));
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+             (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
- passwordField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Text
- passwordField = Field
-     { fieldParse = parseHelper $ Right
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="password" :isReq:required="" value="#{either id id val}">
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJKH
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . pack)
-+                   "\" type=\"password\"");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+              id (toHtml (either id id val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-@@ -304,10 +422,24 @@ emailField = Field
-             case Email.canonicalizeEmail $ encodeUtf8 s of
-                 Just e -> Right $ decodeUtf8With lenientDecode e
-                 Nothing -> Left $ MsgInvalidEmail s
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="email" :isReq:required="" value="#{either id id val}">
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJLq
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"email\"");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+              id (toHtml (either id id val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-@@ -322,10 +454,25 @@ multiEmailField = Field
-             in case partitionEithers addrs of
-                 ([], good) -> Right good
-                 (bad, _) -> Left $ MsgInvalidEmail $ cat bad
--    , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="email" multiple :isReq:required="" value="#{either id cat val}">
--|]
-+    , fieldView = \theId name attrs val isReq -> toWidget  $     \ _render_aJMd
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml theId);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . pack)
-+                   "\" type=\"email\" multiple");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+                Nothing;
-+              id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+              id (toHtml (either id cat val));
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
-     where
-@@ -341,20 +488,75 @@ searchField :: Monad m => RenderMessage (HandlerSite m) FormMessage => AutoFocus
- searchField autoFocus = Field
-     { fieldParse = parseHelper Right
-     , fieldView = \theId name attrs val isReq -> do
--        [whamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="search" :isReq:required="" :autoFocus:autofocus="" value="#{either id id val}">
--|]
-+        do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+             (asWidgetT . toWidget) (toHtml theId);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+             (asWidgetT . toWidget) (toHtml name);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"search\"");
-+             condH
-+               [(isReq, 
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+               Nothing;
-+             condH
-+               [(autoFocus, 
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) " autofocus=\"\""))]
-+               Nothing;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+             (asWidgetT . toWidget) (toHtml (either id id val));
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+             (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-         when autoFocus $ do
-           -- we want this javascript to be placed immediately after the field
--          [whamlet|
--$newline never
--<script>if (!('autofocus' in document.createElement('input'))) {document.getElementById('#{theId}').focus();}
--|]
--          toWidget [cassius|
--            ##{theId}
--              -webkit-appearance: textfield
--            |]
-+          do { (asWidgetT . toWidget)
-+                 ((Text.Blaze.Internal.preEscapedText . pack)
-+                    "<script>if (!('autofocus' in document.createElement('input'))) {document.getElementById('");
-+               (asWidgetT . toWidget) (toHtml theId);
-+               (asWidgetT . toWidget)
-+                 ((Text.Blaze.Internal.preEscapedText . pack)
-+                    "').focus();}</script>") }
-+
-+          toWidget  $           \ _render_aJMx
-+            -> (Text.Css.CssNoWhitespace
-+                . (foldr ($) []))
-+                 [((++)
-+                   $ (map
-+                        Text.Css.TopBlock
-+                        (((Text.Css.Block
-+                             {Text.Css.blockSelector = Data.Monoid.mconcat
-+                                                                                 [(Text.Css.fromText
-+                                                                                   . Text.Css.pack)
-+                                                                                    "#",
-+                                                                                  toCss theId],
-+                              Text.Css.blockAttrs = (Prelude.concat
-+                                                                             $ ([Text.Css.Attr
-+                                                                                   (Data.Monoid.mconcat
-+                                                                                      [(Text.Css.fromText
-+                                                                                        . Text.Css.pack)
-+                                                                                         "-webkit-appearance"])
-+                                                                                   (Data.Monoid.mconcat
-+                                                                                      [(Text.Css.fromText
-+                                                                                        . Text.Css.pack)
-+                                                                                         "textfield"])]
-+                                                                                :
-+                                                                                  (map
-+                                                                                     Text.Css.mixinAttrs
-+                                                                                     []))),
-+                              Text.Css.blockBlocks = (),
-+                              Text.Css.blockMixins = ()}               :)
-+                          . ((foldr (.) id [])
-+                             . (concatMap Text.Css.mixinBlocks [] ++)))
-+                           [])))]
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-@@ -365,7 +567,28 @@ urlField = Field
-             Nothing -> Left $ MsgInvalidUrl s
-             Just _ -> Right s
-     , fieldView = \theId name attrs val isReq ->
--        [whamlet|<input ##{theId} name=#{name} *{attrs} type=url :isReq:required value=#{either id id val}>|]
-+        do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+             (asWidgetT . toWidget) (toHtml theId);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+             (asWidgetT . toWidget) (toHtml name);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"url\"");
-+             condH
-+               [(isReq, 
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) " required"))]
-+               Nothing;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+             (asWidgetT . toWidget) (toHtml (either id id val));
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+             (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-@@ -378,18 +601,54 @@ selectField :: (Eq a, RenderMessage site FormMessage)
-             => HandlerT site IO (OptionList a)
-             -> Field (HandlerT site IO) a
- selectField = selectFieldHelper
--    (\theId name attrs inside -> [whamlet|
--$newline never
--<select ##{theId} name=#{name} *{attrs}>^{inside}
--|]) -- outside
--    (\_theId _name isSel -> [whamlet|
--$newline never
--<option value=none :isSel:selected>_{MsgSelectNone}
--|]) -- onOpt
--    (\_theId _name _attrs value isSel text -> [whamlet|
--$newline never
--<option value=#{value} :isSel:selected>#{text}
--|]) -- inside
-+    (\theId name attrs inside ->     do { (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "<select id=\"");
-+         (asWidgetT . toWidget) (toHtml theId);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+         (asWidgetT . toWidget) (toHtml name);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+         (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+         (asWidgetT . toWidget) inside;
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "</select>") })
-+ -- outside
-+    (\_theId _name isSel ->     do { (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "<option value=\"none\"");
-+         condH
-+           [(isSel, 
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " selected"))]
-+           Nothing;
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+         ((Control.Monad.liftM (toHtml .) getMessageRender)
-+          >>=
-+            (\ urender_aJMX
-+               -> (asWidgetT . toWidget) (urender_aJMX MsgSelectNone)));
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "</option>") })
-+ -- onOpt
-+    (\_theId _name _attrs value isSel text ->     do { (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "<option value=\"");
-+         (asWidgetT . toWidget) (toHtml value);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+         condH
-+           [(isSel, 
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " selected"))]
-+           Nothing;
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+         (asWidgetT . toWidget) (toHtml text);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "</option>") })
-+ -- inside
- 
- multiSelectFieldList :: (Eq a, RenderMessage site FormMessage, RenderMessage site msg)
-                      => [(msg, a)]
-@@ -412,11 +671,45 @@ multiSelectField ioptlist =
-     view theId name attrs val isReq = do
-         opts <- fmap olOptions $ handlerToWidget ioptlist
-         let selOpts = map (id &&& (optselected val)) opts
--        [whamlet|
--            <select ##{theId} name=#{name} :isReq:required multiple *{attrs}>
--                $forall (opt, optsel) <- selOpts
--                    <option value=#{optionExternalValue opt} :optsel:selected>#{optionDisplay opt}
--                |]
-+        do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "<select id=\"");
-+             (asWidgetT . toWidget) (toHtml theId);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+             (asWidgetT . toWidget) (toHtml name);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+             condH
-+               [(isReq, 
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) " required"))]
-+               Nothing;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " multiple");
-+             (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+             Data.Foldable.mapM_
-+               (\ (opt_aJNs, optsel_aJNt)
-+                  -> do { (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . pack) "<option value=\"");
-+                          (asWidgetT . toWidget) (toHtml (optionExternalValue opt_aJNs));
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+                          condH
-+                            [(optsel_aJNt, 
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . pack) " selected"))]
-+                            Nothing;
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+                          (asWidgetT . toWidget) (toHtml (optionDisplay opt_aJNs));
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . pack) "</option>") })
-+               selOpts;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) "</select>") }
-+
-         where
-             optselected (Left _) _ = False
-             optselected (Right vals) opt = (optionInternalValue opt) `elem` vals
-@@ -439,54 +732,196 @@ checkboxesField ioptlist = (multiSelectField ioptlist)
-             opts <- fmap olOptions $ handlerToWidget ioptlist
-             let optselected (Left _) _ = False
-                 optselected (Right vals) opt = (optionInternalValue opt) `elem` vals
--            [whamlet|
--                <span ##{theId}>
--                    $forall opt <- opts
--                        <label>
--                            <input type=checkbox name=#{name} value=#{optionExternalValue opt} *{attrs} :optselected val opt:checked>
--                            #{optionDisplay opt}
--                |]
-+            do { (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) "<span id=\"");
-+                 (asWidgetT . toWidget) (toHtml theId);
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+                 Data.Foldable.mapM_
-+                   (\ opt_aJNI
-+                      -> do { (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . pack)
-+                                   "<label><input type=\"checkbox\" name=\"");
-+                              (asWidgetT . toWidget) (toHtml name);
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"");
-+                              (asWidgetT . toWidget) (toHtml (optionExternalValue opt_aJNI));
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+                              condH
-+                                [(optselected val opt_aJNI, 
-+                                  (asWidgetT . toWidget)
-+                                    ((Text.Blaze.Internal.preEscapedText . pack) " checked"))]
-+                                Nothing;
-+                              (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+                              (asWidgetT . toWidget) (toHtml (optionDisplay opt_aJNI));
-+                              (asWidgetT . toWidget)
-+                                ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })
-+                   opts;
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) "</span>") }
-+
-     }
- 
- radioField :: (Eq a, RenderMessage site FormMessage)
-            => HandlerT site IO (OptionList a)
-            -> Field (HandlerT site IO) a
- radioField = selectFieldHelper
--    (\theId _name _attrs inside -> [whamlet|
--$newline never
--<div ##{theId}>^{inside}
--|])
--    (\theId name isSel -> [whamlet|
--$newline never
--<label .radio for=#{theId}-none>
--    <div>
--        <input id=#{theId}-none type=radio name=#{name} value=none :isSel:checked>
--        _{MsgSelectNone}
--|])
--    (\theId name attrs value isSel text -> [whamlet|
--$newline never
--<label .radio for=#{theId}-#{value}>
--    <div>
--        <input id=#{theId}-#{value} type=radio name=#{name} value=#{value} :isSel:checked *{attrs}>
--        \#{text}
--|])
-+    (\theId _name _attrs inside ->     do { (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "<div id=\"");
-+         (asWidgetT . toWidget) (toHtml theId);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+         (asWidgetT . toWidget) inside;
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
-+
-+    (\theId name isSel ->     do { (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "<label class=\"radio\" for=\"");
-+         (asWidgetT . toWidget) (toHtml theId);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "-none\"><div><input id=\"");
-+         (asWidgetT . toWidget) (toHtml theId);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "-none\" type=\"radio\" name=\"");
-+         (asWidgetT . toWidget) (toHtml name);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"none\"");
-+         condH
-+           [(isSel, 
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " checked"))]
-+           Nothing;
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+         ((Control.Monad.liftM (toHtml .) getMessageRender)
-+          >>=
-+            (\ urender_aJNY
-+               -> (asWidgetT . toWidget) (urender_aJNY MsgSelectNone)));
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "</div></label>") })
-+
-+    (\theId name attrs value isSel text ->     do { (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "<label class=\"radio\" for=\"");
-+         (asWidgetT . toWidget) (toHtml theId);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "-");
-+         (asWidgetT . toWidget) (toHtml value);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "\"><div><input id=\"");
-+         (asWidgetT . toWidget) (toHtml theId);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "-");
-+         (asWidgetT . toWidget) (toHtml value);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "\" type=\"radio\" name=\"");
-+         (asWidgetT . toWidget) (toHtml name);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"");
-+         (asWidgetT . toWidget) (toHtml value);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+         condH
-+           [(isSel, 
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " checked"))]
-+           Nothing;
-+         (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+         (asWidgetT . toWidget) (toHtml text);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "</div></label>") })
-+
- 
- boolField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Bool
- boolField = Field
-       { fieldParse = \e _ -> return $ boolParser e
--      , fieldView = \theId name attrs val isReq -> [whamlet|
--$newline never
--  $if not isReq
--      <input id=#{theId}-none *{attrs} type=radio name=#{name} value=none checked>
--      <label for=#{theId}-none>_{MsgSelectNone}
--
-+      , fieldView = \theId name attrs val isReq ->       do { condH
-+             [(not isReq, 
-+               do { (asWidgetT . toWidget)
-+                      ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+                    (asWidgetT . toWidget) (toHtml theId);
-+                    (asWidgetT . toWidget)
-+                      ((Text.Blaze.Internal.preEscapedText . pack)
-+                         "-none\" type=\"radio\" name=\"");
-+                    (asWidgetT . toWidget) (toHtml name);
-+                    (asWidgetT . toWidget)
-+                      ((Text.Blaze.Internal.preEscapedText . pack)
-+                         "\" value=\"none\" checked");
-+                    (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+                    (asWidgetT . toWidget)
-+                      ((Text.Blaze.Internal.preEscapedText . pack) "><label for=\"");
-+                    (asWidgetT . toWidget) (toHtml theId);
-+                    (asWidgetT . toWidget)
-+                      ((Text.Blaze.Internal.preEscapedText . pack) "-none\">");
-+                    ((Control.Monad.liftM (toHtml .) getMessageRender)
-+                     >>=
-+                       (\ urender_aJOn
-+                          -> (asWidgetT . toWidget) (urender_aJOn MsgSelectNone)));
-+                    (asWidgetT . toWidget)
-+                      ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })]
-+             Nothing;
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+           (asWidgetT . toWidget) (toHtml theId);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack)
-+                "-yes\" type=\"radio\" name=\"");
-+           (asWidgetT . toWidget) (toHtml name);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"yes\"");
-+           condH
-+             [(showVal id val, 
-+               (asWidgetT . toWidget)
-+                 ((Text.Blaze.Internal.preEscapedText . pack) " checked"))]
-+             Nothing;
-+           (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "><label for=\"");
-+           (asWidgetT . toWidget) (toHtml theId);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "-yes\">");
-+           ((Control.Monad.liftM (toHtml .) getMessageRender)
-+            >>=
-+              (\ urender_aJOo
-+                 -> (asWidgetT . toWidget) (urender_aJOo MsgBoolYes)));
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack)
-+                "</label><input id=\"");
-+           (asWidgetT . toWidget) (toHtml theId);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack)
-+                "-no\" type=\"radio\" name=\"");
-+           (asWidgetT . toWidget) (toHtml name);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"no\"");
-+           condH
-+             [(showVal not val, 
-+               (asWidgetT . toWidget)
-+                 ((Text.Blaze.Internal.preEscapedText . pack) " checked"))]
-+             Nothing;
-+           (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "><label for=\"");
-+           (asWidgetT . toWidget) (toHtml theId);
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "-no\">");
-+           ((Control.Monad.liftM (toHtml .) getMessageRender)
-+            >>=
-+              (\ urender_aJOp
-+                 -> (asWidgetT . toWidget) (urender_aJOp MsgBoolNo)));
-+           (asWidgetT . toWidget)
-+             ((Text.Blaze.Internal.preEscapedText . pack) "</label>") }
- 
--<input id=#{theId}-yes *{attrs} type=radio name=#{name} value=yes :showVal id val:checked>
--<label for=#{theId}-yes>_{MsgBoolYes}
--
--<input id=#{theId}-no *{attrs} type=radio name=#{name} value=no :showVal not val:checked>
--<label for=#{theId}-no>_{MsgBoolNo}
--|]
-     , fieldEnctype = UrlEncoded
-     }
-   where
-@@ -512,10 +947,24 @@ $newline never
- checkBoxField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Bool
- checkBoxField = Field
-     { fieldParse = \e _ -> return $ checkBoxParser e
--    , fieldView  = \theId name attrs val _ -> [whamlet|
--$newline never
--<input id=#{theId} *{attrs} type=checkbox name=#{name} value=yes :showVal id val:checked>
--|]
-+    , fieldView  = \theId name attrs val _ ->     do { (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+         (asWidgetT . toWidget) (toHtml theId);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "\" type=\"checkbox\" name=\"");
-+         (asWidgetT . toWidget) (toHtml name);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"yes\"");
-+         condH
-+           [(showVal id val, 
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . pack) " checked"))]
-+           Nothing;
-+         (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
-+         (asWidgetT . toWidget)
-+           ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-@@ -559,69 +1008,6 @@ optionsPairs opts = do
- optionsEnum :: (MonadHandler m, Show a, Enum a, Bounded a) => m (OptionList a)
- optionsEnum = optionsPairs $ map (\x -> (pack $ show x, x)) [minBound..maxBound]
- 
--#if MIN_VERSION_persistent(2, 0, 0)
--optionsPersist :: ( YesodPersist site, PersistEntity a
--                  , PersistQuery (PersistEntityBackend a)
--                  , PathPiece (Key a)
--                  , RenderMessage site msg
--                  , YesodPersistBackend site ~ PersistEntityBackend a
--                  )
--#else
--optionsPersist :: ( YesodPersist site, PersistEntity a
--                  , PersistQuery (YesodPersistBackend site (HandlerT site IO))
--                  , PathPiece (Key a)
--                  , PersistEntityBackend a ~ PersistMonadBackend (YesodPersistBackend site (HandlerT site IO))
--                  , RenderMessage site msg
--                  )
--#endif
--               => [Filter a]
--               -> [SelectOpt a]
--               -> (a -> msg)
--               -> HandlerT site IO (OptionList (Entity a))
--optionsPersist filts ords toDisplay = fmap mkOptionList $ do
--    mr <- getMessageRender
--    pairs <- runDB $ selectList filts ords
--    return $ map (\(Entity key value) -> Option
--        { optionDisplay = mr (toDisplay value)
--        , optionInternalValue = Entity key value
--        , optionExternalValue = toPathPiece key
--        }) pairs
--
---- | An alternative to 'optionsPersist' which returns just the @Key@ instead of
---- the entire @Entity@.
----
---- Since 1.3.2
--#if MIN_VERSION_persistent(2, 0, 0)
--optionsPersistKey
--  :: (YesodPersist site
--     , PersistEntity a
--     , PersistQuery (PersistEntityBackend a)
--     , PathPiece (Key a)
--     , RenderMessage site msg
--     , YesodPersistBackend site ~ PersistEntityBackend a
--     )
--#else
--optionsPersistKey
--  :: (YesodPersist site
--     , PersistEntity a
--     , PersistQuery (YesodPersistBackend site (HandlerT site IO))
--     , PathPiece (Key a)
--     , RenderMessage site msg
--     , PersistEntityBackend a ~ PersistMonadBackend (YesodDB site))
--#endif
--  => [Filter a]
--  -> [SelectOpt a]
--  -> (a -> msg)
--  -> HandlerT site IO (OptionList (Key a))
--
--optionsPersistKey filts ords toDisplay = fmap mkOptionList $ do
--    mr <- getMessageRender
--    pairs <- runDB $ selectList filts ords
--    return $ map (\(Entity key value) -> Option
--        { optionDisplay = mr (toDisplay value)
--        , optionInternalValue = key
--        , optionExternalValue = toPathPiece key
--        }) pairs
- 
- selectFieldHelper
-         :: (Eq a, RenderMessage site FormMessage)
-@@ -665,9 +1051,21 @@ fileField = Field
-         case files of
-             [] -> Right Nothing
-             file:_ -> Right $ Just file
--    , fieldView = \id' name attrs _ isReq -> toWidget [hamlet|
--            <input id=#{id'} name=#{name} *{attrs} type=file :isReq:required>
--        |]
-+    , fieldView = \id' name attrs _ isReq -> toWidget  $     \ _render_aJPt
-+      -> do { id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+              id (toHtml id');
-+              id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+              id (toHtml name);
-+              id
-+                ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"file\"");
-+              condH
-+                [(isReq, 
-+                  id ((Text.Blaze.Internal.preEscapedText . pack) " required"))]
-+                Nothing;
-+              id ((attrsToHtml . toAttributes) attrs);
-+              id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-     , fieldEnctype = Multipart
-     }
- 
-@@ -694,10 +1092,19 @@ fileAFormReq fs = AForm $ \(site, langs) menvs ints -> do
-             { fvLabel = toHtml $ renderMessage site langs $ fsLabel fs
-             , fvTooltip = fmap (toHtml . renderMessage site langs) $ fsTooltip fs
-             , fvId = id'
--            , fvInput = [whamlet|
--$newline never
--<input type=file name=#{name} ##{id'} *{fsAttrs fs}>
--|]
-+            , fvInput =             do { (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack)
-+                      "<input type=\"file\" name=\"");
-+                 (asWidgetT . toWidget) (toHtml name);
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) "\" id=\"");
-+                 (asWidgetT . toWidget) (toHtml id');
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+                 (asWidgetT . toWidget) ((attrsToHtml . toAttributes) (fsAttrs fs));
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-             , fvErrors = errs
-             , fvRequired = True
-             }
-@@ -726,10 +1133,19 @@ fileAFormOpt fs = AForm $ \(master, langs) menvs ints -> do
-             { fvLabel = toHtml $ renderMessage master langs $ fsLabel fs
-             , fvTooltip = fmap (toHtml . renderMessage master langs) $ fsTooltip fs
-             , fvId = id'
--            , fvInput = [whamlet|
--$newline never
--<input type=file name=#{name} ##{id'} *{fsAttrs fs}>
--|]
-+            , fvInput =             do { (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack)
-+                      "<input type=\"file\" name=\"");
-+                 (asWidgetT . toWidget) (toHtml name);
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) "\" id=\"");
-+                 (asWidgetT . toWidget) (toHtml id');
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+                 (asWidgetT . toWidget) ((attrsToHtml . toAttributes) (fsAttrs fs));
-+                 (asWidgetT . toWidget)
-+                   ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-             , fvErrors = errs
-             , fvRequired = False
-             }
-diff --git a/Yesod/Form/Functions.hs b/Yesod/Form/Functions.hs
-index 9e6abaf..0c2a0ce 100644
---- a/Yesod/Form/Functions.hs
-+++ b/Yesod/Form/Functions.hs
-@@ -60,12 +60,16 @@ import Text.Blaze (Markup, toMarkup)
- #define toHtml toMarkup
- import Yesod.Core
- import Network.Wai (requestMethod)
--import Text.Hamlet (shamlet)
-+--import Text.Hamlet (shamlet)
- import Data.Monoid (mempty)
- import Data.Maybe (listToMaybe, fromMaybe)
- import qualified Data.Map as Map
- import qualified Data.Text.Encoding as TE
- import Control.Arrow (first)
-+import qualified Text.Blaze.Internal
-+import qualified Yesod.Core.Widget
-+import qualified Data.Foldable
-+import qualified Text.Hamlet
- 
- -- | Get a unique identifier.
- newFormIdent :: Monad m => MForm m Text
-@@ -217,7 +221,14 @@ postHelper form env = do
-     let token =
-             case reqToken req of
-                 Nothing -> mempty
--                Just n -> [shamlet|<input type=hidden name=#{tokenKey} value=#{n}>|]
-+                Just n ->                 do { id
-+                       ((Text.Blaze.Internal.preEscapedText . pack)
-+                          "<input type=\"hidden\" name=\"");
-+                     id (toHtml tokenKey);
-+                     id ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"");
-+                     id (toHtml n);
-+                     id ((Text.Blaze.Internal.preEscapedText . pack) "\">") }
-+
-     m <- getYesod
-     langs <- languages
-     ((res, xml), enctype) <- runFormGeneric (form token) m langs env
-@@ -297,7 +308,12 @@ getHelper :: MonadHandler m
-           -> Maybe (Env, FileEnv)
-           -> m (a, Enctype)
- getHelper form env = do
--    let fragment = [shamlet|<input type=hidden name=#{getKey}>|]
-+    let fragment =     do { id
-+           ((Text.Blaze.Internal.preEscapedText . pack)
-+              "<input type=\"hidden\" name=\"");
-+         id (toHtml getKey);
-+         id ((Text.Blaze.Internal.preEscapedText . pack) "\">") }
-+
-     langs <- languages
-     m <- getYesod
-     runFormGeneric (form fragment) m langs env
-@@ -332,10 +348,15 @@ identifyForm
- identifyForm identVal form = \fragment -> do
-     -- Create hidden <input>.
-     let fragment' =
--          [shamlet|
--            <input type=hidden name=#{identifyFormKey} value=#{identVal}>
--            #{fragment}
--          |]
-+          do { id
-+                 ((Text.Blaze.Internal.preEscapedText . pack)
-+                    "<input type=\"hidden\" name=\"");
-+               id (toHtml identifyFormKey);
-+               id ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"");
-+               id (toHtml identVal);
-+               id ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+               id (toHtml fragment) }
-+
- 
-     -- Check if we got its value back.
-     mp <- askParams
-@@ -365,22 +386,70 @@ renderTable, renderDivs, renderDivsNoLabels :: Monad m => FormRender m a
- renderTable aform fragment = do
-     (res, views') <- aFormToForm aform
-     let views = views' []
--    let widget = [whamlet|
--$newline never
--$if null views
--    \#{fragment}
--$forall (isFirst, view) <- addIsFirst views
--    <tr :fvRequired view:.required :not $ fvRequired view:.optional>
--        <td>
--            $if isFirst
--                \#{fragment}
--            <label for=#{fvId view}>#{fvLabel view}
--            $maybe tt <- fvTooltip view
--                <div .tooltip>#{tt}
--        <td>^{fvInput view}
--        $maybe err <- fvErrors view
--            <td .errors>#{err}
--|]
-+    let widget =     do { Text.Hamlet.condH
-+           [(null views, (asWidgetT . toWidget) (toHtml fragment))] Nothing;
-+         Data.Foldable.mapM_
-+           (\ (isFirst_ab5u, view_ab5v)
-+              -> do { (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "<tr");
-+                      Text.Hamlet.condH
-+                        [(or [fvRequired view_ab5v, not (fvRequired view_ab5v)], 
-+                          do { (asWidgetT . toWidget)
-+                                 ((Text.Blaze.Internal.preEscapedText . pack) " class=\"");
-+                               Text.Hamlet.condH
-+                                 [(fvRequired view_ab5v, 
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "required "))]
-+                                 Nothing;
-+                               Text.Hamlet.condH
-+                                 [(not (fvRequired view_ab5v), 
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "optional"))]
-+                                 Nothing;
-+                               (asWidgetT . toWidget)
-+                                 ((Text.Blaze.Internal.preEscapedText . pack) "\"") })]
-+                        Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "><td>");
-+                      Text.Hamlet.condH
-+                        [(isFirst_ab5u, (asWidgetT . toWidget) (toHtml fragment))] Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "<label for=\"");
-+                      (asWidgetT . toWidget) (toHtml (fvId view_ab5v));
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+                      (asWidgetT . toWidget) (toHtml (fvLabel view_ab5v));
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "</label>");
-+                      Text.Hamlet.maybeH
-+                        (fvTooltip view_ab5v)
-+                        (\ tt_ab5w
-+                           -> do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack)
-+                                        "<div class=\"tooltip\">");
-+                                   (asWidgetT . toWidget) (toHtml tt_ab5w);
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
-+                        Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "</td><td>");
-+                      (asWidgetT . toWidget) (fvInput view_ab5v);
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "</td>");
-+                      Text.Hamlet.maybeH
-+                        (fvErrors view_ab5v)
-+                        (\ err_ab5x
-+                           -> do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack)
-+                                        "<td class=\"errors\">");
-+                                   (asWidgetT . toWidget) (toHtml err_ab5x);
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "</td>") })
-+                        Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "</tr>") })
-+           (addIsFirst views) }
-+
-     return (res, widget)
-   where
-     addIsFirst [] = []
-@@ -396,19 +465,66 @@ renderDivsMaybeLabels :: Monad m => Bool -> FormRender m a
- renderDivsMaybeLabels withLabels aform fragment = do
-     (res, views') <- aFormToForm aform
-     let views = views' []
--    let widget = [whamlet|
--$newline never
--\#{fragment}
--$forall view <- views
--    <div :fvRequired view:.required :not $ fvRequired view:.optional>
--        $if withLabels
--                <label for=#{fvId view}>#{fvLabel view}
--        $maybe tt <- fvTooltip view
--            <div .tooltip>#{tt}
--        ^{fvInput view}
--        $maybe err <- fvErrors view
--            <div .errors>#{err}
--|]
-+    let widget =     do { (asWidgetT . toWidget) (toHtml fragment);
-+         Data.Foldable.mapM_
-+           (\ view_ab5K
-+              -> do { (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "<div");
-+                      Text.Hamlet.condH
-+                        [(or [fvRequired view_ab5K, not (fvRequired view_ab5K)], 
-+                          do { (asWidgetT . toWidget)
-+                                 ((Text.Blaze.Internal.preEscapedText . pack) " class=\"");
-+                               Text.Hamlet.condH
-+                                 [(fvRequired view_ab5K, 
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "required "))]
-+                                 Nothing;
-+                               Text.Hamlet.condH
-+                                 [(not (fvRequired view_ab5K), 
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "optional"))]
-+                                 Nothing;
-+                               (asWidgetT . toWidget)
-+                                 ((Text.Blaze.Internal.preEscapedText . pack) "\"") })]
-+                        Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+                      Text.Hamlet.condH
-+                        [(withLabels, 
-+                          do { (asWidgetT . toWidget)
-+                                 ((Text.Blaze.Internal.preEscapedText . pack) "<label for=\"");
-+                               (asWidgetT . toWidget) (toHtml (fvId view_ab5K));
-+                               (asWidgetT . toWidget)
-+                                 ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+                               (asWidgetT . toWidget) (toHtml (fvLabel view_ab5K));
-+                               (asWidgetT . toWidget)
-+                                 ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })]
-+                        Nothing;
-+                      Text.Hamlet.maybeH
-+                        (fvTooltip view_ab5K)
-+                        (\ tt_ab5L
-+                           -> do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack)
-+                                        "<div class=\"tooltip\">");
-+                                   (asWidgetT . toWidget) (toHtml tt_ab5L);
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
-+                        Nothing;
-+                      (asWidgetT . toWidget) (fvInput view_ab5K);
-+                      Text.Hamlet.maybeH
-+                        (fvErrors view_ab5K)
-+                        (\ err_ab5M
-+                           -> do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack)
-+                                        "<div class=\"errors\">");
-+                                   (asWidgetT . toWidget) (toHtml err_ab5M);
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
-+                        Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
-+           views }
-+
-     return (res, widget)
- 
- -- | Render a form using Bootstrap v2-friendly shamlet syntax.
-@@ -436,19 +552,62 @@ renderBootstrap2 aform fragment = do
-     let views = views' []
-         has (Just _) = True
-         has Nothing  = False
--    let widget = [whamlet|
--                $newline never
--                \#{fragment}
--                $forall view <- views
--                    <div .control-group .clearfix :fvRequired view:.required :not $ fvRequired view:.optional :has $ fvErrors view:.error>
--                        <label .control-label for=#{fvId view}>#{fvLabel view}
--                        <div .controls .input>
--                            ^{fvInput view}
--                            $maybe tt <- fvTooltip view
--                                <span .help-block>#{tt}
--                            $maybe err <- fvErrors view
--                                <span .help-block>#{err}
--                |]
-+    let widget =     do { (asWidgetT . toWidget) (toHtml fragment);
-+         Data.Foldable.mapM_
-+           (\ view_ab5Y
-+              -> do { (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack)
-+                           "<div class=\"control-group clearfix ");
-+                      Text.Hamlet.condH
-+                        [(fvRequired view_ab5Y, 
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . pack) "required "))]
-+                        Nothing;
-+                      Text.Hamlet.condH
-+                        [(not (fvRequired view_ab5Y), 
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . pack) "optional "))]
-+                        Nothing;
-+                      Text.Hamlet.condH
-+                        [(has (fvErrors view_ab5Y), 
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . pack) "error"))]
-+                        Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack)
-+                           "\"><label class=\"control-label\" for=\"");
-+                      (asWidgetT . toWidget) (toHtml (fvId view_ab5Y));
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+                      (asWidgetT . toWidget) (toHtml (fvLabel view_ab5Y));
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack)
-+                           "</label><div class=\"controls input\">");
-+                      (asWidgetT . toWidget) (fvInput view_ab5Y);
-+                      Text.Hamlet.maybeH
-+                        (fvTooltip view_ab5Y)
-+                        (\ tt_ab5Z
-+                           -> do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack)
-+                                        "<span class=\"help-block\">");
-+                                   (asWidgetT . toWidget) (toHtml tt_ab5Z);
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "</span>") })
-+                        Nothing;
-+                      Text.Hamlet.maybeH
-+                        (fvErrors view_ab5Y)
-+                        (\ err_ab60
-+                           -> do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack)
-+                                        "<span class=\"help-block\">");
-+                                   (asWidgetT . toWidget) (toHtml err_ab60);
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . pack) "</span>") })
-+                        Nothing;
-+                      (asWidgetT . toWidget)
-+                        ((Text.Blaze.Internal.preEscapedText . pack) "</div></div>") })
-+           views }
-+
-     return (res, widget)
- 
- -- | Deprecated synonym for 'renderBootstrap2'.
-diff --git a/Yesod/Form/Jquery.hs b/Yesod/Form/Jquery.hs
-index 362eb8a..1df9966 100644
---- a/Yesod/Form/Jquery.hs
-+++ b/Yesod/Form/Jquery.hs
-@@ -17,11 +17,23 @@ import Yesod.Core
- import Yesod.Form
- import Data.Time (Day)
- import Data.Default
--import Text.Hamlet (shamlet)
--import Text.Julius (julius, rawJS)
-+--import Text.Hamlet (shamlet)
-+import Text.Julius (rawJS)
- import Data.Text (Text, pack, unpack)
- import Data.Monoid (mconcat)
- 
-+import qualified Text.Blaze as Text.Blaze.Internal
-+import qualified Text.Blaze.Internal
-+import qualified Text.Hamlet
-+import qualified Yesod.Core.Widget
-+import qualified Text.Css
-+import qualified Data.Monoid
-+import qualified Data.Foldable
-+import qualified Control.Monad
-+import qualified Text.Julius
-+import qualified Data.Text.Lazy.Builder
-+import qualified Text.Shakespeare
-+
- -- | Gets the Google hosted jQuery UI 1.8 CSS file with the given theme.
- googleHostedJqueryUiCss :: Text -> Text
- googleHostedJqueryUiCss theme = mconcat
-@@ -61,27 +73,59 @@ jqueryDayField jds = Field
-               . readMay
-               . unpack
-     , fieldView = \theId name attrs val isReq -> do
--        toWidget [shamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}">
--|]
-+        toWidget  $         do { id
-+               ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
-+             id (toHtml theId);
-+             id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+             id (toHtml name);
-+             id
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"date\"");
-+             Text.Hamlet.condH
-+               [(isReq, 
-+                 id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+               Nothing;
-+             id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+             id (toHtml (showVal val));
-+             id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+             id ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs);
-+             id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-         addScript' urlJqueryJs
-         addScript' urlJqueryUiJs
-         addStylesheet' urlJqueryUiCss
--        toWidget [julius|
--$(function(){
--    var i = document.getElementById("#{rawJS theId}");
--    if (i.type != "date") {
--        $(i).datepicker({
--            dateFormat:'yy-mm-dd',
--            changeMonth:#{jsBool $ jdsChangeMonth jds},
--            changeYear:#{jsBool $ jdsChangeYear jds},
--            numberOfMonths:#{rawJS $ mos $ jdsNumberOfMonths jds},
--            yearRange:#{toJSON $ jdsYearRange jds}
--        });
--    }
--});
--|]
-+        toWidget  $         Text.Julius.asJavascriptUrl
-+          (\ _render_a2l4S
-+             -> mconcat
-+                  [Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        "\n$(function(){\n    var i = document.getElementById(\""),
-+                   Text.Julius.toJavascript (rawJS theId),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        "\");\n    if (i.type != \"date\") {\n        $(i).datepicker({\n            dateFormat:'yy-mm-dd',\n            changeMonth:"),
-+                   Text.Julius.toJavascript (jsBool (jdsChangeMonth jds)),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        ",\n            changeYear:"),
-+                   Text.Julius.toJavascript (jsBool (jdsChangeYear jds)),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        ",\n            numberOfMonths:"),
-+                   Text.Julius.toJavascript (rawJS (mos (jdsNumberOfMonths jds))),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        ",\n            yearRange:"),
-+                   Text.Julius.toJavascript (toJSON (jdsYearRange jds)),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        "\n        });\n    }\n});")])
-+
-     , fieldEnctype = UrlEncoded
-     }
-   where
-@@ -108,16 +152,52 @@ jqueryAutocompleteField' :: (RenderMessage site FormMessage, YesodJquery site)
- jqueryAutocompleteField' minLen src = Field
-     { fieldParse = parseHelper $ Right
-     , fieldView = \theId name attrs val isReq -> do
--        toWidget [shamlet|
--$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="text" :isReq:required="" value="#{either id id val}" .autocomplete>
--|]
-+        toWidget  $         do { id
-+               ((Text.Blaze.Internal.preEscapedText . pack)
-+                  "<input class=\"autocomplete\" id=\"");
-+             id (toHtml theId);
-+             id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+             id (toHtml name);
-+             id
-+               ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"text\"");
-+             Text.Hamlet.condH
-+               [(isReq, 
-+                 id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+               Nothing;
-+             id ((Text.Blaze.Internal.preEscapedText . pack) " value=\"");
-+             id (toHtml (either id id val));
-+             id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+             id ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs);
-+             id ((Text.Blaze.Internal.preEscapedText . pack) ">") }
-+
-         addScript' urlJqueryJs
-         addScript' urlJqueryUiJs
-         addStylesheet' urlJqueryUiCss
--        toWidget [julius|
--$(function(){$("##{rawJS theId}").autocomplete({source:"@{src}",minLength:#{toJSON minLen}})});
--|]
-+        toWidget  $         Text.Julius.asJavascriptUrl
-+          (\ _render_a2l58
-+             -> mconcat
-+                  [Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        "\n$(function(){$(\"#"),
-+                   Text.Julius.toJavascript (rawJS theId),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        "\").autocomplete({source:\""),
-+                   Text.Julius.Javascript
-+                     (Data.Text.Lazy.Builder.fromText
-+                        (_render_a2l58 src [])),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        "\",minLength:"),
-+                   Text.Julius.toJavascript (toJSON minLen),
-+                   Text.Julius.Javascript
-+                     ((Data.Text.Lazy.Builder.fromText
-+                       . Text.Shakespeare.pack')
-+                        "})});")])
-+
-     , fieldEnctype = UrlEncoded
-     }
- 
-diff --git a/Yesod/Form/MassInput.hs b/Yesod/Form/MassInput.hs
-index a2b434d..75eb484 100644
---- a/Yesod/Form/MassInput.hs
-+++ b/Yesod/Form/MassInput.hs
-@@ -9,6 +9,16 @@ module Yesod.Form.MassInput
-     , massTable
-     ) where
- 
-+import qualified Data.Text
-+import qualified Text.Blaze as Text.Blaze.Internal
-+import qualified Text.Blaze.Internal
-+import qualified Text.Hamlet
-+import qualified Yesod.Core.Widget
-+import qualified Text.Css
-+import qualified Data.Monoid
-+import qualified Data.Foldable
-+import qualified Control.Monad
-+
- import Yesod.Form.Types
- import Yesod.Form.Functions
- import Yesod.Form.Fields (checkBoxField)
-@@ -70,16 +80,27 @@ inputList label fixXml single mdef = formToAForm $ do
-         { fvLabel = label
-         , fvTooltip = Nothing
-         , fvId = theId
--        , fvInput = [whamlet|
--$newline never
--^{fixXml views}
--<p>
--    $forall xml <- xmls
--        ^{xml}
--    <input .count type=hidden name=#{countName} value=#{count}>
--    <input type=checkbox name=#{addName}>
--    Add another row
--|]
-+        , fvInput =         do { (asWidgetT . toWidget) (fixXml views);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<p>");
-+             Data.Foldable.mapM_
-+               (\ xml_a1yM1 -> (asWidgetT . toWidget) xml_a1yM1) xmls;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "<input class=\"count\" type=\"hidden\" name=\"");
-+             (asWidgetT . toWidget) (toHtml countName);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "\" value=\"");
-+             (asWidgetT . toWidget) (toHtml count);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "\"><input type=\"checkbox\" name=\"");
-+             (asWidgetT . toWidget) (toHtml addName);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "\">Add another row</p>") }
-+
-         , fvErrors = Nothing
-         , fvRequired = False
-         }])
-@@ -92,10 +113,14 @@ withDelete af = do
-     deleteName <- newFormIdent
-     (menv, _, _) <- ask
-     res <- case menv >>= Map.lookup deleteName . fst of
--        Just ("yes":_) -> return $ Left [whamlet|
--$newline never
--<input type=hidden name=#{deleteName} value=yes>
--|]
-+        Just ("yes":_) -> return $ Left  $         do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "<input type=\"hidden\" name=\"");
-+             (asWidgetT . toWidget) (toHtml deleteName);
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "\" value=\"yes\">") }
-+
-         _ -> do
-             (_, xml2) <- aFormToForm $ areq checkBoxField FieldSettings
-                 { fsLabel = SomeMessage MsgDelete
-@@ -121,32 +146,149 @@ fixme eithers =
- massDivs, massTable
-          :: [[FieldView site]]
-          -> WidgetT site IO ()
--massDivs viewss = [whamlet|
--$newline never
--$forall views <- viewss
--    <fieldset>
--        $forall view <- views
--            <div :fvRequired view:.required :not $ fvRequired view:.optional>
--                <label for=#{fvId view}>#{fvLabel view}
--                $maybe tt <- fvTooltip view
--                    <div .tooltip>#{tt}
--                ^{fvInput view}
--                $maybe err <- fvErrors view
--                    <div .errors>#{err}
--|]
-+massDivs viewss = Data.Foldable.mapM_
-+  (\ views_a1yMm
-+     -> do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "<fieldset>");
-+             Data.Foldable.mapM_
-+               (\ view_a1yMn
-+                  -> do { (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<div");
-+                          Text.Hamlet.condH
-+                            [(or [fvRequired view_a1yMn, not (fvRequired view_a1yMn)], 
-+                              do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                        " class=\"");
-+                                   Text.Hamlet.condH
-+                                     [(fvRequired view_a1yMn, 
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "required "))]
-+                                     Nothing;
-+                                   Text.Hamlet.condH
-+                                     [(not (fvRequired view_a1yMn), 
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "optional"))]
-+                                     Nothing;
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                        "\"") })]
-+                            Nothing;
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                               "><label for=\"");
-+                          (asWidgetT . toWidget) (toHtml (fvId view_a1yMn));
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "\">");
-+                          (asWidgetT . toWidget) (toHtml (fvLabel view_a1yMn));
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</label>");
-+                          Text.Hamlet.maybeH
-+                            (fvTooltip view_a1yMn)
-+                            (\ tt_a1yMo
-+                               -> do { (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "<div class=\"tooltip\">");
-+                                       (asWidgetT . toWidget) (toHtml tt_a1yMo);
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "</div>") })
-+                            Nothing;
-+                          (asWidgetT . toWidget) (fvInput view_a1yMn);
-+                          Text.Hamlet.maybeH
-+                            (fvErrors view_a1yMn)
-+                            (\ err_a1yMp
-+                               -> do { (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "<div class=\"errors\">");
-+                                       (asWidgetT . toWidget) (toHtml err_a1yMp);
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "</div>") })
-+                            Nothing;
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</div>") })
-+               views_a1yMm;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "</fieldset>") })
-+  viewss
-+
-+
-+massTable viewss = Data.Foldable.mapM_
-+  (\ views_a1yMv
-+     -> do { (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "<fieldset><table>");
-+             Data.Foldable.mapM_
-+               (\ view_a1yMw
-+                  -> do { (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<tr");
-+                          Text.Hamlet.condH
-+                            [(or [fvRequired view_a1yMw, not (fvRequired view_a1yMw)], 
-+                              do { (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                        " class=\"");
-+                                   Text.Hamlet.condH
-+                                     [(fvRequired view_a1yMw, 
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "required "))]
-+                                     Nothing;
-+                                   Text.Hamlet.condH
-+                                     [(not (fvRequired view_a1yMw), 
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "optional"))]
-+                                     Nothing;
-+                                   (asWidgetT . toWidget)
-+                                     ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                        "\"") })]
-+                            Nothing;
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                               "><td><label for=\"");
-+                          (asWidgetT . toWidget) (toHtml (fvId view_a1yMw));
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "\">");
-+                          (asWidgetT . toWidget) (toHtml (fvLabel view_a1yMw));
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</label>");
-+                          Text.Hamlet.maybeH
-+                            (fvTooltip view_a1yMw)
-+                            (\ tt_a1yMx
-+                               -> do { (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "<div class=\"tooltip\">");
-+                                       (asWidgetT . toWidget) (toHtml tt_a1yMx);
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "</div>") })
-+                            Nothing;
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                               "</td><td>");
-+                          (asWidgetT . toWidget) (fvInput view_a1yMw);
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</td>");
-+                          Text.Hamlet.maybeH
-+                            (fvErrors view_a1yMw)
-+                            (\ err_a1yMy
-+                               -> do { (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "<td class=\"errors\">");
-+                                       (asWidgetT . toWidget) (toHtml err_a1yMy);
-+                                       (asWidgetT . toWidget)
-+                                         ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                                            "</td>") })
-+                            Nothing;
-+                          (asWidgetT . toWidget)
-+                            ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</tr>") })
-+               views_a1yMv;
-+             (asWidgetT . toWidget)
-+               ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
-+                  "</table></fieldset>") })
-+  viewss
- 
--massTable viewss = [whamlet|
--$newline never
--$forall views <- viewss
--    <fieldset>
--        <table>
--            $forall view <- views
--                <tr :fvRequired view:.required :not $ fvRequired view:.optional>
--                    <td>
--                        <label for=#{fvId view}>#{fvLabel view}
--                        $maybe tt <- fvTooltip view
--                            <div .tooltip>#{tt}
--                    <td>^{fvInput view}
--                    $maybe err <- fvErrors view
--                        <td .errors>#{err}
--|]
-diff --git a/Yesod/Form/Nic.hs b/Yesod/Form/Nic.hs
-index 7e4af07..b59745a 100644
---- a/Yesod/Form/Nic.hs
-+++ b/Yesod/Form/Nic.hs
-@@ -9,11 +9,22 @@ module Yesod.Form.Nic
-     , nicHtmlField
-     ) where
- 
-+import qualified Text.Blaze as Text.Blaze.Internal
-+import qualified Text.Blaze.Internal
-+import qualified Text.Hamlet
-+import qualified Yesod.Core.Widget
-+import qualified Text.Css
-+import qualified Data.Monoid
-+import qualified Data.Foldable
-+import qualified Control.Monad
-+import qualified Text.Julius
-+import qualified Data.Text.Lazy.Builder
-+import qualified Text.Shakespeare
-+
- import Yesod.Core
- import Yesod.Form
- import Text.HTML.SanitizeXSS (sanitizeBalance)
--import Text.Hamlet (shamlet)
--import Text.Julius (julius, rawJS)
-+import Text.Julius ( rawJS)
- import Text.Blaze.Html.Renderer.String (renderHtml)
- import Data.Text (Text, pack)
- import Data.Maybe (listToMaybe)
-@@ -27,20 +38,52 @@ nicHtmlField :: YesodNic site => Field (HandlerT site IO) Html
- nicHtmlField = Field
-     { fieldParse = \e _ -> return . Right . fmap (preEscapedToMarkup . sanitizeBalance) . listToMaybe $ e
-     , fieldView = \theId name attrs val isReq -> do
--        toWidget [shamlet|
--$newline never
--    <textarea id="#{theId}" *{attrs} name="#{name}" :isReq:required .html>#{showVal val}
--|]
-+        toWidget  $         do { id
-+               ((Text.Blaze.Internal.preEscapedText . pack)
-+                  "<textarea class=\"html\" id=\"");
-+             id (toHtml theId);
-+             id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
-+             id (toHtml name);
-+             id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+             Text.Hamlet.condH
-+               [(isReq, 
-+                 id ((Text.Blaze.Internal.preEscapedText . pack) " required"))]
-+               Nothing;
-+             id ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs);
-+             id ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+             id (toHtml (showVal val));
-+             id ((Text.Blaze.Internal.preEscapedText . pack) "</textarea>") }
-+
-         addScript' urlNicEdit
-         master <- getYesod
-         toWidget $
-           case jsLoader master of
--            BottomOfHeadBlocking -> [julius|
--bkLib.onDomLoaded(function(){new nicEditor({fullPanel:true}).panelInstance("#{rawJS theId}")});
--|]
--            _ -> [julius|
--(function(){new nicEditor({fullPanel:true}).panelInstance("#{rawJS theId}")})();
--|]
-+            BottomOfHeadBlocking ->             Text.Julius.asJavascriptUrl
-+              (\ _render_a2rMh
-+                 -> Data.Monoid.mconcat
-+                      [Text.Julius.Javascript
-+                         ((Data.Text.Lazy.Builder.fromText
-+                           . Text.Shakespeare.pack')
-+                            "\nbkLib.onDomLoaded(function(){new nicEditor({fullPanel:true}).panelInstance(\""),
-+                       Text.Julius.toJavascript (rawJS theId),
-+                       Text.Julius.Javascript
-+                         ((Data.Text.Lazy.Builder.fromText
-+                           . Text.Shakespeare.pack')
-+                            "\")});")])
-+
-+            _ ->             Text.Julius.asJavascriptUrl
-+              (\ _render_a2rMm
-+                 -> Data.Monoid.mconcat
-+                      [Text.Julius.Javascript
-+                         ((Data.Text.Lazy.Builder.fromText
-+                           . Text.Shakespeare.pack')
-+                            "\n(function(){new nicEditor({fullPanel:true}).panelInstance(\""),
-+                       Text.Julius.toJavascript (rawJS theId),
-+                       Text.Julius.Javascript
-+                         ((Data.Text.Lazy.Builder.fromText
-+                           . Text.Shakespeare.pack')
-+                            "\")})();")])
-+
-     , fieldEnctype = UrlEncoded
-     }
-   where
--- 
-2.1.1
-
diff --git a/standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch b/standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e82ed4e6fd7b5ea6dbe474b5de2755ec5794161c Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 16 Oct 2014 02:23:50 +0000
-Subject: [PATCH] stub out
-
----
- yesod-persistent.cabal | 10 ----------
- 1 file changed, 10 deletions(-)
-
-diff --git a/yesod-persistent.cabal b/yesod-persistent.cabal
-index b116f3a..017b184 100644
---- a/yesod-persistent.cabal
-+++ b/yesod-persistent.cabal
-@@ -14,16 +14,6 @@ description:     Some helpers for using Persistent from Yesod.
- 
- library
-     build-depends:   base                      >= 4        && < 5
--                   , yesod-core                >= 1.2.2    && < 1.3
--                   , persistent                >= 1.2      && < 2.1
--                   , persistent-template       >= 1.2      && < 2.1
--                   , transformers              >= 0.2.2
--                   , blaze-builder
--                   , conduit
--                   , resourcet                 >= 0.4.5
--                   , resource-pool
--    exposed-modules: Yesod.Persist
--                     Yesod.Persist.Core
-     ghc-options:     -Wall
- 
- test-suite test
--- 
-2.1.1
-
diff --git a/standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch b/standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From 8ba08c0efc035486a65f2fd33916a5da7e5210e7 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 26 Dec 2013 19:32:55 -0400
-Subject: [PATCH] remove TH
-
----
- Yesod/Routes/Parse.hs    |   40 +++++-----------------------------------
- Yesod/Routes/TH.hs       |   16 ++++++++--------
- Yesod/Routes/TH/Types.hs |   16 ----------------
- yesod-routes.cabal       |    4 ----
- 4 files changed, 13 insertions(+), 63 deletions(-)
-
-diff --git a/Yesod/Routes/Parse.hs b/Yesod/Routes/Parse.hs
-index 232982d..7df7750 100644
---- a/Yesod/Routes/Parse.hs
-+++ b/Yesod/Routes/Parse.hs
-@@ -2,11 +2,11 @@
- {-# LANGUAGE DeriveDataTypeable #-}
- {-# OPTIONS_GHC -fno-warn-missing-fields #-} -- QuasiQuoter
- module Yesod.Routes.Parse
--    ( parseRoutes
--    , parseRoutesFile
--    , parseRoutesNoCheck
--    , parseRoutesFileNoCheck
--    , parseType
-+    --( parseRoutes
-+    --, parseRoutesFile
-+    --, parseRoutesNoCheck
-+    --, parseRoutesFileNoCheck
-+    ( parseType
-     , parseTypeTree
-     , TypeTree (..)
-     ) where
-@@ -19,42 +19,12 @@ import Yesod.Routes.TH
- import Yesod.Routes.Overlap (findOverlapNames)
- import Data.List (foldl')
- 
---- | A quasi-quoter to parse a string into a list of 'Resource's. Checks for
---- overlapping routes, failing if present; use 'parseRoutesNoCheck' to skip the
---- checking. See documentation site for details on syntax.
--parseRoutes :: QuasiQuoter
--parseRoutes = QuasiQuoter { quoteExp = x }
--  where
--    x s = do
--        let res = resourcesFromString s
--        case findOverlapNames res of
--            [] -> lift res
--            z -> error $ unlines $ "Overlapping routes: " : map show z
--
--parseRoutesFile :: FilePath -> Q Exp
--parseRoutesFile = parseRoutesFileWith parseRoutes
--
--parseRoutesFileNoCheck :: FilePath -> Q Exp
--parseRoutesFileNoCheck = parseRoutesFileWith parseRoutesNoCheck
--
--parseRoutesFileWith :: QuasiQuoter -> FilePath -> Q Exp
--parseRoutesFileWith qq fp = do
--    qAddDependentFile fp
--    s <- qRunIO $ readUtf8File fp
--    quoteExp qq s
--
- readUtf8File :: FilePath -> IO String
- readUtf8File fp = do
-     h <- SIO.openFile fp SIO.ReadMode
-     SIO.hSetEncoding h SIO.utf8_bom
-     SIO.hGetContents h
- 
---- | Same as 'parseRoutes', but performs no overlap checking.
--parseRoutesNoCheck :: QuasiQuoter
--parseRoutesNoCheck = QuasiQuoter
--    { quoteExp = lift . resourcesFromString
--    }
--
- -- | Convert a multi-line string to a set of resources. See documentation for
- -- the format of this string. This is a partial function which calls 'error' on
- -- invalid input.
-diff --git a/Yesod/Routes/TH.hs b/Yesod/Routes/TH.hs
-index 7b2e50b..b05fc57 100644
---- a/Yesod/Routes/TH.hs
-+++ b/Yesod/Routes/TH.hs
-@@ -2,15 +2,15 @@
- module Yesod.Routes.TH
-     ( module Yesod.Routes.TH.Types
-       -- * Functions
--    , module Yesod.Routes.TH.RenderRoute
--    , module Yesod.Routes.TH.ParseRoute
--    , module Yesod.Routes.TH.RouteAttrs
-+    -- , module Yesod.Routes.TH.RenderRoute
-+    -- , module Yesod.Routes.TH.ParseRoute
-+    -- , module Yesod.Routes.TH.RouteAttrs
-       -- ** Dispatch
--    , module Yesod.Routes.TH.Dispatch
-+    -- , module Yesod.Routes.TH.Dispatch
-     ) where
- 
- import Yesod.Routes.TH.Types
--import Yesod.Routes.TH.RenderRoute
--import Yesod.Routes.TH.ParseRoute
--import Yesod.Routes.TH.RouteAttrs
--import Yesod.Routes.TH.Dispatch
-+--import Yesod.Routes.TH.RenderRoute
-+--import Yesod.Routes.TH.ParseRoute
-+--import Yesod.Routes.TH.RouteAttrs
-+--import Yesod.Routes.TH.Dispatch
-diff --git a/Yesod/Routes/TH/Types.hs b/Yesod/Routes/TH/Types.hs
-index d0a0405..3232e99 100644
---- a/Yesod/Routes/TH/Types.hs
-+++ b/Yesod/Routes/TH/Types.hs
-@@ -31,10 +31,6 @@ instance Functor ResourceTree where
-     fmap f (ResourceLeaf r) = ResourceLeaf (fmap f r)
-     fmap f (ResourceParent a b c) = ResourceParent a (map (second $ fmap f) b) $ map (fmap f) c
- 
--instance Lift t => Lift (ResourceTree t) where
--    lift (ResourceLeaf r) = [|ResourceLeaf $(lift r)|]
--    lift (ResourceParent a b c) = [|ResourceParent $(lift a) $(lift b) $(lift c)|]
--
- data Resource typ = Resource
-     { resourceName :: String
-     , resourcePieces :: [(CheckOverlap, Piece typ)]
-@@ -48,9 +44,6 @@ type CheckOverlap = Bool
- instance Functor Resource where
-     fmap f (Resource a b c d) = Resource a (map (second $ fmap f) b) (fmap f c) d
- 
--instance Lift t => Lift (Resource t) where
--    lift (Resource a b c d) = [|Resource a b c d|]
--
- data Piece typ = Static String | Dynamic typ
-     deriving Show
- 
-@@ -58,10 +51,6 @@ instance Functor Piece where
-     fmap _ (Static s) = (Static s)
-     fmap f (Dynamic t) = Dynamic (f t)
- 
--instance Lift t => Lift (Piece t) where
--    lift (Static s) = [|Static $(lift s)|]
--    lift (Dynamic t) = [|Dynamic $(lift t)|]
--
- data Dispatch typ =
-     Methods
-         { methodsMulti :: Maybe typ -- ^ type of the multi piece at the end
-@@ -77,11 +66,6 @@ instance Functor Dispatch where
-     fmap f (Methods a b) = Methods (fmap f a) b
-     fmap f (Subsite a b) = Subsite (f a) b
- 
--instance Lift t => Lift (Dispatch t) where
--    lift (Methods Nothing b) = [|Methods Nothing $(lift b)|]
--    lift (Methods (Just t) b) = [|Methods (Just $(lift t)) $(lift b)|]
--    lift (Subsite t b) = [|Subsite $(lift t) $(lift b)|]
--
- resourceMulti :: Resource typ -> Maybe typ
- resourceMulti Resource { resourceDispatch = Methods (Just t) _ } = Just t
- resourceMulti _ = Nothing
-diff --git a/yesod-routes.cabal b/yesod-routes.cabal
-index 61980d1..33d2380 100644
---- a/yesod-routes.cabal
-+++ b/yesod-routes.cabal
-@@ -27,10 +27,6 @@ library
-                      Yesod.Routes.Class
-                      Yesod.Routes.Parse
-                      Yesod.Routes.Overlap
--    other-modules:   Yesod.Routes.TH.Dispatch
--                     Yesod.Routes.TH.RenderRoute
--                     Yesod.Routes.TH.ParseRoute
--                     Yesod.Routes.TH.RouteAttrs
-                      Yesod.Routes.TH.Types
-     ghc-options:     -Wall
- 
--- 
-1.7.10.4
-
diff --git a/standalone/no-th/haskell-patches/yesod-static_hack.patch b/standalone/no-th/haskell-patches/yesod-static_hack.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/yesod-static_hack.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-From 606c5f4f4b2d476d274907eb2bb8c12b60fc451f Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Wed, 21 May 2014 04:43:30 +0000
-Subject: [PATCH] remove TH
-
----
- Yesod/EmbeddedStatic/Generators.hs |  3 +--
- Yesod/Static.hs                    | 29 ++++++++++++++++++-----------
- yesod-static.cabal                 |  9 ---------
- 3 files changed, 19 insertions(+), 22 deletions(-)
-
-diff --git a/Yesod/EmbeddedStatic/Generators.hs b/Yesod/EmbeddedStatic/Generators.hs
-index 08febb9..e3a6d51 100644
---- a/Yesod/EmbeddedStatic/Generators.hs
-+++ b/Yesod/EmbeddedStatic/Generators.hs
-@@ -42,7 +42,6 @@ import Language.Haskell.TH
- import Network.Mime (defaultMimeLookup)
- import System.Directory (doesDirectoryExist, getDirectoryContents, findExecutable)
- import System.FilePath ((</>))
--import Text.Jasmine (minifym)
- import qualified Data.ByteString.Lazy as BL
- import qualified Data.Conduit.List as C
- import Data.Conduit.Binary (sourceHandle)
-@@ -162,7 +161,7 @@ concatFilesWith loc process files = do
- 
- -- | Convienient rexport of 'minifym' with a type signature to work with 'concatFilesWith'.
- jasmine :: BL.ByteString -> IO BL.ByteString
--jasmine ct = return $ either (const ct) id $ minifym ct
-+jasmine ct = return ct
- 
- -- | Use <https://github.com/mishoo/UglifyJS2 UglifyJS2> to compress javascript.
- -- Assumes @uglifyjs@ is located in the path and uses options @[\"-m\", \"-c\"]@
-diff --git a/Yesod/Static.hs b/Yesod/Static.hs
-index 725ebf4..33eaffd 100644
---- a/Yesod/Static.hs
-+++ b/Yesod/Static.hs
-@@ -37,8 +37,8 @@ module Yesod.Static
-     , staticDevel
-       -- * Combining CSS/JS
-       -- $combining
--    , combineStylesheets'
--    , combineScripts'
-+    --, combineStylesheets'
-+    --, combineScripts'
-       -- ** Settings
-     , CombineSettings
-     , csStaticDir
-@@ -48,13 +48,13 @@ module Yesod.Static
-     , csJsPreProcess
-     , csCombinedFolder
-       -- * Template Haskell helpers
--    , staticFiles
--    , staticFilesList
--    , publicFiles
-+    --, staticFiles
-+    --, staticFilesList
-+    --, publicFiles
-       -- * Hashing
-     , base64md5
-       -- * Embed
--    , embed
-+    --, embed
- #ifdef TEST_EXPORT
-     , getFileListPieces
- #endif
-@@ -64,7 +64,7 @@ import Prelude hiding (FilePath)
- import qualified Prelude
- import System.Directory
- import Control.Monad
--import Data.FileEmbed (embedDir)
-+import Data.FileEmbed
- 
- import Control.Monad.Trans.Resource (runResourceT)
- import Yesod.Core
-@@ -136,6 +136,7 @@ staticDevel dir = do
-     hashLookup <- cachedETagLookupDevel dir
-     return $ Static $ webAppSettingsWithLookup (F.decodeString dir) hashLookup
- 
-+{-
- -- | Produce a 'Static' based on embedding all of the static files' contents in the
- -- executable at compile time.
- --
-@@ -150,6 +151,7 @@ staticDevel dir = do
- -- This will cause yesod to embed those assets into the generated HTML file itself.
- embed :: Prelude.FilePath -> Q Exp
- embed fp = [|Static (embeddedSettings $(embedDir fp))|]
-+-}
- 
- instance RenderRoute Static where
-     -- | A route on the static subsite (see also 'staticFiles').
-@@ -215,6 +217,7 @@ getFileListPieces = flip evalStateT M.empty . flip go id
-                 put $ M.insert s s m
-                 return s
- 
-+{-
- -- | Template Haskell function that automatically creates routes
- -- for all of your static files.
- --
-@@ -267,7 +270,7 @@ staticFilesList dir fs =
- -- see if their copy is up-to-date.
- publicFiles :: Prelude.FilePath -> Q [Dec]
- publicFiles dir = mkStaticFiles' dir "StaticRoute" False
--
-+-}
- 
- mkHashMap :: Prelude.FilePath -> IO (M.Map F.FilePath S8.ByteString)
- mkHashMap dir = do
-@@ -310,6 +313,7 @@ cachedETagLookup dir = do
-     etags <- mkHashMap dir
-     return $ (\f -> return $ M.lookup f etags)
- 
-+{-
- mkStaticFiles :: Prelude.FilePath -> Q [Dec]
- mkStaticFiles fp = mkStaticFiles' fp "StaticRoute" True
- 
-@@ -357,6 +361,7 @@ mkStaticFilesList fp fs routeConName makeHash = do
-                 [ Clause [] (NormalB $ (ConE route) `AppE` f' `AppE` qs) []
-                 ]
-             ]
-+-}
- 
- base64md5File :: Prelude.FilePath -> IO String
- base64md5File = fmap (base64 . encode) . hashFile
-@@ -395,7 +400,7 @@ base64 = map tr
- -- single static file at compile time.
- 
- data CombineType = JS | CSS
--
-+{-
- combineStatics' :: CombineType
-                 -> CombineSettings
-                 -> [Route Static] -- ^ files to combine
-@@ -429,7 +434,7 @@ combineStatics' combineType CombineSettings {..} routes = do
-         case combineType of
-             JS -> "js"
-             CSS -> "css"
--
-+-}
- -- | Data type for holding all settings for combining files.
- --
- -- This data type is a settings type. For more information, see:
-@@ -505,6 +510,7 @@ instance Default CombineSettings where
- errorIntro :: [FilePath] -> [Char] -> [Char]
- errorIntro fps s = "Error minifying " ++ show fps ++ ": " ++ s
- 
-+{-
- liftRoutes :: [Route Static] -> Q Exp
- liftRoutes =
-     fmap ListE . mapM go
-@@ -551,4 +557,5 @@ combineScripts' :: Bool -- ^ development? if so, perform no combining
-                 -> Q Exp
- combineScripts' development cs con routes
-     | development = [| mapM_ (addScript . $(return $ ConE con)) $(liftRoutes routes) |]
--    | otherwise = [| addScript $ $(return $ ConE con) $(combineStatics' JS cs routes) |]
-+    | otherwise = [| addScript $ $(return $ ConE con) $(combineStatics' JS cs routes) |]a
-+-}
-diff --git a/yesod-static.cabal b/yesod-static.cabal
-index 2582a95..5df03b3 100644
---- a/yesod-static.cabal
-+++ b/yesod-static.cabal
-@@ -49,7 +49,6 @@ library
-                    , data-default
-                    , shakespeare-css       >= 1.0.3
-                    , mime-types            >= 0.1
--                   , hjsmin
-                    , filepath              >= 1.3
-                    , resourcet             >= 0.4
-                    , unordered-containers  >= 0.2
-@@ -62,13 +61,6 @@ library
-                    , hashable              >= 1.1
- 
-     exposed-modules: Yesod.Static
--                     Yesod.EmbeddedStatic
--                     Yesod.EmbeddedStatic.Generators
--                     Yesod.EmbeddedStatic.Types
--                     Yesod.EmbeddedStatic.Css.AbsoluteUrl
--
--    other-modules:   Yesod.EmbeddedStatic.Internal
--                     Yesod.EmbeddedStatic.Css.Util
- 
-     ghc-options:     -Wall
-     extensions: TemplateHaskell
-@@ -108,7 +100,6 @@ test-suite tests
-                    , data-default
-                    , shakespeare-css
-                    , mime-types
--                   , hjsmin
-                    , filepath
-                    , resourcet
-                    , unordered-containers
--- 
-2.0.0.rc2
-
diff --git a/standalone/no-th/haskell-patches/yesod_hack-TH.patch b/standalone/no-th/haskell-patches/yesod_hack-TH.patch
deleted file mode 100644
--- a/standalone/no-th/haskell-patches/yesod_hack-TH.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From 59091cd37958fee79b9e346fe3118d5ed7d0104b Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 16 Oct 2014 02:36:37 +0000
-Subject: [PATCH] hack TH
-
----
- Yesod.hs              | 19 ++++++++++++--
- Yesod/Default/Main.hs | 31 +----------------------
- Yesod/Default/Util.hs | 69 ++-------------------------------------------------
- 3 files changed, 20 insertions(+), 99 deletions(-)
-
-diff --git a/Yesod.hs b/Yesod.hs
-index b367144..fbe309c 100644
---- a/Yesod.hs
-+++ b/Yesod.hs
-@@ -5,9 +5,24 @@ module Yesod
-     ( -- * Re-exports from yesod-core
-       module Yesod.Core
-     , module Yesod.Form
--    , module Yesod.Persist
-+    , insertBy
-+    , replace
-+    , deleteBy
-+    , delete
-+    , insert 
-+    , Key
-     ) where
- 
- import Yesod.Core
- import Yesod.Form
--import Yesod.Persist
-+
-+-- These symbols are usually imported from persistent,
-+-- But it is not built on Android. Still export them
-+-- just so that hiding them will work.
-+data Key = DummyKey
-+insertBy = undefined
-+replace = undefined
-+deleteBy = undefined
-+delete = undefined
-+insert = undefined
-+
-diff --git a/Yesod/Default/Main.hs b/Yesod/Default/Main.hs
-index 565ed35..bf46642 100644
---- a/Yesod/Default/Main.hs
-+++ b/Yesod/Default/Main.hs
-@@ -1,10 +1,8 @@
- {-# LANGUAGE CPP                #-}
- {-# LANGUAGE DeriveDataTypeable #-}
- {-# LANGUAGE OverloadedStrings  #-}
--{-# LANGUAGE TemplateHaskell    #-}
- module Yesod.Default.Main
-     ( defaultMain
--    , defaultMainLog
-     , defaultRunner
-     , defaultDevelApp
-     , LogFunc
-@@ -23,7 +21,7 @@ import Control.Monad (when)
- import System.Environment (getEnvironment)
- import Data.Maybe (fromMaybe)
- import Safe (readMay)
--import Control.Monad.Logger (Loc, LogSource, LogLevel (LevelError), liftLoc)
-+import Control.Monad.Logger (Loc, LogSource, LogLevel (LevelError))
- import System.Log.FastLogger (LogStr, toLogStr)
- import Language.Haskell.TH.Syntax (qLocation)
- 
-@@ -55,33 +53,6 @@ defaultMain load getApp = do
- 
- type LogFunc = Loc -> LogSource -> LogLevel -> LogStr -> IO ()
- 
---- | Same as @defaultMain@, but gets a logging function back as well as an
---- @Application@ to install Warp exception handlers.
----
---- Since 1.2.5
--defaultMainLog :: (Show env, Read env)
--               => IO (AppConfig env extra)
--               -> (AppConfig env extra -> IO (Application, LogFunc))
--               -> IO ()
--defaultMainLog load getApp = do
--    config <- load
--    (app, logFunc) <- getApp config
--    runSettings defaultSettings
--        { settingsPort = appPort config
--        , settingsHost = appHost config
--        , settingsOnException = const $ \e -> when (shouldLog' e) $ logFunc
--            $(qLocation >>= liftLoc)
--            "yesod"
--            LevelError
--            (toLogStr $ "Exception from Warp: " ++ show e)
--        } app
--  where
--    shouldLog' =
--#if MIN_VERSION_warp(2,1,3)
--        Warp.defaultShouldDisplayException
--#else
--        const True
--#endif
- 
- -- | Run your application continously, listening for SIGINT and exiting
- --   when received
-diff --git a/Yesod/Default/Util.hs b/Yesod/Default/Util.hs
-index a10358e..0547424 100644
---- a/Yesod/Default/Util.hs
-+++ b/Yesod/Default/Util.hs
-@@ -5,10 +5,9 @@
- module Yesod.Default.Util
-     ( addStaticContentExternal
-     , globFile
--    , widgetFileNoReload
--    , widgetFileReload
-+    --, widgetFileNoReload
-+    --, widgetFileReload
-     , TemplateLanguage (..)
--    , defaultTemplateLanguages
-     , WidgetFileSettings
-     , wfsLanguages
-     , wfsHamletSettings
-@@ -20,9 +19,6 @@ import Yesod.Core -- purposely using complete import so that Haddock will see ad
- import Control.Monad (when, unless)
- import System.Directory (doesFileExist, createDirectoryIfMissing)
- import Language.Haskell.TH.Syntax
--import Text.Lucius (luciusFile, luciusFileReload)
--import Text.Julius (juliusFile, juliusFileReload)
--import Text.Cassius (cassiusFile, cassiusFileReload)
- import Text.Hamlet (HamletSettings, defaultHamletSettings)
- import Data.Maybe (catMaybes)
- import Data.Default (Default (def))
-@@ -69,68 +65,7 @@ data TemplateLanguage = TemplateLanguage
-     , tlReload :: FilePath -> Q Exp
-     }
- 
--defaultTemplateLanguages :: HamletSettings -> [TemplateLanguage]
--defaultTemplateLanguages hset =
--    [ TemplateLanguage False "hamlet"  whamletFile' whamletFile'
--    , TemplateLanguage True  "cassius" cassiusFile  cassiusFileReload
--    , TemplateLanguage True  "julius"  juliusFile   juliusFileReload
--    , TemplateLanguage True  "lucius"  luciusFile   luciusFileReload
--    ]
--  where
--    whamletFile' = whamletFileWithSettings hset
--
- data WidgetFileSettings = WidgetFileSettings
-     { wfsLanguages :: HamletSettings -> [TemplateLanguage]
-     , wfsHamletSettings :: HamletSettings
-     }
--
--instance Default WidgetFileSettings where
--    def = WidgetFileSettings defaultTemplateLanguages defaultHamletSettings
--
--widgetFileNoReload :: WidgetFileSettings -> FilePath -> Q Exp
--widgetFileNoReload wfs x = combine "widgetFileNoReload" x False $ wfsLanguages wfs $ wfsHamletSettings wfs
--
--widgetFileReload :: WidgetFileSettings -> FilePath -> Q Exp
--widgetFileReload wfs x = combine "widgetFileReload" x True $ wfsLanguages wfs $ wfsHamletSettings wfs
--
--combine :: String -> String -> Bool -> [TemplateLanguage] -> Q Exp
--combine func file isReload tls = do
--    mexps <- qmexps
--    case catMaybes mexps of
--        [] -> error $ concat
--            [ "Called "
--            , func
--            , " on "
--            , show file
--            , ", but no template were found."
--            ]
--        exps -> return $ DoE $ map NoBindS exps
--  where
--    qmexps :: Q [Maybe Exp]
--    qmexps = mapM go tls
--
--    go :: TemplateLanguage -> Q (Maybe Exp)
--    go tl = whenExists file (tlRequiresToWidget tl) (tlExtension tl) ((if isReload then tlReload else tlNoReload) tl)
--
--whenExists :: String
--           -> Bool -- ^ requires toWidget wrap
--           -> String -> (FilePath -> Q Exp) -> Q (Maybe Exp)
--whenExists = warnUnlessExists False
--
--warnUnlessExists :: Bool
--                 -> String
--                 -> Bool -- ^ requires toWidget wrap
--                 -> String -> (FilePath -> Q Exp) -> Q (Maybe Exp)
--warnUnlessExists shouldWarn x wrap glob f = do
--    let fn = globFile glob x
--    e <- qRunIO $ doesFileExist fn
--    when (shouldWarn && not e) $ qRunIO $ putStrLn $ "widget file not found: " ++ fn
--    if e
--        then do
--            ex <- f fn
--            if wrap
--                then do
--                    tw <- [|toWidget|]
--                    return $ Just $ tw `AppE` ex
--                else return $ Just ex
--        else return Nothing
--- 
-2.1.1
-
diff --git a/standalone/osx/git-annex.app/Contents/Info.plist b/standalone/osx/git-annex.app/Contents/Info.plist
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/Info.plist
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>git-annex-webapp</string>
-	<key>NSHumanReadableCopyright</key>
-	<string>GPL 3</string>
-	<key>CFBundleGetInfoString</key>
-	<string>0.0.1</string>
-	<key>CFBundleIconFile</key>
-	<string>git-annex</string>
-	<key>CFBundleIdentifier</key>
-	<string>com.branchable.git-annex</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>GIT-ANNEX</string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>0.0.1</string>
-	<key>CFBundleSignature</key>
-	<string>git-annex</string>
-	<key>CFBundleVersion</key>
-	<string>0.0.1</string>
-	<key>LSMinimumSystemVersion</key>
-	<string>10.5</string>
-	<key>CFBundleDisplayName</key>
-	<string>Start git-annex webapp</string>
-	<key>LSMinimumSystemVersionByArchitecture</key>
-	<dict>
-		<key>i386</key>
-		<string>10.5.0</string>
-		<key>x86_64</key>
-		<string>10.6.0</string>
-	</dict>
-</dict>
-</plist>
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/README b/standalone/osx/git-annex.app/Contents/MacOS/README
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/README
+++ /dev/null
@@ -1,9 +0,0 @@
-This is a app bundle for git-annex. Most users are going to want to
-just click on the icon to start up the git-annex webapp.
-
-To use git-annex at the command line, you can put the directory containing
-this README into your PATH.
-
-Or, you can use the runshell script in this directory to start a shell
-that is configured to use git-annex and the other utilities included in
-this bundle, including git, gpg, rsync, ssh, etc.
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git b/standalone/osx/git-annex.app/Contents/MacOS/git
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/git
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git "$@"
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-annex b/standalone/osx/git-annex.app/Contents/MacOS/git-annex
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/git-annex
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-annex "$@"
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-shell b/standalone/osx/git-annex.app/Contents/MacOS/git-annex-shell
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-shell
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-annex-shell "$@"
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-webapp b/standalone/osx/git-annex.app/Contents/MacOS/git-annex-webapp
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/git-annex-webapp
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-link="$(readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-# OSX wants this to run in the background.
-exec "$base/runshell" git-annex webapp "$@" &
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-receive-pack b/standalone/osx/git-annex.app/Contents/MacOS/git-receive-pack
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/git-receive-pack
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-receive-pack "$@"
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-shell b/standalone/osx/git-annex.app/Contents/MacOS/git-shell
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/git-shell
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-shell "$@"
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/git-upload-pack b/standalone/osx/git-annex.app/Contents/MacOS/git-upload-pack
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/git-upload-pack
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-link="$(readlink "$0")" || true
-if [ -n "$link" ]; then
-	base="$(dirname "$link")"
-else
-	base="$(dirname "$0")"
-fi
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-if [ ! -e "$base/runshell" ]; then
-	echo "** cannot find $base/runshell" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# If this is a standalone app, set a variable that git-annex can use to
-# install itself.
-if [ -e "$base/git-annex" ]; then
-	GIT_ANNEX_APP_BASE="$base"
-	export GIT_ANNEX_APP_BASE
-fi
-
-exec "$base/runshell" git-upload-pack "$@"
diff --git a/standalone/osx/git-annex.app/Contents/MacOS/runshell b/standalone/osx/git-annex.app/Contents/MacOS/runshell
deleted file mode 100644
--- a/standalone/osx/git-annex.app/Contents/MacOS/runshell
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/sh
-# Runs a shell command (or interactive shell) using the binaries 
-# bundled with this app.
-
-set -e
-
-base="$(dirname "$0")"
-
-if [ ! -d "$base" ]; then
-	echo "** cannot find base directory (I seem to be $0)" >&2
-	exit 1
-fi
-
-bundle="$base/bundle"
-
-if [ ! -e "$bundle/git-annex" ]; then
-	echo "** bundle directory $bundle does not contain git-annex" >&2
-	exit 1
-fi
-if [ ! -e "$bundle/git" ]; then
-	echo "** bundle directory $bundle does not contain git" >&2
-	exit 1
-fi
-
-# Get absolute path to base, to avoid breakage when things change directories.
-orig="$(pwd)"
-cd "$base"
-base="$(pwd)"
-cd "$orig"
-
-# Install shim that's used to run git-annex-shell from ssh authorized_keys.
-# The assistant also does this when run, but the user may not be using the
-# assistant.
-if [ ! -e "$HOME/.ssh/git-annex-shell" ]; then
-	mkdir "$HOME/.ssh" >/dev/null 2>&1 || true
-	if [ -e "$HOME/.ssh" ]; then
-		(
-			echo "#!/bin/sh"
-			echo "set -e"
-			echo "if [ \"x\$SSH_ORIGINAL_COMMAND\" != \"x\" ]; then"
-			echo "exec '$base/runshell' git-annex-shell -c \"\$SSH_ORIGINAL_COMMAND\""
-			echo "else"
-			echo "exec '$base/runshell' git-annex-shell -c \"\$@\""
-			echo "fi"
-		) > "$HOME/.ssh/git-annex-shell"
-		chmod +x "$HOME/.ssh/git-annex-shell"
-	fi
-fi
-
-# And this shim is used by the webapp when adding a remote ssh server.
-if [ ! -e "$HOME/.ssh/git-annex-wrapper" ]; then
-	mkdir "$HOME/.ssh" >/dev/null 2>&1 || true
-	if [ -e "$HOME/.ssh" ]; then
-		(
-			echo "#!/bin/sh"
-			echo "set -e"
-			echo "exec '$base/runshell' \"\$@\""
-		) > "$HOME/.ssh/git-annex-wrapper"
-		chmod +x "$HOME/.ssh/git-annex-wrapper"
-	fi
-fi
-
-# Put our binaries first, to avoid issues with out of date or incompatable
-# system binaries. Extra binaries come after system path.
-ORIG_PATH="$PATH"
-export ORIG_PATH
-PATH="$bundle:$PATH:$bundle/extra"
-export PATH
-
-ORIG_GIT_EXEC_PATH="$GIT_EXEC_PATH"
-export ORIG_GIT_EXEC_PATH
-GIT_EXEC_PATH="$bundle"
-export GIT_EXEC_PATH
-
-ORIG_GIT_TEMPLATE_DIR="$GIT_TEMPLATE_DIR"
-export ORIG_GIT_TEMPLATE_DIR
-GIT_TEMPLATE_DIR="$bundle/templates"
-export GIT_TEMPLATE_DIR
-
-GIT_ANNEX_DIR="$bundle"
-export GIT_ANNEX_DIR
-
-# Indicate which variables were exported above and should be cleaned
-# when running non-bundled programs.
-GIT_ANNEX_STANDLONE_ENV="PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR"
-export GIT_ANNEX_STANDLONE_ENV
-
-if [ "$1" ]; then
-	cmd="$1"
-	shift 1
-	exec "$cmd" "$@"
-else
-	$SHELL
-fi
diff --git a/standalone/osx/git-annex.app/Contents/Resources/git-annex.icns b/standalone/osx/git-annex.app/Contents/Resources/git-annex.icns
deleted file mode 100644
Binary files a/standalone/osx/git-annex.app/Contents/Resources/git-annex.icns and /dev/null differ
diff --git a/standalone/trustedkeys.gpg b/standalone/trustedkeys.gpg
deleted file mode 100644
Binary files a/standalone/trustedkeys.gpg and /dev/null differ
diff --git a/standalone/windows/build-simple.sh b/standalone/windows/build-simple.sh
deleted file mode 100644
--- a/standalone/windows/build-simple.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-# Script to build git-annex on windows. Run by build.bat
-
-set -e
-set -x
-
-PATH="/c/Program Files/Git/cmd:/c/Program Files/NSIS:$PATH"
-
-# Run a command with the cygwin environment available.
-# However, programs not from cygwin are preferred.
-withcyg () {
-	PATH="$PATH:/c/cygwin/bin" "$@"
-}
-withcygpreferred () {
-	PATH="/c/cygwin/bin:$PATH" "$@"
-}
-
-# Install haskell dependencies.
-# cabal install is not run in cygwin, because we don't want configure scripts
-# for haskell libraries to link them with the cygwin library.
-if ! cabal install --only-dependencies; then
-	cabal update || true
-	cabal install --only-dependencies
-fi
-
-# Build git-annex
-if [ ! -e "dist/setup-config" ]; then
-	withcyg cabal configure
-fi
-if ! withcyg cabal build; then
-	ghc --make Build/EvilLinker -fno-warn-tabs
-	withcyg Build/EvilLinker
-fi
-
-# Build the installer
-cabal install nsis
-ghc --make Build/NullSoftInstaller.hs -fno-warn-tabs
-PATH="$PATH:/cygdrive/c/Program Files/NSIS" Build/NullSoftInstaller.exe
diff --git a/standalone/windows/build.sh b/standalone/windows/build.sh
deleted file mode 100644
--- a/standalone/windows/build.sh
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/sh
-# 
-# This script is run by the jenkins autobuilder, in a mingw environment,
-# to build git-annex for Windows.
-
-set -x
-set -e
-
-# Path to the Haskell Platform.
-#HP="/c/haskell/2014.2.0.0" # now in the default PATH
-
-PATH="/c/Program Files (x86)/NSIS:/c/msysgit/cmd:/c/msysgit/bin:$PATH"
-
-# Run a command with the cygwin environment available.
-# However, programs not from cygwin are preferred.
-withcyg () {
-	PATH="$PATH:/c/cygwin/bin" "$@"
-}
-
-# This tells git-annex where to upgrade itself from.
-UPGRADE_LOCATION=http://downloads.kitenet.net/git-annex/windows/current/git-annex-installer.exe
-export UPGRADE_LOCATION
-
-# This can be used to force git-annex to build supporting a particular
-# version of git, instead of the version installed at build time.
-#FORCE_GIT_VERSION=1.9.5
-#export FORCE_GIT_VERSION
-
-# Uncomment to get rid of cabal installed libraries.
-#rm -rf /c/Users/jenkins/AppData/Roaming/cabal /c/Users/jenkins/AppData/Roaming/ghc
-
-# Don't allow build artifact from a past successful build to be extracted
-# if we fail.
-rm -f git-annex-installer.exe
-
-# Install haskell dependencies.
-# cabal install is not run in cygwin, because we don't want configure scripts
-# for haskell libraries to link them with the cygwin library.
-cabal update || true
-
-cabal install warp-3.1.3.1
-
-cabal install --only-dependencies || true
-
-# Detect when the last build was an incremental build and failed, 
-# and try a full build. Done this way because this shell seems a bit
-# broken.
-if [ -e last-incremental-failed ]; then
-	cabal clean || true
-	# windows breakage..
-	rm -rf dist dist.old || mv -v dist dist.old
-fi
-touch last-incremental-failed
-
-# Build git-annex
-withcyg cabal configure
-if ! withcyg cabal build; then
-	rm -f Build/EvilLinker.exe
-	ghc --make Build/EvilLinker -fno-warn-tabs
-	Build/EvilLinker
-fi
-
-# Get extra programs to bundle with git-annex.
-# These are msys2 programs, from https://msys2.github.io/.
-# Since git for windows uses msys2, and includes its libraries,
-# these programs will work well with it.
-getextra () {
-	extrap="$1"
-	extrasha="$2"
-	curextrasha="$(withcyg sha1sum $extrap | sed 's/ .*//')"
-	if [ ! -e "$extrap" ] || [ "$curextrasha" != "$extrasha" ]; then
-		rm -f "$extrap" || true
-		withcyg wget https://downloads.kitenet.net/git-annex/windows/assets/$extrap
-		curextrasha="$(withcyg sha1sum $extrap | sed 's/ .*//')"
-		if [ "$curextrasha" != "$extrasha" ]; then
-			rm -f "$extrap"
-			echo "CHECKSUM FAILURE" >&2
-			exit 1
-		fi
-		withcyg chmod +x $extrap
-	fi
-}
-getextra rsync.exe 85cb7a4d16d274fcf8069b39042965ad26abd6aa
-getextra wget.exe 044380729200d5762965b10123a4f134806b01cf
-
-# Build the installer
-cabal install nsis
-ghc -fforce-recomp --make Build/NullSoftInstaller.hs -fno-warn-tabs
-PATH=".:/c/cygwin/bin:$PATH" Build/NullSoftInstaller.exe
-
-rm -f last-incremental-failed
-
-rm -f dist/build-version
-ghc --make Build/BuildVersion.hs
-Build/BuildVersion > dist/build-version
-
-# Test git-annex
-# The test is run in c:/WINDOWS/Temp, because running it in the autobuilder
-# directory runs afoul of Windows's short PATH_MAX.
-PATH="$(pwd)/dist/build/git-annex/:$PATH"
-export PATH
-mkdir -p c:/WINDOWS/Temp/git-annex-test/
-cd c:/WINDOWS/Temp/git-annex-test/
-rm -rf .t
-withcyg git-annex.exe test
