如何使用Subversion进行master-master复制?

时间:2008-09-29 13:21:36

标签: svn replication git-svn

似乎是一个简单的问题:

  • 我的防火墙里面有一个SVN repo。
  • 我的防火墙外有一个SVN回购。
  • 我有防火墙内外的用户。 (没有VPN不是一个选项:(这太容易了)
  • 防火墙内部的机器可以与外部SVN服务器通信。但不是其他方式。
  • 外面的SVN是暂时的 - 主要的回购将永远在里面。

我想以某种方式(从内部,最有可能)在一个中进行所有更改,并将它们应用于另一个。反之亦然。听起来很简单,我认为喜欢GIT可以做到这一点,但我们正在使用SVN。

有人这样做过吗?我不介意它是一个手动过程 - 只有几个外部人员,他们不需要每天更新,每天两到三次。

我相信apache.org会这样做,但是我找不到关于他们如何做到这一点的文档。有一些产品在那里做(好吧,一个),但我很想知道是否有人有一个漂亮,干净的方式来做它没有它们。 svnsync执行此操作,仅在一个方向(主从)

很高兴让它在Windows,Linux或Mac上运行,因为我们拥有它们。 Windows和Mac首选。

帮助! :):)

[更新]经过12个月的捣乱(最后不需要这个),在我看来,正确答案是正确的。使用git - 有一个从SVN-A拉出的repo,然后推送到新的git repo,然后从那里推送到SVN-B。应该工作:)

8 个答案:

答案 0 :(得分:6)

我建议SVKgit-svn

这两个版本都允许您创建svn存储库的外部镜像,并允许外部开发人员直接向外部镜像提交。然后,您可以将此外部镜像中的更改拉入并推送到内部主仓库。

git-svn会(我认为)要求外部开发人员使用git。我更喜欢它,但我不愿意把它推到别人身上。

但是,SVK允许外部开发人员继续使用svn。由于内部存储库只能在内部访问,因此内部帐户或用户必须处理定期同步(cron作业可能会起作用)。

这是SVK维基上的扩展指南:UsingSVKAsARepositoryMirroringSystem

答案 1 :(得分:3)

简单通常是最好的方式,听起来你已经有了一个简单的解决方案:在防火墙外使用SVN存储库。

你已经说过防火墙内的机器可以到达它,显然外面的机器可以到达它......所以这就是每个人,那么你有什么理由对防火墙内的第二个SVN存储库有什么理由呢?如果它只是一个备用,那么只需备份外面的那个。

如果我遗漏了您的部分要求,请告诉我。

另一个想法......如果你有内部和外部的SVN实例......为了不同的目的,什么阻止它们同时给出相同的变更列表ID?如果您正在寻求一种分散式解决方案,您应该关注GIT而不是SVN。

答案 2 :(得分:3)

VisualSVN Server企业版的一个功能是多站点存储库复制,它可以完全满足您的需求。

该功能基于VisualSVN分布式文件系统(VDFS)技术,该技术旨在实现跨地理分布式站点的透明Subversion存储库复制。 VDFS的一些显着特征:

  • 所有分布式VDFS Subversion存储库都是可写的,
  • VDFS支持透明双向数据复制,
  • VDFS支持复制授权规则和高级身份验证机制,例如集成Windows身份验证(NTLM / Negotiate)和安全SSL / TLS加密。
  • 所有VDFS存储库都包含相同的数据集
  • 使用VDFS通过WAN进行存储库复制比基于直写代理的复制快10倍,
  • VDFS配置通过图形界面完成,无需任何复杂步骤。

值得注意的是VDFS遵循经典的主从复制模型,该模型与 master-master 复制模型相比具有明显的优势,因为它是更适合使用FSFS fs-type后端复制Subversion存储库。 VDFS技术比SVN的主 - 主复制解决方案更可靠。

VDFS configuration interface for multisite Apache SVN repos

答案 3 :(得分:1)

嗯......我认为,保持两个回购同步是非常重要的。这将涉及基本上将SVN变为Mercurial或Git。

答案 4 :(得分:0)

最无缝和可扩展的解决方案是使用Subversion书中描述的svnsync进行主/从复制:http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.extra.writethruproxy

答案 5 :(得分:-1)

您可以尝试的一件事是在文件级复制repo。我正在使用FolderShare(http://www.foldershare.com - 在Windows和Mac上运行)来实现类似的方案,尽管我只是为了备份而复制它,并且没有尝试使用SVN连接到副本。

答案 6 :(得分:-1)

http://wandisco.com/subversion/multisite/

  

Subversion MultiSite利用   WANdisco的独特复制   技术立即同步   Subversion存储库连接在一起   广域网(WAN)。用户在   每个地方都有当地体验   网络(LAN)速度性能   读写操作。   Subversion MultiSite还提供   持续热备份和自我修复   自动化灾难的功能   恢复,以便停机   几乎被淘汰了。

答案 7 :(得分:-1)

如果您正在使用svnsync搜索有关主/从复制的分步说明,请关注http://lasanthals.blogspot.com/2012/09/main-steps-of-configuring-svn_4.html