aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2007-02-13 14:01:42 +0100
committerJunio C Hamano <junkio@cox.net>2007-02-13 09:19:34 -0800
commitc2120e5e4b9f7c548b0c49f914bc0881d7cece6f (patch)
tree84b26d22f171fb249428fc22c533c50921f9cbb5
parent85b1f98871f19617ff7ee8ec245fe4e817a74aa4 (diff)
downloadgit-c2120e5e4b9f7c548b0c49f914bc0881d7cece6f.tar.gz
git-c2120e5e4b9f7c548b0c49f914bc0881d7cece6f.tar.xz
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 <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--Documentation/config.txt11
-rw-r--r--Documentation/git-gc.txt4
-rwxr-xr-xgit-gc.sh8
3 files changed, 23 insertions, 0 deletions
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 &&