看起来是一个简单的问题:

  • 我的防火墙内有一个 SVN 存储库。
  • 我在防火墙之外有一个 SVN 存储库。
  • 我在防火墙内部和外部都有用户。(没有VPN不是一个选择:(那太简单了)
  • 防火墙内的计算机可以与外部 SVN 服务器通信。但反之则不然。
  • 外部 SVN 是暂时的——主仓库将始终位于内部。

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

有人做过这个吗?我不介意这是一个手动过程——只有几个外部人员,而且他们不需要实时更新,每天更新两到三次就可以了。

我相信 apache.org 可以做到这一点,但我找不到关于他们如何做到这一点的文档。有几种产品可以做到这一点(好吧,一个),但我很想知道是否有人有一种好的、干净的方法来做到这一点,而无需它们。svnsync 就是这样做的,只是在一个方向(主从)

很高兴让它在 Windows、Linux 或 Mac 上运行,因为我们拥有所有这些。不过,Windows 和 Mac 是首选。

帮助!:) :)

[更新] 经过 12 个月的折腾(最终不需要这个),在我看来,正确的答案是正确的。使用 git - 有一个从 SVN-A 拉取的存储库,然后推送到一个新的 git 存储库,然后从那里推送到 SVN-B。应该管用 :)

有帮助吗?

解决方案

我会推荐 SVK 或者 git-svn.

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

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

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

以下是 SVK wiki 上的扩展操作指南: 使用SVKAsAR存储库镜像系统

其他提示

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

您已经说过防火墙内部的计算机可以访问它,显然外部的计算机也可以访问它......这就是所有人,那么您有什么理由在防火墙内建立第二个 SVN 存储库呢?如果只是作为备份,那就备份外面的就可以了。

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

另一个想法...如果您有内部和外部 SVN 实例...如何阻止他们出于不同的目的同时给出相同的变更列表 ID?如果您正在寻求去中心化的解决方案,您应该寻求 胃肠道 而不是SVN。

VisualSVN Server 企业版的功能之一是 多站点存储库复制 这正是您正在寻找的。

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

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

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

VDFS configuration interface for multisite Apache SVN repos

嗯...我认为保持两个存储库彼此同步并非易事。它基本上涉及将 SVN 转变为 Mercurial 或 Git。

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

您可以尝试的一件事是在文件级别复制存储库。我正在使用文件夹共享(http://www.foldershare.com - 在 Windows 和 Mac 上运行)类似的情况,尽管我复制它只是为了备份目的,并且没有尝试使用 SVN 连接到副本。

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

Subversion多站点利用Wandisco独特的复制技术立即同步,将颠覆存储库同步在广域网(WAN)上连接。每个位置的用户都会体验读写和写操作的局部网络(LAN)速度性能。Subversion Multimite还提供了自动化灾难恢复的连续热备份和自我修复功能,因此实际上消除了停机时间。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top