使用mercurial克隆或拉到标记后如何获取标记变更集?

Geo*_*eng 7 mercurial clone

正如明确指南恰当指出的那样(搜索"标签和克隆"):

当您hg clone -r foo从标记运行克隆存储库时foo,新克隆将不包含比标记引用的更新的任何修订版本,包括创建标记的修订版本.结果是,您将在新存储库中获得项目历史记录的正确子集,但不会获得您可能预期的标记.

这意味着hg tags在您的新克隆中不显示foo标记.如果您在foo添加标记之前克隆了同样的事情,那么就是这样hg pull -r foo.

(题外话:标签是我唯一不太理解的东西.我理解将它放入变更集中有优势(例如合并),但是将元数据与源代码混合在一起感觉很奇怪.)

很明显,我要求采用自动化方式,而不是将标签变更集作为单独的手动步骤.

我知道我可以在incoming钩子中检查这个场景(因此它适用于克隆和拉动),或者包装clonepull.

但是有更好/更简单的方法吗?


UPDATE hg bug tracker已经有了这个问题.

Geo*_*eng 0

是的,这可以通过后克隆/拉钩来完成,但是有一些骗子。

首先,它仅适用于本地存储库,因为您无法获取远程存储库中的标签列表。

其次,处理克隆/拉取参数和选项并不简单。(对于克隆,我需要获取目标存储库,,,,-r-u对于-U拉动,我需要-r-u。)我尝试使用 fancyopts,但它无法处理全局选项,这些选项在调度中处理掉。我设法破解调度,只给我命令的参数和选项,但感觉和看起来都很丑。

使用命令包装器可以消除第二个问题。

我希望有一天 hg 会添加一个选项来克隆和拉取以干净地完成它。