実行時設定領域

Subversion provides many optional behaviors that can be controlled by the user. Many of these options are of the kind that a user would wish to apply to all Subversion operations. So, rather than forcing users to remember command-line arguments for specifying these options, and to use them for every operation they perform, Subversion uses configuration files, segregated into a Subversion configuration area.

Subversionの設定領域 は二層に分かれたオプション名と 値の階層です。普通、これは定義ファイル (最初の 層)を含む特別なディレクトリに要約してあり、それは標準的なINI形式の テキストファイルにすぎません。(そこには「sections」 があり、 それが第二層になります)これらのファイルは好きなテキストエディタを 使って簡単に編集することができます。(emacs とか vi とか) そして、クライアント によって読み出される命令を含んでいて、ユーザが好むさまざまなオプションの 振る舞いをどうするかを決定します。

設定領域のレイアウト

svnコマンドラインクライアントが最初に実行されると、 それはユーザごとの構成領域を作ります。Unix 系のシステムなら、この領域は ユーザのホームディレクトリに、.subversion という名前の ディレクトリとして用意されます。Win32システムでは、Subversionは Subversionという名前のフォルダを作ります。普通には ユーザプロファイルディレクトリ(これは通常は隠れたディレクトリになりますが) のApplication Data 領域 の内部になります。しかし、このプラットフォームでは、完全な場所はシステム ごとに違っていて、本当の場所はWindowsレジストリ [49] に設定されています。 ユーザごとの設定領域は、Unix での名前である.subversion を使って参照することにします。

ユーザごとの設定領域に加えて、Subversionはシステム全体の設定領域も 理解することができます。これはシステム管理者にあるマシン上での すべてのユーザに対するデフォルトを設定する力を与えます。システム全体 の設定領域は必須のポリシーがあるわけではありません—ユーザ ごとの設定領域は、システム全体の領域を上書きし、svn プログラムに与えるコマンドライン引数は振る舞いを決める最後の場所に なります。Unix 系のプラットフォームでは、システム全体の設定領域は /etc/subversion ディレクトリにあると期待されて います。Windows マシンの場合は共通アプリケーション データ 領域の内部にある Subversionディレクトリを見に行きます (このディレクトリもWindows レジストリによって指定されます)。 ユーザごとの場合と違って、svn プログラムは システム全体の設定領域を作ろうとはしません。

The per-user configuration area currently contains three files—two configuration files (config and servers), and a README.txt file which describes the INI format. At the time of their creation, the files contain default values for each of the supported Subversion options, mostly commented out and grouped with textual descriptions about how the values for the key affect Subversion's behavior. To change a certain behavior, you need only to load the appropriate configuration file into a text editor, and modify the desired option's value. If at any time you wish to have the default configuration settings restored, you can simply remove (or rename) your configuration directory and then run some innocuous svn command, such as svn --version. A new configuration directory with the default contents will be created.

ユーザごとの設定領域は認証データのキャッシュも含みます。auth ディレクトリは Subversionでサポートされているさまざまな認証方法で利用される キャッシュ情報の要素を含むサブディレクトリの集まりを保持します。 このディレクトリはユーザ自身だけがその内容を読むことができるような形に 作成されます。

設定と、Windowsのレジストリ

普通の INIベースの設定領域に加えて、Windowsプラットフォーム上で実行されて いるSubversionクライアントはWindowsのレジストリも設定データを格納する場所 として利用することができます。オプション名とその値は INIファイル中と同じ です。「file/section」 の階層関係も保存されます。わずかに異なる 方法によりますが—この方法では、ファイルとセクションは単にレジストリ キーのツリーの階層にしかすぎません。

Subversionはシステム全体の設定値を HKEY_LOCAL_MACHINE¥Software¥Tigris.org¥Subversionキー の元で検削ウ駈オます。たとえばglobal-ignores オプション、 これはconfig ファイルのmiscellany セクションにありますが、HKEY_LOCAL_MACHINE¥Software¥Tigris.org¥Subversion¥Config¥Miscellany¥global-ignoresに見つけることができます。 ユーザごとの設定値は HKEY_CURRENT_USER¥Software¥Tigris.org¥Subversion. の下に格納されるはずです。

Registry-based configuration options are parsed before their file-based counterparts, so are overridden by values found in the configuration files. In other words, Subversion looks for configuration information in the following locations on a Windows system; lower-numbered locations take precedence over higher-numbered locations:

  1. コマンドラインオプション

  2. ユーザごとのINIファイル

  3. ユーザごとのレジストリ値

  4. システム全体のINIファイル

  5. システム全体のレジストリ値

