Subversionで無視パターンを指定

編集者:Terai Atsuhiro
作成日:
更新日:2014-09-04 (木) 01:00:50

概要

例としてbakファイル(*.bak、*.BAK)などを、ステータス表示(svn status)で無視する設定方法を、以下に3つ紹介しています。

  • configファイルでglobal-ignoresを設定する(ローカル)
  • レジストリでglobal-ignoresを設定する(ローカル)
  • svn:ignore属性をディレクトリに設定する

設定方法

configファイルでglobal-ignoresを設定する(ローカル)

ローカルで無視したいファイルの拡張子などをconfigファイルに設定します。

C:\Documents and Settings\ユーザ名\Application Data\Subversion\Config をエディタで開き、[miscellany]のコメントアウトを外してglobal-ignoresにパターンを追加します。区切りはホワイトスペース、パターン指定にはワイルドカードの"*"と"?"が使用できます。詳細はConfig(Config)を参照してみてください。

### Section for configuring miscelleneous Subversion options.
[miscellany]
### Set global-ignores to a set of whitespace-delimited globs
### which Subversion will ignore in its 'status' output.
# global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store
global-ignores = *.o *.lo *.la #*# .*~ *~ .#* .DS_Store *.bak *.BAK

no-ignoreオプションをつけてステータスを表示すると、*.BAKなどに"I"が付き、無視されていることが確認できます。

C:\temp\test>svn st --no-ignore
I      build.BAK
?      src\Test.java
I      src\Test.java.1~
I      src\Test.BAK
?      src\Test.BAK2

日本語を使用する場合は、configファイルをUTF-8*1で保存します。例えばコピー ~ Hoge.javaのような日本語やスペースを含むファイルを無視する場合は、以下のように設定します。

global-ignores = #*# .*~ *~ *.bak *.BAK XTAGS *.tmp コピー?~*

レジストリでglobal-ignoresを設定する(ローカル)

Windows版の場合、レジストリにglobal-ignoresを設定することもできます。以下を.regファイルにして実行するか、regedit.exeで直接編集してください。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"global-ignores"="*.o *.lo *.la #*# .*~ *~ .#* .DS_Store *.bak *.BAK"

svn:ignore属性をディレクトリに設定する

リポジトリの任意ディレクトリに無視パターンを設定する場合は、svn:ignore属性を使用します。詳細はsvn:ignore(svn:ignore)を参照してみてください。

C:\temp\test>svn st
?      lib\Test.BAK
?      src\Test.BAK

上記のような状態から、srcディレクトリは*.BAKを無視するようpropsetします。

C:\temp\test>svn propset svn:ignore *.BAK .\src
property 'svn:ignore' set on 'src'
C:\temp\test>svn st
?      lib\Test.BAK
M      src

これにより、srcディレクトリの属性が変更されたのでチェックインします。

C:\temp\test>svn ci -m "src ignore BAK"
Sending        src

Committed revision 23.

propeditを使う場合は、SVN_EDITORで指定したエディタで一行ずつパターンを記入してやります*2

C:\temp\test>svn propedit svn:ignore src
*.bak
*.BAK

proplistを使って属性を確認します。

C:\temp\test>svn proplist -v http://localhost/svn/test/src
Properties on 'http://localhost/svn/test/src':
  svn:ignore : *.BAK
  • 注意点
    • svn:ignoreはサブディレクトリには効かない
    • svn add *.BAK のようにした場合は、無視せずリポジトリに追加される

コメント