[libcamera-devel] [PATCH] hooks: pre-push: Disable interpretation of escape sequences
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Jan 9 15:25:50 CET 2024
Hi Kieran,
Thank you for the patch.
On Tue, Jan 09, 2024 at 02:16:23PM +0000, Kieran Bingham via libcamera-devel wrote:
> The pre-push hook validates the commit messages utilising 'echo' to send
> the captured data from the git commit through grep.
>
> Commit messages may occasionally contain strings that could appear to be
> escape sequences such as doxygen style references to \struct.
>
> The '\' 'c' escape sequence can be interpreted to supress all further
> output [0] which then breaks the processing and string matching.
>
> Unfortunatley for us, doxygen's class reference constructed in the same
> form as \struct can be interpreted as the escape sequence to supress
> further output.
>
> [0] https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins
>
> Update the pre-push hook to explicitly disable escape sequence
> interpretation using the '-E' flag. This is not available on the
> posix-compliant shell 'dash', so also switch to bash explicitly to
> prevent potential failures.
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> utils/hooks/pre-push | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/utils/hooks/pre-push b/utils/hooks/pre-push
> index 90ffdf6f1755..9918b2861705 100755
> --- a/utils/hooks/pre-push
> +++ b/utils/hooks/pre-push
> @@ -1,4 +1,4 @@
> -#!/bin/sh
> +#!/bin/bash
>
> # SPDX-License-Identifier: GPL-2.0-or-later
>
> @@ -61,7 +61,7 @@ do
> msg=$(git cat-file commit "$commit")
>
> # 1. The commit message shall not contain a local changelog.
> - if echo "$msg" | grep -q '^--- *$'
> + if echo -E "$msg" | grep -q '^--- *$'
> then
> echo >&2 "Found local changelog in commit $commit"
> errors=$((errors+1))
> @@ -71,7 +71,7 @@ do
> # corresponding the committer and the author.
> committer=$(echo "$msg" | grep '^committer ' | head -1 | \
> cut -d ' ' -f 2- | rev | cut -d ' ' -f 3- | rev)
> - if ! echo "$msg" | grep -F -q "Signed-off-by: ${committer}"
> + if ! echo -E "$msg" | grep -F -q "Signed-off-by: ${committer}"
> then
> echo >&2 "Missing committer Signed-off-by in commit $commit"
> errors=$((errors+1))
> @@ -79,21 +79,21 @@ do
>
> author=$(echo "$msg" | grep '^author ' | head -1 | \
> cut -d ' ' -f 2- | rev | cut -d ' ' -f 3- | rev)
> - if ! echo "$msg" | grep -F -q "Signed-off-by: ${author}"
> + if ! echo -E "$msg" | grep -F -q "Signed-off-by: ${author}"
> then
> echo >&2 "Missing author Signed-off-by in commit $commit"
> errors=$((errors+1))
> fi
>
> # 3. A Reviewed-by or Acked-by is required.
> - if ! echo "$msg" | grep -q '^\(Reviewed\|Acked\)-by: '
> + if ! echo -E "$msg" | grep -q '^\(Reviewed\|Acked\)-by: '
> then
> echo >&2 "No Reviewed-by or Acked-by in commit $commit"
> errors=$((errors+1))
> fi
>
> # 4. The commit message shall not contain a Change-Id.
> - if echo "$msg" | grep -q '^Change-Id:'
> + if echo -E "$msg" | grep -q '^Change-Id:'
> then
> echo >&2 "Found Change-Id in commit $commit"
> errors=$((errors+1))
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list