On 10/22/06, Junio C Hamano <junkio@xxxxxxx> wrote:
If you are going in this direction, probably you would want to refactor 2/3 a bit differently, so that you do not have to duplicate the same printf for local and remote cases?
I actually did, but then abandoned it since it would change the output for remote branches (two spaces indent). I didn't want to cause any regressions :-) But if that's ok, my abandoned patch contained this: @@ -48,14 +48,35 @@ If you are sure you want to delete it, r exit 0 } -ls_remote_branches () { - git-rev-parse --symbolic --all | - sed -ne 's|^refs/\(remotes/\)|\1|p' | - sort -} -+width=20 +sedmatch="^refs/heads/" +sedsubst= +verbose= force= create_log= + +ls_refs () { + git-rev-parse --symbolic --all | + sed -ne "s|$sedmatch|$sedsubst|p" | + sort | + while read ref + do + if test "$headref" = "$ref" + then + pfx='*' + else + pfx=' ' + fi + if test "$verbose" = "yes" + then + log=$(git-log --max-count=1 --pretty=oneline $ref) + printf "%s %-*s %s\n" "$pfx" "$width" "$ref" "$log" + else + echo "$pfx $ref" + fi + done +} + while case "$#,$1" in 0,*) break ;; *,-*) ;; *) break ;; esac do case "$1" in @@ -64,8 +85,8 @@ do exit ;; -r) - ls_remote_branches - exit + sedmatch="^refs/\(remotes/\)" + sedsubst="\1" ;; -f) force="$1" @@ -73,6 +94,13 @@ do -l) create_log="yes" ;; + -v) + verbose="yes" + ;; + -w) + shift + width=$1 + ;; --) shift break @@ -86,18 +114,7 @@ done case "$#" in 0) - git-rev-parse --symbolic --branches | - sort | - while read ref - do - if test "$headref" = "$ref" - then - pfx='*' - else - pfx=' ' - fi - echo "$pfx $ref" - done + ls_refs exit 0 ;; 1) head=HEAD ;; And then I added -a and -t (for "all" and "tags", obviously), and felt I went over the top :-) Btw: in the meantime, Kristian Høgsberg pointed me to an earlier thread regarding making git-branch a builtin, which I'm going to look at tonight. So many options, so little time :-) I'm open for suggestions/preferences etc... -- larsh - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html