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

[PATCH] Limited git-gui to displaying 5000 new files

From
DZDan Zwell <dzwell@gmail.com>
Date
Jun 30, 2009, 20:37 UTC
Message-ID
<4A4A77A6.1020905@lawrence.edu>

When there is a large number of new or modified files, "display_all_files" takes a long time, and git-gui appears to hang. Limit the display to 5000 files, by default. This number is configurable as gui.maxfilesdisplayed.

Show a warning if the list of files is truncated.
Signed-off-by: Dan Zwell <dzwell@zwell.net>
---
 git-gui.sh |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/git-gui.sh b/git-gui.sh
index 14b92ba..5a20923 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -745,6 +745,8 @@ set default_config(gui.newbranchtemplate) {}
 set default_config(gui.spellingdictionary) {}
 set default_config(gui.fontui) [font configure font_ui]
 set default_config(gui.fontdiff) [font configure font_diff]
+# TODO: this option should be added to the git-config documentation
+set default_config(gui.maxfilesdisplayed) 5000
 set font_descs {
 	{fontui   font_ui   {mc "Main Font"}}
 	{fontdiff font_diff {mc "Diff/Console Font"}}
@@ -1702,6 +1704,8 @@ proc display_all_files {} {
 	global ui_index ui_workdir
 	global file_states file_lists
 	global last_clicked
+	global files_warning
+	global default_config
 
 	$ui_index conf -state normal
 	$ui_workdir conf -state normal
@@ -1713,7 +1717,18 @@ proc display_all_files {} {
 	set file_lists($ui_index) [list]
 	set file_lists($ui_workdir) [list]
 
-	foreach path [lsort [array names file_states]] {
+	set to_display [lsort [array names file_states]]
+	set display_limit $default_config(gui.maxfilesdisplayed)
+	if {[llength $to_display] > $display_limit} {
+		if {![info exists files_warning] || !$files_warning} {
+			set warning "Displaying only $display_limit of "
+			append warning "[llength $to_display] files."
+			info_popup [mc $warning]
+			set files_warning 1
+		}
+		set to_display [lrange $to_display 0 [expr {$display_limit-1}]]
+	}
+	foreach path $to_display {
 		set s $file_states($path)
 		set m [lindex $s 0]
 		set icon_name [lindex $s 1]
-- 
1.6.3.3
Next: Shawn O. Pearce
Message 1 of 12 in “Limited git-gui to displaying 5000 new files”
  1. Limited git-gui to displaying 5000 new filesDan Zwell, Jun 30, 2009
  2. Shawn O. PearceAug 10, 2009
  3. Alex RiesenAug 10, 2009
  4. Shawn O. PearceAug 10, 2009
  5. Dan ZwellAug 10, 2009
  6. Dan ZwellAug 11, 2009
  7. Shawn O. PearceAug 11, 2009
  8. Dan ZwellAug 11, 2009
  9. Shawn O. PearceAug 12, 2009
  10. git-gui: Update russian translationAlex Riesen, Aug 12, 2009
  11. Shawn O. PearceAug 12, 2009
  12. Dan ZwellAug 12, 2009

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.