4

多くのサブディレクトリを含む大きなディレクトリ ツリーがあります。多くのディレクトリで を使用しsvn propedit svn:ignore .、指定されたディレクトリ内のファイルやディレクトリを無視しました。ここで、ディレクトリが呼び出されたすべてのサブディレクトリで、無視したいと思いfooます。この回答では、次を呼び出すことをお勧めします。

svn propset --recursive svn:ignore foo .

木の根元から。問題は、これを呼び出すと、さまざまなサブディレクトリ内の事前定義された無視がすべて上書きされることです。これは望ましくありません。基本的に、ツリー内の各ディレクトリの無視リストに、エントリのある行を追加したいと思いますfooSVN はこの種のアクションをサポートしていますか? そうでない場合は、このタスクのスクリプトを作成し、ファイルdir-prop-base(無視リストを保持しているように見える) の各行./sub/directory/.svn(.ツリーのルートはどこ) に必要な行を追加することを考えていました。それは安全ですか?、つまり手動で.svnコンテンツを台無しにしますか?

4

1 に答える 1

6

このタスクには bash スクリプトを使用することをお勧めします。ただし、ファイルを直接操作する代わりに、svn コマンド ツールを使用してください。このソリューションはシンプルで安全です。find -type d ! -path "*/.svn*" -exec /tmp/add_svn_ignore.sh {} +作業ディレクトリから実行すると、次のスクリプトがジョブを実行する可能性があります。

#! /bin/bash
ignore="foo"
for pathname in "$@"; do
    lines="$( svn propget svn:ignore "$pathname" )"
    grep -F -x -q "$ignore" - <<< "$lines" ||
    svn propset svn:ignore "$lines"$'\n'"$ignore" "$pathname"
done
于 2012-05-19T08:59:28.640 に答える