付録D TortoiseSVN の自動化

目次

TortoiseSVNのコマンド
Tsvncmd URL ハンドラ
TortoiseIDiff コマンド
TortoiseUDiffコマンド

すべての TortoiseSVN のコマンドがコマンドライン引数で制御できます。バッチファイルで自動化したり、テキストエディターなどの他のプログラムから、特定のコマンドやダイアログを起動したりすることができます。

重要

TortoiseSVN はあくまで GUI クライアントです。ここでは TortoiseSVN のダイアログを表示させて、ユーザーに入力を促す方法を説明します。入力を伴わずに操作をするスクリプトを書くのであれば、公式の Subversion コマンドラインクライアントを使用してください。

TortoiseSVNのコマンド

TortoiseSVN の GUI プログラムは TortoiseProc.exe から呼び出します。実行するコマンドは /command:<コマンド名> 引数で指定し、 <コマンド名> の部分にはコマンド名を指定します。ほとんどのコマンドでは /path:"<パス名>" 引数でパスを指定する必要があります。下記の表で、 /command:<コマンド名> で指定するコマンドと、 /path:"<パス名>" で指定するパスの意味を説明します。

There's a special command that does not require the parameter /command:abcd but, if nothing is specified on the command line, starts the project monitor instead. If /tray is specified, the project monitor starts hidden and only adds its icon to the system tray.

コマンドによっては、複数の対象のパスを受け付けます(例えば、コミット時に複数のファイルを指定する場合など)。 /path 引数には * で区切って複数のパスを指定することができます。

改行で区切った複数のパスを記述したファイルで指定することもできます。ファイルはUTF-16形式で、BOM を入れないでください。ファイルを渡したい場合は、/pathではなく/pathfileを使用してください。コマンド実行後にTortoiseProcがファイルを自動削除するようにしたい場合は、/deletepathfileを使用してください。/deletepathfileを指定しない場合、手作業でファイルを削除しなければファイルは残ります。

多くのコマンド(コミットや更新など)で表示される進行ダイアログは、通常はコマンドが終了した後も OK ボタンを押すまで開いたままになります。設定ダイアログで進行ダイアログを自動的に閉じるように設定することができます。ただしこの場合、コマンドをバッチファイルから起動しても、 TortoiseSVN コンテキストメニューから起動しても、進行ダイアログが閉じるようになります。

/configdir:"<設定ファイルのディレクトリのパス>" を指定すると、異なる場所にある設定ファイルを指定することができます。この引数は、レジストリで設定されているデフォルトパスを上書きします。

/closeonend 引数を指定すると、設定を変更することなくコマンド終了時に進行ダイアログを自動で閉じることができます。

  • /closeonend:0 ダイアログを自動的に閉じません。

  • /closeonend:1 エラーがなければ自動的に閉じます。

  • /closeonend:2 エラーや競合がなければ自動的に閉じます。

  • /closeonend:3 エラー、競合、マージがなければ自動的に閉じます。

エラーや競合がない場合にローカル操作の進行ダイアログを自動的に閉じるには、 /closeforlocal 引数を指定してください。

以下の表には、 TortoiseProc.exe のコマンドラインで使用してアクセスすることができる、すべてのコマンドを一覧しています。上で述べたように、 /command:<コマンド名> の形で使用してください。この表では紙面を節約するため、頭に付ける /command は省略しています。

表D.1 使用できるコマンドとオプションの一覧

コマンド説明
:about「バージョン情報」ダイアログを表示します。コマンドが省略された場合もバージョン情報ダイアログを表示します。
:log

