2013-06-30 4 views
9

は、私は非常にスコット・チャコンによって記述された「githubの流れ」のワークフローを好き:githubのはヴィンセントDriessen(http://nvie.com/posts/a-successful-git-branching-model/)で説明したgitのフローのワークフローを使用していない、と私たちはそれを使用していない理由を彼は説明しhttp://scottchacon.com/2011/08/31/github-flow.htmlgitワークフロー:継続的な配信を行わずに機能ブランチを統合してテストする方法

最も重要な理由は、プルリクエストではうまく機能せず、「公式にリリースされたソフトウェア製品のバージョン」がなく、ウェブサイトを継続的に改善するウェブサイト開発には適していないという同じ理由です。

私たちは、不良なテストカバレッジを持つ古いレガシーコード(コードが10歳以上のもの)がたくさんある小さなチームで、大きなオンラインコミュニティを開発しています。私たちはgithubと同様のワークフローを使用しています。現在は、機能ブランチを使用して開発を行い、プルリクエストを使用してマスターブランチに統合し、ピアレビューを行い、フィードバックを求めます。マスターに合併した。週に数回は、テスターやベータユーザーが使用するステージング環境にマスターを送ります。マスターブランチを2週間ごとに公開しようとするため、マージされるすべてのフィーチャーブランチは十分にテストされなければなりません。また、公表が完了するまで、「危険なフィーチャーブランチ」がマージされません。

「危険な機能」をマスターにマージすると、マスターを使用してもはや一般公開されていないため、完全なワークフローではありません。

Githubは配備に連続配信を使用していますが、これはオプションではありません。公開する前に機能をテストする人が必要です。

プル要求は1つのブランチにのみマージできます。したがって、マスターである実行時間の長いブランチが1つしかないgithubの簡単なワークフローです。おそらく、2週間ごとにリリースするべきではありませんが、マスタにマージされるときにプルリクエストを解放するのでしょうか?しかし、テストするのは難しいですが、機能ブランチのユニットテストをマージする前にそれを実行して、ベータテスターのためにブランチをステージングすることもできますが、これは必ずしも簡単ではない場合もありますデータベースを手動で変更する(自動的に行うことはできません。ベータテスターのステージングサーバーは本番データベースを使用するため危険です)ので、管理者がこれを行うまで待たなければなりません。より大きな問題は、機能ブランチのみをベータ版ユーザーにリリースすると統合されず、新機能が表示され、機能が1日に複数回削除されるということです。統合テストを実行できない、あるいはリリース直前に機能ブランチをマスターに統合したときに実行したとは限りません...

一方、 git-flowで説明されているように開発してマスターしてください。ホットフィックスの問題を解決することができますし、機能ブランチをマージするためのプルリクエストを使用して、最近の変更をマスターに統合するリリースブランチのプルリクエストを使用できます。プルリクエストワークフローを使用して変更をマージして開発に反映させます。

githubフローの記事(レビュー後直ちにデプロイする#6)のように、githubのエンジニアはプロダクションだけでなくステージング環境にも展開できます。エンジニアだけでなく、サポートとデザイナーもできます。しかし、1つの統合ブランチだけではどのように機能しますか?最後のプル要求が数時間または数分で本番運用に移行する場合、ステージング環境は必要ありません。場合によっては、機能ブランチをステージングに配備しているように見えますが、それらは統合されていないため、上記で説明したように、ステージング環境では、機能を配備する前にマスターからの変更をマージしても、 (これは良いアイデアだと思いますか?)複数のステージング環境を持つことは理にかなっています。しかし、このやり方でも、あなたは継続的な統合の利点を失います。そして、私がベータテスト環境でこれを行うことはできないと思います。

ワークフロー、gitフロー、githubフローの両方に問題がありますが、github flowの方が気に入っていますが、テストカバレッジが不十分で人が多くのテストが必要な場合は難しいようです。

フィーチャブランチを人によってテストする必要がある場合は、どのようにフィーチャブランチを統合してテストできますか(ベータ版とベータ版)

+0

私は勧告を探しています –

+0

多分広すぎるとの意見ベースでもあり、プログラマのための多分適し、それはここでオフトピックだと思います従来のコードと高い負荷でウェブサイトを開発する性質のため、答えが似ているより大きなウェブサイトを開発しているプログラマーからのものです。これまでに私が知ることのできるほとんどの推奨事項は、従来のソフトウェア製品の開発や継続的な展開に焦点を当てています。私は十分な詳細を提供して、人々が状況についての良いイメージを得て、これまでの話題に関する私の考えを得ようとしました。あなたはどう思いますか、私はここにいなければどこで質問しますか?ありがとう! – ak2

+10

私はあなたの質問を(もっとたくさん)書き直して簡略化して、それを短く、より明確に、より読みやすくすることをお勧めします。不要な文章や言葉を削除する。短い段落とMarkdownの書式設定を使用します。これにより、より多くの人々がそれを読んで良い解決策を見つけるのを助けるでしょう。 – Leif

答えて

1

あなたは一つの共通の統合ブランチに沿って実行される複数のブランチヘッドを持つことができます。

----A---B---C---D---E---F---G---H---I 
       \   \   \ 
       goodToGo testing  toBeTested 
+0

あなたは長い間実行されているブランチについて話していますよね?しかし、ワークフローはどのように見えますか?私の新しいフィーチャーブランチを統合ブランチにマージすると、どうすればそれをテストブランチに入れることができますか?他の誰かが機能を統合ブランチにマージしたかもしれないので、統合ブランチをテストブランチにマージすることはできません。だから私は機能ブランチをテストブランチにマージするだけで、それが本番環境になるまで削除することはできません。だから私がテストでエラーを見つけた場合、私は自分のフィーチャーブランチを変更し、そのフィーチャーを統合に統合し、その後テストを再度検証して検証します。 – ak2