また、Windowsレジストリは「コメントアウト」 のような概念をサポートしていません。しかし、Subversionは、 キーの名前がハッシュ文字(#) で始まるような すべてのオプションを無視します。これで実際にはSubversionのオプション を、レジストリから完全にキーを消さずにコメントアウトすることができます。 明らかに、そのオプションの設定作業は簡単にしています。

svn コマンドラインクライアントはWindowsの レジストリに書き込むことは決してありませんし、そこに デフォルトの設定値を作ろうともしません。必要なキーは REGEDITプログラムで作ることができます。他の方法 としては、.reg ファイルを作り、エクスプローラ シェルからそのファイルをダブルクリックすると、そのデータが レジストリにマージされます。

例 7.1. レジストリエントリ(.reg) ファイルの例

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\groups]

[HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\global]
"#http-proxy-host"=""
"#http-proxy-port"=""
"#http-proxy-username"=""
"#http-proxy-password"=""
"#http-proxy-exceptions"=""
"#http-timeout"="0"
"#http-compression"="yes"
"#neon-debug-mask"=""
"#ssl-authority-files"=""
"#ssl-trust-default-ca"=""
"#ssl-client-cert-file"=""
"#ssl-client-cert-password"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auth]
"#store-passwords"="yes"
"#store-auth-creds"="yes"

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\helpers]
"#editor-cmd"="notepad"
"#diff-cmd"=""
"#diff3-cmd"=""
"#diff3-has-program-arg"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\tunnels]

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"#global-ignores"="*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store"
"#log-encoding"=""
"#use-commit-times"=""
"#no-unlock"=""
"#enable-auto-props"=""

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auto-props]


