合并没有冲突,代码不编译:我应该在提交之前修复它吗?

时间:2015-07-06 15:50:57

标签: svn version-control svn-merge

我正在使用Subversion 1.7.x,我正在分支上进行开发。

我不时从​​ trunk 合并以保持分支机构的最新状态 但是,在最新的合并期间,传入的代码虽然在 trunk 中完全正确,但不会在分支中编译。
这是预料之中的,因为 trunk 中更改的代码已部分在分支之前的几个修订版中重写。

请注意,合并操作干净利落,没有冲突 为了清楚起见,当我说 merge 时,我指的是使用来自另一个分支的代码修改工作副本的操作,不涉及提交,即仅svn merge [source] [dest]

由于分支最终将重新集成到 trunk ,我想我有两种选择:

  1. 在提交合并代码之前修复编译错误;
  2. trunk 合并; commit(没有编辑的合并代码);编辑代码以修复编译问题;再次提交(即随后修复编译问题,执行新的单独提交)。
  3. 如果我在提交之前编辑合并的代码(即我使用#1),重新集成分支时这些更改是否会丢失?

1 个答案:

答案 0 :(得分:1)

简短回答是:不,改变不会丢失。

更多细节。
重新整合合并与“常规”同步合并不同,因为它将分支复制到主干,因此两者变得相同[1]。它可以表示为“将分支和主干之间的差异应用于主干(wc)”。当然,重新整合合并实际上应该是重新融合。 Subversion 1.8不知何故猜测,早期版本在合并期间需要--reintegrate参数。

更新

[1]实际上,我做了几次测试,发现只有当你合并到工作副本更新到上次同步修订时,结果才会相同。例如,如果您将trunk 1-100同步到分支,那么在trunk 10中创建更多其他修订,然后将分支重新集成到trunk中 - 这可能是差异。

我个人更喜欢同步分支到trunk中的最新版本,重新整合然后比较二进制身份的文件夹。以防万一:)