Manual housekeeping should allow to do a "git gc --aggressive"
### Summary If you push an "unoptimized repo", for example created trough git-p4 or other import tools, running manual housekeeping (in project settings) doesn't reduce the repository size. ### Steps to reproduce Please note that this example repo is small, but the issue will be the same with bigger ones. - Create an account at https://swarm.workshop.perforce.com/login - `export P4USER=xxxx` - `export P4PORT=workshop.perforce.com:1666` - `p4 login` - `git p4 clone //guest/perforce_software/jam/src@all jam` - Create a GitLab project - `git remote add origin ...` - `git push -u origin master` - Check pack size by cloning the repo => 2.9MB (same as what was pushed) - Run housekeeping in GitLab project settings - Check pack size by cloning the repo => still 2.9MB - `git gc --agressive` => pack is 412KB ### Example Project https://gitlab.com/loic.yhuel/jam ### What is the current *bug* behavior? https://gitlab.com/gitlab-org/gitlab-ce/blob/master/app/services/projects/housekeeping_service.rb It seems manual housekeeping still checks `pushes_since_gc` against the thresholds, so most of the time it only does an incremental repack (and even if a `git gc` is done, it doesn't seem to have the `--aggressive` parameter, so the effect could be limited). ### What is the expected *correct* behavior? Manual housekeeping should always run the full `git gc`, and allow `git gc --agressive` as an option (perhaps with a warning about the server load on big repositories).
issue