第6章 SubWCRev プログラム

目次

SubWCRev コマンドライン
キーワード置換
キーワード例
COM インターフェイス

SubWCRev は、Subversion の作業コピーの状態を読み取り、オプションでテンプレートファイルのキーワード置換を行うのに使用する、Windows コンソールアプリケーションです。ビルドプロセスの一部として、ビルドするものに作業コピーの情報を組み込むのにしばしば使用します。典型的なのは、About ボックスにリビジョン番号を含めるのに使用することでしょう。

SubWCRev コマンドライン

SubWCRevは、デフォルトで作業コピーの外部参照を除いた全ファイルの Subversion の状態を読み込みます。検出した最も大きいコミットリビジョン番号を記録し、そのリビジョンのコミットのタイムスタンプが、それはまた、作業コピーの変更、または更新リビジョンが混在しているかどうかを記録します。リビジョン番号や更新リビジョン範囲、変更状態を標準出力に出力します。

SubWCRev.exeはコマンドラインやスクリプトから呼び出されます。制御にはコマンドラインパラメーターを使用します。

SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]

WorkingCopyPath はチェックする作業コピーのパスです。SubWCRev は作業コピーのみで使用でき、直接リポジトリを扱えません。作業コピーへのパスは、絶対パス、相対パスどちらでもかまいません。

リポジトリリビジョンや URL といったフィールドをテキストファイルに保存するため、SubWCRev がキーワード置換を行うようにしたい場合があります。その場合、テンプレートファイル SrcVersionFile や、テンプレートの置換バージョンを含む出力ファイル DstVersionFile を用意する必要があります。

特定のファイルやパスを無視するために SubWCRev へ無視パターンを設定することができます。無視パターンは .subwcrevignore という名前のファイルから読み込まれます。ファイルは特定のパスでもワーキングコピーのルートに配置しても構いません。もしファイルが見つからない場合は、ファイルを一切無視しません。.subwcrevignore は改行で区切ることで複数のパターンを指定することができます。パターンはリポジトリのルートからの相対パスと .subwcrevignore ファイルからの相対パスにマッチします。例えば、 doc フォルダ内にある全てのファイルを無視する場合、 .subwcrevignore には以下のように記載します。

/trunk/doc
/trunk/doc/*

また、.subwcrevignore ファイルが trunk からチェックしたワーキングコピーのルートに存在する場合、以下のように記載しても同様の動きになります。

doc
doc/*

全ての画像を無視する場合、無視パターンは以下のように設定します。

*.png
*.jpg
*.ico
*.bmp

重要

Subversionと同様に、無視パターンは大文字と小文字を区別します。

ヒント

Windowsのエクスプローラーでピリオドで始まるファイルを作成するには、.subwcrevignore.と入力してください。最後にピリオドがあることに注意してください。

SubWCRev の動作に影響を与えるオプションスイッチが多数あります。複数を使用する場合は、1つにグループ化して指定する必要があります。例えば、 -n -m ではなく、 -nm と指定します。

表6.1 使用できるコマンドラインスイッチ一覧

切り替え説明
-nこのスイッチが与えられた場合、SubWCRev は ERRORLEVEL 7 で終了します。このとき作業コピーにはローカルの変更が含まれています。これは、コミットしていない変更が残っていたまま構築するのを防ぎます。
-Nこのスイッチが指定された場合、作業コピーに無視リストに入っていないバージョン管理外の項目が含まれているときは、 SubWCRev は ERRORLEVEL 11 で終了します。
-mこのスイッチが与えられた場合、SubWCRev は ERRORLEVEL 8 で終了します。このとき作業コピーはリビジョンが混ざった状態です。これは、作業コピーに一部が更新された状態で構築するのを防ぎます。
-dこのスイッチが与えられた場合、先方のファイルがすでに存在すれば SubWCRev は ERRORLEVEL 9 で終了します。
-fこのスイッチが与えられた場合、SubWCRev はフォルダーの最後に変更したリビジョンを含みます。デフォルトでは、リビジョン番号を取得する時のファイルのみ使用します。
-eこのスイッチが与えられた場合、SubWCRev は同じリポジトリからだけでなく、svn:externals が含まれているかディレクトリを検査します。
-Eこのスイッチが指定されると、 -eと同様になりますが、プロパティで指定された特定のリビジョンしか含まれていない場合は、リビジョンが特定された外部参照を無視します。そのため、リビジョンが混同することがありません。
-xこのスイッチが与えられた場合、SubWCRev はリビジョン番号を 16 進数で出力します。
-Xこのスイッチが与えられた場合、SubWCRev はリビジョン番号を「0X」で始まる十六進数で出力します。
-Fこのスイッチが指定されると、SubWCRevはすべての.subwcrevignoreファイルと含まれるすべてのファイルを無視します。
-qこのスイッチが指定された場合、 SubWCRev は標準出力に作業コピーの状態を表示せずにキーワード置換を行います。


エラーがない場合、SubWCRevは0を返します。しかしエラーが発生した場合は、標準エラー出力(コンソール)にエラーメッセージが出力されます。そして、

表6.2 SubWCRevのエラーコードの一覧

エラーコード説明
1文法エラー。1つまたは複数のコマンドライン引数が無効です。
2コマンドラインで指定されたファイルまたはフォルダーが見つかりません。
3入力ファイルが開けないか、ターゲットファイルが作成できません。
4メモリを確保できません。これは、ソースファイルが大きすぎる場合などに発生する可能性があります。
5ソースファイルのプロパティをスキャンできません。
6SVNエラー: SubWCRevが作業コピーから情報を検索しようとする際に、Subversionがエラーで復帰しました。
7作業コピーはローカルで変更されました。この場合は-nスイッチが必要です。
8作業コピーに複数のリビジョンが混在しています。この場合は-mスイッチが必要です。
9出力ファイルが既に存在しています。この場合は-dスイッチが必要です。
10指定されたパスは作業コピーやその一部を指すものではありません。
11作業コピーにバージョン管理外のファイルやフォルダーが含まれています。-Nスイッチが必要です。


のエラーが返却されます。