"Baumann, Moritz" <moritz.baumann@xxxxxxx> writes: > The option would be called something like "--include-all-object-names" and > belong to the category of options that only make sense in combination with > "--objects". That name (hopefully) already explains the intended behavior: > > * commits are not duplicated Didn't the sentence above just say "all object names"? Why not commits? > * as before, only changed blobs / subtrees are shown, however: We are not showing "changed" things at all. If you want that, you'd need "git rev-list | git diff-tree --stdin" instead. The difference matters if you are aiming for automation (i.e. not casual browsing). If you had a blob A, changed it in a commit to B, and then put the original one A back in another commit, you should see (in reverse history traversal) A and then B and then A again if we were showing "changed" things. But rev-list is not about showing changes. We show A in the latest commit, B in the previous commit, and that is the end. Original needs not to be shown, because rev-list is enumerating the objects in the history and it knows that it showed A already. If you did not have a blob C, and added two instances of the same blob C to different paths, you should see C twice if we were showing "changed" things. But rev-list is not about showing changes. We show C once for a path, and it is not shown again for the other path. The other one needs not to be shown, because rev-list is enumerating the objects in the history and it knows that it showed C already. > * blobs / subtrees are duplicated in the output if they were previously shown > with a different name I suspect that adding "if they were ... with a DIFFERENT name" would probably make it prohibitively more expensive. The traversal done by rev-list is fundamentally driven by "have we shown this object (1-bit)?" to avoid duplicated work, and not "at which path did this object appear (unbounded amount of information)?". As I told you in the message you are responding to, I think I am OK with the idea of showing a bit more from "rev-list --objects", but such an enhancement may need to be designed a bit better, I am afraid. I suspect that "rev-list | diff-tree --stdin" without "--objects" added to the upstream "rev-list" might be closer to what you are looking for in this case, but I dunno. Thanks.