> > But you thought right, I do have an objection against that. 'git gc' > should, well, collect garbage. Any non-gc stuff is already violating > separation of concerns. I share these concerns in a slightly more abstract way, as I would bucket the actions into two separate bins: One bin that throws away information. this would include removing expired reflog entries (which I do not think are garbage, or collection thereof), but their usefulness is questionable. The other bin would be actions that optimize but do not throw away any information, repacking (without dropping files) would be part of it, or the new "write additional files". Maybe we can move all actions of the second bin into a new "git optimize" command, and git gc would do first the "throw away things" and then the optimize action, whereas clone would only go for the second optimizing part?