首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mercurial中的标签是如何自动传播到所有分支的?

Mercurial中的标签是如何自动传播到所有分支的?
EN

Stack Overflow用户
提问于 2015-12-21 19:48:25
回答 1查看 209关注 0票数 2

假设我在Mercurial中有一些50+特性分支。如果我这样做了:

代码语言:javascript
复制
hg tag some-tag

在其中一个特性分支中,它似乎传播到所有分支。无论我在哪个特性分支中,hg tags都将显示所有标记。一切都很好很好。但是,如果我执行hg log,它将告诉我包含对.hgtags的更改的变更集发生在特定的分支中:

代码语言:javascript
复制
changeset:   4:ea48c727fbcd
branch:      feat1
tag:         tip
user:        Daniel <xxxx@yyyy.com>
date:        Mon Dec 21 20:15:11 2015 +0100
files:       .hgtags
description:
Added tag feat-1.0 for changeset 3c81a17d4b31

Mercurial如何使.hgtags在所有分支中保持同步?我读过汞标签设计,但没有提到任何细节。

我要问的原因是,我们在工作中使用Rhodecode来处理汞,当它承受很重的负载时,这种传播似乎明显滞后。

这种滞后非常恼人,因为我可以在.hgtags文件中看到最新的标记,但是hg tags没有列出最新的标记。做另一个标记有时会解决这个问题(可能是Rhodecode中的一个bug ),但我想知道它是如何工作的,以便更好地理解底层机制。

EN

回答 1

Stack Overflow用户

发布于 2015-12-21 21:56:00

引用一些文档

在任何给定时间有效的标记是在每个头中指定的标记。如果相同的标签在两个不同的标题中指定了两个不同的修订,则会出现一个困难的情况。这个问题没有一个普遍的“正确”的解决办法。 如果标记的两个定义/更改看起来像unrelated...the,则“最尖端”(例如,具有较高数值修订号的定义/更改)获胜。 ..。 但是,如果标记是在两个头的共同祖先中定义的,但仅在一个头中更改,则更改后的标记将战胜未更改的头。

另外:

如果只有一个头,则只考虑标记出现的最后一行。如果有多个头,则使用以前对标记的定义来确定哪个头持有最近的标记.如果标记指向0000000000000000000000000000000000000000000000000000000000000000000000000000,则视为删除。

我的猜测是,当您在多个分支中有多个需要解析的标记时,Mercurial必须查找每个更改集以确定其修订以确定“最顶端”。只有更改集哈希和标记名称在.hgtags中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34403283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档