SVN合并合并了多余的东西

时间:2020-03-05 18:38:10  来源:igfitidea点击:

我只是使用以下内容进行了合并:

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中合并。

解决方案

回答

此处没有足够的信息。

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

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

svn log -r 67212

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

如果这不能回答问题,我们能否发布更多有关正在发生的事情的详细信息?

回答

这仅在基本上svn试图合并更改的冲突中发生,但是(大致而言)将更改视为:

添加

2008-08-06  Mike Stone  <myemail>

* changed_file: Details.

2008-08-06  Someone Else  <their_email>

而且在合并时无法找到Someone Else线,因此在放入冲突时将其作为上下文使用。如果这是不冲突的合并,则只会应用我们期望的更改。