Jack of all trades

master of none. 多芸は無芸を地で行く、自作自演何でも屋。

Git-TFを使ってTFVCリポジトリを履歴ごとGitリポジトリに移行する

事の発端は@kkamegawaさんのツイート↓

そんなまさか…。あの気難しいTFSのリポジトリでそんなにさくっといくはずが…。
そう思っていた時代が私にもありました。

実際にやってみる

こういうのは実際にやってみるに限る。ということで検証してみます。
基本的には@kkamegawaさんのツイートにあるBlogの説明沿ってやれば簡単に出来ます。

Migrating a TFVC team project to a Git team project along with changeset history in TFS. - Microsoft Team Foundation Server setup support Team's Blog - Site Home - MSDN Blogs

Git-TFの導入

※Gitの導入の説明は割愛します(他所で山ほど情報転がってると思いますし)
 何かしらの方法で入れておいてください。

Git-TFのページからダウンロードします。2015/5/20現在の最新はGit-TF 2.0.3.1の模様。
Git-TF - Home

ダウンロードしたzipファイルを解凍して、適切な場所に配置します(C:\git-tf等)
配置したパスを環境変数のPATHに登録しておくと後が楽な気がします。
何とこれだけで完了。

Gitリポジトリの準備

TFVCを使用しているチームプロジェクトは既に存在していると仮定して、移行先のGitリポジトリを持つチームプロジェクトを準備します。
ちなみにここでの説明用環境はVisual Studio Onlineを利用します。

Home画面からNewを選択して…
f:id:sadynitro:20150520234029p:plain

Version ControlでGitを選択したプロジェクトを作成します。 f:id:sadynitro:20150520234040p:plain

作成したプロジェクトのCode画面を開くとこんな感じですね。 f:id:sadynitro:20150520234346p:plain

TFVCリポジトリからローカルのGitリポジトリにクローン

もうセクションの見出しからしてちょっと何言ってるかわからないレベルですが、クローンするんです。
Git bashなど、ターミナル上で適当に用意したワークスペースに移動しておきます。

そして、以下のコマンドを実行します。

Git-tf clone "http://<TFS Server Name>:Port/tfs/<CollectionName> "$/TeamProjectName" --deep

ここではDefaultCollection上のIPTimeLinerというプロジェクトからTFVCリポジトリをクローンします。 f:id:sadynitro:20150520235657p:plain これだけでTFVCのリポジトリがGitのリポジトリとしてクローンされます。

クローンしたリポジトリをリモートリポジトリにプッシュする

あとはクローンしたリポジトリをローカルからリモートにプッシュするだけです。
フォルダを移動してremote addします。 f:id:sadynitro:20150520235659p:plain

そしてpushするだけ。 f:id:sadynitro:20150520235700p:plain

これで見事にTFVCのリポジトリをGitのリポジトリに履歴ごと移動できました! f:id:sadynitro:20150521000543p:plain

以上、本当にさくっと移行できてしまいました…。小一時間も掛からないレベル…。
TFVCでプロジェクト作っちゃったけど、プルリク使ってレビューのサイクル回したい!とかいう方はゼヒ試してみると良いかと思います。