2013-05-30 2 views
-1

나는 서버를 배치했다. 나는 crontab 작업을 작성 중입니다. 그것은 저장소에 새로운 푸시가 있는지 확인해야하는 python 스크립트를 사용합니다. 새 밀어 넣기를 찾으면 서버 코드를 가져 와서 업데이트하고 서버를 다시 시작해야합니다.crontab 자동화 된 git pull

제 문제는 저장소에 새로운 커밋이 있는지 파이썬 스크립트에서 어떻게 알 수 있습니까?

나는 당신이 어떤 원격 서버에서 사용할 수 커밋이 있는지 확인하는

git rev-list deployment..origin/deployment 

을 사용할 수 있습니다 알고 있습니다.

그러나 어떻게 파이썬 스크립트에서 구현하고 그것이 당길 필요가 있다는 것을 알기로 결정합니까?

감사 닉

+0

병합 할 항목이있을 경우 '가져 오기'를하지 않고 조건부로 병합하고 다시 시작하지 않는 이유는 무엇입니까? – Sneagan

+1

우연히 github을 사용하고 있습니까? 서비스 후크와 같은 것이 아마도 cron보다 낫습니다. https://help.github.com/articles/post-receive-hooks – Slickrick12

+0

아니 github .. 하지만 어떻게 할 때 당신이 병합해야합니까 알 수 있습니까? 이 서버는 원격으로 데이터 센터에있게 될 것입니다. – Nick

답변

2

당신은뿐만 아니라 풀 수 있도록, 어떤 경우에 서버에 접속해야합니다.

당신이 당길 때 현재의 지점에 있으며, 현재 지점이 변경되었는지 여부를 감지 할 경우, 당신은 항상 할 수있다 (참고 : 쉘 작성은)

BEFORE=$(git rev-parse HEAD) 
# git pull here 
AFTER=$(git rev-parse HEAD) 
# Changes if $BEFORE is different from $AFTER 
+0

git rev-parse HEAD는 무엇을합니까? – Nick

+0

'git rev-parse '는 주어진 refspec에 대한 SHA1을 출력합니다. 'HEAD'는 현재 가지의 머리입니다. refspec은 로컬 또는 원격 지점 등이 될 수도 있습니다. – fge

1

FGE 올바른 것입니다. 다른 누군가가 먼저 git pull origin 또는 git fetch origin을 수행하지 않고 푸시했는지 알 수 없습니다. 귀하의 명령은 git fetch origin으로 먼저 처리되었습니다.

git fetch origin 
git rev-list deployment..origin/deployment