Skip to content

Commit

Permalink
Merge branch 'nd/fetch-pack-shallow-fix' into maint
Browse files Browse the repository at this point in the history
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
  • Loading branch information
gitster committed Sep 5, 2013
2 parents bda7904 + 6da8bdc commit 2ea3df6
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
4 changes: 3 additions & 1 deletion fetch-pack.c
Expand Up @@ -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.");

Expand Down Expand Up @@ -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);
Expand Down
16 changes: 16 additions & 0 deletions t/t5500-fetch-pack.sh
Expand Up @@ -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

0 comments on commit 2ea3df6

Please sign in to comment.