summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 062410b)
raw | patch | inline | side by side (parent: 062410b)
author | Simon Hausmann <simon@lst.de> | |
Wed, 18 Jul 2007 10:40:12 +0000 (12:40 +0200) | ||
committer | Simon Hausmann <simon@lst.de> | |
Wed, 18 Jul 2007 15:29:31 +0000 (17:29 +0200) |
Don't use git name-rev to locate the upstream git-p4 branch for rebase and submit but instead locate the branch by comparing the depot paths.
name-rev may produce results like wrongbranch~12 as it uses the first match.
Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
name-rev may produce results like wrongbranch~12 as it uses the first match.
Signed-off-by: Simon Hausmann <simon@lst.de>
Signed-off-by: Marius Storm-Olsen <marius@trolltech.com>
contrib/fast-import/git-p4 | patch | blob | history |
index d4a2f14311c83898dffac29f541a2be093085fd3..a65f53a47b92da7c3cdd5c477c3e2ce252e6f4ca 100755 (executable)
return branches
def findUpstreamBranchPoint(head = "HEAD"):
+ branches = p4BranchesInGit()
+ # map from depot-path to branch name
+ branchByDepotPath = {}
+ for branch in branches.keys():
+ tip = branches[branch]
+ log = extractLogMessageFromGitCommit(tip)
+ settings = extractSettingsGitLog(log)
+ if settings.has_key("depot-paths"):
+ paths = ",".join(settings["depot-paths"])
+ branchByDepotPath[paths] = "remotes/p4/" + branch
+
settings = None
- branchPoint = ""
parent = 0
while parent < 65535:
commit = head + "~%s" % parent
log = extractLogMessageFromGitCommit(commit)
settings = extractSettingsGitLog(log)
- if not settings.has_key("depot-paths"):
- parent = parent + 1
- continue
-
- names = read_pipe_lines("git name-rev \"--refs=refs/remotes/p4/*\" \"%s\"" % commit)
- if len(names) <= 0:
- continue
+ if settings.has_key("depot-paths"):
+ paths = ",".join(settings["depot-paths"])
+ if branchByDepotPath.has_key(paths):
+ return [branchByDepotPath[paths], settings]
- # strip away the beginning of 'HEAD~42 refs/remotes/p4/foo'
- branchPoint = names[0].strip()[len(commit) + 1:]
- break
+ parent = parent + 1
- return [branchPoint, settings]
+ return ["", settings]
class Command:
def __init__(self):