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

[PATCH] Improve "git branch --tracking" output

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 10, 2009, 08:20 UTC
Message-ID
<7v63ihbxgl.fsf_-_@gitster.siamese.dyndns.org>
In-Reply-To
<7vab7tbxo0.fsf@gitster.siamese.dyndns.org>

An earlier patch always spelled the full name of the ref that we track (e.g. "refs/heads/frotz" instead of just "frotz" when we mean the branch whose name is "frotz"). Worse yet, because we now use the true name of the ref at the original repository when talk about a tracking branch that copies from a remote, such a full name alone still does not give enough information.

This reorganizes the verbose codepath to:
 - differentiate "refs/heads/something" and everything else; we say that
   the branch tracks "branch <something>" if it begins with "refs/heads/",
   and otherwise the branch tracks "ref refs/<someother>/<something>";
 - report the name of the remote when we talk about a tracking branch, by
   saying "branch frotz from origin";
 - not say "by merging" at the end; it is the default and is not worth
   reporting.
Signed-off-by: Junio C Hamano <junio@pobox.com>
---
 branch.c |   23 +++++++++++++++++------
 1 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/branch.c b/branch.c
index d20fb04..5f889fe 100644
--- a/branch.c
+++ b/branch.c
@@ -65,12 +65,23 @@ void install_branch_config(int flag, const char *local, const char *origin, cons
 		git_config_set(key.buf, "true");
 	}
 
-	if (flag & BRANCH_CONFIG_VERBOSE)
-		printf("Branch %s set up to track %s branch %s %s.\n",
-		       local,
-		       origin ? "remote" : "local",
-		       remote,
-		       rebasing ? "by rebasing" : "by merging");
+	if (flag & BRANCH_CONFIG_VERBOSE) {
+		strbuf_reset(&key);
+
+		strbuf_addstr(&key, origin ? "remote" : "local");
+
+		/* Are we tracking a proper "branch"? */
+		if (!prefixcmp(remote, "refs/heads/")) {
+			strbuf_addf(&key, " branch %s", remote + 11);
+			if (origin)
+				strbuf_addf(&key, " from %s", origin);
+		}
+		else
+			strbuf_addf(&key, " ref %s", remote);
+		printf("Branch %s set up to track %s%s.\n",
+		       local, key.buf,
+		       rebasing ? " by rebasing" : "");
+	}
 	strbuf_release(&key);
 }
 
Previous: Junio C Hamano
Message 4 of 4 in “[PATCHv5] Make git-clone respect branch.autosetuprebase”
  1. Pat NotzMar 10, 2009
  2. [PATCHv6] Make git-clone respect branch.autosetuprebasePat Notz, Mar 10, 2009
  3. Junio C HamanoMar 10, 2009
  4. Improve "git branch --tracking" outputJunio C Hamano, Mar 10, 2009

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.