housekeeping: Skip repacking empty repositories
When a repository does not have any bitmaps or in case it is missing bloom filters in the commit graph we always try to do a full repack in order to generate these data structures. This logic is required because:
- Bitmaps are only generated by git-repack(1) for full repacks. This
limitation exists because there can only be one bitmap per
repository.
- In case commit-graphs exist but missing bloom filters we need to
completely rewrite them in order to enable this extension.
While the logic makes sense, it also causes us to repack repositories which are empty: they don't contain either of these data structures, and consequentially we think we need a full repack. While this is not a huge problem because git-repack(1) would finish fast anyway in case the repo doesn't contain any objects, we still needlessly spawn a process. Also, our metrics report that we're doing a lot of full repacks, which can be confusing.
Improve our heuristics by taking into account whether the repository has objects at all. If there aren't any, we can avoid all this busywork and just skip repacking altogether.
Changelog: changed