代码之家  ›  专栏  ›  技术社区  ›  brad

Git钩子及其工作原理

  •  8
  • brad  · 技术社区  · 15 年前

    所以我想让哈德森用一个接收后挂钩来建造。在我的本地git repo中,我将post-receive.sample设置为just post receive,chmod 755并添加到行中:

    /usr/bin/curl -u user:secret http://localhost:8080/hudson/job/MyJob/build?token=secondsecret
    

    如果我强制构建,哈德逊会更新代码,但我不明白的是,这个repo中的钩子没有.sample在它们之后,就像在本地一样,哈德逊repo中的post receive没有上面的代码行。这里发生了什么?钩子是如何集成到整个Git过程中的?我需要在远程回购上更换这个钩子吗?我本以为这足够在本地完成并推动,所以任何人从回购中获得新的钩子。我不明白另一个用户的回购协议如何有不同的钩子。

    2 回复  |  直到 15 年前
        1
  •  16
  •   ndim    15 年前

    你基本上有两个选择:

    1. 放置 post-receive 钩住 服务器 让服务器运行curl。
    2. 放置一个 post-commit 钩住你的本地回购,让你的本地盒子运行卷曲。

    因为您的构建作业可能会从 服务器 ,仅选项1。有道理。在案例2中,构建作业可能需要从本地框中获取代码,这可能不是您想要的。

    你不能把钩子放在 服务器 使用 git push . 您(或具有适当权限的人)需要手动登录 服务器 以及在本地修改hook脚本文件。

        2
  •  11
  •   Stefan Näwe    15 年前

    钩子不是通过存储库共享的。你需要在远端安装钩子。