2011-02-05 68 views
6

我们一直在办公室使用DIY SVN服务器已有大约一年的时间了。这是一个在家庭服务器上安装SVN的简单设置。我们使用龟SVN来访问它我只是希望我在几年前了解了一个版本控制系统..无论如何,访问服务器当然是在1Gbps局域网上的办公室完美的,但在外部它是可用的,但很差,受限于我们的ADSL线路上传速度为50k字节/秒。我想这可能会改善一天,'无限',但我们可能会等待。我可以在自己的办公室服务器上创建一个托管的SVN存储库'并行'吗?

我想有一个“并行”存储库托管,为此我意识到我应该支付,访问速度更快。这也会给我们一个额外的备份。我的回购刚刚低于40G,因此100G的限制可以。有没有办法做到这一点,并使两个镜像这样的提交(至少小)几乎立即可见?我已经在使用Svnbackup命令在我们的服务器上创建一个平行镜像,这样可以同时工作吗?

赞赏任何建议或替代方案。

TIA 布赖恩

回答

2

你想一个只读服务器,或读+写访问多台服务器?当您只需要一个只读镜像时,可以使用svnsync将您的办公室服务器复制到镜像服务器。

如果您想从不同的地方提交,请查看像hg + hgsubversion或git-svn这样的分布式工具,它们都可以用作svn的异步客户端。

+0

谢谢。请读写。我的主要用途是在家里(或不在办公室)。 – 2011-02-05 11:19:54

+1

@Brian因为svn的数据模型不允许这样做,所以你不能(很容易)设置一个多主svn服务器集群。您可以将中央服务器放置在互联网中,这会导致办公室性能下降。你需要决定你的表现是否可以接受。另一种方法是使用mercurial或git作为svn客户端,因为这些工具允许您脱机工作。但是DVCS方法仅在您不需要文件锁定或部分树检出等功能时才起作用。 – Rudi 2011-02-05 12:35:10

0

标准的Linux SVN服务器有钩子,允许您在事件上运行自己的脚本。您可以使用post-commit挂钩(只需在“hooks”目录中放置一个名为“post-commit”的脚本)。

现在,您可以发出整个存储库的热点副本,这个存储库相当容易设置(svnadmin hotcopy from to),并使用ssh等将存储库复制到互联网上的其他主机。你可以在两台机器上做到这一点,你很好。

缺点:

  • 如果你的仓库大,那么这需要大量的时间
  • 谨防有人提交一个存储库和别人同时其他库的可能性。这可能会腐败一切。你必须确保这不会发生,或者找到一种方式锁定您的存储库(像在复制过程中关闭SVN)
  • 您需要两台机器shell访问

您可以加快速度通过将存储库保存到本地文件并仅将差异传输到其他机器。

1

我认为你真的需要的是一个slave代理 - 这是一个用于只读访问的subversion服务器的副本,当你写(对它)时,提交会直接传递给master。当你阅读的不仅仅是写作,这提供了一个简单而有效的方式来实现你想要的。

网络上有很多tutorials,但他们都需要你使用http访问(而不是svnserve)运行颠覆。通过优秀的svnsync和post-commit钩子,奴隶始终保持最新状态。

相关问题