summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-07-25 16:51:56 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-07-28 19:11:56 +0300
commit4694e441c31378e7c5bfaa34164785bd2f93e38b (patch)
treee343b772c1117e4902cdd6293affe692b6bbe6aa
parent5322b7ba611f6e76a7e80327de5d86acd36dd078 (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-xutils/checkstyle.py23
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)],