プロジェクト設定

図4.31 エクスプローラプロパティページの Subversion タブ

エクスプローラプロパティページの Subversion タブ


時にオーバーレイアイコンより詳しい、ファイル・ディレクトリに関する情報が欲しいことがあるでしょう。そういったとき Subversion が提供するすべての情報をエクスプローラのプロパティダイアログから取得することができます。単にファイルやディレクトリを選択し、コンテキストメニューの Windows メニュープロパティ を選択してください。(注: エクスプローラが提供する通常のプロパティメニューで、TortoiseSVN のサブメニュー内のものではありません!) Subversion 管理下にあるファイル・フォルダの属性ダイアログボックスには、TortoiseSVN が追加した新しい属性ページがあります。ここで、選択したファイル・フォルダに関連する情報を、すべて見ることができます。

Subversion の属性

図4.32 Subversion の属性ページ

Subversion の属性ページ


Windows のプロパティダイアログから、Subversion の属性を確認・設定できますが、さらに TortoiseSVN属性コンテキストメニュー属性 からの TortoiseSVN の状態リストでも確認できます。

自分で定義した属性の他、Subversion で特別な意味のある属性も追加できます。これは svn: で始まります。svn:externals も、そのような属性です。「外部項目」 で外部参照の説明をしていますのでご覧ください。

svn:keywords

Subversion は、ファイル自身にファイル名やリビジョン情報を埋め込む CVS 風キーワード展開をサポートしています。現在キーワードは以下のものをサポートしています。

$Date$

最後のコミット日時。作業コピーを更新したときの情報を元にしています。もっと新しい情報を、リポジトリにチェックしにいくようなことはありません

$Revision$

最後のコミットを行ったリビジョン。

$Author$

最後のコミットを行った作者

$HeadURL$

このファイルのリポジトリでのフル URL。

$Id$

前述の 4 つのキーワードの組み合わせたもの。

以上のキーワードの使用法については、Subversion book の svn:keywords section で、キーワードの説明とその有効化・利用法の説明をしています。

Subversion の属性に関する詳細情報は、Special Properties をご覧ください。

属性の追加と編集

図4.33 属性の追加

属性の追加


新しい属性をセットするには、まず 追加... をクリックしてください。必要な属性名をコンボボックスから選択・入力し、下のテキストボックスに値を入力してください。無視リストのような複数の値を持つ属性は、複数行で入力してください。OK をクリックして、この属性をリストに追加してください。

一度にたくさんの項目に対して属性を設定する場合は、エクスプローラでファイル/フォルダを選択し、コンテキストメニュー属性 を選択してください。

現在のフォルダ以下にある すべての ファイルやフォルダに対して属性を適用する場合、再帰 チェックボックスをチェックしてください。

svn:needs-lock のようないくつかの属性は、ファイルにしか適用できず、フォルダのドロップダウンリストには属性名が表示されません。その階層内すべてのファイルにそういった属性を適用できますが、属性名は自分で入力しなければなりません。

既存の属性を編集する場合、属性の一覧から編集する属性を選択し、編集... をクリックしてください。

既存の属性を削除したい場合、属性の一覧から削除する属性を選択し、削除 をクリックしてください。

svn:externals 属性は、同じリポジトリからでも完全に異なるリポジトリからでも、他のプロジェクトを取得するのに使用できます。詳細は 「外部項目」 をご覧ください。

属性のエクスポートとインポート

しばしば、何度も同じ属性のセット (例: bugtraq:logregex) を適用していることに気付くでしょう。あるプロジェクトから別のプロジェクトへ、属性を簡単にコピーするのに、エクスポート・インポート機能を利用できます。

すでに属性をセットしているファイル・フォルダで、TortoiseSVN属性 を使用し、エクスポートしたい属性を選択して エクスポート... をクリックしてください。属性の名前と値を保存するファイル名を入力することになります。

属性を適用したいフォルダで、TortoiseSVN属性 とし、インポート... をクリックしてください。インポートするファイルを指定することになりますので、先ほど保存したエクスポートファイルを指定してください。属性をそのフォルダに、再帰的ではなく追加します。

属性をツリーに対し再帰的に追加する場合、前述の手順の後、属性ダイアログで属性を選び、編集... をクリックしてください。属性を再帰的に適用する チェックボックスをチェックの後、OK をクリックしてください。

インポートファイルはバイナリで TortoiseSVN 専用です。インポートやエクスポートでの属性の受け渡し専用で、このファイルを編集する必要はありません。

バイナリ属性

