git-p4: Clean up git-p4 submit's log message handling.
[gitweb.git] / contrib / fast-import / git-p4
index e4238538a1cc0763f860407d8bdf785bea50ccd4..e55a41b10ed3fd7f93a9c5b60870dc5dc837177c 100755 (executable)
@@ -468,7 +468,6 @@ class P4Submit(Command):
                 optparse.make_option("--verbose", dest="verbose", action="store_true"),
                 optparse.make_option("--origin", dest="origin"),
                 optparse.make_option("--reset", action="store_true", dest="reset"),
-                optparse.make_option("--log-substitutions", dest="substFile"),
                 optparse.make_option("--direct", dest="directSubmit", action="store_true"),
                 optparse.make_option("-M", dest="detectRename", action="store_true"),
         ]
@@ -477,7 +476,6 @@ class P4Submit(Command):
         self.firstTime = True
         self.reset = False
         self.interactive = True
-        self.substFile = ""
         self.firstTime = True
         self.origin = ""
         self.directSubmit = False
@@ -485,10 +483,6 @@ class P4Submit(Command):
         self.verbose = False
         self.isWindows = (platform.system() == "Windows")
 
-        self.logSubstitutions = {}
-        self.logSubstitutions["<enter description here>"] = "%log%"
-        self.logSubstitutions["\tDetails:"] = "\tDetails:  %log%"
-
     def check(self):
         if len(p4CmdList("opened ...")) > 0:
             die("You have files opened with perforce! Close them before starting the sync.")
@@ -509,26 +503,31 @@ class P4Submit(Command):
 
         self.config["commits"] = commits
 
+    # replaces everything between 'Description:' and the next P4 submit template field with the
+    # commit message
     def prepareLogMessage(self, template, message):
         result = ""
 
+        inDescriptionSection = False
+
         for line in template.split("\n"):
             if line.startswith("#"):
                 result += line + "\n"
                 continue
 
-            substituted = False
-            for key in self.logSubstitutions.keys():
-                if line.find(key) != -1:
-                    value = self.logSubstitutions[key]
-                    value = value.replace("%log%", message)
-                    if value != "@remove@":
-                        result += line.replace(key, value) + "\n"
-                    substituted = True
-                    break
+            if inDescriptionSection:
+                if line.startswith("Files:"):
+                    inDescriptionSection = False
+                else:
+                    continue
+            else:
+                if line.startswith("Description:"):
+                    inDescriptionSection = True
+                    line += "\n"
+                    for messageLine in message.split("\n"):
+                        line += "\t" + messageLine + "\n"
 
-            if not substituted:
-                result += line + "\n"
+            result += line + "\n"
 
         return result
 
@@ -652,7 +651,6 @@ class P4Submit(Command):
         logMessage = ""
         if not self.directSubmit:
             logMessage = extractLogMessageFromGitCommit(id)
-            logMessage = logMessage.replace("\n", "\n\t")
             if self.isWindows:
                 logMessage = logMessage.replace("\n", "\r\n")
             logMessage = logMessage.strip()
@@ -759,11 +757,6 @@ class P4Submit(Command):
         if self.reset:
             self.firstTime = True
 
-        if len(self.substFile) > 0:
-            for line in open(self.substFile, "r").readlines():
-                tokens = line.strip().split("=")
-                self.logSubstitutions[tokens[0]] = tokens[1]
-
         self.check()
         self.configFile = self.gitdir + "/p4-git-sync.cfg"
         self.config = shelve.open(self.configFile, writeback=True)