2016-07-04 14 views
1

開発用にgit repoを使用しています。時々、タグでマークされたリリースを行います。最新のタグ付きリリースをビルドする自動ビルドシステムもあります。一方、コミットは通常通りプッシュされます。最新リリースのタグ付け?

最新のリリースをマークして、自動ビルドがそれを受け取れるようにするにはどうすればよいですか?

自動化されたシステムは、常に同じURLからバージョンを選択することが重要です。最新のタグを解決するために、describeまたはその他のfetch-timeメソッドを使用してスクリプトを使用することはできません。

最初のアイデアは、LAST_RELEASEのような特定の軽量タグを使用して、リリースにタグが付けられるたびに移動します(削除して再作成します)。もう1つのアイデアは、別のブランチを維持し、その頭を最後のリリースタグと同期させておくことです。さらに別のアイデアは、ブランチを使用することですが、マージ/リベースを使用してブランチを同期させるのではなく、リリースごとに削除して再作成するだけです。

私は特にこれらの方法のどちらも好きではありません。これを達成するための確立された純粋な方法はありますか?

+0

なぜ同じURLからバージョンを選ぶ必要がありますか?また、同じURLで応答する小さなWebアプリケーションを書くことはできませんが、フードの下で 'describe'を使用していますか? – choroba

+0

@chorob私は会社のインフラストラクチャ全体に責任を負いません。ビルド担当者には、特定の方法で実行されるビルドサーバーがあります。私はフェッチするためにレポURLを記入することができ、それはそれです。私は彼らに私のためにカスタムビルドスクリプトを書かせることはできません。 –

答えて

1

最善の方法はブランチを使用することです。正しく実行された場合、stableブランチは、リバース/フォースプッシュなしに常に前方に移動する必要があります。新しいリリースを行うたびに、stableブランチをチェックアウトし、developブランチにマージすることができます。新しいリリースへの修正プログラムの変更が必要な場合は、stableブランチにコミット/マージブランチを追加し、developブランチをチェックアウトしてstableにマージすることができます。

このアイデアに基づいて一般的に使用される分岐モデルについては、hereをご覧ください。このモデルのmasterブランチは、直近のリリースを把握するのに必要なものです。

このような分岐モデルに切り替えることができない場合でも、分岐を使用する方が良いでしょう。新しいリリースにマークを付ける場合は、リポジトリを目的のリリースコミットにチェックアウトし、git push -f origin releaseを実行します。ブランチの削除と再作成と同じ効果があります。

タグは、作成されると常に同じコミットをマークするためのものです。支店は前進するためのものです。

+0

ありがとう、これは妥当と思われます。私はおそらく安定した支店としてマスターを使用することはできません、それはgerritでうまくいくようには見えません(または私はもっと多くのgerritを学ぶ必要があります)。 2番目の選択肢は単純で簡単です。 –

+0

@ n.m。異なるブランチを表すブランチ名を使用することができます。 –

+0

問題はマージされている、私たちのgerritの設定はマージするのが好きではなく、リベースだけです。私は両方向でマージする必要があるとき、これが問題になると思います。 –

関連する問題