diff options
author | Junio C Hamano <junkio@cox.net> | 2007-01-22 10:28:28 +0300 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-22 10:28:28 +0300 |
commit | e3ff4b244726f89620201e3295f097cf00b6b502 (patch) | |
tree | 0974a068a5c3ce28d9c132ec232ff8da266beded | |
parent | a0022eebf345a4515c7d148c303911010b1fa834 (diff) |
git-gc: do not run git-prune by default.
git-prune is not safe when run uncontrolled in parallel while
other git operations are creating new objects. To avoid
mistakes, do not run git-prune by default from git-gc.
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | Documentation/git-gc.txt | 17 | ||||
-rwxr-xr-x | git-gc.sh | 18 |
2 files changed, 32 insertions, 3 deletions
diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt index 2bcc9491a3..e37758ad15 100644 --- a/Documentation/git-gc.txt +++ b/Documentation/git-gc.txt @@ -8,7 +8,7 @@ git-gc - Cleanup unnecessary files and optimize the local repository SYNOPSIS -------- -'git-gc' +'git-gc' [--prune] DESCRIPTION ----------- @@ -21,6 +21,21 @@ Users are encouraged to run this task on a regular basis within each repository to maintain good disk space utilization and good operating performance. +OPTIONS +------- + +--prune:: + Usually `git-gc` packs refs, expires old reflog entries, + packs loose objects, + and removes old 'rerere' records. Removal + of unreferenced loose objects is an unsafe operation + while other git operations are in progress, so it is not + done by default. Pass this option if you want it, and only + when you know nobody else is creating new objects in the + repository at the same time (e.g. never use this option + in a cron script). + + Configuration ------------- @@ -4,12 +4,26 @@ # # Cleanup unreachable files and optimize the repository. -USAGE='' +USAGE='git-gc [--prune]' SUBDIRECTORY_OK=Yes . git-sh-setup +no_prune=: +while case $# in 0) break ;; esac +do + case "$1" in + --prune) + no_prune= + ;; + --) + usage + ;; + esac + shift +done + git-pack-refs --prune && git-reflog expire --all && git-repack -a -d -l && -git-prune && +$no_prune git-prune && git-rerere gc || exit |