情况如下。我在服务器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从本地目录而不是远程仓库获取所有对象。但是,它不起作用。
我的问题是
本地目录用于测试,但不是最终解决方案。我将有另一个桌面C以便稍后从桌面B获取源代码。另一位同事也会加入我的行列。这意味着我们希望将桌面B中的所有更改都为我们提供一些“中心”解决方案。
答案 0 :(得分:5)
镜子是什么?您当地的git工作目录 是原始存储库的镜像;这就是DVCS的工作方式。我不明白你的文件系统上的第二个本地副本的好处。
修改强>
如果您想将其中一个repos用作本地网络收集点,以便在网络的其余部分和上游源之间进行更改,那么cron作业就可以了。只需在push --mirror
完成fetch -a
后执行{{1}}。
但是,我不打扰代理/别名设置。让大家克隆并明确地推送到本地镜像;这样,如果出于某种原因需要到达真正的原点,它就不会妨碍它。他们甚至可以将这两个URL设置为遥控器,默认情况下使用本地URL,并在需要时使用远程名称提供真实的URL。