[p4] Migrating SCCS to Perforce (again, still)

Rick Macdonald rickmacd at shaw.ca
Wed Mar 12 10:08:08 PDT 2008

I started looking at this last year but it got delayed until now.

Currently, I'm looking at:

- SCCS to RCS using Eric Raymond's sccs2rcs python version 1.5. It 
seemed the newest I could find?

- RCS to P4 using Richard Geiger's cvs2p4 from July 24, 2006. It seemed 
the newest I could find?

- There seems to be 2 options to merge the P4 depot above with our 
existing server: RevML and perfmerge++ from Perforce. I haven't looked 
at these much yet. Advice?

- our existing server is still at version 2005.2. I'm thinking I'd do 
this migration and depot merge at 2005.2 and then update the server to 
2007.x afterwards. Some of the scripts are old and there could be 
issues, especially with cvs2p4. Is this a good plan?

Release branches or labels: I've come up with the following. Have I 
missed some better method?

Ultimately, we need to label and/or branch several releases from the 
SCCS files. Creating labels and then branching seems the way to go at 
this point. cvs2p4 maintains the original SCCS revisions, as seen in the 
journal and checkpoint:

@pv@ 0 @db.archive@ @//depot/IMPORT/RCS/fanmo.F@ @4101.1@ 
@//Test/1/fanmo.F@ 14 32
@pv@ 0 @db.archive@ @//depot/IMPORT/RCS/fanmo.F@ @4100.1@ 
@//Test/1/fanmo.F@ 13 32
@pv@ 0 @db.archive@ @//depot/IMPORT/RCS/fanmo.F@ @3111.1@ 
@//Test/1/fanmo.F@ 12 32
@pv@ 0 @db.archive@ @//depot/IMPORT/RCS/fanmo.F@ @3100.1@ 
@//Test/1/fanmo.F@ 11 32

The numbers "4101.1" are the SCCS revisions, and "14", "13" etc are the 
corresponding P4 revisions. The SCCS revisions are not visible anywhere 
that I can find in the P4 depot created, but cvs2p4 has a "revmap" that 
produces this list:

/home/rickm/GCTSCCS/RCS/fanmo.F/3100.1 //Test/1/fanmo.F#11
/home/rickm/GCTSCCS/RCS/fanmo.F/3111.1 //Test/1/fanmo.F#12
/home/rickm/GCTSCCS/RCS/fanmo.F/4100.1 //Test/1/fanmo.F#13
/home/rickm/GCTSCCS/RCS/fanmo.F/4101.1 //Test/1/fanmo.F#14

I could write a trivial script to extract the depot file/revision names 
at historical points that I need (eg 4100 would be file 
/Test/1/fanmo.F#13) into filelist files and feed these into "p4 -x 
filelist tag -l labelname".

I would do this on the cvs2p4-created depot before merging with our 
existing depot. I assume the labels will still be valid after the depot 
merge? I think I could create branches from these labels before or after 
the merge, so I'd probably do it after.

Comments? Any red flags, things I haven't mentioned or asked that I 
should have?


More information about the perforce-user mailing list