标签: mercurial-queue

如何使用多个hg mq补丁队列(在一个存储库中与多个子库中)

我正在尝试使用MQ设置我的工作流程,如MqTutorialHGbook第13章中所述.我努力的部分是如何在版本下有多个补丁队列.

备择方案:

I.为每个队列创建一个单独的存储库.为了使这个可管理标记repos作为.hgsub文件中的子目录

问题:以下结果导致错误:路径包含非法组件

 .hg/patches-queue1 = .hg/patches-queue1
Run Code Online (Sandbox Code Playgroud)

II.HGbook第13章描述了您可以在子目录中添加补丁程序

 qnew queue1/patch1.diff
Run Code Online (Sandbox Code Playgroud)

问题:所有补丁仍然在同一队列中,必须按顺序应用

还有另一种方法可以将所有补丁队列置于版本控制下并推送吗?一个存储库中有多个HG MQ补丁队列?

mercurial tortoisehg mercurial-queue

6
推荐指数
1
解决办法
2089
查看次数

如何将完整的二进制文件添加到Mercurial补丁中?

我想使用Mercurial捕获对我们使用的软件的vanilla安装所做的更改.每次我们升级软件时,我们都需要手动编辑各种配置文件,并添加我们在当前版本软件中使用的第三方库.为配置文件更改创建补丁很好,但如何将第三方库(二进制文件)添加到Mercurial补丁?它甚至可能吗?

binary mercurial patch mercurial-queue

5
推荐指数
2
解决办法
1444
查看次数

使用Mercurial队列将未提交的更改添加到新的修补程序中

在Mercurial中创建补丁的过程如下:

使用qnew创建补丁 - >进行更改 - >刷新补丁

如果我已经进行了(uncommited)更改并且我想将它们添加到队列中该怎么办?

mercurial mercurial-queue

5
推荐指数
1
解决办法
1620
查看次数

`qrefresh`被认为有害吗?

扩展中的qrefresh命令MQ对我没有意义.我会解释我的假设:

  1. 如果您不知道某个修补程序应该应用于哪个修订版,则它的价值非常小.理论上你无法知道拒绝意味着什么.即使某个修订版本没有拒绝,您也不确定整个修订版本是否会编译.
  2. 一旦你qrefresh在你的补丁队列某补丁,你实际上失去在队列中的下一个补丁的父.因此,如果没有您的干预,下一个补丁可能是无用的.
  3. 为了修复下一个补丁,你最好合并它而不是手工编辑.rej文件.不仅仅是因为更好的工具,如果你有原始的未qrefresh修补补丁,你有更多的信息,qrefresh导致你丢失实际需要的信息,以使你对补丁的改变有意义.

因此我不明白为什么人们会想要使用这个命令.

更好的选择是,将所有补丁应用hg update到要更改的补丁的父级,然后hg revert将工作目录应用于要更改的补丁.更改此修补程序,将其提交到新修订版,然后重新绑定此新修订版上的所有其他修补程序.

qrefresh当您不编辑单个补丁时,我根本不明白何时相关.似乎这种git方法(将补丁应用于本地分支)比补丁队列更有意义.

我是否正确,我最好使用rebase?我错过了什么吗?

由于没有回复和低视图率而从kiln.se.com迁移

mercurial mercurial-queue

5
推荐指数
1
解决办法
715
查看次数

如果在hg mq补丁队列中的单个补丁中进行了太多更改,该怎么办?

hg mq插件的目的是能够对您的存储库进行完美的提交,而不是混淆您通过代码在您心不在焉的ADHD引起的漫游中所做的更改;

例如....

当我注意到bug y并开始研究bug时,我正在研究bug x.此时,您应该在修补程序队列中创建一个新修补程序,以便在将更改hg qfinish提交到存储库时不要混淆这些更改.

现在假设您忘记制作新补丁并在此过程中hg qrefresh.然后意识到你的错误,你希望将那个补丁的变化分成两个补丁.

我意识到它与编辑队列中的补丁文件(和新的补丁文件)有关,可以将更改分成单独的补丁和以后的提交.但是,我还不熟练编辑diff补丁文件.

我在哪里可以了解到这一点?怎么会这样呢?

diff mercurial patch mercurial-queue

5
推荐指数
1
解决办法
340
查看次数

是否有命令在补丁队列之间移动补丁?

我意识到补丁队列有一个非常简单的实现,你可以手动移动东西,但是有一个命令在两个队列之间移动补丁吗?

version-control mercurial dvcs mercurial-queue

5
推荐指数
1
解决办法
194
查看次数

mercurial:如何将主存储库中的mq补丁作为mq补丁同步到一组克隆存储库

