keep it fast
Repository maintenance, without remembering the flags.
A repository that has been worked in for years gets slower, and the commands that fix it are the ones nobody runs because they are easy to get wrong and hard to justify at the moment you need them.
The four tasks
- Garbage collection - remove unreachable objects.
- Repack - consolidate loose objects into packs.
- Commit graph - the index that makes history traversal fast. This is the one that makes a large repository feel different.
- Bloom filters - speeds up path-limited history, which is what the history of a single file uses.
Pick which tasks to run. Schedule them manually, or let them run when the repository is idle rather than while you are working in it.
Why it is worth a button
The commit graph and bloom filters are the two that change how the application feels on a large history, because they are what a graph walk and a file-history query read. FluxGit lays out a hundred thousand commits in about 40 ms; a repository that has never been maintained is slower at the step before that, which is git handing the commits over.