我创建了一个分支,已经提交了很多修订。与此同时,干线也做了一些改变。所以我创建了一个新分支并手动将主干中的修订合并到新创建的分支,因为分支有重大变化,而主干变化相对最小。
现在我必须用新分支替换主干。我看到各种帖子建议删除主干。但对我来说这不是一个可行的解决方案,trunk从一开始就修改了文件,我不想放弃它们。当我尝试在Eclipse中合并trunk和new分支时,它会异常终止。
在检查标记为冲突的文件时,分支中的最新更改未在比较窗口中正确显示(名为filename.java.2.working
的文件包含最新的分支更改,但该文件未在eclipse的比较窗口中显示)。
有没有人知道用树枝替换树干而不删除树干的解决方案?
例如:在版本12121创建的分支 Trunk最新12500 分公司最新12777
现在当我进行合并时,我希望所有文件都在12501版本的trunk中提交。
答案 0 :(得分:2)
TL; DR:您无法删除SVN位置并将其历史记录分配给其他位置,即使它们的名称相同。您可以做的是合并到正确的位置并保留所有原始历史记录。
现在,让我直截了当地说:
trunk
。 branch A
的分支机构。 trunk
有一些细微的变化。 branch B
关闭branch A
?它真的不清楚你创建了branch B
off trunk
更改合并到branch B
branch B
成为trunk
(换句话说,您需要将整个branch B
合并到trunk
)为什么你没有直接将trunk
到branch A
的那些细微变化合并到keeping branch in sync,然后reintegrate branch A
到{ {1}}?你应该每天让你的功能分支与主干保持同步,越多越好。您不应该保持分支同步的唯一时间是这是一个发布分支,并且您不希望其中有新的主干更改。但是,根据您的问题,您做希望trunk
中的trunk
更改,不是吗?
branch A
在这里似乎完全是多余的。我对Eclipse一无所知,但它可能失败了,因为branch B
不是branch B
的直接后代。
表演:
trunk
合并到branch A
获得与执行相同的有效结果:
trunk
branch B
branch A
合并到trunk
branch B
合并回branch B
以保留trunk
历史记录" trunk
- >之间合并的复杂性branch A
"与" trunk
- >之间合并的复杂性相同trunk
(与branch B
相同)"
请提供branch A
存在的原因,也许我在这里完全遗漏了一些内容。
你应该做的是:
branch B
或更新现有结帐trunk
,选择trunk
- > TortoiseSVN
Merge
branch A
,选择您要合并的所有修订,或者您可以使用Show Log
12121-12777
Next
Merge
提交给SVN。 SVN中的上述提交将清楚地表明这些更改来自trunk
如果存在冲突,则必须使用已配置的差异工具解决它们。您提到的那个文件Branch A
是冲突解决文件。当SVN检测到无法自动解析的两个文件之间的冲突时,它会为您提供一份"您的"文件,"他们的"的副本文件和"合并"文件。你选择了"你的"和#34;他们的"将文件放入"合并文件",然后将冲突标记为已解决。一旦标记为"已解决",所有3个都将从工作区中删除并替换为原始文件名,其中包含" merged"文件。这就是承诺。
在您的情况下快速而肮脏:
鉴于您已经创建了多余的filename.java.2.working
且已合并的branch B
已更改为trunk
,现在希望branch B
成为您的新branch B
,您可以执行以下操作又快又脏
trunk
或更新现有结帐trunk
结帐文件夹,选择branch B
,然后导出到新文件夹TortoiseSVN -> Export
结帐(覆盖)trunk
以上内容将显示为直接提交,并且不会显示更改来自trunk
最后:
branch B
以上是不可能的,因为SVN(任何主干或分支)中的任何新提交都将具有修订版E.g.: Branch created at version 12121 Trunk latest 12500 Branch latest 12777.
Now when I do the merge, I want all the files to be committed at version 12501 in trunk.
或更高版本。另请注意,这是修订版,SVN中没有版本这样的内容,您无法想到"修订版"作为"版本",它不是一回事。