summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-02-09 00:41:32 (GMT)
committerShawn O. Pearce <spearce@spearce.org>2007-02-09 00:41:32 (GMT)
commit258871d3058a3117d204009b7173bf8c7df2414d (patch)
treeaceafa63846e42cb7fd1f37a5006cf952c2e012d
parent2ebba528dcb64ec1a408ec3b06cf9f928a7fb76d (diff)
downloadgit-258871d3058a3117d204009b7173bf8c7df2414d.zip
git-258871d3058a3117d204009b7173bf8c7df2414d.tar.gz
git-258871d3058a3117d204009b7173bf8c7df2414d.tar.bz2
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-xgit-gui.sh48
1 files changed, 35 insertions, 13 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 66d85dc..ff5f5a7 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
}
}