Fix the branch mapping detection to be independent from the order of the "p4 branches...
authorSimon Hausmann <shausman@trolltech.com>
Sun, 17 Jun 2007 09:25:34 +0000 (11:25 +0200)
committerSimon Hausmann <shausman@trolltech.com>
Sun, 17 Jun 2007 09:25:59 +0000 (11:25 +0200)
Collect "unknown" source branches separately and register them at the end.

Also added a minor speed up to splitFilesIntoBranches by breaking out of the loop through all branches when it's safe.

Signed-off-by: Simon Hausmann <simon@lst.de>
contrib/fast-import/git-p4

index d1f8d3b78d12c95e580750c3c0b02d54865f5da5..3b6d8a09d1fabcf877b5f9967eaadf50c0b8df2e 100755 (executable)
@@ -700,6 +700,7 @@ class P4Sync(Command):
                     if branch not in branches:
                         branches[branch] = []
                     branches[branch].append(file)
+                    break
 
         return branches
 
@@ -938,6 +939,8 @@ class P4Sync(Command):
             return p
 
     def getBranchMapping(self):
+        lostAndFoundBranches = set()
+
         for info in p4CmdList("branches"):
             details = p4Cmd("branch -o %s" % info["branch"])
             viewIdx = 0
@@ -953,10 +956,17 @@ class P4Sync(Command):
                 if source.startswith(self.depotPaths[0]) and destination.startswith(self.depotPaths[0]):
                     source = source[len(self.depotPaths[0]):-4]
                     destination = destination[len(self.depotPaths[0]):-4]
-                    if destination not in self.knownBranches:
-                        self.knownBranches[destination] = source
+
+                    self.knownBranches[destination] = source
+
+                    lostAndFoundBranches.discard(destination)
+
                     if source not in self.knownBranches:
-                        self.knownBranches[source] = source
+                        lostAndFoundBranches.add(source)
+
+
+        for branch in lostAndFoundBranches:
+            self.knownBranches[branch] = branch
 
     def listExistingP4GitBranches(self):
         self.p4BranchesInGit = []