On 6 December 2016 at 02:02, Nuno Subtil <subtil@xxxxxxxxx> wrote: > Extends the submit command to support shelving a commit instead of > submitting it to p4 (similar to --prepare-p4-only). Is this just the same as these two changes? http://www.spinics.net/lists/git/msg290755.html http://www.spinics.net/lists/git/msg291103.html Thanks, Luke > > Signed-off-by: Nuno Subtil <subtil@xxxxxxxxx> > --- > git-p4.py | 36 ++++++++++++++++++++++++++++++------ > 1 file changed, 30 insertions(+), 6 deletions(-) > > diff --git a/git-p4.py b/git-p4.py > index fd5ca52..3c4be22 100755 > --- a/git-p4.py > +++ b/git-p4.py > @@ -1286,6 +1286,8 @@ def __init__(self): > optparse.make_option("--export-labels", dest="exportLabels", action="store_true"), > optparse.make_option("--dry-run", "-n", dest="dry_run", action="store_true"), > optparse.make_option("--prepare-p4-only", dest="prepare_p4_only", action="store_true"), > + optparse.make_option("--shelve-only", dest="shelve_only", action="store_true", help="Create P4 shelf for first change that would be submitted (using a new CL)"), > + optparse.make_option("--shelve-cl", dest="shelve_cl", help="Replace shelf under existing CL number (previously shelved files will be deleted)"), > optparse.make_option("--conflict", dest="conflict_behavior", > choices=self.conflict_behavior_choices), > optparse.make_option("--branch", dest="branch"), > @@ -1297,6 +1299,8 @@ def __init__(self): > self.preserveUser = gitConfigBool("git-p4.preserveUser") > self.dry_run = False > self.prepare_p4_only = False > + self.shelve_only = False > + self.shelve_cl = None > self.conflict_behavior = None > self.isWindows = (platform.system() == "Windows") > self.exportLabels = False > @@ -1496,6 +1500,12 @@ def prepareSubmitTemplate(self): > else: > inFilesSection = False > else: > + if self.shelve_only and self.shelve_cl: > + if line.startswith("Change:"): > + line = "Change: %s\n" % self.shelve_cl > + if line.startswith("Status:"): > + line = "Status: pending\n" > + > if line.startswith("Files:"): > inFilesSection = True > > @@ -1785,7 +1795,11 @@ def applyCommit(self, id): > if self.isWindows: > message = message.replace("\r\n", "\n") > submitTemplate = message[:message.index(separatorLine)] > - p4_write_pipe(['submit', '-i'], submitTemplate) > + > + if self.shelve_only: > + p4_write_pipe(['shelve', '-i', '-r'], submitTemplate) > + else: > + p4_write_pipe(['submit', '-i'], submitTemplate) > > if self.preserveUser: > if p4User: > @@ -1799,12 +1813,17 @@ def applyCommit(self, id): > # new file. This leaves it writable, which confuses p4. > for f in pureRenameCopy: > p4_sync(f, "-f") > - submitted = True > + > + if not self.shelve_only: > + submitted = True > > finally: > # skip this patch > if not submitted: > - print "Submission cancelled, undoing p4 changes." > + if not self.shelve_only: > + print "Submission cancelled, undoing p4 changes." > + else: > + print "Change shelved, undoing p4 changes." > for f in editedFiles: > p4_revert(f) > for f in filesToAdd: > @@ -2034,9 +2053,13 @@ def run(self, args): > if ok: > applied.append(commit) > else: > - if self.prepare_p4_only and i < last: > - print "Processing only the first commit due to option" \ > - " --prepare-p4-only" > + if (self.prepare_p4_only or self.shelve_only) and i < last: > + if self.prepare_p4_only: > + print "Processing only the first commit due to option" \ > + " --prepare-p4-only" > + else: > + print "Processing only the first commit due to option" \ > + " --shelve-only" > break > if i < last: > quit = False > @@ -3638,6 +3661,7 @@ def printUsage(commands): > "debug" : P4Debug, > "submit" : P4Submit, > "commit" : P4Submit, > + "shelve" : P4Submit, > "sync" : P4Sync, > "rebase" : P4Rebase, > "clone" : P4Clone, > > -- > https://github.com/git/git/pull/309