0

使用 Subversion,我有两个不同的主干,它们包含基本相同的内容,但其中一个的更新频率低于另一个。为简单起见,我们称它们为“旧主干”和“新主干”。

我想定期将“旧主干”中存在的所有内容替换为“新主干”中的所有内容。本质上,我想要的是“复制”所有内容并替换现有内容。

如果我尝试合并,我最终会在“新主干”中删除一些文件,作为两个主干之间的实用合并。这不是我想要的。

以前我习惯于手动复制和替换每个子文件夹,首先删除旧版本中不需要的文件。这是一个艰苦的过程,应该用 Clearcase 中的“覆盖合并”来代替。

有没有办法在不手动浏览每个文件夹的情况下完成此操作?

编辑:这不是一个理想的设置,但由于我无法控制的情况,它就是这样。我仍然想知道我的核心问题的答案:是否可以创建覆盖合并?

4

2 回答 2

0

答案是否定的,Subversion (1.6) 不提供任何覆盖合并功能。我还假设您无法更改配置管理程序。如果可以,那么您应该按照推荐的做法使用 Subversion。发布分支是一件好事(TM)。

但是,我有两个疯狂的想法给你:

  1. 如果您不需要保留目标中继的更改或合并历史记录,只需将其删除并将源中继复制到其位置即可。这就像有一个发布分支,但你一直在重新创建它。我不认为这是有价值的。

  2. 您可以尝试仅滥用记录并重新集成功能。首先,您将首先将目标干线记录(而不是实际合并)回源干线。这将使 Subversion 认为您已成功合并分支并且它是最新的。之后,您会定期告诉 Subversion 将源主干重新集成到目标主干中。由于重新整合只查看每个分支的尖端,这可能会起作用。如果您尝试,请告诉我们结果!

对于第二个想法,请参考 Subversion 书中的 Advanced Merging 部分。

于 2013-01-11T16:19:29.690 回答
0

SVN 是一个集中的版本控制系统。你不应该有两个树干,这不是它的用途。您应该使用分支和标签。您的旧树干将是一个分支,然后您将树干合并到其中。如果您想要多个存储库并在它们之间进行同步,您应该使用分布式版本控制系统,例如 git。

于 2012-04-19T13:54:42.977 回答