зеркало из https://github.com/microsoft/git.git
Cache the output of "p4 users" for faster syncs on high latency links.
Signed-off-by: Simon Hausmann <simon@lst.de>
This commit is contained in:
Родитель
9bda3a8556
Коммит
b607e71efd
|
@ -501,6 +501,8 @@ class P4Sync(Command):
|
||||||
# gitStream.write("mark :%s\n" % details["change"])
|
# gitStream.write("mark :%s\n" % details["change"])
|
||||||
self.committedChanges.add(int(details["change"]))
|
self.committedChanges.add(int(details["change"]))
|
||||||
committer = ""
|
committer = ""
|
||||||
|
if author not in self.users:
|
||||||
|
self.getUserMapFromPerforceServer()
|
||||||
if author in self.users:
|
if author in self.users:
|
||||||
committer = "%s %s %s" % (self.users[author], epoch, self.tz)
|
committer = "%s %s %s" % (self.users[author], epoch, self.tz)
|
||||||
else:
|
else:
|
||||||
|
@ -591,7 +593,7 @@ class P4Sync(Command):
|
||||||
if not self.silent:
|
if not self.silent:
|
||||||
print "Tag %s does not match with change %s: file count is different." % (labelDetails["label"], change)
|
print "Tag %s does not match with change %s: file count is different." % (labelDetails["label"], change)
|
||||||
|
|
||||||
def getUserMap(self):
|
def getUserMapFromPerforceServer(self):
|
||||||
self.users = {}
|
self.users = {}
|
||||||
|
|
||||||
for output in p4CmdList("users"):
|
for output in p4CmdList("users"):
|
||||||
|
@ -599,6 +601,23 @@ class P4Sync(Command):
|
||||||
continue
|
continue
|
||||||
self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">"
|
self.users[output["User"]] = output["FullName"] + " <" + output["Email"] + ">"
|
||||||
|
|
||||||
|
cache = open(gitdir + "/p4-usercache.txt", "wb")
|
||||||
|
for user in self.users.keys():
|
||||||
|
cache.write("%s\t%s\n" % (user, self.users[user]))
|
||||||
|
cache.close();
|
||||||
|
|
||||||
|
def loadUserMapFromCache(self):
|
||||||
|
self.users = {}
|
||||||
|
try:
|
||||||
|
cache = open(gitdir + "/p4-usercache.txt", "rb")
|
||||||
|
lines = cache.readlines()
|
||||||
|
cache.close()
|
||||||
|
for line in lines:
|
||||||
|
entry = line[:-1].split("\t")
|
||||||
|
self.users[entry[0]] = entry[1]
|
||||||
|
except IOError:
|
||||||
|
self.getUserMapFromPerforceServer()
|
||||||
|
|
||||||
def getLabels(self):
|
def getLabels(self):
|
||||||
self.labels = {}
|
self.labels = {}
|
||||||
|
|
||||||
|
@ -772,7 +791,7 @@ class P4Sync(Command):
|
||||||
if not self.depotPath.endswith("/"):
|
if not self.depotPath.endswith("/"):
|
||||||
self.depotPath += "/"
|
self.depotPath += "/"
|
||||||
|
|
||||||
self.getUserMap()
|
self.loadUserMapFromCache()
|
||||||
self.labels = {}
|
self.labels = {}
|
||||||
if self.detectLabels:
|
if self.detectLabels:
|
||||||
self.getLabels();
|
self.getLabels();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче