【问题标题】:How to run a git hook upon successful push to Github?成功推送到 Github 后如何运行 git hook?
【发布时间】:2017-03-11 17:07:44
【问题描述】:

当我推送到 Github 上的 prod 分支时,我想编写一个 git 挂钩来运行一些 bash 脚本。我正在编写的 bash 实质上将使用 aws 命令行工具将我的应用程序的更新推送到 AWS。

我可以通过预推送来执行此操作还是有后推送?

【问题讨论】:

    标签: git amazon-web-services githooks


    【解决方案1】:

    The githooks documentation 有所有钩子的完整列表,并且没有 post-push 钩子。你可以在你的 pre-push 钩子中做一些事情,但是有一个缺陷:你无法判断服务器是接受还是拒绝推送,因为你的 pre-push 钩子运行得太早了,让 在他们看到之前就中止了推送。

    最好的办法是将外部 git push 包装到一个脚本中:git push 的退出状态告诉你什么是成功的,和/或你可以查询远程(例如,通过 git ls-remote)并查看如果它的引用在推送后发生了变化。 (这有它自己的 post hoc ergo propter hoc 谬误实例,但可能适合您的目的。)

    【讨论】:

    • 接收后怎么样?成功推送后的有效钩子
    • @OhadM: post-receive 钩子在接收的 Git 中运行,而不是在推送的 Git 中运行。 GitHub 不会让你设置任意的 post-receive 钩子,因为这会让你过多地访问他们的计算机。它们确实允许在接收后执行一组非常有限的操作,但这通常是解决 OP 想要解决的问题的错误方法。
    • 谢谢,我尝试在预推送期间 git push 并得到 [remote denied] master -> master (failed to lock) 但是,当查看远程提交时,一切看起来都不错. WDYT ?
    • "failed to lock" 是一个奇怪的问题,但“remote denied”意味着另一个 Git 告诉你的 Git:“不,我不会设置你要求的 ref 名称更改”。检查哈希 ID:提交的真实名称是它的哈希 ID。
    • 我没有看到任何问题,哈希看起来很神。不知道要检查什么...
    猜你喜欢
    • 2020-02-16
    • 2014-06-12
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多