私たちは svn から hg へと夢中になりました。開発ワークフローは多かれ少なかれ洗い流されているため、ステージングと統合システムという最も難しい部分が残っています。
願わくば、この質問が、よくある「xxx から Mercurial に移行するにはどうすればよいですか」よりも少し進んでいるといいのですが。長くて、おそらく文章が下手な質問を許してください:)
私たちは多くのプロジェクト (主に PHP と Zend) を行う Web ショップであるため、100 以上のフォルダーを持つ 1 つの巨大な svn リポジトリがあり、それぞれが独自のタグ、ブランチ、トランクを持つプロジェクトを表しています。私たちの統合およびテスト サーバー (QA とクライアントが作業結果とテスト内容を確認する場所) では、すべてがほぼ自動化されています。mysql 移行スクリプトもトランクにあり、開発者は単純な Web インターフェイスを介してそれらを適用できます。簡単に言えば、ワークフローは次のようになります。
- コードのチェックアウト、作業、コミット
- Web インターフェイスを介してサーバーで更新を実行します (これは基本的に、特定のプロジェクトのサーバーで svn を実行し、必要に応じて db-migration スクリプトも実行します)。
- サーバー上の QA の変更
このアプローチは、2 人以上の開発者が同じコードで作業している大規模なプロジェクトには最適ではありません。svn での分岐は頭痛の種になるだけだったので、Mercurial に移行しました。そして、ここに問題があります - このタイプの作業のために効率的なステージング/統合/テストサーバーをどのように編成しますか (多くのプロジェクトがある場合、1 人の開発者が 1 日に 3 つの異なるプロジェクトに取り組んでいるとします)。
基本的に「デフォルト」のブランチ トラッキング プロダクションを使用し、個々のブランチですべての変更を行うことにしました。この場合、各ブランチのステージング更新を自動化するにはどうすればよいでしょうか? 以前は、1 つのプロジェクトでほぼ常にトランクで作業していたので、1 つの DB、1 つの vhost などが必要でした。現在、プロジェクトごとの N データベース、N vhost 構成などについて話している可能性があります。 phpDocumentor や単体テストを実行している)?「デフォルト」でのみ行う必要がありますか?枝に?
他のチームがこの問題をどのように解決しているのか、おそらく私たちが使用していない、または見落としていないベスト プラクティスでしょうか?
その他の注意事項:
おそらく、レポ ホスティング サービスとして Kiln を選択したことに言及する価値があるでしょう (主に、とにかく FogBugz を使用しているため)。