【发布时间】:2011-09-17 18:49:10
【问题描述】:
我一直在阅读有关 mercurial 标签的内容。我可以看到,通常,我们标记一个变更集来标记一个发布点,这些标记也是受修订控制的。
但我无法真正理解拥有.hgtags 文件的想法。这个文件的目的是什么?
【问题讨论】:
我一直在阅读有关 mercurial 标签的内容。我可以看到,通常,我们标记一个变更集来标记一个发布点,这些标记也是受修订控制的。
但我无法真正理解拥有.hgtags 文件的想法。这个文件的目的是什么?
【问题讨论】:
拥有.hgtags 文件允许使用与记录对所有其他文件的更改相同的格式记录对.hgtags 文件的更改。它还允许以用于传输文件更改的相同格式在存储库之间传输标签。
这允许 Mercurial 实现一个系统来存储对目录的更改,以及一个用于将一堆更改传输到目录的协议,并在传输文件更改时自动处理分支和标记信息。
它还允许人们通过查看.hgtags 文件的历史记录来查看项目标签的历史记录。
【讨论】:
hg clone -r <tagname> 的混淆,以及当两个单独的标签被添加到两个单独的分支上时,解决.hgtags 文件中的冲突的不必要要求,这些分支稍后合并。
两个相关存储库中的标签名称可能有冲突。
例如标签 A 可能在一个 repo 中的变更集 id X 上,而在另一个 repo 中,相同的标签可能指向变更集 id Y。在合并期间,必须解决此冲突。
合并期间的冲突通过检查文件和相关修改来解决。
因此,标签必须存储在 repo 中的普通文件中。
【讨论】:
我实际上根本看不出有一个单独的标签文件有什么用处。应使用“日志”命令很好地查看存储库历史记录(包括标签)。拥有标签文件也违反了一条重要规则:与版本控制系统严格相关的更改不应以任何方式更改存储库。
【讨论】: