Я хотел бы добавить обновление для git, которое мешает людям нажать java-код, который не будет компилироваться. В идеале он будет вызывать javac, видеть результат и разрешать или отклонять push.Как я могу сделать так, чтобы git отклонил нажатие кода, который не будет компилироваться?
Самый распространенный пример того, что я хочу предотвратить, - это тот, кто не совершает все свои изменения, тем самым нарушая сборку. Тем не менее, я понимаю, что git-крючки запускаются на клиенте (а не на сервере), поэтому, если это происходит, крюк все равно позволит нажать.
Что является лучшим способом предотвратить людей, нарушающих сборку с неполными фиксациями?
UPDATE:
Есть примитивный вариант крючка работы, спасибо за всю помощь!
Отрывок из обновлений крючке:
### make sure code compiles
## currently does this by copying the state of the repository as of the pushed code and attempting to build it
# for now, hard coded as C:\Windows\Temp
copydir="/c/Windows/Temp/git_hook_compile_copy"
echo "making copy of $newrev to $copydir" >&2
rm -rf "$copydir"
mkdir "$copydir"
git archive $newrev | tar -x -C $copydir/
if [ "$?" != "0" ]; then
echo "*** unable to make copy of code" >&2
exit 1
fi
echo "attempting to build $newrev" >&2
"$ANT_HOME/bin/ant" -file "$copydir/appropriatePath/build.xml"
if [ "$?" != "0" ]; then
echo "*** code does not compile" >&2
exit 1
fi
(обратите внимание, что это для окружающей среды окна и опирается на ANT_HOME (и, таким образом, JAVA_HOME) переменные среды определяется)
Компиляция проекта при каждом нажатии может быть чрезмерно дорогой; если да, то «непрерывная интеграция» - это то, что нужно Google. – 9000
+1 для непрерывной интеграции. –
Что касается непрерывной интеграции, я тоже ее поклонник, и мы используем Hudson для нашего основного проекта. Это побочный проект, и я просто хочу, чтобы что-то действительно простое, что не позволяет людям проверять код, который нарушает сборку, тем самым никто другой (в данном случае виртуальные машины, на которых запущены скрипты) могут проверить сломанную сборку. – Zugwalt