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 を config に忍び込ませる方法はありますか? または、私が考えていない別のアプローチはありますか?

4

2 に答える 2

1

アップデート

これはRuby固有の回答ですが、おそらく選択した環境で同等のものを実装できます...

元の答え

コメントを見て git ドキュメントを深く掘り下げた後、git タグはコミット後まで利用できないという理由だけで、バージョン番号の一部として git タグを使用しようとするのは賢明ではないようです。

そこで、config/version.rb ファイルに直接ビルド番号を追加する簡単な rake タスクを書きました。コミットとデプロイを行う前に、次のスクリプトを実行します。

# 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>最後のコミットに変更を追加するために使用します。これは、上記の例のプッシュ コマンドの直前に配置されます。

于 2013-03-19T13:47:56.820 に答える