簡単なデイリービルドを組んでみる その2

まずはマスターソースの取り出し。
現在のプロジェクトではソースファイルはVisual SourceSafeで管理されているので、ここからビルドPCに最新版一式を取り出すことにする。VSSはコマンドライン上で操作して、この内容をバッチファイルに書く。
プロジェクトデータベースを指定するには、環境変数にsrcsafe.iniのあるフォルダを指定しておく。フォルダはUNCパスでもOK。

set SSDIR=\\vss_server\folder

コマンドライン上でVSSを操作するには、SS.EXEにコマンドを指定する。今回はソース一式を取り出したいので「Get」コマンドを使う。まずはこんな感じ。

set VSS_PATH=C:\Program Files\Microsoft Visual Studio\VSS\win32
"%VSS_PATH%\ss" Get

SS.EXEにはパスが通っていないので環境変数に入れておく。どうせバッチファイル内だから使い捨てだし。あとは適当なオプションを選んで追加する。おおよそはこんな感じ。

set LOCAL_HOME=C:\Projects

"%VSS_PATH%\ss" Get $/ProjectName/sub "-GL%LOCAL_HOME%\sub" -R -YGuest -I-N "-O@vss.log"

追加したオプションの内容は、

$/ProjectName/sub
VSS上でのプロジェクト名
"-GL%LOCAL_HOME%\sub"
プロジェクトを取り出すための作業フォルダ
-R
プロジェクトを再帰的に取り出す
-YGuest
VSSへのログインアカウント。どうせ取り出しのみなので、横着にもゲスト・アカウント
-I-N
Yes or Noの選択で全部 No
"-O@vss.log"
結果情報を指定ファイルに書き出す

ここで注意するのは、結果ファイルの指定。パス指定なしにすると、作業フォルダにファイルができる。
後で処理結果をメールするので、処理結果を1つのファイルに追加していくことにする。最終的なVSS絡みの部分は、こんな感じ。

set SSDIR=\\vss_server\folder
set LOCAL_HOME=C:\Projects
set VSS_PATH=C:\Program Files\Microsoft Visual Studio\VSS\win32

"%VSS_PATH%\ss" Get $/ProjectName/sub1 "-GL%LOCAL_HOME%\sub1" -R -YGuest -I-N "-O@vss.log"
type "%LOCAL_HOME%\sub1\vss.log" >> build.log
del "%LOCAL_HOME%\sub1\vss.log"
"%VSS_PATH%\ss" Get $/ProjectName/sub2 "-GL%LOCAL_HOME%\sub2" -R -YGuest -I-N "-O@vss.log"
type "%LOCAL_HOME%\sub2\vss.log" >> build.log
del "%LOCAL_HOME%\sub2\vss.log"
"%VSS_PATH%\ss" Get $/ProjectName/sub3 "-GL%LOCAL_HOME%\sub3" -R -YGuest -I-N "-O@vss.log"
type "%LOCAL_HOME%\sub3\vss.log" >> build.log
del "%LOCAL_HOME%\sub3\vss.log"