From 3b44f9f3f6b55681b25d14c15d3da0b4543253c7 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sun, 4 Nov 2018 15:02:45 +0100 Subject: [PATCH] sob2from.sh: don't fail on author names with single quotes Also only rewrite the author if the existing commit author does not appear in any Signed-off-by line. Signed-off-by: Jo-Philipp Wich --- sob2from.sh | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sob2from.sh b/sob2from.sh index 6606344..12cca27 100755 --- a/sob2from.sh +++ b/sob2from.sh @@ -1,11 +1,15 @@ #!/bin/bash git filter-branch -f --tag-name-filter cat --commit-filter ' + MESSAGE="$(git show --format=%B "$GIT_COMMIT")" + SOB_LINE="$(echo "$MESSAGE" | sed -ne "s|^ *Signed-off-by: *||p" | head -n1)" + SOB_AUTHOR="$(echo "$SOB_LINE" | sed -e "s|^\(.*\) <.*>\$|\\1|")" + SOB_EMAIL="$(echo "$SOB_LINE" | sed -e "s|^.* <\(.*\)>\$|\\1|")" - eval $(git show --format=%B "$GIT_COMMIT" | sed -ne "s|Signed-off-by: \(.*\) <\(.*\)>$|SOB_AUTHOR='"'"'\\1'"'"'; SOB_EMAIL='"'"'\\2'"'"'|p" | head -n1) - - if [ -n "$SOB_AUTHOR" -a -n "$SOB_EMAIL" -a "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" != "$SOB_AUTHOR <$SOB_EMAIL>" ]; then - echo -e "\nRewrite $GIT_COMMIT: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> => $SOB_AUTHOR <$SOB_EMAIL>" >&2 + if [ -n "$SOB_AUTHOR" -a -n "$SOB_EMAIL" ] && \ + [ "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" != "$SOB_AUTHOR <$SOB_EMAIL>" ] && \ + ! echo "$MESSAGE" | grep -sqE "^ *Signed-off-by: *$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>"; then + printf "\nRewrite $GIT_COMMIT: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> => $SOB_AUTHOR <$SOB_EMAIL>\n" >&2 export GIT_AUTHOR_NAME="$SOB_AUTHOR" export GIT_AUTHOR_EMAIL="$SOB_EMAIL" fi -- 2.30.2