Git拉,直到有东西拉

时间:2014-06-25 08:54:44

标签: git wait pull

是否有办法 git pull ,直到有东西要拉。

说我等着同事推动他的最新变化,因为我不耐烦而不看他的屏幕,我只是运行观看git pull 直到我看到一些东西被拉了,但我可能会错过这一刻,浪费的时间多于必要的时间。 (注意:是的,这是一个非常小的不便,但仍然带来不便:))

git pull 似乎没有不同的返回值,无论它是否真的拉了一些东西,但也许有一些我不知道的模糊,无证的选项?

修改 谢谢你的答案,我把它添加到我的.zshrc:

alias 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 个答案:

答案 0 :(得分:1)

通常的方法是让一个本地监听器检测到webhook(在服务器端设置)。
该webhook将发送一个JSON payload,本地监听者可以解释并采取行动。

我提到的链接是GitHub仓库,BitBucket有自己的版本(POST hook)。

对于私人服务器,您需要设置一个后接收挂钩,以便向您的工作站发送一条JSON消息,指示最新推送。

答案 1 :(得分:1)

根据您的具体情况,有几种方法可以解决这个问题:

  1. 在你朋友的机器上配置一个git hook,将SSH连接到你的机器上,并在完成推送后执行git pull - 不建议使用它。 http://git-scm.com/book/en/Customizing-Git-Git-Hooks
  2. 在git服务器'post-receive'上配置一个git hook到SSH进入你的机器并执行git pull - 如果你可以在你的git服务器上实际设置git hooks,推荐使用。 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
  4. 如果您有权访问远程repos服务器,我建议选项#2。请记住,除非您希望此行为发生始终,否则您将需要删除该挂钩。

答案 2 :(得分:1)

你可以将git输出管道输出到awk / grep,以查找在非空拉动时打印的消息,然后使用notify-send在桌面上刷新通知消息。

此外,我建议不要使用脚本执行git pull,而是使用脚本执行git fetch,然后手动合并,这样就不会出现意外的合并问题。