diff options
Diffstat (limited to 'doc/administration/housekeeping.md')
-rw-r--r-- | doc/administration/housekeeping.md | 72 |
1 files changed, 47 insertions, 25 deletions
diff --git a/doc/administration/housekeeping.md b/doc/administration/housekeeping.md index a89e8a2bad5..8f5bf2ee013 100644 --- a/doc/administration/housekeeping.md +++ b/doc/administration/housekeeping.md @@ -4,46 +4,68 @@ group: Distribution info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments --- -# Housekeeping **(FREE)** +# Housekeeping **(FREE SELF)** -GitLab supports and automates housekeeping tasks within your current repository, -such as compressing file revisions and removing unreachable objects. +GitLab supports and automates housekeeping tasks within your current repository such as: + +- Compressing Git objects. +- Removing unreachable objects. ## Configure housekeeping -GitLab automatically runs `git gc` and `git repack` on repositories -after Git pushes. +GitLab automatically runs `git gc` and `git repack` on repositories after Git pushes: + +- [`git gc`](https://git-scm.com/docs/git-gc) runs a number of housekeeping tasks such as: + - Compressing Git objects to reduce disk space and increase performance. + - Removing unreachable objects that may have been created from changes to the repository, like force-overwriting branches. +- [`git repack`](https://git-scm.com/docs/git-repack) either: + - Runs an incremental repack, according to a [configured period](#housekeeping-options). This + packs all loose objects into a new packfile and prunes the now-redundant loose objects. + - Runs a full repack, according to a [configured period](#housekeeping-options). This repacks all + packfiles and loose objects into a single new packfile, and deletes the old now-redundant loose + objects and packfiles. It also optionally creates bitmaps for the new packfile. You can change how often this happens or turn it off: 1. On the top bar, select **Menu >** **{admin}** **Admin**. 1. On the left sidebar, select **Settings > Repository**. 1. Expand **Repository maintenance**. -1. Configure the Housekeeping options. +1. In the **Housekeeping** section, configure the [housekeeping options](#housekeeping-options). 1. Select **Save changes**. -For example, in the following scenario a `git repack -d` will be executed: +### Housekeeping options + +The following housekeeping options are available: + +- **Enable automatic repository housekeeping**: Regularly run `git repack` and `git gc`. If you + keep this setting disabled for a long time, Git repository access on your GitLab server becomes + slower and your repositories use more disk space. +- **Enable Git pack file bitmap creation**: Create pack file bitmaps which accelerates `git clone` + performance. Makes housekeeping take a little longer. +- **Incremental repack period**: Number of Git pushes after which an incremental `git repack` is + run. +- **Full repack period**: Number of Git pushes after which a full `git repack` is run. +- **Git GC period**: Number of Git pushes after which `git gc` is run. + +As an example, see the following scenario: -- Project: pushes since GC counter (`pushes_since_gc`) = `10` -- Git GC period = `200` -- Full repack period = `50` +- Incremental repack period: 10. +- Full repack period: 50. +- Git GC period: 200. -When the `pushes_since_gc` value is 50 a `repack -A -d --pack-kept-objects` runs, similarly when -the `pushes_since_gc` value is 200 a `git gc` runs: +When the: -- `git gc` ([man page](https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-gc.html)) 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 add`. -- `git repack` ([man page](https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-repack.html)) re-organize existing packs into a single, more efficient pack. +- `pushes_since_gc` value is 50, a `repack -A -l -d --pack-kept-objects` runs. +- `pushes_since_gc` value is 200, a `git gc` runs. Housekeeping also [removes unreferenced LFS files](../raketasks/cleanup.md#remove-unreferenced-lfs-files) -from your project on the same schedule as the `git gc` operation, freeing up storage space for your project. +from your project on the same schedule as the `git gc` operation, freeing up storage space for your +project. ## How housekeeping handles pool repositories -Housekeeping for pool repositories is handled differently from standard repositories. -It is ultimately performed by the Gitaly RPC `FetchIntoObjectPool`. +Housekeeping for pool repositories is handled differently from standard repositories. It is +ultimately performed by the Gitaly RPC `FetchIntoObjectPool`. This is the current call stack by which it is invoked: @@ -54,10 +76,10 @@ This is the current call stack by which it is invoked: 1. `ObjectPoolService#fetch` 1. `Gitaly::FetchIntoObjectPoolRequest` -To manually invoke it from a Rails console, if needed, you can call `project.pool_repository.object_pool.fetch`. -This is a potentially long-running task, though Gitaly times out in about 8 hours. +To manually invoke it from a Rails console if needed, you can call +`project.pool_repository.object_pool.fetch`. This is a potentially long-running task, though Gitaly +times out in about 8 hours. WARNING: -Do not run `git prune` or `git gc` in pool repositories! This can -cause data loss in "real" repositories that depend on the pool in -question. +Do not run `git prune` or `git gc` in pool repositories! This can cause data loss in "real" +repositories that depend on the pool in question. |