gav*_*koa 3 git version-control mercurial branch bazaar
目前在我的实践中我使用VERSION文件来存储:
major=2 minor=0 fix=1
这意味着产品版本v2.0.1或更新版本的来源.
在每次发布之前,我必须提交对此文件的更新,因此标记为tag2.0.1或release-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 --template "{latesttag}-{latesttagdistance}-{node|short}\n" --rev <REV>
Run Code Online (Sandbox Code Playgroud)
返回一个字符串,如:
2.1.4-2-12eeab7a8073
这告诉我们:
阅读模板以获取更多信息.
Git
有一个describe
提供相同信息的内置命令.但是,您必须了解默认情况下它仅适用于带注释的标记(有关详细信息,请参见手册页).