зеркало из https://github.com/microsoft/git.git
Merge branch 'jl/interrupt-clone-remove-separate-git-dir' into maint
When "git clone --separate-git-dir=$over_there" is interrupted, it failed to remove the real location of the $GIT_DIR it created. This was most visible when interrupting a submodule update. * jl/interrupt-clone-remove-separate-git-dir: clone: support atomic operation with --separate-git-dir
This commit is contained in:
Коммит
32e820bdc5
|
@ -771,8 +771,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
|||
die(_("could not create leading directories of '%s'"), git_dir);
|
||||
|
||||
set_git_dir_init(git_dir, real_git_dir, 0);
|
||||
if (real_git_dir)
|
||||
if (real_git_dir) {
|
||||
git_dir = real_git_dir;
|
||||
junk_git_dir = real_git_dir;
|
||||
}
|
||||
|
||||
if (0 <= option_verbosity) {
|
||||
if (option_bare)
|
||||
|
|
|
@ -37,6 +37,16 @@ test_expect_success \
|
|||
|
||||
test_expect_success \
|
||||
'successful clone must leave the directory' \
|
||||
'cd bar'
|
||||
'test -d bar'
|
||||
|
||||
test_expect_success 'failed clone --separate-git-dir should not leave any directories' '
|
||||
mkdir foo/.git/objects.bak/ &&
|
||||
mv foo/.git/objects/* foo/.git/objects.bak/ &&
|
||||
test_must_fail git clone --separate-git-dir gitdir foo worktree &&
|
||||
test_must_fail test -e gitdir &&
|
||||
test_must_fail test -e worktree &&
|
||||
mv foo/.git/objects.bak/* foo/.git/objects/ &&
|
||||
rmdir foo/.git/objects.bak
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче