如何在Mercurial中的存储库之间推送/拉出单个变更集?

Dan*_*ola 14 mercurial push pull repository changeset

我有以下情况:

  • 我有网站A,它有Mercurial repo,我们已经开发了一段时间了.假设A有5次修订.
  • 我们现在必须创建站点B,它几乎与站点A完全相同,除了图形设计.所以我克隆了回购,开始了网站B,现在B的回购已经包含了A的所有历史记录,还有一堆永远不会回到A的变更集(主要是CSS和图像).让我们说这些改变花了我3次修改.
  • 最后,我现在改变了B,我想回到A,因为它属于两个站点.这是B的回购中的第9版.

问题是:我怎样才能将修订版9从B的回购转移到A的回购中,而不是移动修订版6-8?

  • 我已经尝试过常规推/拉,但这会移动所有变更集.
  • 我已经尝试导出捆绑包或补丁,但由于缺少父级,因此拒绝在A中导入.

我认为DVCS的优点之一就是我可以轻松地做到这一点(在"集中式"VCS世界中我可以通过分支和合并轻松修复,我已经用Vault做了很多而且很容易) .

我在这里错过了什么吗?

注意:我查看了"MQ",但这似乎是一大堆蠕虫,看起来它只会影响正常的提交周期.它是否正确?

任何帮助或指示将不胜感激.谢谢!

丹尼尔

sup*_*een 11

https://www.mercurial-scm.org/wiki/wiki/TransplantExtension

请参阅"使用移植来樱桃挑选一组变更集":

移植可以管理多个变更集或变更集范围,如下所示:

hg transplant REV1:REV2 REV3
Run Code Online (Sandbox Code Playgroud)

这个例子将在工作目录修订版中为REV1:REV2和附加变更集REV3指定的变更集范围做好准备.

理想情况下你会用分支机构这样做吗?


Mar*_*ler 11

我这样想的命令:

  • hg bundle为您提供变更集的二进制版本,hg unbundle并将捆绑包转换为接收方的完全相同的变更集.

    Bundle和unbundle用于传输更改集,比如电子邮件和二进制补丁取决于要存在的父更改集.

  • hg export为您提供变更集的文本表示,除非您使用--exact命令行标志hg import,否则应用此补丁不会在接收端创建完全相同的变更集.

    不使用的好处--exact恰恰在于只要没有文本冲突就可以在任何地方应用这样的补丁.

  • hg transplant只是一个薄薄的包装hg exporthg import.