ワーキングコピー内に別のプロジェクト (おそらくライブラリコード) を含めたい場合があります。これに対処するには少なくとも 4 つの方法があります。
プロジェクト内のフォルダに svn:externals
プロパティを設定します。このプロパティは 1 行以上で構成されています。各行には、共通コードのチェックアウトフォルダとして使用するサブフォルダの名前と、そこにチェックアウトするリポジトリ URL が記述されています。詳細については、「外部アイテム」のセクションを参照してください。
新しいフォルダをコミットします。これで、更新時に Subversion はそのプロジェクトのコピーをリポジトリからワーキングコピーにプルします。サブフォルダは必要に応じて自動的に作成されます。メインのワーキングコピーを更新するたびに、すべての外部プロジェクトの最新バージョンも取得します。
外部プロジェクトが同じリポジトリにある場合、そこで行った変更は、メインプロジェクトをコミットするときにコミットリストに含まれます。
外部プロジェクトが異なるリポジトリにある場合、外部プロジェクトに対して行った変更は、メインプロジェクトをコミットするときに表示または示されますが、それらの外部の変更は別途コミットする必要があります。
説明されている 3 つの方法のうち、クライアント側でセットアップが不要なのはこれだけです。外部アイテムがフォルダプロパティで指定されると、すべてのクライアントは更新時にフォルダが設定されます。
プロジェクト内に共通コードを格納するための新しいフォルダを作成しますが、Subversion には追加しないでください。
新しいフォルダに対して
→ を選択し、共通コードのコピーをチェックアウトします。これで、メインのワーキングコピー内にネストされた別のワーキングコピーができました。2 つのワーキングコピーは独立しています。親への変更をコミットしても、ネストされた WC への変更は無視されます。同様に、親を更新しても、ネストされた WC は更新されません。
同じ共通コアコードを複数のプロジェクトで使用する場合、それを使用するすべてのプロジェクトに対して複数のワーキングコピーを保持したくない場合は、それを使用する他のすべてのプロジェクトに関連する別の場所にチェックアウトできます。 例えば
C:\Projects\Proj1 C:\Projects\Proj2 C:\Projects\Proj3 C:\Projects\Common
そして、相対パスを使用して共通コードを参照します。例:..\..\Common\DSPcore
。
プロジェクトが関連のない場所に散在している場合は、このバリアントを使用できます。これは、共通コードを 1 つの場所に配置し、ドライブ文字の割り当てを使用して、その場所をプロジェクトにハードコードできるものにマップすることです。例:共通コードを D:\Documents\Framework
または C:\Documents and Settings\{login}\My Documents\framework
にチェックアウトし、次に次を使用します。
SUBST X: "D:\Documents\framework"
ソースコードで使用されるドライブマッピングを作成します。コードは絶対パスを使用できるようになります。
#include "X:\superio\superio.h"
この方法は PC 環境でのみ機能し、必要なドライブマッピングをドキュメント化して、チームがこれらの不明なファイルの場所を把握できるようにする必要があります。この方法は、閉鎖された開発環境での使用に限定されており、一般的な使用にはお勧めしません。
おそらく最も簡単な方法は、プロジェクトをサブフォルダとして自分のプロジェクトのワーキングコピーに追加することです。ただし、これには、この外部プロジェクトを手動で更新およびアップグレードする必要があるという欠点があります。
アップグレードを支援するために、TortoiseSVN はエクスプローラーの右ドラッグコンテキストメニューにコマンドを提供しています。外部ライブラリの新しいバージョンを解凍したフォルダをワーキングコピー内のフォルダに右ドラッグし、
→ を選択します。これにより、新しいファイルが自動的に追加され、新しいバージョンに存在しなくなったファイルが削除されながら、新しいファイルがターゲットフォルダにコピーされます。