summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-10-12 00:42:17 -0400
committerShawn O. Pearce <spearce@spearce.org>2007-10-12 00:42:17 -0400
commitf00d504a6fcf29944311a497d0eb76f0fe5ef8f0 (patch)
tree6ff84e6d358721a946dbf949e520a3b884341812
parent69f85ffaa22c3357cbb5c3c97a621eccbdfa2bb3 (diff)
downloadgit-f00d504a6fcf29944311a497d0eb76f0fe5ef8f0.tar.gz
git-gui: Refactor git-config --list parsing
The parsing for the output of `git config --list` is the same for both the global options and the current repository's options so we can really just use the same parser between them. I'm currently just refactoring the parser so we can use a different one depending on the version of git available to us at runtime. My next change will add support for 1.5.3's --null option. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rwxr-xr-xgit-gui.sh35
1 files changed, 14 insertions, 21 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 530fee866f..cfed62da44 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -748,40 +748,33 @@ unset -nocomplain idx fd
##
## config file parsing
-proc load_config {include_global} {
- global repo_config global_config default_config
-
- array unset global_config
- if {$include_global} {
+git-version proc _parse_config {arr_name args} {
+ default {
+ upvar $arr_name arr
+ array unset arr
catch {
- set fd_rc [git_read config --global --list]
+ set fd_rc [eval [list git_read config --list] $args]
while {[gets $fd_rc line] >= 0} {
if {[regexp {^([^=]+)=(.*)$} $line line name value]} {
if {[is_many_config $name]} {
- lappend global_config($name) $value
+ lappend arr($name) $value
} else {
- set global_config($name) $value
+ set arr($name) $value
}
}
}
close $fd_rc
}
}
+}
- array unset repo_config
- catch {
- set fd_rc [git_read config --list]
- while {[gets $fd_rc line] >= 0} {
- if {[regexp {^([^=]+)=(.*)$} $line line name value]} {
- if {[is_many_config $name]} {
- lappend repo_config($name) $value
- } else {
- set repo_config($name) $value
- }
- }
- }
- close $fd_rc
+proc load_config {include_global} {
+ global repo_config global_config default_config
+
+ if {$include_global} {
+ _parse_config global_config --global
}
+ _parse_config repo_config
foreach name [array names default_config] {
if {[catch {set v $global_config($name)}]} {