为什么在Mercurial中使用单独的标记文件

为什么在Mercurial中使用单独的标记文件,mercurial,tags,Mercurial,Tags,我一直在读有关mercurial标签的文章。我可以看到,通常,我们标记一个变更集来标记一个发布点,并且这些标记也受版本控制 但是我真的无法理解拥有.hgtags文件的想法。此文件的用途是什么?具有.hgtags文件允许使用记录所有其他文件更改所用的相同格式记录对.hgtags文件的更改。它还允许标记以传输文件更改所用的相同格式在存储库之间传输 这允许Mercurial实现一个系统来存储对目录的更改,以及一个协议来将一系列更改传输到目录,并在传输文件更改时在中自动处理分支和标记信息 它还允许用户通

我一直在读有关mercurial标签的文章。我可以看到,通常,我们标记一个变更集来标记一个发布点,并且这些标记也受版本控制


但是我真的无法理解拥有
.hgtags
文件的想法。此文件的用途是什么?

具有
.hgtags
文件允许使用记录所有其他文件更改所用的相同格式记录对
.hgtags
文件的更改。它还允许标记以传输文件更改所用的相同格式在存储库之间传输

这允许Mercurial实现一个系统来存储对目录的更改,以及一个协议来将一系列更改传输到目录,并在传输文件更改时在中自动处理分支和标记信息


它还允许用户通过查看
.hgtags
文件的历史记录来查看项目标记的历史记录。

两个相关存储库中的标记名称可能会冲突

例如,标签A可能位于变更集id X的一个回购点上,而在另一个回购点上,相同的标签可能位于变更集id Y上。在合并过程中,必须解决此冲突

合并期间的冲突可通过检查文件和相关修改来解决


因此,标签必须存储在回购协议中的普通文件中。

事实上,我认为单独的标签文件没有任何用处。应该使用“log”命令查看存储库历史记录(包括标记)。拥有标签文件也违反了一条重要规则:严格与版本控制系统相关的更改不应以任何方式改变存储库。

缺点包括对
hg clone-r
的混淆,以及在两个单独的标签上添加两个单独的标签时解决
.hgtags
文件中冲突的不必要要求虽然我理解这些论点,但它看起来也很像“因为这是权宜之计”。这也是对标签并不是Hg的一流部分的承认。