TortoiseSVNをコマンドラインから実行する方法

現在参画しているプロジェクトでのソース管理は Subversion を使用しています。しかしひとつの生成物 (WAR) に対してリポジトリが3つ必要となり、同期作業などが非常に煩雑になってしまっています。当初は3つのリポジトリを何とか集約できないものかと試行錯誤してみたものの、使用している Web フレームワークと開発環境などの影響でどうしてもまとめることができませんでした。

調べた結果 TortoiseSVNコマンドラインから起動して半自動的に動かすことができることがわかりました。

今回のプロジェクトの構成

単純なアプリケーションであれば、いつも Subclipse を使って Eclipse プロジェクトごと同期を取るのですが、今回の構成の場合にはそのプロジェクト内に3つのソース管理リポジトリがあるわけなので、Subclipse は使わずに TortoiseSVN で個別管理しています。
(Eclipse プロジェクト内にあるリソースは全てフォルダリンクしているだけなので、実体はローカルマシンの各所に点在している状態です)

TortoiseSVN のインストール確認

当然ですが TortoiseSVN がインストールされていることが前提です。インストーラの入手はこちらから。
コマンドプロンプトを起動して次のコマンドが実行できることを確認します。コマンドが通れば TortoiseSVN のバージョン情報ダイアログが表示されます。

C:\Documents and Settings\xxxxx>TortoiseProc


TortoiseSVNコマンドプロンプトから実行してみる

次に試しに TortoiseSVNコマンドプロンプトから実行してみます。何かしらのリソースがチェックアウトされていて同期可能な状態であることが前提です。ここでは C:\foo\bar ディレクトリを更新するという想定のコマンドを示します。

C:\Documents and Settings\xxxxx>TortoiseProc /command:update /path:"C:\foo\bar"

実行すると更新内容を示すダイアログが表示されます(ここでは更新リソースがありませんが…)。

これではダイアログを閉じる作業が手動となってしまうのであまりよろしくありません。そこでコマンド引数を少し変更してやります。

C:\Documents and Settings\xxxxx>TortoiseProc /command:update /path:"C:\foo\bar" /closeonend:3

最後に追加した /closeonend:3 というのは「エラー、競合、マージがなければ自動で閉じる」という意味です。実行すると、先ほどは残ってしまっていたダイアログが(エラーなどがなければ)自動で閉じられます。

バッチファイルを作成する

コマンドプロンプトからの実行を踏まえて、SVN 更新するバッチファイルと SVN コミットするバッチファイルを作成します。

setenv.cmd
パス情報など、環境ごとに設定する内容を記述したファイル
autoupdate.cmd
SVN 更新するバッチファイル
autocommit.cmd
SVN コミットするバッチファイル
setenv.cmd の内容
set DIR1=C:\foo\bar
set DIR2=C:\hoge\resource
set DIR3=D:\svn\repos
autoupdate.cmd の内容
call setenv.cmd
TortoiseProc /command:update /path:%DIR1% /closeonend:3
TortoiseProc /command:update /path:%DIR2% /closeonend:3
TortoiseProc /command:update /path:%DIR3% /closeonend:3
autocommit.cmd の内容
call setenv.cmd
TortoiseProc /command:commit /path:%DIR1% /closeonend:3
TortoiseProc /command:commit /path:%DIR2% /closeonend:3
TortoiseProc /command:commit /path:%DIR3% /closeonend:3

ここで作成したバッチファイルを全て同じディレクトリに置いておけば、後は autoupdate.cmd や autocommit.cmd をダブルクリックするだけで3リポジトリに対して更新とコミットが行えます。ただし、コミットに関してはコミットコメントを入力する必要があるのでコミットダイアログが表示されっぱなしになります。もっと詳細なコマンドオプションはTortoiseSVN の自動化を参照してください。