リポジトリにあるものを無視することはできません。それは、Subversion で無視がどのように機能するかではありません。
無視は、リポジトリに誤っ てファイルを追加することを防ぐための単純な方法です。ファイルがリポジトリに既に存在する場合、それを無視することはできません。
グローバル無視はファイルにのみ適用され、ディレクトリには適用されません。.settings
Subversion 設定ファイルで無視すると、 というディレクトリは無視されず.settings
、 というファイルだけが無視されます.settings
。また、.settings
ファイルがまだリポジトリにない場合にのみ無視されます。
svn add *
基本的に、またはと言った場合svn status
、リポジトリになく、グローバル無視パターンに一致するファイルは追加されませんsvn status
。それだけです。
svn:ignore
同様の名前のディレクトリにプロパティを作成できます。ただし、svn:ignore
ディレクトリも無視します。たとえば、Maven プロジェクトがある場合、svn:ignore
=を設定target
すると、ターゲット フォルダーはレポートされません。ただし、svn:ignore
サブディレクトリではなく、プロパティがオンになっているディレクトリに対してのみ機能します。
.settings
では、どのようにディレクトリを無視できますか? シンプル:あなたはそれをチェックアウトしません。残念ながら、Subversion でこれを行う簡単な方法はありません。できることは次のとおりです。
$ svn checkout --depth=immediates http://server/src/myproj
これにより、作業ディレクトリ内のすべてのフォルダーとファイルがチェックアウトされますが、サブディレクトリはチェックアウトされません。Kornshell と BASH ( を設定した場合shopt -s extglob
):
$ svn update --set-depth=infinity !(.settings)
これにより、ディレクトリを除くすべてのディレクトリでチェックアウトが続行されます.settings
。
これを行うこともできます:
$ svn update --set-depth=exclude .settings
.settings
すでにチェックアウトされているディレクトリを削除します。これは.settings
リポジトリからディレクトリを削除しませんが.settings
、作業ディレクトリからディレクトリを削除svn diff
し、作業ディレクトリ (リポジトリ URL ではありません) では.settings
ディレクトリ内の何も報告しません。
強調しなければならない重要な点が 1 つあります。無視するのは、ファイルが誤ってリポジトリに追加されるのを防ぐだけです。誰かがそれを追加することを妨げるものではなく、いったんそこにあると、無視されることはありません.
また、グローバルな無視設定は、すべての人にグローバルではありません。あなただけに。リポジトリに追加してはならないファイルを他のユーザーが追加するのを防ぎたい場合は、このような pre-commit フックが必要です。
このフックは、特定の名前のファイルまたはディレクトリがコミットされないようにするために使用できます。また、ファイルおよびディレクトリのプロパティが設定されていることを確認するためにも使用できます。たとえば、他の.settings
ユーザーがプロジェクトのディレクトリに追加できないようにする必要がある場合があります。またはsvn:ignore
、ディレクトリのプロパティがディレクトリを無視するように設定されてい.settings
ます。