Readme-P4.txt #1

  • //
  • guest/
  • sven_erik_knop/
  • mercurial/
  • Readme-P4.txt
  • View
  • Commits
  • Open Download .zip Download (3 KB)
Mercurial - Perforce converter
==============================

This is a quick overview of how you can enhance the latest 
Mercurial installation to convert Hg repositories to Perforce.
You need:

1. The standard Mercurial code (I used Hg 1.7.3). You can use the full
installation I provided here, or load the code from the Mercurial website.

2. Two modified files from my installation:

hgext/convert/p4.py			# added P4_sink class
hgext/convert/convcmd.py	# simply declares P4 a valid sink

Place these two files into the standard Mercurial code and re-build.

3. P4Python 2010.1 or later. 
Download this from the Perforce ftp server or website. 
You will also need the P4 API libraries for your platform in order
to build the P4Python extension. Please follow the release notes 
provided on how to build and install P4Python.

P4Python is a thin wrapper around the P4 API that allows Python users
to access the Perforce commands and a simple and concise interface. This
beats the alternative to wrap the P4 command line command (and is faster 
to boot).

4. Convert is a standard extension for Mercurial I have extended 
for export to Perforce. You enable this extension by putting the 
following lines into your .hgrc file:

[extensions]
convert =

5. Create an authormap in the directory you run the converter in. 
This file is a text file that maps the Mercurial user information 
to the Perforce information. In my tests, this file contains one line:

Sven Erik Knop <sknop@perforce.com>=sknop

You can use 'hg log' to find all committed changes in your Mercurial 
repository. Filter these for "user:" and extract the second part to
the user. The output then needs to be sorted for unique entries.
You need to be prepared map several entries to one Perforce user,
since the user entry in hg is self-declared and not enforced anywhere.

6. Create a workspace for import. Place the workspace root outside your hg repository. 
Make sure to enable the option 'allwrite' to avoid error messages.

7. Start the import. Here is the command I used

/path/to/hg convert -A authormap -v --config convert.p4.client=hg-import-main \
--config convert.p4.port=1666 --config convert.p4.user=sknop --dest-type p4 .

Note the '.' at the end which is the location of the hg repository. Make sure to use the 'hg' 
executable (in fact a Python script) from your build (see step 2) to ensure you pick up the correct convert libraries.

The export will create a file called revmapfile which maps Mercurial rev hashes to Perforce changes. 
This can be used to create incremental imports.
You need to delete this file if you want to re-run the import again from scratch. 

Good luck.
# Change User Description Committed
#2 7947 Sven Erik Knop Added Copyright and Disclaimer to Mercurial converter.
#1 7918 Sven Erik Knop Added Mercurial Exporter to Perforce Mk 1.