Re: [PATCH 3/3] Teach git-branch -v and -w options

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Lars Hjemli
Date: Sunday, October 22, 2006 - 12:55 pm

On 10/22/06, Junio C Hamano <junkio@cox.net> wrote:

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
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/3] Add -v and -w options to git-branch, Lars Hjemli, (Sun Oct 22, 4:30 am)
[PATCH 1/3] Fix usagestring for git-branch, Lars Hjemli, (Sun Oct 22, 4:30 am)
[PATCH 2/3] Refactor git-branch, Lars Hjemli, (Sun Oct 22, 4:30 am)
[PATCH 3/3] Teach git-branch -v and -w options, Lars Hjemli, (Sun Oct 22, 4:30 am)
Re: [PATCH 3/3] Teach git-branch -v and -w options, Junio C Hamano, (Sun Oct 22, 12:35 pm)
Re: [PATCH 3/3] Teach git-branch -v and -w options, Lars Hjemli, (Sun Oct 22, 12:55 pm)