Git 个挂钩未触发或正在使用 git 个挂钩清理
Git hooks not firing OR clearing things up with git hooks
我读过很多关于使用 git 钩子的文章,但不太了解全部情况。我的设置如下:我正在为我的公司做一个项目。我在 mac 上为网络应用程序编写代码,然后将其推送到 bitbucket 上的存储库。在公司的本地网络中,有一个虚拟的machine 运行服务器。现在,如果我已将一段新代码推送到存储库,我将远程登录到此 VM 并执行 git pull
命令。我想配置一个带有 git 挂钩的推送部署方案,所以基本上每当我将一些新代码推送到 repo 中时,VM 应该自动拉取它(你知道,就像某些服务允许你一样,例如 Laravel锻造).
在虚拟 machine 中有一个存储库目录,例如 C:\project
(是的,它是 运行 Windows,*叹*)。我试过用一些 "hello-world" 代码将 post-receive
挂钩放入 C:\project\.git\hooks
目录,比如
#!/bin/sh
ECHO "HELLO"
pause
但是在我从我的开发环境 git push
之后它没有触发。我感觉好像我在这里做的事情完全错了,但找不到任何解决方案。提前致谢。
编辑
好吧,澄清一下,我想要实现的目标是:
- 我在我的 mac 上写了一些代码,我
push
到 bitbucket 上的私人仓库;
- 我公司本地网络中的虚拟机已经克隆了这个存储库;
- 发现bitbucket上有一些变化;
- 使用 git-hooks,它从 bitbucket 运行一些代码到
pull
,例如:
列表项
#!/bin/sh
cd ../.. # cd back to project directory
git pull
npm install
bower install
...
- 如果情况需要,我什至准备安排
git fetch
任务,但没有挂钩工作。
您应该在 VM 服务器上使用 post-merge 挂钩,因为您 git 拉到那里。 post-接收在您执行 git 推送的服务器上触发。
将 post-merge 挂钩移动到您推送的远程仓库。
编辑:
如果您从 B 上的 repo 拉取 A,则会触发 post-A 上的合并。如果您从 A 推送到 B 上的回购协议,则会触发 post-B 上的接收。
这可能不是一个选项,但使用 Bitbucket webhook,您可以在项目中发生推送事件时通知 REST 服务,请参阅 https://confluence.atlassian.com/bitbucket/event-payloads-740262817.html#EventPayloads-Push。
构建响应推送事件的 Rest 服务有很多选择(一种选择可能是使用 Phyton 脚本和 GitPhyton,但还有很多其他选择)
我读过很多关于使用 git 钩子的文章,但不太了解全部情况。我的设置如下:我正在为我的公司做一个项目。我在 mac 上为网络应用程序编写代码,然后将其推送到 bitbucket 上的存储库。在公司的本地网络中,有一个虚拟的machine 运行服务器。现在,如果我已将一段新代码推送到存储库,我将远程登录到此 VM 并执行 git pull
命令。我想配置一个带有 git 挂钩的推送部署方案,所以基本上每当我将一些新代码推送到 repo 中时,VM 应该自动拉取它(你知道,就像某些服务允许你一样,例如 Laravel锻造).
在虚拟 machine 中有一个存储库目录,例如 C:\project
(是的,它是 运行 Windows,*叹*)。我试过用一些 "hello-world" 代码将 post-receive
挂钩放入 C:\project\.git\hooks
目录,比如
#!/bin/sh
ECHO "HELLO"
pause
但是在我从我的开发环境 git push
之后它没有触发。我感觉好像我在这里做的事情完全错了,但找不到任何解决方案。提前致谢。
编辑
好吧,澄清一下,我想要实现的目标是:
- 我在我的 mac 上写了一些代码,我
push
到 bitbucket 上的私人仓库; - 我公司本地网络中的虚拟机已经克隆了这个存储库;
- 发现bitbucket上有一些变化;
- 使用 git-hooks,它从 bitbucket 运行一些代码到
pull
,例如:
列表项
#!/bin/sh
cd ../.. # cd back to project directory
git pull
npm install
bower install
...
- 如果情况需要,我什至准备安排
git fetch
任务,但没有挂钩工作。
您应该在 VM 服务器上使用 post-merge 挂钩,因为您 git 拉到那里。 post-接收在您执行 git 推送的服务器上触发。
将 post-merge 挂钩移动到您推送的远程仓库。
编辑:
如果您从 B 上的 repo 拉取 A,则会触发 post-A 上的合并。如果您从 A 推送到 B 上的回购协议,则会触发 post-B 上的接收。
这可能不是一个选项,但使用 Bitbucket webhook,您可以在项目中发生推送事件时通知 REST 服务,请参阅 https://confluence.atlassian.com/bitbucket/event-payloads-740262817.html#EventPayloads-Push。
构建响应推送事件的 Rest 服务有很多选择(一种选择可能是使用 Phyton 脚本和 GitPhyton,但还有很多其他选择)