Subversion は、ディレクトリ ツリー全体が必要であることを想定しています。まばらなチェックアウトを行う方法はありますが、メカニズムを介してフープジャンプするようなものです。
まず、チェックアウトを実行し、--depth
immediate に設定します。
$ svn co --depth=immediates svn://localhost/myproject/trunk myproject-trunk
これにより、ルート直下のすべてのファイルとディレクトリがチェックアウトされます。
次に、あらゆる種類のシェル スクリプト マジックを使用して、必要な--set-depth
ディレクトリのみをフラグで更新できます。
$ shopt -s extglob #Needed on BASH, but not Kornshell
$ svn co --depth=immediates $REPO_URL
$ svn up --set-depth=infinity !(foo|frob)
上記は、 と を除くすべてのディレクトリ ツリーのチェックアウトをfoo
行いfrob
ます。
同様のこともできfind
ます。
問題は、Subversion が非常に単純であり、そのように設計されていることです。Perforce や ClearCase などの他のバージョン管理システムでは、何をチェックアウトするかを指定し、Perforce ではチェックアウト方法を指定します。
ただし、それにはビューを設定する必要があり、これらのバージョン管理システムの使用が非常に複雑になります。パーフォースが好きです。高速で強力ですが、ビューが必要なため、開発者はそれを嫌っていました。彼らにとって、それはある程度の複雑さを追加しましたが、実際にはあまりメリットがありませんでした. まばらなチェックアウトを行う必要はほとんどありませんでした。
これが Subversion リポジトリの一般的な問題である場合は、レイアウトを再考してより便利にすることをお勧めします。Subversion では、リポジトリ全体がブランチとタグを含む単なるファイル ツリーであるため、これはそれほど難しくありません。トランクを放棄して特定のブランチに置き換えたり、作業を容易にするためにリポジトリの名前を変更して再構築したりすることを何度も決定しました。
大規模な再構築が必要な場合は、必ず開発者と調整してください。作業中のディレクトリ ツリーを移動すると、変更をコミットできないことが突然わかります (ほとんどの場合、svn switch --relocate
この問題を回避するために変更を行うことができます。きれいなチェックアウトから始めましょう。