ファイルやディレクトリの無視

図4.33 バージョン管理外のファイルでのエクスプローラーコンテキストメニュー

バージョン管理外のファイルでのエクスプローラーコンテキストメニュー


ほとんどのプロジェクトでは、バージョン管理するべきでないファイルやフォルダーがあります。 *.obj, *.lst のようなコンパイラーが生成するファイルや、もしかしたら実行ファイルを格納する出力フォルダーも該当するかもしれません。変更をコミットする際、 TortoiseSVN ではコミットダイアログにバージョン管理外のファイルが表示されます。もちろんこの表示をオフにすることもできますが、そうすると、新しいソースファイルを追加し忘れるおそれがあります。

こういった問題を避けるには、生成されたファイルをプロジェクトの無視リストに追加しておくといいでしょう。こうすると、生成されたファイルはコミットダイアログに現れなくなりますが、本当にバージョン管理する前のソースファイルは現れたままになります。

バージョン管理外のファイルの上で右クリックし、コンテキストメニューで TortoiseSVN無視リストに追加 コマンドを選択すると、選択したファイルのみを追加するか、または同じ拡張子を持つファイルすべてを追加するかを選択するサブメニューが表示されます。どちらのサブメニューにも(再帰的)がついたものもあります。複数のファイルを選択した場合はサブメニューが表示されずに、指定されたファイルやフォルダーが追加されます。

コンテキストメニューで(再帰的)バージョンを選択すると、項目は選択されたフォルダーにとどまらず、すべてのサブフォルダーのものも同様に無視されます。但し、これにはSVNクライアントのバージョン1.8以上が必要です。

無視リストから項目を削除したい場合は、その項目で右クリックし、TortoiseSVN無視リストから削除 を選択してください。フォルダーの svn:ignore プロパティを直接変更することもできます。この場合、次項で説明するファイル名展開を使用して、より汎用的なパターンで指定することができます。プロパティを直接指定する方法については、 「プロジェクト設定」 をご覧ください。複数の無視パターンは改行で区切ってください。空白で区切っても動作しません。

常に無視するパターンのリスト

他にファイルを無視する方法として、 常に無視するパターンのリスト に追加する方法があります。大きな違いは、常に無視するパターンのリストがクライアントのプロパティであるという点です。これは 全ての Subversion プロジェクトに適用されますが、クライアント PC でしか適用されません。ふつうは、できれば svn:ignore プロパティを使用した方がいいでしょう。指定されたプロジェクトエリアで適用され、プロジェクトをチェックアウトした人すべてに働くからです。詳細は 「一般設定」 をご覧ください。

バージョン管理下の項目を無視する

バージョン管理下のファイルやフォルダーを無視させることはできません。これは Subversion の仕様です。間違えてバージョン管理下に入れてしまった場合は、 「バージョン管理外のファイルの無視」 にある、バージョン管理外にする方法をご覧ください。

無視リストでのパターンマッチ

Subversion の無視パターンは、ワイルドカードとしてメタ文字を使用してファイルを特定する、 UNIX で使用されてきたファイル名展開を使用します。特別な意味を持つのは次の文字です。

*

空文字列(文字なし)を含む任意の文字列にマッチします。

?

任意の1文字にマッチします。

[...]

角かっこで囲まれた文字のうちの1文字にマッチします。かっこ内では、 - を挟んだ2つの文字は、辞書的にその2文字間にある何れかの文字にマッチします。例えば、 [AGm-p]AGmnop のいずれかにマッチします。

パターン比較では大文字と小文字を区別しますが、これは Windows で問題の原因になるかもしれません。両方指定すれば、強制的に大文字小文字を区別しないようにできます。例えば、 *.tmp を大文字小文字にかかわらず無視するには、 *.[Tt][Mm][Pp] のようなパターンで指定してください。

展開方法の公式な定義が必要であれば、シェルコマンド言語の IEEE 仕様書 Pattern Matching Notation を参照してください。

常に無視するパターンのリストにはパスを含めない

パターンにパス情報を含めないでください。パターンの比較は、ファイル名やフォルダー名ごとに行われます。 CVS フォルダーをすべて無視したい場合、無視リストには、単に CVS と追加してください。以前のバージョンのように、CVS */CVS と指定する必要はありません。 prog フォルダーにある tmp フォルダーをすべて無視したいけれども、 doc フォルダーにあるものは無視したくない場合は、常に無視するパターンのリストではなく svn:ignore プロパティを使用してください。常に無視するパターンを使用して、これを確実に実現する方法はありません。