threads / rfc / 29126

RFC patchshow tracking branches with their associated branch names

Subject: [RFC/PATCH] show tracking branches with their associated branch names

## tl;dr

5 messages between Dec 10, 2011 and Dec 12, 2011. Diffs are folded; open one to read it.

replies: 4people: 3as markdown or json

Santhosh Kumar Mani· Dec 10, 2011, 07:40 UTC · lore

The "git branch" command, by default, displays the local branches. There is no visual distinction made between the tracking branches and normal local branches. This patch enables the "git branch" to display tracking info for tracking branches:

Before this patch:
  $ git branch
  * master
    local
After this patch:
  $ git branch
  * master [origin/master]
    local
Signed-off-by: Santhosh Kumar Mani <santhoshmani@gmail.com>
---
 builtin/branch.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)
Show changes to builtin/branch.c +16 −0
diff --git a/builtin/branch.c b/builtin/branch.c
index e1e486e..4841416 100644
--- a/builtin/branch.c
+++ b/builtin/branch.c
@@ -373,6 +373,19 @@ static int ref_cmp(const void *r1, const void *r2)
 	return strcmp(c1->name, c2->name);
 }
 
+static int get_tracking_branch_name(struct strbuf *name, const char
*branch_name)
+{
+	struct branch *branch = branch_get(branch_name);
+
+	if (branch && branch->merge && branch->merge[0]->dst) {
+		strbuf_addf(name, " [%s]",
+				shorten_unambiguous_ref(branch->merge[0]->dst, 0));
+		return 1;
+	}
+
+	return 0;
+}
+
 static void fill_tracking_info(struct strbuf *stat, const char
*branch_name,
 		int show_upstream_ref)
 {
@@ -475,6 +488,9 @@ static void print_ref_item(struct ref_item *item,
int maxwidth, int verbose,
 	else if (verbose)
 		/* " f7c0c00 [ahead 58, behind 197] vcs-svn: drop obj_pool.h" */
 		add_verbose_info(&out, item, verbose, abbrev);
+	else if (get_tracking_branch_name(&out, item->name))
+		;
+
 	printf("%s\n", out.buf);
 	strbuf_release(&name);
 	strbuf_release(&out);
-- 
1.7.0.4
Vincent van Ravesteijn· Dec 10, 2011, 09:53 UTC · re: Santhosh Kumar Mani · lore

Re: [RFC/PATCH] show tracking branches with their associated branch names

Op 10-12-2011 8:40, Santhosh Kumar Mani schreef:
Show 16 quoted lines
> The "git branch" command, by default, displays the local branches. There
> is no visual distinction made between the tracking branches and normal
> local branches. This patch enables the "git branch" to display
> tracking info for tracking branches:
>
> Before this patch:
>    $ git branch
>    * master
>      local
>
> After this patch:
>    $ git branch
>    * master [origin/master]
>      local
>
>
Did you try "git branch -vv" ?
Vincent
Santhosh Kumar Mani· Dec 10, 2011, 11:23 UTC · re: Vincent van Ravesteijn · lore

Re: [RFC/PATCH] show tracking branches with their associated branch names

On Sat, 2011-12-10 at 10:53 +0100, Vincent van Ravesteijn wrote:
Show 19 quoted lines
> Op 10-12-2011 8:40, Santhosh Kumar Mani schreef:
> > The "git branch" command, by default, displays the local branches. There
> > is no visual distinction made between the tracking branches and normal
> > local branches. This patch enables the "git branch" to display
> > tracking info for tracking branches:
> >
> > Before this patch:
> >    $ git branch
> >    * master
> >      local
> >
> > After this patch:
> >    $ git branch
> >    * master [origin/master]
> >      local
> >
> >
> Did you try "git branch -vv" ?
> 
Yes. I did. It is too verbose as it meant to be.

This patch distinguishes between the tracking and non-tracking local branches.

I use a lot of tracking branches and they track different branches. I tend find this feature useful to know which branch tracks what.

Of course, I could get this information in different ways. But it makes sense to have this information displayed by default.

> Vincent

Regards, Santhosh.

Junio C Hamano· Dec 12, 2011, 07:14 UTC · re: Santhosh Kumar Mani · lore

Re: [RFC/PATCH] show tracking branches with their associated branch names

Santhosh Kumar Mani <santhoshmani@gmail.com> writes:
> Of course, I could get this information in different ways. But it makes
> sense to have this information displayed by default.

It makes sense to make the various information available, but it does not mean it makes sense to add it by default for everybody at all. Given that against all common sense, many newbie web-tips and third-party documents suggest "git branch | sed -ne 's/^\* //p'" as a way to find the current branch in scripts, I am sure such a change will cause trouble to many while only helping a few.

I wouldn't mind a new option --verbose-format=... that takes various formatting letters similar to how --pretty=format:... does, though.

Santhosh· Dec 12, 2011, 14:19 UTC · re: Junio C Hamano · lore

Re: [RFC/PATCH] show tracking branches with their associated branch names

On Mon, Dec 12, 2011 at 12:44 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 8 quoted lines
>
> It makes sense to make the various information available, but it does not
> mean it makes sense to add it by default for everybody at all. Given that
> against all common sense, many newbie web-tips and third-party documents
> suggest "git branch | sed -ne 's/^\* //p'" as a way to find the current
> branch in scripts, I am sure such a change will cause trouble to many
> while only helping a few.
>
You certainly have a point.
> I wouldn't mind a new option --verbose-format=... that takes various
> formatting letters similar to how --pretty=format:... does, though.
>

I will explore this option and see if it is worth the trouble. Probably I can accomplish this locally with an alias.

~Santhosh.

← back to recent threads