正如明确指南恰当指出的那样(搜索"标签和克隆"):
当您
hg clone -r foo
从标记运行克隆存储库时foo
,新克隆将不包含比标记引用的更新的任何修订版本,包括创建标记的修订版本.结果是,您将在新存储库中获得项目历史记录的正确子集,但不会获得您可能预期的标记.
这意味着hg tags
在您的新克隆中不显示foo
标记.如果您在foo
添加标记之前克隆了同样的事情,那么就是这样hg pull -r foo
.
(题外话:标签是我唯一不太理解的东西.我理解将它放入变更集中有优势(例如合并),但是将元数据与源代码混合在一起感觉很奇怪.)
很明显,我要求采用自动化方式,而不是将标签变更集作为单独的手动步骤.
我知道我可以在incoming
钩子中检查这个场景(因此它适用于克隆和拉动),或者包装clone
和pull
.
但是有更好/更简单的方法吗?
UPDATE hg bug tracker已经有了这个问题.
是的,这可以通过后克隆/拉钩来完成,但是有一些骗子。
首先,它仅适用于本地存储库,因为您无法获取远程存储库中的标签列表。
其次,处理克隆/拉取参数和选项并不简单。(对于克隆,我需要获取目标存储库,,,,-r
。-u
对于-U
拉动,我需要-r
和-u
。)我尝试使用 fancyopts,但它无法处理全局选项,这些选项在调度中处理掉。我设法破解调度,只给我命令的参数和选项,但感觉和看起来都很丑。
使用命令包装器可以消除第二个问题。
我希望有一天 hg 会添加一个选项来克隆和拉取以干净地完成它。