Merge branch 'master' of ssh://git-annex.branchable.com

This commit is contained in:
Joey Hess 2011-07-07 17:04:59 -04:00
commit ff531b9677
8 changed files with 105 additions and 0 deletions

View file

@ -0,0 +1,10 @@
Recently I ran into the following situation under Ubuntu with an encrypted home directory (which shortens the length that filenames can be):
$ git annex add 687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif
add 687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif failed
git-annex: /home/lhuhn/annex/.git/annex/tmp/155_518_WORM-s426663-m1310064100--687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif.log: openBinaryFile: invalid argument (File name too long)
git-annex: 1 failed
The file seems to be completely gone. It no longer exists in the current directory, or under .git/annex.
I don't mind horribly that git-annex failed due to the name length limit, but it shouldn't have deleted my file in the process (fortunately the file wasn't very important, or hard to recover).

View file

@ -0,0 +1,21 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 1"
date="2011-07-07T20:27:33Z"
content="""
When I reproduce this, the file is not gone, it's been moved under .git/annex/objects. There is no way an add can delete a file, since all it does is rename it. It would be good for it to error unwind and move the file back though.
<pre>
joey@gnu:~/tmp/a>touch 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif
joey@gnu:~/tmp/a>git annex add *.gif
add 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif failed
git-annex: /home/joey/tmp/a/.git/annex/tmp/8e2_6a4_WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif.log: openBinaryFile: invalid argument (File name too long)
joey@gnu:~/tmp/a>touch 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif
joey@gnu:~/tmp/a>git annex add *.gif
add 663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif failed
git-annex: /home/joey/tmp/a/.git/annex/tmp/8e2_6a4_WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif.log: openBinaryFile: invalid argument (File name too long)
joey@gnu:~/tmp/a>find .git/annex/objects -type f
.git/annex/objects/Mk/92/WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif/WORM-s0-m1310069979--663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966687474703a2f2f6d656469612e74756d626c722e636f6d2f74756d626c725f6c656673756557324c703171663879656b2e676966.gif
</pre>
"""]]

View file

@ -0,0 +1,33 @@
"git annex upgrade" has lost track of some of my files. Most of them have "&" characters. The others contain "%" characters (I haven't tried the testcase below with "%" however).
Testcase:
# (With git annex v2)
mkdir ~/testannex1
cd ~/testannex1
git init
git annex init "testannex1"
touch '02 - Afternoons & Coffeespoons.mp3'
touch 'no ampersand.mp3'
git annex add '02 - Afternoons & Coffeespoons.mp3'
git annex add 'no ampersand.mp3'
git commit -m added
git annex whereis '02 - Afternoons & Coffeespoons.mp3'
git annex whereis 'no ampersand.mp3'
# (Upgrade git-annex binary to v3 and then...)
git annex upgrade
git annex whereis '02 - Afternoons & Coffeespoons.mp3'
git annex whereis 'no ampersand.mp3'
This produces:
12:38:40 ~/testannex1 (master)$ git annex whereis '02 - Afternoons & Coffeespoons.mp3'
whereis 02 - Afternoons & Coffeespoons.mp3 (0 copies)
failed
git-annex: 1 failed
12:38:40 ~/testannex1 (master)$ git annex whereis 'no ampersand.mp3'
whereis no ampersand.mp3 (1 copy)
a7b680fc-a8d0-11e0-b0fe-4f94e86d1fb7 -- testannex1 <-- here
ok
[[!tag done]]

View file

@ -0,0 +1,12 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 1"
date="2011-07-07T21:04:23Z"
content="""
What an evil little bug. In retrospect, this probably bit my own test upgrades, but I ran `git annex fsck` everywhere and so avoided the location log breakage.
I've fixed the bug, which also involved files with other punctuation in their names [&:%] when using the WORM backend.
The only way I have to recover repos that have already been upgraded is to run `git annex fsck --fast` in each clone of such a repo, which will let it rebuild the location log information. I think that is the best way to recover; ie I can't think of a way to recover that doesn't need to do everything fsck does anyway.
"""]]

View file

@ -0,0 +1,3 @@
While merging the git-annex branch, annex-merge does not end up in a fast-forward even when it would be possible.
But as sometimes annex-merge takes time, it would probably be worth it
(but maybe I miss something with my workflow...).

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="https://lithitux.org/openidserver/users/pavel"
nickname="pavel"
subject="comment 6"
date="2011-07-06T08:14:26Z"
content="""
Ah, great, thanks very much for the quick fix!
Yes, when I mentioned three defunct git processes, there were three processes shown as \"git [defunct]\", plus the three git processes I listed, plus two \"git-annex\" processes. Upon cancel/resume, there were no defunct git processes when I checked, but by the time I found the bug report on the forum and commented I'd already successfully upgraded by annex (by repeatedly attaching strace) and couldn't really easily get at either additional 'ps' info or a fuller strace than what I posted (that was just the log from one of the attach/detach cycles), so it's a relief you managed to pinpoint the problem.
"""]]

View file

@ -0,0 +1,6 @@
I have a DLink Boxee media player and it can not play content from symbolic links, it needs to access regular media files. Unfortunately unlocking/locking is quite slow for such a large amount of data due to the required data copying, but it should not even be needed since I do not need write access to any file to watch the movie or to play the song.
Is it currently possible or would it be possible to add a commands like "unlock" which would not copy the file data but simply move files out from the data store into the tree while still keeping the files read only? A corresponding "lock" command would also be needed to restore the normal symbolic link tree structure.
Update:
I tried the rsync special remote http://git-annex.branchable.com/special_remotes/rsync/ and it works but the file structure created reflects the data store not the view given by the symbolic links.

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 1"
date="2011-07-07T15:27:28Z"
content="""
The rsync or directory special remotes would work if the media player uses metadata in the files, rather than directory locations.
Beyond that there is the [[todo/smudge]] idea, which is hoped to be supported sometime.
"""]]