マニュアル

外部アイテム

ワーキングコピーを、いくつかの異なるチェックアウトで構成すると便利な場合があります。例えば、リポジトリ内の異なる場所、あるいは全く異なるリポジトリから、異なるファイルやサブディレクトリを取得したい場合などです。すべてのユーザーが同じレイアウトを持つようにしたい場合は、必要な場所に指定されたリソースをプルインするために、svn:externals プロパティを定義できます。

外部フォルダー

例えば、/project1 のワーキングコピーを D:\dev\project1 にチェックアウトするとします。D:\dev\project1 フォルダーを選択し、右クリックして、コンテキストメニューから「Windows メニュー」「プロパティ」 を選択します。プロパティダイアログが表示されます。次に、「Subversion」タブに移動します。そこで、プロパティを設定できます。「プロパティ...」をクリックします。プロパティダイアログで、既存の svn:externals が存在する場合は、ダブルクリックするか、「新規...」ボタンをクリックして、メニューから 「externals」 を選択します。新しい外部アイテムを追加するには、「新規...」をクリックし、表示されたダイアログで必要な情報を入力します。

注意

URL は適切にエスケープする必要があります。そうしないと機能しません。例えば、各スペースを %20 に置き換える必要があります。

ローカルパスにスペースやその他の特殊文字を含める場合は、二重引用符で囲むか、特殊文字の前に Unix シェルスタイルのエスケープ文字として \ (バックスラッシュ) 文字を使用できます。もちろん、これはパス区切り文字として / (フォワードスラッシュ) を使用する必要があることも意味します。この動作は Subversion 1.6 の新機能であり、古いクライアントでは機能しないことに注意してください。

明示的なリビジョン番号を使用する

上記の記述のように、すべての外部定義で明示的なリビジョン番号を使用することを強くお勧めします。そうすることで、外部情報の異なるスナップショットをプルダウンするタイミングと、プルダウンする正確なスナップショットを決定できます。制御できない可能性のあるサードパーティリポジトリへの変更に驚かされないという常識的な側面に加えて、明示的なリビジョン番号を使用すると、ワーキングコピーを以前のリビジョンにバックデートするときに、外部定義も以前のリビジョンで表示されていた状態に戻ります。これにより、外部ワーキングコピーは、リポジトリが以前のリビジョンにあったときに それら がどのように見えていたかに一致するように更新されます。ソフトウェアプロジェクトの場合、これは複雑なコードベースの古いスナップショットのビルドが成功するか失敗するかの違いになる可能性があります。

svn:externals プロパティの編集ダイアログでは、外部アイテムを選択し、それらを明示的に HEAD リビジョンに自動的に設定できます。

外部プロジェクトが同じリポジトリ内にある場合、そこで行った変更は、メインプロジェクトをコミットするときにコミットリストに含まれます。

外部プロジェクトが異なるリポジトリにある場合、外部プロジェクトに対して行った変更は、メインプロジェクトをコミットするときに表示または示されますが、これらの外部変更は個別にコミットする必要があります。

svn:externals 定義で絶対 URL を使用し、ワーキングコピーを再配置する必要がある場合 (つまり、リポジトリの URL が変更された場合)、外部アイテムは変更されず、機能しなくなる可能性があります。

このような問題を回避するために、Subversion クライアントバージョン 1.5 以降では、相対外部 URL がサポートされています。相対 URL を指定する 4 つの異なる方法がサポートされています。次の例では、http://example.com/svn/repos-1 に 1 つ、http://example.com/svn/repos-2 にもう 1 つの 2 つのリポジトリがあると仮定します。http://example.com/svn/repos-1/project/trunk のチェックアウトを C:\Working に行い、svn:externals プロパティは trunk に設定されています。

親ディレクトリに対する相対

これらの URL は常に文字列 ../ で始まります。例:

../../widgets/foo  common/foo-widget
            

これにより、http://example.com/svn/repos-1/widgets/fooC:\Working\common\foo-widget に展開されます。

URL は、外部アイテムがディスクに書き込まれるディレクトリではなく、svn:externals プロパティを持つディレクトリの URL に対して相対的であることに注意してください。

リポジトリルートに対する相対

