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

This commit is contained in:
Joey Hess 2019-01-13 14:03:12 -04:00
commit 52695e5925
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 63 additions and 0 deletions

View file

@ -0,0 +1,45 @@
When a changed version of a file is created after `git annex unlock && change-file && git annex add` the old file inside `.git/annex/objects` is retained and cannot be removed with `git annex drop`.
When I checkout a commit which has the old version of the file I can easily `git annex drop` it and then it also vanishes from `.git/annex/objects`.
Look at the following script which reproduces the behavior.
Is this behavior intended?
My use case is a big music library which does not fit onto my laptop.
So for updating the metadata in the files I basically run `git annex get <folder> && git annex unlock <folder>` then update all files in that folder and then run `git annex add <folder> && git commit && git copy --to remote && git annex drop <folder>`.
This works perfectly but the problem is, that all old versions of changed files are retained in `.git/annex/objects` which in no time filled my drive to 100%.
EDIT: As a clarification, I would expect git-annex to also drop the old versions of the file if enough copies exist…
The script:
#!/usr/bin/env bash
cd /tmp
git init client
cd client
git annex init
git annex numcopies 1
dd if=/dev/zero of=zero bs=1M count=4
git annex add zero
git commit -m 'Checkin'
cd ..
git clone client remote
cd client
git remote add remote ../remote
git annex sync
git annex copy --to remote
git annex drop zero
git annex get zero
git annex unlock zero
echo test >> zero
git annex add zero
git commit -m 'Update'
git annex copy --to remote
git annex drop zero
cd ..
tree {client,remote}/.git/annex/objects
cd client
git checkout master~
git annex drop zero
git checkout master
cd ..
tree {client,remote}/.git/annex/objects

View file

@ -0,0 +1,13 @@
[[!comment format=mdwn
username="guzik.sergey@9391b6c15e4938a539e36fbe5bab71df07111d2e"
nickname="guzik.sergey"
avatar="http://cdn.libravatar.org/avatar/69073e903eefa0bc2755123b26441a2f"
subject="comment 1"
date="2019-01-13T14:50:44Z"
content="""
The behaviour you described is intended, git annex preserves all versions of all files. Those old file are refered in git annex documentation as `unused`, so you can search for this term. Following are main commands:
- [git annex unused](https://git-annex.branchable.com/git-annex-unused/)
- [git annex dropunused](https://git-annex.branchable.com/git-annex-dropunused/)
- [git annex drop --unused](https://git-annex.branchable.com/git-annex-drop/)
"""]]

View file

@ -0,0 +1,5 @@
I have two local devices set up with the same remote server (a bare repo following https://git-annex.branchable.com/tips/centralized_git_repository_tutorial/on_your_own_server/)
I can sync and move files to/from each device. But I can't see the files pushed by one device on the other (or vice-versa).
So from desktop I sync file "a" and from android I sync file "b" but I can't do "git annex copy b --from origin" on the desktop.