SVN合并合并额外的东西

时间:2008-08-06 22:30:26

标签: svn merge

我刚刚使用类似的东西进行了合并:

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  <myemail>
+
+   * 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  <myemail>
+
+   * 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中自动合并。

2 个答案:

答案 0 :(得分:2)

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

添加

2008-08-06  Mike Stone  <myemail>

* changed_file: Details.

2008-08-06  Someone Else  <their_email>

在进行合并时它无法找到Someone Else这一行,所以在投入冲突时为了上下文而烦恼。如果它是非冲突的合并,则只会应用您预期的更改。

答案 1 :(得分:0)

这里没有足够的信息。

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

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

svn log -r 67212

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

如果这不能回答您的问题,您是否可以发布更多详细信息?