--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
+<style type="text/css">\r
+/* Debug borders */\r
+p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
+/*\r
+ border: 1px solid red;\r
+*/\r
+}\r
+\r
+body {\r
+ margin: 1em 5% 1em 5%;\r
+}\r
+\r
+a { color: blue; }\r
+a:visited { color: fuchsia; }\r
+\r
+em {\r
+ font-style: italic;\r
+}\r
+\r
+strong {\r
+ font-weight: bold;\r
+}\r
+\r
+tt {\r
+ color: navy;\r
+}\r
+\r
+h1, h2, h3, h4, h5, h6 {\r
+ color: #527bbd;\r
+ font-family: sans-serif;\r
+ margin-top: 1.2em;\r
+ margin-bottom: 0.5em;\r
+ line-height: 1.3;\r
+}\r
+\r
+h1 {\r
+ border-bottom: 2px solid silver;\r
+}\r
+h2 {\r
+ border-bottom: 2px solid silver;\r
+ padding-top: 0.5em;\r
+}\r
+\r
+div.sectionbody {\r
+ font-family: serif;\r
+ margin-left: 0;\r
+}\r
+\r
+hr {\r
+ border: 1px solid silver;\r
+}\r
+\r
+p {\r
+ margin-top: 0.5em;\r
+ margin-bottom: 0.5em;\r
+}\r
+\r
+pre {\r
+ padding: 0;\r
+ margin: 0;\r
+}\r
+\r
+span#author {\r
+ color: #527bbd;\r
+ font-family: sans-serif;\r
+ font-weight: bold;\r
+ font-size: 1.2em;\r
+}\r
+span#email {\r
+}\r
+span#revision {\r
+ font-family: sans-serif;\r
+}\r
+\r
+div#footer {\r
+ font-family: sans-serif;\r
+ font-size: small;\r
+ border-top: 2px solid silver;\r
+ padding-top: 0.5em;\r
+ margin-top: 4.0em;\r
+}\r
+div#footer-text {\r
+ float: left;\r
+ padding-bottom: 0.5em;\r
+}\r
+div#footer-badges {\r
+ float: right;\r
+ padding-bottom: 0.5em;\r
+}\r
+\r
+div#preamble,\r
+div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
+div.admonitionblock {\r
+ margin-right: 10%;\r
+ margin-top: 1.5em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.admonitionblock {\r
+ margin-top: 2.5em;\r
+ margin-bottom: 2.5em;\r
+}\r
+\r
+div.content { /* Block element content. */\r
+ padding: 0;\r
+}\r
+\r
+/* Block element titles. */\r
+div.title, caption.title {\r
+ font-family: sans-serif;\r
+ font-weight: bold;\r
+ text-align: left;\r
+ margin-top: 1.0em;\r
+ margin-bottom: 0.5em;\r
+}\r
+div.title + * {\r
+ margin-top: 0;\r
+}\r
+\r
+td div.title:first-child {\r
+ margin-top: 0.0em;\r
+}\r
+div.content div.title:first-child {\r
+ margin-top: 0.0em;\r
+}\r
+div.content + div.title {\r
+ margin-top: 0.0em;\r
+}\r
+\r
+div.sidebarblock > div.content {\r
+ background: #ffffee;\r
+ border: 1px solid silver;\r
+ padding: 0.5em;\r
+}\r
+\r
+div.listingblock > div.content {\r
+ border: 1px solid silver;\r
+ background: #f4f4f4;\r
+ padding: 0.5em;\r
+}\r
+\r
+div.quoteblock > div.content {\r
+ padding-left: 2.0em;\r
+}\r
+div.quoteblock .attribution {\r
+ text-align: right;\r
+}\r
+\r
+div.admonitionblock .icon {\r
+ vertical-align: top;\r
+ font-size: 1.1em;\r
+ font-weight: bold;\r
+ text-decoration: underline;\r
+ color: #527bbd;\r
+ padding-right: 0.5em;\r
+}\r
+div.admonitionblock td.content {\r
+ padding-left: 0.5em;\r
+ border-left: 2px solid silver;\r
+}\r
+\r
+div.exampleblock > div.content {\r
+ border-left: 2px solid silver;\r
+ padding: 0.5em;\r
+}\r
+\r
+div.verseblock div.content {\r
+ white-space: pre;\r
+}\r
+\r
+div.imageblock div.content { padding-left: 0; }\r
+div.imageblock img { border: 1px solid silver; }\r
+span.image img { border-style: none; }\r
+\r
+dl {\r
+ margin-top: 0.8em;\r
+ margin-bottom: 0.8em;\r
+}\r
+dt {\r
+ margin-top: 0.5em;\r
+ margin-bottom: 0;\r
+ font-style: italic;\r
+}\r
+dd > *:first-child {\r
+ margin-top: 0;\r
+}\r
+\r
+ul, ol {\r
+ list-style-position: outside;\r
+}\r
+ol.olist2 {\r
+ list-style-type: lower-alpha;\r
+}\r
+\r
+div.tableblock > table {\r
+ border-color: #527bbd;\r
+ border-width: 3px;\r
+}\r
+thead {\r
+ font-family: sans-serif;\r
+ font-weight: bold;\r
+}\r
+tfoot {\r
+ font-weight: bold;\r
+}\r
+\r
+div.hlist {\r
+ margin-top: 0.8em;\r
+ margin-bottom: 0.8em;\r
+}\r
+td.hlist1 {\r
+ vertical-align: top;\r
+ font-style: italic;\r
+ padding-right: 0.8em;\r
+}\r
+td.hlist2 {\r
+ vertical-align: top;\r
+}\r
+\r
+@media print {\r
+ div#footer-badges { display: none; }\r
+}\r
+include::./stylesheets/xhtml11-manpage.css[]\r
+/* Workarounds for IE6's broken and incomplete CSS2. */\r
+\r
+div.sidebar-content {\r
+ background: #ffffee;\r
+ border: 1px solid silver;\r
+ padding: 0.5em;\r
+}\r
+div.sidebar-title, div.image-title {\r
+ font-family: sans-serif;\r
+ font-weight: bold;\r
+ margin-top: 0.0em;\r
+ margin-bottom: 0.5em;\r
+}\r
+\r
+div.listingblock div.content {\r
+ border: 1px solid silver;\r
+ background: #f4f4f4;\r
+ padding: 0.5em;\r
+}\r
+\r
+div.quoteblock-content {\r
+ padding-left: 2.0em;\r
+}\r
+\r
+div.exampleblock-content {\r
+ border-left: 2px solid silver;\r
+ padding-left: 0.5em;\r
+}\r
+</style>\r
+<title>git-p4import(1)</title>\r
+</head>\r
+<body>\r
+<div id="header">\r
+<h1>\r
+git-p4import(1) Manual Page\r
+</h1>\r
+<h2>NAME</h2>\r
+<div class="sectionbody">\r
+<p>git-p4import -\r
+ Import a Perforce repository into git\r
+</p>\r
+</div>\r
+</div>\r
+<h2>SYNOPSIS</h2>\r
+<div class="sectionbody">\r
+<p><tt>git-p4import</tt> [-q|-v] [--authors <file>] [-t <timezone>] <//p4repo/path> <branch></p>\r
+<p><tt>git-p4import</tt> --stitch <//p4repo/path></p>\r
+<p><tt>git-p4import</tt></p>\r
+</div>\r
+<h2>DESCRIPTION</h2>\r
+<div class="sectionbody">\r
+<p>Import a Perforce repository into an existing git repository. When\r
+a <//p4repo/path> and <branch> are specified a new branch with the\r
+given name will be created and the initial import will begin.</p>\r
+<p>Once the initial import is complete you can do an incremental import\r
+of new commits from the Perforce repository. You do this by checking\r
+out the appropriate git branch and then running <tt>git-p4import</tt> without\r
+any options.</p>\r
+<p>The standard p4 client is used to communicate with the Perforce\r
+repository; it must be configured correctly in order for <tt>git-p4import</tt>\r
+to operate (see below).</p>\r
+</div>\r
+<h2>OPTIONS</h2>\r
+<div class="sectionbody">\r
+<dl>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+ Do not display any progress information.\r
+</p>\r
+</dd>\r
+<dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+ Give extra progress information.\r
+</p>\r
+</dd>\r
+<dt>\r
+--authors\r
+</dt>\r
+<dd>\r
+<p>\r
+ Specify an authors file containing a mapping of Perforce user\r
+ ids to full names and email addresses (see Notes below).\r
+</p>\r
+</dd>\r
+<dt>\r
+--stitch\r
+</dt>\r
+<dd>\r
+<p>\r
+ Import the contents of the given perforce branch into the\r
+ currently checked out git branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+--log\r
+</dt>\r
+<dd>\r
+<p>\r
+ Store debugging information in the specified file.\r
+</p>\r
+</dd>\r
+<dt>\r
+-t\r
+</dt>\r
+<dd>\r
+<p>\r
+ Specify that the remote repository is in the specified timezone.\r
+ Timezone must be in the format "US/Pacific" or "Europe/London"\r
+ etc. You only need to specify this once, it will be saved in\r
+ the git config file for the repository.\r
+</p>\r
+</dd>\r
+<dt>\r
+<//p4repo/path>\r
+</dt>\r
+<dd>\r
+<p>\r
+ The Perforce path that will be imported into the specified branch.\r
+</p>\r
+</dd>\r
+<dt>\r
+<branch>\r
+</dt>\r
+<dd>\r
+<p>\r
+ The new branch that will be created to hold the Perforce imports.\r
+</p>\r
+</dd>\r
+</dl>\r
+</div>\r
+<h2>P4 Client</h2>\r
+<div class="sectionbody">\r
+<p>You must make the <tt>p4</tt> client command available in your $PATH and\r
+configure it to communicate with the target Perforce repository.\r
+Typically this means you must set the "$P4PORT" and "$P4CLIENT"\r
+environment variables.</p>\r
+<p>You must also configure a <tt>p4</tt> client "view" which maps the Perforce\r
+branch into the top level of your git repository, for example:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>Client: myhost\r
+\r
+Root: /home/sean/import\r
+\r
+Options: noallwrite clobber nocompress unlocked modtime rmdir\r
+\r
+View:\r
+ //public/jam/... //myhost/jam/...</tt></pre>\r
+</div></div>\r
+<p>With the above <tt>p4</tt> client setup, you could import the "jam"\r
+perforce branch into a branch named "jammy", like so:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ mkdir -p /home/sean/import/jam\r
+$ cd /home/sean/import/jam\r
+$ git init-db\r
+$ git p4import //public/jam jammy</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Multiple Branches</h2>\r
+<div class="sectionbody">\r
+<p>Note that by creating multiple "views" you can use <tt>git-p4import</tt>\r
+to import additional branches into the same git repository.\r
+However, the <tt>p4</tt> client has a limitation in that it silently\r
+ignores all but the last "view" that maps into the same local\r
+directory. So the following will <strong>not</strong> work:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>View:\r
+ //public/jam/... //myhost/jam/...\r
+ //public/other/... //myhost/jam/...\r
+ //public/guest/... //myhost/jam/...</tt></pre>\r
+</div></div>\r
+<p>If you want more than one Perforce branch to be imported into the\r
+same directory you must employ a workaround. A simple option is\r
+to adjust your <tt>p4</tt> client before each import to only include a\r
+single view.</p>\r
+<p>Another option is to create multiple symlinks locally which all\r
+point to the same directory in your git repository and then use\r
+one per "view" instead of listing the actual directory.</p>\r
+</div>\r
+<h2>Tags</h2>\r
+<div class="sectionbody">\r
+<p>A git tag of the form p4/xx is created for every change imported from\r
+the Perforce repository where xx is the Perforce changeset number.\r
+Therefore after the import you can use git to access any commit by its\r
+Perforce number, eg. git show p4/327.</p>\r
+<p>The tag associated with the HEAD commit is also how <tt>git-p4import</tt>\r
+determines if their are new changes to incrementally import from the\r
+Perforce repository.</p>\r
+<p>If you import from a repository with many thousands of changes\r
+you will have an equal number of p4/xxxx git tags. Git tags can\r
+be expensive in terms of disk space and repository operations.\r
+If you don't need to perform further incremental imports, you\r
+may delete the tags.</p>\r
+</div>\r
+<h2>Notes</h2>\r
+<div class="sectionbody">\r
+<p>You can interrupt the import (eg. ctrl-c) at any time and restart it\r
+without worry.</p>\r
+<p>Author information is automatically determined by querying the\r
+Perforce "users" table using the id associated with each change.\r
+However, if you want to manually supply these mappings you can do\r
+so with the "--authors" option. It accepts a file containing a list\r
+of mappings with each line containing one mapping in the format:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt> perforce_id = Full Name <email@address.com></tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Sean Estabrooks <seanlkml@sympatico.ca></p>\r
+</div>\r
+<h2>GIT</h2>\r
+<div class="sectionbody">\r
+<p>Part of the <a href="git.html">git(7)</a> suite</p>\r
+</div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 06-Jun-2006 05:43:53 UTC\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r
--- /dev/null
+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
+