From 9884e67f9d9b511592b981572cfbb30cc50aec61 Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Sat, 14 Apr 2012 09:54:32 +0200 Subject: Provide branch name in error message when using @{u} MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Junio C Hamano --- sha1_name.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'sha1_name.c') diff --git a/sha1_name.c b/sha1_name.c index 03ffc2caaa..c2fe1aae52 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); -- cgit v1.2.3