From c2120e5e4b9f7c548b0c49f914bc0881d7cece6f Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 13 Feb 2007 14:01:42 +0100 Subject: [PATCH] git-gc: run pack-refs by default unless the repo is bare The config variable gc.packrefs is tristate now: "true", "false" and "notbare", where "notbare" is the default. Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- Documentation/config.txt | 11 +++++++++++ Documentation/git-gc.txt | 4 ++++ git-gc.sh | 8 ++++++++ 3 files changed, 23 insertions(+) diff --git a/Documentation/config.txt b/Documentation/config.txt index 0129b1fd6..38655350f 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 e37758ad1..bc1658434 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 -------- diff --git a/git-gc.sh b/git-gc.sh index 3e8c87c81..1a45de5df 100755 --- a/git-gc.sh +++ b/git-gc.sh @@ -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 && -- 2.30.2