summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConrad Irwin <conrad.irwin@gmail.com>2011-08-20 21:49:49 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-08-22 23:03:43 (GMT)
commit587a9ee7da348f5e6696720d770d0e0da597827c (patch)
treea5d378daeaec78a7d513056071b78c419b0ed515
parent55c4a673070f40f2ef12d0be269e95f1df6825a9 (diff)
downloadgit-587a9ee7da348f5e6696720d770d0e0da597827c.zip
git-587a9ee7da348f5e6696720d770d0e0da597827c.tar.gz
git-587a9ee7da348f5e6696720d770d0e0da597827c.tar.bz2
Show interpreted branch name in error messages
Change the error message when doing: "git branch @{-1}", "git checkout -b @{-1}", or "git branch -m foo @{-1}" * was: A branch named '@{-1}' already exists. * now: A branch named 'bar' already exists. Signed-off-by: Conrad Irwin <conrad.irwin@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--branch.c2
-rwxr-xr-xt/t2018-checkout-branch.sh9
2 files changed, 10 insertions, 1 deletions
diff --git a/branch.c b/branch.c
index ff84b5b..1fe3078 100644
--- a/branch.c
+++ b/branch.c
@@ -146,7 +146,7 @@ int validate_new_branchname(const char *name, struct strbuf *ref, int force)
if (!ref_exists(ref->buf))
return 0;
else if (!force)
- die("A branch named '%s' already exists.", name);
+ die("A branch named '%s' already exists.", ref->buf + strlen("refs/heads/"));
head = resolve_ref("HEAD", sha1, 0, NULL);
if (!is_bare_repository() && head && !strcmp(head, ref->buf))
diff --git a/t/t2018-checkout-branch.sh b/t/t2018-checkout-branch.sh
index b66db2b..75874e8 100755
--- a/t/t2018-checkout-branch.sh
+++ b/t/t2018-checkout-branch.sh
@@ -118,6 +118,15 @@ test_expect_success 'checkout -b to an existing branch fails' '
test_must_fail do_checkout branch2 $HEAD2
'
+test_expect_success 'checkout -b to @{-1} fails with the right branch name' '
+ git reset --hard HEAD &&
+ git checkout branch1 &&
+ git checkout branch2 &&
+ echo >expect "fatal: A branch named '\''branch1'\'' already exists." &&
+ test_must_fail git checkout -b @{-1} 2>actual &&
+ test_cmp expect actual
+'
+
test_expect_success 'checkout -B to an existing branch resets branch to HEAD' '
git checkout branch1 &&