Mercurial 为未使用MQ创建的一系列现有变更集创建修补程序?

Mercurial 为未使用MQ创建的一系列现有变更集创建修补程序?,mercurial,patch,mq,mercurial-queue,Mercurial,Patch,Mq,Mercurial Queue,我最近开始从事一个使用Mercurial的开源项目。 我是Mercurial的新用户,所以我读了HG的书并开始工作。 我的目标是编写代码,并始终从上游提取和合并更改 所以我可以随时了解最新情况。我正在工作的领域也面临着沉重的压力 由他人开发,因此我确实希望在长时间的开发之后合并我的更改 时间我克隆了一个回购协议。因此,我的工作流程如下: 我为我的书创建了一个书签 hg up mybook 编写代码 3.1hg提交-m‘新函数’ hg up默认值 hg拉力 hg更新 hg up mybook hg

我最近开始从事一个使用Mercurial的开源项目。 我是Mercurial的新用户,所以我读了HG的书并开始工作。 我的目标是编写代码,并始终从上游提取和合并更改 所以我可以随时了解最新情况。我正在工作的领域也面临着沉重的压力 由他人开发,因此我确实希望在长时间的开发之后合并我的更改 时间我克隆了一个回购协议。因此,我的工作流程如下:

  • 我为我的书创建了一个书签

  • hg up mybook

  • 编写代码

  • 3.1
    hg提交-m‘新函数’

  • hg up默认值

  • hg拉力

  • hg更新

  • hg up mybook

  • hg合并默认值

  • 转至步骤3

  • 在我看来,这是最简单的工作流程,可以让我保持最新。我 也只有一个头,因为我总是合并

    因为我还不是一个贡献者,所以我不允许将更改推送到远程服务器 回购协议

    最近我想向一个项目负责人展示我的工作,他说给我发个补丁。 这就是我被困的地方<代码>输出显示10个变更集。首先 一个月前就开始了。这些数字是
    3341334233453346334933563360336533663368
    。变更集编号3368是提示

    我最近读了关于MQ扩展的一章。这就是我需要的。但问题是我没有使用MQ编写代码 分机

    那么,如何在已经创建的变更集上使用MQ扩展,以便 我可以制作一个补丁发送给项目负责人,以便他可以应用它并查看 我的零钱

    我刚刚发布了
    hg-qinit
    。下一步是什么? 发布hg qimport-r 3341

    abort: revision 3341 has unmanaged children
    
    读这本书和进一步搜索对我没有帮助。我需要一个建议

    PS我尝试过根本不使用hg和MQ:简单的
    diff-urN-old/new/
    ,但我 想要了解如何使用MQ来实现这一点


    谢谢。

    是的,不要使用MQ。这是一个平行的系统,旨在将事情排除在历史之外,更重要的是,你们不需要它

    您需要的是“补丁”,而不是您工作的完整历史记录,因此我建议您以前后差异的形式发送。
    hg export
    将为您提供一系列差异,包括合并。我发现阅读和回顾单个差异(在应用之前)要容易得多。但是不要使用普通的
    diff
    ,而是使用
    hg diff
    ,它知道只查看跟踪的文件,并具有许多其他优秀的功能(包括
    --git
    选项,它提供了更丰富的元数据)。这应该做到:

    hg up mybook
    hg diff --git -r default > mywork.patch
    
    在发送之前,执行
    hg up default
    ,并应用补丁以检查其工作是否没有冲突。并向收件人提及您要修补的
    default
    版本

    编辑:正如您在评论中所读到的,@lazybacker是
    export
    生成的分步补丁的粉丝。我更喜欢单步贴 因为我的历史记录通常是TMI:没有人关心我添加一个被遗忘的文件的所有时间,或者太晚才注意到一个bug并在下一次提交时修复,等等。
    你选吧。

    是的,不要使用MQ。这是一个平行的系统,旨在将事情排除在历史之外,更重要的是,你们不需要它

    您需要的是“补丁”,而不是您工作的完整历史记录,因此我建议您以前后差异的形式发送。
    hg export
    将为您提供一系列差异,包括合并。我发现阅读和回顾单个差异(在应用之前)要容易得多。但是不要使用普通的
    diff
    ,而是使用
    hg diff
    ,它知道只查看跟踪的文件,并具有许多其他优秀的功能(包括
    --git
    选项,它提供了更丰富的元数据)。这应该做到:

    hg up mybook
    hg diff --git -r default > mywork.patch
    
    在发送之前,执行
    hg up default
    ,并应用补丁以检查其工作是否没有冲突。并向收件人提及您要修补的
    default
    版本

    编辑:正如您在评论中所读到的,@lazybacker是
    export
    生成的分步补丁的粉丝。我更喜欢单步贴 因为我的历史记录通常是TMI:没有人关心我添加一个被遗忘的文件的所有时间,或者太晚才注意到一个bug并在下一次提交时修复,等等。
    请选择。

    不要将MQ用于此任务。使用
    hg Export-r REVSET
    将变更集导出为一组补丁,顺便说一句,您可以在4-6个区域的工作流中减少摩擦。我认为@lazybager意味着您可以
    默认值
    中拉取
    合并
    ,而无需从分支进行更新(如果您不介意在不查看新版本的情况下执行此操作)。不要将MQ用于此任务。使用
    hg Export-r REVSET
    将变更集导出为一组修补程序,顺便说一句,您可以在4-6个区域的工作流中减少摩擦。我认为@lazybager意味着您可以
    默认值
    中拉取
    合并
    ,而无需从分支进行更新(如果您不介意在不查看新版本的情况下执行此操作)。不要混合使用
    hg export
    hg archive
    ,dude-导出保存修补程序文件,如果这听起来有误导性,请担心。
    hg export
    将生成一个修补程序,为每个文件和包含修订范围内的每个更改集包含单独的差异。因此,它为每个受影响的文件包含多个差异。
    hg diff
    wil我只是比较开始和结束状态,然后生成一个扩展补丁。我的兴趣不在于