kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

ワークスペースを作らずtfspreview.comからtfs.visualstudio.comへ移行する(MS非公認方式)

10/31にTFS Serviceが正式稼働になり、URLもtfspreview.comからhttp://tfs.visualstudio.com/になりました。Visual StudioはURL単位でTFSのワークスペースを認識するので、通常ならこういう手順になるでしょうか。

  • 全部チェックイン状態にする
  • 新しいURLでTFSのサーバー接続する
  • ワークスペースを作成して、新しくマッピングし直し

ワークスペースを作り直すと、再度ソースのダウンロードが始まるので面倒です。ということで、レジストリを強引に書き換えてしまう方法が紹介されています。
Regularly Expressing on .NET: Updating your Team Foundation Service Uri to the new tfs.visualstudio.com
PowerShellでわずか3行。HKEY_CURRENT_USERのレジストリ書き換えなので、特権昇格は不要ですね。
Visual StudioのURLの一部がワイルドカードになっているのは一台にインストールされているVisual Studioが複数バージョンあるためです。

Get-ItemProperty -Path HKCU:\Software\Microsoft\VisualStudio\*\TeamFoundation\Instances\*.tfspreview.com Uri | %{set-itemproperty -Path $_.PSPath Uri -Value ( $_.Uri -Replace ".tfspreview.com/", ".visualstudio.com/" )}

Get-ItemProperty -Path HKCU:\Software\Microsoft\VisualStudio\*\TeamFoundation\Instances\*.tfspreview.com\Collections\* Uri | %{set-itemproperty -Path $_.PSPath Uri -Value ( $_.Uri -Replace ".tfspreview.com/", ".visualstudio.com/" )}

Get-ChildItem -Path HKCU:\Software\Microsoft\VisualStudio\*\TeamFoundation\Instances\*.tfspreview.com | Rename-Item -NewName { $_.PSChildName -Replace ".tfspreview.com$", ".visualstudio.com" }

紹介したBlog作者によると、tfコマンドなどの(正式にサポートされた)ツールでできないか探したけど、わからなかったので、レジストリ書き換えに走ったようです。私も早速書き換えましょう。
もちろんオンプレミス版のTFSでも同じことなので、サーバー変更の際は同じ手順が使える…でしょう(その際はPowerShellのURLの部分をなおしてね)。