2

警告:我不是 git 向导,所以我可能没有正确的术语......

在我将发布推送到 github 之前,我创建了一个反映当前提交标记的版本文件,有点像这样:

git commit -m <insert pithy comment here>
MAJOR=1
MINOR=2
BUILD=`git describe --all --tags`
echo VERSION = [${MAJOR}, ${MINOR}, #{BUILD}] > version.rb
git push origin master

这可行,但是对于 version.rb 在提交发生后被修改的明显缺陷。我可以将 verion.rb 添加到 .gitignore,但是有没有办法在提交后将 verion.rb 潜入配置而不创建新标签?还是有另一种我没有想到的方法?

4

2 回答 2

1

更新

这是一个 Ruby 特定的答案,但您可能可以在您选择的环境中实现等效的东西......

原始答案

在查看评论并深入研究 git 文档之后,尝试使用 git 标签作为版本号的一部分似乎是不谨慎的,如果只是因为 git 标签在提交之后才可用。

所以我写了一个简单的 rake 任务来直接在我的 config/version.rb 文件中增加内部版本号。我在进行提交和部署之前运行此脚本:

# Read config/version.rb file containing
#   VERSION = [a, b, c]
# Overwrite config/version.rb file to contain:
#   VERSION = [a, b, c+1]
task :bump_version do
  desc "increment build number in config/version.rb"
  file = "config/version.rb"
  unless (File.exist?(file))
    $stderr.puts("cannot locate version file #{file}")
  else
    s = File.open(file) {|f| f.read}
    if (s =~ /(\d+)\D+(\d+)\D+(\d+)/)
      s1 = "VERSION = [#{$1}, #{$2}, #{$3.to_i + 1}]"
      $stderr.puts(s1)
      File.open(file, "w") {|f| f.puts(s1) }
    else
      $stderr.puts("cannot parse version file")
    end
  end
end

对我来说很好。

于 2013-03-20T15:25:45.987 回答
-1

用于git commit --ammend -m <pithy comment>将更改添加到最后一次提交。这将在上面示例中的 push 命令之前进行。

于 2013-03-19T13:47:56.820 回答