У нас возникла проблема в нашей команде, и мы решили проверить, есть ли способ или команда git, чтобы отклонить git push, если в коде есть TODO. Любые идеи? Заранее спасибо.
Как отключить git push, когда в коде есть TODO?
Ответы (2)
Невозможно использовать хуки предварительного получения в github, поэтому вместо этого мы используем хук предварительной фиксации на стороне клиента: http://git-scm.com/book/en/Customizing-Git-Git-Hooks#Client-Side-Hooks
Наш сценарий предварительной фиксации (на основе http://mark-story.com/posts/view/using-git-commit-hooks-to-prevent-stupid-mistakes) выглядит так:
#!/bin/sh
for FILE in `git diff-index -p -M --name-status HEAD -- | cut -c3-` ; do
if [ "grep 'TODO' $FILE" ]
then
echo $FILE ' contains TODO'
exit 1
fi
done
exit
У нас есть этот скрипт в нашей системе управления версиями, и мы создаем символическую ссылку на него в .git/hooks.
Спасибо за помощь :)
РЕДАКТИРОВАТЬ: из-за поведения grep в операторе if нам нужно было отредактировать наш скрипт:
#!/bin/sh
for FILE in `git diff --name-only --cached`; do
grep 'TODO' $FILE 2>&1 >/dev/null
if [ $? -eq 0 ]; then
echo $FILE ' contains TODO'
exit 1
fi
done
exit
chmod +x .git/hooks/pre-commit после создания файла
- person dutzi; 18.12.2015
Предварительно получите хук на сервере, загрузите файлы и прервите отправку :)
Дополнительную информацию о хуке предварительного получения можно найти здесь: http://git-scm.com/book/en/Customizing-Git-Git-Hooks#Server-Side-Hooks