allow deepening of a shallow repository
Now, by saying "git fetch -depth <n> <repo>" you can deepen a shallow repository. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
committed by
Junio C Hamano
parent
016e6ccbe0
commit
f53514bc2d
14
git-fetch.sh
14
git-fetch.sh
@ -21,6 +21,7 @@ update_head_ok=
|
||||
exec=
|
||||
upload_pack=
|
||||
keep=
|
||||
shallow_depth=
|
||||
while case "$#" in 0) break ;; esac
|
||||
do
|
||||
case "$1" in
|
||||
@ -56,6 +57,13 @@ do
|
||||
--reflog-action=*)
|
||||
rloga=`expr "z$1" : 'z-[^=]*=\(.*\)'`
|
||||
;;
|
||||
--depth=*)
|
||||
shallow_depth="--depth=`expr "z$1" : 'z-[^=]*=\(.*\)'`"
|
||||
;;
|
||||
--depth)
|
||||
shift
|
||||
shallow_depth="--depth=$1"
|
||||
;;
|
||||
-*)
|
||||
usage
|
||||
;;
|
||||
@ -296,6 +304,8 @@ fetch_main () {
|
||||
# There are transports that can fetch only one head at a time...
|
||||
case "$remote" in
|
||||
http://* | https://* | ftp://*)
|
||||
test -n "$shallow_depth" &&
|
||||
die "shallow clone with http not supported"
|
||||
proto=`expr "$remote" : '\([^:]*\):'`
|
||||
if [ -n "$GIT_SSL_NO_VERIFY" ]; then
|
||||
curl_extra_args="-k"
|
||||
@ -324,6 +334,8 @@ fetch_main () {
|
||||
git-http-fetch -v -a "$head" "$remote/" || exit
|
||||
;;
|
||||
rsync://*)
|
||||
test -n "$shallow_depth" &&
|
||||
die "shallow clone with rsync not supported"
|
||||
TMP_HEAD="$GIT_DIR/TMP_HEAD"
|
||||
rsync -L -q "$remote/$remote_name" "$TMP_HEAD" || exit 1
|
||||
head=$(git-rev-parse --verify TMP_HEAD)
|
||||
@ -371,7 +383,7 @@ fetch_main () {
|
||||
pack_lockfile=
|
||||
IFS=" $LF"
|
||||
(
|
||||
git-fetch-pack --thin $exec $keep "$remote" $rref || echo failed "$remote"
|
||||
git-fetch-pack --thin $exec $keep $shallow_depth "$remote" $rref || echo failed "$remote"
|
||||
) |
|
||||
while read sha1 remote_name
|
||||
do
|
||||
|
||||
Reference in New Issue
Block a user