これについて注意すべき点が他にもいくつかあります。
- ツリー(通常は
tags
ツリー)には、特定の時点でのコードの仮想的に不変のスナップショットが含まれています。ほとんどのデプロイメントはタグに基づいているため、これは変更したいものではありません
- ほとんどのSubversionクライアントは、
tags
ツリーにコピーするだけでなく、ツリーで変更をコミットしようとすると文句を言います。
- ほとんどの場合、は;
trunk
の下のディレクトリの特殊なケースです。branches
唯一の重要な違いは、主要な開発パスが含まれていると予想されることです。
他の人が指摘しているように、ほとんどの場合、トランクと1つまたは2つのブランチでしか作業しておらず、プロジェクト全体がかなりの量のディスク領域を消費する可能性があるため、通常、プロジェクト全体をチェックアウトする正当な理由はありません。ほとんどの場合、メインの開発「ブランチ」が必要な唯一のものです。
これが実際の例です。私たちのチームは、トランクに対してすべてのコード変更を行います。アルファ(プレコンプリート)リリースが必要な場合は、トランクにタグを付けるだけです。特定のリリースで「コード完了」を押すと、コードフリーズブランチが作成され、バージョンの変更がすべて行われます。ベータ版、RC版、GA版は、そのブランチからタグ付けされています。GAリリースにパッチを適用する必要がある場合、パッチはブランチに対して実行され、トランクにマージされます。そうすれば、特定のパッチを適用する必要がある場合に、テストおよび承認されたGAに新しいコードがリークすることを心配する必要がありません。また、コードがフリーズするとすぐに、ソフトウェアの次のバージョンでの作業を開始できます。
また、トランクの帯域外にある「サイドプロジェクト」がある場合は、そのブランチを作成し、準備ができたらマージできます。
バグごとにブランチを作成するのが好きなチームもあれば、トランクで直接作業するチームもあります(私のように)。あなたのチームがブランチごとのバグを実行する場合、私はプロジェクト全体をチェックすることは決してありません。とりわけ、私は気にしないコードをたくさん目にするでしょう。
また、リポジトリ管理についてのポイントは@humble_coder
、ブランチ/タグ管理に関しては、ほとんどのSubversionツールが非常に使いやすいことです。たとえば、TortoiseSVNにはリポジトリブラウザがあり、コピー(ブランチとタグの作成)を非常に簡単に行うことができます。また、svnコマンドラインツールを使用して、アトミック操作と同じことを実行できます(実際にはスクリプトがあります)。アルファタグ、コードフリーズブランチ、またはフリーズ後のリリースタグのいずれかを作成します)。
お役に立てれば!