Добавить многострочное сообщение в git hook - PullRequest
0 голосов
/ 15 сентября 2018

Я использую prepare-commit-message ловушку, чтобы добавить пользовательское многострочное сообщение к моим коммитам.Это сообщение приходит из другого источника.

Содержимое моего файла перехвата выглядит так:

COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3

MESSAGE=$(some_command)

if [ -z ${2+x} ]; then
    sed -i.back "1s/^/$MESSAGE \n/" "$1"
fi

Это работает, когда MESSAGE представляет собой одну строку текста.Но когда он многострочный, я получаю

unescaped newline inside substitute pattern.

echo $MESSAGE даст мне что-то вроде:

aaaa
bbbb

По сути, я хочу сделать следующее:всякий раз, когда я фиксирую, сообщение о фиксации должно содержать:

<here i will enter my commit message>

aaaa
bbbb
# Please enter the commit message for your changes. Lines starting
...

1 Ответ

0 голосов
/ 15 сентября 2018

Сед там не нужен.Вы должны быть в состоянии избежать всех этих проблем следующим образом:

mv $1 $1.back
(echo $MESSAGE ; cat $1.back) > $1

Используя sed, кажется, не существует простого способа решить эту проблему без сложных ANSI-C цитирований новой строки внутри $ MESSAGE,см. например this Сообщение переполнения стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...