首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >冲突后svn合并左、右和工作文件的区别

冲突后svn合并左、右和工作文件的区别
EN

Stack Overflow用户
提问于 2011-10-07 02:59:13
回答 5查看 27.5K关注 0票数 50

当执行从我的开发团队的主干到分支的“svn合并”时,我们偶尔会遇到合并冲突,这会产生带有后缀名称的文件:*.merge-right.r5004*.merge-left.r4521*.working。我搜索了所有Subversion的文档,但它们的解释并没有太多用处。我收集了以下信息:

  • *.merge-right.r5004 =主干版本
  • *.merge-left.r4521 =?
  • *.working =分支版本

我好像搞不懂merge-left.r4521是什么。如果答案是它只是分支中文件的一个较旧版本,那么为什么是4521呢?

EN

回答 5

Stack Overflow用户

发布于 2016-05-31 16:40:45

假设有两个分支,分支A中的最后一个(HEAD)修订是9,而分支B中的修订是6

当运行cd B; svn merge -r 5:8 ^/braches/A时,svn将尝试在58之间应用增量,将增量从分支A应用到分支B之上。

(换句话说,变更集78将应用于B)

代码语言:javascript
复制
common
ancestor      left     right
(1)━━┱───(3)──(5)──(7)──(8)──(9)  # branch A
     ┃         └┄┄┄┄┬┄┄┄┄┘
     ┃              ↓
     ┗━(2)━━(4)━━(6)              # branch B
               working

如果增量应用得很干净,一切都是好的。

假设在更改集3中修改了一些行,并且在更改集4中以不同的方式修改了相同的源行。

如果增量(58→)没有触及这些线,那么一切仍然是好的。

如果delta (5 svn 8)还修改了34所做的操作,则无法自动合并更改,并且svn会使文件处于冲突状态:

  • file -带有(workingleftright) delimited
  • file.working的文件-分支B@6
  • file.merge-left中文件的状态-分支A@5
  • file.merge-right中文件的状态-分支A@8

中文件的状态

如果您手动编辑这样的文件,您有几个选择-保留working (您的版本)、保留right (它们的版本;另一个分支版本)或手动合并更改。

Left本身没有任何用处,在文件中保留left (他们的旧版本)是没有意义的。

然而,它对工具很有用。leftright→是变更集。

例如,当您看到以下内容时:

代码语言:javascript
复制
<<<<<<< .working

    life_universe_and_everything = 13

||||||| .merge-left.r5

    life_universe_and_everything = "13"

=======

    life_universe_and_everything = "42"

>>>>>>> .merge-right.r8

在分支A中,"13" (str)被更改为"42"

分支B13 (int)。

当您手动协调此冲突时,可能需要42 (int)。

票数 75
EN

Stack Overflow用户

发布于 2012-10-01 21:00:27

-left.r4521是在创建右分支(目标)之前,在左分支(即源)中对该文件所做的最新更改。

换句话说,merge-left.r4521它是要合并的文件的第一个版本

with merge-right.r5004 (目标分支的最新版本)

以为例,假设您想要左右合并分支,如下所示:

代码语言:javascript
复制
Left   1   2   f.3   4   f.5   6    7    f.9    11 

Right                                  8    f.10    f.12   13


Right is created in 8 ( is a copy of 7 )

file 'f' has been modified in 3, 5, 9, 10, 12

The merge of file 'f' will occur between 7 and 13 because

7 is the latest version of file f in Left before Right was created

13 is the latest version of Right
票数 14
EN

Stack Overflow用户

发布于 2012-03-02 04:38:36

  • 'file.py.merge-left.rxxx`显示合并结果位于冲突的左侧
  • 'file.py.merge-right.ryyy`显示位于冲突右侧的合并结果
  • 'file.py.working`显示未更改的工作拷贝
  • ‘file.py`显示SVNs尝试合并两个

这个问题类似于stackoverflow.com/questions/1673658/svnmerge-workflow,但这个问题更具体地说明了冲突文件的内容。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7679113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档