Re: git-branch --print-current

5 messages, 5 authors, 2016-06-15 · open the first message on its own page

Re: git-branch --print-current

From: Karl Chen <hidden>
Date: 2016-06-15 22:45:52

quoted
quoted
quoted
quoted
On 2009-01-04 00:21 PST, Arnaud Lacombe writes:
    Arnaud> FWIW, I had this in a stalled modification in a tree,
    Arnaud> it just add the '-c' (as "current") option to git
    Arnaud> branch. Patch is mostly for the record :/

Thanks, glad someone else wanted this too.  If we modified
git-symbolic-ref it would probably be less code since it doesn't
have to loop over all branches, though from a UI perspective I
still prefer git-branch.  Anyway doesn't look like people like the
idea so how about that git-rev-parse --symbolic-abbrev-name idea
:)

    Arnaud> The main trouble I have with pipe stuff is that it
    Arnaud> forks a process for something that can be done
    Arnaud> natively. Previously, I was using awk(1) to extract
    Arnaud> the current branch:

    Arnaud> $ git branch | awk '/^\*/ {print $2}'

Yet another addition to the list of ways to pipeline it, this one
probably the shortest :)

[BTW, your patch mime type was application/octet-stream :(]

Re: git-branch --print-current

From: demerphq <hidden>
Date: 2016-06-15 22:45:52

2009/1/4 Karl Chen [off-list ref]:
quoted
quoted
quoted
quoted
quoted
On 2009-01-04 00:21 PST, Arnaud Lacombe writes:
   Arnaud> FWIW, I had this in a stalled modification in a tree,
   Arnaud> it just add the '-c' (as "current") option to git
   Arnaud> branch. Patch is mostly for the record :/

Thanks, glad someone else wanted this too.  If we modified
git-symbolic-ref it would probably be less code since it doesn't
have to loop over all branches, though from a UI perspective I
still prefer git-branch.  Anyway doesn't look like people like the
idea so how about that git-rev-parse --symbolic-abbrev-name idea
:)
FWIW: I like the idea. Ive always thought that a --current flag to git
branch was missing. IOW i should be able to do:

   branch=`git branch --current`

and get back a usable branch name. I dont think one should need to
rely on awk or sed or scripts to find this out, if only for
portability reasons.
   Arnaud> The main trouble I have with pipe stuff is that it
   Arnaud> forks a process for something that can be done
   Arnaud> natively. Previously, I was using awk(1) to extract
   Arnaud> the current branch:

   Arnaud> $ git branch | awk '/^\*/ {print $2}'

Yet another addition to the list of ways to pipeline it, this one
probably the shortest :)
Unfortunately it doesnt work well when you arent on a branch:

  $ git branch | awk '/^\*/ {print $2}'
  (no

So far two apparently expert git people have given solutions to this
problem that don't elegantly handle the edge cases.

That seems to me to be a powerful argument that it is actually more
difficult to do than is being represented here on the list, and
deserves to be native level git functionality.

Cheers,
yves



-- 
perl -Mre=debug -e "/just|another|perl|hacker/"

Re: git-branch --print-current

From: Arnaud Lacombe <hidden>
Date: 2016-06-15 22:45:52

Hi,

On Sun, Jan 4, 2009 at 7:49 AM, demerphq [off-list ref] wrote:
2009/1/4 Karl Chen [off-list ref]:
quoted
On 2009-01-04 00:21 PST, Arnaud Lacombe writes:
   Arnaud> $ git branch | awk '/^\*/ {print $2}'

Yet another addition to the list of ways to pipeline it, this one
probably the shortest :)
Unfortunately it doesnt work well when you arent on a branch:

 $ git branch | awk '/^\*/ {print $2}'
 (no

So far two apparently expert git people have given solutions to this
problem that don't elegantly handle the edge cases.
my bad:
$ git branch | awk '/^\*/ {print substr($0, 3)}'

 - Arnaud

Re: git-branch --print-current

From: Adeodato Simó <hidden>
Date: 2016-06-15 22:45:52

* Karl Chen [Sun, 04 Jan 2009 04:40:51 -0800]:
    Arnaud> $ git branch | awk '/^\*/ {print $2}'
Yet another addition to the list of ways to pipeline it, this one
probably the shortest :)
Heh, if we're playing golf:

              $ git branch | sed -n 's/^\* //p'

-- 
Adeodato Simó                                     dato at net.com.org.es
Debian Developer                                  adeodato at debian.org
 
Que no te vendan amor sin espinas
                -- Joaquín Sabina, Noches de boda

Re: git-branch --print-current

From: Jakub Narebski <hidden>
Date: 2016-06-15 22:45:52

Adeodato Simó [off-list ref] writes:
* Karl Chen [Sun, 04 Jan 2009 04:40:51 -0800]:
quoted
    Arnaud> $ git branch | awk '/^\*/ {print $2}'
quoted
Yet another addition to the list of ways to pipeline it, this one
probably the shortest :)
Heh, if we're playing golf:

              $ git branch | sed -n 's/^\* //p'
Even if you want to reimplement __git_ps1 provided with bash
completion in completion/git-completion.bash instead of reusing it,
you still have to deal with many situations: not being in git
repository, being on detached HEAD, being in intermediate state
(during git-am, git-rebase, git-bisect etc.), etc.  Additionally you
would probably want name of git repository and relative path inside
git repository in prompt.

Therefore you need to use script anyway. And for scripting you should
use plumbing (which output format shouldn't change) and not porcelain
git-branch (which output might change, for example having '-v' on by
default, or something; and you might have color.ui set to true by
mistake and have to deal with color codes). And then you don't need
sed nor awk: POSIX shell features would be enough:

  BR=$(git symbolic-ref HEAD 2>/dev/null)
  BR=${BR#refs/heads/}
  BR=${BR:-HEAD} # one of possibilities to show detached HEAD / no branch

-- 
Jakub Narebski
Poland
ShadeHawk on #git
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help