現在、ソースの管理にVisual SourceSafe6.0(以下VSS)を使っています。
Perlで作ったスクリプトを使って、毎日夜間にバッチでVSSから最新のソースを取得〜ビルド〜中間ファイルごとソースを圧縮をしています。
フルビルドでざっと1時間半は掛かるので、かなり生産性は上がっています。デイリービルドの利点はそれだけじゃないんですが、本記事では扱いません。詳しくはhttp://japanese.joelonsoftware.com/Articles/DailyBuildsAreYourFriend.htmlをご覧ください。
さて、ここからが本題です。
Perlで作ったスクリプトを使っているので、Perlの判る人にしかメンテが出来ません。細かい要望に答えていくのも面倒くさいなぁということで、C#の勉強を兼ねてGUIを作ってしまおうと考えています。
知っている人には「何を今更……」を言われてしまうかもしれませんが、コマンドプロンプトからVSSを使って、最新のソースコードを取得する方法です。ここでは説明のため、次のような名前を使います。なお、「ss.exe」にはあらかじめPathを通していることにします。
-プロジェクト名は「Wankuma」、 -Srcsafe.iniのある場所を「\server\$hoge」、 -ソースを保存するフォルダを「"C:\local_dir"」、 -ユーザーIDは「user_id」、 -パスワードを「password」とします。
下記のようなコマンドで取得することが出来ます。デイリービルドのバッチはこのコマンドで動かしています。
|bat| c:> SET SSDIR="\server\$hoge" c:> ss get "$/Wankuma" -R -I-Y -Yuser_id,password -GL"C:\local_dir" ||<
簡単に説明します。環境変数「SSDIR」で設定されたデータベースの「Wankuma」プロジェクトのソースを「get "Wankuma"」にて取得します。
-「-R」は、指定したプロジェクト「Wankuma」のサブプロジェクトを再帰的に指定します。 -「-I-Y」は、聞かれた事に全てYesを返します。 -「-Y」は、ユーザーIDとパスワードを指定します。 -「-GL」は、ソースを落としてくる場所を指定します。
当初、環境変数を使わずに最新のソースを取得する方法を模索したのですが、どうしても環境変数「SSDIR」があるため、コマンドライン1行にまとまってくれませんでした。*1
次回はこのコマンドを使って、C# からVSSを操作してみたいと思います。
- 関連記事
*1:ss.iniを触る方法以外にご存知の方いらっしゃいましたら教えてください