GitLab supports and automates housekeeping tasks within your current repository, such as compressing file revisions and removing unreachable objects.
GitLab automatically runs
git gc and
git repack on repositories
after Git pushes. You can change how often this happens or turn it off in
Admin Area > Settings > Repository (
The housekeeping function runs
gc depending on the
Housekeeping settings configured in Admin Area > Settings > Repository.
For example in the following scenario a
git repack -d will be executed:
- Project: pushes since GC counter (
- Git GC period =
- Full repack period =
pushes_since_gc value is 50 a
repack -A -d --pack-kept-objects runs, similarly when
pushes_since_gc value is 200 a
git gc runs.
git gc(man page) runs a number of housekeeping tasks, such as compressing file revisions (to reduce disk space and increase performance) and removing unreachable objects which may have been created from prior invocations of
git repack(man page) re-organize existing packs into a single, more efficient pack.
Housekeeping also removes unreferenced LFS files
from your project on the same schedule as the
git gc operation, freeing up storage space for your project.
To manually start the housekeeping process:
- In your project, go to Settings > General.
- Expand the Advanced section.
- Select Run housekeeping.
How housekeeping handles pool repositories
Housekeeping for pool repositories is handled differently from standard repositories.
It is ultimately performed by the Gitaly RPC
This is the current call stack by which it is invoked:
To manually invoke it from a Rails console, if needed, you can call
This is a potentially long-running task, though Gitaly times out in about 8 hours.
git gcin pool repositories! This can cause data loss in “real” repositories that depend on the pool in question.