diff options
| author | Shawn O. Pearce <spearce@spearce.org> | 2006-11-07 04:26:02 -0500 |
|---|---|---|
| committer | Shawn O. Pearce <spearce@spearce.org> | 2006-11-07 04:26:02 -0500 |
| commit | 0d4f3eb5f330a53300e630c1ffe4ea1fa61f5dd9 (patch) | |
| tree | 3d4671c82bc890310a211c30b209e2b5c21fb97f /git-gui | |
| parent | 37af79d10d980418eaeca953c4ba1c08a85d37e9 (diff) | |
| download | git-0d4f3eb5f330a53300e630c1ffe4ea1fa61f5dd9.tar.gz | |
git-gui: Cache all repo-config data in an array.
We're likely going to need key/value pairs from the repo-config beyond
just remote.*.url, so cache them all up front into a Tcl array where we
have fast access to them without needing to refork a repo-config --list
process.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'git-gui')
| -rwxr-xr-x | git-gui | 24 |
1 files changed, 19 insertions, 5 deletions
@@ -791,8 +791,23 @@ proc toggle_mode {path} { ## ## config (fetch push pull) +proc load_repo_config {} { + global repo_config + + array unset repo_config + catch { + set fd_rc [open "| git repo-config --list" r] + while {[gets $fd_rc line] >= 0} { + if {[regexp {^([^=]+)=(.*)$} $line line name value]} { + lappend repo_config($name) $value + } + } + close $fd_rc + } +} + proc load_all_remotes {} { - global gitdir all_remotes + global gitdir all_remotes repo_config set all_remotes [list] set rm_dir [file join $gitdir remotes] @@ -804,13 +819,11 @@ proc load_all_remotes {} { -directory $rm_dir *]] } - set fd_rc [open "| git repo-config --list" r] - while {[gets $fd_rc line] >= 0} { - if {[regexp ^remote\.(.*)\.url= $line line name]} { + foreach line [array names repo_config remote.*.url] { + if {[regexp ^remote\.(.*)\.url\$ $line line name]} { lappend all_remotes $name } } - close $fd_rc set all_remotes [lsort -unique $all_remotes] } @@ -1541,6 +1554,7 @@ if {$appname == {git-citool}} { wm title . "$appname ([file normalize [file dirname $gitdir]])" focus -force $ui_comm +load_repo_config load_all_remotes populate_remote_menu .mbar.fetch From fetch_from populate_remote_menu .mbar.push To push_to |
