0

私は小さなチームで、多くの高価なデータを扱う製品を開発しています。このデータにはコストがかかるため、ローカルでコードを完全にテストすることはできません。代わりに、クライアントに表示される運用サーバーと、テストに使用するステージング サーバーがあります。同様に、プロダクションに一致するブランチ (「マスター」を使用しています) と、ステージングに一致するブランチ (「ステージング」と呼ばれます) があります。

私は git ワークフローのトピックについてかなりの検索を行いましたが、それらはすべて、チームが何らかの開発ブランチ (おそらく直接、またはマージされた機能ブランチを使用して) を離れることを想定しているようです。そして、そのブランチ内のすべての準備が整うと、プロダクション ブランチにマージされ (最初に "リリース" ブランチを介して)、プロセスが繰り返されます。これが、人気のある成功した Git 分岐モデルの仕組みです。

問題は、「ステージング」ブランチ (前述の成功した Git ブランチ モデルの「開発」ブランチに最も近いブランチ) には、完成度のさまざまな段階にあるコードが定期的に含まれていることです。コードをローカルで完全にテストすることはできないため、不完全または壊れたコードがステージング ブランチに行き着くことが多く、アプリがステージング サーバーで処理する途方もない量のデータに対して実際にテストすることができます。本番環境にリリースする前に、ステージング ブランチのすべてが完全に完了し、テストされ、機能するのを待つことはできません。

では、これを処理する最善の方法は何ですか? これまでのところ、次のことを試しました。

  1. ステージングにマージできる「ステージング」ブランチに基づくフィーチャー ブランチ。
  2. テスト用にステージングにマージされ、準備ができたらマスターにマージされるフィーチャー ブランチ。これらのブランチをステージングまたはマスターに基づいて作成するのが最善かどうかはわかりません...

いずれにせよ、履歴がすべておかしくなっているため、実際には競合がない場所でマージの競合が発生しています。それはちょっと面倒です。これを行うためのより良い方法があるはずです!

4

1 に答える 1

1

うーん、いずれにせよ、ステージングのすべてのコミットを一緒にマスターに移動するわけではないため、本番環境では発生しない方法でステージングのコミットが互いに相互作用するリスクがありますが、それらをテストしてきました一緒にステージング。

git は良いアイデアではないので、これを困難にしていると思います :-/ 特定の機能がステージング環境でのみアクティブになるように機能フリッピングを使用して、コードをいつでも本番環境にプッシュできるようにするのはどうですか? これには、チームが開発を行うことについて考える方法を変更する必要があります。既存のコードを変更するのではなく、最終的に既存の機能を大規模に置き換える新しい機能を使用するアプリを介して並列パスを追加する必要がある場合があります。

于 2013-10-01T22:00:16.793 に答える