git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
authorPhilip Oakley <philipoakley@iee.org>
Mon, 14 Dec 2015 10:37:02 +0000 (10:37 +0000)
committerPhilip Oakley <philipoakley@iee.org>
Fri, 20 Jan 2017 20:55:01 +0000 (20:55 +0000)
The git gui's recent repo list may become contaminated with duplicate
entries. The git gui would barf when attempting to remove one entry.
Remove them all - there is no option within 'git config' to selectively
remove one of the entries.

This issue was reported on the 'Git User' list
(https://groups.google.com/forum/#!topic/git-users/msev4KsQGFc,
Warning: gui.recentrepo has multiply values while executing).

And also by zosrothko as a Git-for-Windows issue
https://github.com/git-for-windows/git/issues/1014.

On startup the gui checks that entries in the recentrepo list are still
valid repos and deletes thoses that are not. If duplicate entries are
present the 'git config --unset' will barf and this prevents the gui
from starting.

Subsequent patches fix other parts of recentrepo logic used for syncing
internal lists with the external .gitconfig.

Reported-by: Alexey Astakhov <asstv7@gmail.com>
Signed-off-by: Philip Oakley <philipoakley@iee.org>
lib/choose_repository.tcl
index 75d1da8d31c31db298aea078db863735b6d45439..133ca0ac351b16f737dc7d4a3d1ccdc19db510ad 100644 (file)
@@ -247,7 +247,7 @@ proc _get_recentrepos {} {
 
 proc _unset_recentrepo {p} {
        regsub -all -- {([()\[\]{}\.^$+*?\\])} $p {\\\1} p
-       git config --global --unset gui.recentrepo "^$p\$"
+       git config --global --unset-all gui.recentrepo "^$p\$"
        load_config 1
 }