2012-04-03 4 views
7

現在、gitでセマンティックバージョニングを使用する際に問題が発生しています。セマンティックバージョニングがgitワークフローにどのように適合するか

我々はhttp://nvie.com/posts/a-successful-git-branching-model/

でGitのバージョン管理モデルを使用している我々はまた、ここでhttp://semver.org/

で概説セマンティックバージョニングのガイドラインに従うことを希望私たちのためのサンプルユースケースです。

Release branch: ----1----2----3----4 <- tag v1.2  ----7---8---9 <- tag v1.3 
       /    \    /   \ 
Develop branch: --0--------5---------4--6-----------------------------9-- 

は、ここに私たちのサンプルユースケースです:

  • 開発、リリースに並列に発生し、
  • リリースを開発行く準備ができて、私たちは、V1.2としてそれにタグを付けます。変更1、2、3、4のリリースノートを生成します。
  • リリースを統合して開発します。
  • 別のリリースのために開発の分岐を再開する準備ができたら、それを行うことができます。しかし、タグv1.2が4を指しているので、v1.2とv1.3の間の変更をクエリすると、5のリリースノートは実質的に失われます。

私たちは何をしたいですか?タグv1.3に新たに組み込まれたタグv1.2が作成されたので、新たに追加されたすべてのチェックインを検索し、コンポーネントのバージョンバンプ(xyz)の種類を判断できるようにします。

5が大きく変更されたが、v1.2以降のすべてがそうでない場合、チェックイン5がビルドに含まれていないため、マイナーバージョンが間違ってバンプリングされます。

これを解決する方法についてご意見はありますか?

答えて

2

「変更をクエリする方法」に依存していると思います。しかし、git log v1.2..v1.3などを使用している場合は、と正確にはとなります。

+0

git log v1.2..v1.3を使用した場合は、commit開発のためのHEADはリリースv1.2からのマージ後にコミット4を指しているので、5が除外されます。したがってコミット5はコミット4の前に挿入されるので、コミット5は本質的に "カバーされている"とみなされます。 –

+0

いいえ、本当に除外されません。あなたはそれを試しましたか? 'v1.2..v1.3'はgitのために" v1.3にあるコミット、v1.2のものを除いて "という意味です。つまり、それには5が含まれます。 – svick

+0

サンプルレポで試してみました。 。ありがとう!私の混乱は、HEADがv1.2からv1.3にタグをリリースすることを考えていることでした。 –

関連する問題