summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 02ac983)
raw | patch | inline | side by side (parent: 02ac983)
author | Tay Ray Chuan <rctay89@gmail.com> | |
Mon, 9 Aug 2010 16:52:26 +0000 (00:52 +0800) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Mon, 9 Aug 2010 19:57:17 +0000 (12:57 -0700) |
Ensure that strcmp() isn't called when head is null.
Previously we were getting segfaults when checkout -B was done from a
detached HEAD.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Previously we were getting segfaults when checkout -B was done from a
detached HEAD.
Signed-off-by: Tay Ray Chuan <rctay89@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
branch.c | patch | blob | history | |
t/t2018-checkout-branch.sh | patch | blob | history |
diff --git a/branch.c b/branch.c
index 2ab42aaf4da38b4ea45ef7f0a0f6b807313d4a22..93dc866f8c09a2da2308c4fd677178b043f2d4d5 100644 (file)
--- a/branch.c
+++ b/branch.c
dont_change_ref = 1;
else if (!force)
die("A branch named '%s' already exists.", name);
- else if (!is_bare_repository() && !strcmp(head, name))
+ else if (!is_bare_repository() && head && !strcmp(head, name))
die("Cannot force update the current branch.");
forcing = 1;
}
index 1caffeac074ed9a8e434a3d6e53c20b00e8672cc..fa69016381b0196c49472af51e36948ec7c5a2a9 100755 (executable)
@@ -124,6 +124,12 @@ test_expect_success 'checkout -B to an existing branch resets branch to HEAD' '
do_checkout branch2 "" -B
'
+test_expect_success 'checkout -B to an existing branch from detached HEAD resets branch to HEAD' '
+ git checkout $(git rev-parse --verify HEAD) &&
+
+ do_checkout branch2 "" -B
+'
+
test_expect_success 'checkout -B to an existing branch with an explicit ref resets branch to that ref' '
git checkout branch1 &&