合并两个SVN分支

5
我正在使用一个我不熟悉的svn设置,需要将一个分支中的新代码合并到另一个分支中。
由于主干文件夹中没有代码,所以我不知道是否应该将主干更新到代码并更新第二个分支,还是有一种方法可以只将一个分支更新到另一个分支。 我最后的手段将是手动更新代码。
你有什么好的建议吗?我正在通过终端完成所有操作。
2个回答

7

不要手动更新。当然,难度取决于这些分支有多接近。

您可以将一个分支的更改带到另一个分支上。假设您有两个名为branch1和branch2的分支,并且您想将branch2合并到branch1中。

假设您在branch1中(首先尝试干运行以查看是否会产生冲突)。

svn merge -r LAST_MERGED_REVISION:HEAD_REVISION --dry-run url/to/branches/branch2 .

svn merge -r LAST_MERGED_REVISION:HEAD_REVISION url/to/branches/branch2 .
svn status | egrep '^C|^.C' <---Manual intervention is required for conflicts
svn update
svn ci -m "Merge changes from branch2"

你可以关闭branch2

svn merge --reintegrate url/to/branches/branch2
svn update
svn ci -m "Merged branch2 to branch1"

如果分支非常分散,这可能会失败。


看起来这个会起作用,但是我在一些旧文件上遇到了树冲突,而我并不认为我对它们进行了更改。你有什么办法可以解决吗?这些文件只有非常微小的更改。 - wajiw
@wajiw:你试过干运行吗?如果只有一些文件需要进行轻微更改,那么这是个好消息。其中一些文件可以在自动合并后手动解决,并使用svn resolve命令解决它们。但是,在检查合并失败的原因之后才能这样做。 - pyfunc
没错,那个方法很好用。我使用了“svn resolve --accept working -R .”来解决冲突,因为它们本来就应该是有效的。谢谢! - wajiw
@wajiw:谢谢。 :) 这很好,但请确保您没有留下任何您想要的旧版本更改。手动解决 SVN 让您告诉它这是合并输出的最终解决方案。这就像一句格言。我们通常检查更改,在冲突的情况下仅手动合并它们,然后使用 svn resolve 解决合并冲突。 - pyfunc
没问题。已经检查过了,两个代码库都完美无误,新的合并正在通过回归测试成功运行。再次感谢! - wajiw

1
根据您使用的子版本发布,我建议使用 svnmerge或subversion内置的合并跟踪支持。无论如何,很可能从一个分支合并到另一个分支,而不使用主干(假设这些分支有一些相对较近的祖先)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接