代码之家  ›  专栏  ›  技术社区  ›  Mike Stone

SVN合并合并额外内容

  •  11
  • Mike Stone  · 技术社区  · 16 年前

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

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

    我只有两个文件,其中一个很简单 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的diff如下所示:

    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 回复  |  直到 10 年前
        1
  •  2
  •   Cebjyre    16 年前

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

    添加

    2008-08-06  Mike Stone  <myemail>
    
    * changed_file: Details.
    

    之前

    2008-08-06  Someone Else  <their_email>
    

    在进行合并时,它找不到其他人的行,因此在进行冲突时,将该位放在上下文中。如果这是一个非冲突的合并,那么只有您期望的更改才会被应用。

        2
  •  0
  •   Konamiman    16 年前

    这里没有足够的信息。

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

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

    svn log -r 67212
    

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

    如果这不能回答你的问题,你能公布更多的细节来说明到底发生了什么吗?