Skip to content

Commit

Permalink
git-gc: run pack-refs by default unless the repo is bare
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Feb 13, 2007
1 parent 85b1f98 commit c2120e5
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
11 changes: 11 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 4 additions & 0 deletions Documentation/git-gc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
--------
Expand Down
8 changes: 8 additions & 0 deletions git-gc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand Down

0 comments on commit c2120e5

Please sign in to comment.