如何设置本地目录以镜像远程git存储库?

时间:2012-05-30 02:54:22

标签: git mirror acceleration

情况如下。我在服务器A上有一个远程git存储库。另外,我必须在这个存储库中使用相同的源代码处理桌面B.由于访问服务器A的带宽有限,我想在桌面B上为存储库设置本地镜像。

现在,我已经通过

设置了镜像存储库
git clone --mirror https://repository-on-server-a /local/repo/path.git

我已经通过

测试了本地存储库
git clone file://localhost/local/repo/path.git

然后我修改了crontab来做

cd /local/repo/path git fetch -q

每隔5分钟同步一次。效果很好。

一开始,我正在考虑使用

git config --global url.file://localhost/local/repo/path.git.insteadOf https://repository-on-server-a

让git从本地目录而不是远程仓库获取所有对象。但是,它不起作用。

我的问题是

  1. 是否有一种简单的方法可以为远程git repo设置这样的本地镜像?
  2. 如何处理'git push'?由于insteadOf将每次推送到本地目录,我怎么能将我的所有更改推回到服务器A?
  3. 本地目录用于测试,但不是最终解决方案。我将有另一个桌面C以便稍后从桌面B获取源代码。另一位同事也会加入我的行列。这意味着我们希望将桌面B中的所有更改都为我们提供一些“中心”解决方案。

1 个答案:

答案 0 :(得分:5)

镜子是什么?您当地的git工作目录 是原始存储库的镜像;这就是DVCS的工作方式。我不明白你的文件系统上的第二个本地副本的好处。

修改 如果您想将其中一个repos用作本地网络收集点,以便在网络的其余部分和上游源之间进行更改,那么cron作业就可以了。只需在push --mirror完成fetch -a后执行{{1}}。

但是,我不打扰代理/别名设置。让大家克隆并明确地推送到本地镜像;这样,如果出于某种原因需要到达真正的原点,它就不会妨碍它。他们甚至可以将这两个URL设置为遥控器,默认情况下使用本地URL,并在需要时使用远程名称提供真实的URL。