2012-07-16 111 views
7

我有一个远程git存储库,具有较大的历史记录和较慢的连接通道。现在,一些本地用户在哪里,以及对新用户进行大规模提交或从头开始克隆后缓慢推/拉是大问题。我想创建它的本地镜像。本地更改必须提交到本地回购,并在后台与远程同步。我明白这个问题有需求,但我还没有找到任何解决方案(我不是远程回购的管理员,我只是试图简化本地工作)。Git本地镜像

+0

此前一篇文章将帮助您实现远程回购的镜像http://stackoverflow.com/questions/3959924/whats-the-difference-between-git-clone-mirror-and-git-clone-bare – 2012-07-16 10:35:18

+1

只有你的本地用户承诺慢速远程回购或其他人在其他地方工作吗? – 2012-07-16 10:35:46

+0

@honk是的。本地用户做了99%的工作,远程用户需要只读访问权限(或者非常罕见的提交)。我认为,远程本地后台同步的速度适合远程用户,我认为如果同步尚未结束,他们必须延迟。 – exbluesbreaker 2012-07-16 10:50:05

回答

3

由于您在评论中写道,慢速连接背后的人会完成大部分工作,所以我建议您将慢速远程站点设置为您将承担的本地回购的镜像。

首先进行远程慢的裸露克隆的本地服务器

$ git clone --bare git://slow/repo.git 

您当地的人们应该现在只承诺到克隆,而不是远程慢上。

然后设置一个cron作业或类似的本地回购推更改缓慢的网站与

$ git push origin --mirror 

使用--mirror你告诉混帐推所有分支和标签的东西。

+0

谢谢!我测试它为我的测试github回购和它的作品。真正的远程回购的完整克隆需要20个小时或更长时间,并且我在不久的将来使用这个解决方案。 – exbluesbreaker 2012-07-16 12:00:52

+0

我发现,这个解决方案将删除所有的变化,通过本地镜像进行远程回购而无需访问。有什么方法可以合并更改吗?承诺远程回购是罕见的事情,但我不想失去这样的提交。例如。第一次有些本地开发人员可能会继续直接承诺错误地直接进行远程回购。 – exbluesbreaker 2012-07-20 04:30:10

+0

@exbluesbreaker:您可以删除'--mirror',但是您需要指定要推送的分支,例如'git push origin master'。那么你可能也想添加'--tags'来推送推送标签。 '--mirror'会推送所有本地分支和标签,所以它会自动完成所有这些操作(但会覆盖远程更改)。 – 2012-07-20 07:38:57

1

你应该能够作出浅克隆与

git clone --depth=20 url-to-your-repo some-path 

这应该让你无法与大多数的历史打扰。