2012-09-13 26 views
6

で複数の.svn隠しディレクトリを統合する:代わりに、作業コピー内のすべてのディレクトリ内の.svnディレクトリのがどのように<a href="http://subversion.apache.org/docs/release-notes/1.7.html#single-db" rel="noreferrer">Apache Subversion 1.7 release notes</a>によるSubversionの1.7以降

を、Subversionの1.7作業コピーは一つだけの.svnディレクトリを持っています - 作業コピーのルートにあります。

リポジトリには複数のディレクトリがあり、最初にチェックアウトすると、特定のディレクトリのみを選択的にチェックアウトします。これは、ドキュメントに記載されているように、最上位ディレクトリに.svn隠しフォルダを1つだけ作成します。

しかし、後で別のディレクトリをチェックアウトすることにした場合、チェックアウトが完了した後、新しくチェックアウトされたディレクトリ内に別の.svnディレクトリがあります。

これは、ルートレベルからコミットしようとすると、最初にチェックアウトされたディレクトリのみを認識することになります。その後のチェックアウトについても個別にコミットする必要があります。

この動作を変更するか、2つの非表示の.svnディレクトリを一緒にマージしますか?あるいは、チェックアウトを初めて行うときに、リポジトリディレクトリ構造全体をチェックアウトするような何かをしなければならないでしょうか?

答えて

6

短い回答:いいえ、それぞれ個別のチェックアウトで、独自のデータベースがあります。 .svnディレクトリの中に隠された深い魔法を理解すれば、あなたが望むことをすることができます。しかし、Subversionのバージョン1.1から1.6とは異なり、その.svnディレクトリの構造ははるかに複雑であり、容易に理解できません。

あなたの場合、最善の方法は、すべてをチェックインし、新しいチェックアウトを行って両方のプロジェクトを組み込むことです。

これを定期的に実行したい場合は、svn co--depth=、に--set-depth=を使用してください。例えば、私はベースディレクトリを

をチェックアウトするんだけど、私が何かしたくない:

$ svn co --depth=immediates http://svn.vegicorp.com/svn/base_prod 
A base_prod/.classpath 
A base_prod/.settings 
A base_prod/foundation 
A base_prod/client 
A base_prod/server 

.settings.classpathファイルをチェックアウトし、foundationclient、およびserverディレクトリしかし、他には何もありません。それは速いですし、私は欲しくないたくさんのものをチェックアウトしません。

$ cd base_prod 
$ svn update --set-depth=infinity server 

この意志更新私のサーバーのディレクトリを、しかしチェックアウト全体のディレクトリ構造は以下となります。

は今、私は、サーバー上で動作します。私は今serverで作業することができますが、私はfoundationまたはclientファイルを持っていません。

はその後、私はfoundationにいくつかの作業を行うしたいと思います:

$のsvn更新--set-深さ=無限基盤

は今、私はfoundationディレクトリを持っています。そして、私はbase_prodディレクトリの下に単一の.svnディレクトリしか持っていません。

関連する問題