svn合并他们 - 在处理有和没有冲突的文件时,完整结果是不合逻辑的

时间:2014-06-17 12:26:07

标签: svn version-control merge

合并选项theirs-full导致有时&#34;我的&#34;将与<#34;他们的&#34;被丢弃,有时不被丢弃。这令人困惑。

另一方面合并选项他们的冲突是明确的:它导致&#34;我的&#34;与他们的#34;他们的#34;总是保持。如果发生冲突&#34;他们的&#34;将被采取。

我不知道如何安全地使用它们。合乎逻辑且安全的方式是他们的冲突。

问题是更改他们的逻辑是否有意义,以便始终采取&#34;他们的&#34;内容,无论文件之间是否存在冲突?只要文件之间存在差异 - 采取&#34;他们的&#34;。

这将使他们更有用,并使其符合此选项的名称所暗示的内容。



这是一个更长的解释:

如果两个文件版本,一个来自主干,另一个来自分支,则存在冲突差异,那么svn与他们的完整选项合并将采用&#34;他们的完整版本&#34;文件。无论哪个版本更新,合并将始终采用&#34;他们的&#34;虽然&#34;我的&#34;更改,冲突与否,将被丢弃!

如果两个文件版本没有冲突差异,则svn与他们的完整选项合并将合并来自&#34;他们的&#34;进入&#34;我的&#34;文件。我会得到&#34;他们的#34;和&#34;我的&#34;。

这会导致意外的合并结果 - 恰好存在冲突的文件将等于&#34;他们的&#34;版本,甚至是非冲突的&#34;我的&#34;变化将会丢失。碰巧没有冲突的文件将合并其中的内容&#34;他们的#34;和&#34;我的&#34;。

所以让他们充分享受&#34;他们的&#34;总是,对于所有不同的文件。

1 个答案:

答案 0 :(得分:0)

所以你想要用源分支覆盖目标分支。那不是真正的合并。更像是副本,但副本不会丢失目标分支的历史记录。

我认为subversion的基本原理是:如果对源分支中的目标分支没有任何修改,它们不应该被合并覆盖,合并只是为了将源分支中的更改带到目标分支。它可能是一个与合并不同的动词。

我想你可以用这样的东西编写脚本:

svn checkout ^/branches/target
svn checkout ^/branches/source
copy -r source/src target/src
svn commit -m 'copy files in source to target' target