ログダイアログを開きます。/pathでログを表示するファイルやフォルダーを指定します。その他のオプションは次の通りです。

  • /startrev:xxx,

  • /endrev:xxx,

  • /strictで「コピーが発生したら停止」チェックボックスが有効になり、

  • /mergeで「マージされたリビジョンを含める」が有効になり、

  • /datemin:"{datestring}"でフィルターの開始日を設定し、

  • /datemax:"{datestring}"でフィルターの終了日を設定します。日付の書式はSVNの日付リビジョンで使われているものと同じです。

  • /findstring:"filterstring"でフィルター文字列を指定し、

  • /findtextで正規表現ではなくテキストのフィルターを使用するようになり、

  • /findregexでテキストのフィルターではなく正規表現を使用するようになり、

  • /findtype:XではXとして0~511の数値を指定します。数値は次のオプションの合計値です。

    • /findtype:0 すべての項目で絞り込み

    • /findtype:1 ログメッセージ本文で絞り込み

    • /findtype:2 パス名で絞り込み

    • /findtype:4 作者名で絞り込み

    • /findtype:8 リビジョン番号で絞り込み

    • /findtype:16 未使用

    • /findtype:32 バグ ID で絞り込み

    • /findtype:64 未使用

    • /findtype:128 日付で絞り込み

    • /findtype:256 日付の範囲で絞り込み

  • /outfile:path\to\file が指定された場合、ログダイアログが閉じられたときに、選択されたリビジョンがファイルに書き出されます。リビジョンはマージダイアログと同じ書式で書き出されます。

An svn date revision can be in one of the following formats:

  • {2006-02-17}

  • {15:30}

  • {15:30:00.200000}

  • {"2006-02-17 15:30"}

  • {"2006-02-17 15:30 +0230"}

  • {2006-02-17T15:30}

  • {2006-02-17T15:30Z}

  • {2006-02-17T15:30-04:00}

  • {20060217T1530}

  • {20060217T1530Z}

  • {20060217T1530-0500}

:checkout「チェックアウト」ダイアログを開きます。 /path でチェックアウト先のディレクトリを指定します。 /url でチェックアウト元の URL を指定します。 /blockpathadjustments を指定すると、チェックアウトパスの自動調整を抑制します。 /revision:XXX でチェックアウトするリビジョンを指定します。
:import「インポート」ダイアログを開きます。 /path でインポートするデータのディレクトリを指定します。 /logmsg 引数で、ログメッセージの初期値を指定できます。また、 /logmsgfile:<パス> でファイルからログメッセージの初期値を指定することもできます。この場合、 <パス> でログメッセージの入ったファイルの場所を指定します。
:update/path で指定した作業コピーを HEAD リビジョンに更新します。 /rev を指定すると、どのリビジョンに更新するかをユーザーに確認するダイアログを表示します。ダイアログを表示しないようにするには、 /rev:1234 のようにリビジョン番号を指定してください。その他のオプションとして /nonrecursive/ignoreexternals/includeexternals があります。 /stickydepth を指定すると、部分的なチェックアウトを行う際に、深さが固定されます。 /skipprechecks を指定すると、更新前に行われるすべての検査を行いません。これを指定すると ログを表示 ボタンが無効になり、更新後に差分のコンテキストメニューも無効になります。
:commitコミットダイアログを開きます。 /path でコミットするディレクトリやファイルのリストを指定します。 /logmsg でログメッセージを初期値を指定できます。また、 /logmsgfile:<パス> でログメッセージの初期値をファイルで指定することもできます。この場合、 <パス> でログメッセージの入ったファイルの場所を指定します。バグ追跡システムとの統合が正しく設定されている場合、 /bugid:"<バグ ID>" でバグ ID ボックスの値を設定することができます。
:add/path で指定されたファイルをバージョン管理に追加します。
:revert作業コピーで行った変更を取り消します。 /path で取り消す項目を指定します。
:cleanup/path で指定された作業コピーの、中断されたり失敗したりした操作をクリーンアップし、作業コピーのロックを解除します。 /noui を指定すると、(クリーンアップの終了を通知したりエラーを表示したりする)ポップアップダイアログを抑制します。 /noprogressui を指定すると、進行状況ダイアログの表示も抑制します。 /nodlg を指定すると、ユーザーがクリーンアップ処理の内容を選択するためのダイアログを表示しません。クリーンアップ時の動作は、 /cleanup/revert/delunversioned/delignored/refreshshell/externals で指定することができます。
:resolve/path で指定した競合ファイルを解決済みにします。 /noquestion を指定すると、本当に行ってもよいか確認せずに解決済みにします。
:repocreate/path にリポジトリを作成します。
:switch切り替えダイアログを開きます。/pathで切り替えるディレクトリ、/urlで切り替え先のURLを指定します。
:export/path で指定された作業コピーを別のディレクトリにエクスポートします。 /path でバージョン管理外ディレクトリを指定すると、ダイアログが表示されて /path で指定されたディレクトリにエクスポートする URL を尋ねてきます。 /blockpathadjustments を指定すると、パスの自動調整を抑制します。
:dropexport作業コピーを /path から /droptarget で指定されたディレクトリにエクスポートします。このコマンドでは、エクスポートダイアログを表示せずに直接実行します。 /overwrite を指定すると、既存のファイルを確認なしで上書きします。 /autorename を指定すると、ファイルが既に存在するとき、上書きせずにエクスポートされたファイルの名前を自動的に変更します。/extendedオプションは、localchangesと共に指定すると、ローカルで変更されたファイルのみをエクスポートし、unversionedと共に指定すると、それに加えてバージョン管理されていない項目もすべてエクスポートします。
:dropvendor/path で指定されたフォルダーを、 /droptarget で指定されたディレクトリに再帰的にコピーします。ターゲットの作業コピーに対して、新しいファイルは自動的に追加され、見つからないファイルは削除され、基本的にコピー元とコピー先は全く同じになります。
:mergeマージダイアログを開きます。/path にはターゲットディレクトリを指定します。マージするリビジョン範囲は、 /fromurl:URL, /revrange:string のオプションを使用できます。2つのリポジトリツリーをマージするには、 /fromurl:URL, /tourl:URL, /fromrev:xxx, /torev:xxx のオプションを使用できます。
:mergeall「すべてマージ」ダイアログを開きます。 /path で対象ディレクトリを指定します。
:copyブランチ/タグダイアログを開きます。/pathでブランチ/タグの作成元の作業コピーを指定します。また、/urlは作成先のURLです。 URLが^で始まる場合は、リポジトリのルートからの相対URLとみなされます。新しいブランチ/タグへ作業コピーを切り替えオプションを既定でチェックしておきたい場合は、/switchaftercopyを指定してください。中間フォルダーを作成オプションをチェックするには、/makeparentsスイッチを指定してください。/logmsgでログメッセージの初期値を指定できます。また、コマンドラインでログメッセージを渡したくない場合は、/logmsgfile:<パス>を使用します。<パス>でログメッセージが入ったファイルの場所を指定します。
:settings設定ダイアログを開きます。
:remove/path で指定されたファイルをバージョン管理下から削除します。
:rename/path で指定されたファイルの名前を変更します。このファイルの新しい名前を入力するダイアログが表示されます。一度に同様のファイルの名前の変更を行う際、確認を行わないようにするには、 /noquestion を指定してください。
:diffTortoiseSVNの設定で指定された外部差分ビューアーを起動します。/pathには1番目のファイルを指定します。/path2オプションを指定すると、その2つのファイルに対して差分ビューアーが起動します。/path2を省略すると、/pathで指定されたファイルとその作業ベースの間の差分となります。指定されたファイルにプロパティの変更がある場合は、変更された各プロパティについても外部差分ビューアーが起動されます。これを防ぐには、/ignorepropsを指定してください。リビジョン番号を指定するには、/startrev:xxx/endrev:xxxを指定してください。ペグリビジョンを指定する場合は、/pegrevision:xxxを指定してください。/blameを指定して/path2を指定しない場合、指定されたリビジョンのファイルの注釈履歴が表示されます。 /line:xxxを指定すると、差分を表示するときにその行番号にジャンプします。
:showcompare

unified オプションが指定された場合は、Unified差分ファイルに含まれる変更されたファイルの一覧をダイアログで表示します。URLがファイルを指していた場合は、その2ファイルに対して差分ビューアーを起動します。

url1url2revision1revision2 の各オプションを指定する必要があります。pegrevisionignoreancestryblameunified オプションを指定することもできます。

指定されたURLのプロパティの変更があった場合、変更された各プロパティについても外部差分ビューアーが起動します。これを避けるには、/ignorepropsオプションを指定してください。

:conflicteditor/path の競合ファイルを編集するために、 TortoiseSVN の設定ダイアログで指定した競合エディターを起動します。
:relocate再配置ダイアログを表示します。 /path には、再配置する作業コピーのパスを指定します。
:helpヘルプファイルを開きます。
:repostatus「変更をチェック」ダイアログを開きます。 /path には作業コピーのディレクトリを指定します。 /remote を指定すると、ユーザーが リポジトリをチェック ボタンを押したときのように、直ちにリポジトリにアクセスを開始します。
:repobrowser

/path で指定された作業コピーの URL の場所、または /path で直接指定された URL の場所から、リポジトリブラウザーを起動します。

/rev:xxx で、リポジトリブラウザーが表示するリビジョンを指定できます。 /rev:xxx が省略されると、デフォルトは HEAD になります。

/path で URL を指定した場合、 /projectpropertiespath:<作業コピーのパス> でプロジェクトのプロパティを読み出したり使用したりする場所のパスを指定できます。

/outfile:<出力ファイルのパス> を指定すると、リポジトリブラウザーを閉じたときに、選択された URL とリビジョンがファイルに書き出されます。テキストファイルの1行目には URL が入り、2行目にはリビジョン番号がテキストで記述されます。

:ignore/path で指定されたすべての対象を無視リストに追加します。つまり svn:ignore プロパティにそのファイルを追加します。
:blame

/path で指定したファイルの注釈履歴ダイアログを開きます。

/startrev/endrev を指定すると、注釈範囲を指定するダイアログが表示されず、指定したリビジョンの値を使用します。

/line:nnn を指定すると、 TortoiseBlame を開く際に指定した行番号にジャンプします。

/ignoreeol/ignorespaces/ignoreallspaces の各オプションもサポートしています。

:cat/path で指定した URL や作業コピーのパスのファイルを、 /savepath:path で指定した場所に保存します。 /revision:xxx でリビジョンを指定できます。指定したリビジョンのファイルを取得するのに使用できます。
:createpatch/path で指定されたパスのパッチファイルを作成します。「名前を付けて保存」ダイアログをスキップする場合は、 /savepath:path でパッチファイルを保存するディレクトリのパスを指定してください。パッチファイルを統合差分ビューアーで表示する場合は、 /noview を指定してください。
:revisiongraph

/path で指定したパスのリビジョングラフを表示します。

グラフウィンドウを表示せずに、特定のパスのリビジョングラフのイメージファイルを作成する場合には、 /output:path で出力ファイルのパスを指定してください。出力ファイルには、リビジョングラフを出力できるファイル形式の拡張子を付与する必要があります。出力できるのは .svg.wmf.png.jpg.bmp.gif のいずれかです。

リビジョングラフは、表示方法を設定するための多くのオプションがあり、出力イメージファイルを作成するときにこれらのオプションを設定できます。オプションは /option:XXXX を指定します。 XXXX は十進数の数値です。オプションの値を知るには、リビジョングラフを通常の方法で起動して、ユーザーインターフェイスからオプションを指定し、グラフを終了させます。その際、コマンドラインで指定する値は、レジストリの次の項目に書き込まれています。 HKCU\Software\TortoiseSVN\RevisionGraphOptions

:lock/path で指定したファイルや、指定したディレクトリにあるすべてのファイルをロックします。ロック時のコメントを入力するよう「ファイルをロック」ダイアログを表示します。
:unlock/path で指定したファイルや、指定したディレクトリにあるすべてのファイルのロックを解除します。
:rebuildiconcacheWindows のアイコンキャッシュを再生成します。Windows のアイコンが破損したときのみ使用してください。(避けられない)副作用として、デスクトップのアイコンが再配置されてしまうことがあります。メッセージボックスの表示を抑制するには、 /noquestion を指定してください。
:properties

/path で指定されたパスのプロパティダイアログを表示します。

このコマンドでバージョン管理されたプロパティを扱う場合は、作業コピーを指定する必要があります。

/rev:XXX が指定されていて、 /path がURLであれば、ダイアログでリビジョンプロパティを表示・編集できます。

特定のプロパティのプロパティダイアログを直接開く場合は、プロパティ名を /property:name の指定してください。

:sync

Exports/imports settings, either depending on whether the current settings or the exported settings are newer, or as specified.

If a path is passed with /path, then the path is used to store or read the settings from.

The parameter /askforpath will show a file open/save dialog for the user to chose the export/import path.

If neither /load nor /save is specified, then TortoiseSVN determines whether to export or import the settings by looking at which ones are more recent. If the export file is more recent than the current settings, then the settings are loaded from the file. If the current settings are more recent, then the settings are exported to the settings file.

If /load is specified, the settings are imported from the settings file.

If /save is specified, the current settings are exported to the settings file.

The parameter /local forces a settings export to include local settings, i.e. settings that refer to local paths.


コマンドの例(1行で入力してください)

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"ログメッセージのテスト" /closeonend:0

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend:0