git-gui: Allow browser subcommand to start in subdirectory
Like our blame subcommand the browser subcommand now accepts both a revision and a path, just a revision or just a path. This way the user can start the subcommand on any branch, or on any subtree. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
c52c94524b
commit
85d2d59760
46
git-gui.sh
46
git-gui.sh
@ -1976,27 +1976,7 @@ proc usage {} {
|
||||
# -- Not a normal commit type invocation? Do that instead!
|
||||
#
|
||||
switch -- $subcommand {
|
||||
browser {
|
||||
set subcommand_args {rev?}
|
||||
switch [llength $argv] {
|
||||
0 { load_current_branch }
|
||||
1 {
|
||||
set current_branch [lindex $argv 0]
|
||||
if {[regexp {^[0-9a-f]{1,39}$} $current_branch]} {
|
||||
if {[catch {
|
||||
set current_branch \
|
||||
[git rev-parse --verify $current_branch]
|
||||
} err]} {
|
||||
puts stderr $err
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
}
|
||||
default usage
|
||||
}
|
||||
browser::new $current_branch
|
||||
return
|
||||
}
|
||||
browser -
|
||||
blame {
|
||||
set subcommand_args {rev? path}
|
||||
if {$argv eq {}} usage
|
||||
@ -2044,12 +2024,26 @@ blame {
|
||||
set current_branch $head
|
||||
}
|
||||
|
||||
if {$head eq {} && ![file exists $path]} {
|
||||
puts stderr "fatal: cannot stat path $path: No such file or directory"
|
||||
exit 1
|
||||
switch -- $subcommand {
|
||||
browser {
|
||||
if {$head eq {}} {
|
||||
if {$path ne {} && [file isdirectory $path]} {
|
||||
set head $current_branch
|
||||
} else {
|
||||
set head $path
|
||||
set path {}
|
||||
}
|
||||
}
|
||||
browser::new $head $path
|
||||
}
|
||||
blame {
|
||||
if {$head eq {} && ![file exists $path]} {
|
||||
puts stderr "fatal: cannot stat path $path: No such file or directory"
|
||||
exit 1
|
||||
}
|
||||
blame::new $head $path
|
||||
}
|
||||
}
|
||||
|
||||
blame::new $head $path
|
||||
return
|
||||
}
|
||||
citool -
|
||||
|
@ -13,13 +13,13 @@ field browser_busy 1
|
||||
|
||||
field ls_buf {}; # Buffered record output from ls-tree
|
||||
|
||||
constructor new {commit} {
|
||||
constructor new {commit {path {}}} {
|
||||
global cursor_ptr M1B
|
||||
make_toplevel top w
|
||||
wm title $top "[appname] ([reponame]): File Browser"
|
||||
|
||||
set browser_commit $commit
|
||||
set browser_path $browser_commit:
|
||||
set browser_path $browser_commit:$path
|
||||
|
||||
label $w.path \
|
||||
-textvariable @browser_path \
|
||||
@ -73,7 +73,11 @@ constructor new {commit} {
|
||||
|
||||
bind $w_list <Visibility> [list focus $w_list]
|
||||
set w $w_list
|
||||
_ls $this $browser_commit
|
||||
if {$path ne {}} {
|
||||
_ls $this $browser_commit:$path $path
|
||||
} else {
|
||||
_ls $this $browser_commit $path
|
||||
}
|
||||
return $this
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user