Code

git-gui: Combine blame groups only if commit and filename match
authorShawn O. Pearce <spearce@spearce.org>
Sat, 2 Jun 2007 01:54:06 +0000 (21:54 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 6 Jun 2007 05:26:47 +0000 (01:26 -0400)
Consecutive chunks of a file could come from the same commit, but
have different original file names.  Previously we would have put
them into a single group, but then the hyperlink would jump to only
one of the files, and the other would not be accessible.  Now we can
get to the other file too.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
lib/blame.tcl

index 33e8489d067c4955f72075fe1de22482f0463e30..33d5204f32d6f16939875cfe7da5431161f6c609 100644 (file)
@@ -518,8 +518,10 @@ method _read_blame {fd} {
 
                        set first_lno $lno
                        while {
-                       ![catch {set ncmit $line_commit([expr {$first_lno - 1}])}]
+                          ![catch {set ncmit $line_commit([expr {$first_lno - 1}])}]
+                       && ![catch {set nfile $line_file([expr {$first_lno - 1}])}]
                        && $ncmit eq $cmit
+                       && $nfile eq $file
                        } {
                                incr first_lno -1
                        }
@@ -572,8 +574,12 @@ method _read_blame {fd} {
                                incr blame_lines
                        }
 
-                       while {![catch {set ncmit $line_commit($lno)}]
-                               && $ncmit eq $cmit} {
+                       while {
+                          ![catch {set ncmit $line_commit($lno)}]
+                       && ![catch {set nfile $line_file($lno)}]
+                       && $ncmit eq $cmit
+                       && $nfile eq $file
+                       } {
                                $w_cgrp delete $lno.0 "$lno.0 lineend"
 
                                if {$lno == $first_lno} {