目前在我的实践中我使用的版本文件存储:如何在Git/HG/Bzr中找到当前修订版本的最新标记?
major=2 minor=0 fix=1
这意味着在产品版本V2.0.1或更新的来源。
每次发布之前,我必须承诺更新此文件,以便与名tag2.0.1标签或释放2.0.1盖上面的内容(而不是以前的版本!)。
我认为可以通过从构建脚本自动生成VERSION文件来避免这项工作。
查找到修订版历史:
+--+-----+----------------------+-YY--+----+------+------+-HH--> dev| | ^ ^ | | | | | | | | | | | v v v | | | | | | +--+------+-ZZ---+--> | | | | | | b2 | | | | | | | | | v v v | | | | | | t2.0.0 t2.0.1 t2.1.0 v v | | v v t0.1.0 +---+--XX--+-+---+-+-----+------+------+------+------+---> b1 | | | | | | | | v v v v v v v v t1.0.0 t1.0.1 t1.0.2 t1.1.0 t1.2.0 t1.2.1 t1.2.2 t1.2.3
在点XX版本是1.0.0 ,在点YY版本是1.0.2 ,在点ZZ版本2.0.1。
对于点HH是不知道如何设置版本。我认为它必须是1.0.2,因为我们不合并dev分支与发布分支b2。
我读:
$ hg help revsets
,但不知道怎样才能找到最近的标记特定的修订。与Git和Bzr我有较少的经验...
或者,如果这是不可能的,我寻找参数。另外我想听听如何避免手动维护VERSION文件(如果可能的话)(或者说为什么这是不可能的)。
PS。 VERSION文件需要维护程序包依赖性并在用户反馈中识别产品源状态。
PSS。给定修订版的最近标记术语可能看起来模糊不清,但每个开发人员都可以说它在哪个版本的产品上工作。为什么这不能做机器?
我可以使用特殊的版本名称 ''为当前修订。所以现在我使用:** hg log -r。 - 模板“{latesttag} - {latesttagdistance} - {node | short} \ n”**。感谢分享,1+ – gavenkoa
hg -R repo log -r“sort(tag()and ancestors($ REV), - date)”make same。我尝试在Mercurial源代码中搜索此标签... – gavenkoa
** {latesttag} **和** {latesttagdistance} **仅在Mercurial 1.4以后才可用。 – gavenkoa