[PATCH v2 3/3] utils: checkstyle.py: Fix trailer parsing for commits with changelogs
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Aug 7 14:15:16 CEST 2024
Trailers are extracted from commits using the '(trailers:*)' formatting
specifier. git ignores dividers when doing so, as if the --no-divider
options was passed to git-interpret-trailers. This prevents trailers
from being located when the patch contains a local changelog.
There is unfortuantely no 'no-no-divider' option to the trailers format
specifier. Fix the issue by extracting trailers with
git-interpret-trailers, that gives better control of the parsing.
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
utils/checkstyle.py | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/utils/checkstyle.py b/utils/checkstyle.py
index 560a2c1e8c58..dae5d518920a 100755
--- a/utils/checkstyle.py
+++ b/utils/checkstyle.py
@@ -216,28 +216,28 @@ class Commit:
self._trailers = []
self._parse()
- def _parse_trailers(self, lines):
- for index in range(2, len(lines)):
- line = lines[index]
- if not line:
- break
+ def _parse_trailers(self):
+ proc_show = subprocess.run(['git', 'show', '--format=%b',
+ '--no-patch', self.commit],
+ stdout=subprocess.PIPE)
+ trailers = subprocess.run(['git', 'interpret-trailers', '--parse'],
+ input=proc_show.stdout,
+ stdout=subprocess.PIPE).stdout.decode('utf-8')
- self._trailers.append(line)
-
- return index
+ self._trailers = trailers.splitlines()
def _parse(self):
# Get the commit title and list of files.
- ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%s%n%(trailers:only,unfold)',
+ ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%s',
'--name-status', self.commit],
stdout=subprocess.PIPE).stdout.decode('utf-8')
lines = ret.splitlines()
self._author = lines[0]
self._title = lines[1]
+ self._files = [CommitFile(f) for f in lines[2:] if f]
- index = self._parse_trailers(lines)
- self._files = [CommitFile(f) for f in lines[index:] if f]
+ self._parse_trailers()
def files(self, filter='AMR'):
return [f.filename for f in self._files if f.status in filter]
@@ -288,7 +288,7 @@ class Amendment(Commit):
def _parse(self):
# Create a title using HEAD commit and parse the trailers.
- ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%H %s%n%(trailers:only,unfold)',
+ ret = subprocess.run(['git', 'show', '--format=%an <%ae>%n%H %s',
'--no-patch'],
stdout=subprocess.PIPE).stdout.decode('utf-8')
lines = ret.splitlines()
@@ -296,7 +296,7 @@ class Amendment(Commit):
self._author = lines[0]
self._title = 'Amendment of ' + lines[1]
- self._parse_trailers(lines)
+ self._parse_trailers()
# Extract the list of modified files
ret = subprocess.run(['git', 'diff', '--staged', '--name-status', 'HEAD~'],
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list