2016-05-10 9 views
1

現在、私たちはGitのバージョン管理ワークフローとしてチームを編成しています。私たちは、QAでテストされ、プロダクトオーナーが受け入れたすべてのチケットを含む、毎週プロダクションデプロイメントを行う反復作業を行っています。つまり、20個のチケットをテストし、15個のチケットがQAを通過してリリースに追加される可能性があります。開発者に送付された5枚のチケットは、リリースに含まれていない可能性があります。GitFlowを使って開発版から安定版をリリースする

我々は、以下の枝持って私たちのバージョン管理で

  • 機能/ * - 彼らは仕事が行われ終了するまで、特定のチケットに取り組む開発者(複数可)、自分をコミットし、その変更をプッシュしますチケットのために。このブランチは、開発ブランチに基づいて作成され、定期的に開発からの変更を他の開発者に追いつきます。
  • - このブランチでは、開発者は機能ブランチで行われた変更をマージします。また、CI環境は、最新の開発バージョンをビルドしてテスト環境に導入するために、このブランチに耳を傾けています。
  • リリース/ x.x - このブランチは、製品の所有者/ UATに配信するための新しいリリースの準備に使用されます。ここに私たちの問題があります。すべてのチケットをプロダクションにリリースすることはできないので、開発からこのブランチまでのすべてをマージすることはできません。だから、現時点で私たちはすべてのものを手動でチェリーピッキングしています。すべてが整理され、多くの矛盾があるので、本当に恐ろしいことです。また、開発からすべてのものをマージすることはできませんが、行くことができないチケットを元に戻すことは持続可能な解決策のようには見えません。
  • マスター - アプリケーションの安定版です。

私の最初のアイデアは、マスターブランチに基づいてフィーチャーブランチを作成することでしたが、これは開発者が常に古いバージョンのアプリケーションで開発していることを意味します。これは、プロセスの後半で統合の問題につながる可能性があります。

私はこの問題の唯一の人ではないと思います。この問題のあなたの経験は何ですか?

+0

チェリーピッキングからリリース音が私に悪いものに発展する。ブランチ全体をマージするか、まったくマージしないでください。 –

+0

こんにちは@私たちのリリースはそれほど規則的ではないことを除いて同じシナリオがあります。私たちは数ヶ月前にgitに移植しただけなので、私たちの環境にgit-flowを採用する方法はまだ学んでいます。あなたの質問に対する答えを読むことに興味があります。あなたの質問には本当に答えるものではありませんが、これまでは '開発 'の機能ブランチを開発し、UATの準備が整った時点で'開発/展開 'から' release/x.x'を切りました。 UAT中に作成された小さな新しい機能や修正は、 'release/x.x'ブランチから/へ分岐されます。拒否された機能は、マージコミットを手動で元に戻す必要があります。 – Rob

+0

こんにちは@Rob、ありがとう!これは、Gitでリリースを管理するうまい方法のようです。数ヶ月からGitにも完全に変更されました。だから、組織全体の中で私たちはそれほど多くの経験を積むことができません。私は、機能を別々に完全にマージして、それが入るべきリリースにする方法を見つけたいと思っています。 –

答えて

2

私は本当にこの資料に記載されてGitのワークフローのように: "http://nvie.com/posts/a-successful-git-branching-model/は"

これは、機能ブランチのマージ/彼らが作成することをお勧めします方法です:機能ブランチを作成する

とき新機能の作業を開始するには、開発版 ブランチから分岐します。

$ git checkout -b myfeature develop

新しいブランチ「myfeature」の完成機能を組み込む

に切り替え

完成機能は間違いを開発ブランチにマージすることができる開発の今後に彼らに を追加リリース:

$ git checkout develop

はea1b82a..05e9557(変更の要約)を更新

$ git merge --no-ff myfeature

'開発'

$ git branch -d myfeature

削除された分岐myfeatureを分岐に切り替え(05e9557ありました)。

$ git push origin develop

--no-ffのフラグは、マージが 早送りで実行することができたとしても、常に 新しいコミットオブジェクトを作成するために、マージが発生します。これにより、フィーチャーブランチが存在するかどうかについての情報が失われるのを回避し、 が一緒に機能を追加したすべてのコミットをグループ化します。

+0

この回答は一般的に参考になりますが、元の質問には答えられないと思います。特に、一部の機能がUATで正常に機能しない可能性があるという事実に対処する方法についてです。 – Rob

+0

ありがとうございます。非常に興味深いですが、これは実際に私の問題を完全に解決するものではありません。このワークフローでは、リリースが現在の開発バージョンの完全なスナップショットであると想定されているので、それは私たちには当てはまりません。可能な限り少ない手作業で別の機能をリリースできることが常に必要です。 –

関連する問題