Merge remote branch 'branchable/master'

This commit is contained in:
Joey Hess 2011-01-27 15:47:13 -04:00
commit 56a8a21171
2 changed files with 34 additions and 1 deletions

View file

@ -4,7 +4,7 @@ I've been enjoying using git-annex to archive my data.
It's great that, by using git-annex and the SHA1 backend, I get a space-saving kind of deduplication through the symbolic links.
My question is, is there a frontend by which I can look at some files and only store the ones that are not already in the repository? That would help me in terms of personal file organization.
I'm looking for the ability to filter files, before they get added to the annex, so that I don't add new files whose content is already in the annex.look That would help me in terms of personal file organization.
It seems there is not, so this is a wishlist bug filed so that maybe such a thing might exist. What I would really like to do is:
@ -20,3 +20,7 @@ to remove the files that didn't get annexed in this run. That way, only one file
I want this because I have copies of various of mine (photos, in particular) scattered across various hard disks. If this feature existed, I could comfortably toss them all into one git annex that grew, bit by bit, to store all of these files exactly once.
(I would be even happier for "git annex add --unlink-duplicates .")
(Another way to do this would be to "git annex add" them all, and then use a "git annex remove-duplicates" that could prompt me about which files are duplicates of each other, and then I could pipe that command's output into xargs git rm.)
(As I write this, I realize it's possible to parse the destination of the symlink in a way that does this..)

View file

@ -0,0 +1,29 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 1"
date="2011-01-27T18:29:44Z"
content="""
Hey Asheesh, I'm happy you're finding git-annex useful.
So, there are two forms of duplication going on here. There's duplication of the content, and duplication of the filenames
pointing at that content.
Duplication of the filenames is probably not a concern, although it's what I thought you were talking about at first. It's probably info worth recording that backup-2010/some_dir/foo and backup-2009/other_dir/foo are two names you've used for the same content in the past. If you really wanted to remove backup-2009/foo, you could do it by writing a script that looks at the basenames of the symlink targets and removes files that point to the same content as other files.
Using SHA1 ensures that the same key is used for identical files, so generally avoids duplication of content. But if you have 2 disks with an identical file on each, and make them both into annexes, then git-annex will happily retain both
copies of the content, one per disk. It generally considers keeping copies of content a good thing. :)
So, what if you want to remove the unnecessary copies? Well, there's a really simple way:
<pre>
cd /media/usb-1
git remote add other-disk /media/usb-0
git annex add
git annex drop
</pre>
This asks git-annex to add everything to the annex, but then remove any file contents that it can safely remove. What can it safely remove? Well, anything that it can verify is on another repository such as \"other-disk\"! So, this will happily drop any duplicated file contents, while leaving all the rest alone.
In practice, you might not want to have all your old backup disks mounted at the same time and configured as remotes. Look into configuring [[trust]] to avoid needing do to that. If usb-0 is already a trusted disk, all you need is a simple \"git annex drop\" on usb-1.
"""]]