问题标签 [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 - 为不使用 MQ 创建的一系列现有变更集创建补丁?
我最近开始研究一个使用 Mercurial 的开源项目。我是 Mercurial 的新用户,所以我阅读了 HG 的书并开始工作。我的目标是编写代码并始终从上游提取和合并更改,以便我可以保持最新状态。我正在研究的领域也正在被其他人大力开发,所以我确实想在很长一段时间后合并我的更改。我克隆了一个仓库。所以,我的工作流程是这样的:
我创建了一个书签 mybook
hg up mybook
编写代码
3.1hg commit -m 'new functions'
hg up default
hg pull
hg update
hg up mybook
hg merge default
转到第 3 步。
在我看来,这是让我保持最新状态的最简单的工作流程。我也只有一个 HEAD,因为我总是合并。
由于我还不是贡献者,因此不允许我将更改推送到远程仓库。
最近我想向项目负责人展示我的工作,他说给我发一个补丁。这就是我卡住的地方。hg out
显示 10 个变更集。第一个出现在一个月前。他们的数字是3341, 3342, 3345, 3346, 3349, 3356, 3360, 3365, 3366, 3368
。变更集编号3368
是提示。
我最近阅读了有关 MQ 扩展的章节。而这个扩展似乎正是我所需要的。但问题是我编写代码时没有使用 MQ 扩展。
那么,如何在已经创建的变更集上使用 MQ 扩展,以便我可以制作一个补丁发送给项目负责人,以便他可以应用它并查看我的更改?
我刚刚发出hg qinit
。下一步是什么?发行hg qimport -r 3341
给
阅读这本书并进一步搜索对我没有帮助。我需要一个建议。
PS 我试过根本不使用 hg 和 MQ:简单diff -urN old/ new/
但我想了解如何使用 MQ 来做到这一点。
谢谢你。
mercurial - Mercurial Queues,补丁正在自动应用
我有两个补丁:
patch1
patch2
当我申请patch1
时,这是唯一被申请的东西。当我做hg qpop
然后做hg qpush patch2
时,由于某种原因patch1
也被应用了。我怎样才能使它们彼此独立?
version-control - 如何更改 hg mq 中的提交消息?
我在我的工作区中添加了 4 个补丁。在创建这些补丁时,我使用了qnew -m "<commit-message>"
. 现在我注意到我没有给出正确的提交信息。如何修改所有提交消息?
我尝试了几件事:
$ hg ci
;
abort: cannot commit over an applied mq patch
$ hg qci
abort: no queue repository
mercurial - 中止:没有这样的文件或目录:'/mnt/factotum/rpc' [Mercurial]
我在进行克隆、推或拉时遇到问题。当我这样做时,我得到一个错误:
中止:没有这样的文件或目录:'/mnt/factotum/rpc'
我该如何解决这个问题?
- 操作系统:Ubuntu 16
- 工具:Mercurial、BitBucket
mercurial - 撤消 Mercurial 队列顶部的意外 hg 修改
以下命令序列要求启用 Mercurial Queues 扩展,以及 Evolve 扩展(for hg amend
, alias hg refresh
)。
这种命令组合会弄乱现有的 Mercurial 队列,使与推送的补丁对应的提交过时,并创建一个内容完全相同的新提交。
这个错误在理论上很容易犯:只需输入hg ref
而不是hg qref
,但我最近在使用 Mercurial Queues 多年后才犯了这个错误。无论如何,我还没有想出一个干净的方法来解决这个问题并恢复原始状态。
请注意,hg rollback
在我的示例中,一个简单的方法确实有效,但我不确定它是否适用于我的情况,因为我尝试了其他方法来解决这个问题。无论如何,hg rollback
这不是一个人应该依赖的东西。总之,我如何撤消hg amend
并取回我应用的 MQ 补丁?
version-control - 如何确定是否已应用 mercurial 补丁
我正在使用 mercurial 队列来应用补丁。我有 .patch 文件和系列文件。我将它们复制到 .hg/patches 目录中。然后我运行以下命令:
hg qpush -all
现在,假设补丁 A 失败。我调查并发现补丁 A 已被应用。所以我从系列文件中删除补丁 A 并再次执行该过程。
我的问题是:我怎样才能安全地知道我的补丁未能应用的原因是因为它已经应用了?或者有没有办法事先知道补丁已经应用?
mercurial - 如何将现有补丁签入 Mercurial 队列存储库
我有一个现有的队列目录,其中已经有一些补丁。我即将将它们折叠成一个提交,但我想在这样做之前保留原始补丁。我怎样才能做到这一点?
这是我到目前为止所尝试的:
然后,由于我有足够的知识是危险的,我尝试手动创建补丁存储库:
但是当我尝试提交时,它不会让我:
如果解决方案需要,可以删除补丁存储库。它是空的,所以这样做很安全。