ソフトウェア構成管理(SCM)の歴史は、もともとハードウェア開発と生産管理のための構成管理 (CM) がソフトウェア開発に適用され始めた 1950 年代にまで遡ることができます。初期のソフトウェアは、カード、テープ、その他のメディアなどの物理的なフットプリントを持っていました。最初のソフトウェア構成管理は手動操作でした。言語と複雑さの進歩に伴い、構成管理やその他の方法を含むソフトウェアエンジニアリングは、スケジュール、予算、品質などの問題により、大きな関心事となりました。長年にわたる実践的な教訓により、手順とツールの定義と確立が行われました。最終的に、ツールはソフトウェアの変更を管理するシステムになりました。[ 1 ]業界全体の慣行は、オープンまたは独自の方法 (リビジョン管理システムなど) でソリューションとして提供されました。コンピュータの使用が増加するにつれて、要件管理、設計の代替案、品質管理など、より広い範囲を扱うシステムが登場しました。後のツールは、ソフトウェアエンジニアリング研究所の能力成熟度モデルなどの組織のガイドラインに従いました。
make。diffアルゴリズムを記述した論文。patch(1985年頃、ラリー・ウォール)。1980年代までは、SCMはソフトウェア開発に適用されたCMとしてしか理解できませんでした。 [ 5 ]識別やベースライン(プロジェクトの進化における明確に定義されたポイント)などの基本的な概念はすでに明確でしたが、問題となっていたのは、活動の管理を目的とした一連の技術であり、正式なプロセス、文書、要求フォーム、管理ボードなどを使用することでした。
この日付以降になって初めて、実際の資源を表すソフトウェア成果物に直接適用されるソフトウェアツールの使用が可能になり、SCMは(従来のCMから)自律的な存在として成長することが可能になった。
異なるツールを使用することで、実際には非常に異なる重点が置かれるようになった。
SCCS(1973年に初リリース)とDSEE( Atria ClearCaseの前身と考えられている)は1984年に発表され[ 6 ] 、注目すべきVCSソフトウェアツールの2つです。これらのツールは、リビジョン管理システム(RCS)とともに、自動化されたソフトウェアツールとしてのVCSの第一世代と一般的に考えられています[ 7 ] 。
第一世代のVCSに続き、ローカルに集中したリポジトリを特徴とするCVSやSubversionなどのツールは、第二世代のVCSとみなすことができます。具体的には、CVS(Concurrent Versions System)はRCS構造の上に開発され、より大規模なグループ向けにツールの拡張性を向上させました。その後、RCSのようなファイルを使用するものの、 Xdeltaを使用することでデルタ圧縮を改善した、よりシンプルなCVSのようなツールであるPRCS [ 8 ]が登場しました。
2006年頃までに、Subversionはこの世代で最も人気があり広く使われているVCSツールと見なされ、CVSの重要な弱点を補った。その後、SVKはリモート貢献機能を目的として開発されたが、その設計の基礎は依然として前身のものと似ていた。[ 7 ]
インターネット接続が改善され、地理的に分散したソフトウェア開発が一般的になるにつれて、共有の中央プロジェクトリポジトリに依存しないツールが登場しました。これらのツールを使用すると、ユーザーはプロジェクトの独立したリポジトリ(またはフォーク)を維持し、変更セットを介して改訂を伝達できます。BitKeeper 、Git、Monotone、darcs、Mercurial、bzrは、 第 3 世代のバージョン管理システムの例です。[ 7 ]