git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[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
Previous: Zbigniew Jędrzejewski-SzmekNext: Zbigniew Jędrzejewski-Szmek
Message 19 of 24 in “provide better error messages for @{upstream}”
  1. 0/5 provide better error messages for @{upstream}Zbigniew Jędrzejewski-Szmek, Apr 11, 2012
  2. 1/5 t1507: add additional tests for @{upstream}Zbigniew Jędrzejewski-Szmek, Apr 11, 2012
  3. Junio C HamanoApr 11, 2012
  4. Junio C HamanoApr 11, 2012
  5. Zbigniew Jędrzejewski-SzmekApr 11, 2012
  6. Matthieu MoyApr 11, 2012
  7. Zbigniew Jędrzejewski-SzmekApr 11, 2012
  8. 2/5 Provide branch name in error message when using @{u}Zbigniew Jędrzejewski-Szmek, Apr 11, 2012
  9. Junio C HamanoApr 11, 2012
  10. Zbigniew Jędrzejewski-SzmekApr 11, 2012
  11. 3/5 Provide better message for barnhc_wiht_tpyo@{u}Zbigniew Jędrzejewski-Szmek, Apr 11, 2012
  12. 4/5 Be more specific if upstream branch is not fetchedZbigniew Jędrzejewski-Szmek, Apr 11, 2012
  13. Jeff KingApr 12, 2012
  14. Zbigniew Jędrzejewski-SzmekApr 12, 2012
  15. Junio C HamanoApr 12, 2012
  16. Jeff KingApr 12, 2012
  17. 0/5 provide better error messages for @{upstream}Zbigniew Jędrzejewski-Szmek, Apr 14, 2012
  18. 1/5 t1507: add tests to document @{upstream} behaviourZbigniew Jędrzejewski-Szmek, Apr 14, 2012
  19. 2/5 Provide branch name in error message when using @{u}Zbigniew Jędrzejewski-Szmek, Apr 14, 2012
  20. 3/5 Provide better message for barnhc_wiht_tpyo@{u}Zbigniew Jędrzejewski-Szmek, Apr 14, 2012
  21. 4/5 Be more specific if upstream branch is not trackedZbigniew Jędrzejewski-Szmek, Apr 14, 2012
  22. 5/5 i18n: mark @{upstream} error messages for translationZbigniew Jędrzejewski-Szmek, Apr 14, 2012
  23. Jeff KingApr 14, 2012
  24. 5/5 i18n: mark @{upstream} error messages for translationZbigniew Jędrzejewski-Szmek, Apr 11, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.