зеркало из https://github.com/microsoft/git.git
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:
Коммит
e250020cd0
|
@ -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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче