[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