diff options
-rw-r--r-- | Documentation/config.txt | 11 | ||||
-rw-r--r-- | Documentation/git-gc.txt | 4 | ||||
-rwxr-xr-x | git-gc.sh | 8 |
3 files changed, 23 insertions, 0 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 0129b1fd69..38655350f2 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -321,6 +321,17 @@ format.headers:: Additional email headers to include in a patch to be submitted by mail. See gitlink:git-format-patch[1]. +gc.packrefs:: + `git gc` does not run `git pack-refs` in a bare repository by + default so that older dumb-transport clients can still fetch + from the repository. Setting this to `true` lets `git + gc` to run `git pack-refs`. Setting this to `false` tells + `git gc` never to run `git pack-refs`. The default setting is + `notbare`. Enable it only when you know you do not have to + support such clients. The default setting will change to `true` + at some stage, and setting this to `false` will continue to + prevent `git pack-refs` from being run from `git gc`. + gc.reflogexpire:: `git reflog expire` removes reflog entries older than this time; defaults to 90 days. diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt index e37758ad15..bc1658434a 100644 --- a/Documentation/git-gc.txt +++ b/Documentation/git-gc.txt @@ -62,6 +62,10 @@ The optional configuration variable 'gc.rerereunresolved' indicates how long records of conflicted merge you have not resolved are kept. This defaults to 15 days. +The optional configuration variable 'gc.packrefs' determines if +`git gc` runs `git-pack-refs`. Without the configuration, `git-pack-refs` +is not run in bare repositories by default, to allow older dumb-transport +clients fetch from the repository, but this will change in the future. See Also -------- @@ -22,6 +22,14 @@ do shift done +case "$(git config --get gc.packrefs)" in +notbare|"") + test $(is_bare_repository) = true || pack_refs=true;; +*) + pack_refs=$(git config --bool --get gc.packrefs) +esac + +test "true" != "$pack_refs" || git-pack-refs --prune && git-reflog expire --all && git-repack -a -d -l && |