我必须在mercurial存储库中维护的代码库上运行十几个不同的构建测试.我不想在同一个存储库上连续运行这些测试,因为它们修改了一组公共文件,我想在不同的机器上并行运行它们.此外,在运行所有测试后,我希望能够访问这些测试工作区域的最新测试结果.目前我正在克隆主存储库十几次,并在每个克隆中运行一个不同的测试.在每次测试执行之前,我会执行拉/更新/清除准备序列,以便在最新的清洁状态下开始测试.这对我有好处.

我也正在准备使用mq扩展的新更改,我将在提交之前在所有克隆上进行测试.为了测试一些准备好的候选mq补丁,我想以某种方式部署/同步它们以便在测试克隆中可用,并在运行测试之前使用一些防护应用那些准备好进行测试.

之前有人做过同步吗?最简单的方法是什么?我需要有版本化的mq补丁吗?

mercurial mercurial-queue

4
推荐指数
1
解决办法
2156
查看次数

Mercurial Patch Queue用例

我在以下情况下使用mercurial补丁: -

  1. 当我需要从远程存储库中提取并具有未完成的未提交更改时.然后我只需创建一个补丁,qpop,从远程存储库中提取,然后再次导入补丁.
  2. 当我需要将补丁上传到评论板时.我只是制作一个补丁并上传它.

你怎么使用Mercurial Patch Queues?我觉得它是一个非常强大的Mercurial扩展,我并没有充分利用它.

mercurial patch mercurial-queue

4
推荐指数
1
解决办法
2264
查看次数

如何防止Mercurial补丁被拉?

到目前为止,我还没有找到一个明确的答案,尽管答案可能是"改变你的工作流程".

我刚刚开始玩Mercurial的补丁队列,我可以看到它的一些重要力量.这看起来非常棒.在我的测试中,我发现如果你有一个补丁队列repo1,并且你从中拉出来repo2,你可以做一些坏事.例如:

  1. 创建repos 1并克隆它.
  2. 启用队列 repo1
  3. 做一些提交和一些补丁 repo1
  4. 将更改拉到 repo2
  5. repo1取消应用(弹出?)所有补丁
  6. 将更改拉到 repo2

现在你会看到两个不同的分支 - 从某个角度看是有道理的.然而,由于我的补丁不是repo1历史的一部分(至少在它们被应用之前),似乎应该有办法告诉mercurial我的补丁是禁止的,并且只提供"官方历史".

有没有办法做到这一点?

version-control mercurial patch dvcs mercurial-queue

4
推荐指数
1
解决办法
201
查看次数

禁用hg qfinish而不使用changeset消息

我使用mercurial队列,有时我忘记用a设置我的消息hg qrefresh -m ...而忘记检查我跑之前hg qfinish得到消息patch MyPatch finalized without changeset message.如果没有消息,我有什么方法可以让qfinish中止?

在我这样做之后,我发现解决这个问题的唯一方法是生成一个补丁,hg strip我的最后一个版本,重新应用补丁然后提交我的消息.

mercurial mercurial-queue

3
推荐指数
1
解决办法
945
查看次数

如何为Mercurial MQ命令添加钩子?

我想为mq扩展所做的一些动作设置hg钩子.例如,当我这样做

hg qnew
Run Code Online (Sandbox Code Playgroud)

我想使用post-review在我们的reviewboard服务器中创建一个新的审核请求.如果你这样做,我还想制作一个更新差异的钩子

hg qrefresh
Run Code Online (Sandbox Code Playgroud)

这可能吗?

mercurial mercurial-queue mercurial-hook

3
推荐指数
1
解决办法
364
查看次数

Mercurial:将最后n个修订版导出到MQ中

是否有一种简单的方法可以将最后n次提交导出到新的mq队列中并从真实存储库中删除提交?

我经常开始开发一个新功能,后来意识到我做错了/想要使用MQ来折叠补丁.

我目前在做:

  1. 导出最后n个提交为单个补丁
  2. 剥去最后n次提交
  3. 创造新的mq
  4. 以相反的顺序导入所有补丁

workflow mercurial mercurial-queue

2
推荐指数
1
解决办法
468
查看次数

退出不需要的更改并从中进行修补

我和远程回购的人合作.我们意识到我所做的更改应该从回购中删除.但是,这些变化存在于许多变化中,并与某人的变化相混合.

在我提交另一个变更集之前,我们决定删除我的更改.所以我用一些未经修改的变化做了补丁qpop.

现在我想从遥控器中退出我的其余更改,并选择性地修改这些更改,让我的同事改变不变.

此外,我希望在一个补丁中使用来自patch_ive_made_before的差异的新补丁中的差异.换句话说 - 我想从2个不同的变更集中选择一个补丁.我必须手动完成吗?

然后,在我这样做之后,我将commit/ push清除更改到存储库中.

Mercurial Queues如何做到这一点?

mercurial patch mercurial-queue mercurial-extension

2
推荐指数
1
解决办法
495
查看次数