【发布时间】:2017-01-01 08:52:47
【问题描述】:
有一个服务器正在运行并且上面有一个 git 实例。我希望每次用户执行 git push 到服务器时运行一个脚本。我希望我的脚本被执行然后 git push 继续。 有什么解决办法吗?
【问题讨论】:
有一个服务器正在运行并且上面有一个 git 实例。我希望每次用户执行 git push 到服务器时运行一个脚本。我希望我的脚本被执行然后 git push 继续。 有什么解决办法吗?
【问题讨论】:
我不确定您是否希望 scipt 在推送之前或之后运行。所以这是我对预推送的回答。但是如果你想要 post-push(即在 push 之后),你必须相应地更改 pre-push 挂钩以检查是否推送成功,然后你可以做 post-push 的事情。
正如@Travis 所建议的,git hooks 是您正在寻找的那个。所以要执行一个脚本预推送,你要做的就是在.git/hooks中创建一个pre-push文件。因此,在这种情况下,将您的一堆代码放入 pre-post 脚本文件 .git/hooks/pre-push 并保存。然后通过chmod +x .git/hooks/pre-push 使其可执行。成功完成此操作后,您将能够看到每次执行 push 命令时脚本都会执行。
PS:请注意,我还没有测试过这个整体,但预计会以这种方式工作。
简而言之,假设您(Linux 用户)在项目目录中
vim .git/hooks/pre-push # then add your code and save the file
# Also put the shebang on top to identify the interpreter
chmod +x .git/hooks/pre-push # make it executable
【讨论】:
post-push
您已标记此 GitHub,因此我假设您指的是公共 GitHub,而不是 GitHub 企业。
您不能在 GitHub 的服务器上运行“服务器端”脚本,因为这显然是一个巨大的漏洞,但您可以设置一个 Web 挂钩来触发另一台服务器上的脚本。
基本上,每当有人进行推送时,都会向特定的 URL 发送有关推送的数据。然后,您可以从中触发脚本。有关网络挂钩的更多信息,请参阅GitHub API docs。
【讨论】:
【讨论】: