summaryrefslogtreecommitdiff
path: root/contrib/fast-import
diff options
context:
space:
mode:
authorSimon Hausmann <simon@lst.de>2007-06-07 20:54:32 (GMT)
committerSimon Hausmann <simon@lst.de>2007-06-07 20:54:32 (GMT)
commita3fdd57901bfe1014c4a48e13815d80f1f0e8577 (patch)
tree703a383b1bfaed7fccdd10698ca37662698fbc5b /contrib/fast-import
parent5e100b5cd7210f8054fd3464872c0366abc3c1dc (diff)
downloadgit-a3fdd57901bfe1014c4a48e13815d80f1f0e8577.zip
git-a3fdd57901bfe1014c4a48e13815d80f1f0e8577.tar.gz
git-a3fdd57901bfe1014c4a48e13815d80f1f0e8577.tar.bz2
Make git-p4 submit detect the correct reference (origin) branch when
working with multi-branch imports. Signed-off-by: Simon Hausmann <simon@lst.de>
Diffstat (limited to 'contrib/fast-import')
-rwxr-xr-xcontrib/fast-import/git-p438
1 files changed, 24 insertions, 14 deletions
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 3fe7ae7..efec0be 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -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'])