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:
Simon Hausmann 2007-05-20 10:55:54 +02:00
Родитель 9bda3a8556
Коммит b607e71efd
1 изменённых файлов: 21 добавлений и 2 удалений

Просмотреть файл

@ -501,6 +501,8 @@ class P4Sync(Command):
# gitStream.write("mark :%s\n" % details["change"])
self.committedChanges.add(int(details["change"]))
committer = ""
if author not in self.users:
self.getUserMapFromPerforceServer()
if author in self.users:
committer = "%s %s %s" % (self.users[author], epoch, self.tz)
else:
@ -591,7 +593,7 @@ class P4Sync(Command):
if not self.silent:
print "Tag %s does not match with change %s: file count is different." % (labelDetails["label"], change)
def getUserMap(self):
def getUserMapFromPerforceServer(self):
self.users = {}
for output in p4CmdList("users"):
@ -599,6 +601,23 @@ class P4Sync(Command):
continue
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):
self.labels = {}
@ -772,7 +791,7 @@ class P4Sync(Command):
if not self.depotPath.endswith("/"):
self.depotPath += "/"
self.getUserMap()
self.loadUserMapFromCache()
self.labels = {}
if self.detectLabels:
self.getLabels();