1

私たちは、ASP.NETアプリケーションのバージョンを実行する3つの環境またはWebサイト(開発、ステージング、プロダクション)を用意しています。 SVNと継続的統合(Teamcity)を使用して、各Webサーバーにアプリケーションを自動的に展開するのに役立ちます。並列タスクベースの開発の分岐戦略

現在の開発ワークフローは、タスク(または作業オーダー)システムに基づいています。 開発者には、完了する必要のあるタスクが与えられます。 多くの開発者は、同時にプロジェクトで作業できますが、アプリケーションのさまざまな部分で作業できます。

私の現在のソリューションでは、開発者はすべてのタスクに対して別々のブランチを作成します。 ユーザがトランクをコミットすると、ソースコードがコンパイルされ、デベロッパーのWebサーバーにデプロイされます。

開発者1は、新しいタスクを開始し、トランクソースコードから新しい分岐を作成します(「タスク1」とします)。

彼は自分のコードを自分のブランチにコミットしてから、そのブランチをトランクにマージします。

彼の変更は残りのコードと一緒にコンパイルされ、dev Webサーバーに展開されます。

開発者2は、新しいタスクを開始し、トランクから(Dev 1の変更で)ブランチを作成します。

彼は彼の変更を行い、彼のコードを「タスク2」にコミットし、そのブランチをトランクにマージします。

コードはもう一度コンパイルされ、dev Webサーバーにデプロイされます。

開発者1はまだ完了していませんが、開発者2の変更は本番環境に展開する準備ができています。

Dev 2は、「タスク2」を「プロダクション」ブランチにマージします。

ここに問題があります。 Dev 1によって行われた変更の一部は製造中であり、これは不正です。

開発を継続し、各タスクを1つずつ実装できる分岐戦略を見つける必要があります。

ご意見はありますか? SVNは仕事のための正しいツールですか?

UPDATE

私は今、「Dev」の分岐が私たちのdevのサーバーに展開し、クリーンで私たちの「生産」ブランチと同期トランクを維持することを考えています。この特定の問題は、すべての開発者がいくつかの開発者の変更を加えたものではなく、きれいなトランクから自分のブランチを作成するため、このようになっているようです。

答えて

1

私はあなたの質問を読んだ後少し混乱しています。開発者1がまだ実行されておらず、彼のプレバイズの修正をコンパイルしてプロダクションに展開する準備ができていない場合は、タスク1をトランクにマージすることはお勧めできません。

どうすればいいですか?すべての開発者は、自分のブランチ「タスクi」を作成します。その後、彼らは同時に支店で働くことができます。チェックイン、チェックアウトなどをしています。タスクを完了した後、彼らは枝をマントに戻してトランクに戻すことができます。このようにして、本番サーバー上のプロジェクトが自分の仕事の一部ではなく完全であることを保証することができます。

+0

テストを完了するには、アプリケーションが主に従来のASPで構築されているため、すべての開発者が変更をデベロッパーサーバー(トランク経由)にデプロイする必要があります。 – Jason

+0

Devブランチを作成することも回避策です。 – Windy

関連する問題