1
1
# !/usr/bin/perl -w
2
2
3
3
sub parse_hunk_header {
4
- my ($line ) = @_ ;
5
- my ($o_ofs , $o_cnt , $n_ofs , $n_cnt ) =
6
- $line =~ / ^@@ -(\d +)(?:,(\d +))? \+ (\d +)(?:,(\d +))? @@/ ;
7
- $o_cnt = 1 unless defined $o_cnt ;
8
- $n_cnt = 1 unless defined $n_cnt ;
9
- return ($o_ofs , $o_cnt , $n_ofs , $n_cnt );
4
+ my ($line ) = @_ ;
5
+ my ($o_ofs , $o_cnt , $n_ofs , $n_cnt ) =
6
+ $line =~ / ^@@ -(\d +)(?:,(\d +))? \+ (\d +)(?:,(\d +))? @@/ ;
7
+ $o_cnt = 1 unless defined $o_cnt ;
8
+ $n_cnt = 1 unless defined $n_cnt ;
9
+ return ($o_ofs , $o_cnt , $n_ofs , $n_cnt );
10
10
}
11
11
12
12
sub get_blame_prefix {
13
- my ($line ) = @_ ;
14
- $line =~ / ^([0-9a-f]+\s +(\S +\s +)?\( [^\) ]+\) )/ or die " bad blame output: $line " ;
15
- return $1 ;
13
+ my ($line ) = @_ ;
14
+ $line =~ / ^([0-9a-f]+\s +(\S +\s +)?\( [^\) ]+\) )/ or die " bad blame output: $line " ;
15
+ return $1 ;
16
16
}
17
17
18
18
my ($oldrev , $newrev ) = @ARGV ;
@@ -21,46 +21,46 @@ open($diff, '-|', 'git', '--no-pager', 'diff', $oldrev, $newrev) or die;
21
21
my ($pre , $post );
22
22
my $filename ;
23
23
while (<$diff >) {
24
- if (m { ^diff --git ./(.*) ./\1 $} ) {
24
+ if (m { ^diff --git ./(.*) ./\1 $} ) {
25
25
close $pre if defined $pre ;
26
26
close $post if defined $post ;
27
27
print ;
28
- $prefilename = " ./" . $1 ;
29
- $postfilename = " ./" . $1 ;
28
+ $prefilename = " ./" . $1 ;
29
+ $postfilename = " ./" . $1 ;
30
30
$delete = $create = 0;
31
- } elsif (m { ^new file} ) {
31
+ } elsif (m { ^new file} ) {
32
32
$create = 1;
33
33
$prefilename = ' /dev/null' ;
34
- } elsif (m { ^deleted file} ) {
34
+ } elsif (m { ^deleted file} ) {
35
35
$delete = 1;
36
36
$postfilename = ' /dev/null' ;
37
- } elsif (m { ^--- $prefilename $} ) {
38
- # ignore
37
+ } elsif (m { ^--- $prefilename $} ) {
38
+ # ignore
39
39
print ;
40
- } elsif (m { ^\+\+\+ $postfilename $} ) {
41
- # ignore
40
+ } elsif (m { ^\+\+\+ $postfilename $} ) {
41
+ # ignore
42
42
print ;
43
- } elsif (m { ^@@ } ) {
44
- my ($o_ofs , $o_cnt , $n_ofs , $n_cnt )
45
- = parse_hunk_header($_ );
46
- my $o_end = $o_ofs + $o_cnt - 1;
47
- my $n_end = $n_ofs + $n_cnt - 1;
43
+ } elsif (m { ^@@ } ) {
44
+ my ($o_ofs , $o_cnt , $n_ofs , $n_cnt )
45
+ = parse_hunk_header($_ );
46
+ my $o_end = $o_ofs + $o_cnt - 1;
47
+ my $n_end = $n_ofs + $n_cnt - 1;
48
48
if (!$create ) {
49
49
open ($pre , ' -|' , ' git' , ' blame' , ' -M' , " -L$o_ofs ,$o_end " ,
50
- " -l" ,
50
+ " -l" ,
51
51
$oldrev , ' --' , $prefilename ) or die ;
52
52
}
53
53
if (!$delete ) {
54
54
open ($post , ' -|' , ' git' , ' blame' , ' -M' , " -L$n_ofs ,$n_end " ,
55
- " -l" ,
55
+ " -l" ,
56
56
$newrev , ' --' , $postfilename ) or die ;
57
57
}
58
- } elsif (m { ^ } ) {
59
- print get_blame_prefix(scalar <$pre >), " \t " , $_ ;
60
- scalar <$post >; # discard
61
- } elsif (m { ^\- } ) {
62
- print get_blame_prefix(scalar <$pre >), " \t " , $_ ;
63
- } elsif (m { ^\+ } ) {
64
- print get_blame_prefix(scalar <$post >), " \t " , $_ ;
65
- }
58
+ } elsif (m { ^ } ) {
59
+ print get_blame_prefix(scalar <$pre >), " \t " , $_ ;
60
+ scalar <$post >; # discard
61
+ } elsif (m { ^\- } ) {
62
+ print get_blame_prefix(scalar <$pre >), " \t " , $_ ;
63
+ } elsif (m { ^\+ } ) {
64
+ print get_blame_prefix(scalar <$post >), " \t " , $_ ;
65
+ }
66
66
}
0 commit comments