Subversion のプロパティ(属性)を自動で設定する

シェアする

どうも、ながやすです。

最近は git を使う現場も多くなってきていますが、まだまだ Subversion(svn)を使っているところも多いですよね。今回は svn のプロパティ(property, 属性)というものについてです。

このプロパティというのはメタ情報を付加する便利機能です。たとえば「チェックアウト時にOSにあわせて改行コードを変更する」「編集するためにSVNロック取得を必須にする」などができます。これは使ってみるといろいろと便利な機能です。

まず、これらの各設定方法を簡単に説明します。そのあとに、これらをコミット時に自動で設定する方法を説明します。コミット時に自動でプロパティを設定できるようにしておくと、作業漏れがなくなりミスを防げますね!

プロパティはいろんな機能があります、詳しい説明は下記のサイトを参照ください。

プロパティの説明(Subversion 1.2 日本語訳)
プロパティの説明(Subversion 1.7 英語)

スポンサーリンク

手動でプロパティ(属性)を設定する

CLI でプロパティを設定する | propset

CLI で設定するときは propset というサブコマンドを使います。使い方は簡単です。たとえば「チェックアウト時にOSにあわせて改行コードを変更する」には「eol-style」というプロパティを「native」に設定してあげればいいです。それを実行するコマンドは下記のようになります。

$ svn propset svn:eol-style native hoge.c

また、チェックアウト時に実行可能権限を付加する場合は下記のようにします。

$ svn propset svn:executable ON hoge.sh

propset の基本的な使い方はこんな感じです。さらに詳細な propset サブコマンドの説明は下記のサイトを参照ください。

svn propset の説明(Subversion 1.2 日本語訳)

svn propset の説明(Subversion 1.7 英語)

TortoiseSVN でプロパティを設定する

Windows の場合は TortoiseSVN を利用している場合が多いかと思います。TortoiseSVN ならもっと簡単にプロパティを設定できます。たとえば「チェックアウト時にOSにあわせて改行コードを変更する」には下図のようにします。

まず変更したいファイルを右クリックして「TortoiseSVN」→「プロパティ」を選択します(下図は英語版なので「プロパティ」でなく「Propaties」となっています)。

次に「改行コード」→「環境依存(ネイティブ)」を選択します(下図は英語版なので「改行コード」「環境依存(ネイティブ)」でなく「EOL」「Platform dependent (native)」となっています)。これで改行コードが OS に合わせてチェックアウトされます。

また、チェックアウト時に実行可能権限を付加する場合は、「TortoiseSVN」→「プロパティ」とした後に「実行形式」を選択します(下図は英語版なので「実行形式」でなく「Executable」となっています)。これでチェックアウト時に実行可能権限が付加されます。

コミット時に自動でプロパティ(属性)を設定する

上記のように手動で設定するのは設定漏れのもとです。コミット時に自動でやりたいですよね。それを実現する方法もちゃんとあります。コンフィグファイル(config)に設定を記述しておけばそれが可能になります。

コンフィグファイルのありか

Linux の場合は下記にあります。ホームディレクトリの下のほうです。

~/.subversion/config

Windows の場合は下記にあります(username は適宜読み替えてください)

C:\Users\username\AppData\Roaming\Subversion\config

TortoiseSVN を使っている場合は上記のパスを知らなくても GUI から config ファイルにアクセス可能です。右クリックしてから「設定」→「Subversion の設定ファイル」ボタンの横の「編集」をクリックしてください(下図は英語版なので、それぞれ「Settings」「Subversion configuration file」「Edit」となっています)。

すると下図のようにコンフィグファイルが開かれます。

コンフィグファイルの設定

例として、今回はコミット時に下記の3つを自動で設定するようにします。

  • .c, .cpp, .h, .sh は自動で改行文字をOSにあわせる
    (Windows なら CRLF、Linux なら LF)
  • .sh は実行可能権限を付加する
  • .xlsx (エクセルファイル)はコンフリクトを防ぐためにロック取得を必須にする
  • まず、エディタでconfigファイルを開きます。
    つぎに自動プロパティ設定機能有効にします。config ファイルに「enable-auto-props = yes」と記述します。デフォルトではこの記述はコメントアウトされた状態になっているとおもいますので、コメントアウトをはずせばOKです。OSや svn のバージョンによるかと思いますが、手元の環境では117行目あたりにありました。下記のようになっているとおもいますので、行頭の「#」を消して enable-auto-props を有効にしてください。

    ### Set enable-auto-props to 'yes' to enable automatic properties
    ### for 'svn add' and 'svn import', it defaults to 'no'.
    ### Automatic properties are defined in the section 'auto-props'.
    # enable-auto-props = yes
    

    さらに、自動で付加するプロパティを設定します。デフォルトではconfig ファイルに下記のように記述されているかと思います。

    ### Section for configuring automatic properties.
    [auto-props]
    ### The format of the entries is:
    ###   file-name-pattern = propname[=value][;propname[=value]...]
    ### The file-name-pattern can contain wildcards (such as '*' and
    ### '?').  All entries which match (case-insensitively) will be
    ### applied to the file.  Note that auto-props functionality
    ### must be enabled, which is typically done by setting the
    ### 'enable-auto-props' option.
    # *.c = svn:eol-style=native
    # *.cpp = svn:eol-style=native
    # *.h = svn:keywords=Author Date Id Rev URL;svn:eol-style=native
    # *.dsp = svn:eol-style=CRLF
    # *.dsw = svn:eol-style=CRLF
    # *.sh = svn:eol-style=native;svn:executable
    # *.txt = svn:eol-style=native;svn:keywords=Author Date Id Rev URL;
    # *.png = svn:mime-type=image/png
    # *.jpg = svn:mime-type=image/jpeg
    # Makefile = svn:eol-style=native
    

    これを参考にして設定します。下記のようにすればOKです。行頭の「#」を消すことを忘れずに。

    *.c = svn:eol-style=native
    *.cpp = svn:eol-style=native
    *.h = svn:eol-style=native
    *.sh = svn:eol-style=native;svn:executable
    *.xlsx = svn:needs-lock
    

    これで、コミット時に自動でプロパティを設定できるようになりました。

    まとめ

    今回は Subversion でのコミット時に自動でプロパティ(属性)を設定する方法を説明しました。基本的にCLIでもGUI(TortoiseSVN)でもやり方は同じです。プロパティには今回例として挙げたもの以外にもいろんな機能があります。ぜひ活用してみてください!