问题标签 [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 投票
1 回答
380 浏览

mercurial - 如何为 Mercurial MQ 命令添加挂钩?

我想为 mq 扩展完成的一些操作设置 hg 钩子。例如,当我这样做时

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

这可能吗?

0 投票
4 回答
11685 浏览

mercurial - 如何启用 Mercurial 扩展(例如 mq)?

我已经从 Ubuntu 软件包存储库安装了 Mercurial。但是我不知道如何启用扩展(q*命令)。我该怎么做?帮助表明

我想启用 mq 和 hgk。

0 投票
1 回答
126 浏览

mercurial - 从当前的一些更改中制作新补丁的有效方法

我经常使用 mercurial 队列,我对它们非常满意,但是我发现有一个工作流程过于复杂。有时我正在开发一个补丁,然后我意识到我一直在做一些应该在一个单独的补丁中的东西(比如当我修复了我在开发一个功能时发现的错误,或者为我实际上想在一个单独的补丁中拥有)。

因此,工作目录的状态是:已应用补丁 A、B、C,加上应放入补丁 C 的更改,以及应放入新补丁 D 的更改。

我目前的工作流程如下:

我知道我也可以这样做

这种方法的缺点是补丁 C 的文件数量通常很大,而且必须将所有文件都放在命令行上很尴尬。相比之下,补丁 D 的文件数量通常很少。

有没有比我上面概述的更好的方法来实现这一点?

0 投票
1 回答
560 浏览

mercurial - 强制 mq 只处理草稿

最近 Mercurial 添加了阶段。

这是否可以限制 mq 仅在阶段草稿上工作?

当我尝试strip 公开变更集时,它应该显示警告。

0 投票
4 回答
408 浏览

mercurial - 如何防止一些修改在 mercurial 中传播?

我正在开发一个 Web 数据库,该数据库已经用于十几个单独的安装,其中大部分由我自己管理。每个安装都有相当多的本地配置和定制。刚刚从 svn 切换到 mercurial,我想利用它的分布式特性来跟踪本地修改。我已将每个已安装的服务器设置为自己的存储库(并将 apache 配置为不为 .hg 目录提供服务)。

我的困难是开发树还包含本地配置,我想避免将它的每一点都放在未版本化的配置文件中。那么,我该如何设置以避免将本地配置传播到主存储库和已安装的副本?

示例:我有一个很长的 config.ini 文件,应该对其进行版本控制和分发。“干净”版本包含数据库连接参数的占位符,我不希望开发服务器的密码最终出现在已安装副本的存储库中。但有时我会做出一些我确实需要传播的更改(例如,新的默认值)。有几个文件处于类似情况。

到目前为止,我能做的最好的事情是安装 mq 并将本地修改变成一个补丁(实际上是两个补丁,具有逻辑上独立的变更集)。每次我想向本地存储库提交常规变更集时,我都需要弹出所有补丁、提交修改并重新应用补丁。当我准备好推送到主仓库时,我必须再次弹出补丁,推送并重新应用它们。这一切都令人费解且容易出错。

我能看到的唯一另一种选择是忘记推送,只将变更集作为补丁传播,这似乎是一个更糟糕的解决方案。有人可以建议更好的设置吗?我无法想象这是一个如此不寻常的配置,但我还没有找到任何关于它的信息。

编辑:在跟进这里的建议之后,我得出的结论是,命名分支加上 rebase 提供了一个简单且可行的解决方案。我以自己的答案的形式添加了描述。请看一下。

0 投票
1 回答
2410 浏览

mercurial - 如何在 TortoiseHg 2.x 中折叠补丁 (qfold)?

我看过一些关于 qfold 以及如何在 TortoiseHg 1.x 中进行操作的教程,但我无法弄清楚折叠补丁的按钮在 2.x 中的位置。官方文档根本没有提及。有人知道怎么做吗?

0 投票
2 回答
1466 浏览

mercurial - Mercurial 中的 MQ 与分支

我与 Mercurial 合作已经有一段时间了。在对某些第三方软件进行(私有)更改时,过去我总是为这些更改创建一个单独的命名分支。当上游代码更新时,我只需将其合并到我的命名分支中。

今天我读到了 MQ(Mercurial Queues - 第12章和第13章)。我想我理解了 MQ 背后的概念,所以我的问题是:

与 Mercurial 中的(命名)分支相比(对于我的场景),MQ 有什么优势吗?

0 投票
1 回答
518 浏览

mercurial - 取消不需要的更改并对其进行修补

我正在与远程仓库的某个人合作。我们意识到我所做的更改应该从 repo 中删除。但是这些更改存在于许多更改集中,并与某人的更改混合在一起。

我们决定在我提交另一个变更集之前删除我的更改。所以我用未提交的更改和它做了一个补丁。qpop

现在我想从远程撤消我的其余更改,并有选择地修补这些更改,使我的同事的更改保持不变。

此外,我想在一个补丁中获得来自新补丁的差异和来自patch_ive_made_before的差异。所以换句话说 - 我想从 2 个不同的变更集中获得一个补丁。我必须手动完成吗?

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

Mercurial Queues 如何做到这一点?

0 投票
1 回答
208 浏览

version-control - 如何防止 Mercurial 补丁被拉取?

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

我刚刚开始使用 Mercurial 的补丁队列,我可以看到其中的强大功能。看起来非常棒。在我的测试中,我发现如果你有一个补丁队列repo1,并且你从 中拉取repo2,你可以做一些坏事。例如:

  1. 创建 repos 1,然后克隆它。
  2. 启用队列repo1
  3. 进行一些提交和一些补丁repo1
  4. 将更改拉到repo2
  5. repo1取消应用(流行?)你所有的补丁
  6. 将更改拉到repo2

现在您将看到两个不同的分支 - 从某个角度来看这是有道理的。但是,由于我的补丁不是repo1's 历史的一部分(至少在它们被应用之前),似乎应该有一种方法告诉 mercurial 我的补丁是禁止使用的,并且只提供“官方历史”。

有没有办法做到这一点?

0 投票
1 回答
3709 浏览

mercurial - Mercurial:如何从中断的“qpop -a”中恢复?

我已将几个修订导入队列并尝试将它们全部弹出。不幸的是,根据其他一些访问同一存储库的 Mercurial 客户端,hg qpop -a没有成功完成:

现在我不能再把补丁推回去了。Mercurial 总是抱怨“未知节点”:

这是什么意思?如何解决这个问题?