合并移动的分支时如何避免树冲突?

时间:2010-10-25 16:46:13

标签: svn merge

我有一个如下所示的存储库:

/a/trunk/Library
/a/branches/FeatureX/Library
/b/trunk/Application
/b/branches/FeatureX/Application

我想重新排列这个,以便我将Application和Library文件夹放在一起:

/a/trunk/Library
/a/trunk/Application
/a/branches/FeatureX/Library
/a/branches/FeatureX/Application

我试图通过“svn copy” - “Application”文件夹来实现这一点。我面临的问题是,当我稍后尝试将“FeatureX”合并到“trunk”时,我会遇到树冲突,因为“应用程序”已添加到主干和分支中。

有更好的方法吗?

(顺便说一下,在复制“应用程序”之前我无法合并“FeatureX”,这只是一个测试,看看以后是否有可能......)

3 个答案:

答案 0 :(得分:0)

选项1:将来自trunk(aka / b / trunk / Application)的更改合并到/ a / branches / FeatureX。那应该在FeatureX分支中为您提供一个“原始”应用程序文件夹。然后执行delta合并/ / b / trunk / Application和/ b / branches / FeatureX / Application并将这些更改合并到/ a / branches / FeatureX / Application的工作副本。这应该允许您干净地合并/ a / branches / FeatureX到/ a / trunk。

选项2:不要将/ b / trunk /应用程序复制到/ a / trunk。而是svn copy / b / branches / FeatureX / Application to / a / branches / FeatureX。然后在准备好时将这些更改合并到/ a / trunk。如果/ b / trunk / Application中的更改不在/ b / branches / FeatureX / Application中,那么在执行svn复制到/a/branches/FeatureX之前,您需要重新建立该分支。

答案 1 :(得分:0)

选项3:根据您对上一个答案的评论,试试这个。将/ b / trunk / Application的SVN副本写入/ trunk / Application。将/ a / trunk从您创建的修订/ a / branches / FeatureX与包含Application目录的/ a / trunk的最新(超过可能的HEAD)合并,并将其应用于/ a的工作副本/支链/ FeatureX。提交这些更改。现在对/ a / branches / FeatureX / Application的工作副本执行/ b / branches / FeatureX / Application与/ a / branches / FeatureX / Application的另一个delta合并。将这些更改提交到存储库。您应该在/ a / trunk中进行/ b / trunk中的所有更改以及/ a / branches / FeatureX中/ b / branches / FeatureX中的所有更改并准备好合并回/ a / trunk当你准备好的时候。但是,您将从/ a / branches / FeatureX / Application中的/ b / branches / FeatureX / Application中删除所有提交的直接历史记录。您仍然可以使用svn log命令在/ a / branches中使用-g选项查看/ b / branches中的历史记录。

答案 2 :(得分:0)

将您的svn副本仅限于"应用程序。"从trunk创建一个新分支:featurex2。将featurex合并到featurex2。删除featurex它现在是一个有吸引力的nussaince。