Git / gitolite:设置gitolite后移动回收

时间:2011-08-15 00:14:25

标签: git gitolite

我正处于让Git和Gitolite工作的最后阶段。这是目前的情况:

enter image description here

2 个答案:

答案 0 :(得分:5)

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

(克隆的-s选项可确保/home/X/www/.git存储库不会复制/home/gitolite/repositories/X.git中的数据。最后你必须安装一个钩子。它已在this question中解释过,但您的情况稍微容易一些。由于数据存在于同一服务器上且位于同一用户下,因此您只需在包含以下内容的所有gitolite存储库中安装更新后挂钩:

#!/bin/sh
cd /home/X/www
git pull

如果您想将存储库和Web服务器移动到单独的服务器(我建议使用它,因为Web服务器,如果它面向外,应该在“非军事区”,而git服务器更好在你的另一个防火墙后面的内部网络中,你当然需要在另一个问题中描述的ssh触发器。

答案 1 :(得分:1)

我有点理解你在说什么,所以如果我没有基础,请发表评论,但你需要git clone你创建的回购转到您的计算机,然后您可以将.git目录复制到您的工作目录中。这应该保留遥控器。

这个过程应该是这样的:

git clone gitolite:a.git
# Message about copying an empty repo
cp -R a/.git/ /your/home/directory/a

复制后,您应该根据需要设置.gitignore并添加/提交,然后执行git add .git commit -m "initial commit"然后git push origin master之类的操作将填充空仓库。