diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2023-07-25 16:51:56 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2023-07-28 19:11:56 +0300 |
commit | 4694e441c31378e7c5bfaa34164785bd2f93e38b (patch) | |
tree | e343b772c1117e4902cdd6293affe692b6bbe6aa | |
parent | 5322b7ba611f6e76a7e80327de5d86acd36dd078 (diff) |
utils: checkstyle.py: Extract title and trailers with one command
The Amendment class calls `git show` twice, once to extract the commit
title, and a second time to extract the trailers. This can be combined
in a single command, which is more efficient. Do so.
While at it, centralize initialization of self._trailers in the
Commit.__init__() function.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rwxr-xr-x | utils/checkstyle.py | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/utils/checkstyle.py b/utils/checkstyle.py index 214509bc..836ea80f 100755 --- a/utils/checkstyle.py +++ b/utils/checkstyle.py @@ -206,10 +206,10 @@ class CommitFile: class Commit: def __init__(self, commit): self.commit = commit + self._trailers = [] self._parse() def _parse_trailers(self, lines): - self._trailers = [] for index in range(1, len(lines)): line = lines[index] if not line: @@ -257,9 +257,6 @@ class StagedChanges(Commit): def __init__(self): Commit.__init__(self, '') - # There are no trailers to parse on a Staged Change. - self._trailers = [] - def _parse(self): ret = subprocess.run(['git', 'diff', '--staged', '--name-status'], stdout=subprocess.PIPE).stdout.decode('utf-8') @@ -278,21 +275,21 @@ class Amendment(Commit): Commit.__init__(self, '') def _parse(self): - # Create a title using HEAD commit - ret = subprocess.run(['git', 'show', '--pretty=oneline', '--no-patch'], + # Create a title using HEAD commit and parse the trailers. + ret = subprocess.run(['git', 'show', '--format=%H %s%n%(trailers:only,unfold)', + '--no-patch'], stdout=subprocess.PIPE).stdout.decode('utf-8') - self._title = 'Amendment of ' + ret.strip() + lines = ret.splitlines() + + self._title = 'Amendment of ' + lines[0].strip() + + self._parse_trailers(lines) + # Extract the list of modified files ret = subprocess.run(['git', 'diff', '--staged', '--name-status', 'HEAD~'], stdout=subprocess.PIPE).stdout.decode('utf-8') self._files = [CommitFile(f) for f in ret.splitlines()] - # Parse trailers from the existing commit only. - ret = subprocess.run(['git', 'show', '--format=%n%(trailers:only,unfold)', - '--no-patch'], - stdout=subprocess.PIPE).stdout.decode('utf-8') - self._parse_trailers(ret.splitlines()) - def get_diff(self, top_level, filename): diff = subprocess.run(['git', 'diff', '--staged', 'HEAD~', '--', '%s/%s' % (top_level, filename)], |