同步SVN服务器 - 高级设置

时间:2013-07-05 11:17:18

标签: svn

我需要配置一个半复杂的SVN设置。已有一个第三方公司正在开发的SVN存储库。我们必须创建一个本地存储库,用于提取和合并来自他们的代码,3个虚拟机,这些虚拟机是开发人员将要编码的整个生产环境的工作副本并提交到本地存储库,以及仅提取的生产VM来自当地的回购。

我需要一种方法来使本地存储库从远程存储库中提取代码,同时提供一种从本地提交中查看已更改文件的方法,因此远程更改不会覆盖我们的工作。

SVN diagram

2 个答案:

答案 0 :(得分:1)

这有点复杂。我认为你不希望你的本地仓库是只读的,这使你的远程仓库同步到你的本地非常困难。大多数svnsync方案取决于两者是彼此完全相同的重复。

您需要跟踪远程存储库中的上一次同步修订,并使用svnrdump dump从远程存储库中提取未同步事务的转储。我没有这样做,但看起来并不太糟糕。但是,您必须关闭本地存储库才能提供远程修订,并且必须确保本地和远程存储在两个不同的URL上。

答案 1 :(得分:0)

现在是转向DVCS的时候了。从SVN迁移到Mercurial并不是一件令人头痛的问题,并且解决了两个命令的成本相关的多重相关回购(任何回购量)的问题。

但是,如果你仍然喜欢SVN-way(在这种情况下不好的方式):

  • 如果可以从LOCAL访问MASTER,您可以使用带有MASTER URL的svn命令并获得结果)您可以构建和使用“Vendor Branch”工作流程
    • 使用svn:externals
    • 将MASTER树(/ trunk?)安装到某个节点(LOCAL的主干外部)的LOCAL存储库中
    • 本地开发发生在主干中,像往常一样
    • MASTER的更改必须使用明显的合并
    • 不时整合到主干中
  • 如果无法从LOCAL到达MASTER,但仍可以找到可与两个存储库通信的svn-client(笔记本电脑上的svn)
    • LOCAL 必须从MASTER转储创建在加载阶段保存MASTER的UUID
    • LOCAL的开发必须不在trunk,而是任何其他自定义分支
    • 客户必须a)从MASTER结账|更新自己的WC b)将WC重新定位到LOCAL c)将更改提交到LOCAL(可能会折叠源修订版)
    • 必须将LOCAL主干的MASTER更改合并到开发分支