问题标签 [mercurial-queue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2431 浏览

mercurial - 如何在没有弃用的 qsave 的情况下对补丁队列中的被拒绝大块使用 mercurial 合并功能?

我有一个存储库,并且正在使用 mq 补丁队列进行未完成的更改。补丁队列也受版本控制。

假设我有 2 个补丁 p1 和 p2(按该顺序应用)。现在我对 p1 进行更改:

...并且 p2 无法申请。

现在的标准方法是手动应用被拒绝的帅哥。我想使用类似MqMergePatch的东西,它很好并且使用了 mercurial 的合并——但它基于已弃用的功能:

我的问题是:如何使用hg rebase做到这一点?

编辑

在查看了存储库的日志之后,我完全不喜欢 MqMergePatch 对它所做的事情。我使用补丁的主要目标是清理存储库的历史记录,而不是散布无用的细节。

0 投票
2 回答
439 浏览

linux - 交互式程序选择性地排除差异文件的一部分

是否有一个程序(最好在 Cygwin 上可用)我可以用来交互地“过滤”差异文件?即我想要 git interactive add 之类的东西,除了我想对 diff 文件进行操作。我已经发现了filterdiff,但我认为它不支持交互式编辑,仅基于预定义的搜索条件包含/排除大块。

我的使用场景:我在 MQ 中有一个补丁,我想按照这里的教程进行拆分:https ://www.mercurial-scm.org/wiki/MqTutorial#Split_a_patch_into_multiple_patches 。为此,我必须编辑一个补丁文件,使其仅包含我想要的(许多)更改,并且使用文本编辑器手动执行此操作有点痛苦。

谢谢!

0 投票
1 回答
1291 浏览

mercurial - 如何解开/撤消已应用 MQ 补丁的合并?

我不小心将一个分支合并到一个带有应用补丁的工作区中。

我该如何收拾这个烂摊子?我是否必须清理合并(hg up -C)或者有什么方法可以保存我的合并?

0 投票
2 回答
2083 浏览

mercurial - 如何将 N 个本地最高提交转换为 MQ 补丁?

我想将我的最后一次提交安排为 MQ 补丁。所有提交都是本地的(从不推送到服务器),但并非所有本地提交都将被转换。

比如说,我做了 10 次提交(从未推送),现在我希望将最后 5 次转换为补丁。

我该怎么做?

0 投票
1 回答
78 浏览

mercurial - 为什么刷新我的 mq 补丁会在工作目录中留下修改过的文件?

请注意:

我不清楚为什么hg status在我刷新 MQ 补丁后返回相同的添加文件?请注意,这些文件确实出现在hg qrefresh 的详细输出中。

我现在该怎么办?

谢谢。

0 投票
2 回答
237 浏览

mercurial - hg update --mq 不工作?

我正在使用: Mercurial Distributed SCM (version 1.9.1),并且我已经完成了以下操作:

我试图切换回 mq 中的特定版本:

为什么我看不到 Queue0 内容?

0 投票
3 回答
897 浏览

mercurial - 如何使用 mercurial 队列或 histedit 禁用 pretxncommit 挂钩?

我的本地 mercurial 存储库中有一些 pretxncommit 钩子,这些钩子用于检查提交消息是否包含对票证的引用和其他一些健全性检查。

我的问题是,当我尝试使用 mercurial 队列时,诸如qnew尝试运行这些钩子之类的命令并且票证检查失败之一,我看到了相同的问题histedit和类似的扩展。

为什么使用这些命令执行 pretxncommit 钩子?他们是否运行某种内部提交?

如何使这些钩子仅在提交时运行?

0 投票
1 回答
356 浏览

python - 当基于补丁的工作流程失败时,是否有任何补丁工具可以很好地与 mercurial 配合使用,从而导致您的 repo 中出现 .rej 大块

我正在寻找一种比 Mercurial 内置的更好的补丁工具,或者是一种可视化工具来帮助我编辑补丁,以便它们能够被 Mercurial 或 Gnu 补丁所接受。

mercurial wiki 有一个主题HandlingRejects,它显示了修补失败是多么简单。我希望为基于功能分支的功能分支版本控制实施一个基于 mercurial 的工作流程,并依赖于在集成之前导出和审查补丁。在我对这个想法的初步测试中,我的“补丁”和“审查、接受和修改”补丁中最薄弱的环节是补丁拒绝让我失望的方式。

以下是一些常见的 mercurial 补丁导入失败的情况:

对上游 repoA 和功能分支 repoB 的细微更改,其中在两个分支上的某处添加了一行。由于两个分支都有历史记录,因此合并工具应该可以看到“有人在 repoA 中添加了一行,而其他人在 repoB 中添加了一行”。但是,在补丁导入的情况下,这会导致您的存储库中出现补丁导入拒绝和 .rej 文件垃圾,您必须手动修复(通过编辑 .rej 文件直到可以应用它)。

上面的 wiki 页面提到了可以在此处找到的 mpatch 工具。我正在寻找其他更好的合并工具,它们 (a) 与 mercurial 一起工作,并且 (b) 可以处理上面的处理拒绝 wiki 页面中提到的琐碎案例。请注意,mpatch 不适用于我的目的,似乎我需要的东西更像是一个 rebase 工具而不是补丁工具,在我的情况下,我可能必须使补丁工具具有语法感知能力(因此特定于单一编程语言)。

我正在寻找可用于在 Windows 上工作的工具,无论是本机的,还是通过 cygwin 之类的工具。我没有使用 Unix/Linux 环境,尽管我对 Linux/Unix 风格的工具很满意。

我目前没有使用mq扩展,只是使用 hg export 导出更改范围,并使用 hg import 导入,其余的工作是我自己的发明,但是我已经标记了这个mq,因为 mq 用户会熟悉这个.rej处理问题.

此处的相关问题显示了在使用 TortoiseHg 时解决此类问题的方法。

0 投票
3 回答
1285 浏览

mercurial - Mercurial - 使用类似于 Shelves 的队列?

我最近开始使用 MQ,因为我喜欢在不影响 repo 的情况下处理隔离补丁和提交的想法,直到变更集足够细化。在此之前,我曾经使用 Mercurial 的货架扩展,但发现它有点不稳定。我仍在 MQ 中试图弄清楚的是如何将补丁彼此分开,并以不特定的顺序应用它们,并跨不同的分支应用它们。这是我的正常流程-

1.开始制作新补丁:

2.获得一个新的功能/错误来处理:

3.在这一点上,我想回到 bugfix 的工作,并把功能工作放在一边。我认为这很简单:

但是,MQ 似乎总是使用该系列中创建的最新补丁,并且无论我使用的是什么 qpop/qpush 命令都应用它。我应该注意,我处理的文件也是完全独立的(尽管它们有时可能是相同的)。

我在这里错过了什么吗?我应该hg qqueue为此使用吗?谢谢。

0 投票
2 回答
834 浏览

mercurial - 在 Mercurial 中创建一个临时命名分支,然后将其从存在中删除

我正在考虑在 TeamCity Visual Stuio 插件中添加“为 Mercurial 远程运行(个人构建)”功能的想法。

从 v6.5 开始,TeamCity 支持“远程运行分支触发器”,如果推送与 TeamCity 中的触发器匹配的命名分支,TeamCity 将运行该分支的个人构建。

这个想法是从当前分支(比如说default)获取当前传出的变更集,并将它们移动到一个名为remote-run. 然后将其推送到 CI,因此触发个人构建,如果个人构建成功,则将更改移回原始分支,并remote-run删除该分支。

我对此有几个问题:

  1. 它甚至有意义吗?
  2. 我应该为此使用哪个扩展?我相信 MqExtension 可以满足我的所有需求,但有其他选择吗?
  3. 如果用户在远程运行期间提交了额外的更改会发生什么?“临时分支”变更集如何合并回原始分支?

我目前的目标场景如下:在默认分支上工作时,用户添加了 3 个新版本。然后,他想在 TeamCity 上将这些更改作为个人构建运行,但他忘记将这些修订提交到一个特别命名的分支。相反,我的插件将接受那些传出的更改,并将它们放在命名的分支中。一旦个人构建成功,这些更改就会被放回原始(默认)分支,并推送到远程存储库。

像这样的东西:

假设B和是新修订版CD我希望该工具执行以下操作:

完成后,将其恢复到原始状态,即:

编辑:我设法使用 Mq 将更改移动到另一个分支,这最终变得非常容易。不幸的是,我不知道如何恢复此更改:)

希望这是有道理的!