使用svn“覆盖合并” - 它甚至可能吗?

时间:2012-04-19 13:33:29

标签: svn merge

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

我希望将“旧主干”中存在的所有替换为“new trunk”中的所有。从本质上讲,我想要的是“复制”所有内容并替换现有内容。

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

  3. 关于第二个想法,请参阅Subversion书中的高级合并部分。