すべての開発者に新しいコードをチェックインしないように依頼するよりも、SVN でコード フリーズを実装するためのより良い方法はありますか?
CruiseControl を実行しています。これにより、最新のビルドが環境に自動的にデプロイされます。そのため、新しいコードが入ってくると、以前に利用可能になったビルドが最新のものに変更されます。デプロイされたビルドが特定のブランチ/タグからのものであることを望み、新しいコードのチェックインがデプロイされたビルドに影響を与えないようにします。次回タグ付け/ブランチするときにのみ、新しいコードを再度デプロイする必要があります。どうすればこれを達成できますか?
5 に答える
SVN の組み込み分岐機能を使用します。次のリンクは、分岐方法のすべての詳細を示しています (必要に応じてタグを使用することもできます): http://svnbook.red-bean.com/en/1.1/ch04.html
安定版ブランチと Subversion >=1.5 (サーバー、リポジトリ形式、およびクライアント) を使用します。
Trunk からブランチを作成し、それを安定ブランチとして指定します。開発者がこのブランチにコミットすることを禁止します。理想的には、利用可能な権限の authz ファイルを使用します。
これらの変更が別のブランチで発生した場合でも、コードの変更が展開される前にトランクにコミットされることを保証するポリシーを用意してください。
トランクではなく、指定された安定したブランチからクルーズ コントロールの監視、ビルド、デプロイを行います。
新しいソフトウェアをデプロイするときが来たら、Subversion のマージ機能を使用してトランクからブランチにマージします。トランクからのみ、常にこの方法でマージします。マージ トラッキング (バージョン 1.5 以降のみ) により、トランクから必要な変更のみを選択して含めることができ、不要なものは除外されます。また、現在のリリースに含まれているリビジョンと除外されているリビジョンを正確に視覚的に確認することもできます。
結果をマージして確認したら、コードをコミットすると、Cruise Control が公開されます。したがって、公開は制御されたポイントでのみ行われます。
以前のバージョンにロールバックする必要がある場合は、安定版ブランチの必要なリビジョンからタグを作成し、安定版ブランチの問題を整理したときに、Cruise Control を一時的に安定版ブランチではなくそのリビジョンに向けます。タグの代わりに、stable ブランチから再度デプロイします。
問題が発生する前に積極的にタグを作成することをお勧めします。おそらく、CruiseControl を自動的に使用して、切り替える必要がある場合にタグが既に配置されているようにします。
マージの競合を修正したり、トランク以外の場所からの変更をマージしたりする以外に、stable ブランチで開発を行わないでください。何がデプロイされているかを正確に伝えることが非常に難しくなります。