[libcamera-devel] [PATCH 4/4] utils: checkstyle.py: Check trailers for Amendment commits

Umang Jain umang.jain at ideasonboard.com
Tue Jul 11 16:23:31 CEST 2023


Hi Kieran,


On 7/11/23 7:09 PM, Kieran Bingham via libcamera-devel wrote:
> The commit trailers are checked as part of processing the commit message
> with the newly introduced TrailersChecker.
>
> This relies on the trailers property being correctly exposed by the
> Commit object, and is implemented for the base Commit but not processed
> for Amendment commits.
>
> Refactor the trailer property handling to a helper function in the base
> Commit class and make use of it with a newly added call to obtain the
> existing Trailers from the most recent commit when using Amendment.
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
> ---
>   utils/checkstyle.py | 26 ++++++++++++++++++--------
>   1 file changed, 18 insertions(+), 8 deletions(-)
>
> diff --git a/utils/checkstyle.py b/utils/checkstyle.py
> index 5663af811961..214509bc74d4 100755
> --- a/utils/checkstyle.py
> +++ b/utils/checkstyle.py
> @@ -208,6 +208,17 @@ class Commit:
>           self.commit = commit
>           self._parse()
>   
> +    def _parse_trailers(self, lines):
> +        self._trailers = []
> +        for index in range(1, len(lines)):
> +            line = lines[index]
> +            if not line:
> +                break
> +
> +            self._trailers.append(line)
> +
> +        return index
> +
>       def _parse(self):
>           # Get the commit title and list of files.
>           ret = subprocess.run(['git', 'show', '--format=%s%n%(trailers:only,unfold)', '--name-status',
> @@ -217,14 +228,7 @@ class Commit:
>   
>           self._title = lines[0]
>   
> -        self._trailers = []
> -        for index in range(1, len(lines)):
> -            line = lines[index]
> -            if not line:
> -                break
> -
> -            self._trailers.append(line)
> -
> +        index = self._parse_trailers(lines)
>           self._files = [CommitFile(f) for f in lines[index:] if f]
>   
>       def files(self, filter='AMR'):
> @@ -283,6 +287,12 @@ class Amendment(Commit):
>                                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)],



More information about the libcamera-devel mailing list