2016-03-20 14 views
0

私たちの会社(内部プロジェクト)は、リリースされたコードの監査証跡を単純に保持するためにバージョン管理(TFS、現在は2015年)を使用していました。 - 私は分岐とマージを使用し、開発パイプラインのボトルネックを見て、一般的によく受け入れられましたが、今私は次のステップを探しています。効率的なTFSブランチング戦略のアドバイス

私たちのコードは、1つの大きなソフトウェアと他の付随するビジネスアプリケーションで構成されています。

私たちは常に4つの環境を維持しており、私たちの「パイプライン」はそうです。

  • 開発者はローカルで作業します。
  • コードを「開発」環境にプッシュします(コードをすべて見て、環境内でどのように統合されているかを確認してください)
  • テストが完了したら、「テスト」を押します。パイプラインを移動することが承認されたため、 環境は「開発」よりもずっと安定しています。
  • 次に、生きているサーバーの模倣物であるUATサーバーに、可能な限りライブリリース を安定して代表するように渡します。ここに移動することが承認されたコードは頻繁ではありません。
  • 最後に、本番環境。

ここでは、各環境にブランチを持たせ、簡単に比較できるようにし、人々が素早くソースとその他のものをつかんで、チェーン上のコードベースの進行状況を確認するアプローチを取っただけです。

MAIN - > STAGE - > TEST - > DEV

は、これは1つの、直線であり、我々は単にビルドをリリースされたすべての異なるを見るためにメインブランチの履歴を表示することができます。

devブランチからローカルブランチに分岐し、すべてのホットフィックスがUATブランチから直接送られます。

これは私たちのために働いていますが、手続き型プログラムが機能するという意味では機能しますが、これは最も効果的なアプローチではありません。 私はこれを行う良い方法があるかどうかについては非常に興味があり、オンラインでたくさんのものを読んだ後、人々は環境によってブランチを分割しないように思えますが、それがうまくいくかどうか分かりません。いくつかのコードをリリースするために4回マージするのは苦痛です(ほとんどの時間はパイプラインが遅いですが、毎週のリリースがあります)。

ご迷惑をおかけして申し訳ございません。

答えて

2

私は、あなたが上で正しく言及したように(特にマージの数)、各環境ごとに異なるブランチを維持するのにはかなりのオーバヘッドがあると思います。戦略分岐最も簡単なのは(私たちが使用しているものに似ている)、以下に示すいずれかです。

   Main 
      |  | 
      |  | 
      DEV Release 

開発は、それはUATのために作成されると、我々はMAINにマージ、DEV支店で発生し、その後、リリースブランチを作成します。この時点で次のリリース開発のためにDEVブランチを使用することができ、現在のリリースのすべてのバグ修正はリリースブランチで行われます。リリースブランチは、PRODデプロイメントにも使用されます。

これがあなたのために機能するかどうかは、特定のニーズに依存しますが、私が作業したプロジェクトの80%は上記の分岐戦略を使用します。

1

分岐戦略が複雑になればなるほど、保守にかかるオーバーヘッドが増えるということは間違いありません。

状況が必要な場合は、逃げることはありません。 TFSのALMレンジャーでbranching strategyの文書を読んでいない場合は、こちらをご覧ください。それはあなたを助けるはずです。

私が考える戦略は、直線的な分岐ではなく、下の画像のものです。 より複雑なエンタープライズソフトウェアでは、ブランチング戦略はこれまでのところ終わりません。 Most Complex Branching strategy

+0

私はビジュアルダイアグラムを見たことがありますが、pdfには気づいていません。私は今読んでいるよ! –

関連する問題