Write out the options tag in the log message of imports only if we actually have
[gitweb.git] / contrib / fast-import / git-p4
index 28e37fa6ab489fec66006716ab7b9249a64789cd..e380c149b48bb72ccbc28da9f97be7127e29874a 100755 (executable)
@@ -765,12 +765,11 @@ class P4Sync(Command):
 
         self.gitStream.write("data <<EOT\n")
         self.gitStream.write(details["desc"])
-        self.gitStream.write("\n[git-p4: depot-paths = \"%s\": change = %s: "
-                             "options = %s]\n"
-                             % (','.join (branchPrefixes), details["change"],
-                                details['options']
-                                ))
-        self.gitStream.write("EOT\n\n")
+        self.gitStream.write("\n[git-p4: depot-paths = \"%s\": change = %s"
+                             % (','.join (branchPrefixes), details["change"]))
+        if len(details['options']) > 0:
+            self.gitStream.write(": options = %s" % details['options'])
+        self.gitStream.write("]\nEOT\n\n")
 
         if len(parent) > 0:
             if self.verbose:
@@ -909,7 +908,12 @@ class P4Sync(Command):
 
     def guessProjectName(self):
         for p in self.depotPaths:
-            return p [p.strip().rfind("/") + 1:]
+            if p.endswith("/"):
+                p = p[:-1]
+            p = p[p.strip().rfind("/") + 1:]
+            if not p.endswith("/"):
+               p += "/"
+            return p
 
     def getBranchMapping(self):
         for info in p4CmdList("branches"):
@@ -948,9 +952,9 @@ class P4Sync(Command):
             if not line.startswith('p4/') or line == "p4/HEAD":
                 continue
             branch = line
-            if self.importIntoRemotes:
-                # strip off p4
-                branch = re.sub ("^p4/", "", line)
+
+            # strip off p4
+            branch = re.sub ("^p4/", "", line)
 
             self.p4BranchesInGit.append(branch)
             self.initialParents[self.refPrefix + branch] = parseRevision(line)
@@ -960,14 +964,16 @@ class P4Sync(Command):
             print ("Creating/updating branch(es) in %s based on origin branch(es)"
                    % self.refPrefix)
 
+        originPrefix = "origin/p4/"
+
         for line in read_pipe_lines("git rev-parse --symbolic --remotes"):
             line = line.strip()
-            if (not line.startswith("origin/")) or line.endswith("HEAD\n"):
+            if (not line.startswith(originPrefix)) or line.endswith("HEAD"):
                 continue
 
-            headName = line[len("origin/"):]
+            headName = line[len(originPrefix):]
             remoteHead = self.refPrefix + headName
-            originHead = "origin/" + headName
+            originHead = line
 
             original = extractSettingsGitLog(extractLogMessageFromGitCommit(originHead))
             if (not original.has_key('depot-paths')
@@ -1020,7 +1026,9 @@ class P4Sync(Command):
         # map from branch depot path to parent branch
         self.knownBranches = {}
         self.initialParents = {}
-        self.hasOrigin = gitBranchExists("origin")
+        self.hasOrigin = gitBranchExists("origin") or gitBranchExists("origin/p4") or gitBranchExists("origin/p4/master")
+        if not self.syncWithOrigin:
+            self.hasOrigin = False
 
         if self.importIntoRemotes:
             self.refPrefix = "refs/remotes/p4/"
@@ -1305,7 +1313,7 @@ class P4Sync(Command):
                                 parent = self.initialParents[branch]
                                 del self.initialParents[branch]
 
-                            self.commit(description, filesForCommit, branch, branchPrefix, parent)
+                            self.commit(description, filesForCommit, branch, [branchPrefix], parent)
                     else:
                         files = self.extractFilesFromCommit(description)
                         self.commit(description, files, self.branch, self.depotPaths,