我正处于让 Git 和 Gitolite 工作的最后阶段。这是目前的情况:
Gitolite 管理下的存储库没有工作副本。因此,您要做的就是创建另一个包含工作副本的存储库,提交数据并将它们推送到 gitolite 管理的存储库。最简单的方法是直接在服务器上执行此操作。因此,在每个www
目录,执行以下操作:
cd /home/X/www
git init
git remote add origin /home/gitolite/repositories/X.git
git add .
git commit
git push origin
现在您在存储库中拥有了数据,这是最简单的部分。我假设同一个用户帐户可以访问 gitolite 存储库和服务器数据(正如您在聊天中所说),这使得问题变得更加容易。
现在存储库没有替代项,因此您有两个数据副本。要删除它们,最简单的方法可能是对每个站点执行以下操作:
cd /home/X
git clone -s /home/gitolite/repositories/X.git www.new
mv www www.old
mv www.new www
rm -r www.old
(the -s
克隆选项可确保/home/X/www/.git
存储库不会从中复制数据/home/gitolite/repositories/X.git
)。最后你必须安装一个钩子。已经解释过了这个问题 https://stackoverflow.com/questions/5753346/git-automatically-push-to-dev-and-production-from-central-repository-depending-on/5753423,但你的情况稍微容易一些。由于数据位于同一服务器和同一用户下,因此您可以简单地在所有包含以下内容的 gitolite 存储库中安装更新后挂钩:
#!/bin/sh
cd /home/X/www
git pull
如果您想将存储库和 Web 服务器移动到单独的服务器(我建议这样做,因为 Web 服务器如果面朝外,则应该位于“非军事区”,而 git 服务器最好位于您的内部)网络位于另一道防火墙后面),您当然需要其他问题中描述的 ssh 触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)