전 자식에게 익숙하고 원본/마스터로 푸시 한 후 커밋 메시지를 캡처하고 (서버에서) 서버 기반의 bash 스크립트를 실행할 수 있기를 원합니다. 문자열에 무엇이 들어 있는지.자식 커밋 메시지를 캡처하고 작업을 실행하는 방법
예를 들어, 내 자식이 커밋 메시지를 경우 말한다 : [email] my commit message
커밋 메시지가 [email]
다음 지정된 동작을 포함하는 경우, 그렇지 않으면하지 않습니다. 기본적으로 내가 알아야 할 모든 위의 bash는 사용, 커밋 메시지에 대한 변수 이름은 무엇
#!/bin/bash
MESSAGE= #commit message variable?
if [[ "$MESSAGE" == *[email]* ]]; then
echo "do action here"
else
echo "do nothing"
fi
: 여기
내가post-receive
후크 사용하여 생각하고 샘플 bash는 스크립트입니다 스크립트? 또한, 이것이 올바른 일인지 아닌지 확실하지 않습니다.
이'[email]'마크 업은 커밋 메시지에 영구히 포함될 것입니까? – Cascabel
다른 가능한 방법 : 환경 변수를 사용하여 후크에 신호를 보내십시오. 따라서 커밋 메시지에 아무 것도 없습니다. 앨리어스를 사용하면이 작업을보다 쉽게 수행 할 수 있습니다. 또는 메시지에 기록하려면 커밋 전 훅 (pre-commit hook)에서 마크 업을 감지하여 커밋이 기록되기 전에 메시지를 수정할 수 있습니다. (커밋이 성공하고 즉시 이메일을 보내거나, 포스트 커밋 훅을위한 무언가를 키에 저장한다고 가정합니다 ...) – Cascabel
아니면 정말로이 포스트 - 수신을하고 있습니까, 커밋하지 않았습니까? 그런 다음 커밋 메시지를 더 이상 수정할 수 없습니다. 그러나 이는 솔루션이 작동하지 않는다는 것을 의미합니다. 푸시는 한 커밋을 푸시하지 않고 모든 수의 새로운 커밋을 포함 할 수있는 모든 수의 참조를 업데이트합니다. 실제로 [예제] (http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/hooks/post-receive-email;hb=HEAD)를 참고하십시오. 자식의 기여. 그것은 꽤 많이 처리하고'[email]'라고하는 커밋에만주의를 기울여 수정할 수 있습니다. – Cascabel