Autogenerated HTML docs for v1.4.0-rc1
authorJunio C Hamano <junio@hera.kernel.org>
Tue, 6 Jun 2006 05:44:31 +0000 (05:44 +0000)
committerJunio C Hamano <junio@hera.kernel.org>
Tue, 6 Jun 2006 05:44:31 +0000 (05:44 +0000)
git-p4import.html [new file with mode: 0644]
git-p4import.txt [new file with mode: 0644]

diff --git a/git-p4import.html b/git-p4import.html
new file mode 100644 (file)
index 0000000..1150438
--- /dev/null
@@ -0,0 +1,460 @@
+<!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 &lt;file&gt;] [-t &lt;timezone&gt;] &lt;//p4repo/path&gt; &lt;branch&gt;</p>\r
+<p><tt>git-p4import</tt> --stitch &lt;//p4repo/path&gt;</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 &lt;//p4repo/path&gt; and &lt;branch&gt; 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
+&lt;//p4repo/path&gt;\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
+&lt;branch&gt;\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 &lt;email@address.com&gt;</tt></pre>\r
+</div></div>\r
+</div>\r
+<h2>Author</h2>\r
+<div class="sectionbody">\r
+<p>Written by Sean Estabrooks &lt;seanlkml@sympatico.ca&gt;</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
diff --git a/git-p4import.txt b/git-p4import.txt
new file mode 100644 (file)
index 0000000..b8ff1e9
--- /dev/null
@@ -0,0 +1,165 @@
+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
+