我刚刚使用类似的东西进行了合并:
svn merge -r 67212:67213 https://my.svn.repository/trunk .
Run Code Online (Sandbox Code Playgroud)
我只有2个文件,其中一个是简单的ChangeLog.它不是仅仅合并我的ChangeLog更改,而是实际上将我的更改以及之前未在目标中的一些更改ChangeLog.我注意到当我执行--dry-run时发生冲突,所以我更新了ChangeLog,但仍然存在冲突(当我进行实际合并时,我看到了冲突).
然后我对我合并的文件进行了分析:
svn diff -r 67212:67213 ChangeLog
Run Code Online (Sandbox Code Playgroud)
我只看到了我所做的改变,所以我知道额外的改变并没有以某种方式进入.
这让我担心合并实际上并不只是采取我改变的东西,这是我所期望的.谁能解释发生了什么?
更新:响应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.
Run Code Online (Sandbox Code Playgroud)
合并之前的更改后,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.
Run Code Online (Sandbox Code Playgroud)
请注意,错误输入的条目不在我合并的文件中,但它不是我的更改之一,不应该合并.它很容易修复(删除不属于我的更改的额外行),但它仍然让我担心自动合并SVN.
这只发生在冲突时 - 基本上 svn 试图合并更改,但(粗略地说)将更改视为:
添加
2008-08-06 Mike Stone <myemail>
* changed_file: Details.
Run Code Online (Sandbox Code Playgroud)
前
2008-08-06 Someone Else <their_email>
Run Code Online (Sandbox Code Playgroud)
在进行合并时,它找不到“其他人”行,因此在放入冲突时将其放入上下文中。如果它是非冲突合并,则只会应用您期望的更改。