TortoiseSVN は、ファイルを使用することでバイナリの属性値を扱えます。バイナリ属性値を読むには、ファイルに 保存... してください。バイナリ値をセットするには、十六進エディタや他の適切なツールを利用して必要な内容を持つファイルを作成し、そのファイルから 開く... としてください。

バイナリ属性はあまり使用されませんが、いくつかのアプリケーションでは便利です。例えば、巨大な画像ファイルを格納している場合や、アプリケーションが読み込むファイルが巨大な場合、プレビューを素早く得るのに、属性にサムネイルを格納しておきたいでしょう。

属性の自動設定

ファイルやフォルダをリポジトリに追加した際に、自動的に属性を設定するように Subversion や TortoiseSVN を設定できます。これには 2 通りの方法があります。

subversion 設定ファイルを編集して、あなたのクライアントでこの機能を有効にできます。TortoiseSVN の設定ダイアログの 一般 ページに、直接編集を行える編集ボタンがあります。設定ファイルは、subversion の動作を制御する、シンプルなテキストファイルです。ここで 2 つの変更をする必要があります。ひとつめは、miscellany という見出しのセクションで、enable-auto-props = yes という行をアンコメントします。ふたつめは、その下にある、どのファイルタイプに、どの属性を追加するかを定義したセクションを、編集する必要があります。この方法は、一般的な subversion の機能で、どの subversion クライアントでも動作します。しかし、各クライアントでそれぞれ定義しなければなりません。つまり、この設定をリポジトリに伝播する方法はありません。

もうひとつの方法は、tsvn:autoprops 属性をフォルダに設定することで、次節で説明しています。この方法は、TortoiseSVN クライアントでしか動作しませんが、作業コピーを更新すると、すべての作業コピーに伝播します。

どちらの方法を選択しても、ファイルが追加されたときにのみ、auto-propsを適用することに注意するべきです。すでにバージョン管理下にあるファイルには、auto-props で属性を変更することはありません。

新しいファイルには正しい属性が適用されていると、絶対に間違いないとしたい場合は、必要な属性がセットされていないコミットを拒否するような、pre-commit フックをリポジトリにセットアップするべきです。

属性のコミット

Subversion の属性はバージョン管理されます。属性を変更したり追加した後には、変更をコミットする必要があります。

属性の競合

他のユーザが同じ属性を変更したなどして、コミット時に競合が発生した場合、Subversion は .prej ファイルを生成します。競合を解消した後にこのファイルを削除してください。

TortoiseSVN のプロジェクト属性

