MS_SVNvsGitvsTFS - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
トレンドとしては、
- Windows 環境でも OSS の SVN(Subversion)or Gitが利用されることが多い。
- 分散型バージョン管理システムが必要であれば、Git。ただし、難易度が高い。
- 分散型バージョン管理システムが不要であれば、
以下の中央集中型のバージョン管理システムを使用する。- SVN(Subversion)
- TFS(TFVC : Team Foundation Version Control)
補足(集中型と分散型の違い): 「分散型が必要かどうか」で切り分けているが、
実際に効いてくる差は以下である。
観点 集中型(SVN / TFVC) 分散型(Git) コミット サーバへ即反映 ローカルに蓄積し、後で push オフライン作業 ほぼ不可 可能(履歴もローカルにある) ブランチ ディレクトリのコピー。重い 極めて軽い(参照の付け替え) マージ 苦手とされた 得意 部分チェックアウト 可能(巨大リポジトリに強い) 原則リポジトリ全体 バイナリ資産 比較的扱いやすい 肥大化しやすい(Git LFS が必要) 「難易度が高い」という指摘は、
ブランチとマージの概念、そしてローカル/リモートの二層構造を
理解する必要があるためである。
一方で、その軽量なブランチが
プルリクエストによるレビュー文化と CI を成立させた。
- バージョン管理システムに中央集中型の TFVC だけでなく
分散型の Gitも選択できる。 - バージョン管理システムの機能だけでなく、ALM ソリューションとしての機能を持つ。
ALM とは、ソフトウェア開発における要件管理から変更・構成管理、
テスト管理(CI)など、アプリケーション・ライフサイクル全般を
総合的にサポートする機能。
補足(最新化:TFS の現在): 製品名と提供形態が変遷している。
時期 名称 〜2018 TFS(Team Foundation Server) / Visual Studio Team Services 2018〜 Azure DevOps Services(クラウド)/ Azure DevOps Server(オンプレミス) 「ALM ソリューション」に相当する機能は、
Azure DevOps の 5 つのサービスとして整理されている。
サービス 役割 Azure Repos バージョン管理(Git / TFVC) Azure Pipelines CI/CD Azure Boards 課題・作業項目の管理 Azure Test Plans テスト管理 Azure Artifacts パッケージ(NuGet 等)のホスティング TFVC は現在も利用できるが、新規プロジェクトでは Git が既定である。
Microsoft 自身も Windows / Office の開発を Git に移行している。
補足(現在の選択の実際): 「集中型か分散型か」で悩む場面はほぼ無くなり、
Git を前提に、どこにホストするかという判断に移っている。
- パブリック / 一般的な開発 → GitHub
- Microsoft スタックの統合 → Azure DevOps(Azure Repos)
- 閉域網で自己ホスト → GitLab / GitBucket
SVN が残っているのは、
- 巨大なバイナリ資産を含むリポジトリ
- 部分チェックアウトが前提の運用
- 移行コストに見合わない保守専用の資産
といったケースである。
Tags: 移行, .NET開発, 構成管理ツール, CI