MCPcopy Index your code
hub / github.com/git/git / getUserMapFromPerforceServer

Method getUserMapFromPerforceServer

git-p4.py:1707–1742  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1705 return home + "/.gitp4-usercache.txt"
1706
1707 def getUserMapFromPerforceServer(self):
1708 if self.userMapFromPerforceServer:
1709 return
1710 self.users = {}
1711 self.emails = {}
1712
1713 for output in p4CmdList(["users"]):
1714 if "User" not in output:
1715 continue
1716 # "FullName" is bytes. "Email" on the other hand might be bytes
1717 # or unicode string depending on whether we are running under
1718 # python2 or python3. To support
1719 # git-p4.metadataDecodingStrategy=fallback, self.users dict values
1720 # are always bytes, ready to be written to git.
1721 emailbytes = metadata_stream_to_writable_bytes(output["Email"])
1722 self.users[output["User"]] = output["FullName"] + b" <" + emailbytes + b">"
1723 self.emails[output["Email"]] = output["User"]
1724
1725 mapUserConfigRegex = re.compile(r"^\s*(\S+)\s*=\s*(.+)\s*<(\S+)>\s*$", re.VERBOSE)
1726 for mapUserConfig in gitConfigList("git-p4.mapUser"):
1727 mapUser = mapUserConfigRegex.findall(mapUserConfig)
1728 if mapUser and len(mapUser[0]) == 3:
1729 user = mapUser[0][0]
1730 fullname = mapUser[0][1]
1731 email = mapUser[0][2]
1732 fulluser = fullname + " <" + email + ">"
1733 self.users[user] = metadata_stream_to_writable_bytes(fulluser)
1734 self.emails[email] = user
1735
1736 s = b''
1737 for (key, val) in self.users.items():
1738 keybytes = metadata_stream_to_writable_bytes(key)
1739 s += b"%s\t%s\n" % (keybytes.expandtabs(1), val.expandtabs(1))
1740
1741 open(self.getUserCacheFilename(), 'wb').write(s)
1742 self.userMapFromPerforceServer = True
1743
1744 def loadUserMapFromCache(self):
1745 self.users = {}

Callers 3

loadUserMapFromCacheMethod · 0.95
p4UserForCommitMethod · 0.80
commitMethod · 0.80

Calls 5

getUserCacheFilenameMethod · 0.95
p4CmdListFunction · 0.85
gitConfigListFunction · 0.85
writeMethod · 0.45

Tested by

no test coverage detected