2010-10-25 119 views
1

我有一个仓库,看起来像这样:合并移动的分支时如何避免树冲突?

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

我要重新排列,这样我有应用程序和库文件夹旁对方:

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

我试图实现这一目标只需“svn copy” - “应用程序”文件夹。我面临的问题是,当我尝试在稍后将“FeatureX”合并到“trunk”中时,由于“应用程序”已添加到主干和分支中,所以我得到树冲突。

有没有更好的方法来做到这一点?

(顺便说一句,我不能合并“FeatureX” 之前复制“应用程序”,这仅仅是一个测试,看它是否将有可能稍后...)

回答

0

选项1:合并从主干的变化(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:不要svn copy/b/trunk/Application到/ a/trunk。而不是svn copy/b/branches/FeatureX/Application到/ a/branches/FeatureX。然后在准备好后将这些更改合并到/ a/trunk。如果/ b/trunk/Application中有不在/ b/branches/FeatureX/Application中的更改,则在将svn复制到/ a/branches/FeatureX之前,您需要重新设置该分支。

+0

在选项1中,不应该是“aka/b/trunk/Application”吗? – hmn 2010-10-29 07:40:15

+0

如果我正确理解您的解决方案,那么在两个选项中,只有在将“FeatureX”合并到“主干”作为最后一步之后才能实现最终布局。但在我的场景中,“FeatureX”不会合并数周或数月,而我想现在实施新的存储库布局。 – hmn 2010-10-29 08:14:46

+0

我改正了路径,你是对的。 – jgifford25 2010-11-01 14:48:38

0

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

0

将你的svn副本做成只有“应用程序”的主干。从trunk中创建一个新分支:featurex2。将featurex合并到featurex2。删除featurex它现在是一个有吸引力的nussaince。

相关问题