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线,因此在放入冲突时将其作为上下文使用。如果这是不冲突的合并,则只会应用我们期望的更改。