[revml] Fix for renamed changelist number
Dimitry Andric
dimitry at andric.com
Fri Dec 21 06:20:50 PST 2007
Hi,
I've been importing a rather large CVS repository into a Perforce
server. This import takes approximately 5 days to complete (yes,
really). All the while, the destination Perforce server is in normal
use by a few hundred other developers, that regularly submit stuff.
In this case, when it has a lot of incoming requests queued, the
Perforce server sometimes decides to rename changelist numbers at the
last instant of the submit, as in:
Change 131688 created with 15947 open file(s).
Submitting change 131688.
Locking 15947 files ...
add //depot-foo/bar#1
[...15946 more files...]
Change 131688 renamed change 131700 and submitted.
Unfortunately, vcp picks up the first changelist number that is output,
and tries to do some post-submit modifications to that specific
changelist. This will then fail, because the earlier number doesn't
exist.
I would like to propose the following diff, which should fix the issue.
It does a little bit stricter matching on the "Change NNNN submitted"
line, and handles the "Change NNNN renamed change MMMM and submitted"
case.
diff -u a/lib/VCP/Dest/p4.pm b/lib/VCP/Dest/p4.pm
--- a/lib/VCP/Dest/p4.pm 2007-06-05 10:04:31.000000000 +0200
+++ b/lib/VCP/Dest/p4.pm 2007-12-21 11:14:16.000000000 +0100
@@ -565,7 +565,10 @@
if ( $line =~ m{^\w+\s+//(.*)#(\d+)\z} ) {
$p4_rev_ids{$1} = $2;
}
- elsif ( $line =~ m{^Change (\d+) } ) {
+ elsif ( $line =~ m{^Change (\d+) renamed change (\d+) and submitted} ) {
+ $change_number = $2;
+ }
+ elsif ( $line =~ m{^Change (\d+) submitted} ) {
$change_number = $1;
}
}
More information about the revml
mailing list