Here is the current structure of the repository:
/----+-----perl - Mainline development (bleadperl)
- +-----cfgperl - Configure Pumpkin's Perl
+ +-----perlio - PerlIO Pumpkin's Perl
+-----vmsperl - VMS Pumpkin's Perl
+-----maint-5.004------perl - Maintainance branches
+-----maint-5.005------perl
+-----maint-5.6------perl
+ +-----maint-5.6------pureperl
Perforce uses a branching model that simply tracks relationships
between files. It does not care about directories at all, so
The mainline (aka "trunk") code in the Perl repository is under
"//depot/perl/...". Most branches typically map its entire
contents under a directory that goes by the same name as the branch
-name. Thus the contents of the cfgperl branch are to be found
-in //depot/cfgperl.
+name. Thus the contents of the perlio branch are to be found
+in //depot/perlio.
Run `p4 client` to specify how the repository contents should map to
your local disk. Most users will typically have a client map that
if there are any changes in the mainline that you need to merge into
your own branch. A typical merging session looks like this:
- % cd ~/p4view/cfgperl
- % p4 integrate -b cfgperl # to bring parent changes into cfgperl
- % p4 resolve -a ./... # auto merge the changes
+ % cd ~/p4view/perlio
+ % p4 integrate -b perlio # to bring parent changes into perlio
+ % p4 resolve -am ./... # auto merge the changes
% p4 resolve ./... # manual merge conflicting changes
% p4 submit ./... # check in
-If the owner of the mainline wants to bring the changes in cfgperl
+If the owner of the mainline wants to bring the changes in perlio
back into the mainline, they do:
- % p4 integrate -r -b cfgperl
+ % p4 integrate -r -b perlio
...
Generating a patch for change#42 is done as follows:
% p4 describe -du 42 | p4desc | p4d2p > change-42.patch
-p4desc and p4d2p are to be found in //depot/perl/Porting/.
+F<p4desc> and F<>p4d2p> are to be found in //depot/perl/Porting/.
+
+The usual routine to apply a patch is
+
+ % p4 edit file.c file.h
+ % patch < patch.txt
+
+(any necessary, re-Configure, make regen_headers, make clean, etc, here)
+
+ % make all test
+
+(preferably make all test in several platforms and under several
+different Configurations)
+
+ % while unhappy
+ do
+ $EDITOR
+ make all test
+ done
+ % p4 submit
+
+Other useful Perforce commands
+
+ % p4 describe -du 12345 # show change 12345
+
+Note: the output of "p4 describe" is not in proper diff format, use
+the F<Porting/p4d2p> to convert.
+
+ % p4 diff -se ./... # have I modified something but forgotten
+ # to "p4 edit", easy faux pas with autogenerated
+ # files like proto.h, or if one forgets to
+ # look carefully which files a patch modifies
+ % p4 sync file.h # if someone else has modified file.h
+ % p4 opened # which files are opened (p4 edit) by me
+ % p4 opened -a # which files are opened by anybody
+ % p4 diff -du file.c # what changes have I done
+ % p4 revert file.h # never mind my changes
+ % p4 sync -f argh.c # forcibly synchronize your file
+ # from the repository
+ % p4 diff -sr | p4 -x - revert
+ # throw away (opened but) unchanged files
+ # (in Perforce it's a little bit too easy
+ # to checkin unchanged files)
+
+Integrate patch 12345 from the mainline to the maint-5.6 branch:
+(you have to in the directory that has both the mainline and
+the maint-5.6/perl as subdirectories)
+
+ % p4 integrate -d perl/...@12345,12345 maint-5.6/perl/...
+
+Integrate patches 12347-12350 from the perlio branch to the mainline:
+
+ % p4 integrate -d perlio/...@12347,12350 perl/...
=head1 Contact Information
Gurusamy Sarathy, gsar@activestate.com, 8 May 1999.
-Slightly updated by Simon Cozens, simon@brecon.co.uk, 3 July 2000
+Slightly updated by Simon Cozens, simon@brecon.co.uk, 3 July 2000.
+
+More updates by Jarkko Hietaniemi, jhi@iki.fi, 28 June 2001.
=cut