Added some helper function(s) to parse the depot path and change number from the log message
[gitweb.git] / contrib / fast-import / git-p4
index a5b6d94d1a162f8cbf4e0c1d9efa69e731cfb060..6ead1c41732743cabdd3741bf5da66c1a44b134e 100755 (executable)
@@ -52,12 +52,44 @@ def system(cmd):
     if os.system(cmd) != 0:
         die("command failed: %s" % cmd)
 
+def extractLogMessageFromGitCommit(commit):
+    logMessage = ""
+    foundTitle = False
+    for log in os.popen("git-cat-file commit %s" % commit).readlines():
+       if not foundTitle:
+           if len(log) == 1:
+               foundTitle = 1
+           continue
+
+       logMessage += log
+    return logMessage
+
+def extractDepotPathAndChangeFromGitLog(log):
+    values = {}
+    for line in log.split("\n"):
+        line = line.strip()
+        if line.startswith("[git-p4:") and line.endswith("]"):
+            line = line[8:-1].strip()
+            for assignment in line.split(":"):
+                variable = assignment.strip()
+                value = ""
+                equalPos = assignment.find("=")
+                if equalPos != -1:
+                    variable = assignment[:equalPos].strip()
+                    value = assignment[equalPos + 1:].strip()
+                    if value.startswith("\"") and value.endswith("\""):
+                        value = value[1:-1]
+                values[variable] = value
+
+    return values.get("depot-path"), values.get("change")
+
 class Command:
     def __init__(self):
         self.usage = "usage: %prog [options]"
 
 class P4Debug(Command):
     def __init__(self):
+        Command.__init__(self)
         self.options = [
         ]
         self.description = "A tool to debug the output of p4 -G."
@@ -208,17 +240,9 @@ class P4Sync(Command):
             system("p4 revert %s" % f)
             system("p4 delete %s" % f)
 
-        logMessage = ""
-        foundTitle = False
-        for log in os.popen("git-cat-file commit %s" % id).readlines():
-            if not foundTitle:
-                if len(log) == 1:
-                    foundTitle = 1
-                continue
-
-            if len(logMessage) > 0:
-                logMessage += "\t"
-            logMessage += log
+        logMessage = extractLogMessageFromGitCommit(id)
+        logMessage = logMessage.replace("\n", "\n\t")
+        logMessage = logMessage[:-1]
 
         template = os.popen("p4 change -o").read()
 
@@ -352,7 +376,7 @@ class GitSync(Command):
         self.knownBranches = Set()
         self.createdBranches = Set()
         self.committedChanges = Set()
-        self.branch = "master"
+        self.branch = "p4"
         self.detectBranches = False
         self.changesFile = ""
 
@@ -506,7 +530,7 @@ class GitSync(Command):
 
         self.gitStream.write("data <<EOT\n")
         self.gitStream.write(details["desc"])
-        self.gitStream.write("\n[git-p4: depot-path: \"%s\"; change: %s]\n" % (branchPrefix, details["change"]))
+        self.gitStream.write("\n[git-p4: depot-path = \"%s\": change = %s]\n" % (branchPrefix, details["change"]))
         self.gitStream.write("EOT\n\n")
 
         if len(parent) > 0: