Code

git-gui: Expose the browser as a subcommand.
authorShawn O. Pearce <spearce@spearce.org>
Fri, 16 Feb 2007 05:24:03 +0000 (00:24 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Fri, 16 Feb 2007 05:24:03 +0000 (00:24 -0500)
Some users may find being able to browse around an arbitrary
branch to be handy, so we now expose our graphical browser
through `git gui browse <committish>`.

Yes, I'm being somewhat lazy and making the user give us
the name of the branch to browse.  They can always enter
HEAD.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh

index 9ce5a3bdc3805ed0054ee1c3a7b1cd1d06a9e8c1..e7898014acb6f4ddfebe9749dbf56f0df728bde1 100755 (executable)
@@ -3044,7 +3044,14 @@ proc new_browser {commit} {
        global next_browser_id cursor_ptr M1B
        global browser_commit browser_status browser_stack browser_path browser_busy
 
-       set w .browser[incr next_browser_id]
+       if {[winfo ismapped .]} {
+               set w .browser[incr next_browser_id]
+               set tl $w
+               toplevel $w
+       } else {
+               set w {}
+               set tl .
+       }
        set w_list $w.list.l
        set browser_commit($w_list) $commit
        set browser_status($w_list) {Starting...}
@@ -3052,7 +3059,6 @@ proc new_browser {commit} {
        set browser_path($w_list) $browser_commit($w_list):
        set browser_busy($w_list) 1
 
-       toplevel $w
        label $w.path -textvariable browser_path($w_list) \
                -anchor w \
                -justify left \
@@ -3102,8 +3108,8 @@ proc new_browser {commit} {
        bind $w_list <Left>            break
        bind $w_list <Right>           break
 
-       bind $w <Visibility> "focus $w"
-       bind $w <Destroy> "
+       bind $tl <Visibility> "focus $w"
+       bind $tl <Destroy> "
                array unset browser_buffer $w_list
                array unset browser_files $w_list
                array unset browser_status $w_list
@@ -3112,7 +3118,7 @@ proc new_browser {commit} {
                array unset browser_commit $w_list
                array unset browser_busy $w_list
        "
-       wm title $w "[appname] ([reponame]): File Browser"
+       wm title $tl "[appname] ([reponame]): File Browser"
        ls_tree $w_list $browser_commit($w_list) {}
 }
 
@@ -5019,6 +5025,7 @@ enable_option transport
 switch -- $subcommand {
 --version -
 version -
+browser -
 blame {
        disable_option multicommit
        disable_option branch
@@ -5359,6 +5366,15 @@ version {
        puts "git-gui version $appvers"
        exit
 }
+browser {
+       if {[llength $argv] != 1} {
+               puts stderr "usage: $argv0 browser commit"
+               exit 1
+       }
+       set current_branch [lindex $argv 0]
+       new_browser $current_branch
+       return
+}
 blame {
        if {[llength $argv] != 2} {
                puts stderr "usage: $argv0 blame commit path"