Running P4ConvertImport Mode
Import Mode will pull in file revisions from a Subversion dump file or CVS repository,
adding them to the Perforce Server specified by the connection details in the
configuration options. To use this mode set:
com.p4convert.p4.mode=IMPORT
Care should be taken when adding data to a pre-existing Perforce Server
that the revision actions do not conflict with revisions already in the
Perforce Server; typically, this can occur if the Server has been in-use
since the previous migration.
To avoid such scenarios the import should either be to a unique depot, to
avoid conflict, or the Perforce Server should be Read Only during
subsequent migrations. After a conversion is complete, it is possible to
merge the new data with an existing depot using tools like
PerfMerge++.
The converter will check that your Perforce Server has no pending changes,
and will abort a conversion if any are detected.
Configuration options specific to Import Mode
Perforce server address and port (escape the ':'
with '\:'):
com.p4convert.p4.port=localhost\:4444
Default user and client for server connection:
com.p4convert.p4.client=p4-client
com.p4convert.p4.user=p4-user
Client workspace root used to import files into Perforce:
com.p4convert.p4.clientRoot=/Users/bruno/ws/
If Security is set to level 1 or greater, then the
p4-user must have
admin permissions in the Protection table and
the password supplied as a string (the
default is no string after the '=' sign):
com.p4convert.p4.passwd=PaSSwoRd
Alternatively if the user is already logged in and there is a valid
ticket, then leave the password field unset and set your environment
for P4TICKETS (don't rely on the
P4TICKETS unset default as p4-java
will not find your ticket file).
Convert Mode
Convert Mode is more advanced and requires knowledge of the Perforce
Journal replay and Archive file store. This mode can only be used for
single shot conversions and cannot be used incrementally. The performance
of Convert Mode is significantly better than Import Mode (x100
sometimes!).
After using Convert Mode the administrator will need to run
several commands to rebuild the Perforce server and upgrade the
metadata. Please refer to the
section for step-by-step instructions.
To use this mode set:
com.p4convert.p4.mode=CONVERT
Configuration options specific to Conversion Mode
Perforce server root address (path should end with a
slash (/)):
com.p4convert.p4.root=/full/path/to/p4_root/
Change list offset from which to start conversion (handy for batched conversions):
com.p4convert.p4.offset=0
Generated journal names (useful to increment the prefix when running
batched conversions):
com.p4convert.p4.jnlIndex=0
com.p4convert.p4.jnlPrefix=jnl.
Mimic the 2011.1 or greater credit behavior on rollbacks /
downgrades (to enable set value to true):
com.p4convert.p4.downgrade=false
Perforce normalises line-endings when storing the file on the server
and restores them based on the client workspace options and platform
type. However, in special cases it can be useful to store
line-ending in the server and use the 'share' option in the client.
To disable normal line-ending support set the following option to
false:
com.p4convert.p4.lineEnding=true
For non Unicode servers, or to simplify storage of hi-ASCII files,
setting the following option to false will store the file
as binary:
com.p4convert.p4.unicode=falsePost Conversion [Conversion Mode]
To finish a Convert Mode conversion you will need to install p4
and p4d and run a few Perforce commands.
[Required] Change directory to
P4ROOT, check there are no db.*
files present and then replay the journal file(s):
$ cd p4_root
$ p4d -r . -jr jnl.0
Perforce db files in '.' will be created if missing...
Recovering from jnl.0...
Perforce server info:
Server version 33 is replaying a version 0 journal/checkpoint.
The Server version is set to 0 to remind the
administrator that an upgrade is required, see
step 3.
or, for multiple journal files:
$ p4d -r . -jr jnl.0 jnl.1 ....
and with nohup:
nohup p4d -r . -jr jnl.0 jnl.1 .... &
[Required] Upgrade the database from
2004.2 schema. For simplicity the conversion generates a database
using an old schema, allowing you to upgrade to a Perforce Server
version of your choice. From the P4ROOT directory run
the upgrade command:
$ p4d -r . -xu
Perforce db files in '.' will be created if missing...
2001.1: splitting db.integ into db.integed/db.resolve.
2001.1: splitting db.have into db.have and db.label.
2002.1: splitting pending db.change into db.changex.
2002.2: upgrading tempobj filetype in db.rev.
2002.2: upgrading tempobj filetype in db.working.
2003.1: initialize default depot.
2003.2: upgrading db.user.
2005.1: building db.revhx (headrev) table.
2005.1: building db.locks from db.working.
2005.2: building db.revdx (delrev) table.
2005.2: moving spec depot entries into db.revsx.
2007.3: (re)building haveMap from db.have/db.working.
2007.3: (re)building db.archmap (lazy-copy map) table.
2007.3: removing old db.archive.
2008.1: upgrading db.change.
2009.2: moving db.boddate/db.ixdate into db.bodtext/db.ixtext.
2009.2: removing db.boddate/db.ixdate.
2010.2: adding db.config.
2011.1: upgrading tiny.db.
...upgrades done
[Optional] If the conversion was run in Unicode mode (where
com.p4convert.p4.unicode=true) and users are going to
continue to add Unicode content then you may wish to set the server to
Unicode mode. To enable Unicode run the following command from the
P4ROOT directory:
$ p4d -r . -xi
[Alternative] If you are running your Perforce Server on Linux and
your user base is predominantly Windows you may wish to force the
server to run as case insensitive (only allowing one version of case
for paths and files). The conversion option
com.p4convert.adv.lowerCase=true will have been used with
the case mode set to com.p4convert.adv.caseMode=FIRST.
All p4d commands must be include the -C1 flag,
this includes the earlier
step 1 and
step 2.
For example:
$ cd p4_root
$ p4d -C1 -r . -jr jnl.0
$ p4d -C1 -r . -xu
[Recommended] Some archive files may not have MD5 sum digests
(typically where Subversion did not store the digest or the digest
does not match due to the use of keyword expansion). To fill in the
metadata for MD5 sum digests and archive file sizes use the verify
command (this might be best split into depots and sub directories for
large servers):
$ p4 verify -u //...