マニュアル

付録 D. TortoiseSVN の自動化

目次

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

TortoiseSVN のすべてのコマンドはコマンドラインパラメータで制御されるため、バッチスクリプトで自動化したり、他のプログラム (例えば、お気に入りのテキストエディタなど) から特定のコマンドやダイアログを開始したりできます。

重要

TortoiseSVN は GUI クライアントであり、この自動化ガイドは、ユーザー入力を収集するために TortoiseSVN ダイアログをどのように表示させるかを示していることを覚えておいてください。入力を必要としないスクリプトを作成したい場合は、代わりに公式の Subversion コマンドラインクライアントを使用する必要があります。

TortoiseSVN コマンド

TortoiseSVN GUI プログラムは TortoiseProc.exe と呼ばれます。すべてのコマンドは、パラメータ /command:abcd で指定します。ここで abcd は必要なコマンド名です。これらのコマンドのほとんどは、少なくとも 1 つのパス引数を必要とし、これは /path:"some\path" で指定します。次の表では、command は /command:abcd パラメータを指し、path は /path:"some\path" パラメータを指します。

コマンドラインで何も指定されていない場合、プロジェクトモニターを起動する特別なコマンドがあります。 /tray が指定されている場合、プロジェクトモニターは非表示で起動し、システムトレイにアイコンのみを追加します。

一部のコマンドはターゲットパスのリスト (例えば、複数の特定のファイルのコミット) を取ることができるため、/path パラメータは、* 文字で区切られた複数のパスを取ることができます。

改行で区切られたパスのリストを含むファイルを指定することもできます。ファイルは、 BOM なしの UTF-16 形式である必要があります。このようなファイルを渡す場合は、/path の代わりに /pathfile を使用します。コマンド完了後に TortoiseProc にそのファイルを削除させるには、パラメータ /deletepathfile を渡すことができます。/deletepathfile を渡さない場合、自分でファイルを削除するか、ファイルが残ります。

コミット、更新、およびその他の多くのコマンドで使用されるプログレスダイアログは、通常、ユーザーが OK ボタンを押すまで、コマンドが完了した後も開いたままになります。これは、設定ダイアログで対応するオプションをチェックすることで変更できます。ただし、その設定を使用すると、バッチファイルからコマンドを開始した場合でも、TortoiseSVN コンテキストメニューから開始した場合でも、プログレスダイアログが閉じられます。

設定ファイルの別の場所を指定するには、パラメータ /configdir:"path\to\config\directory" を使用します。これにより、レジストリ設定を含むデフォルトパスがオーバーライドされます。

永続的な設定を使用せずに、コマンドの最後にプログレスダイアログを自動的に閉じるには、/closeonend パラメータを渡すことができます。

  • /closeonend:0 ダイアログを自動的に閉じない

  • /closeonend:1 エラーがない場合は自動的に閉じる

  • /closeonend:2 エラーと競合がない場合は自動的に閉じる

  • /closeonend:3 エラー、競合、およびマージがない場合は自動的に閉じる

ローカル操作でエラーまたは競合が発生しなかった場合にプログレスダイアログを閉じるには、/closeforlocal パラメータを渡します。

以下の表に、TortoiseProc.exe コマンドラインを使用してアクセスできるすべてのコマンドをリストします。上記のように、これらは /command:abcd の形式で使用する必要があります。表では、スペースを節約するために /command プレフィックスを省略しています。

表 D.1. 利用可能なコマンドとオプションの一覧

コマンド説明
:aboutバージョン情報ダイアログを表示します。これは、コマンドが指定されていない場合にも表示されます。
:log

ログダイアログを開きます。/path は、ログを表示するファイルまたはフォルダを指定します。追加オプションを設定できます

  • /startrev:xxx,

  • /endrev:xxx,

  • /limit:xxx フェッチされるメッセージの量を制限します

  • /pegrev: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 が指定されている場合、ログダイアログが閉じられると、選択されたリビジョンがそのファイルに書き込まれます。リビジョンは、マージダイアログでリビジョンを指定するために使用される形式と同じ形式で書き込まれます。

