5b92477f89
Expose the new `git repack --cruft` mode from `git gc` via a new opt-in flag. When invoked like `git gc --cruft`, `git gc` will avoid exploding unreachable objects as loose ones, and instead create a cruft pack and `.mtimes` file. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
144 lines
5.8 KiB
Plaintext
144 lines
5.8 KiB
Plaintext
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 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 background
|
|
if the system supports it. Default is true.
|
|
|
|
gc.bigPackThreshold::
|
|
If non-zero, all packs larger than this limit are kept when
|
|
`git gc` is run. This is very similar to `--keep-largest-pack`
|
|
except that all 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 `false`.
|
|
|
|
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.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].
|