diff options
| author | Jeff King <peff@peff.net> | 2015-12-01 17:24:20 -0500 | 
|---|---|---|
| committer | Jeff King <peff@peff.net> | 2015-12-01 17:24:21 -0500 | 
| commit | 908a6e4156dff47d4877478383fd4b79592010e2 (patch) | |
| tree | 45acf663340425d6a54935a03af868152e1b9a34 /git-p4.py | |
| parent | 35f263545ce853cd3e250a67cdb3c77534343239 (diff) | |
| parent | b7638fed427f4aab36ad8ff36fe06f0e4b5c98e4 (diff) | |
| download | git-908a6e4156dff47d4877478383fd4b79592010e2.tar.gz | |
Merge branch 'eg/p4-submit-catch-failure' into maint
Just like the working tree is cleaned up when the user cancelled
submission in P4Submit.applyCommit(), clean up the mess if "p4
submit" fails.
* eg/p4-submit-catch-failure:
  git-p4: clean up after p4 submit failure
Diffstat (limited to 'git-p4.py')
| -rwxr-xr-x | git-p4.py | 71 | 
1 files changed, 37 insertions, 34 deletions
@@ -1543,44 +1543,47 @@ class P4Submit(Command, P4UserMap):          #          # Let the user edit the change description, then submit it.          # -        if self.edit_template(fileName): -            # read the edited message and submit -            ret = True -            tmpFile = open(fileName, "rb") -            message = tmpFile.read() -            tmpFile.close() -            if self.isWindows: -                message = message.replace("\r\n", "\n") -            submitTemplate = message[:message.index(separatorLine)] -            p4_write_pipe(['submit', '-i'], submitTemplate) - -            if self.preserveUser: -                if p4User: -                    # Get last changelist number. Cannot easily get it from -                    # the submit command output as the output is -                    # unmarshalled. -                    changelist = self.lastP4Changelist() -                    self.modifyChangelistUser(changelist, p4User) - -            # The rename/copy happened by applying a patch that created a -            # new file.  This leaves it writable, which confuses p4. -            for f in pureRenameCopy: -                p4_sync(f, "-f") +        submitted = False -        else: +        try: +            if self.edit_template(fileName): +                # read the edited message and submit +                tmpFile = open(fileName, "rb") +                message = tmpFile.read() +                tmpFile.close() +                if self.isWindows: +                    message = message.replace("\r\n", "\n") +                submitTemplate = message[:message.index(separatorLine)] +                p4_write_pipe(['submit', '-i'], submitTemplate) + +                if self.preserveUser: +                    if p4User: +                        # Get last changelist number. Cannot easily get it from +                        # the submit command output as the output is +                        # unmarshalled. +                        changelist = self.lastP4Changelist() +                        self.modifyChangelistUser(changelist, p4User) + +                # The rename/copy happened by applying a patch that created a +                # new file.  This leaves it writable, which confuses p4. +                for f in pureRenameCopy: +                    p4_sync(f, "-f") +                submitted = True + +        finally:              # skip this patch -            ret = False -            print "Submission cancelled, undoing p4 changes." -            for f in editedFiles: -                p4_revert(f) -            for f in filesToAdd: -                p4_revert(f) -                os.remove(f) -            for f in filesToDelete: -                p4_revert(f) +            if not submitted: +                print "Submission cancelled, undoing p4 changes." +                for f in editedFiles: +                    p4_revert(f) +                for f in filesToAdd: +                    p4_revert(f) +                    os.remove(f) +                for f in filesToDelete: +                    p4_revert(f)          os.remove(fileName) -        return ret +        return submitted      # Export git tags as p4 labels. Create a p4 label and then tag      # with that.  | 
