21 |
|
|
22 |
use File::Basename; |
use File::Basename; |
23 |
|
|
24 |
if (@ARGV < 3) |
if (@ARGV < 3) |
25 |
{ |
{ |
26 |
print <<USAGE; |
print <<USAGE; |
27 |
revdiff FILE OLD NEW |
revdiff FILE OLD NEW |
28 |
|
|
29 |
Get a diff of FILE between revisions OLD and NEW. Store the |
Get a diff of FILE between revisions OLD and NEW. Store the |
30 |
diff in a file named FILE-OLD-NEW.diff. |
diff in a file named FILE-OLD-NEW.diff. |
31 |
|
|
48 |
$file = shift @ARGV; |
$file = shift @ARGV; |
49 |
$old = shift @ARGV; |
$old = shift @ARGV; |
50 |
|
|
51 |
sub diffit |
sub diffit |
52 |
{ |
{ |
53 |
my ($old, $new) = @_; |
my ($old, $new) = @_; |
54 |
print "cvs diff -r$old -r$new $file >$file-$old-$new.diff\n"; |
print "cvs diff -r$old -r$new $file >$file-$old-$new.diff\n"; |
64 |
die "Can't find $entries" unless -f $entries; |
die "Can't find $entries" unless -f $entries; |
65 |
open (IN, "<$entries") or die "Cannot open $entries"; |
open (IN, "<$entries") or die "Cannot open $entries"; |
66 |
my $rev; |
my $rev; |
67 |
while ($line = <IN>) |
while ($line = <IN>) |
68 |
{ |
{ |
69 |
if ($line =~ m,/$base/([^/]+),) |
if ($line =~ m,/$base/([^/]+),) |
70 |
{ |
{ |
71 |
$rev = $1; |
$rev = $1; |
72 |
break; |
break; |
81 |
{ |
{ |
82 |
$old = current_revision ($file); |
$old = current_revision ($file); |
83 |
} |
} |
84 |
elsif ($old =~ /^-(\d+)$/) |
elsif ($old =~ /^-(\d+)$/) |
85 |
{ |
{ |
86 |
my $offset = $1; |
my $offset = $1; |
87 |
$old = current_revision ($file); |
$old = current_revision ($file); |
90 |
$old = sprintf ("%d.%d", $1, $minor); |
$old = sprintf ("%d.%d", $1, $minor); |
91 |
} |
} |
92 |
|
|
93 |
while (@ARGV) |
while (@ARGV) |
94 |
{ |
{ |
95 |
my $new = shift @ARGV; |
my $new = shift @ARGV; |
96 |
if ($new =~ /^[+]\d+$/) |
if ($new =~ /^[+]\d+$/) |
97 |
{ |
{ |
98 |
my $n = $new; |
my $n = $new; |
99 |
for ($i = 0; $i < $n; ++$i) |
for ($i = 0; $i < $n; ++$i) |
100 |
{ |
{ |
101 |
unless ($old =~ /(.*)\.(\d+)$/) |
unless ($old =~ /(.*)\.(\d+)$/) |
102 |
{ |
{ |
103 |
die "Internal error"; |
die "Internal error"; |
104 |
} |
} |
107 |
diffit ($old, $new); |
diffit ($old, $new); |
108 |
$old = $new; |
$old = $new; |
109 |
} |
} |
110 |
} |
} |
111 |
elsif ($new =~ /^[-]\d+$/) |
elsif ($new =~ /^[-]\d+$/) |
112 |
{ |
{ |
113 |
my $n = - $new; |
my $n = - $new; |
114 |
for ($i = 0; $i < $n; ++$i) |
for ($i = 0; $i < $n; ++$i) |
115 |
{ |
{ |
116 |
unless ($old =~ /(.*)\.(\d+)$/) |
unless ($old =~ /(.*)\.(\d+)$/) |
117 |
{ |
{ |
118 |
die "Internal error"; |
die "Internal error"; |
119 |
} |
} |
123 |
$old = $new; |
$old = $new; |
124 |
} |
} |
125 |
} |
} |
126 |
else |
else |
127 |
{ |
{ |
128 |
diffit ($old, $new); |
diffit ($old, $new); |
129 |
$old = $new; |
$old = $new; |