问题标签 [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.
mercurial - 如何为 Mercurial MQ 命令添加挂钩?
我想为 mq 扩展完成的一些操作设置 hg 钩子。例如,当我这样做时
我想使用 post-review 在我们的评论板服务器中创建一个新的评论请求。如果你这样做,我还想制作一个更新差异的钩子
这可能吗?
mercurial - 如何启用 Mercurial 扩展(例如 mq)?
我已经从 Ubuntu 软件包存储库安装了 Mercurial。但是我不知道如何启用扩展(q*
命令)。我该怎么做?帮助表明
我想启用 mq 和 hgk。
mercurial - 从当前的一些更改中制作新补丁的有效方法
我经常使用 mercurial 队列,我对它们非常满意,但是我发现有一个工作流程过于复杂。有时我正在开发一个补丁,然后我意识到我一直在做一些应该在一个单独的补丁中的东西(比如当我修复了我在开发一个功能时发现的错误,或者为我实际上想在一个单独的补丁中拥有)。
因此,工作目录的状态是:已应用补丁 A、B、C,加上应放入补丁 C 的更改,以及应放入新补丁 D 的更改。
我目前的工作流程如下:
我知道我也可以这样做
这种方法的缺点是补丁 C 的文件数量通常很大,而且必须将所有文件都放在命令行上很尴尬。相比之下,补丁 D 的文件数量通常很少。
有没有比我上面概述的更好的方法来实现这一点?
mercurial - 强制 mq 只处理草稿
最近 Mercurial 添加了阶段。
这是否可以限制 mq 仅在阶段草稿上工作?
当我尝试strip
公开变更集时,它应该显示警告。
mercurial - 如何防止一些修改在 mercurial 中传播?
我正在开发一个 Web 数据库,该数据库已经用于十几个单独的安装,其中大部分由我自己管理。每个安装都有相当多的本地配置和定制。刚刚从 svn 切换到 mercurial,我想利用它的分布式特性来跟踪本地修改。我已将每个已安装的服务器设置为自己的存储库(并将 apache 配置为不为 .hg 目录提供服务)。
我的困难是开发树还包含本地配置,我想避免将它的每一点都放在未版本化的配置文件中。那么,我该如何设置以避免将本地配置传播到主存储库和已安装的副本?
示例:我有一个很长的 config.ini 文件,应该对其进行版本控制和分发。“干净”版本包含数据库连接参数的占位符,我不希望开发服务器的密码最终出现在已安装副本的存储库中。但有时我会做出一些我确实需要传播的更改(例如,新的默认值)。有几个文件处于类似情况。
到目前为止,我能做的最好的事情是安装 mq 并将本地修改变成一个补丁(实际上是两个补丁,具有逻辑上独立的变更集)。每次我想向本地存储库提交常规变更集时,我都需要弹出所有补丁、提交修改并重新应用补丁。当我准备好推送到主仓库时,我必须再次弹出补丁,推送并重新应用它们。这一切都令人费解且容易出错。
我能看到的唯一另一种选择是忘记推送,只将变更集作为补丁传播,这似乎是一个更糟糕的解决方案。有人可以建议更好的设置吗?我无法想象这是一个如此不寻常的配置,但我还没有找到任何关于它的信息。
编辑:在跟进这里的建议之后,我得出的结论是,命名分支加上 rebase 提供了一个简单且可行的解决方案。我以自己的答案的形式添加了描述。请看一下。
mercurial - 如何在 TortoiseHg 2.x 中折叠补丁 (qfold)?
我看过一些关于 qfold 以及如何在 TortoiseHg 1.x 中进行操作的教程,但我无法弄清楚折叠补丁的按钮在 2.x 中的位置。官方文档根本没有提及。有人知道怎么做吗?
mercurial - 取消不需要的更改并对其进行修补
我正在与远程仓库的某个人合作。我们意识到我所做的更改应该从 repo 中删除。但是这些更改存在于许多更改集中,并与某人的更改混合在一起。
我们决定在我提交另一个变更集之前删除我的更改。所以我用未提交的更改和它做了一个补丁。qpop
现在我想从远程撤消我的其余更改,并有选择地修补这些更改,使我的同事的更改保持不变。
此外,我想在一个补丁中获得来自新补丁的差异和来自patch_ive_made_before的差异。所以换句话说 - 我想从 2 个不同的变更集中获得一个补丁。我必须手动完成吗?
然后在我这样做之后,我将commit
/push
清除存储库中的更改。
Mercurial Queues 如何做到这一点?
version-control - 如何防止 Mercurial 补丁被拉取?
到目前为止,我还没有找到明确的答案,尽管答案可能是“改变你的工作流程”。
我刚刚开始使用 Mercurial 的补丁队列,我可以看到其中的强大功能。看起来非常棒。在我的测试中,我发现如果你有一个补丁队列repo1
,并且你从 中拉取repo2
,你可以做一些坏事。例如:
- 创建 repos 1,然后克隆它。
- 启用队列
repo1
- 进行一些提交和一些补丁
repo1
- 将更改拉到
repo2
- 在
repo1
取消应用(流行?)你所有的补丁 - 将更改拉到
repo2
现在您将看到两个不同的分支 - 从某个角度来看这是有道理的。但是,由于我的补丁不是repo1
's 历史的一部分(至少在它们被应用之前),似乎应该有一种方法告诉 mercurial 我的补丁是禁止使用的,并且只提供“官方历史”。
有没有办法做到这一点?
mercurial - Mercurial:如何从中断的“qpop -a”中恢复?
我已将几个修订导入队列并尝试将它们全部弹出。不幸的是,根据其他一些访问同一存储库的 Mercurial 客户端,hg qpop -a
没有成功完成:
现在我不能再把补丁推回去了。Mercurial 总是抱怨“未知节点”:
这是什么意思?如何解决这个问题?