从Rails应用程序中获取当前的Git提交版本?

时间:2011-12-06 21:30:19

标签: ruby-on-rails-3 git ruby-on-rails-3.1

如何从Ruby on Rails应用程序中检索当前的Git提交版本?

想要显示Git版本(或者最后6个字母左右)作为App版本。

4 个答案:

答案 0 :(得分:18)

像@meagar所说,使用反引号从你的应用程序中执行shell命令,但你可能会发现这两个命令更有用:

完整哈希:

git rev-parse HEAD

哈希的前7个字符:

git rev-parse --short HEAD

答案 1 :(得分:10)

您可以在脚本中调用git命令:

commit = `git show --pretty=%H`
puts commit

根据您的环境,您可能希望使用git二进制文件的完整路径,并可能通过环境变量或--git-dir指定GIT_DIR。

答案 2 :(得分:3)

更强大的解决方案是git show --pretty=%H -q-q flag使输出静音。

为了删除作为输出一部分的换行符,可以使用chomp。例如:system('git show --pretty=%H -q').chomp

当提交不是合并提交时,selected answer有可能实际返回差异。在git版本2.16.2.windows.1。上验证

答案 3 :(得分:1)

我认为你想在你的HTML中包含app版本?前提条件是您以默认方式使用Capistrano部署您的仓库(您正在上载仓库,而不是发送存档文件)。

您可以将一些代码添加到Rails初始化程序中outlined here。该方法将从上次提交中获取SHA1,并使其可用作环境变量。

另一种方法是让Capistrano任务在公共目录中生成一个静态文件,其中包含提交SHA。您可以在此文件中包含似乎有用的其他信息。