Git update-index's assume-unstaged feature can be used to speed
up git status and stuff by not statting the whole tree looking for changed
files.
This feature works quite well with git-annex. Especially because git
annex's files are immutable, so aren't going to change out from under it,
this is a nice fit. If you have a very large tree and git status is
annoyingly slow, you can turn it on:
git config core.ignoreStat true
When git mv and git rm are used, those changes do get noticed, even
on assume-unchanged files. When new files are added, eg by git annex add,
they are also noticed.
There are two gotchas. Both occur because git add does not stage
assume-unchanged files.
- When an annexed file is moved to a different directory, it updates
the symlink, and runs
git addon it. So the file will move, but the changed symlink will not be noticed by git and it will commit a dangling symlink. - When using
git annex migrate, it changes the symlink andgit addsit. Again this won't be committed.
These can be worked around by running git update-index --really-refresh
after performing such operations. I hope that git add will be changed
to stage changes to assume-unchanged files, which would remove this
only complication. --Joey

So just always run
git annex addafter editing a file andgit update-index --really-refreshafter migrating backend?