| gc.aggressiveDepth:: | |
| The depth parameter used in the delta compression | |
| algorithm used by 'git gc --aggressive'. This defaults | |
| to 50, which is the default for the `--depth` option when | |
| `--aggressive` isn't in use. | |
| + | |
| See the documentation for the `--depth` option in | |
| linkgit:git-repack[1] for more details. | |
| gc.aggressiveWindow:: | |
| The window size parameter used in the delta compression | |
| algorithm used by 'git gc --aggressive'. This defaults | |
| to 250, which is a much more aggressive window size than | |
| the default `--window` of 10. | |
| + | |
| See the documentation for the `--window` option in | |
| linkgit:git-repack[1] for more details. | |
| gc.auto:: | |
| When there are approximately more than this many loose | |
| objects in the repository, `git gc --auto` will pack them. | |
| Some Porcelain commands use this command to perform a | |
| light-weight garbage collection from time to time. The | |
| default value is 6700. | |
| + | |
| Setting this to 0 disables not only automatic packing based on the | |
| number of loose objects, but also any other heuristic `git gc --auto` will | |
| otherwise use to determine if there's work to do, such as | |
| `gc.autoPackLimit`. | |
| gc.autoPackLimit:: | |
| When there are more than this many packs that are not | |
| marked with `*.keep` file in the repository, `git gc | |
| --auto` consolidates them into one larger pack. The | |
| default value is 50. Setting this to 0 disables it. | |
| Setting `gc.auto` to 0 will also disable this. | |
| + | |
| See the `gc.bigPackThreshold` configuration variable below. When in | |
| use, it'll affect how the auto pack limit works. | |
| gc.autoDetach:: | |
| Make `git gc --auto` return immediately and run in the background | |
| if the system supports it. Default is true. This config variable acts | |
| as a fallback in case `maintenance.autoDetach` is not set. | |
| gc.bigPackThreshold:: | |
| If non-zero, all non-cruft packs larger than this limit are kept | |
| when `git gc` is run. This is very similar to | |
| `--keep-largest-pack` except that all non-cruft packs that meet | |
| the threshold are kept, not just the largest pack. Defaults to | |
| zero. Common unit suffixes of 'k', 'm', or 'g' are supported. | |
| + | |
| Note that if the number of kept packs is more than gc.autoPackLimit, | |
| this configuration variable is ignored, all packs except the base pack | |
| will be repacked. After this the number of packs should go below | |
| gc.autoPackLimit and gc.bigPackThreshold should be respected again. | |
| + | |
| If the amount of memory estimated for `git repack` to run smoothly is | |
| not available and `gc.bigPackThreshold` is not set, the largest pack | |
| will also be excluded (this is the equivalent of running `git gc` with | |
| `--keep-largest-pack`). | |
| gc.writeCommitGraph:: | |
| If true, then gc will rewrite the commit-graph file when | |
| linkgit:git-gc[1] is run. When using `git gc --auto` | |
| the commit-graph will be updated if housekeeping is | |
| required. Default is true. See linkgit:git-commit-graph[1] | |
| for details. | |
| gc.logExpiry:: | |
| If the file gc.log exists, then `git gc --auto` will print | |
| its content and exit with status zero instead of running | |
| unless that file is more than 'gc.logExpiry' old. Default is | |
| "1.day". See `gc.pruneExpire` for more ways to specify its | |
| value. | |
| gc.packRefs:: | |
| Running `git pack-refs` in a repository renders it | |
| unclonable by Git versions prior to 1.5.1.2 over dumb | |
| transports such as HTTP. This variable determines whether | |
| 'git gc' runs `git pack-refs`. This can be set to `notbare` | |
| to enable it within all non-bare repos or it can be set to a | |
| boolean value. The default is `true`. | |
| gc.cruftPacks:: | |
| Store unreachable objects in a cruft pack (see | |
| linkgit:git-repack[1]) instead of as loose objects. The default | |
| is `true`. | |
| gc.maxCruftSize:: | |
| Limit the size of new cruft packs when repacking. When | |
| specified in addition to `--max-cruft-size`, the command line | |
| option takes priority. See the `--max-cruft-size` option of | |
| linkgit:git-repack[1]. | |
| gc.pruneExpire:: | |
| When 'git gc' is run, it will call 'prune --expire 2.weeks.ago' | |
| (and 'repack --cruft --cruft-expiration 2.weeks.ago' if using | |
| cruft packs via `gc.cruftPacks` or `--cruft`). Override the | |
| grace period with this config variable. The value "now" may be | |
| used to disable this grace period and always prune unreachable | |
| objects immediately, or "never" may be used to suppress pruning. | |
| This feature helps prevent corruption when 'git gc' runs | |
| concurrently with another process writing to the repository; see | |
| the "NOTES" section of linkgit:git-gc[1]. | |
| gc.worktreePruneExpire:: | |
| When 'git gc' is run, it calls | |
| 'git worktree prune --expire 3.months.ago'. | |
| This config variable can be used to set a different grace | |
| period. The value "now" may be used to disable the grace | |
| period and prune `$GIT_DIR/worktrees` immediately, or "never" | |
| may be used to suppress pruning. | |
| gc.reflogExpire:: | |
| gc.<pattern>.reflogExpire:: | |
| 'git reflog expire' removes reflog entries older than | |
| this time; defaults to 90 days. The value "now" expires all | |
| entries immediately, and "never" suppresses expiration | |
| altogether. With "<pattern>" (e.g. | |
| "refs/stash") in the middle the setting applies only to | |
| the refs that match the <pattern>. | |
| gc.reflogExpireUnreachable:: | |
| gc.<pattern>.reflogExpireUnreachable:: | |
| 'git reflog expire' removes reflog entries older than | |
| this time and are not reachable from the current tip; | |
| defaults to 30 days. The value "now" expires all entries | |
| immediately, and "never" suppresses expiration altogether. | |
| With "<pattern>" (e.g. "refs/stash") | |
| in the middle, the setting applies only to the refs that | |
| match the <pattern>. | |
| + | |
| These types of entries are generally created as a result of using `git | |
| commit --amend` or `git rebase` and are the commits prior to the amend | |
| or rebase occurring. Since these changes are not part of the current | |
| project most users will want to expire them sooner, which is why the | |
| default is more aggressive than `gc.reflogExpire`. | |
| gc.recentObjectsHook:: | |
| When considering whether or not to remove an object (either when | |
| generating a cruft pack or storing unreachable objects as | |
| loose), use the shell to execute the specified command(s). | |
| Interpret their output as object IDs which Git will consider as | |
| "recent", regardless of their age. By treating their mtimes as | |
| "now", any objects (and their descendants) mentioned in the | |
| output will be kept regardless of their true age. | |
| + | |
| Output must contain exactly one hex object ID per line, and nothing | |
| else. Objects which cannot be found in the repository are ignored. | |
| Multiple hooks are supported, but all must exit successfully, else the | |
| operation (either generating a cruft pack or unpacking unreachable | |
| objects) will be halted. | |
| gc.repackFilter:: | |
| When repacking, use the specified filter to move certain | |
| objects into a separate packfile. See the | |
| `--filter=<filter-spec>` option of linkgit:git-repack[1]. | |
| gc.repackFilterTo:: | |
| When repacking and using a filter, see `gc.repackFilter`, the | |
| specified location will be used to create the packfile | |
| containing the filtered out objects. **WARNING:** The | |
| specified location should be accessible, using for example the | |
| Git alternates mechanism, otherwise the repo could be | |
| considered corrupt by Git as it might not be able to access the | |
| objects in that packfile. See the `--filter-to=<dir>` option | |
| of linkgit:git-repack[1] and the `objects/info/alternates` | |
| section of linkgit:gitrepository-layout[5]. | |
| gc.rerereResolved:: | |
| Records of conflicted merge you resolved earlier are | |
| kept for this many days when 'git rerere gc' is run. | |
| You can also use more human-readable "1.month.ago", etc. | |
| The default is 60 days. See linkgit:git-rerere[1]. | |
| gc.rerereUnresolved:: | |
| Records of conflicted merge you have not resolved are | |
| kept for this many days when 'git rerere gc' is run. | |
| You can also use more human-readable "1.month.ago", etc. | |
| The default is 15 days. See linkgit:git-rerere[1]. |