git-gui: Select subcommands like git does.

If we are invoked as `git-foo`, then we should run the `foo` subcommand,
as the user has made some sort of link from `git-foo` to our actual
program code.  So we should honor their request.

If we are invoked as `git-gui foo`, the user has not made a link (or
did, but is not using it right now) so we should execute the `foo`
subcommand.

We now can start the single commit UI mode via `git-citool` and also
through `git gui citool`.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Shawn O. Pearce 2007-02-08 19:41:32 -05:00
Родитель 2ebba528dc
Коммит 258871d305
1 изменённых файлов: 35 добавлений и 13 удалений

Просмотреть файл

@ -4917,20 +4917,32 @@ apply_config
##
## feature option selection
if {[regexp {^git-(.+)$} [appname] _junk subcommand]} {
unset _junk
} else {
set subcommand gui
}
if {$subcommand eq {gui.sh}} {
set subcommand gui
}
if {$subcommand eq {gui} && [llength $argv] > 0} {
set subcommand [lindex $argv 0]
set argv [lrange $argv 1 end]
}
enable_option multicommit
enable_option branch
enable_option transport
if {[appname] eq {git-citool}} {
enable_option singlecommit
switch -- $subcommand {
blame {
disable_option multicommit
disable_option branch
disable_option transport
}
citool {
enable_option singlecommit
switch -- [lindex $argv 0] {
blame {
disable_option multicommit
disable_option branch
disable_option transport
@ -5257,20 +5269,30 @@ bind all <$M1B-Key-W> {destroy [winfo toplevel %W]}
# -- Not a normal commit type invocation? Do that instead!
#
switch -- [lindex $argv 0] {
switch -- $subcommand {
blame {
if {[llength $argv] == 3} {
set current_branch [lindex $argv 1]
show_blame $current_branch [lindex $argv 2]
return
} else {
if {[llength $argv] != 2} {
puts stderr "usage: $argv0 blame commit path"
exit 1
}
set current_branch [lindex $argv 0]
show_blame $current_branch [lindex $argv 1]
return
}
citool -
gui {
if {[llength $argv] != 0} {
puts -nonewline stderr "usage: $argv0"
if {$subcommand ne {gui} && [appname] ne "git-$subcommand"} {
puts -nonewline stderr " $subcommand"
}
puts stderr {}
exit 1
}
# fall through to setup UI for commits
}
{} {}
default {
puts stderr "usage: $argv0 \[{blame}\]"
puts stderr "usage: $argv0 \[{blame|citool}\]"
exit 1
}
}