зеркало из https://github.com/microsoft/git.git
clone: write detached HEAD in bare repositories
If we don't write, HEAD is still at refs/heads/master as initialized by init-db, which may or may not match remote's HEAD. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
bafe763197
Коммит
7f08c6858e
|
@ -764,12 +764,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
|||
}
|
||||
} else if (remote_head) {
|
||||
/* Source had detached HEAD pointing somewhere. */
|
||||
if (!option_bare) {
|
||||
update_ref(reflog_msg.buf, "HEAD",
|
||||
remote_head->old_sha1,
|
||||
NULL, REF_NODEREF, DIE_ON_ERR);
|
||||
our_head_points_at = remote_head;
|
||||
}
|
||||
update_ref(reflog_msg.buf, "HEAD", remote_head->old_sha1,
|
||||
NULL, REF_NODEREF, DIE_ON_ERR);
|
||||
our_head_points_at = remote_head;
|
||||
} else {
|
||||
/* Nothing to checkout out */
|
||||
if (!option_no_checkout)
|
||||
|
|
|
@ -12,7 +12,10 @@ test_expect_success setup '
|
|||
cd src &&
|
||||
>file &&
|
||||
git add file &&
|
||||
git commit -m initial
|
||||
git commit -m initial &&
|
||||
echo 1 >file &&
|
||||
git add file &&
|
||||
git commit -m updated
|
||||
)
|
||||
|
||||
'
|
||||
|
@ -88,6 +91,26 @@ test_expect_success 'clone --mirror' '
|
|||
|
||||
'
|
||||
|
||||
test_expect_success 'clone --mirror with detached HEAD' '
|
||||
|
||||
( cd src && git checkout HEAD^ && git rev-parse HEAD >../expected ) &&
|
||||
git clone --mirror src mirror.detached &&
|
||||
( cd src && git checkout - ) &&
|
||||
GIT_DIR=mirror.detached git rev-parse HEAD >actual &&
|
||||
test_cmp expected actual
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'clone --bare with detached HEAD' '
|
||||
|
||||
( cd src && git checkout HEAD^ && git rev-parse HEAD >../expected ) &&
|
||||
git clone --bare src bare.detached &&
|
||||
( cd src && git checkout - ) &&
|
||||
GIT_DIR=bare.detached git rev-parse HEAD >actual &&
|
||||
test_cmp expected actual
|
||||
|
||||
'
|
||||
|
||||
test_expect_success 'clone --bare names the local repository <name>.git' '
|
||||
|
||||
git clone --bare src &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче