SubWCRevは、Subversionのワーキングコピーの状態を読み取り、オプションでテンプレートファイル内のキーワード置換を実行するために使用できるWindowsコンソールプログラムです。これは、ビルドプロセスの一部として、ワーキングコピー情報をビルド対象のオブジェクトに組み込む手段としてよく使用されます。一般的には、リビジョン番号を「About」ボックスに含めるために使用されることがあります。
SubWCRevは、デフォルトで外部参照を除き、ワーキングコピー内のすべてのファイルのSubversionステータスを読み取ります。見つかった最新コミットリビジョン番号と、そのリビジョンのコミットタイムスタンプを記録し、ワーキングコピーにローカルな変更があるか、または混合した更新リビジョンがあるかも記録します。リビジョン番号、更新リビジョン範囲、および変更ステータスは標準出力 (stdout) に表示されます。
SubWCRev.exe は、コマンドラインまたはスクリプトから呼び出され、コマンドラインパラメータを使用して制御されます。
SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile] [-nmdfe]
WorkingCopyPath
は、チェック対象のワーキングコピーへのパスです。SubWCRev はワーキングコピーでのみ使用でき、リポジトリで直接使用することはできません。パスは絶対パスまたは現在のワーキングディレクトリからの相対パスを使用できます。
リポジトリリビジョンやURLなどのフィールドをテキストファイルに保存するために、SubWCRevにキーワード置換を実行させたい場合は、テンプレートファイル SrcVersionFile
と、置換されたテンプレートのバージョンを含む出力ファイル DstVersionFile
を指定する必要があります。
SubWCRev が特定のファイルやパスを考慮しないようにするために、無視パターンを指定できます。パターンは .subwcrevignore
という名前のファイルから読み取られます。ファイルは指定されたパスとワーキングコピーのルートからも読み取られます。ファイルが存在しない場合、ファイルやパスは無視されません。.subwcrevignore
ファイルには、改行で区切られた複数のパターンを含めることができます。パターンは、リポジトリルートからの相対パスと、.subwcrevignore
ファイルのパスからの相対パスに対して照合されます。たとえば、TortoiseSVN ワーキングコピーの doc
フォルダ内のすべてのファイルを無視するには、.subwcrevignore
に次の行を含めます。
/trunk/doc /trunk/doc/*
または、.subwcrevignore
ファイルが trunk からチェックアウトされたワーキングコピーのルートにあると仮定して、次のパターンを使用すると
doc doc/*
上の例と同じです。
すべての画像を無視するには、無視パターンを次のように設定できます。
*.png *.jpg *.ico *.bmp
無視パターンは大文字と小文字を区別します。Subversion と同様です。
Windows エクスプローラーで先頭がドットのファイルを作成するには、.subwcrevignore.
と入力します。末尾のドットに注意してください。
SubWCRev の動作に影響を与えるいくつかのオプションスイッチがあります。複数使用する場合は、-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進数 (HEX) で出力します。 |
-X | このスイッチが指定された場合、SubWCRev はリビジョン番号を '0X' を先頭に付加した16進数 (HEX) で出力します。 |
-F | このスイッチが指定された場合、SubWCRev は .subwcrevignore ファイルを無視し、すべてのファイルを含めます。 |
-q | このスイッチが指定された場合、SubWCRev はワーキングコピーのステータスを標準出力 (stdout) に表示せずにキーワード置換を実行します。 |
エラーがない場合、SubWCRev はゼロを返します。ただし、エラーが発生した場合、エラーメッセージは標準エラー出力 (stderr) に書き込まれ、コンソールに表示されます。そして、返されるエラーコードは次のとおりです。
表6.2. SubWCRev エラーコードの一覧
エラーコード | 説明 |
---|---|
1 | 構文エラー。1つ以上のコマンドラインパラメータが無効です。 |
2 | コマンドラインで指定されたファイルまたはフォルダが見つかりませんでした。 |
3 | 入力ファイルを開くことができなかったか、ターゲットファイルを作成できませんでした。 |
4 | メモリを割り当てることができませんでした。これは、たとえば、ソースファイルが大きすぎる場合に発生する可能性があります。 |
5 | ソースファイルを適切にスキャンできません。 |
6 | SVNエラー: SubWCRev がワーキングコピーから情報を取得しようとしたときに、Subversion がエラーを返しました。 |
7 | ワーキングコピーにローカルな変更があります。これには -n スイッチが必要です。 |
8 | ワーキングコピーに混合リビジョンがあります。これには -m スイッチが必要です。 |
9 | 出力ファイルはすでに存在します。これには -d スイッチが必要です。 |
10 | 指定されたパスはワーキングコピーではないか、ワーキングコピーの一部ではありません。 |
11 | ワーキングコピーにバージョン管理されていないファイルまたはフォルダが含まれています。これには -N スイッチが必要です。 |