git-gui: Don't load the global options unless necessary.
authorShawn O. Pearce <spearce@spearce.org>
Sun, 12 Nov 2006 21:24:52 +0000 (16:24 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 13 Nov 2006 05:10:38 +0000 (00:10 -0500)
Since git-repo-config will supply us a union of both the global and
the local repository configuration data when we invoke it during startup
there is no reason to go get the global configuration with an extra call
to repo-config unless the user is trying to view & edit all options in
the options dialog.

Since skipping this extra repo-config invocation save us a little bit of
time its nice to be able to avoid it when we are invoked as git-citool
and won't be running very long.

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

diff --git a/git-gui b/git-gui
index 249b2c894a3f0b4091d46ad80a298696449b9ea8..fbb3090ed16b851bbde11257c976bcb9d69a8db4 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -24,24 +24,27 @@ proc is_many_config {name} {
        }
 }
 
-proc load_config {} {
+proc load_config {include_global} {
        global repo_config global_config default_config
 
        array unset global_config
-       array unset repo_config
-       catch {
-               set fd_rc [open "| git repo-config --global --list" r]
-               while {[gets $fd_rc line] >= 0} {
-                       if {[regexp {^([^=]+)=(.*)$} $line line name value]} {
-                               if {[is_many_config $name]} {
-                                       lappend global_config($name) $value
-                               } else {
-                                       set global_config($name) $value
+       if {$include_global} {
+               catch {
+                       set fd_rc [open "| git repo-config --global --list" r]
+                       while {[gets $fd_rc line] >= 0} {
+                               if {[regexp {^([^=]+)=(.*)$} $line line name value]} {
+                                       if {[is_many_config $name]} {
+                                               lappend global_config($name) $value
+                                       } else {
+                                               set global_config($name) $value
+                                       }
                                }
                        }
+                       close $fd_rc
                }
-               close $fd_rc
        }
+
+       array unset repo_config
        catch {
                set fd_rc [open "| git repo-config --list" r]
                while {[gets $fd_rc line] >= 0} {
@@ -1711,7 +1714,7 @@ proc do_options {} {
        global repo_config global_config
        global repo_config_new global_config_new
 
-       load_config
+       load_config 1
        array unset repo_config_new
        array unset global_config_new
        foreach name [array names repo_config] {
@@ -1919,7 +1922,7 @@ set font_descs {
        {fontui   font_ui   {Main Font}}
        {fontdiff font_diff {Diff/Console Font}}
 }
-load_config
+load_config 0
 apply_config
 
 ######################################################################