git-gui: Support LFs embedded in config file values
Using the new --null option added to git-config in git 1.5.3 we can safely accept LFs that are embedded in configuration options. This does require a completely different configuration file parser then the pre 1.5.3 version as we are splitting on very different values. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
f00d504a6f
commit
85f7a94b3c
20
git-gui.sh
20
git-gui.sh
@ -749,6 +749,26 @@ unset -nocomplain idx fd
|
||||
## config file parsing
|
||||
|
||||
git-version proc _parse_config {arr_name args} {
|
||||
>= 1.5.3 {
|
||||
upvar $arr_name arr
|
||||
array unset arr
|
||||
set buf {}
|
||||
catch {
|
||||
set fd_rc [eval [list git_read config --null --list] $args]
|
||||
fconfigure $fd_rc -translation binary
|
||||
set buf [read $fd_rc]
|
||||
close $fd_rc
|
||||
}
|
||||
foreach line [split $buf "\0"] {
|
||||
if {[regexp {^([^\n]+)\n(.*)$} $line line name value]} {
|
||||
if {[is_many_config $name]} {
|
||||
lappend arr($name) $value
|
||||
} else {
|
||||
set arr($name) $value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
default {
|
||||
upvar $arr_name arr
|
||||
array unset arr
|
||||
|
Loading…
Reference in New Issue
Block a user