Skip to content

Commit

Permalink
Provide branch name in error message when using @{u}
Browse files Browse the repository at this point in the history
When using @{u} or @{upstream} it is common to omit the branch name,
implying current branch. If the upstream is not configured, the error
message was "No upstream branch found for ''".

When resolving '@{u}', branch_get() is called, which almost always
returns a description of a branch. This allows us to use a branch name
in the error message, even if the user said something like '@{u}'.

The only case when branch_get() returns NULL is when HEAD points to so
something which is not a branch. Of course this also means that no
upstream is configured, but it is better to directly say that HEAD
does not point to a branch.

Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Zbigniew Jędrzejewski-Szmek authored and Junio C Hamano committed Apr 15, 2012
1 parent 1b4aee9 commit 9884e67
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
12 changes: 8 additions & 4 deletions sha1_name.c
Original file line number Diff line number Diff line change
Expand Up @@ -856,10 +856,14 @@ int interpret_branch_name(const char *name, struct strbuf *buf)
len = cp + tmp_len - name;
cp = xstrndup(name, cp - name);
upstream = branch_get(*cp ? cp : NULL);
if (!upstream
|| !upstream->merge
|| !upstream->merge[0]->dst)
return error("No upstream branch found for '%s'", cp);
/*
* Upstream can be NULL only if cp refers to HEAD and HEAD
* points to something different than a branch.
*/
if (!upstream)
return error("HEAD does not point to a branch");
if (!upstream->merge || !upstream->merge[0]->dst)
return error("No upstream branch found for '%s'", upstream->name);
free(cp);
cp = shorten_unambiguous_ref(upstream->merge[0]->dst, 0);
strbuf_reset(buf);
Expand Down
4 changes: 2 additions & 2 deletions t/t1507-rev-parse-upstream.sh
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ test_expect_success 'branch@{u} error message when no upstream' '

test_expect_success '@{u} error message when no upstream' '
cat >expect <<-EOF &&
error: No upstream branch found for ${sq}${sq}
error: No upstream branch found for ${sq}master${sq}
fatal: Needed a single revision
EOF
test_must_fail git rev-parse --verify @{u} 2>actual &&
Expand All @@ -152,7 +152,7 @@ test_expect_success 'branch@{u} error message with misspelt branch' '

test_expect_success '@{u} error message when not on a branch' '
cat >expect <<-EOF &&
error: No upstream branch found for ${sq}${sq}
error: HEAD does not point to a branch
fatal: Needed a single revision
EOF
git checkout HEAD^0 &&
Expand Down

0 comments on commit 9884e67

Please sign in to comment.