Version control Mercurial中的部分(每个文件/文件夹)分支/标记?

Version control Mercurial中的部分(每个文件/文件夹)分支/标记?,version-control,mercurial,dvcs,tortoisehg,Version Control,Mercurial,Dvcs,Tortoisehg,在经典的VCS(CVS/SVN)中,我可以在一个分支中添加新的文件/文件夹,然后用一些分支标记“标记”它们,使它们也出现在另一个分支上(它们可能再次偏离)。这是通过将工作副本更新到特定状态,然后设置分支标记来实现的 我如何在Mercurial中实现类似的目标?我进行了广泛的搜索,但似乎无法将几个文件/文件夹移动到另一个分支上 在我的例子中,某个历史分支收到了一些更新,这些更新现在应该移动到当前活动的分支上(那是在repo从Subversion转换为Mercurial之前)。是否有任何方法可以保留

在经典的VCS(CVS/SVN)中,我可以在一个分支中添加新的文件/文件夹,然后用一些分支标记“标记”它们,使它们也出现在另一个分支上(它们可能再次偏离)。这是通过将工作副本更新到特定状态,然后设置分支标记来实现的

我如何在Mercurial中实现类似的目标?我进行了广泛的搜索,但似乎无法将几个文件/文件夹移动到另一个分支上

在我的例子中,某个历史分支收到了一些更新,这些更新现在应该移动到当前活动的分支上(那是在repo从Subversion转换为Mercurial之前)。是否有任何方法可以保留这些文件/此文件夹的历史记录?或者我必须将这些文件的当前状态重新介绍给其他分支(即从头开始)

旁注:两个分支的尖端之间有数百个相互冲突的更改。这就是为什么我在寻找分支之间完全合并的替代方案(这也是一个问题,因为合并后其中一个分支将不复存在)。

n应该可以做到这一点。移植将变更集重新应用于您选择的分支。它通常用于将错误修复从一个分支移动到另一个分支(即:从与已发布的代码版本相对应的某个长期运行的分支到积极开发的默认分支)

移植是使用Mercurial分发的,但是您可能需要通过在Mercurial.ini(或.hgrc)中添加以下行来启用它:

从Ortoisehg,您可以更新到目标变更集(即:您放置修复的位置),然后右键单击要移动的变更集并选择“移植到本地”。可以在上面的链接中找到命令行帮助


一个警告是移植适用于变更集,并且它希望应用整个变更集。因此,如果变更集包含一些您想要应用的变更,而有些您不想应用,那么您需要做更多的工作。解决这个问题的一种方法是使用扩展并将这样的变更集一分为二。这可能很复杂,如果您的回购协议不是本地包含的(即:如果它位于某个服务器上),则不建议这样做。一个强力的选择是移植一个变更集,然后简单地撤销不需要的变更,并将这些mod作为第二个变更集提交。

谢谢您的回复。我要先在本地的克隆机上试用一下,以防万一。我玩过移植扩展,但它似乎是为了移植相关克隆的变更集。有问题的变更集只修改了那个特定的文件夹,所以这种方法应该有效。再次感谢。刚刚试过,效果很好。尽管如此,我还是遇到了一些合并冲突,但这些冲突要少得多,所以我将对它们进行分类。谢谢你的帮助。
[extensions]
transplant=