Subject: Re: Improving git branch

From: Junio C Hamano <[email-masked]>
Date: Wed, 17 Dec 2014 12:51:36 -0800

John Tapsell <[email-masked]> writes:

>   I'm interested in putting in some time and effort into improving the
> output of "git branch".
>
>   What I'm thinking is an output like this:
>
> $ git branch
>
> 2014-12-17 * (detached from origin/master)     deaba04 Do stuff
> 2014-12-15   john.ta/add_timing_info                6edbcfa  Add timing stuff
> 2014-12-14   master                                          8537316
> [origin/master: ahead 1, behind 16] Some stuff
> 2014-12-12   john.ta/new_reduce_memory       99d84db Reintroduce: memory stuff
> 2014-12-05   john.ta/bugfixes                            e15c95e Add stuff
> 2014-12-03   john.ta/container                           e9fd4e5 This
> branch is a test bed for containers
>
>
> (These columns are supposed to be all aligned nicely..)
>
> So, features:
>
> 1. Show the date of the last commit
> 2. Sort by date.  Most recently used branches at the top
> 3. Show the branch name, including your current "branch", with a * to
> indicate that it's checked out.
> 4. Show the sha
> 5. Show the branch DESCRIPTION - and if that's not available, show the
> short-line of the most recent commit.
>
> There is also a small amount of color here that I can't paste here, to
> follow the coloring in the current git branch.
>
> Before I start making patches etc, what do people think?  Would I have
> a chance of getting this in?  Should I change some aspects etc?

Three random points:

 * A single output format can never be favourite of everybody, so
   this needs to be more like

	$ git branch --format='%(committerdate) %(refname) %(subject)'

   optionally with branch.format configuration variable to let the
   user specify the default.

 * I am not sure if the "current" marker should be anywhere but the
   frontmost column in the recommended default.  The output from the
   command obviously is not meant for machine processing
   (e.g. sorting or grepping), so this point is minor, though.

 * I do not think the object name should take valuable screen real
   estate, again in the built-in default (I wouldn't mind people
   hurting themselves with their configuration at all ;-).  After
   looking at "git branch --pretty-long" output, people can give any
   command john.ta/bugfixes instead of e15c95e, no?