git --list-cmds: collect command list in a string_list
[gitweb.git] / Documentation / git-p4.txt
index 35e31709181d42f2e20bb2e818601628c03b7168..d8c8f11c9f2dc94a2f4d46445e33c4f1494ab39e 100644 (file)
@@ -104,7 +104,7 @@ $ git p4 sync //path/in/your/perforce/depot
 ------------
 This imports the specified depot into
 'refs/remotes/p4/master' in an existing Git repository.  The
-'--branch' option can be used to specify a different branch to
+`--branch` option can be used to specify a different branch to
 be used for the p4 content.
 
 If a Git repository includes branches 'refs/remotes/origin/p4', these
@@ -114,7 +114,7 @@ from a Git remote, this can be useful in a multi-developer environment.
 
 If there are multiple branches, doing 'git p4 sync' will automatically
 use the "BRANCH DETECTION" algorithm to try to partition new changes
-into the right branch.  This can be overridden with the '--branch'
+into the right branch.  This can be overridden with the `--branch`
 option to specify just a single branch to update.
 
 
@@ -134,7 +134,7 @@ Submit
 ~~~~~~
 Submitting changes from a Git repository back to the p4 repository
 requires a separate p4 client workspace.  This should be specified
-using the 'P4CLIENT' environment variable or the Git configuration
+using the `P4CLIENT` environment variable or the Git configuration
 variable 'git-p4.client'.  The p4 client must exist, but the client root
 will be created and populated if it does not already exist.
 
@@ -150,13 +150,19 @@ $ git p4 submit topicbranch
 ------------
 
 The upstream reference is generally 'refs/remotes/p4/master', but can
-be overridden using the '--origin=' command-line option.
+be overridden using the `--origin=` command-line option.
 
 The p4 changes will be created as the user invoking 'git p4 submit'. The
-'--preserve-user' option will cause ownership to be modified
+`--preserve-user` option will cause ownership to be modified
 according to the author of the Git commit.  This option requires admin
 privileges in p4, which can be granted using 'p4 protect'.
 
+To shelve changes instead of submitting, use `--shelve` and `--update-shelve`:
+
+----
+$ git p4 submit --shelve
+$ git p4 submit --update-shelve 1234 --update-shelve 2345
+----
 
 OPTIONS
 -------
@@ -166,7 +172,7 @@ General options
 All commands except clone accept these options.
 
 --git-dir <dir>::
-       Set the 'GIT_DIR' environment variable.  See linkgit:git[1].
+       Set the `GIT_DIR` environment variable.  See linkgit:git[1].
 
 -v::
 --verbose::
@@ -221,7 +227,7 @@ Git repository:
        where they will be treated as remote-tracking branches by
        linkgit:git-branch[1] and other commands.  This option instead
        puts p4 branches in 'refs/heads/p4/'.  Note that future
-       sync operations must specify '--import-local' as well so that
+       sync operations must specify `--import-local` as well so that
        they can find the p4 branches in refs/heads.
 
 --max-changes <n>::
@@ -245,7 +251,7 @@ Git repository:
        default, involves removing the entire depot path.  With this
        option, the full p4 depot path is retained in Git.  For example,
        path '//depot/main/foo/bar.c', when imported from
-       '//depot/main/', becomes 'foo/bar.c'.  With '--keep-path', the
+       '//depot/main/', becomes 'foo/bar.c'.  With `--keep-path`, the
        Git path is instead 'depot/main/foo/bar.c'.
 
 --use-client-spec::
@@ -275,7 +281,7 @@ These options can be used to modify 'git p4 submit' behavior.
 --origin <commit>::
        Upstream location from which commits are identified to submit to
        p4.  By default, this is the most recent p4 commit reachable
-       from 'HEAD'.
+       from `HEAD`.
 
 -M::
        Detect renames.  See linkgit:git-diff[1].  Renames will be
@@ -303,6 +309,15 @@ These options can be used to modify 'git p4 submit' behavior.
        submit manually or revert.  This option always stops after the
        first (oldest) commit.  Git tags are not exported to p4.
 
+--shelve::
+       Instead of submitting create a series of shelved changelists.
+       After creating each shelve, the relevant files are reverted/deleted.
+       If you have multiple commits pending multiple shelves will be created.
+
+--update-shelve CHANGELIST::
+       Update an existing shelved changelist with this commit. Implies
+       --shelve. Repeat for multiple shelved changelists.
+
 --conflict=(ask|skip|quit)::
        Conflicts can occur when applying a commit to p4.  When this
        happens, the default behavior ("ask") is to prompt whether to
@@ -341,7 +356,7 @@ p4 revision specifier on the end:
     Import all changes from both named depot paths into a single
     repository.  Only files below these directories are included.
     There is not a subdirectory in Git for each "proj1" and "proj2".
-    You must use the '--destination' option when specifying more
+    You must use the `--destination` option when specifying more
     than one depot path.  The revision specifier must be specified
     identically on each depot path.  If there are files in the
     depot paths with the same name, the path with the most recently
@@ -355,7 +370,7 @@ CLIENT SPEC
 The p4 client specification is maintained with the 'p4 client' command
 and contains among other fields, a View that specifies how the depot
 is mapped into the client repository.  The 'clone' and 'sync' commands
-can consult the client spec when given the '--use-client-spec' option or
+can consult the client spec when given the `--use-client-spec` option or
 when the useClientSpec variable is true.  After 'git p4 clone', the
 useClientSpec variable is automatically set in the repository
 configuration file.  This allows future 'git p4 submit' commands to
@@ -390,7 +405,7 @@ different areas in the tree, and indicate related content.  'git p4'
 can use these mappings to determine branch relationships.
 
 If you have a repository where all the branches of interest exist as
-subdirectories of a single depot path, you can use '--detect-branches'
+subdirectories of a single depot path, you can use `--detect-branches`
 when cloning or syncing to have 'git p4' automatically find
 subdirectories in p4, and to generate these as branches in Git.
 
@@ -467,6 +482,12 @@ git-p4.client::
        Client specified as an option to all p4 commands, with
        '-c <client>', including the client spec.
 
+git-p4.retries::
+       Specifies the number of times to retry a p4 command (notably,
+       'p4 sync') if the network times out. The default value is 3.
+       Set the value to 0 to disable retries or if your p4 version
+       does not support retries (pre 2012.2).
+
 Clone and sync variables
 ~~~~~~~~~~~~~~~~~~~~~~~~
 git-p4.syncFromOrigin::
@@ -507,7 +528,7 @@ git-p4.labelImportRegexp::
 git-p4.useClientSpec::
        Specify that the p4 client spec should be used to identify p4
        depot paths of interest.  This is equivalent to specifying the
-       option '--use-client-spec'.  See the "CLIENT SPEC" section above.
+       option `--use-client-spec`.  See the "CLIENT SPEC" section above.
        This variable is a boolean, not the name of a p4 client.
 
 git-p4.pathEncoding::
@@ -551,6 +572,17 @@ git-p4.keepEmptyCommits::
        A changelist that contains only excluded files will be imported
        as an empty commit if this boolean option is set to true.
 
+git-p4.mapUser::
+       Map a P4 user to a name and email address in Git. Use a string
+       with the following format to create a mapping:
++
+-------------
+git config --add git-p4.mapUser "p4user = First Last <mail@address.com>"
+-------------
++
+A mapping will override any user information from P4. Mappings for
+multiple P4 user can be defined.
+
 Submit variables
 ~~~~~~~~~~~~~~~~
 git-p4.detectRenames::