Subversion はリポジトリの一部をチェックアウトできる。ブランチやタグをコピーで実現する以上必須の機能で、昨今の分散型には見られない便利な特徴でもある。
それはそれとして、逆のことをしたいと思ったことはないだろうか。つまり、作業ディレクトリの特定のディレクトリ以下を無視したい。
追加や状態確認時に無視するのなら svn:ignore を使えばいい。そうではなくて、リポジトリには存在するけど個人的に用がなくてそこは見たくない場合。巨大なファイルがあったり、用もないのに頻繁に更新される場所は無視したいだろう。
そのやり方を紹介。
無視する
TortoiseSVN
無視したいディレクトリを右クリックして、TortoiseSVN → 特定のリビジョンへ更新(U) ... → 「更新の深さ」で「除外」を指定して OK
元に戻す
TortoiseSVN
無視したディレクトリの親(どの階層でもいい)を右クリックして、TortoiseSVN → 特定のリビジョンへ更新(U) ... → 「更新の深さ」で「再帰的」を指定して OK
細かい話
ちゃんとドキュメントを読んでないので憶測だけど、どうやら Subversion はディレクトリ毎に更新の深さを設定できるらしい。それを設定するのが svn update --set-depth
意味 | |
---|---|
exclude | 対象ディレクトリを更新しない |
empty | 対象ディレクトリの中身を更新しない |
files | 対象ディレクトリの中にあるディレクトリを更新しない(ファイルのみ更新する) |
immediates | 対象ディレクトリ内のファイルとディレクトリは更新するが、対象ディレクトリ内のディレクトリの中身は更新しない |
infinity | 再帰的に全て更新する |
更新の深さの情報がどこに保存されててどうすれば参照できるのかがよく分からなかったんだけど、どちらにしても場合によっては便利な機能なので、活用したいですね。
*1:管理外のファイルがあった場合は残る