git-gui: Verify the user has GIT_COMMITTER_IDENT before comitting.
authorShawn O. Pearce <spearce@spearce.org>
Sun, 19 Nov 2006 02:07:05 +0000 (21:07 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Sun, 19 Nov 2006 03:46:07 +0000 (22:46 -0500)
Since git-commit also checks that the user has a GIT_COMMITTER_IDENT
value before it lets the user make a commit we should do the same check
here in git-gui.  We cache the result and assume that the user won't
do something which would change the status of GIT_COMMITTER_IDENT while
we are running.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui

diff --git a/git-gui b/git-gui
index 5c6af8940ee15e0e68b89c0fadb131585d6ab3b1..7630a2d2e7e2b7732c603dae0543dd13e40b56ef 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -732,10 +732,31 @@ proc create_new_commit {} {
        rescan {set ui_status_value {Ready.}}
 }
 
+set GIT_COMMITTER_IDENT {}
+
+proc committer_ident {} {
+       global GIT_COMMITTER_IDENT
+
+       if {$GIT_COMMITTER_IDENT eq {}} {
+               if {[catch {set me [exec git var GIT_COMMITTER_IDENT]} err]} {
+                       error_popup "Unable to obtain your identity:\n\n$err"
+                       return {}
+               }
+               if {![regexp {^(.*) [0-9]+ [-+0-9]+$} \
+                       $me me GIT_COMMITTER_IDENT]} {
+                       error_popup "Invalid GIT_COMMITTER_IDENT:\n\n$me"
+                       return {}
+               }
+       }
+
+       return $GIT_COMMITTER_IDENT
+}
+
 proc commit_tree {} {
        global HEAD commit_type file_states ui_comm repo_config
 
        if {![lock_index update]} return
+       if {[committer_ident] eq {}} return
 
        # -- Our in memory state should match the repository.
        #
@@ -1911,24 +1932,13 @@ proc do_include_all {} {
                [array names file_states]
 }
 
-set GIT_COMMITTER_IDENT {}
-
 proc do_signoff {} {
-       global ui_comm GIT_COMMITTER_IDENT
+       global ui_comm
 
-       if {$GIT_COMMITTER_IDENT eq {}} {
-               if {[catch {set me [exec git var GIT_COMMITTER_IDENT]} err]} {
-                       error_popup "Unable to obtain your identity:\n\n$err"
-                       return
-               }
-               if {![regexp {^(.*) [0-9]+ [-+0-9]+$} \
-                       $me me GIT_COMMITTER_IDENT]} {
-                       error_popup "Invalid GIT_COMMITTER_IDENT:\n\n$me"
-                       return
-               }
-       }
+       set me [committer_ident]
+       if {$me eq {}} return
 
-       set sob "Signed-off-by: $GIT_COMMITTER_IDENT"
+       set sob "Signed-off-by: $me"
        set last [$ui_comm get {end -1c linestart} {end -1c}]
        if {$last ne $sob} {
                $ui_comm edit separator