diff --git a/doc/forum/Old_versions_of_files_are_not_dropped_even_though_enough_copies_exist.mdwn b/doc/forum/Old_versions_of_files_are_not_dropped_even_though_enough_copies_exist.mdwn new file mode 100644 index 0000000000..07df03ad56 --- /dev/null +++ b/doc/forum/Old_versions_of_files_are_not_dropped_even_though_enough_copies_exist.mdwn @@ -0,0 +1,43 @@ +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 && git annex unlock ` then update all files in that folder and then run `git annex add && git commit && git copy --to remote && git annex drop `. +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%. + +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