path: root/Documentation
diff options
authorLuke Diamand <>2018-05-23 22:20:26 (GMT)
committerJunio C Hamano <>2018-05-23 23:58:28 (GMT)
commit123f631761dab8c37391ba1584122c2578f51923 (patch)
treeeb83d531d38c473363e1669496c91d21c781e57c /Documentation
parente3a80781f5932f5fea12a49eb06f3ade4ed8945c (diff)
git-p4: add unshelve command
This can be used to "unshelve" a shelved P4 commit into a git commit. For example: $ git p4 unshelve 12345 The resulting commit ends up in the branch: refs/remotes/p4/unshelved/12345 If that branch already exists, it is renamed - for example the above branch would be saved as p4/unshelved/12345.1. git-p4 checks that the shelved changelist is based on files which are at the same Perforce revision as the origin branch being used for the unshelve (HEAD by default). If they are not, it will refuse to unshelve. This is to ensure that the unshelved change does not contain other changes mixed-in. The reference branch can be changed manually with the "--origin" option. The change adds a new Unshelve command class. This just runs the existing P4Sync code tweaked to handle a shelved changelist. Signed-off-by: Luke Diamand <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation')
1 files changed, 32 insertions, 0 deletions
diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
index d8c8f11..d3cb249 100644
--- a/Documentation/git-p4.txt
+++ b/Documentation/git-p4.txt
@@ -164,6 +164,31 @@ $ git p4 submit --shelve
$ git p4 submit --update-shelve 1234 --update-shelve 2345
+Unshelving will take a shelved P4 changelist, and produce the equivalent git commit
+in the branch refs/remotes/p4/unshelved/<changelist>.
+The git commit is created relative to the current origin revision (HEAD by default).
+If the shelved changelist's parent revisions differ, git-p4 will refuse to unshelve;
+you need to be unshelving onto an equivalent tree.
+The origin revision can be changed with the "--origin" option.
+If the target branch in refs/remotes/p4/unshelved already exists, the old one will
+be renamed.
+$ git p4 sync
+$ git p4 unshelve 12345
+$ git show refs/remotes/p4/unshelved/12345
+<submit more changes via p4 to the same files>
+$ git p4 unshelve 12345
+<refuses to unshelve until git is in sync with p4 again>
@@ -337,6 +362,13 @@ These options can be used to modify 'git p4 rebase' behavior.
Import p4 labels.
+Unshelve options
+ Sets the git refspec against which the shelved P4 changelist is compared.
+ Defaults to p4/master.
The p4 depot path argument to 'git p4 sync' and 'git p4 clone' can