You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mercurial仓库图疑难咨询:mq变更集与时间戳问题

解析Mercurial仓库提交图的两个疑问

问题A:mq相关变更集

提交图如下:

o  changeset:   93:b0aa6f2898b6
|  parent:      91:88cca7c8f32e
|  user:        test <test@gmail.com>
|  date:        Tue Feb 19 13:36:00 2019 +0100
|  summary:     some message
|
| o  changeset:   92:0aff2e92ec57
|/   user:        test <test@gmail.com>
|    date:        Tue Feb 12 18:10:10 2019 +0100
|    summary:     [mq]: 2019-02-12_18-10-04_r91+.diff
|
o  changeset:   91:88cca7c8f32e
|  user:        test <test@gmail.com>
|  date:        Tue Feb 12 18:09:49 2019 +0100
|  summary:     some message
|

疑问1:变更集92的含义是什么?是否可类比Git中的回退提交?

变更集92是Mercurial Queues(mq)生成的补丁变更集,它不是回退提交。mq是管理临时补丁的工具,这个变更集对应一个应用在91上的补丁文件(即摘要里的.diff文件)。后续用户放弃了这个补丁,转而基于91直接提交了93,导致92成为一个孤立的、未被主线合并的mq补丁变更集,和Git里的回退操作(比如revert或reset)完全不是同一概念。

疑问2:此场景下的“mq”指代什么?

这里的mq是Mercurial Queues的缩写,是Mercurial的扩展工具,用于管理一系列补丁。它允许开发者将变更拆分为多个独立补丁,随时应用、移除或修改这些补丁,常用于需要反复调整的特性开发或补丁维护场景。这个变更集由mq工具自动生成,用于记录补丁内容和应用状态。

问题B:与父提交不匹配的时间戳

提交图如下:

o  changeset:   62:143401518e68
|  parent:      60:327ffdb4b8c3
|  user:        test <test@gmail.com>
|  date:        Fri Nov 16 21:19:00 2018 +0100
|  summary:     some message
|
| o  changeset:   61:b4a37ff37688
|/   user:        test <test@gmail.com>
|    date:        Fri Nov 16 16:00:00 2018 +0100
|    summary:     some message
|
o  changeset:   60:327ffdb4b8c3
|  user:        test <test@gmail.com>
|  date:        Fri Nov 16 18:10:00 2018 +0100
|  summary:     some message
|

疑问3:如何解读变更集61的时间戳?其时间戳是否应介于60和62之间?

变更集的时间戳是提交创建时的本地时间,并非仓库内的“顺序时间”。这个场景中61的时间早于父提交60的时间是完全合理的:

  • 开发者可能先基于旧版本(60的祖先)在本地创建了61的变更,之后才提交了60;
  • 或者通过hg commit --date手动指定了提交时间戳。

因此时间戳不需要严格介于父提交和后续提交之间,它仅反映该变更在本地被创建的时间,与仓库的提交顺序没有强制绑定关系。


内容的提问来源于stack exchange,提问作者Wackamie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:55:21