gpt4 book ai didi

linux - git post-receive 钩子(Hook),它通过 ssh 和 git pulls 连接到远程

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:23 25 4
gpt4 key购买 nike

只是想写我的第一个 git hook。我有一个远程源,当我推送到它时,我想要一个接收后 Hook 来触发,它将 ssh 到我的实时服务器和 git pull。这可以做到吗?这是一个好的方法吗?

好的,我已经触发了钩子(Hook),实时服务器正在执行 git pull 但它说它已经是最新的了?有什么想法吗?

最佳答案

是的,这是可以做到的,是的,在我看来,这是很好的做法。这是我们的用例:我在一个小型开发团队工作,该团队为不同的人群维护几个站点。

每个站点都有多个环境(测试版,这是一个供所有开发人员使用的沙盒,暂存区,这是我们在上线前向内容所有者展示更改的地方,培训是我们的培训人员用来培训新内容经理和直播的地方,每个人都去那里消费内容)。

我们通过基于分支名称的接收后 Hook 来控制对所有这些环境的部署。我们可能有一个没有部署到任何地方的“hot fix”分支,但是当我们将它与“beta”分支 merge 时,它会自动部署到 beta 服务器,这样我们就可以测试我们的代码如何交互与其他开发人员的代码。

有很多方法可以做到这一点,我们所做的是设置您的 ssh key ,以便 git 服务器可以通过 ssh 进入您的网络服务器并执行 git pull。这意味着你必须将 git@gitserver 的公钥添加到你的 git@webserver authorized_keys 文件中,反之亦然,然后,在 post-receive Hook 上你解析出分支并为它写一个“case”语句,如下所示:

    read line
echo "$line" | . /usr/share/doc/git-core/contrib/hooks/post-receive-email
BRANCH=`echo $line | sed 's/.*\///g'`
case $BRANCH in
"beta" )
ssh git@beta "cd /var/www/your-web-folder-here; git pull"
;;
esac

希望对您有所帮助。

关于linux - git post-receive 钩子(Hook),它通过 ssh 和 git pulls 连接到远程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com