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