Browse Source

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

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
maint
Junio C Hamano 12 years ago
parent
commit
2ea3df68e8
  1. 4
      fetch-pack.c
  2. 16
      t/t5500-fetch-pack.sh

4
fetch-pack.c

@ -897,6 +897,8 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args, @@ -897,6 +897,8 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
packet_flush(fd[1]);
if (args->depth > 0)
setup_alternate_shallow();
else
alternate_shallow_file = NULL;
if (get_pack(args, fd, pack_lockfile))
die("git fetch-pack: fetch failed.");

@ -987,7 +989,7 @@ struct ref *fetch_pack(struct fetch_pack_args *args, @@ -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);

if (alternate_shallow_file) {
if (args->depth > 0 && alternate_shallow_file) {
if (*alternate_shallow_file == '\0') { /* --unshallow */
unlink_or_warn(git_path("shallow"));
rollback_lock_file(&shallow_lock);

16
t/t5500-fetch-pack.sh

@ -505,4 +505,20 @@ test_expect_success 'test --all, --depth, and explicit tag' ' @@ -505,4 +505,20 @@ test_expect_success 'test --all, --depth, and explicit tag' '
) >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

Loading…
Cancel
Save