2013-05-30 41 views
-1

我有一个服务器部署。我正在编写一个crontab任务。它使用一个python脚本,需要检查是否有新的入库。如果发现新的推送,它将拉取并更新服务器代码,并应重新启动服务器。crontab自动git拉

我的问题是如何使python脚本知道是否有新的提交到存储库?

我知道你可以使用

git rev-list deployment..origin/deployment 

,以检查是否有任何承诺,请在远程服务器上。

但是如何在python脚本中实现并决定知道它需要拉?

感谢 尼克

+0

为什么不'fetch'并有条件地合并,并重新启动,如果有东西要合并? – 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 origingit fetch origin,您就看不到其他人。您的命令首先会与git fetch origin一起使用。

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