[PATCH v2 2/5] Provide branch name in error message when using @{u}
- From
Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
- Date
- Apr 14, 2012, 07:54 UTC
- Message-ID
- <1334390075-25467-3-git-send-email-zbyszek@in.waw.pl>
- In-Reply-To
- <1334390075-25467-1-git-send-email-zbyszek@in.waw.pl>
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> --- I kept the branch name in the error message instead of saying 'current branch'.
sha1_name.c | 12 ++++++++---- t/t1507-rev-parse-upstream.sh | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/sha1_name.c b/sha1_name.c index 03ffc2c..c2fe1aa 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -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); diff --git a/t/t1507-rev-parse-upstream.sh b/t/t1507-rev-parse-upstream.sh index c4981ba..2f4f0d1 100755 --- a/t/t1507-rev-parse-upstream.sh +++ b/t/t1507-rev-parse-upstream.sh @@ -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 && @@ -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 &&
-- 1.7.10.226.gfe575