summaryrefslogtreecommitdiff
path: root/contrib/fast-import/p4-fast-export.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/fast-import/p4-fast-export.py')
-rwxr-xr-xcontrib/fast-import/p4-fast-export.py33
1 files changed, 21 insertions, 12 deletions
diff --git a/contrib/fast-import/p4-fast-export.py b/contrib/fast-import/p4-fast-export.py
index 61b9e67e54..07d6e53852 100755
--- a/contrib/fast-import/p4-fast-export.py
+++ b/contrib/fast-import/p4-fast-export.py
@@ -93,7 +93,20 @@ def p4Cmd(cmd):
result.update(entry)
return result;
-def commit(details):
+def extractFilesFromCommit(commit):
+ files = []
+ fnum = 0
+ while commit.has_key("depotFile%s" % fnum):
+ file = {}
+ file["path"] = commit["depotFile%s" % fnum]
+ file["rev"] = commit["rev%s" % fnum]
+ file["action"] = commit["action%s" % fnum]
+ file["type"] = commit["type%s" % fnum]
+ files.append(file)
+ fnum = fnum + 1
+ return files
+
+def commit(details, files, branch):
global initialParent
global users
global lastChange
@@ -119,24 +132,22 @@ def commit(details):
gitStream.write("from %s\n" % initialParent)
initialParent = ""
- fnum = 0
- while details.has_key("depotFile%s" % fnum):
- path = details["depotFile%s" % fnum]
+ for file in files:
+ path = file["path"]
if not path.startswith(prefix):
print "\nchanged files: ignoring path %s outside of %s in change %s" % (path, prefix, change)
- fnum = fnum + 1
continue
- rev = details["rev%s" % fnum]
+ rev = file["rev"]
depotPath = path + "#" + rev
relPath = path[len(prefix):]
- action = details["action%s" % fnum]
+ action = file["action"]
if action == "delete":
gitStream.write("D %s\n" % relPath)
else:
mode = 644
- if details["type%s" % fnum].startswith("x"):
+ if file["type"].startswith("x"):
mode = 755
data = os.popen("p4 print -q \"%s\"" % depotPath, "rb").read()
@@ -146,8 +157,6 @@ def commit(details):
gitStream.write(data)
gitStream.write("\n")
- fnum = fnum + 1
-
gitStream.write("\n")
lastChange = details["change"]
@@ -215,7 +224,7 @@ if len(revision) > 0:
details["change"] = newestRevision
try:
- commit(details)
+ commit(details, extractFilesFromCommit(details), branch)
except:
print gitError.read()
@@ -242,7 +251,7 @@ else:
cnt = cnt + 1
try:
- commit(description)
+ commit(description, extractFilesFromCommit(description), branch)
except:
print gitError.read()
sys.exit(1)