git-gui: Implement system-wide configuration handling.
With the old implementation any system-wide options appear to be set locally in the current repository. This commit adds explicit handling of system options, essentially interpreting them as customized default_config. The difficulty in interpreting system options stems from the fact that simple 'git config' lists all values, while 'git config --global' only values set in ~/.gitconfig, excluding both local and system options. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
d1f2b362b7
commit
153ad78b50
12
git-gui.sh
12
git-gui.sh
@ -940,19 +940,25 @@ git-version proc _parse_config {arr_name args} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc load_config {include_global} {
|
proc load_config {include_global} {
|
||||||
global repo_config global_config default_config
|
global repo_config global_config system_config default_config
|
||||||
|
|
||||||
if {$include_global} {
|
if {$include_global} {
|
||||||
|
_parse_config system_config --system
|
||||||
_parse_config global_config --global
|
_parse_config global_config --global
|
||||||
}
|
}
|
||||||
_parse_config repo_config
|
_parse_config repo_config
|
||||||
|
|
||||||
foreach name [array names default_config] {
|
foreach name [array names default_config] {
|
||||||
|
if {[catch {set v $system_config($name)}]} {
|
||||||
|
set system_config($name) $default_config($name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach name [array names system_config] {
|
||||||
if {[catch {set v $global_config($name)}]} {
|
if {[catch {set v $global_config($name)}]} {
|
||||||
set global_config($name) $default_config($name)
|
set global_config($name) $system_config($name)
|
||||||
}
|
}
|
||||||
if {[catch {set v $repo_config($name)}]} {
|
if {[catch {set v $repo_config($name)}]} {
|
||||||
set repo_config($name) $default_config($name)
|
set repo_config($name) $system_config($name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ proc config_check_encodings {} {
|
|||||||
|
|
||||||
proc save_config {} {
|
proc save_config {} {
|
||||||
global default_config font_descs
|
global default_config font_descs
|
||||||
global repo_config global_config
|
global repo_config global_config system_config
|
||||||
global repo_config_new global_config_new
|
global repo_config_new global_config_new
|
||||||
global ui_comm_spell
|
global ui_comm_spell
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ proc save_config {} {
|
|||||||
foreach name [array names default_config] {
|
foreach name [array names default_config] {
|
||||||
set value $global_config_new($name)
|
set value $global_config_new($name)
|
||||||
if {$value ne $global_config($name)} {
|
if {$value ne $global_config($name)} {
|
||||||
if {$value eq $default_config($name)} {
|
if {$value eq $system_config($name)} {
|
||||||
catch {git config --global --unset $name}
|
catch {git config --global --unset $name}
|
||||||
} else {
|
} else {
|
||||||
regsub -all "\[{}\]" $value {"} value
|
regsub -all "\[{}\]" $value {"} value
|
||||||
@ -284,17 +284,17 @@ proc do_options {} {
|
|||||||
}
|
}
|
||||||
|
|
||||||
proc do_restore_defaults {} {
|
proc do_restore_defaults {} {
|
||||||
global font_descs default_config repo_config
|
global font_descs default_config repo_config system_config
|
||||||
global repo_config_new global_config_new
|
global repo_config_new global_config_new
|
||||||
|
|
||||||
foreach name [array names default_config] {
|
foreach name [array names default_config] {
|
||||||
set repo_config_new($name) $default_config($name)
|
set repo_config_new($name) $system_config($name)
|
||||||
set global_config_new($name) $default_config($name)
|
set global_config_new($name) $system_config($name)
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach option $font_descs {
|
foreach option $font_descs {
|
||||||
set name [lindex $option 0]
|
set name [lindex $option 0]
|
||||||
set repo_config(gui.$name) $default_config(gui.$name)
|
set repo_config(gui.$name) $system_config(gui.$name)
|
||||||
}
|
}
|
||||||
apply_config
|
apply_config
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user