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

[PATCH v2 1/4] gitk: use single blamestuff for all show_line_source{} calls

From
Max Kirillov <max@max630.net>
Date
Jun 24, 2014, 18:18 UTC
Message-ID
<20140624181738.GA23114@wheezy.local>
In-Reply-To
<20140624181514.GA23051@wheezy.local>

There seems to be no point to search for several origins at once. Probably is is not even fully working (because there is one blameinst), but blamestuff for some reason is an array. Also, it is not cleaned after blame is completed.

Signed-off-by: Max Kirillov <max@max630.net>
---
 gitk | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/gitk b/gitk
index 41e5071..8ef6aa8 100755
--- a/gitk
+++ b/gitk
@@ -3824,17 +3824,18 @@ proc show_line_source {} {
     nowbusy blaming [mc "Searching"]
     fconfigure $f -blocking 0
     set i [reg_instance $f]
-    set blamestuff($i) {}
+    set blamestuff {}
     set blameinst $i
     filerun $f [list read_line_source $f $i]
 }
 
 proc stopblaming {} {
-    global blameinst
+    global blameinst blamestuff
 
     if {[info exists blameinst]} {
 	stop_instance $blameinst
 	unset blameinst
+	unset blamestuff
 	notbusy blaming
     }
 }
@@ -3843,7 +3844,7 @@ proc read_line_source {fd inst} {
     global blamestuff curview commfd blameinst nullid nullid2
 
     while {[gets $fd line] >= 0} {
-	lappend blamestuff($inst) $line
+	lappend blamestuff $line
     }
     if {![eof $fd]} {
 	return 1
@@ -3854,17 +3855,18 @@ proc read_line_source {fd inst} {
     fconfigure $fd -blocking 1
     if {[catch {close $fd} err]} {
 	error_popup [mc "Error running git blame: %s" $err]
+	unset blamestuff
 	return 0
     }
 
     set fname {}
-    set line [split [lindex $blamestuff($inst) 0] " "]
+    set line [split [lindex $blamestuff 0] " "]
     set id [lindex $line 0]
     set lnum [lindex $line 1]
     if {[string length $id] == 40 && [string is xdigit $id] &&
 	[string is digit -strict $lnum]} {
 	# look for "filename" line
-	foreach l $blamestuff($inst) {
+	foreach l $blamestuff {
 	    if {[string match "filename *" $l]} {
 		set fname [string range $l 9 end]
 		break
@@ -3887,6 +3889,7 @@ proc read_line_source {fd inst} {
     } else {
 	puts "oops couldn't parse git blame output"
     }
+    unset blamestuff
     return 0
 }
 
-- 
2.0.0.526.g5318336
Previous: Max KirillovNext: Max Kirillov
Message 2 of 5 in “gitk: show latest change to region”
  1. 0/4 gitk: show latest change to regionMax Kirillov, Jun 24, 2014
  2. 1/4 gitk: use single blamestuff for all show_line_source{} callsMax Kirillov, Jun 24, 2014
  3. 2/4 gitk: refactor: separate generic hunk parsing out of find_hunk_blamespecs{}Max Kirillov, Jun 24, 2014
  4. 3/4 gitk: refactor: separate io from logic in the searching origin of lineMax Kirillov, Jun 24, 2014
  5. 4/4 gitk: show latest change to regionMax Kirillov, Jun 24, 2014

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.