Git钩子没有触发或用git钩子清理东西

时间:2015-08-28 09:21:27

标签: git hook bitbucket githooks

我已经阅读了许多关于使用git hooks的文章,但是并没有全面了解。我的设置如下:我正在为我的公司做一个项目。我在我的mac上为web应用编写代码,然后将其推送到bitbucket上的repo。在公司的本地网络中,有一个运行服务器的虚拟机。现在我远程登录到这个VM并执行git pull命令,如果我已经将一段新代码推送到了repo。我想配置一个带有git钩子的push-to-deploy方案,所以基本上每当我将一些新代码推送到repo中时,VM都应该自动拉出它(你知道,就像一些服务允许你一样,例如Laravel Forge)。 p>

在虚拟机中有一个repo的目录,比如C:\project(是的,它正在运行Windows,*叹气*)。我已经尝试将post-receive挂钩放入C:\project\.git\hooks目录中,并附带一些“hello-world”代码,例如

#!/bin/sh
ECHO "HELLO"
pause

但是我在开发环境git push之后没有开火。我感觉就像我在做完全错误一样,但找不到任何解决方案。提前谢谢。

修改

好的,要清理一下,我想要实现的目标:

  1. 我在我的mac上编写了一些代码,并将push写入bitbucket上的私人仓库;
  2. 我公司本地网络中的VM已经克隆了此存储库;
  3. 它发现bitbucket有一些变化;
  4. 使用git-hooks,它从bitbucket向pull运行一些代码,如:
  5. 列出项目

    #!/bin/sh
    cd ../.. # cd back to project directory
    git pull
    npm install
    bower install
    ...
    
    1. 我甚至准备安排一个git fetch任务,如果这是案件的需要,但没有钩子工作。

1 个答案:

答案 0 :(得分:1)

您应该在VM服务器上使用合并后挂钩,因为您在那里执行git pull。在你执行git推送的服务器上触发post-receive。

将合并后的挂钩移动到您推送的远程仓库。

修改

如果您从B上的回购中拉出A,则触发A上的合并后。如果您从A推送到B上的回购,则会触发B上的后接收。

这可能不是一个选项,但使用Bitbucket webhooks,您可以在项目中发生推送事件时通知REST服务,请参阅https://confluence.atlassian.com/bitbucket/event-payloads-740262817.html#EventPayloads-Push

有许多替代方案可以构建一个Rest事务服务来响应推送事件(一种替代方案可能是使用Phyton脚本和GitPhyton,但还有很多其他选择)