| 1 | gc.aggressiveDepth:: |
| 2 | The depth parameter used in the delta compression |
| 3 | algorithm used by 'git gc --aggressive'. This defaults |
| 4 | to 50, which is the default for the `--depth` option when |
| 5 | `--aggressive` isn't in use. |
| 6 | + |
| 7 | See the documentation for the `--depth` option in |
| 8 | linkgit:git-repack[1] for more details. |
| 9 | |
| 10 | gc.aggressiveWindow:: |
| 11 | The window size parameter used in the delta compression |
| 12 | algorithm used by 'git gc --aggressive'. This defaults |
| 13 | to 250, which is a much more aggressive window size than |
| 14 | the default `--window` of 10. |
| 15 | + |
| 16 | See the documentation for the `--window` option in |
| 17 | linkgit:git-repack[1] for more details. |
| 18 | |
| 19 | gc.auto:: |
| 20 | When there are approximately more than this many loose |
| 21 | objects in the repository, `git gc --auto` will pack them. |
| 22 | Some Porcelain commands use this command to perform a |
| 23 | light-weight garbage collection from time to time. The |
| 24 | default value is 6700. |
| 25 | + |
| 26 | Setting this to 0 disables not only automatic packing based on the |
| 27 | number of loose objects, but also any other heuristic `git gc --auto` will |
| 28 | otherwise use to determine if there's work to do, such as |
| 29 | `gc.autoPackLimit`. |
| 30 | |
| 31 | gc.autoPackLimit:: |
| 32 | When there are more than this many packs that are not |
| 33 | marked with `*.keep` file in the repository, `git gc |
| 34 | --auto` consolidates them into one larger pack. The |
| 35 | default value is 50. Setting this to 0 disables it. |
| 36 | Setting `gc.auto` to 0 will also disable this. |
| 37 | + |
| 38 | See the `gc.bigPackThreshold` configuration variable below. When in |
| 39 | use, it'll affect how the auto pack limit works. |
| 40 | |
| 41 | gc.autoDetach:: |
| 42 | Make `git gc --auto` return immediately and run in the background |
| 43 | if the system supports it. Default is true. This config variable acts |
| 44 | as a fallback in case `maintenance.autoDetach` is not set. |
| 45 | |
| 46 | gc.bigPackThreshold:: |
| 47 | If non-zero, all non-cruft packs larger than this limit are kept |
| 48 | when `git gc` is run. This is very similar to |
| 49 | `--keep-largest-pack` except that all non-cruft packs that meet |
| 50 | the threshold are kept, not just the largest pack. Defaults to |
| 51 | zero. Common unit suffixes of 'k', 'm', or 'g' are supported. |
| 52 | + |
| 53 | Note that if the number of kept packs is more than gc.autoPackLimit, |
| 54 | this configuration variable is ignored, all packs except the base pack |
| 55 | will be repacked. After this the number of packs should go below |
| 56 | gc.autoPackLimit and gc.bigPackThreshold should be respected again. |
| 57 | + |
| 58 | If the amount of memory estimated for `git repack` to run smoothly is |
| 59 | not available and `gc.bigPackThreshold` is not set, the largest pack |
| 60 | will also be excluded (this is the equivalent of running `git gc` with |
| 61 | `--keep-largest-pack`). |
| 62 | |
| 63 | gc.writeCommitGraph:: |
| 64 | If true, then gc will rewrite the commit-graph file when |
| 65 | linkgit:git-gc[1] is run. When using `git gc --auto` |
| 66 | the commit-graph will be updated if housekeeping is |
| 67 | required. Default is true. See linkgit:git-commit-graph[1] |
| 68 | for details. |
| 69 | |
| 70 | gc.logExpiry:: |
| 71 | If the file gc.log exists, then `git gc --auto` will print |
| 72 | its content and exit with status zero instead of running |
| 73 | unless that file is more than 'gc.logExpiry' old. Default is |
| 74 | "1.day". See `gc.pruneExpire` for more ways to specify its |
| 75 | value. |
| 76 | |
| 77 | gc.packRefs:: |
| 78 | Running `git pack-refs` in a repository renders it |
| 79 | unclonable by Git versions prior to 1.5.1.2 over dumb |
| 80 | transports such as HTTP. This variable determines whether |
| 81 | 'git gc' runs `git pack-refs`. This can be set to `notbare` |
| 82 | to enable it within all non-bare repos or it can be set to a |
| 83 | boolean value. The default is `true`. |
| 84 | |
| 85 | gc.cruftPacks:: |
| 86 | Store unreachable objects in a cruft pack (see |
| 87 | linkgit:git-repack[1]) instead of as loose objects. The default |
| 88 | is `true`. |
| 89 | |
| 90 | gc.maxCruftSize:: |
| 91 | Limit the size of new cruft packs when repacking. When |
| 92 | specified in addition to `--max-cruft-size`, the command line |
| 93 | option takes priority. See the `--max-cruft-size` option of |
| 94 | linkgit:git-repack[1]. |
| 95 | |
| 96 | gc.pruneExpire:: |
| 97 | When 'git gc' is run, it will call 'prune --expire 2.weeks.ago' |
| 98 | (and 'repack --cruft --cruft-expiration 2.weeks.ago' if using |
| 99 | cruft packs via `gc.cruftPacks` or `--cruft`). Override the |
| 100 | grace period with this config variable. The value "now" may be |
| 101 | used to disable this grace period and always prune unreachable |
| 102 | objects immediately, or "never" may be used to suppress pruning. |
| 103 | This feature helps prevent corruption when 'git gc' runs |
| 104 | concurrently with another process writing to the repository; see |
| 105 | the "NOTES" section of linkgit:git-gc[1]. |
| 106 | |
| 107 | gc.worktreePruneExpire:: |
| 108 | When 'git gc' is run, it calls |
| 109 | 'git worktree prune --expire 3.months.ago'. |
| 110 | This config variable can be used to set a different grace |
| 111 | period. The value "now" may be used to disable the grace |
| 112 | period and prune `$GIT_DIR/worktrees` immediately, or "never" |
| 113 | may be used to suppress pruning. |
| 114 | |
| 115 | gc.reflogExpire:: |
| 116 | gc.<pattern>.reflogExpire:: |
| 117 | 'git reflog expire' removes reflog entries older than |
| 118 | this time; defaults to 90 days. The value "now" expires all |
| 119 | entries immediately, and "never" suppresses expiration |
| 120 | altogether. With "<pattern>" (e.g. |
| 121 | "refs/stash") in the middle the setting applies only to |
| 122 | the refs that match the <pattern>. |
| 123 | |
| 124 | gc.reflogExpireUnreachable:: |
| 125 | gc.<pattern>.reflogExpireUnreachable:: |
| 126 | 'git reflog expire' removes reflog entries older than |
| 127 | this time and are not reachable from the current tip; |
| 128 | defaults to 30 days. The value "now" expires all entries |
| 129 | immediately, and "never" suppresses expiration altogether. |
| 130 | With "<pattern>" (e.g. "refs/stash") |
| 131 | in the middle, the setting applies only to the refs that |
| 132 | match the <pattern>. |
| 133 | + |
| 134 | These types of entries are generally created as a result of using `git |
| 135 | commit --amend` or `git rebase` and are the commits prior to the amend |
| 136 | or rebase occurring. Since these changes are not part of the current |
| 137 | project most users will want to expire them sooner, which is why the |
| 138 | default is more aggressive than `gc.reflogExpire`. |
| 139 | |
| 140 | gc.recentObjectsHook:: |
| 141 | When considering whether or not to remove an object (either when |
| 142 | generating a cruft pack or storing unreachable objects as |
| 143 | loose), use the shell to execute the specified command(s). |
| 144 | Interpret their output as object IDs which Git will consider as |
| 145 | "recent", regardless of their age. By treating their mtimes as |
| 146 | "now", any objects (and their descendants) mentioned in the |
| 147 | output will be kept regardless of their true age. |
| 148 | + |
| 149 | Output must contain exactly one hex object ID per line, and nothing |
| 150 | else. Objects which cannot be found in the repository are ignored. |
| 151 | Multiple hooks are supported, but all must exit successfully, else the |
| 152 | operation (either generating a cruft pack or unpacking unreachable |
| 153 | objects) will be halted. |
| 154 | |
| 155 | gc.repackFilter:: |
| 156 | When repacking, use the specified filter to move certain |
| 157 | objects into a separate packfile. See the |
| 158 | `--filter=<filter-spec>` option of linkgit:git-repack[1]. |
| 159 | |
| 160 | gc.repackFilterTo:: |
| 161 | When repacking and using a filter, see `gc.repackFilter`, the |
| 162 | specified location will be used to create the packfile |
| 163 | containing the filtered out objects. **WARNING:** The |
| 164 | specified location should be accessible, using for example the |
| 165 | Git alternates mechanism, otherwise the repo could be |
| 166 | considered corrupt by Git as it might not be able to access the |
| 167 | objects in that packfile. See the `--filter-to=<dir>` option |
| 168 | of linkgit:git-repack[1] and the `objects/info/alternates` |
| 169 | section of linkgit:gitrepository-layout[5]. |
| 170 | |
| 171 | gc.rerereResolved:: |
| 172 | Records of conflicted merge you resolved earlier are |
| 173 | kept for this many days when 'git rerere gc' is run. |
| 174 | You can also use more human-readable "1.month.ago", etc. |
| 175 | The default is 60 days. See linkgit:git-rerere[1]. |
| 176 | |
| 177 | gc.rerereUnresolved:: |
| 178 | Records of conflicted merge you have not resolved are |
| 179 | kept for this many days when 'git rerere gc' is run. |
| 180 | You can also use more human-readable "1.month.ago", etc. |
| 181 | The default is 15 days. See linkgit:git-rerere[1]. |