Avoid calling fstat for every imported file (slow!) and instead read the file data first into the python process and use the length of the bytes read for the size field of git fast-import.

Signed-off-by: Simon Hausmann <hausmann@kde.org>
maint
Simon Hausmann 2007-01-31 22:38:07 +01:00
parent 0dd0b9d011
commit 2385536282
1 changed files with 4 additions and 6 deletions

View File

@ -57,9 +57,6 @@ def p4Cmd(cmd):
result.update(entry)
return result;

def p4FileSize(path):
return int(p4Cmd("fstat -Ol \"%s\"" % path)["fileSize"])

def getUserMap():
users = {}

@ -121,14 +118,15 @@ for change in changes:
if action == "delete":
gitStream.write("D %s\n" % relPath)
else:
fileSize = p4FileSize(depotPath)
mode = 644
if description["type%s" % fnum].startswith("x"):
mode = 755

data = os.popen("p4 print -q \"%s\"" % depotPath, "rb").read()

gitStream.write("M %s inline %s\n" % (mode, relPath))
gitStream.write("data %s\n" % fileSize)
gitStream.write(os.popen("p4 print -q \"%s\"" % depotPath).read())
gitStream.write("data %s\n" % len(data))
gitStream.write(data)
gitStream.write("\n")

fnum = fnum + 1