【问题标题】:crontab automated git pullcrontab 自动 git pull
【发布时间】:2013-05-26 14:44:57
【问题描述】:

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

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

我知道你可以使用

git rev-list deployment..origin/deployment 

检查远程服务器上是否有可用的提交。

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

谢谢 尼克

【问题讨论】:

  • 为什么不fetch 有条件地合并并重新启动,如果有要合并的东西?
  • 你是不是偶然使用了github?服务挂钩之类的东西可能比 cron 更好。 help.github.com/articles/post-receive-hooks
  • 不是 github.. 但是你怎么知道你什么时候需要合并?此服务器将在远程数据中心..

标签: python git crontab git-pull


【解决方案1】:

fge 是正确的。如果没有先执行 git pull origingit fetch origin,您将无法查看其他人是否推送。您的命令将首先使用 git fetch origin

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

【讨论】:

    【解决方案2】:

    无论如何,你都需要联系服务器,所以你不妨拉。

    如果你拉的时候在当前分支上,想检测当前分支是否有变化,可以随时做(注意:写在shell里)

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

    【讨论】:

    • git rev-parse HEAD 是做什么的?
    • git rev-parse <refspec> 打印给定 refspec 的 SHA1。 HEAD 是当前分支的负责人。 refspec 也可以是本地或远程分支等。
    猜你喜欢
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2020-03-25
    • 2014-06-01
    • 2013-08-20
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多