提交 e3ff4b24 编写于 作者: J Junio C Hamano

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: NJunio C Hamano <junkio@cox.net>
上级 a0022eeb
......@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册