13

我刚刚使用以下方法进行了合并:

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.

4

2 回答 2

2

这只发生在冲突中 - 基本上 svn 试图合并更改,但(粗略地说)将更改视为:

添加

2008-08-06  Mike Stone  <myemail>

* changed_file: Details.

2008-08-06  Someone Else  <their_email>

并且在进行合并时找不到“其他人”行,因此在放入冲突时将其放入上下文中。如果是非冲突合并,则只会应用您预期的更改。

于 2008-08-17T17:17:46.193 回答
0

这里没有足够的信息继续下去。

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

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

svn log -r 67212

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

如果这不能回答您的问题,您能否发布更多关于到底发生了什么的详细信息?

于 2008-08-06T23:12:35.083 回答