git-p4import(1)
===============

NAME
----
git-p4import - Import a Perforce repository into git


SYNOPSIS
--------
`git-p4import` [-q|-v] [--authors <file>] [-t <timezone>] <//p4repo/path> <branch>

`git-p4import` --stitch <//p4repo/path>

`git-p4import`


DESCRIPTION
-----------
Import a Perforce repository into an existing git repository.  When
a <//p4repo/path> and <branch> are specified a new branch with the
given name will be created and the initial import will begin.

Once the initial import is complete you can do an incremental import
of new commits from the Perforce repository.  You do this by checking
out the appropriate git branch and then running `git-p4import` without
any options.

The standard p4 client is used to communicate with the Perforce
repository; it must be configured correctly in order for `git-p4import`
to operate (see below).


OPTIONS
-------
-q::
	Do not display any progress information.

-v::
        Give extra progress information.

\--authors::
	Specify an authors file containing a mapping of Perforce user
	ids to full names and email addresses (see Notes below).

\--stitch::
	Import the contents of the given perforce branch into the
	currently checked out git branch.

\--log::
	Store debugging information in the specified file.

-t::
	Specify that the remote repository is in the specified timezone.
	Timezone must be in the format "US/Pacific" or "Europe/London"
	etc.  You only need to specify this once, it will be saved in
	the git config file for the repository.

<//p4repo/path>::
	The Perforce path that will be imported into the specified branch.

<branch>::
	The new branch that will be created to hold the Perforce imports.


P4 Client
---------
You must make the `p4` client command available in your $PATH and
configure it to communicate with the target Perforce repository.
Typically this means you must set the "$P4PORT" and "$P4CLIENT"
environment variables.

You must also configure a `p4` client "view" which maps the Perforce
branch into the top level of your git repository, for example:

------------
Client: myhost

Root:   /home/sean/import

Options:   noallwrite clobber nocompress unlocked modtime rmdir

View:
        //public/jam/... //myhost/jam/...
------------

With the above `p4` client setup, you could import the "jam"
perforce branch into a branch named "jammy", like so:

------------
$ mkdir -p /home/sean/import/jam
$ cd /home/sean/import/jam
$ git init-db
$ git p4import //public/jam jammy
------------


Multiple Branches
-----------------
Note that by creating multiple "views" you can use `git-p4import`
to import additional branches into the same git repository.
However, the `p4` client has a limitation in that it silently
ignores all but the last "view" that maps into the same local
directory.  So the following will *not* work:

------------
View:
        //public/jam/... //myhost/jam/...
        //public/other/... //myhost/jam/...
        //public/guest/... //myhost/jam/...
------------

If you want more than one Perforce branch to be imported into the
same directory you must employ a workaround.  A simple option is
to adjust your `p4` client before each import to only include a
single view.

Another option is to create multiple symlinks locally which all
point to the same directory in your git repository and then use
one per "view" instead of listing the actual directory.


Tags
----
A git tag of the form p4/xx is created for every change imported from
the Perforce repository where xx is the Perforce changeset number.
Therefore after the import you can use git to access any commit by its
Perforce number, eg. git show p4/327.

The tag associated with the HEAD commit is also how `git-p4import`
determines if their are new changes to incrementally import from the
Perforce repository.

If you import from a repository with many thousands of changes
you will have an equal number of p4/xxxx git tags.  Git tags can
be expensive in terms of disk space and repository operations.
If you don't need to perform further incremental imports, you
may delete the tags.


Notes
-----
You can interrupt the import (eg. ctrl-c) at any time and restart it
without worry.

Author information is automatically determined by querying the
Perforce "users" table using the id associated with each change.
However, if you want to manually supply these mappings you can do
so with the "--authors" option.  It accepts a file containing a list
of mappings with each line containing one mapping in the format:

------------
    perforce_id = Full Name <email@address.com>
------------


Author
------
Written by Sean Estabrooks <seanlkml@sympatico.ca>


GIT
---
Part of the gitlink:git[7] suite

