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>
This commit is contained in:
Johannes Schindelin
2007-02-13 14:01:42 +01:00
committed by Junio C Hamano
parent 85b1f98871
commit c2120e5e4b
3 changed files with 23 additions and 0 deletions

View File

@ -321,6 +321,17 @@ format.headers::
Additional email headers to include in a patch to be submitted Additional email headers to include in a patch to be submitted
by mail. See gitlink:git-format-patch[1]. 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:: gc.reflogexpire::
`git reflog expire` removes reflog entries older than `git reflog expire` removes reflog entries older than
this time; defaults to 90 days. this time; defaults to 90 days.

View File

@ -62,6 +62,10 @@ The optional configuration variable 'gc.rerereunresolved' indicates
how long records of conflicted merge you have not resolved are how long records of conflicted merge you have not resolved are
kept. This defaults to 15 days. 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 See Also
-------- --------

View File

@ -22,6 +22,14 @@ do
shift shift
done 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-pack-refs --prune &&
git-reflog expire --all && git-reflog expire --all &&
git-repack -a -d -l && git-repack -a -d -l &&