Johannes Sixt schrieb: > Alexander Gavrilov schrieb: >> Subject: [PATCH] gitk: Implement batch lookup and caching of encoding attrs. >> >> When the diff contains thousands of files, calling git-check-attr >> once per file is very slow. With this patch gitk does attribute >> lookup in batches of 30 files while reading the diff file list, >> which leads to a very noticeable speedup. > > This one does not work for me: The correct is not picked up anymore, The correct _encoding_ is not picked up anymore... > neither in Patch mode nor Tree mode. (It works as expected without this > patch.) > >> +proc cache_gitattr {attr pathlist} { >> + global path_attr_cache >> + set newlist {} >> + foreach path $pathlist { >> + if {[info exists path_attr_cache($attr,$path)]} continue >> + lappend newlist $path >> + } >> + while {$newlist ne {}} { >> + set head [lrange $newlist 0 29] >> + set newlist [lrange $newlist 30 end] >> + if {![catch {set rlist [eval exec git check-attr $attr -- $head]}]} { >> + foreach row [split $rlist "\n"] { >> + set cols [split $row :] > > This colon made me nervous (because of the drive-colon combination on > Windows), but as long as you feed relative paths into 'git check-attr', > this should not matter (in my case). This comment does not imply that I debugged this code. I just noticed the colon while reading the patch. >> + set path [lindex $cols 0] >> + set value [join [lrange $cols 2 end] :] >> + if {[string index $path 0] eq "\""} { >> + set path [encoding convertfrom [lindex $path 0]] >> + } >> + set path_attr_cache($attr,$path) $value >> + } >> + } >> + update >> + } >> +} -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html