Make git-p4 submit detect the correct reference (origin) branch when

working with multi-branch imports.

Signed-off-by: Simon Hausmann <simon@lst.de>
This commit is contained in:
Simon Hausmann 2007-06-07 22:54:32 +02:00
Родитель 5e100b5cd7
Коммит a3fdd57901
1 изменённых файлов: 24 добавлений и 14 удалений

Просмотреть файл

@ -156,7 +156,8 @@ def extractSettingsGitLog(log):
paths = values.get("depot-paths")
if not paths:
paths = values.get("depot-path")
values['depot-paths'] = paths.split(',')
if paths:
values['depot-paths'] = paths.split(',')
return values
def gitBranchExists(branch):
@ -494,12 +495,27 @@ class P4Submit(Command):
return False
depotPath = ""
settings = None
if gitBranchExists("p4"):
settings = extractSettingsGitLog(extractLogMessageFromGitCommit("p4"))
if len(depotPath) == 0 and gitBranchExists("origin"):
settings = extractSettingsGitLog(extractLogMessageFromGitCommit("origin"))
depotPath = settings['depot-paths'][0]
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
depotPath = settings['depot-paths'][0]
if len(self.origin) == 0:
names = read_pipe_lines("git name-rev '--refs=refs/remotes/p4/*' '%s'" % commit)
if len(names) > 0:
# strip away the beginning of 'HEAD~42 refs/remotes/p4/foo'
self.origin = names[0].strip()[len(commit) + 1:]
break
if self.verbose:
print "Origin branch is " + self.origin
if len(depotPath) == 0:
print "Internal error: cannot locate perforce depot path from existing branches"
@ -530,12 +546,6 @@ class P4Submit(Command):
if response == "y" or response == "yes":
system("p4 sync ...")
if len(self.origin) == 0:
if gitBranchExists("p4"):
self.origin = "p4"
else:
self.origin = "origin"
if self.reset:
self.firstTime = True
@ -969,7 +979,7 @@ class P4Sync(Command):
print "creating %s" % remoteHead
update = True
else:
settings = extractSettingsGitLog(extractLogMessageFromGitCommit(remoteHead))
settings = extractSettingsGitLog(extractLogMessageFromGitCommit(remoteHead))
if settings.has_key('change') > 0:
if settings['depot-paths'] == original['depot-paths']:
originP4Change = int(original['change'])