Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control 修复mercurial中的错误合并_Version Control_Mercurial_Tortoisehg_Kiln - Fatal编程技术网

Version control 修复mercurial中的错误合并

Version control 修复mercurial中的错误合并,version-control,mercurial,tortoisehg,kiln,Version Control,Mercurial,Tortoisehg,Kiln,在mercurial项目配置中,我们在一个存储库中有3个分支。一个是一个稳定的发布分支,其中有紧急的bug修复,一个是一个包含新特性代码的特性分支,另一个是一个UAT分支,其中bug修复和新特性合并在一起,以提供最新的代码库 我们已经将大量新功能代码合并到UAT分支中,没有任何问题。随后,我们将带有bug修复的稳定分支合并到UAT分支中,但这似乎具有删除新功能代码的效果。我发现这个问题是由某人在不久前将UAT合并到stable中引起的(这本不应该发生!!)。现在,当我尝试将错误修复合并到UAT中

在mercurial项目配置中,我们在一个存储库中有3个分支。一个是一个稳定的发布分支,其中有紧急的bug修复,一个是一个包含新特性代码的特性分支,另一个是一个UAT分支,其中bug修复和新特性合并在一起,以提供最新的代码库

我们已经将大量新功能代码合并到UAT分支中,没有任何问题。随后,我们将带有bug修复的稳定分支合并到UAT分支中,但这似乎具有删除新功能代码的效果。我发现这个问题是由某人在不久前将UAT合并到stable中引起的(这本不应该发生!!)。现在,当我尝试将错误修复合并到UAT中时,它会删除所有新的功能代码

有没有一种方法可以消除UAT合并到stable的影响,同时仍然保留这个“错误合并”后的错误修复?我尝试过撤销合并,但似乎没有任何效果。我可以做一个strip并重新添加所需的变更集吗


提前谢谢。

实际上,我已经通过一些尝试和错误,自己解决了这个问题

首先,需要在mercurial.ini文件中启用移植和mqMerge扩展名。在扩展标题下方添加以下行

   transplant=
   mq=
将存储库中的文件克隆到新位置。 在新回购协议中,通过使用strip命令清除历史记录来删除错误合并。错误合并的影响将被删除。(请注意,这将删除所有子变更集)

然后,您需要使用类似于下面的命令,按照时间顺序从另一个repo中选择所有必需的变更集

    hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"
对所有必需的变更集重复移植命令。哇


注意:如果您使用的是中央存储库,您也需要在其中删除有问题的合并/变更集,否则您的本地回购将认为您有未完成的变更集要拉。

您已经验证没有人意外地将其中一些文件添加到稳定分支,然后将其删除?或者包含这些文件的文件夹?没有。这些文件没有被删除,因为它们从未在该分支上存在过。您使用的是Mercurial的哪个版本?这里的问题非常相似。顺便说一句:我想我已经发现了问题。我说这些文件没有被添加和删除是不正确的。从repository explorer看,似乎有人以错误的方向合并,从功能分支中删除了文件。从稳定到现在,当我们以正确的方式进行合并时,我们已经做了大量的更改。有人知道从这种错误中恢复的好方法吗?+1您的解决方案让我想起了我合并两个不相关的存储库()。我喜欢你的解决方案。