diff --git a/tools/utils/git_log.py b/tools/utils/git_log.py index f5bcd86b33d..e615d299c0a 100644 --- a/tools/utils/git_log.py +++ b/tools/utils/git_log.py @@ -16,10 +16,12 @@ class GitCommit: # cached values "_author", + "_email", "_date", "_body", "_files", "_files_status", + "_diff", ) def __init__(self, sha1, git_dir): @@ -27,16 +29,21 @@ class GitCommit: self._git_dir = git_dir self._author = \ + self._email = \ self._date = \ self._body = \ self._files = \ self._files_status = \ + self._diff = \ None def cache(self): - """ Cache all properties + """ + Cache all properties + (except for diff as it's significantly larger than other members). """ self.author + self.email self.date self.body self.files @@ -86,6 +93,15 @@ class GitCommit: self._author = ret return ret + @property + def email(self): + ret = self._email + if ret is None: + content = self._log_format("%ae")[:-1] + ret = content.decode("utf8", errors="ignore") + self._email = ret + return ret + @property def date(self): ret = self._date @@ -124,6 +140,15 @@ class GitCommit: self._files_status = ret return ret + @property + def diff(self): + ret = self._diff + if ret is None: + content = self._log_format("", args=("-p",)) + ret = content.decode("utf8", errors="ignore") + self._diff = ret + return ret + class GitCommitIter: __slots__ = (