2012-05-30 58 views
1

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

,我已经

git clone file://localhost/local/repo/path.git 

建立镜像版本库由

git clone --mirror https://repository-on-server-a /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. 有没有一种简单的方法来建立这样的本地镜像的远程混帐回购协议?
  2. 如何处理'git push'?由于insteadOf将获得每一次进入本地目录,我怎么能把所有的变化推回到服务器A?

本地目录是一个考验,但不是最终的解决方案。我将有另一个Desktop C稍后从桌面B获取源代码。另一位同事也会加入我。这意味着我们希望将桌面B的所有更改都为我们提供一些“中心”解决方案。

回答

5

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

编辑 如果你想用你的回购协议作为本地网络采集点之一为您的网络的其余部分和上游原点之间的变化,那么cron作业是好的。只要它在fetch -a之后执行push --mirror

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

+0

好像重新发明轮子。 –

+0

同意。这点没有任何意义。 – wadesworld

+0

本地目录用于测试。我在描述中没有提到的最后一步是我将使用其他计算机Desktop C从桌面B获取源代码。“本地目录”用于测试此解决方案。 – jcadam

相关问题