これらの URL は常に文字列 ^/ で始まります。例:

^/widgets/foo  common/foo-widget
            

これにより、http://example.com/svn/repos-1/widgets/fooC:\Working\common\foo-widget に展開されます。

同じ SVNParentPath (いくつかのリポジトリを保持する共通ディレクトリ) を持つ他のリポジトリを簡単に参照できます。例えば

^/../repos-2/hammers/claw  common/claw-hammer
            

これにより、http://example.com/svn/repos-2/hammers/clawC:\Working\common\claw-hammer に展開されます。

スキームに対する相対

文字列 // で始まる URL は、URL のスキーム部分のみをコピーします。これは、ネットワークの場所に応じて異なるスキームで同じホスト名にアクセスする必要がある場合に役立ちます。例えば、イントラネット内のクライアントは http:// を使用し、外部クライアントは svn+ssh:// を使用します。例えば

//example.com/svn/repos-1/widgets/foo  common/foo-widget
            

これにより、C:\Working のチェックアウトに使用された方法に応じて、http://example.com/svn/repos-1/widgets/foo または svn+ssh://example.com/svn/repos-1/widgets/foo が展開されます。

サーバーのホスト名に対する相対

文字列 / で始まる URL は、URL のスキームとホスト名部分をコピーします。例:

/svn/repos-1/widgets/foo  common/foo-widget
            

これにより、http://example.com/svn/repos-1/widgets/fooC:\Working\common\foo-widget に展開されます。ただし、ワーキングコピーを別のサーバー svn+ssh://another.mirror.net/svn/repos-1/project1/trunk からチェックアウトした場合、外部参照は svn+ssh://another.mirror.net/svn/repos-1/widgets/foo を展開します。

必要に応じて、URL のペグリビジョンとオペレーティブリビジョンも指定できます。ペグリビジョンとオペレーティブリビジョンの詳細については、Subversion ブックの 対応する章 をお読みください。

重要

上記の例のように、外部アイテムのターゲットフォルダーをサブフォルダーとして指定する場合は、中間の すべて のフォルダーもバージョン管理されていることを確認してください。したがって、上記の例では、common フォルダーもバージョン管理する必要があります。

中間のフォルダーがバージョン管理されていない場合でも、ほとんどの場合、外部アイテムは正常に機能しますが、期待どおりに機能しない操作がいくつかあります。また、エクスプローラーのステータスオーバーレイアイコンも正しいステータスを表示しません。

TortoiseSVN がプロパティをどのように処理するかについての詳細が必要な場合は、「プロジェクト設定」というセクションをお読みください。

共通のサブプロジェクトにアクセスするさまざまな方法については、「共通のサブプロジェクトを含める」というセクションをお読みください。

外部ファイル

Subversion 1.6 以降では、フォルダーと同じ構文を使用して、ワーキングコピーに単一の外部ファイルを追加できます。ただし、いくつかの制限事項があります。

  • ファイル外部アイテムへのパスは、svn:externals プロパティを設定するフォルダーの直接の子である必要があります。

  • ファイル外部アイテムの URL は、ファイル外部アイテムが挿入される URL と同じリポジトリ内にある必要があります。リポジトリ間のファイル外部アイテムはサポートされていません。

ファイル外部アイテムは、多くの点で他のバージョン管理されたファイルと同様に動作しますが、通常のコマンドを使用して移動または削除することはできません。svn:externals プロパティを代わりに変更する必要があります。

ドラッグアンドドロップによる外部アイテムの作成

外部アイテムとして別のワーキングコピーに含めたいファイルまたはフォルダーのワーキングコピーが既にある場合は、Windows エクスプローラーからドラッグアンドドロップするだけでそれらを追加できます。

ファイルまたはフォルダーをあるワーキングコピーから、外部アイテムとして含めたい場所に 右ドラッグ するだけです。マウスボタンを離すと、コンテキストメニューが表示されます。コンテキストメニューエントリの 「ここに外部アイテムとして SVN 追加」 をクリックすると、svn:externals プロパティが自動的に追加されます。その後に行う必要があるのは、プロパティの変更をコミットし、更新して、これらの外部アイテムをワーキングコピーに適切に含めることだけです。

TortoiseSVN ホームページ