ソフトウェア
上級

バージョン管理史 SCCS→Git 1972-2026(バージョン管理史)

Version Control System 50年史 1972-2026。SCCS Source Code Control System (1972 Marc Rochkind Bell Labs・初VCS・delta storage)・RCS Revision Control System (1982 Walter Tichy Purdue・file-level・$Header$ keyword・GNU FSF移管)・CVS Concurrent Versions System (1986 Dick Grune・1990 Brian Berliner re-implement・RCS extension・FSF・SourceForge default 2000s)・Subversion SVN (2000 CollabNet→Apache 2009・CVS後継・Atomic Commit・Property+Branch=Cheap Copy)・BitKeeper (1998 Larry McVoy・Distributed初・Linux Kernel 2002-2005無償ライセンス→Tridgell リバースエンジニアリング騒動 2005年4月→Linux Kernel廃止)・Monotone (2003 Distributed・Cryptographic Identity)・darcs (2003 Haskell・Patch Theory)・Bazaar Bzr (2005 Canonical→2017年Ubuntu保留→Breezy Fork 2019)・Mercurial Hg (2005年4月 Matt Mackall Python・Git同月誕生・Distributed・現Facebook Sapling Fork内部利用 2022)・Git (2005年4月7日 Linus Torvalds 10日間開発・BitKeeper代替・Distributed+Content-Addressable+SHA-1→SHA-256 2020・Linux Kernel開発用)・GitHub (2008年4月 Tom Preston-Werner+Chris Wanstrath+PJ Hyett+Scott Chacon・Microsoft 2018年6月$7.5B買収・1.5億Dev 2024)・GitLab (2011 Sid Sijbrandij・FOSS+Hosted・$10B Public 2021)・Bitbucket (2008 Atlassian)・Codeberg+Forgejo Federated FOSS (2024 Gitea Fork EU)・Sourcehut (Drew DeVault FOSS)・Pijul (2014 Patch-based)・Fossil SQLite-based (2007 Richard Hipp)・Sapling (2022 Meta Mercurial Fork OSS)・Jujutsu jj (2020 Google・Git互換+Patch Stack)・Pixi+Pijul・¥0 OSS-¥¥¥¥/月 Hosted 2026 Git+GitHub圧倒的勝利。

0 回閲覧
0 いいね
2026/4/29 更新

概要

1972年にBell Labsで開発された SCCS(Source Code Control System)が、最初の差分ベースのバージョン管理システム(VCS)として登場した。以降、RCS、CVS、Subversion、BitKeeper、Monotone、darcs、Bazaar、Mercurial、Git など、中央集権型・分散型を問わず多様な VCS が誕生し、ソフトウェア開発の基盤を形成してきた。
2025‑2026 年時点では、Git が圧倒的シェアを占める一方、Meta の Sapling、Google の Jujutsu、Federated FOSS の Forgejo など、新しい分散型 VCS が注目されている。

主な特徴・仕組み

VCS開発年主要特徴ストレージ方式コミット単位ブランチモデル
SCCS1972差分ベース、ファイル単位変更差分のみファイルシングル
RCS1982ファイル単位、$Header$ 置換差分ファイルシングル
CVS1986RCS 拡張、タグ付け差分ファイルシングル
Subversion2000原子コミット、属性差分ファイルシングル
BitKeeper1998分散、リポジトリ共有差分ファイルシングル
Monotone2003暗号署名、分散差分ファイルシングル
darcs2003パッチ理論、分散パッチファイルシングル
Bazaar2005分散、直感的操作差分ファイルシングル
Mercurial2005分散、Python 実装差分ファイルシングル
Git2005分散、SHA‑1/256、コピーオンライトコンテンツアドレスファイル低コストコピー
Sapling2022Git 互換、Python ベースコンテンツアドレスファイル低コストコピー
Jujutsu2020Git 互換、パッチスタックコンテンツアドレスファイル低コストコピー
  • 差分ベース(SCCS, RCS, CVS, Subversion)は、ファイルの変更箇所のみを保存し、リポジトリサイズを抑えるが、履歴の再構築が遅い。
  • 分散型(Git, Mercurial, Jujutsu)は、リポジトリ全体をローカルに保持し、オフライン作業が可能。Git はコンテンツアドレス化により重複データを自動削減し、SHA‑256 への移行でセキュリティを強化。
  • 低コストコピー(Git, Mercurial, Jujutsu)は、ブランチ作成時にファイルをコピーせず、参照のみで高速。

具体例・対応製品 (テーブル必須)

