`git annex whereused` would report where in the git repository a key is used, as a complement to `git-annex unused`. Use cases include users not getting confused about why git-annex unused says a key is used. Also, it could scan through history to find where a key *was* used. git-annex unused outputs a suggestion to use a rather hairy `git log -S` command to do that currently. If it does both these things, it could explain why git-annex unused considers a key used despite a previous git rev referring to it. Eg: # git annex whereused SHA1--foo checking index... unused checking branches... unused checking tags... unused checking history... last used in master^40:somefile checking reflog... last used in HEAD@{30}:somefile --[[Joey]] > First pass is a keys db lookup to filenames. > > The historical pass can be done fairly efficiently by using > `git log -Skey --exclude=*/git-annex --glob=* --exclude=git-annex --remotes=* --tags=* --pretty='%H' --raw` > and fall back to `git log -Skey --walk-reflogs --pretty='%gd' --raw` if nothing was found. > > That makes git log check all commits reachable from those refs, > probably as efficiently as possible, and stop after one match. > It won't allow quite as nice a display as above. > > Parse the log output for commit sha and filename. Double-check > by catting the file's object and making sure it parses as an annex > link or pointer. > > Then use `git describe --contains --all` to get a description of the commit > sha, which will be something like "master~2" or "origin/master~2", > and add ":filename" to get the ref to output. > > Or, if it was found in the ref log, take the "HEAD@{n}" from log > output, and add ":filename" [[done]] --[[Joey]]