Merge branch 'maint'
authorShawn O. Pearce <spearce@spearce.org>
Wed, 2 May 2007 16:45:31 +0000 (12:45 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 2 May 2007 16:45:31 +0000 (12:45 -0400)
* maint:
git-gui: Allow spaces in path to 'wish'

1  2 
git-gui.sh
diff --combined git-gui.sh
index 3f41bd72433d41dca0f568ca263d470efe615144,ae881336dac0807d1f4a026b649c75febdc1b8b3..0ad2815d1086d3843fbb093cc3d984aee4f63e3f
@@@ -242,8 -242,6 +242,8 @@@ proc error_popup {msg} 
        if {[reponame] ne {}} {
                append title " ([reponame])"
        }
 +      option add *Dialog.msg.font font_ui
 +      option add *Button.font font_ui
        set cmd [list tk_messageBox \
                -icon error \
                -type ok \
@@@ -260,8 -258,6 +260,8 @@@ proc warn_popup {msg} 
        if {[reponame] ne {}} {
                append title " ([reponame])"
        }
 +      option add *Dialog.msg.font font_ui
 +      option add *Button.font font_ui
        set cmd [list tk_messageBox \
                -icon warning \
                -type ok \
@@@ -278,8 -274,6 +278,8 @@@ proc info_popup {msg {parent .}} 
        if {[reponame] ne {}} {
                append title " ([reponame])"
        }
 +      option add *Dialog.msg.font font_ui
 +      option add *Button.font font_ui
        tk_messageBox \
                -parent $parent \
                -icon info \
@@@ -293,8 -287,6 +293,8 @@@ proc ask_popup {msg} 
        if {[reponame] ne {}} {
                append title " ([reponame])"
        }
 +      option add *Dialog.msg.font font_ui
 +      option add *Button.font font_ui
        return [tk_messageBox \
                -parent . \
                -icon question \
@@@ -735,9 -727,12 +735,9 @@@ proc handle_empty_diff {} 
  
  [short_path $path] has no changes.
  
 -The modification date of this file was updated
 -by another application, but the content within
 -the file was not changed.
 +The modification date of this file was updated by another application, but the content within the file was not changed.
  
 -A rescan will be automatically started to find
 -other files which may have the same state."
 +A rescan will be automatically started to find other files which may have the same state."
  
        clear_diff
        display_file $path __
@@@ -1038,7 -1033,8 +1038,7 @@@ proc load_last_commit {} 
        if {[llength $PARENT] == 0} {
                error_popup {There is nothing to amend.
  
 -You are about to create the initial commit.
 -There is no commit before this to amend.
 +You are about to create the initial commit.  There is no commit before this to amend.
  }
                return
        }
        if {$curType eq {merge}} {
                error_popup {Cannot amend while merging.
  
 -You are currently in the middle of a merge that
 -has not been fully completed.  You cannot amend
 -the prior commit unless you first abort the
 -current merge activity.
 +You are currently in the middle of a merge that has not been fully completed.  You cannot amend the prior commit unless you first abort the current merge activity.
  }
                return
        }
                                        set enc [string tolower [string range $line 9 end]]
                                }
                        }
 -                      fconfigure $fd -encoding $enc
 -                      set msg [string trim [read $fd]]
 +                      set msg [encoding convertfrom $enc [read $fd]]
 +                      set msg [string trim $msg]
                        close $fd
                } err]} {
                error_popup "Error loading commit data for amend:\n\n$err"
@@@ -1137,7 -1136,9 +1137,7 @@@ proc commit_tree {} 
        } elseif {$commit_type ne $curType || $HEAD ne $curHEAD} {
                info_popup {Last scanned state does not match repository state.
  
 -Another Git program has modified this repository
 -since the last scan.  A rescan must be performed
 -before another commit can be created.
 +Another Git program has modified this repository since the last scan.  A rescan must be performed before another commit can be created.
  
  The rescan will be automatically started now.
  }
                U? {
                        error_popup "Unmerged files cannot be committed.
  
 -File [short_path $path] has merge conflicts.
 -You must resolve them and add the file before committing.
 +File [short_path $path] has merge conflicts.  You must resolve them and add the file before committing.
  "
                        unlock_index
                        return
@@@ -1274,7 -1276,8 +1274,7 @@@ proc commit_committree {fd_wt curHEAD m
                if {$tree_id eq $old_tree} {
                        info_popup {No changes to commit.
  
 -No files were modified by this commit and it
 -was not a merge commit.
 +No files were modified by this commit and it was not a merge commit.
  
  A rescan will be automatically started now.
  }
        if {[catch {set enc $repo_config(i18n.commitencoding)}]} {
                set enc utf-8
        }
 -      fconfigure $msg_wt -encoding $enc -translation binary
 -      puts -nonewline $msg_wt $msg
 +      fconfigure $msg_wt -encoding binary -translation binary
 +      puts -nonewline $msg_wt [encoding convertto $enc $msg]
        close $msg_wt
  
        # -- Create the commit.
@@@ -2113,10 -2116,7 +2113,10 @@@ proc do_create_branch {} 
                -value head \
                -variable create_branch_revtype \
                -font font_ui
 -      eval tk_optionMenu $w.from.head_m create_branch_head $all_heads
 +      set lbranchm [eval tk_optionMenu $w.from.head_m create_branch_head \
 +              $all_heads]
 +      $lbranchm configure -font font_ui
 +      $w.from.head_m configure -font font_ui
        grid $w.from.head_r $w.from.head_m -sticky w
        set all_trackings [all_tracking_branches]
        if {$all_trackings ne {}} {
                        -value tracking \
                        -variable create_branch_revtype \
                        -font font_ui
 -              eval tk_optionMenu $w.from.tracking_m \
 +              set tbranchm [eval tk_optionMenu $w.from.tracking_m \
                        create_branch_trackinghead \
 -                      $all_trackings
 +                      $all_trackings]
 +              $tbranchm configure -font font_ui
 +              $w.from.tracking_m configure -font font_ui
                grid $w.from.tracking_r $w.from.tracking_m -sticky w
        }
        set all_tags [load_all_tags]
                        -value tag \
                        -variable create_branch_revtype \
                        -font font_ui
 -              eval tk_optionMenu $w.from.tag_m \
 +              set tagsm [eval tk_optionMenu $w.from.tag_m \
                        create_branch_tag \
 -                      $all_tags
 +                      $all_tags]
 +              $tagsm configure -font font_ui
 +              $w.from.tag_m configure -font font_ui
                grid $w.from.tag_r $w.from.tag_m -sticky w
        }
        radiobutton $w.from.exp_r \
@@@ -2339,11 -2335,7 +2339,11 @@@ proc do_delete_branch {} 
                -value head \
                -variable delete_branch_checktype \
                -font font_ui
 -      eval tk_optionMenu $w.validate.head_m delete_branch_head $all_heads
 +      set mergedlocalm [eval tk_optionMenu $w.validate.head_m \
 +              delete_branch_head \
 +              $all_heads]
 +      $mergedlocalm configure -font font_ui
 +      $w.validate.head_m configure -font font_ui
        grid $w.validate.head_r $w.validate.head_m -sticky w
        set all_trackings [all_tracking_branches]
        if {$all_trackings ne {}} {
                        -value tracking \
                        -variable delete_branch_checktype \
                        -font font_ui
 -              eval tk_optionMenu $w.validate.tracking_m \
 +              set mergedtrackm [eval tk_optionMenu $w.validate.tracking_m \
                        delete_branch_trackinghead \
 -                      $all_trackings
 +                      $all_trackings]
 +              $mergedtrackm configure -font font_ui
 +              $w.validate.tracking_m configure -font font_ui
                grid $w.validate.tracking_r $w.validate.tracking_m -sticky w
        }
        radiobutton $w.validate.always_r \
@@@ -2392,7 -2382,9 +2392,7 @@@ proc switch_branch {new_branch} 
        } elseif {$commit_type ne $curType || $HEAD ne $curHEAD} {
                info_popup {Last scanned state does not match repository state.
  
 -Another Git program has modified this repository
 -since the last scan.  A rescan must be performed
 -before the current branch can be changed.
 +Another Git program has modified this repository since the last scan.  A rescan must be performed before the current branch can be changed.
  
  The rescan will be automatically started now.
  }
@@@ -2483,9 -2475,12 +2483,9 @@@ Staying on branch '$current_branch'.
        if {[catch {git symbolic-ref HEAD "refs/heads/$new_branch"} err]} {
                error_popup "Failed to set current branch.
  
 -This working directory is only partially switched.
 -We successfully updated your files, but failed to
 -update an internal Git file.
 +This working directory is only partially switched.  We successfully updated your files, but failed to update an internal Git file.
  
 -This should not have occurred.  [appname] will now
 -close and give up.
 +This should not have occurred.  [appname] will now close and give up.
  
  $err"
                do_quit
@@@ -2689,12 -2684,10 +2689,12 @@@ proc do_push_anywhere {} 
        frame $w.buttons
        button $w.buttons.create -text Push \
                -font font_ui \
 +              -default active \
                -command [list start_push_anywhere_action $w]
        pack $w.buttons.create -side right
        button $w.buttons.cancel -text {Cancel} \
                -font font_ui \
 +              -default normal \
                -command [list destroy $w]
        pack $w.buttons.cancel -side right -padx 5
        pack $w.buttons -side bottom -fill x -pady 10 -padx 10
                        -value remote \
                        -variable push_urltype \
                        -font font_ui
 -              eval tk_optionMenu $w.dest.remote_m push_remote $all_remotes
 +              set remmenu [eval tk_optionMenu $w.dest.remote_m push_remote \
 +                      $all_remotes]
 +              $remmenu configure -font font_ui
 +              $w.dest.remote_m configure -font font_ui
                grid $w.dest.remote_r $w.dest.remote_m -sticky w
                if {[lsearch -sorted -exact $all_remotes origin] != -1} {
                        set push_remote origin
        set push_thin 0
        set push_tags 0
  
 -      bind $w <Visibility> "grab $w"
 +      bind $w <Visibility> "grab $w; focus $w.buttons.create"
        bind $w <Key-Escape> "destroy $w"
 +      bind $w <Key-Return> [list start_push_anywhere_action $w]
        wm title $w "[appname] ([reponame]): Push"
        tkwait window $w
  }
@@@ -2802,7 -2791,8 +2802,7 @@@ proc can_merge {} 
        if {[string match amend* $commit_type]} {
                info_popup {Cannot merge while amending.
  
 -You must finish amending this commit before
 -starting any type of merge.
 +You must finish amending this commit before starting any type of merge.
  }
                return 0
        }
        if {$commit_type ne $curType || $HEAD ne $curHEAD} {
                info_popup {Last scanned state does not match repository state.
  
 -Another Git program has modified this repository
 -since the last scan.  A rescan must be performed
 -before a merge can be performed.
 +Another Git program has modified this repository since the last scan.  A rescan must be performed before a merge can be performed.
  
  The rescan will be automatically started now.
  }
  
  File [short_path $path] has merge conflicts.
  
 -You must resolve them, add the file, and commit to
 -complete the current merge.  Only then can you
 -begin another merge.
 +You must resolve them, add the file, and commit to complete the current merge.  Only then can you begin another merge.
  "
                        unlock_index
                        return 0
  
  File [short_path $path] is modified.
  
 -You should complete the current commit before
 -starting a merge.  Doing so will help you abort
 -a failed merge, should the need arise.
 +You should complete the current commit before starting a merge.  Doing so will help you abort a failed merge, should the need arise.
  "
                        unlock_index
                        return 0
@@@ -2921,11 -2917,13 +2921,11 @@@ proc finish_merge {revcnt w ok} 
  
  Your merge of $revcnt branches has failed.
  
 -There are file-level conflicts between the
 -branches which must be resolved manually.
 +There are file-level conflicts between the branches which must be resolved manually.
  
  The working directory will now be reset.
  
 -You can attempt this merge again
 -by merging only one branch at a time." $w
 +You can attempt this merge again by merging only one branch at a time." $w
  
                        set fd [open "| git read-tree --reset -u HEAD" r]
                        fconfigure $fd -blocking 0 -translation binary
@@@ -3038,7 -3036,8 +3038,7 @@@ You must finish amending this commit
  
        if {[ask_popup "Abort $op?
  
 -Aborting the current $op will cause
 -*ALL* uncommitted changes to be lost.
 +Aborting the current $op will cause *ALL* uncommitted changes to be lost.
  
  Continue with aborting the current $op?"] eq {yes}} {
                set fd [open "| git read-tree --reset -u HEAD" r]
@@@ -3663,20 -3662,6 +3663,20 @@@ proc blame_showcommit {w w_cmit w_line 
                        incr i
                }
  
 +              set author_name {}
 +              set author_email {}
 +              set author_time {}
 +              catch {set author_name $blame_data($w,$cmit,author)}
 +              catch {set author_email $blame_data($w,$cmit,author-mail)}
 +              catch {set author_time [clock format $blame_data($w,$cmit,author-time)]}
 +
 +              set committer_name {}
 +              set committer_email {}
 +              set committer_time {}
 +              catch {set committer_name $blame_data($w,$cmit,committer)}
 +              catch {set committer_email $blame_data($w,$cmit,committer-mail)}
 +              catch {set committer_time [clock format $blame_data($w,$cmit,committer-time)]}
 +
                if {[catch {set msg $blame_data($w,$cmit,message)}]} {
                        set msg {}
                        catch {
                                                set enc [string tolower [string range $line 9 end]]
                                        }
                                }
 -                              fconfigure $fd -encoding $enc
 -                              set msg [string trim [read $fd]]
 +                              set msg [encoding convertfrom $enc [read $fd]]
 +                              set msg [string trim $msg]
                                close $fd
 +
 +                              set author_name [encoding convertfrom $enc $author_name]
 +                              set committer_name [encoding convertfrom $enc $committer_name]
 +
 +                              set blame_data($w,$cmit,author) $author_name
 +                              set blame_data($w,$cmit,committer) $committer_name
                        }
                        set blame_data($w,$cmit,message) $msg
                }
  
 -              set author_name {}
 -              set author_email {}
 -              set author_time {}
 -              catch {set author_name $blame_data($w,$cmit,author)}
 -              catch {set author_email $blame_data($w,$cmit,author-mail)}
 -              catch {set author_time [clock format $blame_data($w,$cmit,author-time)]}
 -
 -              set committer_name {}
 -              set committer_email {}
 -              set committer_time {}
 -              catch {set committer_name $blame_data($w,$cmit,committer)}
 -              catch {set committer_email $blame_data($w,$cmit,committer-mail)}
 -              catch {set committer_time [clock format $blame_data($w,$cmit,committer-time)]}
 -
                $w_cmit insert end "commit $cmit\n"
                $w_cmit insert end "Author: $author_name $author_email $author_time\n"
                $w_cmit insert end "Committer: $committer_name $committer_email $committer_time\n"
@@@ -4116,7 -4109,6 +4116,7 @@@ proc console_done {args} 
                if {[winfo exists $w]} {
                        $w.m.s conf -background green -text {Success}
                        $w.ok conf -state normal
 +                      focus $w.ok
                }
        } else {
                if {![winfo exists $w]} {
                }
                $w.m.s conf -background red -text {Error: Command Failed}
                $w.ok conf -state normal
 +              focus $w.ok
        }
  
        array unset console_cr $w
@@@ -4143,7 -4134,7 +4143,7 @@@ proc do_gitk {revs} 
        # -- Always start gitk through whatever we were loaded with.  This
        #    lets us bypass using shell process on Windows systems.
        #
-       set cmd [info nameofexecutable]
+       set cmd [list [info nameofexecutable]]
        lappend cmd [gitexec gitk]
        if {$revs ne {}} {
                append cmd { }
@@@ -4192,11 -4183,9 +4192,11 @@@ proc do_stats {} 
        frame $w.buttons -border 1
        button $w.buttons.close -text Close \
                -font font_ui \
 +              -default active \
                -command [list destroy $w]
        button $w.buttons.gc -text {Compress Database} \
                -font font_ui \
 +              -default normal \
                -command "destroy $w;do_gc"
        pack $w.buttons.close -side right
        pack $w.buttons.gc -side left
        }
        pack $w.stat -pady 10 -padx 10
  
 -      bind $w <Visibility> "grab $w; focus $w"
 +      bind $w <Visibility> "grab $w; focus $w.buttons.close"
        bind $w <Key-Escape> [list destroy $w]
        bind $w <Key-Return> [list destroy $w]
        wm title $w "[appname] ([reponame]): Database Statistics"
@@@ -4522,7 -4511,6 +4522,7 @@@ proc do_about {} 
        frame $w.buttons
        button $w.buttons.close -text {Close} \
                -font font_ui \
 +              -default active \
                -command [list destroy $w]
        pack $w.buttons.close -side right
        pack $w.buttons -side bottom -fill x -pady 10 -padx 10
@@@ -4568,9 -4556,8 +4568,9 @@@ $copyright" 
                clipboard append -format STRING -type STRING -- \[$w.vers cget -text\]
        "
  
 -      bind $w <Visibility> "grab $w; focus $w"
 +      bind $w <Visibility> "grab $w; focus $w.buttons.close"
        bind $w <Key-Escape> "destroy $w"
 +      bind $w <Key-Return> "destroy $w"
        bind_button3 $w.vers "tk_popup $w.ctxm %X %Y; grab $w; focus $w"
        wm title $w "About [appname]"
        tkwait window $w
@@@ -4607,17 -4594,14 +4607,17 @@@ proc do_options {} 
        frame $w.buttons
        button $w.buttons.restore -text {Restore Defaults} \
                -font font_ui \
 +              -default normal \
                -command do_restore_defaults
        pack $w.buttons.restore -side left
        button $w.buttons.save -text Save \
                -font font_ui \
 +              -default active \
                -command [list do_save_config $w]
        pack $w.buttons.save -side right
        button $w.buttons.cancel -text {Cancel} \
                -font font_ui \
 +              -default normal \
                -command [list destroy $w]
        pack $w.buttons.cancel -side right -padx 5
        pack $w.buttons -side bottom -fill x -pady 10 -padx 10
                frame $w.global.$name
                label $w.global.$name.l -text "$text:" -font font_ui
                pack $w.global.$name.l -side left -anchor w -fill x
 -              eval tk_optionMenu $w.global.$name.family \
 +              set fontmenu [eval tk_optionMenu $w.global.$name.family \
                        global_config_new(gui.$font^^family) \
 -                      $all_fonts
 +                      $all_fonts]
 +              $w.global.$name.family configure -font font_ui
 +              $fontmenu configure -font font_ui
                spinbox $w.global.$name.size \
                        -textvariable global_config_new(gui.$font^^size) \
                        -from 2 -to 80 -increment 1 \
                pack $w.global.$name -side top -anchor w -fill x
        }
  
 -      bind $w <Visibility> "grab $w; focus $w"
 +      bind $w <Visibility> "grab $w; focus $w.buttons.save"
        bind $w <Key-Escape> "destroy $w"
 +      bind $w <Key-Return> [list do_save_config $w]
        wm title $w "[appname] ([reponame]): Options"
        tkwait window $w
  }
@@@ -5104,18 -5085,18 +5104,18 @@@ set ui_comm {
  # -- Menu Bar
  #
  menu .mbar -tearoff 0
 -.mbar add cascade -label Repository -menu .mbar.repository
 -.mbar add cascade -label Edit -menu .mbar.edit
 +.mbar add cascade -label Repository -menu .mbar.repository -font font_ui
 +.mbar add cascade -label Edit -menu .mbar.edit -font font_ui
  if {[is_enabled branch]} {
 -      .mbar add cascade -label Branch -menu .mbar.branch
 +      .mbar add cascade -label Branch -menu .mbar.branch -font font_ui
  }
  if {[is_enabled multicommit] || [is_enabled singlecommit]} {
 -      .mbar add cascade -label Commit -menu .mbar.commit
 +      .mbar add cascade -label Commit -menu .mbar.commit -font font_ui
  }
  if {[is_enabled transport]} {
 -      .mbar add cascade -label Merge -menu .mbar.merge
 -      .mbar add cascade -label Fetch -menu .mbar.fetch
 -      .mbar add cascade -label Push -menu .mbar.push
 +      .mbar add cascade -label Merge -menu .mbar.merge -font font_ui
 +      .mbar add cascade -label Fetch -menu .mbar.fetch -font font_ui
 +      .mbar add cascade -label Push -menu .mbar.push -font font_ui
  }
  . configure -menu .mbar
  
@@@ -5391,7 -5372,7 +5391,7 @@@ if {[is_MacOSX]} 
  
  # -- Help Menu
  #
 -.mbar add cascade -label Help -menu .mbar.help
 +.mbar add cascade -label Help -menu .mbar.help -font font_ui
  menu .mbar.help
  
  if {![is_MacOSX]} {
@@@ -5974,7 -5955,7 +5974,7 @@@ unset 
  set file_lists($ui_index) [list]
  set file_lists($ui_workdir) [list]
  
 -wm title . "[appname] ([file normalize [file dirname [gitdir]]])"
 +wm title . "[appname] ([reponame]) [file normalize [file dirname [gitdir]]]"
  focus -force $ui_comm
  
  # -- Warn the user about environmental problems.  Cygwin's Tcl
@@@ -6053,7 -6034,9 +6053,7 @@@ if {[is_enabled multicommit]} 
                if {[ask_popup \
                        "This repository currently has $objects_current loose objects.
  
 -To maintain optimal performance it is strongly
 -recommended that you compress the database
 -when more than $object_limit loose objects exist.
 +To maintain optimal performance it is strongly recommended that you compress the database when more than $object_limit loose objects exist.
  
  Compress the database now?"] eq yes} {
                        do_gc