コマンドラインからVSSの履歴を日時指定して出力してみる

マイクロソフトのプロジェクト管理ツール VisualSourceSafe (以下VSS) は、普段はGUIのクライアントツールから利用しますが、コマンドラインからもすべての機能を利用できる(らしい)です。

最近「自分の担当に関係するドキュメントが、前日変更されたかどうかをラクに調べたい」というのがあるので、ちょっと調べてみました。
先に言っておきますと、VSSのヘルプにやり方に載っています。ただ、正直ヘルプがわかりづらかったんで、今回書いてみました。

例:$/docs以下のフォルダから、10月1日の変更履歴をc:\vss\changelog.txtに出力する

c:> ss History $/docs -R  -Vd06/10/02;00:00a~d06/10/01;00:00a -O@c:\vss\changelog.txt

ss(.exe) ・・・VSSの実行ファイルです。
History ・・・履歴を取得するコマンドです。
$/docs ・・・ここに取得したいVSSのフォルダを指定します。$がVSSのルートです。
-R ・・・このオプションは、指定フォルダにサブフォルダが存在する場合、再帰的に処理します。サブフォルダがあればサブフォルダ内のファイルの履歴も取得してくれます。
-O ・・・出力先を指定するオプションです。-O@+ファイル名 で、ファイルに出力してくれます。ファイルは追記型になっています。
-V ・・・取得するバージョンを指定するオプションです。(今回はコレを探すのに手間取りました。)
-Vdオプションで、最古の履歴から指定日時までの履歴を取得できます。フォーマットは YY/MM/DD;hh:mm[aまたはp]です。ラストのa,pは、AM,PMのことです。
-V~dオプションで、指定日時から最新日時までの履歴を取得できます。
この -Vd~d の指定が初めは混乱しました。指定順序は-Vd新しい日付~d古い日付になります。ふだんの時系列で考えるFrom/Toとは逆の指定です。


とりあえず上記のような記述で取得できます。
この後、必要な情報をGrepかけて抜き出して加工すれば、指定したフォルダ全体での変更履歴を一括して確認できると思います。



って今日やるつもりだったのにもう時間ないので近いうちに続きを書ければなと。


注意点:

  • 上のss.exeからVSSの操作をするには、VSSのリポジトリを指定したり、ユーザーログインをコマンドラインから行う必要があります。ここでは説明を省略しましたが、@IT等に記事がありますのでそちらをご参照ください。

http://www.atmarkit.co.jp/fdotnet/teamdev/teamdev07/teamdev07_01.html

  • 通常「フォルダ」や「ディレクトリ」と呼ぶものを、VSSでは「プロジェクト」と呼びます。けど今回は馴染みやすさ優先ということで全部「フォルダ」に統一しました。