そんな感じ

情報は百代の過客にして、行かふ話題も又旅人也。 ネットの上に生涯をうかべ、流行とらえて老をむかふる物は、日々調査にして調査を栖とす。 古人も多く調査に死せるあり。​

TFVCからGitに移行しようとしたら3つの罠にハマった

『でぶおぷす』だの『けいぞくてきインテクレーション』だのでキーワードだけに反応する偉い人が例に漏れず 「君、けいぞくてきいんてぐれーしょんというものが流行っているようだね。うちにも導入してくれたまえ。これで弊社の開発工数も激減して利益ガッポガッポだな!ガハハハッ!!」
なんて言われてゲンナリしている現場の皆さんこんにちは。

前談

これまで5000回ほどDevOpsやCI/CDの重要性を語り、あの手この手を尽くして現場への導入を提案し続けてきたのですが、「う~ん・・・そうねぇ」だの「今回はちょっと・・・」だののらりくらりと適当に流されておりました。
いや、いいんですよ。私のプレゼン能力不足なんでしょう。なんでダメなのかフィードバックくらい暮れてもいいと思うんですけどね。
その辺のIT系ニュースを呼んだ偉い人の鶴の一声で目的や期待するべき成果を特に定めずに導入が決まるところなんかも実に日本企業らしい。
ともかく釈然としない流れながらもCIツールの検証が出来るようになった!と喜んだのもつかの間、さっそく問題が。。。
世の中のCIツール、大体ソース管理はGit使ってる前提!!
うちは昔ながらのTFVCがバリバリ現役で主流となっているため、まずは移行が必要なことが発覚。
出鼻を挫かれつつもまずは第一歩として移行に着手することに。

Git-TFでサクッと移行できるらしい

ちょっと調べてみると移行ツールが存在する様子。やっぱりみんなが欲しいものは誰かが作るもんなんだな、と感心しつつまとめるとざっくり2種類あるらしい。
Git-TF
git-tfs

よく似た名前ですが別物なようで、特に移行手段に思い入れはないので適当にGit-TFを採用。
こちらの記事を参考に試したところ後述の3つの罠だけハマりつつ、おおむねこちらの記事の通りサクッと移行が出来ました!
http://sadynitro.hatenablog.jp/entry/2015/05/21/001053

忘れないうちにハマった罠をまとめておきます。

第一の罠:Javaの罠

さっそく動かそうと思ったら、動かない。 Javaがねぇぞと言われちゃう。
出てきたエラーメッセージに従って適当にやってしまったので、正直詳細は覚えていないのですが、どうやらJavaがインストールされていないとダメっぽい。
そんなわけで適当にJREを導入。Pathを通したり、なんか懐かしいなぁ・・・
まぁたいして困ることもなく第一の罠を軽々突破。

第二の罠:Git Bashの罠

さぁ今度こそと思ったら、また動かない。JARファイルが見つからねぇとか言われちゃう。
調べたところ、同じ問題に詰まっている人がstackoverflowにいたようで。 https://stackoverflow.com/questions/33915987/git-tf-unable-to-find-required-jar

なるほど、Git Bash使っているとハマる罠らしい。Git-tfが32bit版のBash使ってる前提でスクリプトを書いているので、参照が通っていないっぽい。
さっそく指摘されてる

MINGW32_NT*)

を「git-tf.cmd」の中から探すも、見つからない。フーム・・・と思ったら修正対象のファイルは「git-tf」だったらしく、拡張子なしの方をテキストエディタで開いたら35行目あたりに該当部分を発見。

MINGW*)

コメントの通り↑に直すと無事に動き出したっぽいぞ!第二の罠はちょっと大変だったな・・・

第三の罠:アクセス権限の罠

さぁさぁ今度こそと思ったら、また動かない。アクセス権限がねぇぞと言われちゃう。
うちのVisualStudioTeamServices環境につながるアカウントのはずなのにどうして!?ちゃんとIDもパスワードもあってるのにどうして!?
なんて混乱すること小一時間。

https://[hogehoge].visualstudio.com/_details/security/tokens

↑から『Alternate authentication credentials』の設定をして、そちらを使う必要があったらしく。
設定した情報を使ったらあっさりと通りました。ぐぬぬ・・・

俺たちの戦いはこれからだ!

使えるようになるまでの罠はつらかったけど、確かに移行そのものはサクッとイケる!
ちょっとした罠にはハマりつつ、なんとかサクッと(?)移行が完了した弊社環境。これでCI/CDツール導入し放題だね!

実際はやっとスタートラインに立てただけなのにどっと疲れたので一旦ここまで。
そんな感じ