Я пытаюсь разместить информационное сообщение в нашем разногласии каждый раз, когда кто-то подталкивает к мастеру.
У меня есть сценарий bash после получения, который выглядит следующим образом:
#!/bin/bash
while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
tail=$(git log -1 --pretty=format:'%h %cn: %s%b' $newrev)
url='https://discordapp.com/api/webhooks/validapikey'
curl -i \
-H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST \
--data '{"content": "'$tail'"}' $url
fi
done
Если я выведу хвост в файл, я получу ожидаемую строку
6baf5 user: last commit message
но сообщение не публикуется в Discord
Если я заменю $ tail на "hello", он будет опубликован.





3 предложения:
а) -d "{\" содержимое \ ": \" $ {хвост} \ "}"
б) Вы можете написать это на том же языке, что и ваш проект, например Python или NodeJS, что всегда лучше, чем bash (используйте то же имя и сделайте его исполняемым)
c) Чтобы это не поддерживалось на каждой машине разработчика, вы можете создать версию этой логики внутри своего репо, используя https://pypi.org/project/hooks4git или любой другой, который также обеспечивает управление хуками git.
Кроме того, если вы можете использовать BitBucket / Pipelines (частное репо) или TravisCI (публичное репо github.com), они выполняют эту логику уведомлений только по конфигурации.
а) работает! для б) и в) у нас есть автономный сервер git, на котором размещены хуки, мы не хотели устанавливать язык только для хуков, но спасибо за предложения и решение.
Идея с раздором довольно хороша, мне это нравится, чувак