使用git模拟全局修订号

Sam*_*ron 16 git version-control

我将如何为git主线中的每个提交模拟全局增加的修订版号?

因此,在我提交后,我希望运行的脚本在某处增加一个数字.

这将允许我轻松地告诉我的客户,在git修订版XYZ中修复了X功能.

我正在寻找一个足够强大的实用示例脚本来处理推送和合并到一定程度.

u0b*_*6ae 27

git describe为您提供如下版本说明:v2.0-64-g835c907.该v2.0部分是提交之前的最新注释标记的名称,64是之后的提交数,并且835c907是缩写的提交ID.它基本上是以精确和方便(虽然技术)的方式识别任何修订.

注意:为此,您需要至少一个带注释的标签.要为版本v2.0运行创建一个 - git tag -a v2.0,如果没有带注释的标签,则此命令将失败,除非给出一个类似--tags或的回退参数--always.


Che*_*ion 9

可以在git中模拟修订版号,但重要的是要知道它不是完美的匹配而不是最容易追溯到的.我个人用它为Web应用程序制作更简单的修订号,因为我是唯一的开发人员.我在我的下面使用了以下函数.bashrc来获取版本号,然后我将其用于发行说明(但如果你还没有我强烈建议标记版本 - 那么这个数字仅适用于用户).如果这些限制是众所周知的,它会提供更加人性化的修订号.

function rgit() {
    git rev-list --abbrev-commit HEAD | wc -l | awk '{print $1}'
}
Run Code Online (Sandbox Code Playgroud)

  • `awk` 部分没有用,因为你将 `-l` 选项传递给了 `wc`。 (3认同)

cle*_*tus 6

我认为你的版本号与版本号混淆了.

Subversion使用修订号,因为它可以:它是一个集中的存储库.Git当然有SHA-1哈希值而不是版本号,因为它没有中央存储库(但你知道这一点).

该版本号(以及散列在技术上是160位数,它只是不顺序)不应该真正引起客户的关注.他们应该关注的是发布号码.那就是当你打包你的源代码并说"这是版本2.3.4",并附上发行说明以说明改变了什么.

理想情况下,这样的列表是由问题跟踪软件生成的,您的源代码只是标记为说明哪个版本构成该版本号.

  • 除了Git根本不使用128位GUID.Git使用存储的每个对象的160位SHA-1哈希值.GUID是一个完全不同的野兽:http://en.wikipedia.org/wiki/GUID (2认同)