最新バージョンの取得をバッチで実行する

プロジェクトのルートから一括で最新バージョンを取得したくなることがある。しかし、大きいプロジェクトだと、非常に時間がかかるのであまりやりたくない。昼休みにでもバッチを垂れ流しておければ楽だ。*1

準備1 : Force_Dir初期化変数の設定

コマンドラインからSS.EXEを起動してGetすると、カレントディレクトリに取得される。作業フォルダにCDすればいいのだが、VSSの設定でも取得先を強制的に作業フォルダとすることができる。vssサーバのプロジェクトディレクトリ下users/[USER_NAME]にユーザ毎のss.iniがあるのでこれを編集する。

[$/]
Dir (BA102) = C:\work\Project
Force_Dir = Yes                  ; ←この行を追加

たまに、[$/]以下の作業ディレクトリ([$/hoge]とかのセクション)が設定されていたりするが、うざいのでこの際削除。

準備2 : バッチを作成

以下のようなバッチを作成する。ここらへんを参考に。出力をどうするかは気分しだい。

@echo off

rem SS.EXEのパス
set PATH=%PATH%;"C:\Program Files\Microsoft Visual Studio\VSS\win32"

rem VSSユーザ&パスワード
set ssuser=username
set sspwd=password

rem VSSデータベースを設定
rem srcsafe.iniがある場所を指定する
set ssdir=\\VSS_SERVER_NAME\VSSRepos\Project

rem 標準出力はくだらないので捨てる。エラーログのみファイルに落とす。
ss get $/* -GWS -R 1> NUL 2> SSGet.log

と、ここまできたらタスク・スケジューラに登録すればOK。

*1:この方法には穴があって、フォルダ(プロジェクト)が新規に作成されていると落ちる。VSS管理されているソース取得を自動化(JScript) - やりたくないことはやらずに済む努力をすべきを参照。