Tools: add 'diff' and 'email' attrs to git_log utility module

Expose email email & diff as they're generally useful when inspecting
commits.
This commit is contained in:
Campbell Barton
2023-08-04 14:43:43 +10:00
parent ed6e24b176
commit 1e1f4db8b6

View File

@@ -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__ = (