Git 远程到远程

Git 远程到远程

我正在尝试弄清楚如何使用 git 来部署站点。

理论上有3个联系:

  1. [本地机器]我的本地编码机器
  2. [gitolite 服务器]使用 Gitolite 进行私人仓库托管
  3. [网络服务器]带有克隆的 VPS 托管--裸机

git push的代码来自[本地机器][gitolite 服务器]但是我如何推送我的代码[吉托莱特]致我的[网络服务器]

我想使这个自动化,所以我所要做的就是完成一个git push

最好的方法是设置一个钩子[gitolate 服务器]repo 来运行post-updatepost-receive脚本?但既然它是一个--barerepo,这是否意味着我需要git push[gitolite 服务器][网络服务器]的克隆 repo,git pull因为该--barerepo 没有工作树,所以我无法运行?

抱歉,提前致谢

西部数据

答案1

一个解决方案是:

  1. 在 gitolite 服务器上放置一个 post-receive 钩子,以自动推送到 Web 服务器
  2. 在 Web 服务器上放置一个 post-receive 钩子来部署代码(我通常使用 git archive 来实现这一点)

然后你推送到 gitolite,它会推送到 Web 服务器,然后部署你的新代码。完成!

另外,你可以将 Web 服务器上的 git repo 排除在外,并让 gitolite post-receive 钩子执行以下操作:

git archive --format=tar master | (ssh -i $KEYFILE user@webserver tar -x -C /dest/dir )

这将直接从 gitolite 钩子执行部署。这假设您可以以在 $KEYFILE 中拥有私有 ssh 密钥的“用户”身份通过 ssh 进入 Web 服务器,这可能会产生一些安全影响,因为任何可以读取 gitolite 钩子的人都可能能够获取这些值。

相关内容