「今日をもってTFSの利用を終了し、完全にgit/Visual Studio Onlineの利用を開始すると宣言しよう」
「かなり時間が掛かったけど、ついにその日が来たのだね」
「この先もまだ問題が出るのか分からないが、とりあえずプロジェクト1つの移行が終了したので、一応ここからが本番とする」
「では実際に移行して分かったことはなんだい?」
「この問題は一筋縄では行かない」
「話が長くなりそうだね」
「では、最初に大ざっぱな特徴を比較してみよう」
TFSの長所 §
Visual Studioでソースを管理するだけなら操作はシンプル
Visual Studioに支援機能も充実している
TFSの短所 §
SQL Serverを使用するためにブラックボックスができてしまい、不安が残る
同じことだが、バックアップがめんどくさいし、リストアする操作も不安である
MSの推奨から外れた
gitの長所 §
分散リポジトリなので、データが分散して残る。特にバックアップ処理を考えずとも多数のコピーが残る
その上でバックアップをする場合も単なるファイルツリーのコピーで終わる
MSの推奨である
gitの短所 §
操作がめんどくさい。ローカルにコミットした後で更にサーバと同期が必要等
知識が必要とされる場面はけっこうある (TFSほど自動化されていない)
OSSの周辺ツール類は動くかどうか分からずドキュメントも不足している
関連ドキュメントが決定的に不備である (古かったり間違っていたりして、無いより悪かった)
移行の問題 §
「それとは別に移行の問題というのがあってな」
「それはなんだい?」
「git-tfsでTFSリポジトリ全体の複製をgit化して作成しようとしたが一部しかできない。以下のような感じで--all付ければ大丈夫だった。~はパス名やサーバ名に置き換えてね」
- git tfs clone --all --authors=c:\~~~\AUTHORS http://~~~~:8080/tfs $/ C:\~~~~
「万事解決?」
「いや、リポジトリが大きかったので変換に3日ぐらい掛かったかな。その間再起動できなかった」
「ひぇ~」
「WindowsUpdateで勝手に再起動しちゃったときは目の前が真っ暗になったっけ」
比較の問題 §
「どちらも長所短所があるが、今回移行を決めた決定的な理由はなんだい?」
「うん。クリティカルな問題に集約すると、どちらもそれなりに弱点がある」
- TFSの短所 SQL Serverを使う。バックアップが不安である
- gitの短所 操作が複雑である。管理に手間を食いすぎる。機能やドキュメントに問題が存在する場合がある
「もっとぶっちゃけるとどうなの?」
「世の中、gitは便利だ便利だという人ばかりだが、誰も具体的なことをあまり語らない。その理由が良く分かった。個別の機能の議論になると、それほど出来が良いわけでも使いやすいわけでもないからだ」
「それにも関わらずgitを使う決断をした理由は?」
「バックアップだな。gitはSQL Server使わないのでファイルのツリーをコピーするだけでバックアップが取れる。復元も簡単。これは有力な長所」
「つまり、最終的に君が達した答えはそこにあるわけ?」
「そうだ。最終的にSQL Serverに大切な資産は置きたくなかったので、ファイルシステムを使うgitの方がまだマシ……というチョイスだ」
「でもさ。【機能やドキュメントに問題が存在する場合がある】っていう話はどうなんだ?」
「そこはね。Visual Studio OnlineとVisual Studioを使っていれば最低限のところは何とかなる分かったので。それで行く。OSSで固めたらおそらくうちでは破綻する」
「破綻するというのは、動かないってこと?」
「おそらく最終的には動くだろうが、費やす時間が長すぎて論外になりかねない」
「ソフトの使い方を理解するのに時間が掛かりすぎるのなら、分かってるソフトでやった方がマシってことだね」
「そうだ。しかも、ソフトが難しいって話じゃなくて、ドキュメントの不備の話だからね」
「頭が悪いから理解できないのではなく、ドキュメントに不備が多いから作業が進まないってことか」
「書かれた言葉は分かるがね。書かれた通りに動作しないソフトの扱い方までは分からない」
「じゃあ、この場合の勝敗はどう付ける? gitの勝ち?」
「いや。gitを使えるようにしてくれたVisual StudioとVisual Studio Onlineの勝ちだと思う」
「ぎゃふん」
感想 §
「今どきのVisual Studioには散々文句を言ったがね。結局、gitサポートは良く出来ていると思った。まあソース管理エクスプローラ的なものはあると良いと思ったけどね」
「今どきのVisual Studioはどこがダメ?」
「nugetはVisual Studio史上最悪の発明だと思うよ」
「えー」
「nugetは素晴らしい素晴らしいという言葉で世界は満ちあふれているが、実は全く無関係にnuget hellという言葉を使っている人が複数いるわけで……。そう言っていない人でもnugetに文句を言ってる人はいるし」
余談 §
「結局、TFSを最新版に上げないまま使用を終了してしまった」
「最終的に使っていたのはどのバージョン?」
「詳細はもう忘れた。ソースの差分が格納できれば、うちの使い方ではそれでオッケーだからね」
「最新でなくても良かったのか」
「さて、バージョン管理の問題が決着したのでソースを書くか」
「結局ソースが書きたいわけだね」
「そうとも。ソースを書く時間を奪うソフトは、どれほど便利で素晴らしくとも敵だ」