.tfs-ignoreファイルを作るスクリプト

CodePlexにソースをアップするためにTeam Explorerを使っているが、これがとにかく使いにくい。普段SubclipseやTurtoiseSVNなんかの使い勝手のいいソース管理クライアントを使っているので、それらと比べるとどうしても見劣りしてしまう。

Visual Studioのプロジェクトとその中のファイル単位でしかサーバーにコミットできないので、その外にあるファイルを自由にコミットすることができないのは致命的すぎる(本当はできる方法があるのかもしれないけど、どっちにしろ使いづらい)。

なので、Team Exploereはアンイストールしてコマンドラインから使用するCodePlex Source Control Clientを使っている。
CodePlex Archive

このツールはCVSSubversionライクに使えるので非常に重宝している。
でも、このツールは現段階では低レベルの機能しか用意されていないのでちょっとこみいった事をしようとすると結構めんどくさい。例えばソース管理から除外するファイルを指定するための「.tfs-ignore」ファイルを生成する事ができない。

このファイルはXML形式なので、いちいちエディタを開いて記述する必要がある。
じゃあPowerShellでこのファイルを生成するスクリプトを書いてしまえ、という事で書いてみた。

New-TFSIgnore.ps1
param([string[]]$fileName)

if($args[0] -eq "-?") {
    $commandName = [IO.Path]::GetFileNameWithoutExtension($MyInvocation.MyCommand.Name)
    Write-Host @"

名前
    $commandName

概要
    指定したファイルをTFSの無視するファイルとして追加した.tfs-ignoreコンテンツを生成します。

構文
    $commandName [-fileName] <string[]>
    
"@ -foregroundColor Yellow
    exit 1
}
$fileName += @($input)

@"
<ignore xmlns="http://www.codeplex.com/schema/IgnoreListSchema-1.0.xsd">
"@
$fileName | % { @"
    <add recursive="true">{0}</add>
"@ -f $_ }
@"
</ignore>
"@
使い方
PS > New-TFSIgnore bin, obj > ".tfs-ignore"
生成されるファイル
<ignore xmlns="http://www.codeplex.com/schema/IgnoreListSchema-1.0.xsd">
    <add recursive="true">bin</add>
    <add recursive="true">obj</add>
</ignore>

こんな感じでいくつかユーティリティを作っとくと多少は楽になるかな。