diff --git a/gitk b/gitk index f41e30207bac7b21ae4305e7e20a0d52abacbd84..ff5eb5e8c48392a408b854c3da337749cd91bdce 100755 --- a/gitk +++ b/gitk @@ -5023,28 +5023,25 @@ proc startdiff {ids} { proc path_filter {filter name} { foreach p $filter { set l [string length $p] - if {[string compare -length $l $p $name] == 0 && - ([string length $name] == $l || [string index $name $l] eq "/")} { - return 1 + if {[string index $p end] eq "/"} { + if {[string compare -length $l $p $name] == 0} { + return 1 + } + } else { + if {[string compare -length $l $p $name] == 0 && + ([string length $name] == $l || + [string index $name $l] eq "/")} { + return 1 + } } } return 0 } proc addtocflist {ids} { - global treediffs cflist viewfiles curview limitdiffs + global treediffs - if {$limitdiffs && $viewfiles($curview) ne {}} { - set flist {} - foreach f $treediffs($ids) { - if {[path_filter $viewfiles($curview) $f]} { - lappend flist $f - } - } - } else { - set flist $treediffs($ids) - } - add_flist $flist + add_flist $treediffs($ids) getblobdiffs $ids } @@ -5100,7 +5097,7 @@ proc gettreediffs {ids} { proc gettreediffline {gdtf ids} { global treediff treediffs treepending diffids diffmergeid - global cmitmode + global cmitmode viewfiles curview limitdiffs set nr 0 while {[incr nr] <= 1000 && [gets $gdtf line] >= 0} { @@ -5117,7 +5114,17 @@ proc gettreediffline {gdtf ids} { return [expr {$nr >= 1000? 2: 1}] } close $gdtf - set treediffs($ids) $treediff + if {$limitdiffs && $viewfiles($curview) ne {}} { + set flist {} + foreach f $treediff { + if {[path_filter $viewfiles($curview) $f]} { + lappend flist $f + } + } + set treediffs($ids) $flist + } else { + set treediffs($ids) $treediff + } unset treepending if {$cmitmode eq "tree"} { gettree $diffids @@ -7565,7 +7572,7 @@ proc prefscan {} { proc prefsok {} { global maxwidth maxgraphpct global oldprefs prefstop showneartags showlocalchanges - global charspc ctext tabstop limitdiffs + global charspc ctext tabstop limitdiffs treediffs catch {destroy $prefstop} unset prefstop @@ -7577,6 +7584,10 @@ proc prefsok {} { dohidelocalchanges } } + if {$limitdiffs != $oldprefs(limitdiffs)} { + # treediffs elements are limited by path + catch {unset treediffs} + } if {$maxwidth != $oldprefs(maxwidth) || $maxgraphpct != $oldprefs(maxgraphpct)} { redisplay