Git pull 直到有东西可以拉取

5
有没有一种方法可以git pull直到有东西需要拉取。
假设我正在等待同事推送他的最新更改,因为我不耐烦,不看他的屏幕,我只是运行watch git pull直到我看到已经拉取了一些东西,但是我可能会错过这个时刻,比必要的时间浪费更多的时间。(注意:是的,这只是一个非常小的不便,但仍然是一个不便:) ) git pull似乎没有不同的返回值,无论它是否实际上拉取了东西,但也许有一些我不知道的晦涩的、未记录的选项?
编辑: 感谢您的答案,我将其添加到我的.zshrc中:
别名gitpullwait="git pull | grep "Already up-to-date" > / dev / null; while [ $? -ne 1 ]; do git pull | grep "Already up-to-date" > / dev / null; done; notify-send Pull f$"
它看起来很丑,但对我有效。
3个回答

1
通常的方法是设置本地监听器以侦测服务器端设置的webhook
该webhook会发送一个JSON负载,本地监听器可以解释并执行相应操作。
我提到的链接是GitHub仓库的链接,BitBucket有自己的版本(POST hook)。
对于私有服务器,您需要设置post-receive hook来将最新推送的JSON消息推送到您的工作站。

1

根据您的情况,有几种方法可供选择:

  1. 在您朋友的机器上配置git钩子,以SSH方式连接到您的机器,并在推送完成后执行git pull操作——这不是一个推荐的方法,但是可以作为一种选择。http://git-scm.com/book/en/Customizing-Git-Git-Hooks
  2. 在git服务器上配置git钩子'post-receive',以SSH方式连接到您的机器并执行git pull操作——如果您能够真正设置git钩子,则建议使用此方法。How to set up a Git hook so that after pushing to ssh://peter@foo.com/~/bar.com.git, it will go to ~/bar.com and do a git pull?
  3. 编写cron任务,在您的机器上每隔一段时间执行git pull操作——这是解决此问题的快速方法,但对性能要求不高。https://help.ubuntu.com/community/CronHowto
如果您可以访问远程仓库服务器,我建议选择选项#2。请记住,除非您希望这种行为始终发生,否则您需要在之后删除该挂钩。

1
你可以将git输出管道到awk/grep以查找非空拉取时会打印的消息,然后使用notify-send在桌面上闪烁通知消息。另外,我建议不要在脚本中使用git pull,而是使用脚本进行git fetch,然后手动合并,这样您就不会遇到意外的合并问题。

这是最简单的答案,我喜欢它,我会编辑我的问题并附上我所做的内容。 - iCart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接