私は単一のレポで共有されていない祖先のいくつか (2-20) のプロジェクトに取り組んでおり、リポジトリに格納されているバイナリ データの GB の共通リソースを 1 つの場所でのみ共有しています。これらのプロジェクトはsvn switch
、バイナリ データを共有する単一の svn URL に適切なフォルダーをマップするために使用します。
複数の作業コピーがチェックアウトされている場合は、作業コピーで同じことを行いたいので、既に持っている同じ GB のバイナリ データを再ダウンロードすることを避けます。
(注: もう 1 つの悪いニュースは、プロジェクトが自身を変更するために svn 1.7 実行可能ファイルも利用していることです。)
私がしたこと
私がやったことは、プロジェクト Aをチェックアウトし、スイッチ -es; を実行することです。次に、プロジェクト Bをチェックアウトしますが、通常の switch の代わりに doを実行して、プロジェクト Bsvn switch --set-depth=empty --ignore-ancestry http://foobar
のこの作業コピーがどこを指すべきかを認識します。それから、私はやった。(1)mv foobar old_foobar
mklink /D foobar ../project_A/foobar
今の問題
問題はsvn status
、シンボリックリンクを使用して wc で実行すると、「foobar」内のすべてのファイルがバージョン管理されていない (?
ステータスとして) リストされることです。
TortoiseSVN も使用しており、アイコン オーバーレイが黄色い三角形の "!" として表示されます。(おそらく競合していることを意味しますか?)が、実際の競合(ツリーの競合も)はなく、「foobar」で競合した場合、最新であると表示されますsvn status
。svn up
制約
バイナリ ファイル コンテナーは頻繁に変更されることはなく、変更されたとしても通常は下位互換性があります。したがって、(少なくとも私にとっては) 作業コピーがファイルのバージョンについて間違った考えを持っていることは問題ではありません。
「公式に」それを行うことは許可されていないため、プロジェクトまたはリポジトリ構造を変更しないでください。
私は svn 1.7 を使用していますが、プロジェクトは実際には自己完結型の svn 実行可能バイナリを使用して作業を行うため、可能であればそれに固執したいと考えています。
質問
ハード ドライブに同じ GB のデータが重複しないようにするために、シンボリック リンク (またはその他のもの) を利用する方法はありますか? (可能であれば、ダウンロードも避けてください。)
(1): 私は Windows を使用しています。簡単にするために、私のファイルシステムでは、フォルダー「project_B」と「project_A」が隣接しているとしましょう。単一の共通の祖先を共有し、そのフォルダー foobar は両方のプロジェクトのトップレベルです。