付録D TortoiseSVN の自動化

目次

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

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

重要

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

TortoiseSVNのコマンド

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

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

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

多くのコマンド(コミットや更新など)で表示される進行ダイアログは、通常はコマンドが終了した後も 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 が指定されると「マージされたリビジョンを含める」を有効にします。 /findstring:"<絞り込み文字列>" は絞り込み文字列を入力します。 /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:<出力ファイルのパス> を指定すると、ログダイアログを閉じたときに選択されたリビジョンの一覧がファイルに書きだされます。これは、マージダイアログでリビジョンを指定する場合と同じ書式で記述されます。
:checkout「チェックアウト」ダイアログを開きます。 /path でチェックアウト先のディレクトリを指定します。 /url でチェックアウト元の URL を指定します。 /blockpathadjustments を指定すると、チェックアウトパスの自動調整を抑制します。 /revision:XXX でチェックアウトするリビジョンを指定します。
:import「インポート」ダイアログを開きます。 /path でインポートするデータのディレクトリを指定します。 /logmsg 引数で、ログメッセージの初期値を指定できます。また、 /logmsgfile:<パス> でファイルからログメッセージの初期値を指定することもできます。この場合、 <パス> でログメッセージの入ったファイルの場所を指定します。
:update/path で指定した作業コピーを HEAD リビジョンに更新します。 /rev を指定すると、どのリビジョンに更新するかをユーザーに確認するダイアログを表示します。ダイアログを表示しないようにするには、 /rev:1234 のようにリビジョン番号を指定してください。その他のオプションとして /nonrecursive/ignoreexternals/includeexternals があります。 /stickydepth を指定すると、部分的なチェックアウトを行う際に、深さが固定されます。
: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 に対象ディレクトリを指定します。
:export/path で指定された作業コピーを別のディレクトリにエクスポートします。 /path でバージョン管理外ディレクトリを指定すると、ダイアログが表示されて /path で指定されたディレクトリにエクスポートする URL を尋ねてきます。 /blockpathadjustments を指定すると、パスの自動調整を抑制します。
:dropexport作業コピーを /path から /droptarget で指定されたディレクトリにエクスポートします。このコマンドでは、エクスポートダイアログを表示せずに直接実行します。 /overwrite を指定すると、既存のファイルを確認なしで上書きします。 /autorename を指定すると、ファイルが既に存在するとき、上書きせずにエクスポートされたファイルの名前を自動的に変更します。
:mergeマージダイアログを開きます。 /path にはターゲットディレクトリを指定します。リビジョンの範囲をマージする場合は、 /fromurl:URL/revrange:string を指定します。 異なる2つのツリーをマージする場合は、 /fromurl:URL/tourl:URL/fromrev:xxx/torev:xxx を指定します。ブランチを再統合する場合は、 /fromurl:URL/reintegrate を指定します。以上の値が初期値として設定された状態で、マージダイアログが表示されます。
:mergeall「すべてマージ」ダイアログを開きます。 /path で対象ディレクトリを指定します。
:copy「ブランチ/タグ」ダイアログを開きます。 /path でブランチ/タグの作成元の作業コピーを指定します。また、 /url はターゲットの URL です。 /logmsg でログメッセージを初期値を指定できます。また、 /logmsgfile:<パス> でログメッセージの初期値をファイルで指定することもできます。この場合、 <パス> でログメッセージの入ったファイルの場所を指定します。
:settings設定ダイアログを開きます。
:remove/path で指定されたファイルをバージョン管理下から削除します。
:rename/path で指定されたファイルの名前を変更します。このファイルの新しい名前を入力するダイアログが表示されます。一度に同様のファイルの名前の変更を行う際、確認を行わないようにするには、 /noquestion を指定してください。
:diffTortoiseSVN の設定で指定した外部差分ビューアーを起動します。 /path で第1のファイルを指定します。 /path2 オプションを指定すると、その2ファイルに対して差分ビューアーが起動します。 /path2 を省略すると、 /path とその作業ベースに対する差分を行います。リビジョン番号を明示するには、 /startrev:xxx/endrev:xxx を使用してください。ペグリビジョンを指定する場合は、 /pegrevision:xxx を指定してください。 /blame を指定して /path2 を設定しない場合、指定されたリビジョンのファイルの注釈履歴を表示します。 /line:xxx を指定すると、差分を表示するときにその行番号にジャンプします。
:showcompare

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

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

: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 で指定したパスのパッチファイルを作成します。
: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 で指定したパスのプロパティダイアログを表示します。


コマンドの例(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