#!/usr/bin/perl -w # # PVCS to Perforce converter, phase IV: niceties after the fact # # Copyright 1997 Perforce Software. All rights reserved. # Written by James Strickland, July 1997 # # This script sorts the mapping output by phase III to be keyed by archive, # then revision number. require 5.0; use strict; use integer; use lib '.'; use convert; open(MAPPING, "<$convert::metadata_dir/mapping.ns") or die "can't open for read: $!"; open(NEWMAPPING, ">$convert::metadata_dir/mapping") or die "can't open for write: $!"; my (@checkins,$checkin); # read 'em in while(<MAPPING>) { chomp; push @checkins,[ split(/#/) ]; } # sort 'em @checkins = sort by_archive_then_revision @checkins; # write 'em out my $last_archive=""; my $archive_count=0; print NEWMAPPING "# This file is sorted by archive name. # For each archive all PVCS revisions are listed with the associated Perforce # change number and filename.\n"; foreach $checkin (@checkins) { my ($archive,$revision,$change_number,$depot_file) = @$checkin; if($archive ne $last_archive) { print NEWMAPPING "\n\"$archive\"\n"; $last_archive=$archive; $archive_count++; } printf NEWMAPPING "%16s %4d \"%s\"\n",$revision,$change_number,$depot_file; } my $summary = "\n" . scalar(@checkins) . " revisions in $archive_count archives.\n"; print NEWMAPPING $summary; print $summary; sub by_archive_then_revision { my ($archivea,$archiveb); $archivea = $$a[0]; $archiveb = $$b[0]; if($archivea ne $archiveb) { return $archivea cmp $archiveb; } my (@reva,@revb); @reva = split(/\./,$$a[1]); @revb = split(/\./,$$b[1]); if($#reva != $#revb) { return $#reva <=> $#revb; } my $i; for($i=0;$i<=$#reva;$i++) { if($reva[$i] != $revb[$i]) { return $reva[$i] <=> $revb[$i]; } } return 0; # they're the same (this shouldn't actually happen..) }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 7114 | Sven Erik Knop |
This is a modification of the public depot version of pvcsToP4. This version requires the official P4Perl release from the Perforce ftp site. The main change compared to the public depot release of pvcsToP4 is that this version supports branching - as far as I have been able to test - completely. Please see CHANGELOG and README for some details. |