2011-12-08 7 views
1

私は相当なコードベースのプロジェクトを持っています。そのコードベースに関連しているのは、ソースコードと同じバージョンで管理する必要があり、コードベース内から簡単にアクセスできるようにする必要がある大量のドキュメントです。しかし、私たちのビルドマシンがコードベースを構築するとき、ビルドマシンがビルドに必要でない数百万メガバイトの開発ドキュメンテーションをチェックアウトすることによって、ビルドプロセスの長さが伸びることは望ましくありません。Windows上のSVNを使った相対ファイル参照

これがUnix上にあったのであれば、単にコードベースの 'source'ディレクトリのピアレベルで 'docs'ディレクトリを持つことができます。ソースツリーの個々のプロジェクトは、シンボリックリンクを使用してドキュメントツリーのドキュメントを参照することができます。ビルドマシンがビルドを行うと、ソースディレクトリをチェックアウトするだけで不要なdocsディレクトリをチェックアウトする時間を無駄にしません。

WindowsではSVNを使用していますが、SVNはWindows上にシンボリックリンクをサポートしていないため、SVNはこれを賢明な方法で設定する方法はありません。

私がこれまでに思いついた唯一の回避策は、ソースツリー内でcmd.exeと相対ファイル参照を使用するバッチファイルを作成してドキュメントツリー内のドキュメントファイルを開くことです。それは動作しますが、なんらかの理由で私は指に嫌な味を残すことができません。

誰でもこれを達成するためのより良い方法を考えることができますか?

答えて

0

いくつかの研究の後、私はexternalsプロパティを使用した解決策があると思います。

まず、svn:externalプロパティを使用して同じリポジトリ内のディレクトリを参照します。これはPROJ1 /ドキュメント内の非接続子作業コピーの参照/ DocsDir/Proj1Docsを作成

../DocsDir/Proj1Docs Docs 

にDocsDir/Proj1Docsの内容を参照するPROJ1 /ドキュメントを作成するために、トランク/ PROJ1でこれを設定してください。 Proj1/docsはでなければなりません。は以前は外部作業コピーの一部として存在していました(それは2つの作業コピーを一度に作成するため意味があります)。 Proj1/Docsの内容を編集すると、親作業コピー内でsvn statusを実行すると、子作業コピーへの変更がリストされますが、子コピーへの変更を個別にコミットする必要があります。それは大きな問題ではない。

次に、svn:externalプロパティを使用して同じリポジトリ内のファイルを参照します。これをtrunk/Proj1に設定して、DocsDir/Readme.txtを参照するProj1/Readme.txtを作成します。ファイル参照の場合

../DocsDir/Readme.txt Readme.txt 

参照ファイルがインポートされているディレクトリは、すでに所有している作業コピーの一部でなければなりません。この場合、子作業コピーは作成されません。ファイルを編集すると、それは所有作業コピーの一部としてシームレスにコミットされます。

どちらの場合も、ビルドマシンは、すべてのかさばるドキュメントなしで私たちのコードベースをチェックアウトする

svn checkout --ignore-externals <path> 

を実行することができます。

誰にでもこの戦略の問題はありますか?

関連する問題