From: Nguyễn Thái Ngọc Duy Date: Mon, 16 Jan 2012 09:46:08 +0000 (+0700) Subject: clone: write detached HEAD in bare repositories X-Git-Tag: v1.7.10-rc0~125^2~10 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=7f08c6858ecfdf29f9713cf3a0b3699192f01a94;p=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 Signed-off-by: Junio C Hamano --- diff --git a/builtin/clone.c b/builtin/clone.c index 9dcc5fe77..91862f796 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -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) diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index 49821eb46..e0b8db6c5 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -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 .git' ' git clone --bare src &&