VCS代表的なホスティングサービス主要ユーザー主要統合ツール代表的なプラグイン
GitGitHub, GitLab, Bitbucket, Codeberg, ForgejoLinux Kernel, Android, Chrome OSGitHub Actions, GitLab CI, JenkinsGit LFS, Git Submodule
MercurialBitbucket (旧), SourceForge, GitHub (via hg-git)Mozilla Firefox, OpenOfficeHgFlow, TortoiseHghgsubversion
SubversionApache Subversion, VisualSVN ServerOpenOffice, EclipseSubversion Merge, TortoiseSVNsvn+ssh
BazaarLaunchpad, Canonical CloudUbuntu, OpenStackBzrFast, BzrGitbzr-remote
GitLabGitLab.com, GitLab Self‑HostedGitLab CE/EE, GitLab RunnerGitLab CI, GitLab PagesGitLab Runner, GitLab Container Registry
  • GitHub は 2024 年時点で 1.5 億開発者を抱え、コミット数は 10 億を突破。
  • GitLab は 2021 年に 10 億円の投資を受け、クラウドサービスとオンプレミスを統合。
  • Forgejo は 2024 年に EU のデータ保護規制に対応し、Federated FOSS の代表格に。

選び方・注意点

  1. プロジェクト規模

    • 小規模・単一開発者向け:SCCS, RCS, CVS で十分。
    • 中規模・チーム開発:Git, Mercurial, Subversion。
    • 大規模・複数組織:Git(リポジトリ複製)または Jujutsu(パッチスタック)を検討。
  2. 分散 vs 中央集権

    • 分散型はオフライン作業が可能だが、リポジトリの複製が増える。
    • 中央集権型は管理が容易だが、ネットワーク障害時に作業が制限される。
  3. ブランチ戦略

    • Git の「低コストコピー」方式は頻繁なブランチ作成に適し、CI/CD でのマージが容易。
    • Subversion の「ブランチはディレクトリコピー」方式は、リポジトリサイズが大きくなるリスクがある。
  4. セキュリティ

    • Git の SHA‑256 への移行は 2020 年以降必須。
    • BitKeeper のライセンス問題は 2005 年に解消され、オープンソース化された。
  5. ツールチェーンとの互換性

    • IDE(VSCode, IntelliJ)や CI/CD(GitHub Actions, GitLab CI)との統合が重要。
    • Git の拡張機能(Git LFS, Git Submodule)が豊富で、バイナリ管理が容易。

関連用語との違い

用語本質的な違い代表的なユースケース
VCS vs SCMVCS はソースコードの変更履歴のみを管理。SCM はソフトウェア構成管理全般(ビルド、テスト、リリース)を含む。VCS は Git, SCM は GitLab CI/CD
Git vs MercurialGit は高速で低コストコピー、Mercurial は Python 実装で直感的操作。Git は大規模プロジェクト、Mercurial は中規模プロジェクト
Centralized vs DistributedCentralized は単一リポジトリ、Distributed はローカルコピー。Centralized は Subversion、Distributed は Git
LFS vs Git SubmoduleLFS は大容量ファイルを外部ストレージに保存、Submodule は別リポジトリを参照。LFS はゲームアセット、Submodule は共通ライブラリ

よくある質問 (FAQ)

  1. Git と Mercurial のどちらを選べばよいですか?
    Git はコミュニティ規模が大きく、CI/CD 連携が豊富。Mercurial は Python ベースで直感的。プロジェクトの規模とチームの慣れを考慮。

  2. Subversion から Git への移行は簡単ですか?
    svn2git などのツールで履歴を保持したまま移行可能。ただし、ブランチ構造が異なるため、マージ戦略を再設計する必要がある。

  3. Git の SHA‑1 から SHA‑256 への移行はどうすればよいですか?
    Git 2.29 以降で git hash-object --algorithm=sha256 を使用し、リポジトリを再構築。既存のコミットは再計算が必要。

まとめ

1972 年の SCCS から 2026 年の Git までの 50 年間で、バージョン管理は差分ベースから分散型へ、そしてコンテンツアドレス化へと進化した。

  • SCCS, RCS, CVS は差分ベースで小規模に適合。
  • Subversion は中央集権型で中規模に最適。
  • Git, Mercurial, Jujutsu は分散型で大規模・高速開発に適合。
  • Sapling は Git 互換で Meta が内部利用を拡大。
  • Forgejo, Codeberg など Federated FOSS はプライバシー重視の開発者に選択肢を提供。

2025‑2026 年の動向としては、Git の圧倒的シェアを維持しつつ、分散型 VCS の機能拡張(パッチスタック、低コストコピーの改良)が進行中。セキュリティ面では SHA‑256 への移行が必須化し、データ保護規制に対応した Federated サービスが台頭している。
開発者はプロジェクトの規模・チーム構成・セキュリティ要件を総合的に評価し、適切な VCS を選択することが成功の鍵となる。

この記事について
カテゴリーソフトウェア
難易度上級
作成日2026/4/29