TortoiseSVN は自身が持つ特殊な属性をいくつか持っています。これは tsvn: で始まります。

  • tsvn:logminsize はコミット時に入力するログメッセージの長さの最小値を設定します。ここで指定した長さより短いメッセージを入力するとコミットできません。この機能はコミットごとに適切に説明するメッセージを入力するのを忘れないようにするのに便利です。この属性が設定されていなかったり、値が 0 の場合、ログメッセージが空でも良くなります。

    tsvn:lockmsgminsize はロックメッセージの長さの最小値を設定します。ここで指定した長さより短いメッセージを入力するとロックできません。この機能はロックするごとに適切に説明するメッセージを入力するのを忘れないようにするのに便利です。この属性が設定されていなかったり、値が 0 の場合、ロックメッセージが空でも良くなります。

  • tsvn:logwidthmarker はログのフォーマットとして、行の最大長 (通常 80 文字) をそろえる必要があるプロジェクトで使用します。この属性が 0 以外に設定されていると、ログメッセージ入力ダイアログで以下のことが起きます。入力したテキストが長すぎないかどうかを確認できるように、最大長を示すマーカを配置し、表示時のワードラップが無効になります。注: この機能はログメッセージに固定長フォントを選択していないと、正しく動作しません。

  • tsvn:logtemplate はログメッセージを整形するルールを持つプロジェクトで使用します。この属性は複数行の文字列を保持しており、コミットを開始するとコミットメッセージボックスにそれが挿入されます。これにより必要な情報を持つコミットメッセージを編集できます。注: tsvn:logminsize も使用している場合、テンプレートより長い値を必ずセットするか、そうでなければ保護機構を失うかのどちらかとなります。

  • 新しくファイルの追加やインポートした際に、拡張子を元に属性を付加するように、Subversion は autoprops を設定できます。これはクライアントごとに、Subversion 設定ファイルに適切に autoprops が設定されているかどうかに依存します。tsvn:autoprops をフォルダに設定しておくと、インポートやファイル追加の際に、ユーザのローカルに autoprops をマージするようになります。この形式は subversion の autoprops と同じで、.sh 拡張子を持つファイルに 2 つの属性を セットしたい場合は、*.sh = svn:eol-style=native;svn:executable のようになります。

    ローカルの autoprops と tsvn:autoprops が競合する場合は、プロジェクトごとに指定されている、プロジェクト設定を優先します。

  • コミットダイアログでは、変更したファイルをファイルごとに状態 (追加、変更、etc.) 込みで張り付けるオプションがあります。tsvn:logfilelistenglish は状態を英語で挿入するか、各国後で挿入するかを定義できます。この属性がセットされていなければ、デフォルトでは true となります。

  • TortoiseSVN は OpenOffice や Mozilla で使われるスペルチェッカモジュールを使用できます。スペルチェッカをインストールしている場合、この属性でどのスペルチェッカを使用するか決定します。つまり、どの言語でこのプロジェクトのログメッセージを書くかということでもあります。tsvn:projectlanguage では、ログメッセージ入力時にスペルチェックエンジンがどの言語でチェックを行うかを設定します。あなたの言語の値は MSDN: Language Identifiers で確認できます。

    この値を 10 進数や頭に 0xを頭に付けた 16 進数で入力できます。たとえば、英語 (アメリカ) は0x04091033 を入力してください。

  • tsvn:logsummary 属性は、ログメッセージのサマリとしてログダイアログに表示する、ログメッセージの一部を抽出するのに使用します。

    tsvn:logsummary 属性の値は、正規表現グループを含む正規表現文字列を、1 行で表したものでなければなりません。そのグループにマッチするものであれば、なんでもサマリとして扱います。

    例: \[SUMMARY\]:\s+(.*) は、ログメッセージ中の [SUMMARY] 以降をすべてサマリとして扱います。

  • 新しい属性を加える際に、コンボボックスから選択するか、任意の属性名を入力できます。プロジェクトでカスタム属性を使用し、その属性をコンボボックスに表示する (属性名の入力ミスを防ぐ) 場合、tsvn:userfilepropertiestsvn:userdirproperties でカスタム属性を作成できます。この属性はフォルダに適用してください。そのフォルダ以下でファイルを作成すると、定義した属性名ごとにカスタム属性を表示します。

tsvn: 属性のいくつかは true/false 値をとります。TortoiseSVN は yestrue と同義に、nofalse と同義に解釈します。

TortoiseSVN はいくつかのバグ追跡ツールと統合できます。このとき bugtraq: で始まるプロジェクト属性を使用します。詳細情報は 「バグ追跡システム / 課題追跡システムとの統合」 をご覧ください。

TortoiseSVN は、webviewer: で始まるプロジェクト属性を使用して、いくつかの Web ベースリポジトリブラウザとも統合できます。詳細は 「Web ベースリポジトリビューアとの統合」 をご覧ください。

フォルダへのプロジェクト属性の設定

以上の 特殊なプロジェクト属性は、動作するシステムの フォルダ に設定しなければなりません。ファイルやフォルダをコミットする際に、属性はフォルダから読み込まれます。属性が見つからない場合、TortoiseSVN はフォルダツリーを上位階層に向かって検索します。これはバージョン管理外フォルダに到達するか、ツリーのルート (例: C:\) に到達するまで行います。各ユーザが trunk/ からチェックアウトしていて、サブフォルダからチェックアウトしていないことが確認できるのであれば、trunk/ にその属性を設定するだけで十分です。確認できない場合、各サブフォルダに対し再帰的に属性を設定しなければなりません。プロジェクト階層の深い場所の属性設定は、高い階層 (trunk/ に近い場所) の設定を上書きします。

プロジェクト属性 だけ ですが、再帰チェックボックスを使って階層の全サブフォルダに属性をセットできます。このとき全ファイルが対象になるわけではありません。

TortoiseSVN で新しいサブフォルダを作成する際、親フォルダに設定されているプロジェクト属性は、新しいサブフォルダに自動的に追加されます。

注意

TortoiseSVN のプロジェクト属性は非常に便利ですが、TortoiseSVN でしか動作せず、またいくつかは TortoiseSVN の新しいバージョンでしか動作しません。プロジェクトのメンバが様々な Subversion のクライアントを使用している場合や、古い TortoiseSVN しか持てない場合、プロジェクトポリシーを強制するのに、リポジトリフックを使用することになるでしょう。プロジェクト属性は、ポリシー実装の補助にしかならず、強制することはできません。