Merge branch 'maint'
authorShawn O. Pearce <spearce@spearce.org>
Wed, 27 Jun 2007 04:36:38 +0000 (00:36 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 27 Jun 2007 04:36:38 +0000 (00:36 -0400)
* maint:
git-gui: Don't require a .pvcsrc to create Tools/Migrate menu hack
git-gui: Don't nice git blame on MSYS as nice is not supported
git-gui: Don't require $DISPLAY just to get --version

1  2 
Makefile
git-gui.sh
diff --combined Makefile
index d277bb128de1524d7a597b0a6d37005ee1c62741,ab550fc6a70f861f7e6eac5295342ccc95aee9a3..1bac6fed46635e2387d16e801294a4750476ddaa
+++ b/Makefile
@@@ -31,35 -31,11 +31,35 @@@ ifndef INSTAL
        INSTALL = install
  endif
  
 +INSTALL_D0 = $(INSTALL) -d -m755 # space is required here
 +INSTALL_D1 =
 +INSTALL_R0 = $(INSTALL) -m644 # space is required here
 +INSTALL_R1 =
 +INSTALL_X0 = $(INSTALL) -m755 # space is required here
 +INSTALL_X1 =
 +INSTALL_L0 = rm -f # space is required here
 +INSTALL_L1 = && ln # space is required here
 +INSTALL_L2 =
 +INSTALL_L3 =
 +
  ifndef V
 -      QUIET_GEN      = @echo '   ' GEN $@;
 -      QUIET_BUILT_IN = @echo '   ' BUILTIN $@;
 -      QUIET_INDEX    = @echo '   ' INDEX $(dir $@);
 +      QUIET          = @
 +      QUIET_GEN      = $(QUIET)echo '   ' GEN $@ &&
 +      QUIET_BUILT_IN = $(QUIET)echo '   ' BUILTIN $@ &&
 +      QUIET_INDEX    = $(QUIET)echo '   ' INDEX $(dir $@) &&
        QUIET_2DEVNULL = 2>/dev/null
 +
 +      INSTALL_D0 = dir=
 +      INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m755 "$$dir"
 +      INSTALL_R0 = src=
 +      INSTALL_R1 = && echo '   ' INSTALL 644 `basename $$src` && $(INSTALL) -m644 $$src
 +      INSTALL_X0 = src=
 +      INSTALL_X1 = && echo '   ' INSTALL 755 `basename $$src` && $(INSTALL) -m755 $$src
 +
 +      INSTALL_L0 = dst=
 +      INSTALL_L1 = && src=
 +      INSTALL_L2 = && dst=
 +      INSTALL_L3 = && echo '   ' 'LINK       ' `basename "$$dst"` '->' `basename "$$src"` && rm -f "$$dst" && ln "$$src" "$$dst"
  endif
  
  TCL_PATH   ?= tclsh
@@@ -92,7 -68,7 +92,7 @@@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %
                fi; \
        fi && \
        sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
-               -e 's|^exec wish "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' \
+               -e 's|^ exec wish "$$0"| exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' \
                -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
                -e 's|@@GITGUI_RELATIVE@@|'$$GITGUI_RELATIVE'|' \
                -e $$GITGUI_RELATIVE's|@@GITGUI_LIBDIR@@|$(libdir_SQ)|' \
@@@ -139,12 -115,12 +139,12 @@@ GIT-GUI-VARS: .FORCE-GIT-GUI-VAR
  all:: $(ALL_PROGRAMS) lib/tclIndex
  
  install: all
 -      $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(gitexecdir_SQ)'
 -      $(INSTALL) git-gui '$(DESTDIR_SQ)$(gitexecdir_SQ)'
 -      $(foreach p,$(GITGUI_BUILT_INS), rm -f '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git-gui' '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;)
 -      $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(libdir_SQ)'
 -      $(INSTALL) -m644 lib/tclIndex '$(DESTDIR_SQ)$(libdir_SQ)'
 -      $(foreach p,$(ALL_LIBFILES), $(INSTALL) -m644 $p '$(DESTDIR_SQ)$(libdir_SQ)' ;)
 +      $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(gitexecdir_SQ)' $(INSTALL_D1)
 +      $(QUIET)$(INSTALL_X0)git-gui $(INSTALL_X1) '$(DESTDIR_SQ)$(gitexecdir_SQ)'
 +      $(QUIET)$(foreach p,$(GITGUI_BUILT_INS), $(INSTALL_L0)'$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' $(INSTALL_L1)'$(DESTDIR_SQ)$(gitexecdir_SQ)/git-gui' $(INSTALL_L2)'$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' $(INSTALL_L3) &&) true
 +      $(QUIET)$(INSTALL_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(INSTALL_D1)
 +      $(QUIET)$(INSTALL_R0)lib/tclIndex $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)'
 +      $(QUIET)$(foreach p,$(ALL_LIBFILES), $(INSTALL_R0)$p $(INSTALL_R1) '$(DESTDIR_SQ)$(libdir_SQ)' &&) true
  
  dist-version:
        @mkdir -p $(TARDIR)
diff --combined git-gui.sh
index 3237f3d59627d60e3d5ac18ee588a61b0ce87576,4fbc408c4d0a1f950c7d32768ed55cbd91005023..9df2e47029cd6b7dedf0417d6028226b868e953d
@@@ -1,6 -1,12 +1,12 @@@
  #!/bin/sh
  # Tcl ignores the next line -*- tcl -*- \
- exec wish "$0" -- "$@"
+  if test "z$*" = zversion \
+  || test "z$*" = z--version; \
+  then \
+       echo 'git-gui version @@GITGUI_VERSION@@'; \
+       exit; \
+  fi; \
+  exec wish "$0" -- "$@"
  
  set appvers {@@GITGUI_VERSION@@}
  set copyright {
@@@ -36,24 -42,6 +42,24 @@@ if {[catch {package require Tcl 8.4} er
        exit 1
  }
  
 +######################################################################
 +##
 +## enable verbose loading?
 +
 +if {![catch {set _verbose $env(GITGUI_VERBOSE)}]} {
 +      unset _verbose
 +      rename auto_load real__auto_load
 +      proc auto_load {name args} {
 +              puts stderr "auto_load $name"
 +              return [uplevel 1 real__auto_load $name $args]
 +      }
 +      rename source real__source
 +      proc source {name} {
 +              puts stderr "source    $name"
 +              uplevel 1 real__source $name
 +      }
 +}
 +
  ######################################################################
  ##
  ## configure our library
@@@ -66,33 -54,26 +72,33 @@@ if {$oguirel eq {1}} 
  } elseif {[string match @@* $oguirel]} {
        set oguilib [file join [file dirname [file normalize $argv0]] lib]
  }
 +
  set idx [file join $oguilib tclIndex]
 -catch {
 -      set fd [open $idx r]
 -      if {[gets $fd] eq {# Autogenerated by git-gui Makefile}} {
 -              set idx [list]
 -              while {[gets $fd n] >= 0} {
 -                      if {$n ne {} && ![string match #* $n]} {
 -                              lappend idx $n
 -                      }
 +if {[catch {set fd [open $idx r]} err]} {
 +      catch {wm withdraw .}
 +      tk_messageBox \
 +              -icon error \
 +              -type ok \
 +              -title "git-gui: fatal error" \
 +              -message $err
 +      exit 1
 +}
 +if {[gets $fd] eq {# Autogenerated by git-gui Makefile}} {
 +      set idx [list]
 +      while {[gets $fd n] >= 0} {
 +              if {$n ne {} && ![string match #* $n]} {
 +                      lappend idx $n
                }
 -      } else {
 -              set idx {}
        }
 -      close $fd
 +} else {
 +      set idx {}
  }
 +close $fd
 +
  if {$idx ne {}} {
        set loaded [list]
        foreach p $idx {
                if {[lsearch -exact $loaded $p] >= 0} continue
 -              puts $p
                source [file join $oguilib $p]
                lappend loaded $p
        }
  } else {
        set auto_path [concat [list $oguilib] $auto_path]
  }
 -unset -nocomplain oguilib oguirel idx fd
 -
 -if {![catch {set _verbose $env(GITGUI_VERBOSE)}]} {
 -      unset _verbose
 -      rename auto_load real__auto_load
 -      proc auto_load {name args} {
 -              puts stderr "auto_load $name"
 -              return [uplevel 1 real__auto_load $name $args]
 -      }
 -      rename source real__source
 -      proc source {name} {
 -              puts stderr "source    $name"
 -              uplevel 1 real__source $name
 -      }
 -}
 +unset -nocomplain oguirel idx fd
  
  ######################################################################
  ##
@@@ -216,15 -211,6 +222,15 @@@ proc is_config_true {name} 
        }
  }
  
 +proc get_config {name} {
 +      global repo_config
 +      if {[catch {set v $repo_config($name)}]} {
 +              return {}
 +      } else {
 +              return $v
 +      }
 +}
 +
  proc load_config {include_global} {
        global repo_config global_config default_config
  
@@@ -278,17 -264,6 +284,17 @@@ proc git {args} 
        return [eval exec git $args]
  }
  
 +proc current-branch {} {
 +      set ref {}
 +      set fd [open [gitdir HEAD] r]
 +      if {[gets $fd ref] <16
 +       || ![regsub {^ref: refs/heads/} $ref {} ref]} {
 +              set ref {}
 +      }
 +      close $fd
 +      return $ref
 +}
 +
  auto_load tk_optionMenu
  rename tk_optionMenu real__tkOptionMenu
  proc tk_optionMenu {w varName args} {
  ##
  ## version check
  
- if {{--version} eq $argv || {version} eq $argv} {
-       puts "git-gui version $appvers"
-       exit
- }
  set req_maj 1
  set req_min 5
  
@@@ -437,7 -407,15 +438,7 @@@ proc repository_state {ctvar hdvar mhva
  
        set mh [list]
  
 -      if {[catch {set current_branch [git symbolic-ref HEAD]}]} {
 -              set current_branch {}
 -      } else {
 -              regsub ^refs/((heads|tags|remotes)/)? \
 -                      $current_branch \
 -                      {} \
 -                      current_branch
 -      }
 -
 +      set current_branch [current-branch]
        if {[catch {set hd [git rev-parse --verify HEAD]}]} {
                set hd {}
                set ct initial
@@@ -1253,10 -1231,6 +1254,10 @@@ foreach class {Button Checkbutton Entr
  }
  unset class
  
 +if {[is_Windows] || [is_MacOSX]} {
 +      option add *Menu.tearOff 0
 +}
 +
  if {[is_MacOSX]} {
        set M1B M1
        set M1T Cmd
@@@ -1287,13 -1261,11 +1288,13 @@@ proc apply_config {} 
        }
  }
  
 +set default_config(merge.diffstat) true
  set default_config(merge.summary) false
  set default_config(merge.verbosity) 2
  set default_config(user.name) {}
  set default_config(user.email) {}
  
 +set default_config(gui.pruneduringfetch) false
  set default_config(gui.trustmtime) false
  set default_config(gui.diffcontext) 5
  set default_config(gui.newbranchtemplate) {}
@@@ -1455,11 -1427,6 +1456,11 @@@ if {[is_enabled branch]} 
        lappend disable_on_lock [list .mbar.branch entryconf \
                [.mbar.branch index last] -state]
  
 +      .mbar.branch add command -label {Rename...} \
 +              -command branch_rename::dialog
 +      lappend disable_on_lock [list .mbar.branch entryconf \
 +              [.mbar.branch index last] -state]
 +
        .mbar.branch add command -label {Delete...} \
                -command do_delete_branch
        lappend disable_on_lock [list .mbar.branch entryconf \
@@@ -1557,8 -1524,6 +1558,8 @@@ if {[is_enabled transport]} 
        menu .mbar.push
        .mbar.push add command -label {Push...} \
                -command do_push_anywhere
 +      .mbar.push add command -label {Delete...} \
 +              -command remote_branch_delete::dialog
  }
  
  if {[is_MacOSX]} {
  
        # -- Tools Menu
        #
-       if {[file exists /usr/local/miga/lib/gui-miga]
-               && [file exists .pvcsrc]} {
+       if {[is_Cygwin] && [file exists /usr/local/miga/lib/gui-miga]} {
        proc do_miga {} {
                global ui_status_value
                if {![lock_index update]} return
@@@ -1676,8 -1640,14 +1676,8 @@@ switch -- $subcommand 
  browser {
        set subcommand_args {rev?}
        switch [llength $argv] {
 -      0 {
 -              set current_branch [git symbolic-ref HEAD]
 -              regsub ^refs/((heads|tags|remotes)/)? \
 -                      $current_branch {} current_branch
 -      }
 -      1 {
 -              set current_branch [lindex $argv 0]
 -      }
 +      0 { set current_branch [current-branch] }
 +      1 { set current_branch [lindex $argv 0] }
        default usage
        }
        browser::new $current_branch
@@@ -1710,7 -1680,9 +1710,7 @@@ blame 
        unset is_path
  
        if {$head eq {}} {
 -              set current_branch [git symbolic-ref HEAD]
 -              regsub ^refs/((heads|tags|remotes)/)? \
 -                      $current_branch {} current_branch
 +              set current_branch [current-branch]
        } else {
                set current_branch $head
        }