git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v1 3/4] git gui: de-dup selected repo from recentrepo history

From
Philip Oakley <philipoakley@iee.org>
Date
Dec 14, 2015, 15:09 UTC
Message-ID
<1450105743-2432-4-git-send-email-philipoakley@iee.org>
In-Reply-To
<1450105743-2432-1-git-send-email-philipoakley@iee.org>

When the gui/user selects a repo for display, that repo is brought to the end of the recentrepo config list. The logic can fail if there are duplicate old entries for the repo (you cannot unset a single config entry when duplicates are present).

Similarly, the maxrecentrepo logic could fail if older duplicate entries are present.

The first commit of this series ({this}~2) fixed the config unsetting issue. Rather than manipulating a local copy of the $recent list (one cannot know how many entries were removed), simply re-read it.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
---
 git-gui/lib/choose_repository.tcl | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl
index aa87bcc..ad7a888 100644
--- a/git-gui/lib/choose_repository.tcl
+++ b/git-gui/lib/choose_repository.tcl
@@ -262,12 +262,11 @@ proc _append_recentrepos {path} {
 	set i [lsearch $recent $path]
 	if {$i >= 0} {
 		_unset_recentrepo $path
-		set recent [lreplace $recent $i $i]
 	}
 
-	lappend recent $path
 	git config --global --add gui.recentrepo $path
 	load_config 1
+	set recent [get_config gui.recentrepo]
 
 	if {[set maxrecent [get_config gui.maxrecentrepo]] eq {}} {
 		set maxrecent 10
@@ -275,7 +274,7 @@ proc _append_recentrepos {path} {
 
 	while {[llength $recent] > $maxrecent} {
 		_unset_recentrepo [lindex $recent 0]
-		set recent [lrange $recent 1 end]
+		set recent [get_config gui.recentrepo]
 	}
 }
 
-- 
2.5.2.windows.2
Previous: Philip OakleyNext: Philip Oakley
Message 8 of 11 in “git gui: fail on dual entries in recent repo list”
  1. Philip OakleyDec 13, 2015
  2. 0/4 Fix git-gui when recentrepo list has duplicatesPhilip Oakley, Dec 14, 2015
  3. 1/4 git-gui: remove duplicate entries from .gitconfig's gui.recentrepoPhilip Oakley, Dec 14, 2015
  4. Eric SunshineDec 14, 2015
  5. Philip OakleyDec 16, 2015
  6. Eric SunshineDec 17, 2015
  7. 2/4 git gui: cope with duplicates in _get_recentrepoPhilip Oakley, Dec 14, 2015
  8. 3/4 git gui: de-dup selected repo from recentrepo historyPhilip Oakley, Dec 14, 2015
  9. 4/4 git gui: allow for a long recentrepo listPhilip Oakley, Dec 14, 2015
  10. Eric SunshineDec 14, 2015
  11. Philip OakleyDec 14, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.