[PATCH v2 1/3] utils: checkstyle.py: Add author property to Commit class

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed Aug 7 14:15:14 CEST 2024


Extend the Commit class with an author property, retrieved from the
commit. It will be used to extend checkers.

While at it, drop the unneeded .strip() call when retrieving the title
for amendment commits. The call got carried over from code that
initially needed it to strip the new line character, but that need
disappeard with usage of .splitlines().

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Stefan Klug <stefan.klug at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
Changes since v1:

- Wrap long line
- Drop .strip()
- Initialize _author to None
---
 utils/checkstyle.py | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 7d480bdf4a2f..e8451846c0c2 100755
--- a/utils/checkstyle.py
+++ b/utils/checkstyle.py
@@ -212,11 +212,12 @@ class CommitFile:
 class Commit:
     def __init__(self, commit):
         self.commit = commit
+        self._author = None
         self._trailers = []
         self._parse()
 
     def _parse_trailers(self, lines):
-        for index in range(1, len(lines)):
+        for index in range(2, len(lines)):
             line = lines[index]
             if not line:
                 break
@@ -227,12 +228,13 @@ class Commit:
 
     def _parse(self):
         # Get the commit title and list of files.
-        ret = subprocess.run(['git', 'show', '--format=%s%n%(trailers:only,unfold)', '--name-status',
-                              self.commit],
+        ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%s%n%(trailers:only,unfold)',
+                              '--name-status', self.commit],
                              stdout=subprocess.PIPE).stdout.decode('utf-8')
         lines = ret.splitlines()
 
-        self._title = lines[0]
+        self._author = lines[0]
+        self._title = lines[1]
 
         index = self._parse_trailers(lines)
         self._files = [CommitFile(f) for f in lines[index:] if f]
@@ -240,6 +242,10 @@ class Commit:
     def files(self, filter='AMR'):
         return [f.filename for f in self._files if f.status in filter]
 
+    @property
+    def author(self):
+        return self._author
+
     @property
     def title(self):
         return self._title
@@ -282,12 +288,13 @@ class Amendment(Commit):
 
     def _parse(self):
         # Create a title using HEAD commit and parse the trailers.
-        ret = subprocess.run(['git', 'show', '--format=%H %s%n%(trailers:only,unfold)',
+        ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%H %s%n%(trailers:only,unfold)',
                              '--no-patch'],
                              stdout=subprocess.PIPE).stdout.decode('utf-8')
         lines = ret.splitlines()
 
-        self._title = 'Amendment of ' + lines[0].strip()
+        self._author = lines[0]
+        self._title = 'Amendment of ' + lines[1]
 
         self._parse_trailers(lines)
 
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list