在经典的VCS(CVS / SVN)中,我可以在一个分支中添加新文件/文件夹,然后用一些分支标签“标记”它们,以便它们也出现在另一个分支上(它们可能会再次从那里分支)。通过将您的工作副本更新为特定状态,然后设置分支标记,可以起作用。
我如何在Mercurial中实现类似的目标?我进行了无数次搜索,但似乎无法将仅几个文件/文件夹移动到另一个分支。
在我的情况下,某个历史分支收到了一些更新,现在应将其移至当前活动的分支(即在将回购从Subversion转换为Mercurial之前)。是否有任何方法可以保留这些文件/此文件夹的历史记录?还是我必须将这些文件的当前状态重新引入另一个分支(即从头开始)?
旁注:两个分支的提示之间有数百个相互冲突的更改。这就是为什么我正在寻找分支之间完全合并的替代方法(这也是一个问题,因为分支之一在合并后将不复存在)。
最佳答案
Mercurial transplant extensio n应该可以解决问题。移植将变更集重新应用到您选择的分支。它通常用作将错误修复程序从一个分支移至另一个分支的方法(即:从与代码的发行版本相对应的长时间运行的分支移至有效开发的默认分支)。
移植是与Mercurial一起分发的,但是您可能必须通过在Mercurial.ini(或.hgrc)中添加以下几行来启用它:
[extensions]
transplant=
您可以从TortoiseHg更新到目标变更集(即:放置修订的位置),然后右键单击要移动的变更集,然后选择“移植到本地”。可以在上面的链接中找到命令行帮助。
一个警告是,移植适用于变更集,并且它想应用整个变更集。因此,如果变更集包含您要应用的某些变更而您不想应用的变更,则您需要做更多的工作。解决此问题的一种方法是使用histedit扩展名并将此类变更集分为两部分。这可能很复杂,如果您的回购不在本地(例如:如果它在服务器上的某处),则不建议这样做。蛮力选择是移植变更集,然后简单地撤消不需要的变更并将那些mod作为第二个变更集提交。
关于version-control - Mercurial中的部分(按文件/文件夹)分支/标记?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4978935/