SVN合并了额外的东西

我只是使用类似的东西进行合并:

svn merge -r 67212:67213 https://my.svn.repository/trunk .

我只有2个文件,其中一个是简单的 ChangeLog 。它并没有合并我的 ChangeLog 更改,而是实际上将我的代码和以前不在目标代码ChangeLog 中的一些代码相提并论。我注意到当我执行--dry-run时发生了冲突,所以我更新了 ChangeLog ,并且仍然存在冲突(当我进行实际合并时,我看到冲突)。

然后,我后来对我正在合并的文件进行了分析:

svn diff -r 67212:67213 ChangeLog

而且我看到了我所做的更改,所以我知道额外的更改没有以某种方式进入。

这让我担心合并实际上并不只是采取我改变的事情,这是我所期望的。任何人都可以解释发生了什么?

更新:为了响应NilObject:

所以,我有2个文件改变,只有ChangeLog是相关的,其他合并罚款。当我去我的常规干线结帐时,我执行上面的diff命令并查看:

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67212)
+++ ChangeLog   (revision 67213)
@@ -1,3 +1,7 @@
+2008-08-06  Mike Stone  
+
+   * changed_file: Details.
+
 2008-08-06  Someone Else  <their_email>

    * theirChanges: Details.

合并之前的更改后,ChangeLog的差异如下所示:

Index: ChangeLog
===================================================================
--- ChangeLog   (revision 67215)
+++ ChangeLog   (working copy)
@@ -1,3 +1,14 @@
+<<<<<<< .working
+=======
+2008-08-06  Mike Stone  
+
+   * changed_file: Details.
+
+2008-08-06  Someone Else  <their_email>
+
+   * theirChanges: Details.
+
+>>>>>>> .merge-right.r67213
 2008-08-05  Someone Else2  <their2_email>

    * olderChange: Details.

请注意,错误地插入的条目不在我正在合并的文件中,但它不是我的更改之一,也不应该合并。这很容易解决(删除不属于我的更改的额外行),但它仍然让我担心在 SVN 中自动合并。

0

2 答案

这里没有足够的信息可以继续。

svn merge -r 67212:67213 https://my.svn.repository/trunk .

将合并存储库中文件夹/ trunk的修订版67212中更改的任何文件,并将它们合并到当前的工作目录中。如果你这样做:

svn log -r 67212

它显示哪些文件改变了?合并只会从第一个参数中提取更改,并将其应用于第二个参数。它不会在第一个参数中上传回服务器。

如果这不能回答你的问题,你能发布更多细节,究竟发生了什么?

0
额外

这只会发生在冲突 - 基本上svn试图合并变化,但(粗略地说)看到的变化为:

2008-08-06  Mike Stone  

* changed_file: Details.

之前

2008-08-06  Someone Else  <their_email>

在合并时无法找到Someone Else线路,因此在进行冲突时将其放在上下文中。如果这是一个非冲突的合并,则只会应用您所期望的更改。

0
额外
我理解为什么这是它的方式(当进行可视化/手动合并时,SVN必须为“他们”提供一个“Existing”基础文档,因此合并标准中的最新版本是它),但它确实讨厌! (至少对于新来的合并游戏,并惊叹樱桃和其他合并善的奇迹)
额外 作者 Tao,