git - 如何在 Git/HG/Bzr 中找到当前版本的最新标签?

标签 git version-control mercurial branch bazaar

目前在我的实践中我使用 VERSION 文件来存储:

major=2
minor=0
fix=1

这意味着产品版本 v2.0.1 或更高版本的来源。

在每次发布之前,我必须提交对此文件的更新,以便使用名称 tag2.0.1release-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.0YY 点版本为 1.0.2,点 ZZ 版本是 2.0.1

对于点HH是不知道怎么设置版本。我认为它必须是 1.0.2,因为我们没有将 dev 分支与发布分支 b2 merge 。

我读了:

  $ hg help revsets

但看不到如何找到最接近给定修订的标签。对于 Git 和 Bzr,我的经验较少...

或者,如果这不可能,我会寻找论据。我也喜欢听听如何避免手动维护 VERSION 文件(如果可能的话)(或者争论为什么这不可能)。

PS.需要 VERSION 文件来维护包依赖性并在用户反馈中识别产品源状态。

PSS。 nearest tag to given revision 术语看起来有些模糊,但每个开发人员都可以说出它适用于哪个版本的产品。为什么这个做不了机器?

最佳答案

你可以使用这样的东西:

hg log --template "{latesttag}-{latesttagdistance}-{node|short}\n" --rev <REV>

返回的字符串如下:

2.1.4-2-12eeab7a8073

这告诉我们:

  • 此次提交之前的最新标签是 2.1.4
  • 当前修订是超过该标记的 2 次提交
  • 变更集 ID 为 12eeab7a8073

了解 templates获取更多信息。

Git 有一个内置的 describe提供相同信息的命令。但是,您必须了解默认情况下它仅适用于带注释的标签(有关详细信息,请参见手册页)。

关于git - 如何在 Git/HG/Bzr 中找到当前版本的最新标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127338/

相关文章:

git - Laravel 5 包,怎么开发过来?

git - 用开源 SCM 工具(如 SVN/GIT 或其他工具)替换 CA Endevor

version-control - 如何将.hgignore添加到我的Mercurial文件夹?

linux - Mercurial 回退更新机制

Mercurial : Way to avoid skipping ancestor revision

xcode - 如何让 Jenkins 推送到 GitHub 但不触发推送构建

Git 将文件标记为二进制文件以避免行分隔符转换

svn - 颠覆后的空存储库 -> mercurial 转换

windows - winutils spark windows 安装 env_variable

svn - Subversion 与 Vault