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

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


SYNOPSIS
--------
`git-p4import` [-q|-v] [--notags] [--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).

\--notags::
	Do not create a tag for each imported commit.

\--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 there 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

