Subversion プロパティは、Windows のプロパティダイアログから読み書きできますが、 → 、および TortoiseSVN のステータスリスト内から → からも読み書きできます。
独自のプロパティを追加したり、Subversion で特別な意味を持つプロパティを追加したりできます。これらは svn:
で始まります。svn:externals
はそのようなプロパティです。「外部アイテム」というセクションで、externals の扱い方をご覧ください。
Subversion は CVS のようなキーワード展開をサポートしており、ファイル名とリビジョン情報をファイル自体に埋め込むために使用できます。現在サポートされているキーワードは次のとおりです。
最後にコミットされた日時。これは、ワーキングコピーを更新したときに取得した情報に基づいています。リポジトリをチェックして、より新しい変更を見つけることはしません。
最後にコミットされたリビジョン。
最後にコミットした作成者。
リポジトリ内のこのファイルの完全な URL。
前の 4 つのキーワードを圧縮した組み合わせ。
これらのキーワードの使用方法については、Subversion Book の「 svn:keywords セクション 」を参照してください。このセクションでは、これらのキーワードの詳細な説明と、有効にして使用する方法について説明しています。
Subversion のプロパティの詳細については、「 特殊プロパティ 」を参照してください。
新しいプロパティを追加するには、まず 新規... をクリックします。メニューから必要なプロパティ名を選択し、特定のプロパティダイアログに必要な情報を入力します。これらの特定のプロパティダイアログの詳細については、「プロパティエディタ」というセクションで説明しています。
独自のダイアログを持たないプロパティを追加するには、新規... メニューから を選択します。次に、コンボボックスで既存のプロパティを選択するか、カスタムプロパティ名を入力します。
プロパティを多数のアイテムに一度に適用する場合は、エクスプローラーでファイル/フォルダーを選択し、
→ を選択します。プロパティを現在のフォルダー以下の階層のすべてのファイルとフォルダーに適用する場合は、再帰的チェックボックスをオンにします。
既存のプロパティを編集する場合は、既存のプロパティのリストからそのプロパティを選択し、
をクリックします。既存のプロパティを削除する場合は、既存のプロパティのリストからそのプロパティを選択し、
をクリックします。svn:externals
プロパティを使用すると、同じリポジトリまたは完全に異なるリポジトリから他のプロジェクトをプルインできます。詳細については、「外部アイテム」というセクションをお読みください。
プロパティはバージョン管理されているため、以前のリビジョンのプロパティを編集することはできません。ログダイアログまたはリポジトリブラウザの非 HEAD リビジョンからプロパティを見ると、プロパティと値のリストは表示されますが、編集コントロールは表示されません。
多くの場合、bugtraq:logregex
など、同じプロパティセットを何度も適用することがあります。プロパティをあるプロジェクトから別のプロジェクトにコピーするプロセスを簡略化するために、エクスポート/インポート機能を使用できます。
プロパティがすでに設定されているファイルまたはフォルダーから、
→ を使用し、エクスポートするプロパティを選択して、 をクリックします。プロパティ名と値を保存するファイル名の入力を求められます。これらのプロパティを適用するフォルダーから、
→ を使用し、 をクリックします。インポート元のファイル名の入力を求められるので、以前にエクスポートファイルを保存した場所に移動して選択します。プロパティはフォルダーに非再帰的に追加されます。プロパティをツリーに再帰的に追加する場合は、上記の手順に従い、プロパティダイアログで各プロパティを順番に選択し、プロパティを再帰的に適用するボックスをオンにして、 をクリックします。
をクリックして、インポートファイルの形式はバイナリであり、TortoiseSVN 独自です。その唯一の目的は、インポートとエクスポートを使用してプロパティを転送することであるため、これらのファイルを編集する必要はありません。
TortoiseSVN は、ファイルを使用してバイナリプロパティ値を処理できます。バイナリプロパティ値を読み取るには、ファイルを
します。バイナリ値を設定するには、16 進数エディターまたはその他の適切なツールを使用して、必要なコンテンツを含むファイルを作成し、そのファイルから ます。バイナリプロパティはあまり使用されませんが、一部のアプリケーションでは役立つ場合があります。たとえば、巨大なグラフィックファイルを保存している場合や、ファイルのロードに使用するアプリケーションが巨大な場合は、サムネイルをプロパティとして保存して、プレビューをすばやく取得できるようにすることができます。
リポジトリにファイルやフォルダーを追加するときに、プロパティを自動的に設定するように Subversion と TortoiseSVN を構成できます。これを行うには 2 つの方法があります。
Subversion 構成ファイルを編集して、クライアントでこの機能を有効にすることができます。TortoiseSVN の設定ダイアログの 全般 ページには、そこに直接移動するための編集ボタンがあります。構成ファイルは、Subversion の動作の一部を制御する単純なテキストファイルです。2 つのことを変更する必要があります。まず、miscellany
というセクションで、enable-auto-props = yes
の行のコメントを解除します。次に、以下のセクションを編集して、どのファイルタイプにどのプロパティを追加するかを定義する必要があります。この方法は標準の Subversion 機能であり、任意の Subversion クライアントで動作します。ただし、各クライアントで個別に定義する必要があります。リポジトリからこれらの設定を伝播する方法はありません。
別の方法として、次のセクションで説明するように、フォルダーに tsvn:autoprops
プロパティを設定する方法があります。この方法は TortoiseSVN クライアントでのみ機能しますが、更新時にすべてのワーキングコピーに伝播されます。
Subversion 1.8 以降では、ルートフォルダーにプロパティ svn:auto-props
を設定することもできます。プロパティ値は、すべての子アイテムに自動的に継承されます。
どちらの方法を選択した場合でも、auto-props はワーキングコピーに追加された時点のファイルにのみ適用されることに注意してください。Auto-props は、すでにバージョン管理されているファイルのプロパティを変更することはありません。
新しいファイルに正しいプロパティが適用されていることを絶対確実にする場合は、必要なプロパティが設定されていないコミットを拒否するように、リポジトリのプリコミットフックを設定する必要があります。
Subversion プロパティはバージョン管理されています。プロパティを変更または追加した後、変更をコミットする必要があります。
別のユーザーが同じプロパティを変更したために、変更のコミットで競合が発生した場合、Subversion は .prej
ファイルを生成します。競合を解決したら、このファイルを削除します。
TortoiseSVN には独自の特殊なプロパティがいくつかあり、これらは tsvn:
で始まります。
tsvn:logminsize
は、コミットのログメッセージの最小長を設定します。ここで指定した長さよりも短いメッセージを入力すると、コミットは無効になります。この機能は、すべてのコミットに適切な説明的なメッセージを提供するように促すのに非常に役立ちます。このプロパティが設定されていない場合、または値がゼロの場合、空のログメッセージが許可されます。
tsvn:lockmsgminsize
は、ロックメッセージの最小長を設定します。ここで指定した長さよりも短いメッセージを入力すると、ロックは無効になります。この機能は、取得するすべてのロックに適切な説明的なメッセージを提供するように促すのに非常に役立ちます。このプロパティが設定されていない場合、または値がゼロの場合、空のロックメッセージが許可されます。
tsvn:logwidthmarker
は、ログメッセージを改行前の最大幅 (通常は 80 文字) でフォーマットする必要があるプロジェクトで使用されます。このプロパティをゼロ以外の値に設定すると、ログメッセージ入力ダイアログで 2 つのことが行われます。最大幅を示すマーカーが配置され、表示のワードラップが無効になるため、入力したテキストが長すぎるかどうかを確認できます。注: この機能は、ログメッセージに固定幅フォントを選択している場合にのみ正しく機能します。
tsvn:logtemplate
は、ログメッセージのフォーマットに関するルールがあるプロジェクトで使用されます。プロパティには、コミットを開始したときにコミットメッセージボックスに挿入される複数行のテキスト文字列が保持されます。必要な情報を含めるように編集できます。注: tsvn:logminsize
も使用している場合は、長さをテンプレートよりも長く設定してください。そうしないと、保護メカニズムが失われます。
tsvn:logtemplate
の代わりに使用できるアクション固有のテンプレートもあります。アクション固有のテンプレートは、設定されている場合に使用されますが、アクション固有のテンプレートが設定されていない場合は tsvn:logtemplate
が使用されます。
アクション固有のテンプレートは次のとおりです。
tsvn:logtemplatecommit
は、ワーキングコピーからのすべてのコミットに使用されます。
tsvn:logtemplatebranch
は、ブランチ/タグを作成する場合、またはリポジトリブラウザでファイルまたはフォルダーを直接コピーする場合に使用されます。
tsvn:logtemplateimport
は、インポートに使用されます。
tsvn:logtemplatedelete
は、リポジトリブラウザでアイテムを直接削除する場合に使用されます。
tsvn:logtemplatemove
は、リポジトリブラウザでアイテムの名前を変更または移動する場合に使用されます。
tsvn:logtemplatemkdir
は、リポジトリブラウザでディレクトリを作成する場合に使用されます。
tsvn:logtemplatepropset
は、リポジトリブラウザでプロパティを変更する場合に使用されます。
tsvn:logtemplatelock
は、ロックを取得する場合に使用されます。
Subversion では、ファイル拡張子に基づいて、新しく追加またはインポートされたファイルに適用される「“autoprops”」を設定できます。これは、すべてのクライアントが Subversion 構成ファイルで適切な autoprops を設定しているかどうかに依存します。tsvn:autoprops
はフォルダーに設定でき、これらはファイルを追加またはインポートするときにユーザーのローカル autoprops とマージされます。形式は Subversion autoprops と同じです。たとえば、*.sh = svn:eol-style=native;svn:executable
は、.sh
拡張子を持つファイルに 2 つのプロパティを設定します。
ローカル autoprops と tsvn:autoprops
の間に競合がある場合、プロジェクト設定は特定のプロジェクトに固有であるため、プロジェクト設定が優先されます。
Subversion 1.8 以降では、tsvn:autoprops
の代わりにプロパティ svn:auto-props
を使用する必要があります。これは、これとまったく同じ機能を持ちますが、すべての svn クライアントで動作し、TortoiseSVN に固有ではありません。
コミットダイアログには、各ファイルのステータス (追加、変更など) を含む、変更されたファイルのリストを貼り付けるオプションがあります。tsvn:logfilelistenglish
は、ファイルステータスを英語で挿入するか、ローカライズされた言語で挿入するかを定義します。プロパティが設定されていない場合、デフォルトは true
です。
TortoiseSVN はスペルチェッカーを使用できます。Windows 10 では、OS のスペルチェッカーが使用されます。以前のバージョンの Windows では、OpenOffice および Mozilla でも使用されるスペルチェッカーモジュールを使用できます。これらがインストールされている場合、このプロパティは使用するスペルチェッカー、つまりプロジェクトのログメッセージを記述する言語を決定します。tsvn:projectlanguage
は、ログメッセージを入力するときにスペルチェックエンジンが使用する言語モジュールを設定します。言語の値は、次のページにあります。 MSDN: 言語識別子 。
この値は、10 進数で入力することも、0x
をプレフィックスとして付けると 16 進数で入力することもできます。たとえば、英語 (米国) は 0x0409
または 1033
として入力できます。
プロパティ tsvn:logsummary
は、ログメッセージの要約としてログダイアログに表示されるログメッセージの一部を抽出するために使用されます。
tsvn:logsummary
プロパティの値は、1 つの正規表現グループを含む 1 行の正規表現文字列に設定する必要があります。そのグループに一致するものはすべて、要約として使用されます。
例: \[SUMMARY\]:\s+(.*)
ログメッセージの「“[SUMMARY]”」以降のすべてをキャッチし、それを要約として使用します。
プロパティ tsvn:logrevregex
は、ログメッセージ内のリビジョンへの参照に一致する正規表現を定義します。これは、ログダイアログで、そのような参照をクリック可能なリンクに変換するために使用されます。リンクをクリックすると、そのリビジョンにスクロールするか (リビジョンがログダイアログにすでに表示されている場合、またはログキャッシュから利用可能な場合)、そのリビジョンを表示する新しいログダイアログを開きます。
正規表現は、リビジョン番号だけでなく、参照全体に一致する必要があります。リビジョン番号は、一致した参照文字列から自動的に抽出されます。
このプロパティが設定されていない場合、リビジョン参照をリンクするデフォルトの正規表現が使用されます。
クライアント側のフックスクリプトを構成するために使用できるプロパティがいくつかあります。各プロパティは、特定のフックスクリプトタイプ用です。
利用可能なプロパティ/フックスクリプトは次のとおりです。
パラメーターは、設定ダイアログでフックスクリプトを構成する場合と同じです。詳細については、「クライアントサイドフックスクリプト」というセクションを参照してください。
すべてのユーザーが自分のワーキングコピーを同じ名前で同じ場所にチェックアウトしているわけではないため、リポジトリ内の URL を指定して、ワーキングコピーにある実行するスクリプト/ツールを構成できます。%REPOROOT%
をリポジトリルートへの URL の一部として使用します。たとえば、フックスクリプトがワーキングコピーの contrib/hook-scripts/client-side/checkyear.js
にある場合、スクリプトへのパスを %REPOROOT%/trunk/contrib/hook-scripts/client-side/checkyear.js
として指定します。このようにして、リポジトリを別のサーバーに移動した場合でも、フックスクリプトプロパティを調整する必要はありません。
%REPOROOT%
の代わりに、%REPOROOT+%
を指定することもできます。+
は、スクリプトを見つけるために必要な任意の数のフォルダーパスを挿入するために使用されます。これは、ブランチを作成した場合でも、ワーキングコピーの URL が異なっていてもスクリプトが引き続き見つかるようにスクリプトを指定する場合に役立ちます。上記の例を使用して、スクリプトへのパスを %REPOROOT+%/contrib/hook-scripts/client-side/checkyear.js
として指定します。
次のスクリーンショットは、ソースファイルヘッダーの現在の著作権年を確認するスクリプトが TortoiseSVN 用に構成されている方法を示しています。
新しいプロパティを追加する場合は、コンボボックスのリストから 1 つを選択するか、任意のプロパティ名を入力できます。プロジェクトでカスタムプロパティを使用しており、それらのプロパティをコンボボックスのリストに表示したい場合 (プロパティ名を入力するときのタイプミスを避けるため)、tsvn:userfileproperties
と tsvn:userdirproperties
を使用してカスタムプロパティのリストを作成できます。これらのプロパティをフォルダーに適用します。子アイテムのプロパティを編集すると、カスタムプロパティが事前定義されたプロパティ名のリストに表示されます。
カスタムダイアログをプロパティの追加/編集に使用するかどうかを指定することもできます。TortoiseSVN は、プロパティのタイプに応じて、4 つの異なるダイアログを提供します。
プロパティが true と false の 2 つの状態しか持てない場合は、プロパティを bool
タイプとして構成できます。
プロパティを次のように指定します
propertyname=bool;labeltext(YESVALUE;NOVALUE;Checkboxtext)
labeltext
は、プロパティの目的と使用方法を説明できるチェックボックスの上にダイアログに表示されるテキストです。その他のパラメーターは自明のはずです。
プロパティが多くの可能な状態の 1 つを表す場合 (例: yes、no、maybe
)、プロパティを state
として構成できます
プロパティは次のようになります
propertyname=state;labeltext(DEFVAL;VAL1;TEXT1;VAL2;TEXT2;VAL3;TEXT3;...)
パラメーターは bool
プロパティと同じですが、DEFVAL
はプロパティがまだ設定されていない場合、または構成されていない値を持っている場合に使用されるデフォルト値です。
最大 3 つの異なる値の場合、ダイアログには最大 3 つのラジオボタンが表示されます。構成されている値がさらに多い場合は、ユーザーが必要な状態を選択できるコンボボックスを使用します。
1 行のテキストで構成されるプロパティの場合は、singleline
プロパティタイプを使用します
propertyname=singleline;labeltext(regex)
regex
は、ユーザーが入力したテキストを検証 (一致) するために使用される正規表現を指定します。テキストが正規表現に一致しない場合、ユーザーにエラーが表示され、プロパティは設定されません。
複数行のテキストで構成されるプロパティの場合は、multiline
プロパティタイプを使用します
propertyname=multiline;labeltext(regex)
regex
は、ユーザーが入力したテキストを検証 (一致) するために使用される正規表現を指定します。正規表現に改行 (\n) 文字を含めることを忘れないでください!
上記のスクリーンショットは、次の tsvn:userdirproperties
で作成されました
my:boolprop=bool;This is a bool type property. Either check or uncheck it.(true;false;my bool prop) my:stateprop1=state;This is a state property. Select one of the two states.(true;true;true value;false;false value) my:stateprop2=state;This is a state property. Select one of the three states.(maybe;true;answer is correct;false;answer is wrong;maybe;not answered) my:stateprop3=state;Specify the day to set this property.(1;1;Monday;2;Tuesday;3;Wednesday;4;Thursday;5;Friday;6;Saturday;7;Sunday) my:singlelineprop=singleline;enter a small comment(.*) my:multilineprop=multiline;copy and paste a full chapter here(.*)
TortoiseSVN は、いくつかのバグ追跡ツールと統合できます。これは、bugtraq:
で始まるプロジェクトプロパティを使用します。詳細については、「バグ追跡システム/課題追跡システムとの統合」というセクションをお読みください。
また、webviewer:
で始まるプロジェクトプロパティを使用して、いくつかの Web ベースのリポジトリブラウザと統合することもできます。詳細については、「Web ベースのリポジトリビューアとの統合」というセクションをお読みください。
これらの特別なプロジェクトプロパティは、システムが機能するためにフォルダーに設定する必要があります。これらのプロパティを使用する TortoiseSVN コマンドを使用すると、クリックしたフォルダーからプロパティが読み取られます。プロパティがそこに見つからない場合、TortoiseSVN は、バージョン管理されていないフォルダーまたはツリーのルート (例: C:\
) が見つかるまで、フォルダーツリーを上方向に検索します。各ユーザーが trunk/
などからのみチェックアウトし、サブフォルダーからチェックアウトしないことを確信できる場合は、trunk/
にプロパティを設定するだけで十分です。確信できない場合は、各サブフォルダーにプロパティを再帰的に設定する必要があります。同じプロパティを設定しても、プロジェクト階層の深さによって異なる値を使用すると、フォルダー構造のどこをクリックしたかによって結果が異なります。
プロジェクトプロパティのみ、つまり tsvn:
、bugtraq:
および webviewer:
の場合は、再帰的チェックボックスを使用して、すべてのサブフォルダーにプロパティを設定できます。すべてのファイルにも設定する必要はありません。
TortoiseSVN を使用して新しいサブフォルダーをワーキングコピーに追加すると、親フォルダーにあるプロジェクトプロパティは、新しい子フォルダーにも自動的に追加されます。
プロパティをリモートでフェッチするのは遅い操作であるため、上記の機能の一部はワーキングコピーのようにリポジトリブラウザでは機能しません。
リポジトリブラウザを使用してプロパティを追加すると、事前定義されたリストには標準の svn:
プロパティのみが表示されます。その他のプロパティ名は手動で入力する必要があります。
プロパティは、リポジトリブラウザを使用して再帰的に設定または削除することはできません。
プロジェクトプロパティは、リポジトリブラウザを使用して子フォルダーが追加された場合、自動的に伝播されません。
tsvn:autoprops
は、リポジトリブラウザを使用して追加されたファイルにプロパティを設定しません。
TortoiseSVN のプロジェクトプロパティは非常に便利ですが、TortoiseSVN でのみ機能し、一部は新しいバージョンの TortoiseSVN でのみ機能します。プロジェクトで作業している人がさまざまな Subversion クライアントを使用している場合、または TortoiseSVN の古いバージョンを持っている可能性がある場合は、リポジトリフックを使用してプロジェクトポリシーを強制することをお勧めします。プロジェクトプロパティはポリシーの実装に役立つだけで、強制することはできません。
一部のプロパティは、自動化に使用するために、特定の値を使用するか、特定の方法でフォーマットする必要があります。フォーマットを正しく行うために、TortoiseSVN は、可能な値を表示したり、プロパティを個々のコンポーネントに分割したりする、特定のプロパティの編集ダイアログを表示します。
svn:externals
プロパティを使用すると、「外部アイテム」というセクションで説明されているように、同じリポジトリまたは完全に異なるリポジトリから他のプロジェクトをプルインできます。
外部フォルダーとしてチェックアウトされるサブフォルダーの名前と、外部アイテムの Subversion URL を定義する必要があります。外部を HEAD リビジョンでチェックアウトできるため、リポジトリで外部アイテムが変更されると、ワーキングコピーは更新時にそれらの変更を受け取ります。ただし、外部が特定の安定したポイントを参照するようにする場合は、使用する特定のリビジョンを指定できます。この場合、ペグリビジョンとして同じリビジョンを指定することもできます。外部アイテムが将来のある時点で名前が変更された場合、Subversion はワーキングコピーでこのアイテムを更新できなくなります。ペグリビジョンを指定することにより、Subversion に HEAD ではなくペグリビジョンでその名前を持っていたアイテムを探すように指示します。
ボタンは、すべての外部 URL の HEAD リビジョンをフェッチし、その HEAD リビジョンを右端の列に表示します。HEAD リビジョンがわかったら、外部を右クリックするだけで、選択した外部を明示的な HEAD リビジョンに固定するコマンドが表示されます。HEAD リビジョンがまだ不明な場合は、右クリックコマンドは最初に HEAD リビジョンをフェッチします。
これらの 3 つのプロパティは、ログメッセージのフォーマットを制御します。最初の 2 つは、メッセージが最小長を満たすまで、コミットまたはロックダイアログの を無効にします。境界線の位置は、ログメッセージに幅制限のあるプロジェクトのガイドとして、指定された列幅にマーカーを表示します。値をゼロに設定すると、プロパティが削除されます。
コミットダイアログでログメッセージのスペルチェックに使用する言語を選択します。ファイルリストチェックボックスは、ログメッセージペインを右クリックして ファイルリストを貼り付け を選択すると有効になります。デフォルトでは、Subversion ステータスはローカル言語で表示されます。このボックスをオンにすると、ステータスは常に英語で表示されます。これは、英語のみのログメッセージを必要とするプロジェクト用です。
このプロパティは、ワーキングコピーでロックが保持されていない場合に、ファイルが読み取り専用としてチェックアウトされるかどうかを制御するだけです。
このプロパティは、Unix/Linux システムでチェックアウトしたときにファイルに実行可能ステータスを与えるかどうかを制御します。Windows チェックアウトでは効果がありません。
リビジョンがワーキングコピーにマージされるたびに、TortoiseSVN はマージされたすべてのリビジョンからログメッセージを生成します。これらは、コミットダイアログの
ボタンから利用できます。次のプロパティを使用して、生成されたメッセージをカスタマイズできます
このプロパティは、生成されたログメッセージの最初の部分を指定します。次のキーワードを使用できます
マージされたリビジョンのカンマ区切りリスト。例: 3, 5, 6, 7
{revisions}
と同様ですが、各リビジョンの前に r
が付きます。例: r3, r5, r6, r7
マージされたリビジョンのカンマ区切りリスト。可能な場合は範囲にグループ化されます。例: 3, 5-7
マージのソース URL。つまり、リビジョンがマージされた場所。
この文字列のデフォルト値は Merged revision(s) {revrange} from {mergeurl}:
で、末尾に改行が付きます。
このプロパティは、マージされた各リビジョンのテキストをどのように表示するかを指定します。次のキーワードを使用できます
マージされたリビジョンのログメッセージ (入力されたとおり)。
{msg}
と同様ですが、すべての改行はスペースに置き換えられ、ログメッセージ全体が 1 行で表示されます。
マージされたリビジョンの作成者。
マージされたリビジョン自体。
マージされたリビジョンのバグ ID (存在する場合)。
このプロパティは、tsvn:mergelogtemplatetitle
または tsvn:mergelogtemplatereversetitle
で指定されたタイトル文字列の位置を指定します。プロパティが yes
または true
に設定されている場合、タイトル文字列は上部ではなく下部に追加されます。
これは、マージされたリビジョンがログキャッシュにすでに存在する場合にのみ機能します。ログキャッシュを無効にした場合、またはマージする前にログを最初に表示しなかった場合、生成されたメッセージにはマージされたリビジョンに関する情報は含まれません。