QA@IT

Subversionにおいて、レポジトリーの属性として常に除外されるファイル/ディレクトリーを設定するには?

4663 PV

subversionにおいて、既存のディレクトリーすべてに対して、特定のファイルをignoreするように設定することは、

svn propset -R svn:ignore '*.tmp' .

と実行することで可能ですが、この方法だと、既存のディレクトリーにのみ有効で、実行後に新規に追加したディレクトリーに対しては有効ではありません。

% mkdir test
% touch test/test.tmp
% touch test.tmp
% svn add .
A test
A test/test.tmp  # 新規のサブディレクトリー内にあるものは追加されてしまう

また、ログインユーザーに対して、特定のファイルをignoreするように設定することは、~/.subversion/config に global-ignores を設定することで可能ですが、この方法だと、ログインユーザーがチェックアウトしているすべてのレポジトリーに対して共通で有効になり、また、別のユーザーがチェックアウトした場合には、ignore されません。

  • レポジトリーの属性として
  • 新規に作成したディレクトリーに対しても常に有効な

svn に対するignoreを設定する方法は存在しないでしょうか?

追記
.svnignoreの設定について、実際に、以下の手順で行いましたが、変化はありませんでした。

% echo '*.tmp' > .svnignore
% svn add .svnignore
% svn ci -m ''
% mkdir aaaaa
% touch aaaaa/test.tmp
% svn add aaaaa
A aaaaa
A aaaaa/test.tmp

使用したSubversionは、Cygwin版 1.7.8 (r1419691)です。

回答

思いついたのは pre-commitフックではじく方法ですね。
Addの段階ではじきたいのであれば採用できませんが、コミットされたくないだけであれば代用可能かと思います。

余談ですが .svnignoreってSVNにもあるんでしたっけ?

編集 履歴 (0)
  • pre-commitで弾く方法は有効ですが、常に弾いてしまい、特定のファイルだけはコミットしたい、という場合には対応できないので、完全には実現できないと考えられます。
    .svnignore は、習慣的に利用されているだけで、機能としては存在しないようです。
    -
  • 追加したい場合があると難しいですね。ディレクトリが追加される時にsvn:ignoreが設定されていなければ弾くというのも考えられますが、試して無いのでなんとも……。.svnignoreファイルについては了解しました。 -

ここが参考になりそうです。

http://www.sssg.org/blogs/naoya/archives/583

ファイル名などのキーワードが出たら、それでマニュアルを探すのがいいのかもしれません。

編集 履歴 (0)
  • それでやっても新規にディレクトリ作ってディレクトリADDするとだめだという質問だと思います。 -
  • 「ディレクトリADD」→「ディレクトリごとADD」 の間違いです。失礼。 -
  • う、すいません、私も思い違いしてたみたいです。(試せる環境がなくて...orz) -

.svnignore ファイルで管理すればいけたはず。

参考ファイルがアップできませんが。

編集 履歴 (2)
  • 実際に、以下の手順で行いましたが、変化はありませんでした。
    '''
    % echo '*.tmp' > .svnignore
    % svn add .svnignore
    % svn ci -m ''
    % mkdir aaaaa
    % touch aaaaa/test.tmp
    % svn add aaaaa
    A aaaaa
    A aaaaa/test.tmp
    '''
    -
  • 失敬出先で上かいてたのでちょっと記憶違いをしてた。
    .svnignoreは svn:ignore に登録するときにつかってたファイルでした><
    ごめんなさい。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。