зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
0dd0b9d011
Коммит
2385536282
|
@ -57,9 +57,6 @@ def p4Cmd(cmd):
|
||||||
result.update(entry)
|
result.update(entry)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
def p4FileSize(path):
|
|
||||||
return int(p4Cmd("fstat -Ol \"%s\"" % path)["fileSize"])
|
|
||||||
|
|
||||||
def getUserMap():
|
def getUserMap():
|
||||||
users = {}
|
users = {}
|
||||||
|
|
||||||
|
@ -121,14 +118,15 @@ for change in changes:
|
||||||
if action == "delete":
|
if action == "delete":
|
||||||
gitStream.write("D %s\n" % relPath)
|
gitStream.write("D %s\n" % relPath)
|
||||||
else:
|
else:
|
||||||
fileSize = p4FileSize(depotPath)
|
|
||||||
mode = 644
|
mode = 644
|
||||||
if description["type%s" % fnum].startswith("x"):
|
if description["type%s" % fnum].startswith("x"):
|
||||||
mode = 755
|
mode = 755
|
||||||
|
|
||||||
|
data = os.popen("p4 print -q \"%s\"" % depotPath, "rb").read()
|
||||||
|
|
||||||
gitStream.write("M %s inline %s\n" % (mode, relPath))
|
gitStream.write("M %s inline %s\n" % (mode, relPath))
|
||||||
gitStream.write("data %s\n" % fileSize)
|
gitStream.write("data %s\n" % len(data))
|
||||||
gitStream.write(os.popen("p4 print -q \"%s\"" % depotPath).read())
|
gitStream.write(data)
|
||||||
gitStream.write("\n")
|
gitStream.write("\n")
|
||||||
|
|
||||||
fnum = fnum + 1
|
fnum = fnum + 1
|
||||||
|
|
Загрузка…
Ссылка в новой задаче