gpt4 book ai didi

mercurial - ISO Mercurial“属性”-应用于多个变更集的标签,在变更集之后应用

转载 作者:行者123 更新时间:2023-12-01 02:34:01 25 4
gpt4 key购买 nike

简要

如何在Mercurial中使用相同标签标记多个变更集?可能在同一分支上,也可能在不同分支上。

例如。就像是标记,说明是否执行了完整的质量检查测试。

我可以通过编辑文件来创建标签的多个实例,但是hg工具几乎总是忽略除第一个以外的所有实例。

详情

我正在寻找被称为“变更集”的“属性”,这是我在其他CVS和DVCS中使用过的概念,但是在Mercurial中似乎找不到。

基本上,属性非常类似于标签,但是在标签仅应指代单个变更集的情况下,属性可以应用于多个变更集。

问:有人知道该怎么做吗?

同样:在创建变更集之后,是否可以将描述附加到变更集。请注意,我不想重写历史记录:我不想删除或更改或替换原始签入消息。我只想添加一些其他内容-并让更多的内容出现在诸如hg log之类的查询中。例如。 “我忘记添加文件来提交df..a3-而是提交8f..77来检查丢失的文件。

令人发指的细节

我知道-您可以执行hg标签-f强制将标签应用于多个变更集。但是许多其他与hg标签相关的功能实际上只能对每个标签进行一次更改。或每条血统至少只有一个变更集-即每头。

因此,您可以保留永远定义的标签。我喜欢将日期或其他上下文放在这样的标签中-例如tests-pass-2012-01-14。

或者,您也可以使用向上浮动的“浮动标签”,例如“所有慢速测试通过的最新版本”,我可以简称为“ tests-pass”。

(顺便说一句,您可以在签入后应用此类属性或标签-尤其是如果您的质量检查过程较慢,可能是快速的冒烟测试,然后是较慢的全套测试,则可能需要一周的时间才能完成。因此,签入,然后再返回并应用带有唯一日期标记的属性,然后您可能需要返回并修改这样的标记,例如,如果添加了更多测试,则用于通过所有测试的变更集不会例如,all-tests-pass-2012-01-14和all-tests-pass-2012-01-15可能适用于同一变更集。)

但是必须统一这样的固定标签是很麻烦的。因此,我称之为属性:一个应用于多个变更集的标记,该标记受版本控制。因此,您可以将所有测试通行证应用到修订版105,然后再应用到106和107。但是随后您意识到新的测试在106上失败,因此您进行了回复。

然后,属性历史记录可能看起来像

105:
tagged all-tests-pass on 2012-01-14-10h00 (in changeset XXX)
tagged all-tests-pass on 2012-01-15-10h00 (in changeset YYY)

106:
tagged all-tests-pass on 2012-01-14-13h00 (in changeset XXX)
tagged not-all-tests-pass on 2012-01-15-13h00 (in changeset YYY)

107:
tagged all-tests-pass on 2012-01-14-14h00 (in changeset XXX)
tagged all-tests-pass on 2012-01-15-10h00 (in changeset YYY)


和一个revset查询

 105::107 and current_attribute_tag(all-tests-pass)


=最晚在仓库中YYY或之后返回105和107
=,但如果克隆后返回105、106、107,则不包含YYY



 105::107 and attribute_tag_at_any_time(all-tests-pass)


=如果回购持有XXX,则随时返回105106和107

===

我希望能够做类似的事情


运行hg bisect,但仅在标记为tests-pass的变更集上运行。
从汞日志和glog中排除某些日志消息


等等

===

顺便说一句,出于此目的,我拒绝阶段和书签,因为它们不受版本控制。而且我希望对这些属性标签进行VCed处理,以便如上所述,我可以遵循所有测试通过的流程。

分支几乎是我想要的,因为Mercurial分支实际上是变更集属性,而不是分支。但是我不认为与变更集关联的分支可以在提交后更改。

(我真的希望您可以在提交变更集后将其切换到分支。我称此为功能“追溯分支”。)

===

这是一个为什么需要属性的经典示例:您是否曾经忘记向VCS添加文件?然后有一个构建失败的变更集?在随后的changest中添加文件? ...

我希望能够将变更集追溯标记为will-not-build-missing-files。然后,二等分甚至不用理会这些变更集。

最佳答案

看看这个:Custom revision properties in Mercurial?

没有对属性的本地支持。您可以编写一个扩展名(有一个extra属性字典,该字典随变更集一起保存)。

或者,您也可以将其与每个标记的多个变更集一起使用(如您所建议)。

或者,您也可以将其与新的all-tests-pass分支一起破解,并在所有测试通过时将您的CI服务器合并到该分支(然后bisect是默认的技巧和all-tests-pass技巧)。

但是简短的答案仍然是,尚无现有的本地方法可以做到这一点。

关于mercurial - ISO Mercurial“属性”-应用于多个变更集的标签,在变更集之后应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11164296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com