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>
This commit is contained in:
parent
a0022eebf3
commit
e3ff4b2447
@ -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
|
||||
-------------
|
||||
|
||||
|
18
git-gc.sh
18
git-gc.sh
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user