显示命名分支中Mercurial提交的数量

显示命名分支中Mercurial提交的数量,mercurial,Mercurial,我将使用id--num--rev tip命令和一个小的CMake脚本的组合来生成库的构建编号 它都可以工作,但库的规范版本存在于它自己的“供应商”分支中,因此我需要能够使用一个参数执行id--num--rev tip,该参数告诉它在不同于默认值的分支中查找 我所有的尝试都失败了——这可能吗?如果可能,正确的语法是什么?嗯,没有一个!不要使用mercurial存储库中的数字版本来进行版本控制。数字版本号对于单个存储库来说是严格的本地版本号,甚至可以在进行本地克隆时更改 我非常推荐使用并可能计算自上

我将使用
id--num--rev tip
命令和一个小的CMake脚本的组合来生成库的构建编号

它都可以工作,但库的规范版本存在于它自己的“供应商”分支中,因此我需要能够使用一个参数执行
id--num--rev tip
,该参数告诉它在不同于默认值的分支中查找


我所有的尝试都失败了——这可能吗?如果可能,正确的语法是什么?

嗯,没有一个!不要使用mercurial存储库中的数字版本来进行版本控制。数字版本号对于单个存储库来说是严格的本地版本号,甚至可以在进行本地克隆时更改

我非常推荐使用并可能计算自上次这样的标记以来的提交。您的这些努力的朋友是,并且允许您访问这些(同时签出
hg-help-revset
hg-help-templates

例如

这为我的一个存储库分别提供了默认
0.4.4-11
和0.2分支
0.2.5-1
。如果您想要给定分支中的特定版本而不是最新版本,只需将
--rev
-参数替换为您感兴趣的实际版本即可

请注意,在上述形式中,如果您使用的分支具有多个头部,并且在标记后分支,则仍然存在歧义;因此,在任何版本控制方案中都没有好的方法可以使用提交哈希。因此,对于当前签出的版本,我通常使用以下版本:

 hg log -r. --template="{latesttag}-{latesttagdistance} (h{node|short})"

这给了我
0.4.4-11(h96b8395ca393)

呃,没有这些!不要使用mercurial存储库中的数字版本来进行版本控制。数字版本号对于单个存储库来说是严格的本地版本号,甚至可以在进行本地克隆时更改

我非常推荐使用并可能计算自上次这样的标记以来的提交。您的这些努力的朋友是,并且允许您访问这些(同时签出
hg-help-revset
hg-help-templates

例如

这为我的一个存储库分别提供了默认
0.4.4-11
和0.2分支
0.2.5-1
。如果您想要给定分支中的特定版本而不是最新版本,只需将
--rev
-参数替换为您感兴趣的实际版本即可

请注意,在上述形式中,如果您使用的分支具有多个头部,并且在标记后分支,则仍然存在歧义;因此,在任何版本控制方案中都没有好的方法可以使用提交哈希。因此,对于当前签出的版本,我通常使用以下版本:

 hg log -r. --template="{latesttag}-{latesttagdistance} (h{node|short})"

这给了我<代码> 0.4.4-11(H96B8395CA33)

谢谢你的解释@ PrimeMeTe-我有很多关于Myalix.学习的,我认为正确的方法来生成我的用例的构建号是一个外部的C++应用程序,它将一个单调增加的值插入到版本头中——“自从第一次提交以来的日子”或类似的事情。考虑使用提交的时间信息,但是不一定是顺序的,因为提交可以在2个星期前完成,但是现在只被推到您的回购。但是,如果您的提交顺序不是非常高,您可以使用unix时间:
hglog-r-T{date | hgdate}
我花了很长时间试图找到分布式存储库的顺序版本控制,它基本上适用于所有情况。除非您有一个用于构建所有人工制品的授权存储库,并且您认为从另一个非授权repo构建它可能会产生不同的结果,否则无论您做什么,都不会得到严格的线性版本控制。因此,我(强烈)的建议是:不要使用线性版本控制方案,它与svn一起工作,但会导致分布式VCS的崩溃:)在发布时使用标签,在开发版本中使用类似的内容。感谢@planetmaker的澄清-我有很多关于Mercurial的知识要学习。接下来,我认为为我的用例生成一个构建号的正确方法是一个外部C++应用程序,它将一个单调增加的值插入到版本首部——“自从第一次提交以来的日子”——或者类似的事情。考虑使用提交的时间信息,但是这不一定是顺序的,或者2个星期前提交的。但现在只是推到你的回购协议。但是,如果您的提交顺序不是非常高,您可以使用unix时间:
hglog-r-T{date | hgdate}
我花了很长时间试图找到分布式存储库的顺序版本控制,它基本上适用于所有情况。除非您有一个用于构建所有人工制品的授权存储库,并且您认为从另一个非授权repo构建它可能会产生不同的结果,否则无论您做什么,都不会得到严格的线性版本控制。因此,我(强烈)的建议是:不要使用线性版本控制方案,它可以与svn一起工作,但会导致分布式VCS的崩溃:)在发布时使用标签,在开发构建时使用上面类似的方法。