Make git-annex forget --drop-dead also remove log files for keys that have been marked as dead.
This would have the benefit of reducing the size of the git-annex branch. Also it would eliminate mention of the key in the git-annex branch's history.
Although whether it would actually delete all mention of a key is a bit hard to guarantee. Can remove all the log files that are specific to a key, like presence and metadata and chunks and remote state. But, the export.log refers to trees, and somewhere in a tree there could be a reference to a dead key.
Eg, if a file was exported to a remote, and then its key marked dead, the file could still be on the remote, and the export.log needs to keep its reference to that tree, until some other tree is exported that deletes that file. So this is a not very likely, but possible, way for the git-annex branch to still mention a dead key after --drop-dead. Could rewrite the tree as well, but now it's getting complicated indeed.
Let's leave out the idea that all references to the dead key get scrubbed from the branch. In any case a key is probably referred to in the master branch too.
It'd still be useful to implement this, just to reduce branch size.
Took a look at implementing this, and found a challenging problem. A TransitionCalculator for this would need a way to check if a given key is dead. Which means that the TransitionCalculator would need to run in Annex, and read the location log for the key in order to decide whether to keep a log file associated with that key.
That would make this transition be a lot slower to calculate than transitions are now -- currently transitions only need the content of the file they are acting on, and information that can be looked up before starting like the TrustMap. This new transition would be doing a lot of git-annex branch queries.
The other problem is that, if a key is dead, the location log for it ought to be removed by the transition. But then calculating transitions for other log files associated with that key would not be able to read the location log to know it's dead.
Just caching in memory what dead keys have had their location logs removed would not necessarily be enough either -- if a clone added information to a log file associated with a dead key, then on merge from that clone, if the transition is re-run it would no longer know that the key was dead.