我们有一个构建系统,它使用svn ID作为需要五位数字的VM构建器设备的输入。当我从git构建时,我通过计算git repo中的提交数量来伪造它。这只是一种工作: - /我想弄清楚:
答案 0 :(得分:2)
您正在寻找git describe:
该命令可找到最新的标记 可以从提交中获得。如果 然后,标签指向提交 只显示标签。否则,它 标签名称后缀为数字 在...之上的其他提交 标记对象和缩写 最近提交的对象名称。
$ git describe master
v1.10-5-g4efc7e1
答案 1 :(得分:2)
如前所述,你想使用 git describe ,这是我的rake任务,它自动打印出递增的semver compliant version numbers:
task :version do
git_describe = `git describe --dirty --tags --match 'v*'`
version, since, sha, dirty = git_describe.strip.split("-")
major, minor, patch = version.split(".")
version = "#{major}.#{minor}.#{patch}"
if sha
patch = String(Integer(patch) + 1)
version = "#{version}pre#{since}-#{sha[1..sha.length]}"
end
if [since, dirty].include?("dirty")
version = "#{version}-dirty"
end
puts version
end
像这样使用:
$> rake version
v0.9.8pre32-fcb661d
答案 2 :(得分:0)
在git中,每个提交都会生成一个唯一的SHA1哈希ID。运行git log
时,您可以看到每个提交的ID。如果您想要最近一次提交的5位数字,您可以执行git log --pretty=oneline --abbrev-commit --abbrev=5 -1
之类的操作。对于我的一个repos,输出看起来像这样:
$ git log --pretty=oneline --abbrev-commit --abbrev=5 -1
3b405... fixed css for page title.
您可以尝试使用git log
的其他选项来根据需要自定义格式。当然,如果存储库有足够的提交,那么总有可能5个数字不足以保证唯一性,但对于足够小的项目它可能会这样做。