每次git推送后执行脚本

问题描述 投票:0回答:4

有一个服务器正在运行,并且上面有一个 git 实例。我希望每次用户 git Push 到服务器时运行一个脚本。我希望执行我的脚本,然后 git push 继续。 有什么解决办法吗?

linux git bash
4个回答
8
投票

我不确定您是否希望在推送之前或之后运行 scipt。这是我对预推的回答。但是如果你想要推送后(即推送后),你必须相应地更改

pre-push
钩子以检查推送是否成功,然后你就可以进行推送后的事情。

正如@Travis 所建议的,

git hooks
就是您正在寻找的那个。因此,要执行预推送脚本,您要做的就是在
pre-push
中创建一个
.git/hooks
文件。因此,在这种情况下,将一堆代码放入 pre-post 脚本文件中
.git/hooks/pre-push
并保存。然后通过
chmod +x .git/hooks/pre-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

4
投票

您已标记此 GitHub,因此我假设您指的是公共 GitHub,而不是 GitHub 企业。

您无法在 GitHub 的服务器上运行“服务器端”脚本,因为这显然是一个巨大的漏洞,但您可以设置一个 Web 挂钩来触发另一台服务器上的脚本。

基本上,每当有人进行推送时,都会向特定的 URL 发送有关推送的数据。然后您可以从中触发脚本。有关 Web 挂钩的更多信息,请参阅 GitHub API 文档


2
投票

你应该研究一下 git hooks:

8.3 自定义 Git - Git Hooks

以及有关该技术的另一个网站:

githooks.com


0
投票

我参加聚会迟到了,但想添加一些信息,以防其他人想要这样做。

如果您将自己的服务器作为 git 远程运行,您可能需要查看

post-receive
githook

如果您使用 GitHub,则需要使用 GitHub Actionsactions/starter-workflows 存储库有很多您需要的 YAML 文件的好示例。

© www.soinside.com 2019 - 2024. All rights reserved.