나는 사람들이 컴파일하지 않는 자바 코드를 푸는 것을 막는 git 업데이트 훅을 추가하고 싶다. 이상적으로 javac를 호출하고, 결과를보고, 푸시를 허용하거나 거부합니다.어떻게하면 컴파일되지 않는 코드를 푸시하지 못하게 할 수 있습니까?
내가 막기를 원하는 가장 일반적인 예는 변경 사항을 모두 커밋하지 않아 누군가가 빌드를 위반하는 것입니다. 그러나 git hook이 서버가 아닌 클라이언트에서 실행된다는 것을 이해하고 있으므로 위와 같은 상황이 발생해도 후크는 여전히 푸시를 허용합니다.
커밋이 불완전한 사람이 빌드를 중단하지 못하게하는 가장 좋은 방법은 무엇입니까?
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. –
지속적인 통합에 관해서는 필자도 큰 팬이며 허드슨을 주요 프로젝트로 사용합니다. 이 프로젝트는 사이드 프로젝트이며 사람들이 빌드를 깨뜨리는 코드를 체크인 할 수 없도록하는 간단한 방법을 원합니다.이 방법으로는 다른 사람 (이 경우 스크립트를 실행하는 가상 시스템)은 깨진 빌드를 체크 아웃 할 수 없습니다. – Zugwalt