13

似乎是一个简单的问题:

  • 我的防火墙内有一个 SVN 存储库。
  • 我在防火墙外有一个 SVN 存储库。
  • 我在防火墙内外都有用户。(没有VPN不是一个选项:(那太容易了)
  • 防火墙内的机器可以与外部 SVN 服务器通信。但不是相反。
  • 外部的 SVN 是暂时的——主要的 repo 总是在里面。

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

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

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

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

帮助!:) :)

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

4

8 回答 8

6

我推荐SVKgit-svn

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

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

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

这是 SVK wiki 上的扩展操作指南:UsingSVKAsARepositoryMirroringSystem

于 2008-09-29T13:55:44.080 回答
3

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

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

如果我缺少您的部分要求,请告诉我。

另一个想法……如果您同时拥有内部和外部 SVN 实例……有什么办法可以阻止它们同时出于不同的目的给出相同的变更列表 ID?如果您正在寻求去中心化的解决方案,您应该关注GIT而不是 SVN。

于 2008-09-29T13:26:39.983 回答
3

VisualSVN 服务器企业版的功能之一是多​​站点存储库复制,它完全符合您的要求。

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

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

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

多站点 Apache SVN 存储库的 VDFS 配置界面

于 2015-02-11T16:05:28.143 回答
1

嗯……我认为,保持两个 repos 彼此同步并非易事。它基本上涉及将 SVN 转换为 Mercurial 或 Git。

于 2008-09-29T13:38:38.693 回答
0

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

于 2011-08-03T19:03:34.323 回答
-1

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

于 2008-09-29T13:27:43.710 回答
-1

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

Subversion MultiSite 利用 WANdisco 独特的复制技术来立即同步通过广域网 (WAN) 连接的 Subversion 存储库。每个位置的用户都可以体验到局域网 (LAN) 读写操作的速度性能。Subversion MultiSite 还提供连续热备份和自我修复功能,可自动进行灾难恢复,从而几乎消除了停机时间。

于 2009-09-24T19:44:59.410 回答
-1

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

于 2012-09-16T07:17:36.517 回答