diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2007-02-08 19:41:32 -0500 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2007-02-08 19:41:32 -0500 |
commit | 258871d3058a3117d204009b7173bf8c7df2414d (patch) | |
tree | aceafa63846e42cb7fd1f37a5006cf952c2e012d | |
parent | 2ebba528dcb64ec1a408ec3b06cf9f928a7fb76d (diff) | |
download | git-258871d3058a3117d204009b7173bf8c7df2414d.tar.gz git-258871d3058a3117d204009b7173bf8c7df2414d.tar.xz |
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>
-rwxr-xr-x | git-gui.sh | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/git-gui.sh b/git-gui.sh index 66d85dc6d..ff5f5a763 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -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 } } |