Added the possibility of skipping patches during git-p4 submit
[gitweb.git] / contrib / fast-import / git-p4
index 2633f299424056308f57fd93505803bb008fe8cd..eba7a67c68542b94447e981381c54b0f58840f31 100755 (executable)
@@ -230,11 +230,13 @@ class P4Submit(Command):
         diff = mypopen("git diff-tree -r --name-status \"%s^\" \"%s\"" % (id, id)).readlines()
         filesToAdd = set()
         filesToDelete = set()
+        editedFiles = set()
         for line in diff:
             modifier = line[0]
             path = line[1:].strip()
             if modifier == "M":
-                system("p4 edit %s" % path)
+                system("p4 edit \"%s\"" % path)
+                editedFiles.add(path)
             elif modifier == "A":
                 filesToAdd.add(path)
                 if path in filesToDelete:
@@ -308,7 +310,7 @@ class P4Submit(Command):
             firstIteration = True
             while response == "e":
                 if not firstIteration:
-                    response = raw_input("Do you want to submit this change? [y]es/[e]dit/[n]o  ")
+                    response = raw_input("Do you want to submit this change? [y]es/[e]dit/[n]o/[s]kip ")
                 firstIteration = False
                 if response == "e":
                     [handle, fileName] = tempfile.mkstemp()
@@ -334,6 +336,15 @@ class P4Submit(Command):
                     pipe = os.popen("p4 submit -i", "wb")
                     pipe.write(submitTemplate)
                     pipe.close()
+            elif response == "s":
+                for f in editedFiles:
+                    system("p4 revert \"%s\"" % f);
+                for f in filesToAdd:
+                    system("p4 revert \"%s\"" % f);
+                    system("rm %s" %f)
+                for f in filesToDelete:
+                    system("p4 delete \"%s\"" % f);
+                return
             else:
                 print "Not submitting!"
                 self.interactive = False
@@ -1185,9 +1196,7 @@ if cmd.needsGit:
     if len(gitdir) == 0:
         gitdir = ".git"
         if not isValidGitDir(gitdir):
-            cdup = mypopen("git rev-parse --show-cdup").read()[:-1]
-            if isValidGitDir(cdup + "/" + gitdir):
-                os.chdir(cdup)
+            gitdir = mypopen("git rev-parse --git-dir").read()[:-1]
 
     if not isValidGitDir(gitdir):
         if isValidGitDir(gitdir + "/.git"):