Merge branch 'nd/fetch-pack-shallow-fix'

The recent "short-cut clone connectivity check" topic broke a
shallow repository when a fetch operation tries to auto-follow tags.

* nd/fetch-pack-shallow-fix:
  fetch-pack: do not remove .git/shallow file when --depth is not specified
This commit is contained in:
Junio C Hamano 2013-08-30 10:05:55 -07:00
Родитель e230c568c4 6da8bdcbbf
Коммит e250020cd0
2 изменённых файлов: 19 добавлений и 1 удалений

Просмотреть файл

@ -897,6 +897,8 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
packet_flush(fd[1]); packet_flush(fd[1]);
if (args->depth > 0) if (args->depth > 0)
setup_alternate_shallow(); setup_alternate_shallow();
else
alternate_shallow_file = NULL;
if (get_pack(args, fd, pack_lockfile)) if (get_pack(args, fd, pack_lockfile))
die("git fetch-pack: fetch failed."); die("git fetch-pack: fetch failed.");
@ -987,7 +989,7 @@ struct ref *fetch_pack(struct fetch_pack_args *args,
} }
ref_cpy = do_fetch_pack(args, fd, ref, sought, nr_sought, pack_lockfile); ref_cpy = do_fetch_pack(args, fd, ref, sought, nr_sought, pack_lockfile);
if (alternate_shallow_file) { if (args->depth > 0 && alternate_shallow_file) {
if (*alternate_shallow_file == '\0') { /* --unshallow */ if (*alternate_shallow_file == '\0') { /* --unshallow */
unlink_or_warn(git_path("shallow")); unlink_or_warn(git_path("shallow"));
rollback_lock_file(&shallow_lock); rollback_lock_file(&shallow_lock);

Просмотреть файл

@ -505,4 +505,20 @@ test_expect_success 'test --all, --depth, and explicit tag' '
) >out-adt 2>error-adt ) >out-adt 2>error-adt
' '
test_expect_success 'shallow fetch with tags does not break the repository' '
mkdir repo1 &&
(
cd repo1 &&
git init &&
test_commit 1 &&
test_commit 2 &&
test_commit 3 &&
mkdir repo2 &&
cd repo2 &&
git init &&
git fetch --depth=2 ../.git master:branch &&
git fsck
)
'
test_done test_done