summaryrefslogtreecommitdiff
path: root/contrib/fast-import/git-p4
diff options
context:
space:
mode:
authorLibravatar Simon Hausmann <simon@lst.de>2007-03-22 22:17:42 +0100
committerLibravatar Simon Hausmann <simon@lst.de>2007-03-22 22:17:42 +0100
commit179caebff4a917dc35c8166ec183bc5c76df53e1 (patch)
tree602db30f5c5f92e91a070334299a7d1b94d6977b /contrib/fast-import/git-p4
parentSet the default branch in run, not in the constructor (diff)
downloadtgif-179caebff4a917dc35c8166ec183bc5c76df53e1.tar.xz
Brand new smart incremental import that doesn't need tags or git repo-config :)
Signed-off-by: Simon Hausmann <simon@lst.de>
Diffstat (limited to 'contrib/fast-import/git-p4')
-rwxr-xr-xcontrib/fast-import/git-p438
1 files changed, 31 insertions, 7 deletions
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index e6a34f4f47..8684e4b20f 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -84,7 +84,9 @@ def extractDepotPathAndChangeFromGitLog(log):
return values.get("depot-path"), values.get("change")
def gitBranchExists(branch):
- return os.system("git-rev-parse %s 2>/dev/null >/dev/null") == 0
+ if os.system("git-rev-parse %s 2>/dev/null >/dev/null" % branch) == 0:
+ return True
+ return False
class Command:
def __init__(self):
@@ -706,17 +708,40 @@ class GitSync(Command):
self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">"
def run(self, args):
+ self.globalPrefix = ""
+ self.changeRange = ""
+ self.initialParent = ""
+ self.tagLastChange = True
+
if len(self.branch) == 0:
self.branch = "p4"
+ if len(args) == 0:
+ if not gitBranchExists(self.branch) and gitBranchExists("origin"):
+ if not self.silent:
+ print "Creating %s branch in git repository based on origin" % self.branch
+ system("git branch %s origin" % self.branch)
+
+ [self.previousDepotPath, p4Change] = extractDepotPathAndChangeFromGitLog(extractLogMessageFromGitCommit(self.branch))
+ if len(self.previousDepotPath) > 0 and len(p4Change) > 0:
+ p4Change = int(p4Change) + 1
+ self.globalPrefix = self.previousDepotPath
+ self.changeRange = "@%s,#head" % p4Change
+ self.initialParent = self.branch
+ self.tagLastChange = False
+ if not self.silent:
+ print "Performing incremental import into %s git branch" % self.branch
self.branch = "refs/heads/" + self.branch
- self.globalPrefix = self.previousDepotPath = os.popen("git-repo-config --get p4.depotpath").read()
+
+ if len(self.globalPrefix) == 0:
+ self.globalPrefix = self.previousDepotPath = os.popen("git-repo-config --get p4.depotpath").read()
+
if len(self.globalPrefix) != 0:
self.globalPrefix = self.globalPrefix[:-1]
if len(args) == 0 and len(self.globalPrefix) != 0:
if not self.silent:
- print "[using previously specified depot path %s]" % self.globalPrefix
+ print "Depot path: %s" % self.globalPrefix
elif len(args) != 1:
return False
else:
@@ -725,10 +750,8 @@ class GitSync(Command):
sys.exit(1)
self.globalPrefix = args[0]
- self.changeRange = ""
self.revision = ""
self.users = {}
- self.initialParent = ""
self.lastChange = 0
self.initialTag = ""
@@ -890,8 +913,9 @@ class GitSync(Command):
if not self.silent:
print ""
- self.gitStream.write("reset refs/tags/p4/%s\n" % self.lastChange)
- self.gitStream.write("from %s\n\n" % self.branch);
+ if self.tagLastChange:
+ self.gitStream.write("reset refs/tags/p4/%s\n" % self.lastChange)
+ self.gitStream.write("from %s\n\n" % self.branch);
self.gitStream.close()