0

I have a semi-complex SVN setup that I need to configure. There is already a SVN repository that a third-party company is working on. We have to create a local repository that pulls and merges code from theirs, 3 virtual machines that are working copies of the whole production environment on which the devs are going to code on and commit to the local repo, and a production VM that only pulls from the local repo.

I need a way to make the local repository pull code from the remote one while providing a way to review changed files from our local commits, so remote changes don't overwrite our work.

SVN diagram

4

2 回答 2

1

这变得有点复杂了。我认为您不希望您的本地存储库是只读的,这使得将远程存储库同步到本地变得如此困难。大多数 svnsync 方案都依赖于两者的完全重复。

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

于 2013-07-05T11:47:35.437 回答
0

是时候转向 DVCS 了,真的。从 SVN 迁移到 Mercurial 并不令人头疼,并且以两个命令的成本解决了多个相关 repos(任意数量的 repos)的问题。

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

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