我们有一个构建系统,它使用svn ID作为输入到需要五位数字的VM builder设备的输入。当我从git构建时,我通过计算git repo中的提交数来伪造这个。这只是一种工作: - /我想弄清楚:从git存储库中获取版本号
- 我怎么能从git回购得到一个独特的5位数字。
我们有一个构建系统,它使用svn ID作为输入到需要五位数字的VM builder设备的输入。当我从git构建时,我通过计算git repo中的提交数来伪造这个。这只是一种工作: - /我想弄清楚:从git存储库中获取版本号
您正在寻找git describe:
命令查找最近的标签 是从提交访问。如果 标签指向提交,则 只显示标签。否则,其 后缀的标签名称为 标记对象顶部的附加提交编号为 ,而最近提交的对象名称为 。
$ git describe master
v1.10-5-g4efc7e1
在git中,每个提交都会生成一个唯一的SHA1哈希ID。运行git log
时,您可以看到每次提交的ID。如果您想要最近一次提交的5位数字,您可以执行类似于git log --pretty=oneline --abbrev-commit --abbrev=5 -1
的操作。对于我的回购的一个输出看起来是这样的:
$ git log --pretty=oneline --abbrev-commit --abbrev=5 -1
3b405... fixed css for page title.
您可以用其他选项进行试验,以git log
自定义格式,如果需要的。当然,如果存储库有足够的提交,总是有5位数字不足以保证唯一性的可能性,但是对于足够小的项目它可能会这样做。
你想用git的描述正如前面所说的,这里是我的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
您可能会想要使用'--tags'选项,除非您习惯使用仅带注释的标记。 – Cascabel 2010-08-30 22:16:17