带有MQ的Mercurial子存储库

时间:2010-12-24 23:17:14

标签: mercurial subrepos mercurial-queue

有时当我正在进行代码更改时,我需要对我的存储库中的共享库代码进行相应的更改,该存储库本身就是一个子存储库。当我想提交更改时,我在父存储库中执行此操作,Mercurial负责在子服务器中执行相应的提交。

然而,我最近开始使用MQ来更好地跟踪我自己的变更历史,让自己更自由地进行实验并更安全地进行大规模的重构工作。我在父节点和子节点上都启用了MQ。

在上面描述的场景中,我是否正确地假设如果我“提交”新的或现有的MQ补丁,那么subrepo会被忽略?这是我的测试中似乎发生的事情。这是否意味着我需要在subrepo中手动管理补丁队列?这很快变得笨拙。

如果这不起作用,那很好 - 当我有交叉回购工作时我可以调整我的工作流程并避免使用MQ - 但我想知道我是否遗漏了某些内容或者其他人是否有解决方案可以分享。


更新:根据此主题,此时似乎可能“不支持”:https://www.mercurial-scm.org/bts/issue2499

我尝试了以下内容:

  1. 手动提交subrepo更改。
  2. 使用subrepo commit中的哈希手动更新父存储库中的.hgsubstate文件。
  3. 尝试qrefresh父存储库。
  4. 我的想法是,我可以从父存储库获取提交,以便始终与正确的subrepo版本同步,即使我必须手动执行。不幸的是,Mercurial似乎想在这里保护我(因为它应该!)并且当我尝试qrefresh时会出现以下情况:

    warning: not refreshing .hgsubstate
    

    为了“修复”事情,我在父存储库上的hgfinish之后执行空提交以使事情同步。但是......这看起来很愚蠢,使得代码历史难以理解。

    哦,好吧,猜测我会回到石器时代,当涉及到子存储库时,我会停止在我的工作流程中使用MQ。

0 个答案:

没有答案