git-gui: remove duplicate entries from .gitconfig's gui.recentrepo
authorPhilip Oakley <[email protected]>
Mon, 14 Dec 2015 10:37:02 +0000 (14 10:37 +0000)
committerPhilip Oakley <[email protected]>
Fri, 20 Jan 2017 20:55:01 +0000 (20 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 <[email protected]>
Signed-off-by: Philip Oakley <[email protected]>
lib/choose_repository.tcl

index 75d1da8..133ca0a 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
 }