Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 如何在没有冲突的情况下进行subversion合并_Svn - Fatal编程技术网

Svn 如何在没有冲突的情况下进行subversion合并

Svn 如何在没有冲突的情况下进行subversion合并,svn,Svn,使用svn 1.8,我无法找出与cherrypicking进行重新整合合并的最佳方式(即,我不想将所有修订合并回主干)。只要合并所有修订,一切都会顺利进行,如: svn merge ^/branches/mybranch 现在我的分支中有一个修订版不应该合并回主干,假设我的svn“history”是这样的: rev 20: reintegrated branch => trunk rev 21: added 'donotmergetotrunk.txt' to branch 'mybra

使用svn 1.8,我无法找出与cherrypicking进行重新整合合并的最佳方式(即,我不想将所有修订合并回主干)。只要合并所有修订,一切都会顺利进行,如:

svn merge ^/branches/mybranch
现在我的分支中有一个修订版不应该合并回主干,假设我的svn“history”是这样的:

rev 20: reintegrated branch => trunk
rev 21: added 'donotmergetotrunk.txt' to branch 'mybranch'
rev 22: added 'monkey.txt' to trunk
rev 23: added 'dog.txt' to branch 'mybranch'
rev 24: merged trunk => mybranch, monkey.txt added to branch
现在我想重新整合除修订版21之外的所有内容,从mybranch到主干,但无论我做什么尝试,都会遇到冲突

Tree conflict on 'monkey.txt'
    local file obstruction, incoming file add upon merge
我试过这样的东西:

svn merge -r 21:24 ^/branches/mybranch
svn merge -r 1:20 -r 21:24 ^/branches/mybranch
当然,冲突可以手动解决,但在现实生活中,我会以这种方式遇到很多冲突,解决它们会变得相当乏味

如何执行此合并而不产生冲突?

在简单的情况下,您必须合并
-r 23:24


在更常见的情况下,您可以在SRC中以
-rN:M
的形式使用所需的最小范围,并使用变更集的反向合并排除该范围内不需要的修订:
-c-R
当您将分支合并到主干时,您应该跳过以前从主干到分支的同步合并

否则,subversion将尝试将它们合并回主干,这将导致冲突:

在rev.22中,monkey.txt被添加到主干中
版次22包含在分支中,作为版次。24
然后,当您尝试将分支合并到主干时,Subversion尝试将rev.24应用到主干并添加monkey.txt。但是它已经被添加了!冲突

此外,您还可以尝试使用for阻止某些修订合并到主干中。但在这种情况下,当您阻止所有不需要的修订并在trunk上执行时

svn merge ^/branches/mybranch

Subversion可以作为重新整合合并(应用所有差异)进行威胁。我不确定Subversion 1.8是如何决定这是同步还是重新整合合并,最好使用它。

非常感谢您的回答<代码>svn合并-r 23:24只会将修订版24(前向合并)合并回主干。我得到了相同的树冲突这样做
svn merge-r20:24-c-21也给出了树冲突。似乎每当我使用一个范围时,我就会得到一个树冲突。使用svn 1.8.13顺便说一句。现在我注意到,使用反向合并
svn merge-r 20:24-c-21实际上产生了正确的结果(只需将树冲突标记为已解决)。添加了dog.txt,合并信息包含预期的
/branchs/mybranch:3-19,22-24
。但仍然无法解释树冲突。。。我不想大声说出来。。。。可能是个虫子吧?:)顺便说一句,跳过从主干到分支的同步合并是不明智的。假设您修复了同步合并中的一些“常规”冲突。如果在执行重新整合合并时跳过同步合并,svn将无法知道您已经解决了冲突,并且它将再次给您相同的冲突。请记住,如果您只是重新整合所有内容,如
svn merge^/branchs/mybranch
,甚至不包括同步合并,您不会遇到任何奇怪的问题。我将阅读你提供的链接(希望他们发布红皮书的更新版1.8)。谢谢。“请记住,如果您只是重新整合svn merge^/branchs/mybranch之类的内容,您不会遇到任何奇怪的问题,甚至不会包括同步合并。”这是因为subversion 1.8猜测这应该是“重新整合”合并(以及