[libcamera-devel] [PATCH] hooks: pre-push: Disable interpretation of escape sequences
Kieran Bingham
kieran.bingham at ideasonboard.com
Tue Jan 9 15:16:23 CET 2024
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>
---
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))
--
2.34.1
More information about the libcamera-devel
mailing list