ソースコード管理システム(SCCS)は、ソフトウェア開発中にソースコードやその他のテキストファイルの変更を追跡するために設計されたバージョン管理システムです。これにより、ユーザーは元のソースコードの以前のバージョンと保存されている変更を取得できます。これは元々 、1972年後半にベル研究所でマーク・ロッキンドによって、OS/360を実行するIBM System/370コンピュータ向けに開発されました。[ 1 ]
SCCSの特徴の一つは、ソースコードに埋め込まれ、SCCSによってリビジョンごとに自動的に更新されるsccsid文字列です。 [ 2 ]この例は、C言語での使用例を示しています。
static char sccsid [] = "@(#)ls.c 8.1 (Berkeley) 6/11/93" ;この文字列にはファイル名、日付が含まれ、コメントが含まれる場合もあります。コンパイル後、この文字列はパターンを検索することでバイナリファイルやオブジェクトファイルから見つけることができ、コンパイル中に使用されたソースコードファイルを@(#)特定するために使用できます。このバージョン文字列の検索を自動化するコマンドも利用可能です。[ 3 ]what
1972年、マーク・ロッキンドはベル研究所でIBM System/370コンピュータ(OS/360 MVTで動作)向けにSNOBOL4でSCCSを開発した。[ 1 ]彼は1973年に、当時PDP-11で動作していたUNIXで使用するために、SCCSをC言語で書き直した。
最初に公開されたバージョンは、1977 年 2 月 18 日の SCCS バージョン 4 でした。[ 4 ]これは、オペレーティングシステムのProgrammer's Workbench (PWB) エディションで利用可能でした。SCCS のリリース 4 は、テキストベースの履歴ファイル形式を使用した最初のバージョンでした。以前のバージョンでは、バイナリ履歴ファイル形式が使用されていました。リリース 4 は、Marc Rochkind によって作成または保守されなくなりました。その後、SCCS はAT&Tの商用System IIIおよびSystem Vディストリビューションに含まれました。BSDの祖先である32Vではライセンスされていませんでした。[ 5 ] SCCS コマンドセットは現在、Single UNIX Specificationの一部となっています。
SCCS は、 RCSや後のCVSなどの後のバージョン管理システムがより広く採用されるまで、Unix で主流のバージョン管理システムでした。今日では、これらの初期のバージョン管理システムは、特に分散バージョン管理システムを広く採用しているオープンソースコミュニティでは、一般的に時代遅れとみなされています。しかし、SCCS ファイル形式は、 BitKeeperやTeamWareなど、いくつかの新しいバージョン管理プログラムで内部的に使用されています。後者は SCCS のフロントエンドです。Sablime [ 6 ]は、SCCS [ 7 ]の修正版から開発されましたが、SCCS と互換性のない履歴ファイル形式を使用しています。SCCS ファイル形式は、インターリーブ デルタ(またはウィーブ[ 8 ] ) と呼ばれるストレージ技術を使用しています。このストレージ技術は、現在、多くのバージョン管理システム開発者によって、 「Precise Codeville」(「pcdv」) マージなどの高度なマージおよびバージョン管理技術[ 9 ]の基礎であると考えられています。
1999年に2000年問題の修正を行った以外は、各種UNIXベンダー固有のSCCSバージョンに対する積極的な開発は行われていない。[ 10 ] 2006年、Sun Microsystems (現在はOracleの一部)は、Solarisのオープンソース化の取り組みの一環として、SCCSのSolarisバージョンをCDDLライセンスの下でオープンソースとしてリリースした。[ 11 ]
ソースコード管理システム(SCCS)は、ファイルと履歴の変更を管理するためのシステムです。ソフトウェアは通常、バグの修正、アルゴリズムの最適化、機能の追加によって新しいバージョンにアップグレードされます。 [ 12 ]ソフトウェアの変更は、バージョン管理で解決する必要のある問題を引き起こします。[ 1 ]
SCCS はこれらの問題を解決するために構築されました。AT&T の SCCS には IBM OS 用の 5 つのメジャー バージョンと UNIX 用の 5 つのメジャー バージョンがありました[ 13 ] SCCS を使用した具体的な実装は、Unix 上の PDP 11 と OS 上の IBM 370 の 2 つです。[ 1 ]
SCCS は SCCS コマンドと SCCS ファイルの 2 つの部分から構成されます。[ 14 ]すべての基本操作 (作成、削除、編集など) は SCCS コマンドで実行できます。[ 14 ]s. SCCS ファイルには、SCCS コマンドで制御される固有のフォーマット プレフィックスがあります。 [ 2 ]
SCCSファイルは3つの部分から構成されます。[ 15 ]
SCCSでは、デルタはSCCSファイル内の単一のリビジョンです。デルタはデルタテーブルに格納されるため、各SCCSファイルには独自の変更記録があります。[ 15 ]
各 SCCS ファイルのすべての操作はフラグによって追跡されます。それらの機能は次のとおりです。[ 15 ]
SCCS は、異なるデルタに適用された挿入と削除を追跡するために 3 種類の制御レコードを使用します。それらは、挿入制御レコード、削除制御レコード、および終了制御レコードです。ユーザーがテキストの一部を変更すると、変更箇所を囲む制御レコードが挿入されます。制御レコードは、元のテキストレコードとともに本文に格納されます。[ 1 ]
SCCS は、create、get、edit、prt などのシンプルな構文でソースコード管理機能を実行または開始するマクロ呼び出しの形式のコマンドセットを提供します。[ 16 ] [ 17 ]また、管理対象ファイルの改訂履歴へのアクセスも提供します。これらのコマンドは、ドライバ プログラムsccsの引数動詞として実装されています。
sccs コマンドcreate は、ソース ファイルのテキストを使用して新しい履歴ファイルを作成します。例:
$ sccs create program.c program.c: 1.1 87 行出力は、名前、バージョン、行数です。
このコマンドはマクロで、adminに展開して新しい履歴ファイルを作成し、その後getでファイルを取得します。
$ sccs edit program.c 1.1 new delta 1.2 87 lines特定のファイルを編集する。
このコマンドは、-e を取得するために展開されるマクロです。
$ sccs delget program.c comments? main function enhanced 1.2 10 inserted 0 deleted 87 changed 1.2 97 lines新バージョンをチェックインし、sccsから新バージョンを入手してください。
このコマンドはマクロで、新しいバージョンのファイルをチェックインするためのdeltaコマンドに展開され、その後getコマンドでファイルを取得します。
$ sccs get program.c 1.1 87 行出力は、特定のファイルから取得したいバージョンと行数です。
$ sccs prt program.c このコマンドは、ソースコードの変更履歴レポートを生成します。
ほとんどのUNIXバージョンには SCCS のバージョンが含まれていますが、これはもはや積極的に開発されていないことが多いです。[ 18 ]
故ヨルグ・シリング氏( OpenSolarisプロジェクトの初期にSCCSのリリースを要請した人物)[ 19 ]は、OpenSolarisのソースコードを基にしたSCCSのフォークを維持していた[ 20 ] [ 21 ]。このフォークは主要な機能強化を受けているが、「新規プロジェクト」モードを使用しない限り、元のSCCSバージョンとの互換性は維持されている[ 22 ] 。
Heirloomプロジェクトには、 OpenSolarisソースコード[ 23 ]から派生し、2006年12月から2007年4月までメンテナンスされたSCCSのバージョンが含まれています[ 24 ]。
GNU はSCCS 互換プログラムGNU CSSC (「Compatibly Stupid Source Control」) を提供しており、これは SCCS アーカイブをCVSやSubversionなどの新しいシステムに変換するために時折使用されます。[ 25 ]これは完全な[ 26 ] SCCS 実装ではなく、新しいプロジェクトでの使用は推奨されませんが、主に最新のバージョン管理システムへの変換を目的としています。
1990年代以降、多数のファイルを含むプロジェクトを管理するために設計され、マルチユーザー操作、アクセス制御、自動ビルド、ネットワークサポート、リリース管理、分散バージョン管理などの高度な機能を提供する多くの新しいバージョン管理システムが開発され、普及しました。BitkeeperとTeamWareは内部的にSCCSファイル形式を使用しており、SCCSの後継とみなすことができます。[ 27 ] [ 28 ]
BSD システムでは、SCCSID は $ で始まり$で終わる RCSID に置き換えられます。対応するツールはidentです。[ 29 ]このシステムは元々 RCSで使用され、チェックアウト時に自動的に追加されます。結果として得られるソース コード リビジョン管理識別子は、NetBSD [ 30 ]およびFreeBSD [ 31 ]のスタイル ガイドで、それぞれのコード ベースについて説明されています。NetBSD はカスタム キーワード$NetBSD: ...$を定義し、FreeBSD は$FreeBSD: ...$とマクロ__FBSDIDという名前に変更したものを定義します。
SRC バージョン管理システムは、内部的に SCCS ファイル形式 (またはRCS ) を使用することもできます。また、単一ファイル プロジェクトのみを管理しながら、SCCS のより優れたユーザー インターフェイスを提供することを目指しています。[ 32 ]
開発は、プロジェクトを存続させ、発展させたいと考えているボランティアグループによって引き継がれています。