web-dev-qa-db-ja.com

Subversionのソースツリー全体のファイルを再帰的に無視する

私はSubversionを初めて使用するわけではありませんが、今までTortoiseを使用していて、commadn行は使用していません。私の質問は、ルートだけでなく、ソース全体から* .oのようなすべてのファイルをどのように無視するかです。

たとえば、次のファイルがあるとします。/myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o

Svn propeditの場合svn:ignore "。"ルートディレクトリに* .oを追加すると、myfile.oは無視されますが、/ folder1/myfile2.o、/ folder1/folder1.1/myfile3.o、/ folder2/myfile4.oは無視されません。 * .oをプロジェクト全体に追加する方法はありますか(このプロジェクトは他の多くのプロジェクトのリポジトリにあるため、リポジトリ全体では実行できません。これは可能です)。

明確にする必要がある場合はお知らせください。ありがとう!

50
alanquillin

編集する

以下に提供された元の回答は、ルートディレクトリおよびすべての単一のsvn:global-ignoresプロパティを上書き/置換せずにデフォルトのリポジトリレベル無視(svn:ignoreと呼ばれる)を設定する方法を導入したSubversion v1.8より前に与えられましたサブディレクトリ。 1.8以降、目的を達成するための最良の方法は、次のコマンドを呼び出すことです(クレジットはTManhenteに送られます)。

svn propset svn:global-ignores '*.o' .

以前のバージョン(およびそれ以降のバージョン)では、以下の元の回答に示されているアプローチを引き続き使用できます。ただし、これは、すべてのサブディレクトリのsvn:ignoreプロパティを置換/上書きしても問題がないことを前提としていることに注意してください...これは、小さめ/新しい風のリポジトリでは問題ないかもしれませんが、一部のサブディレクトリに、上書きしたくない独立したsvn:ignoreプロパティが含まれている可能性がある大規模/古いリポジトリ。

元の答え

次のコマンドのように、「svn propset」で「-R」または「--recursive」オプションを使用できます。

 svn propset svn:ignore '* .o'。 --recursive 

より詳しい情報

どちらの場合も、次のコマンドを使用してsvn propsetの詳細を確認できます。

 svn help propset 
68

ただの更新:Subversion 1.8.0が導入されました継承されたプロパティおよびリポジトリのディクテーションされた構成(auto-propsと無視の場合) 、これもこの場合に使用できます。

ルートパスに新しいsvn:global-ignoresプロパティを設定できます。 「プロパティが設定されているパスをルートとするサブツリーにのみ影響します」。

この新しいプロパティは、svn:ignoreのように設定されます。

    svn propset svn:global-ignores '*.o' .

詳細は Subversion 1.8.0リリースノート を参照してください。

39
TManhente

コメントの@ hackmaster.aで指摘されているように、受け入れられた回答で示されている例には、以前のすべてのsvn:ignore設定を消去するという副作用があります。 propeditの代わりにpropsetを使用しても機能しません。

複数のファイルを再帰的に追加する正しい方法は、svn:ignoreで設定されたsvn propset svn:ignore "[LIST]" .プロパティの改行で区切られたリストにファイル名を入れることです。

例えば:

    svn propset svn:ignore -R "*.pkl
    > *.class
    > Thumbs.db
    > data.tmp" .

もちろん、>は単なるシェルプロンプトです。

このコマンドは、svn:ignoreの現在のディレクトリとその各サブフォルダーの.プロパティを再帰的に変更します。

3
Saul Berardo