(self)
| 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 = {} |
no test coverage detected