Made a lot of progress today. Implemented the database mapping a key to its associated files. As expected this database, when updated by the smudge/clean filters, is not always consistent with the current git work tree. In particular, commands like `git mv` don't update the database with the new filename. So queries of the database will need to do some additional work first to get it updated with any staged changes. But the database is good enough for a proof of concept, I hope. Then I got git-annex commands treating smudged files as annexed files. So this works: joey@darkstar:~/tmp/new>git annex init init ok (recording state in git...) joey@darkstar:~/tmp/new>cp ~/some.mp3 . joey@darkstar:~/tmp/new>git add some.mp3 joey@darkstar:~/tmp/new>git diff --cached diff --git a/some.mp3 b/some.mp3 new file mode 100644 index 0000000..2df8868 --- /dev/null +++ b/some.mp3 @@ -0,0 +1 @@ +/annex/objects/SHA256E-s191213--e4b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.mp3 joey@darkstar:~/tmp/new>git annex whereis some.mp3 whereis some.mp3 (1 copy) 7de17427-329a-46ec-afd0-0a088f0d0b1b -- joey@darkstar:~/tmp/new [here] ok get/drop don't yet update the smudged files, and that's the next step.