svn の日付リビジョンは、次のいずれかの形式にすることができます

  • {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 は、チェックアウトするリビジョンを指定します。

/outfile:"path/to/file" を指定すると、指定されたファイルにはチェックアウト後に 3 行が含まれます。最初の行はチェックアウトパス、2 行目は URL、3 行目はリビジョンです。

:importインポートダイアログを開きます。/path は、インポートするデータを含むディレクトリを指定します。/logmsg スイッチを指定して、事前定義されたログメッセージをインポートダイアログに渡すこともできます。または、コマンドラインでログメッセージを渡したくない場合は、/logmsgfile:path を使用します。ここで path は、ログメッセージを含むファイルを指します。
:update/path 内のワーキングコピーを HEAD に更新します。/rev オプションが指定されている場合、ユーザーに更新するリビジョンを尋ねるダイアログが表示されます。ダイアログを回避するには、リビジョン番号 /rev:1234 を指定します。その他のオプションは、/nonrecursive/ignoreexternals、および /includeexternals です。/stickydepth は、指定された深度をスティッキーにする必要があることを示し、スパースチェックアウトを作成します。/skipprechecks を設定すると、更新前に実行されるすべてのチェックをスキップできます。これが指定されている場合、ログを表示 ボタンが無効になり、更新後に差分を表示するためのコンテキストメニューも無効になります。
:commitコミットダイアログを開きます。/path は、ターゲットディレクトリまたはコミットするファイルのリストを指定します。/logmsg スイッチを指定して、事前定義されたログメッセージをコミットダイアログに渡すこともできます。または、コマンドラインでログメッセージを渡したくない場合は、/logmsgfile:path を使用します。ここで path は、ログメッセージを含むファイルを指します。(バグトラッカーとの統合を適切に設定している場合に) バグ ID ボックスを事前に記入するには、/bugid:"ここにバグ ID" を使用できます。
:add/path 内のファイルをバージョン管理に追加します。
:revertワーキングコピーのローカルな変更を元に戻します。/path は、元に戻すアイテムを示します。
:cleanup中断または中止された操作をクリーンアップし、/path 内のワーキングコピーをロック解除します。実際にクリーンアップを実行するには、/cleanup も渡す必要があります。/noui を使用すると、結果ダイアログ (クリーンアップが完了したことを通知するか、エラーメッセージを表示する) がポップアップ表示されなくなります。/noprogressui もプログレスダイアログを無効にします。/nodlg は、ユーザーがクリーンアップで正確に何を実行するかを選択できるクリーンアップダイアログの表示を無効にします。利用可能なアクションは、ステータスクリーンアップには /cleanup、すべてのロックを解除するには /breaklocks、コミットされていない変更を元に戻すには /revert/delunversioned/delignored/refreshshell/externals/fixtimestamps および /vacuum オプションで指定できます。
: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 で指定されたディレクトリに再帰的にコピーします。新しいファイルは自動的に追加され、ターゲットワーキングコピーで不足しているファイルは削除されます。基本的には、ソースと宛先が完全に同じになるようにします。/noui を指定して確認ダイアログをスキップし、/noprogressui を指定してプログレスダイアログの表示も無効にします。
:mergeマージダイアログを開きます。/path はターゲットディレクトリを指定します。リビジョン範囲をマージするには、次のオプションを使用できます: /fromurl:URL/revrange:string。2 つのリポジトリツリーをマージするには、次のオプションを使用できます: /fromurl:URL/tourl:URL/fromrev:xxx および /torev:xxx
:mergeallすべてマージダイアログを開きます。/path はターゲットディレクトリを指定します。
:copyブランチ/タグダイアログを表示します。/path は、ブランチ/タグを作成するワーキングコピーです。/url はターゲット URL です。URL が ^ で始まる場合、リポジトリルートに対する相対パスであると見なされます。ワーキングコピーを新しいブランチ/タグに切り替える オプションをすでにチェックするには、/switchaftercopy スイッチを渡します。中間フォルダを作成する オプションをチェックするには、/makeparents スイッチを渡します。/logmsg スイッチを指定して、事前定義されたログメッセージをブランチ/タグダイアログに渡すこともできます。または、コマンドラインでログメッセージを渡したくない場合は、/logmsgfile:path を使用します。ここで path は、ログメッセージを含むファイルを指します。
:settings設定ダイアログを開きます。
:remove/path 内のファイルをバージョン管理から削除します。
:rename/path 内のファイルの名前を変更します。ファイルの新​​しい名前はダイアログで尋ねられます。類似したファイルの名前を一度に変更することに関する質問を避けるには、/noquestion を渡します。
:diffTortoiseSVN 設定で指定された外部差分プログラムを起動します。/path は最初のファイルを指定します。/path2 オプションが設定されている場合、差分プログラムはそれら 2 つのファイルで起動されます。/path2 が省略されている場合、差分は /path 内のファイルとその BASE との間で行われます。指定されたファイルにプロパティの変更もある場合、外部差分ツールは変更された各プロパティに対しても起動されます。それを防ぐには、/ignoreprops オプションを渡します。リビジョン番号を明示的に設定するには、/startrev:xxx および /endrev:xxx を使用し、オプションのペグリビジョンには /pegrev:xxx を使用します。/blame が設定され、/path2 が設定されていない場合、差分は、最初に指定されたリビジョンでファイルを blame することによって行われます。パラメータ /line:xxx は、差分が表示されるときにジャンプする行を指定します。
:shelve指定されたパスを新しいシェルフにシェルフします。/shelfname:name オプションはシェルフの名前を指定します。オプションのログメッセージは /logmsg:message で指定できます。/checkpoint オプションが渡されると、ファイルの変更が保持されます。
:unshelve名前 /shelfname:name のシェルフをワーキングコピーパスに適用します。デフォルトでは、シェルフの最新バージョンが適用されますが、/version:X でバージョンを指定できます。
:showcompare

比較する URL とリビジョンに応じて、統合差分 (unified オプションが設定されている場合)、変更されたファイルのリストを含むダイアログ、または URL がファイルを指している場合はそれらの 2 つのファイルの差分ビューアを起動します。

オプション url1url2revision1、および revision2 を指定する必要があります。オプション pegrevignoreancestryblame、および unified はオプションです。

指定された URL にプロパティの変更もある場合、外部差分ツールは変更された各プロパティに対しても起動されます。それを防ぐには、/ignoreprops オプションを渡します。

統合差分が要求された場合、オプションの prettyprint オプションを指定できます。これにより、merge-info プロパティがよりユーザーフレンドリーな形式で表示されます。

:conflicteditor/path 内の競合ファイルに対して、TortoiseSVN 設定で指定された競合エディタを正しいファイルで起動します。
:relocate再配置ダイアログを開きます。/path は、再配置するワーキングコピーパスを指定します。
:helpヘルプファイルを開きます。
:repostatus変更の確認ダイアログを開きます。/path は、ワーキングコピーディレクトリを指定します。/remote が指定されている場合、ユーザーが リポジトリを確認 ボタンをクリックした場合と同様に、ダイアログは起動時にリポジトリにすぐに接続します。
:repobrowser

リポジトリブラウザダイアログを起動し、/path で指定されたワーキングコピーの URL または /path が URL を直接指している URL を指します。

/pegrev:xxx は、特定のリビジョンでのパスを検索するために使用できます。

追加オプション /rev:xxx を使用して、リポジトリブラウザに表示するリビジョンを指定できます。/rev:xxx が省略されている場合、デフォルトは HEAD です。

/path が URL を指している場合、/projectpropertiespath:path/to/wc は、プロジェクトプロパティを読み取って使用するパスを指定します。

/outfile:path\to\file が指定されている場合、リポジトリブラウザが閉じられると、選択された URL とリビジョンがそのファイルに書き込まれます。そのテキストファイルの最初の行には URL、2 行目にはテキスト形式のリビジョンが含まれています。

:ignore/path 内のすべてのターゲットを無視リストに追加します。つまり、それらのファイルに svn:ignore プロパティを追加します。
:blame

/path で指定されたファイルの blame ダイアログを開きます。

オプション /startrev および /endrev が設定されている場合、blame 範囲を尋ねるダイアログは表示されませんが、これらのオプションのリビジョン値が代わりに使用されます。

/pegrev:xxx は、特定のリビジョンでのパスを検索するために使用できます。

/line:nnn オプションが設定されている場合、TortoiseBlame は指定された行番号を表示して開きます。

オプション /ignoreeol/ignorespaces、および /ignoreallspaces もサポートされています。

:cat/path で指定された URL またはワーキングコピーパスから /savepath:path で指定された場所にファイルを保存します。リビジョンは /revision:xxx で指定します。これは、特定のリビジョンのファイルを取得するために使用できます。
:createpatch/path で指定されたパスのパッチファイルを作成します。ファイル保存ダイアログをスキップするには、/savepath:path を渡して、パッチファイルを直接保存するパスを指定できます。統合差分ビューアがパッチファイルを表示して起動するのを防ぐには、/noview を渡します。統合差分が要求された場合、オプションの prettyprint オプションを指定できます。これにより、merge-info プロパティがよりユーザーフレンドリーな形式で表示されます。
:revisiongraph

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

/pegrev:xxx は、特定のリビジョンでのパスを検索するために使用できます。

特定パスのリビジョングラフのイメージファイルを作成するには、グラフウィンドウを表示せずに、出力ファイルへのパスを含む /output:path を渡します。出力ファイルには、リビジョングラフが実際にエクスポートできる拡張子が必要です。これらは、.svg.wmf.png.jpg.bmp、および .gif です。

リビジョングラフには表示方法に影響を与える多くのオプションがあるため、出力イメージファイルを作成するときに使用するオプションを設定することもできます。これらのオプションを /options:XXXX で渡します。ここで XXXX は 10 進数値です。必要なオプションを見つけるための最良の方法は、通常の方法でリビジョングラフを起動し、すべてのユーザーインターフェイスオプションを設定して、グラフを閉じることです。次に、コマンドラインで渡す必要のあるオプションを、レジストリ HKCU\Software\TortoiseSVN\RevisionGraphOptions から読み取ることができます。

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

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

バージョン管理されたプロパティを扱う場合、このコマンドにはワーキングコピーが必要です。

/path が URL であり、/rev:XXX が指定されている場合、リビジョンプロパティを表示/変更できます。

特定のプロパティのプロパティダイアログを直接開くには、プロパティ名を /property:name として渡します。

:sync

設定をエクスポート/インポートします。現在の設定とエクスポートされた設定のどちらが新しいかに応じて、または指定されたとおりに。

パスが /path で渡される場合、パスは設定の保存または読み込みに使用されます。

パラメータ /askforpath は、ユーザーがエクスポート/インポートパスを選択するためのファイルを開く/保存ダイアログを表示します。

/load/save のどちらも指定されていない場合、TortoiseSVN は、どちらが新しいかを確認することで、設定をエクスポートするかインポートするかを決定します。エクスポートファイルが現在の設定よりも新しい場合、設定はファイルからロードされます。現在の設定が新しい場合、設定は設定ファイルにエクスポートされます。

/load が指定されている場合、設定は設定ファイルからインポートされます。

/save が指定されている場合、現在の設定は設定ファイルにエクスポートされます。

パラメータ /local は、ローカル設定、つまりローカルパスを参照する設定をインポートに含めるように強制します。


例 (1 行で入力する必要があります)

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /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

TortoiseSVN ホームページ