summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--Upgrade/V1.hs44
-rw-r--r--debian/changelog16
-rw-r--r--doc/bugs/backend_version_upgrade_leaves_repo_unusable.mdwn39
-rw-r--r--doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn6
-rw-r--r--doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_2_174952fc3e3be12912e5fcfe78f2dd13._comment185
-rw-r--r--doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_3_a18ada7ac74c63be5753fdb2fe68dae5._comment18
-rw-r--r--doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn13
-rw-r--r--doc/forum/relying_on_git_for_numcopies.mdwn2
-rw-r--r--doc/forum/wishlist:_git_backend_for_git-annex.mdwn7
-rw-r--r--doc/news/version_0.20110328.mdwn11
-rw-r--r--doc/news/version_0.24.mdwn12
12 files changed, 317 insertions, 37 deletions
diff --git a/Makefile b/Makefile
index e1aaf8ec3..8e1664503 100644
--- a/Makefile
+++ b/Makefile
@@ -58,6 +58,7 @@ docs: $(mans)
--no-usedirs --disable-plugin=openid --plugin=sidebar \
--underlaydir=/dev/null --disable-plugin=shortcut \
--disable-plugin=smiley \
+ --plugin=comments --set comments_pagespec="*" \
--exclude='news/.*'
clean:
diff --git a/Upgrade/V1.hs b/Upgrade/V1.hs
index a87614222..4ce2612d6 100644
--- a/Upgrade/V1.hs
+++ b/Upgrade/V1.hs
@@ -16,6 +16,7 @@ import System.FilePath
import Data.String.Utils
import System.Posix.Types
import Data.Maybe
+import Data.Char
import Key
import Content
@@ -79,12 +80,11 @@ upgrade = do
moveContent :: Annex ()
moveContent = do
showNote "moving content..."
- keys <- getKeysPresent1
- forM_ keys move
+ files <- getKeyFilesPresent1
+ forM_ files move
where
- move k = do
- g <- Annex.gitRepo
- let f = gitAnnexObjectDir g </> keyFile1 k </> keyFile1 k
+ move f = do
+ let k = fileKey1 (takeFileName f)
let d = parentDir f
liftIO $ allowWrite d
liftIO $ allowWrite f
@@ -154,8 +154,15 @@ oldlog2key l =
-- WORM backend keys: "WORM:mtime:size:filename"
-- all the rest: "backend:key"
+--
+-- If the file looks like "WORM:XXX-...", then it was created by mixing
+-- v2 and v1; that infelicity is worked around by treating the value
+-- as the v2 key that it is.
readKey1 :: String -> Key
-readKey1 v = Key { keyName = n , keyBackendName = b, keySize = s, keyMtime = t }
+readKey1 v =
+ if mixup
+ then fromJust $ readKey $ join ":" $ tail bits
+ else Key { keyName = n , keyBackendName = b, keySize = s, keyMtime = t }
where
bits = split ":" v
b = head bits
@@ -166,7 +173,8 @@ readKey1 v = Key { keyName = n , keyBackendName = b, keySize = s, keyMtime = t }
s = if wormy
then Just (read (bits !! 2) :: Integer)
else Nothing
- wormy = b == "WORM"
+ wormy = head bits == "WORM"
+ mixup = wormy && (isUpper $ head $ bits !! 1)
showKey1 :: Key -> String
showKey1 Key { keyName = n , keyBackendName = b, keySize = s, keyMtime = t } =
@@ -211,24 +219,22 @@ lookupFile1 file = do
skip = "skipping " ++ file ++
" (unknown backend " ++ bname ++ ")"
-getKeysPresent1 :: Annex [Key]
-getKeysPresent1 = do
+getKeyFilesPresent1 :: Annex [FilePath]
+getKeyFilesPresent1 = do
g <- Annex.gitRepo
- getKeysPresent1' $ gitAnnexObjectDir g
-getKeysPresent1' :: FilePath -> Annex [Key]
-getKeysPresent1' dir = do
+ getKeyFilesPresent1' $ gitAnnexObjectDir g
+getKeyFilesPresent1' :: FilePath -> Annex [FilePath]
+getKeyFilesPresent1' dir = do
exists <- liftIO $ doesDirectoryExist dir
if (not exists)
then return []
else do
- contents <- liftIO $ getDirectoryContents dir
- files <- liftIO $ filterM present contents
- return $ map fileKey1 files
+ dirs <- liftIO $ getDirectoryContents dir
+ let files = map (\d -> dir ++ "/" ++ d ++ "/" ++ takeFileName d) dirs
+ liftIO $ filterM present files
where
- present d = do
- liftIO $ putStrLn $ dir ++ "/" ++ d ++ "/" ++ takeFileName d
- result <- try $
- getFileStatus $ dir ++ "/" ++ d ++ "/" ++ takeFileName d
+ present f = do
+ result <- try $ getFileStatus f
case result of
Right s -> return $ isRegularFile s
Left _ -> return False
diff --git a/debian/changelog b/debian/changelog
index 945a4ed6b..03a0091cb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,14 +1,22 @@
-git-annex (0.20110326) UNRELEASED; urgency=low
+git-annex (0.20110329) UNRELEASED; urgency=low
* Amazon S3 is now supported as a special type of remote.
+
+ -- Joey Hess <joeyh@debian.org> Sat, 26 Mar 2011 14:36:16 -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.
+ 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.
- * annex.diskreserve can be given in arbitrary units (ie "0.5 gigabytes")
+ * 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> Sat, 26 Mar 2011 14:36:16 -0400
+ -- Joey Hess <joeyh@debian.org> Mon, 28 Mar 2011 10:47:29 -0400
git-annex (0.20110325) experimental; urgency=low
diff --git a/doc/bugs/backend_version_upgrade_leaves_repo_unusable.mdwn b/doc/bugs/backend_version_upgrade_leaves_repo_unusable.mdwn
index 1218b0e51..122224a8f 100644
--- a/doc/bugs/backend_version_upgrade_leaves_repo_unusable.mdwn
+++ b/doc/bugs/backend_version_upgrade_leaves_repo_unusable.mdwn
@@ -1,6 +1,10 @@
foo is a local repo, bar is a bare remote.
-I upgraded foo's git-annex to 0.20110325 and upgraded a local repo backend to version 2. I then ran `git annex copy . --to bar` and checked the remote. This created WORM:SHA512--123123 files in annex/objects. Understandable but unwanted. So I upgraded git-annex on bar's machine, as well.
+I upgraded foo's git-annex to 0.20110325 and upgraded a local repo backend
+to version 2. I then ran `git annex copy . --to bar` and checked the
+remote. This created WORM:SHA512--123123 files in annex/objects.
+Understandable but unwanted. So I upgraded git-annex on bar's machine, as
+well.
% git annex copy . --to bar
copy quux (checking bar) git-annex-shell: Repository version 1 is not supported. Upgrade this repository: git-annex upgrade (to bar)
@@ -33,3 +37,36 @@ Running the copy job again, I am still getting the same error as above (as expec
> joey@kitenet.net if you don't want to post them here. --[[Joey]]
>> Sent. -- RichiH
+
+>>> Ok, I'm going to go work on my reading comprehension. I see now
+>>> that you
+>>> explained the problem pretty well. The problem is caused by these
+>>> few weird v1 mixed with v2 keys in the annex.
+>>> Ones like "annex/objects/WORM:SHA512--$sha512".
+>>>
+>>> That's a v1 key, but a corrupt form of the key; it's missing the
+>>> size and mtime fields that all WORM keys have in v1. And
+>>> the filename is itself a key, a v2 SHA512 key. These were
+>>> created when you did the `git annex copy to the v1 bare repo.
+>>> In v2, git-annex-shell takes a full key object, while in v1,
+>>> it takes a key name and a backend name. This incompatability
+>>> leads to the weird behavior seen.
+>>>
+>>> I had suggested you delete data.. don't. On second thought,
+>>> you shouldn't delete anything. I'll simply make the v2 upgrade
+>>> detect and work around this bug.
+>>> --[[Joey]]
+
+>>>> This should be fixed in current git. The scambled keys will be
+>>>> fixed up on upgrade. Thanks for your patience! [[done]] --[[Joey]]
+
+>>>>> I should stop reading your answers via git; by the time I got to
+>>>>> "second thoughts", I had already deleted the files & directories
+>>>>> in question, upgraded the bare repo and was busy uploading from my
+>>>>> local repo. I agree that taking care of this in the upgrade code
+>>>>> is the cleanest approach, by the way.
+>>>>> No need to thank me for my patience; thank you for your quickness!
+>>>>> RichiH
+>>>>>
+>>>>> PS: If I get a handle on the mtime issue in the SHA backend, git
+>>>>> annex will be pretty much perfect :)
diff --git a/doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn b/doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn
new file mode 100644
index 000000000..ec8b6d233
--- /dev/null
+++ b/doc/bugs/fsck__47__fix_should_check__47__fix_the_permissions_of_.git__47__annex.mdwn
@@ -0,0 +1,6 @@
+git annex carefully setup restrictive permissions of .git/annex directories and files.
+
+The fsck command should check that they are still correct.
+The fix command should fix them.
+
+PS: Thanks for this nice tool!
diff --git a/doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_2_174952fc3e3be12912e5fcfe78f2dd13._comment b/doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_2_174952fc3e3be12912e5fcfe78f2dd13._comment
new file mode 100644
index 000000000..6e6e5dc6b
--- /dev/null
+++ b/doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_2_174952fc3e3be12912e5fcfe78f2dd13._comment
@@ -0,0 +1,185 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
+ nickname="Jimmy"
+ subject="comment 2"
+ date="2011-03-28T15:09:45Z"
+ content="""
+I think I know how I got myself into this mess... I was on my mac workstation and I had just pulled in a change set from another repo on a linux workstation after I had a made a bunch of moves. here's a bit of a log of what happened...
+
+
+<pre>
+jtang@x00:~/sources $ git pull cports-devel master
+Warning: untrusted X11 forwarding setup failed: xauth key data not generated
+Warning: No xauth data; using fake authentication data for X11 forwarding.
+remote: Counting objects: 4195, done.
+remote: Compressing objects: 100% (1135/1135), done.
+remote: Total 2582 (delta 866), reused 2576 (delta 860)
+Receiving objects: 100% (2582/2582), 229.42 KiB | 111 KiB/s, done.
+Resolving deltas: 100% (866/866), completed with 9 local objects.
+From cports-devel:/home/people/jtang/sources
+ * branch master -> FETCH_HEAD
+Updating 319df99..ab0a98c
+error: Your local changes to the following files would be overwritten by merge:
+ .git-annex/09/5X/WORM-s361516678-m1301310614--l_fcompxe_intel64_2011.2.137.tgz.log
+ .git-annex/43/2g/WORM-s19509673-m1301310496--l_fcompxe_2011.2.137_redist.tgz.log
+ .git-annex/4J/qF/WORM-s18891115-m1301310934--w_flm_p_1.0.011_ia64.zip.log
+ .git-annex/87/w1/WORM-s12212473-m1301310909--w_flm_p_1.0.011_ia32.zip.log
+ .git-annex/99/Jq/WORM-s194345957-m1301310926--l_mkl_10.3.2.137_ia32.log
+ .git-annex/99/kf/WORM-s9784531-m1301311680--l_ccompxe_2011.2.137_redist.log
+ .git-annex/FF/f3/WORM-s93033394-m1301311706--l_gen_ipp_7.0.2.137.log
+ .git-annex/MF/xZ/WORM-s515140733-m1301310936--l_cprof_p_11.1.075.log
+ .git-annex/XW/X8/WORM-s355559731-m1301310797--l_mkl_10.3.2.137.log
+ .git-annex/fJ/mZ/WORM-s1372886477-m1301313368--l_cproc_p_11.1.075.log
+ .git-annex/j7/Q9/WORM-s44423202-m1301310622--l_cprof_p_11.1.075_redist.log
+ .git-annex/k4/K7/WORM-s239539070-m1301310760--l_mkl_10.3.2.137_intel64.log
+ .git-annex/kz/01/WORM-s279573314-m1301310783--l_cprof_p_11.1.075_ia32.log
+ .git-annex/p6/Kq/WORM-s31199343-m1301311829--l_cproc_p_11.1.075_redist.log
+ .git-annex/pz/J5/WORM-s626995277-m1301312301--l_ccompxe_ia32_2011.2.137.log
+ .git-annex/v3/kX/WORM-s339693045-m1301310851--l_cprof_p_11.1.075_intel64.log
+Please, commit your changes or stash them before you can merge.
+error: Your local changes to the following files would be overwritten by merge:
+ .git-annex/12/3W/WORM-s3058814-m1276699694--Botan-1.8.9.tgz.log
+ .git-annex/1G/qV/WORM-s9122-m1251558854--Array-Compare-2.01.tar.gz.log
+ .git-annex/3W/W5/WORM-s231523-m1270740744--DBD-Pg-2.17.1.tar.gz.log
+ .git-annex/3x/PX/WORM-s380310-m1293025187--HTSeq-0.4.7.tar.gz.log
+ .git-annex/45/gk/WORM-s67337-m1248732018--ExtUtils-Install-1.54.tar.gz.log
+ .git-annex/4J/7Q/WORM-s8608-m1224694862--Algorithm-Munkres-0.08.tar.gz.log
+ .git-annex/4g/XQ/WORM-s89208-m1278682033--HTML-Parser-3.66.tar.gz.log
+ .git-annex/54/jw/WORM-s300163-m1226422051--AcePerl-1.92.tar.gz.log
+ .git-annex/63/kj/WORM-s1213460-m1262942058--DBD-SQLite-1.29.tar.gz.log
+ .git-annex/6Z/42/WORM-s4074-m943766010--File-Sync-0.09.tar.gz.log
+ .git-annex/8F/M5/WORM-s6989-m1263161127--Digest-HMAC-1.02.tar.gz.log
+ .git-annex/G2/FK/WORM-s3309-m1163872981--Bundle-BioPerl-2.1.8.tar.gz.log
+ .git-annex/Gk/XF/WORM-s23572243-m1279546902--EMBOSS-6.3.1.tar.gz.log
+ .git-annex/Jk/X6/WORM-s566429-m1279309002--DBI-1.612.tar.gz.log
+ .git-annex/K6/fV/WORM-s1561451-m1240055295--Convert-Binary-C-0.74.tar.gz.log
+ .git-annex/KM/4q/WORM-s146959-m1268515086--Graph-0.94.tar.gz.log
+ .git-annex/MF/m2/WORM-s425766-m1212514609--Data-Stag-0.11.tar.gz.log
+ .git-annex/QJ/P6/WORM-s1045868-m1282215033--9base-6.tar.gz.log
+ .git-annex/Qm/WG/WORM-s39078-m1278163547--Digest-SHA1-2.13.tar.gz.log
+ .git-annex/Wq/Fj/WORM-s45680640-m1297862101--BclConverter-1.7.1.tar.log
+ .git-annex/Wq/Wm/WORM-s263536640-m1295025537--CASAVA_v1.7.0.tar.log
+ .git-annex/XW/qm/WORM-s36609-m1276050470--Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz.log
+ .git-annex/f7/g0/WORM-s40872-m1278273227--ExtUtils-ParseXS-2.2206.tar.gz.log
+ .git-annex/j3/JF/WORM-s11753-m1232427595--Clone-0.31.tar.gz.log
+ .git-annex/kX/9g/WORM-s84690-m1229117599--GraphViz-2.04.tar.gz.log
+ .git-annex/km/z5/WORM-s44634-m1275505134--Authen-SASL-2.15.tar.gz.log
+ .git-annex/kw/J3/WORM-s132396-m1278780649--DBD-mysql-4.016.tar.gz.log
+ .git-annex/p5/1P/WORM-s53736-m1278673485--Archive-Tar-1.64.tar.gz.log
+ .git-annex/wv/zG/WORM-s30584-m1268774021--ExtUtils-CBuilder-0.2703.tar.gz.log
+ .git-annex/x5/7v/WORM-s10462526-m1254242591--BioPerl-1.6.1.tar.gz.log
+Please, commit your changes or stash them before you can merge.
+error: The following untracked working tree files would be overwritten by merge:
+ .git-annex/1g/X3/WORM-s309910751-m1301311322--l_fcompxe_ia32_2011.2.137.tgz.log
+ .git-annex/3w/Xf/WORM-s805764902-m1301312756--l_cproc_p_11.1.075_intel64.log
+ .git-annex/9Q/Wz/WORM-s1234430253-m1301311891--l_ccompxe_2011.2.137.log
+ .git-annex/FQ/4z/WORM-s318168323-m1301310848--l_cprof_p_11.1.075_ia64.log
+ .git-annex/FV/0P/WORM-s710135470-m1301311835--l_ccompxe_intel64_2011.2.137.log
+ .git-annex/Jx/qM/WORM-s599386592-m1301310731--l_fcompxe_2011.2.137.tgz.log
+ .git-annex/KX/w1/WORM-s35976002-m1301312193--l_tbb_3.0.6.174.log
+ .git-annex/Vw/jK/WORM-s15795178-m1301310913--w_flm_p_1.0.011_intel64.zip.log
+ .git-annex/jK/zK/WORM-s374617670-m1301312705--l_ipp_7.0.2.137_intel64.log
+ .git-annex/vK/kv/WORM-s584342291-m1301312669--l_cproc_p_11.1.075_ia64.log
+ .git-annex/vw/v1/WORM-s736986678-m1301312794--l_cproc_p_11.1.075_ia32.log
+ .git-annex/zq/7X/WORM-s343075585-m1301312233--l_ipp_7.0.2.137_ia32.log
+Please move or remove them before you can merge.
+Aborting
+1|jtang@x00:~/sources $ git status
+# On branch master
+# Your branch is ahead of 'origin/master' by 2 commits.
+#
+# Changes to be committed:
+# (use \"git reset HEAD <file>...\" to unstage)
+#
+# modified: .git-annex/09/5X/WORM-s361516678-m1301310614--l_fcompxe_intel64_2011.2.137.tgz.log
+# modified: .git-annex/43/2g/WORM-s19509673-m1301310496--l_fcompxe_2011.2.137_redist.tgz.log
+# modified: .git-annex/4J/qF/WORM-s18891115-m1301310934--w_flm_p_1.0.011_ia64.zip.log
+# modified: .git-annex/87/w1/WORM-s12212473-m1301310909--w_flm_p_1.0.011_ia32.zip.log
+# modified: .git-annex/99/Jq/WORM-s194345957-m1301310926--l_mkl_10.3.2.137_ia32.log
+# modified: .git-annex/99/kf/WORM-s9784531-m1301311680--l_ccompxe_2011.2.137_redist.log
+# modified: .git-annex/FF/f3/WORM-s93033394-m1301311706--l_gen_ipp_7.0.2.137.log
+# modified: .git-annex/MF/xZ/WORM-s515140733-m1301310936--l_cprof_p_11.1.075.log
+# modified: .git-annex/XW/X8/WORM-s355559731-m1301310797--l_mkl_10.3.2.137.log
+# modified: .git-annex/fJ/mZ/WORM-s1372886477-m1301313368--l_cproc_p_11.1.075.log
+# modified: .git-annex/j7/Q9/WORM-s44423202-m1301310622--l_cprof_p_11.1.075_redist.log
+# modified: .git-annex/k4/K7/WORM-s239539070-m1301310760--l_mkl_10.3.2.137_intel64.log
+# modified: .git-annex/kz/01/WORM-s279573314-m1301310783--l_cprof_p_11.1.075_ia32.log
+# modified: .git-annex/p6/Kq/WORM-s31199343-m1301311829--l_cproc_p_11.1.075_redist.log
+# modified: .git-annex/pz/J5/WORM-s626995277-m1301312301--l_ccompxe_ia32_2011.2.137.log
+# modified: .git-annex/v3/kX/WORM-s339693045-m1301310851--l_cprof_p_11.1.075_intel64.log
+#
+# 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: .git-annex/12/3W/WORM-s3058814-m1276699694--Botan-1.8.9.tgz.log
+# modified: .git-annex/1G/qV/WORM-s9122-m1251558854--Array-Compare-2.01.tar.gz.log
+# modified: .git-annex/3W/W5/WORM-s231523-m1270740744--DBD-Pg-2.17.1.tar.gz.log
+# modified: .git-annex/3x/PX/WORM-s380310-m1293025187--HTSeq-0.4.7.tar.gz.log
+# modified: .git-annex/45/gk/WORM-s67337-m1248732018--ExtUtils-Install-1.54.tar.gz.log
+# modified: .git-annex/4J/7Q/WORM-s8608-m1224694862--Algorithm-Munkres-0.08.tar.gz.log
+# modified: .git-annex/4g/XQ/WORM-s89208-m1278682033--HTML-Parser-3.66.tar.gz.log
+# modified: .git-annex/54/jw/WORM-s300163-m1226422051--AcePerl-1.92.tar.gz.log
+# modified: .git-annex/63/kj/WORM-s1213460-m1262942058--DBD-SQLite-1.29.tar.gz.log
+# modified: .git-annex/6Z/42/WORM-s4074-m943766010--File-Sync-0.09.tar.gz.log
+# modified: .git-annex/8F/M5/WORM-s6989-m1263161127--Digest-HMAC-1.02.tar.gz.log
+# modified: .git-annex/G2/FK/WORM-s3309-m1163872981--Bundle-BioPerl-2.1.8.tar.gz.log
+# modified: .git-annex/Gk/XF/WORM-s23572243-m1279546902--EMBOSS-6.3.1.tar.gz.log
+# modified: .git-annex/Jk/X6/WORM-s566429-m1279309002--DBI-1.612.tar.gz.log
+# modified: .git-annex/K6/fV/WORM-s1561451-m1240055295--Convert-Binary-C-0.74.tar.gz.log
+# modified: .git-annex/KM/4q/WORM-s146959-m1268515086--Graph-0.94.tar.gz.log
+# modified: .git-annex/MF/m2/WORM-s425766-m1212514609--Data-Stag-0.11.tar.gz.log
+# modified: .git-annex/QJ/P6/WORM-s1045868-m1282215033--9base-6.tar.gz.log
+# modified: .git-annex/Qm/WG/WORM-s39078-m1278163547--Digest-SHA1-2.13.tar.gz.log
+# modified: .git-annex/Wq/Fj/WORM-s45680640-m1297862101--BclConverter-1.7.1.tar.log
+# modified: .git-annex/Wq/Wm/WORM-s263536640-m1295025537--CASAVA_v1.7.0.tar.log
+# modified: .git-annex/XW/qm/WORM-s36609-m1276050470--Bio-ASN1-EntrezGene-1.10-withoutworldwriteables.tar.gz.log
+# modified: .git-annex/Zq/7X/WORM-s343075585-m1301312233--l_ipp_7.0.2.137_ia32.log
+# modified: .git-annex/f7/g0/WORM-s40872-m1278273227--ExtUtils-ParseXS-2.2206.tar.gz.log
+# modified: .git-annex/j3/JF/WORM-s11753-m1232427595--Clone-0.31.tar.gz.log
+# modified: .git-annex/kX/9g/WORM-s84690-m1229117599--GraphViz-2.04.tar.gz.log
+# modified: .git-annex/km/z5/WORM-s44634-m1275505134--Authen-SASL-2.15.tar.gz.log
+# modified: .git-annex/kw/J3/WORM-s132396-m1278780649--DBD-mysql-4.016.tar.gz.log
+# modified: .git-annex/p5/1P/WORM-s53736-m1278673485--Archive-Tar-1.64.tar.gz.log
+# modified: .git-annex/wv/zG/WORM-s30584-m1268774021--ExtUtils-CBuilder-0.2703.tar.gz.log
+# modified: .git-annex/x5/7v/WORM-s10462526-m1254242591--BioPerl-1.6.1.tar.gz.log
+#
+# Untracked files:
+# (use \"git add <file>...\" to include in what will be committed)
+#
+# .git-annex/1G/X3/
+# .git-annex/3W/Xf/
+# .git-annex/9q/Wz/
+# .git-annex/Fq/4z/
+# .git-annex/Jk/zK/
+# .git-annex/Kx/w1/
+# .git-annex/VK/kv/
+# .git-annex/fv/0P/
+# .git-annex/jX/qM/
+# .git-annex/vW/jK/
+# .git-annex/vW/v1/
+jtang@x00:~/sources $ git commit -a -m \"snap\"
+[master 45f254a] snap
+ 47 files changed, 64 insertions(+), 30 deletions(-)
+jtang@x00:~/sources $ git status
+# On branch master
+# Your branch is ahead of 'origin/master' by 3 commits.
+#
+# Untracked files:
+# (use \"git add <file>...\" to include in what will be committed)
+#
+# .git-annex/1G/X3/
+# .git-annex/3W/Xf/
+# .git-annex/9q/Wz/
+# .git-annex/Fq/4z/
+# .git-annex/Jk/zK/
+# .git-annex/Kx/w1/
+# .git-annex/VK/kv/
+# .git-annex/fv/0P/
+# .git-annex/jX/qM/
+# .git-annex/vW/jK/
+# .git-annex/vW/v1/
+nothing added to commit but untracked files present (use \"git add\" to track)
+jtang@x00:~/sources $ git pull
+</pre>
+"""]]
diff --git a/doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_3_a18ada7ac74c63be5753fdb2fe68dae5._comment b/doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_3_a18ada7ac74c63be5753fdb2fe68dae5._comment
new file mode 100644
index 000000000..00988ab58
--- /dev/null
+++ b/doc/bugs/git-annex_directory_hashing_problems_on_osx/comment_3_a18ada7ac74c63be5753fdb2fe68dae5._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 3"
+ date="2011-03-28T15:25:18Z"
+ content="""
+So, there is evidence here of a circumstance caused by the [[other_bug|git-annex_has_issues_with_git_when_staging__47__commiting_logs]], as I suspected.
+
+I don't think that manual `git commit -a` caused the problem. I suspect it was a subsequent `git add` that caused git to follow the wrong case paths and add the files in the wrong place. Ie, when you run \"git add .git-annex\", it recurses into `.git-annex/Gm/`, and adds files using that case, that were previously added from `.git-annex/GM/`.
+
+For completeness, can you verify this repo's core.ignorecase setting?
+
+---
+
+I hate that you are stuck using loop filesystems to work around this bug. If my guess is correct, you don't need to, as long as you avoid manually running \"git add .git-annex\". I take this bug seriously. While I'm currently very involved in adding Amazon S3 support to git-annex (which will take days more of solid work), I do plan to make a loop filesystem of my own, probably vfat, so I can try and reproduce this on a case-insensative filesystem. If you could confirm my above hypothesis, that would speed things up for me.
+
+It's possible I will have to tweak the hash directories. Hopefully if so, I will only tweak them for *new* keys; if I had to do a v3 backend just to fix this stupid thing, I'd be sad -- upgrading all my offline disks from v1 to v2 took me many days.
+"""]]
diff --git a/doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn b/doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn
index b7944b418..774ca6a16 100644
--- a/doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn
+++ b/doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn
@@ -7,7 +7,13 @@ For now it's just a bit of extra work for me when it does occur but it does not
> What do you mean when you say that git "got wedged"? It hung somehow?
>
> If git-annex runs concurrently with another git command that locks
-> the repository its git add of log files can fail.
+> the repository, its git add of log files can fail.
+>
+> Update: Also, of course, if you are running a "got annex get" or
+> similar, and ctrl-c it after it has gotten some files, it can
+> end up with unstaged or in some cases un-added log files that git-annex
+> wrote -- since git-annex only stages log files in git on shutdown, and
+> ctrl-c bypasses that.
> --[[Joey]]
>> It "got wedged" as in git doesn't let me commit anything, even though it tells me that there is stuff to be committed in the staging area.
@@ -16,3 +22,8 @@ For now it's just a bit of extra work for me when it does occur but it does not
>>> be some error message? --[[Joey]]
>>>> there were no error messages at all
+
+>>>>> Can I see a transcript? I'm having difficulty getting my head around
+>>>>> what git is doing. Sounds like the files could just not be `git
+>>>>> added` yet, but I get the impression from other things that you say
+>>>>> that it's not so simple. --[[Joey]]
diff --git a/doc/forum/relying_on_git_for_numcopies.mdwn b/doc/forum/relying_on_git_for_numcopies.mdwn
index b7ebba805..37b46cf4e 100644
--- a/doc/forum/relying_on_git_for_numcopies.mdwn
+++ b/doc/forum/relying_on_git_for_numcopies.mdwn
@@ -1,3 +1,5 @@
+**&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
diff --git a/doc/forum/wishlist:_git_backend_for_git-annex.mdwn b/doc/forum/wishlist:_git_backend_for_git-annex.mdwn
new file mode 100644
index 000000000..63ae83097
--- /dev/null
+++ b/doc/forum/wishlist:_git_backend_for_git-annex.mdwn
@@ -0,0 +1,7 @@
+Preamble: Obviously, the core feature of git-annex is the ability to keep a subset of files in a local repo. The main trade-off is that you don't get version tracking.
+
+Use case: On my laptop, I might not have enough disk space to store everything. Not so for my main box nor my backup server. And I would _really_ like to have proper version tracking for many of my files. Thus...
+
+Wish: ...why not use git as a version backend? That way, I could just push all my stuff to the central instance(s) and have the best of both worlds. Depending on what backend is used in the local repos, it might make sense to define a list of supported client backends with pre-computed keys.
+
+-- RichiH
diff --git a/doc/news/version_0.20110328.mdwn b/doc/news/version_0.20110328.mdwn
new file mode 100644
index 000000000..512ce4647
--- /dev/null
+++ b/doc/news/version_0.20110328.mdwn
@@ -0,0 +1,11 @@
+git-annex 0.20110328 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+ * 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."""]] \ No newline at end of file
diff --git a/doc/news/version_0.24.mdwn b/doc/news/version_0.24.mdwn
deleted file mode 100644
index 81b013a26..000000000
--- a/doc/news/version_0.24.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-Branched the 0.24 series, which will be maintained for a while (in the
-stable branch in git) to support v1 git-annex repos, while main development
-moves to the 0.2011 series, with v2 git-annex repos.
-
-git-annex 0.24 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-* Add Suggests on graphviz. Closes: #[618039](http://bugs.debian.org/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.)"""]]