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

问题描述 投票:12回答:4

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

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

ruby-on-rails-3 git ruby-on-rails-3.1
4个回答
11
投票

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

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

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


18
投票

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

完整哈希:

git rev-parse HEAD

哈希的前7个字符:

git rev-parse --short HEAD

3
投票

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

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

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


1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.