首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git/ gitolite :设置gitolite后移动repos

Git/ gitolite :设置gitolite后移动repos
EN

Stack Overflow用户
提问于 2011-08-15 08:14:25
回答 2查看 5K关注 0票数 6

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-15 21:10:07

在Gitolite管理下的存储库没有工作副本。因此,您需要做的是使用工作副本创建另一个存储库,提交数据并将其推送到gitolite管理的存储库。最简单的方法是直接在服务器上执行此操作。因此,在每个www目录下,执行以下操作:

代码语言:javascript
复制
cd /home/X/www
git init
git remote add origin /home/gitolite/repositories/X.git
git add .
git commit
git push origin

现在您有了存储库中的数据,这是最简单的部分。我假设同一个用户帐户可以访问gitolite存储库和服务器数据(正如您在聊天中所说的那样),这使得问题变得非常容易。

现在存储库没有备用数据,因此您有两个数据副本。要删除它们,最简单的方法可能是对每个站点执行以下操作:

代码语言:javascript
复制
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存储库中安装更新后钩子:

代码语言:javascript
复制
#!/bin/sh
cd /home/X/www
git pull

如果你想把存储库和web服务器移到不同的服务器上(我推荐这样做,因为如果web服务器是朝外的,应该在“隔离区”,而git服务器在另一条防火墙后面的内部网络中更好),你当然需要ssh触发器,在另一个问题中描述。

票数 5
EN

Stack Overflow用户

发布于 2011-08-15 08:41:34

我有点理解你在说什么,所以如果我说错了,请留下评论,但你需要将你创建的空repos git clone到你的机器上,然后你可以把.git目录复制到你的工作目录中。这应该会保留远程数据库。

这个过程应该是这样的:

代码语言:javascript
复制
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,它将填充空的存储库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7060636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档