24時間体制で、会社のバージョン管理の戦略を考えてみます。現在はSVNを使用していますが、構造はありません-基本的にトランクしかなく、それにコミットするだけです。最近、開発マネージャーが「タグ」として機能する2番目のリポジトリーを開始しましたが、同じリポジトリーの一部ではなく、完全に別のリポジトリーであるため、「トランク」と手動でマージする必要があります。実際には、「Dev」と呼ばれるフォルダーが1つだけあります(実際には「Dev」フォルダーは日付によって異なりますが、「Dev」だけがメインのフォルダーです)。他のすべてのプロジェクト。プロジェクトごとに構成されているわけではなく、ブランチ/タグ/トランクなどの概念はありません。最初に設定した人(長い間、もちろん)SVNをセットアップする方法をまったく知らないようで、それ以来、何かを壊すことを恐れて適切に行う方法を学ぶことに誰も悩まされていません。CIは使用していません(残念ながら自動テストも行っていません)。
まず、プロジェクトごとに分離する必要がありますか?たとえば、2つのASP.NET Webサイト(Webアプリケーション、Webサイトではない)、Webサービス、すべてのテーブルスクリプトとストアドプロシージャの展開フォルダー、外部プロジェクト用の2つのコマンドラインクライアントWebサイトと、共通のビジネスオブジェクトなどを含む共有フォルダー。これらはそれぞれブランチ/タグ/トランクの設定を備えた独自のプロジェクトであるか、または次のようである必要があります。
dev/
branches/
tags/
trunk/
Site1/
Site2/
WebService/
SharedCode/
すべてのブランチがあり、すべてにDevフォルダー全体のコピーがありますか?共有コードライブラリと少なくとも1つ(通常は両方)のWebサイトにも変更を加える必要がある状況がよくあるため、このアプローチは飲み込みやすいかもしれません。
次に、開発サーバーとライブサーバーへの定期的なリリース(用語では "プッシュ")を行います。私がこれを処理する最良の方法を読んだことから、すべての開発はtrunk /に行き、ブランチは「一時的」であり、トランクに影響を与える可能性のある新しい機能を追加するために使用され、タグはリリース用です?それで、毎月プッシュしてみましょう、そして私は真新しいモジュールに取り組んでいます。トランクを分岐し、その分岐をコードに使用して、コードの記述とテストなどを行います。モジュールが完成したら、トランクにマージして(おそらくブランチを削除して)、デプロイの準備ができたら、タグを付けます(「May2011」としましょう)。公開後にバグ修正がある場合は、May2011タグで修正され、トランクにマージされます(トランクも修正されます)。そして、May2011は修正により再び押し出されますか?これはタグ付けの意図ですか?