[libcamera-devel] [PATCH] utils: checkstyle.py: Extract title and trailers with one command

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Jul 25 15:55:47 CEST 2023


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 at ideasonboard.com>
---
 utils/checkstyle.py | 23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 214509bc74d4..836ea80fe89b 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)],

base-commit: baaad1bf9e2acb3ab721945041ef46496951c04c
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list