この例は、.reg の内容を示した例ですが、その 中には、よく利用される設定オプションの大部分とそのデフォルト値が あります。システムの設定(たとえばネットワークプロキシに関するオプション) と、ユーザごとの設定(利用するエディタ、パスワード、など)の両方が あることに注意してください。さらにすべてのオプションは、コメントアウト されていることにも注意してください。オプション名の先頭のハッシュ文字 (#) を取り除くだけで、望んでいる値に設定することが できます。

設定オプション

この章では、特定の実行時オプションについて議論します。現在Subversion がサポートしているものについてです。

servers

servers ファイルはSubversionの設定オプションで、 ネットワーク層に関係したものを含んでいます。二つのセクション名がその ファイルにはあります—groupsglobal です。groupsセクションは、要するにクロスリファレンスの テーブルです。このセクションのキーは、ファイル中にある別のセクションの名前 です。その値はグロブ—ワイルドカードを含んで いるかも知れないテキストトークンです—で、Subversionの要求が送信 されるマシンのホスト名称と比較されます。

[groups]
beanie-babies = *.red-bean.com
collabnet = svn.collab.net

[beanie-babies]
…

[collabnet]
…

Subversionがネットワーク越しに利用される場合、groups セクションにあるグループ名に合うサーバ名称とマッチするものを探します。 もしマッチした場合はSubversionは次に、その名前がグループ名称とマッチした servers ファイル中のセクションを探します。そして そのセクションから実際のネットワーク設定オプションを読み出します。

global セクションはgroupsセクション のどのグロブにも当てはまらなかったすべてのサーバに対する 設定があります。このセクションで使えるオプションは、ファイルの別の サーバセクションで利用できるものとまったく同じです。(ただし、 もちろん、groups セクションは例外です) 以下のような感じです:

http-proxy-exceptions

This specifies a comma-separated list of patterns for repository hostnames that should accessed directly, without using the proxy machine. The pattern syntax is the same as is used in the Unix shell for filenames. A repository hostname matching any of these patterns will not be proxied.

http-proxy-host

これは、プロキシコンピュータのホスト名称で、HTTPベースのSubversion はそこを通じて通信しなくてはなりません。デフォルトは空で、それは Subversionはプロキシを通してHTTP要求せず、直接、目的のマシンと 通信しようとすることを意味しています。

http-proxy-port

これは、利用するプロキシホストのポート番号を指定します。 デフォルトは空です。

http-proxy-username

これは、プロキシマシンで必要なユーザ名を指定します。 デフォルトは空です。

http-proxy-password

これは、プロキシマシンで必要なパスワードを指定します。 デフォルトは空です。

http-timeout

This specifies the amount of time, in seconds, to wait for a server response. If you experience problems with a slow network connection causing Subversion operations to time out, you should increase the value of this option. The default value is 0, which instructs the underlying HTTP library, Neon, to use its default timeout setting.

http-compression

これは、DAVが有効なサーバで、Subversionがネットワーク要求データを 圧縮するかどうかを指定します。デフォルト値はyes (ただし、圧縮はネットワーク層のコンパイル時に有効になっていなくては なりませんが、)です。no に設定すると圧縮は 無効になりますが、これはネットワーク転送のデバッグ時などに使います。

neon-debug-mask

これは、整数値のマスクで、HTTPライブラリNeon がどのようなタイプの デバック出力を生成するかを指定するものです。デフォルトは 0で、すべてデバッグ出力を無効にします。Subversion がNeonをどのように使うかについての詳細は 第8章を見てください。

ssl-authority-file

これは HTTPS 経由でリポジトリにアクセスするときに Subversion クライアントによって受け入れられる認証機関(あるいは CA)の 証明書を含むファイルパスのリストをセミコロンで区切ったものになります。

ssl-trust-default-ca

Subversion が自動的に OpenSSL に付いているデフォルトのCA を信用する ようにしたい場合にはこの変数をyesにしてください。

ssl-client-cert-file

ホスト(あるいは何台かのホスト)が SSL クライアント証明書を要求する場合 普通は証明書のあるパスを入力するようにユーザにうながします。そのパスを この変数に設定すると Subversion はユーザの入力なしにクライアント証明書 を自動的に探すことができるようになります。証明書をディスク上に保存する ための標準的な場所はありません; Subversion は指定したどのようなパスから でもそれを取得することができます。

ssl-client-cert-password

SSL クライアント証明書ファイルがパスフレーズで暗号化されている場合 Subversion はその証明書を利用するたびにパスフレーズの入力を求めます。 これが嫌なら(そしてserversファイル中に 自分のパスワードを保存するのが嫌でなけれぱ)、この変数に証明書の パスフレーズを設定することができます。これでパスフレーズを聞かれる ことはなくなります。

config

The config file contains the rest of the currently available Subversion run-time options, those not related to networking. There are only a few options in use as of this writing, but they are again grouped into sections in expectation of future additions.

auth セクションはSubversionのリポジトリに対する 認証と許可に関係した設定があります。それは:

store-passwords

これはSubversionにサーバ認証チャレンジに対してユーザが 入力するパスワードをキャッシュするかどうかを指示します。 デフォルトはyes です。noに 設定するとディスク上でのパスワードのキャッシュを無効にします。 このオプションはsvn コマンドインスタンスのどれか で--no-auth-cache を使うと上書きすることができます。 (あるいはこの引数をサポートしているコマンドであればどれでも)。 詳細はクライアント証明のキャッシュ項を参照してください。

store-auth-creds

この設定は store-passwordsと同じですが、ディスク上 にキャッシュする すべての認証情報を有効にしたり 無効にするところが違います。このような情報にはユーザ名、パスワード サーバ証明書、その他のキャッシュ可能な認証情報すべてが含まれます。

helpers セクションはSubversionがどの 外部アプリケーションをいくつかの処理で使うかを制御します。 このセクションで有効なものは:

editor-cmd

This specifies the program Subversion will use to query the user for a log message during a commit operation, such as when using svn commit without either the --message (-m) or --file (-F) options. This program is also used with the svn propedit command—a temporary file is populated with the current value of the property the user wishes to edit, and the edits take place right in the editor program (see 属性項). This option's default value is empty. The order of priority for determining the editor command (where lower-numbered locations take precedence over higher-numbered locations) is:

  1. Command-line option --editor-cmd

  2. Environment variable SVN_EDITOR

  3. Configuration option editor-cmd

  4. Environment variable VISUAL

  5. Environment variable EDITOR

  6. Possibly, a default value built in to Subversion (not present in the official builds)

The value of any of these options or variables is (unlike diff-cmd) the beginning of a command line to be executed by the shell. Subversion appends a space and the pathname of the temporary file to be edited. The editor should modify the temporary file and return a zero exit code to indicate success.

diff-cmd

これは差分表示プログラムの絶対パスを指定します。このプログラムは Subversionが 「diff」 の出力を生成するのに利用 されるものです( svn diff コマンド実行時 などです)。デフォルトで Subversion は内部的な差分ライブラリを 利用します—このオプションによって外部プログラムを使って 処理するようになります。そのようなプログラムの使い方の詳細は 外部差分ツールの利用項を見てください。

diff3-cmd

これはスリーウェイ差分プログラムの絶対パスを指定します。Subversion はこのプログラムをリポジトリから受け取った、ユーザがした変更点を マージするのに使います。デフォルトで Subversion は内部的な差分 ライブラリを利用します—このオプションを設定すると、外部プログラムを 使って処理を実行するようになります。そのようなプログラムの使い方の 詳細は 外部差分ツールの利用項 を見てください。

diff3-has-program-arg

このフラグはdiff3-cmd オプションが --diff-program パラメータを受け付ける場合には trueを指定すべきです。

tunnels セクションでは svnservesvn://クライアント接続を使った新しいトンネルスキーマを定義する ことができます。詳細はSSH のトンネリング項を参照してください。

miscellany セクションは他の場所に置けない すべてのものの置き場所です。 [50] このセクションには:

global-ignores

svn statusコマンドを実行するとSubversionは バージョン化されないファイルとディレクトリをバージョン化されて いるものと一緒に一覧表示します。このときバージョン化されていない ことを? 文字で表現します。 (自分がした変更の概要確認項参照)。 ときどき、あまり興味のないバージョン化されないアイテムが表示されるのを 見るのを面倒に思うことがあります。 —たとえば、プログラムのコンパイルによってできるオブジェクトファイル など— global-ignores オプションは空白で区切られたグロブの リストで、バージョン化されていないのであればSubversionに表示して欲しく ないものの名前の指定になります。デフォルトは *.o *.lo *.la #*# .*.rej *.rej .*‾ *‾ .#* .DS_Storeです。

svn status のほか、 svn addsvn import コマンドもリストにマッチするファイルを無視します。 どのコマンドでも--no-ignore フラグを使うとこのオプションをその実行に限って上書きできます。

無視するアイテムについてのもっと細かい制御については 無視されるバージョン管理下にないアイテム項を見てください。

enable-auto-props

これは Subversion に新規追加またはインポートしたファイルの属性を 自動的に設定するように指示します。デフォルト値はno なので有効にするにはyesにしてください。 このファイルのauto-propsセクションはどの属性が どのファイル上に設定されるかを指定します。

log-encoding

この変数はログメッセージをコミットするキャラクタセットのデフォルト エンコーディングを設定します。これは --encoding オプションを無条件に有効にするものです( svn のオプション項 参照)。Subversion リポジトリはログメッセージを UTF8 で保存し、あなたの ログメッセージはあなたのオペレーティングシステムの独自のロカールを使って 書き込まれることを仮定しています。他のエンコーディングで書いたメッセージ をコミットしたい場合には別のエンコーディングを指定すべきです。

use-commit-times

通常作業コピーのファイルはどんな操作をしたかにかかわらず最後に触った 時刻を反映したタイムスタンプを持ちます。これはエディタで編集したか、 他のsvnサブコマンドを使ったかにはよりません。 これは普通はソフトウェア開発者にとって便利なものですが、それは ビルドシステムはよくどのファイルが再コンパイルを必要としているか を決めるのにタイムスタンプを見るためです。

しかし別の状況ではリポジトリで変更された最終時刻を反映しているような タイムスタンプが作業ファイルに振られているほうが便利であることも あります。 svn exportコマンドは常に、このような 抽出したツリー上の 「最終コミット時間」 を振りますが、この設定変数を yesにすると、svn checkout, svn update, svn switch, そして svn revertについても同様に、それらの操作が 触れたファイルに最終コミット時間を振るようになります。

auto-propsセクションは Subversion クライアントが追加 またはインポートしたファイルの属性を自動的に設定する能力を制御します。 そこには PATTERN = PROPNAME=PROPVALUEの形をした 任意数のキー・属性値の組を置くことができますが、ここでPATTERN はファイル名称にマッチするような正規表現で、行の残りの部分は対応する属性と その値です。ファイルに複数の要素がマッチすれば、そのファイルに複数の属性が 設定されることになります; しかし設定ファイル中に列挙された auto-props が その順序で適用されるかどうかの保証はないので一つの規則で別の規則を 「上書き」することはできません。config ファイル中に、auto-props を使ったさまざまな例を見つけることができる でしょう。最後に、auto-props を有効にするにはenable-auto-propsyesにするのを忘れずに。



[49] APPDATA 環境変数は Application Data 領域を 指しているので、常にそのフォルダを%APPDATA%¥Subversion のように参照することができます。

[50] 残り物でディナーはいかが?