# Source Code Control System

Das Source Code Control System (SCCS) ist eine Software zur Versionsverwaltung von Dateien auf dem Computer. Die erste Version wurde 1972 von Marc J. Rochkind an den Bell Laboratories geschrieben. SCCS ist der POSIX-Standard für Versionsverwaltungssysteme.

## Funktionen

SCCS dient speziell bei Textdateien wie Quelltexten, Konfigurationsdateien oder Dokumentationen der Verwaltung und Dokumentation der Änderungen. Hierbei legt es für jede geänderte Datei im Unterordner SCCS/ eine Textdatei namens s.Name-der-Datei an, die eine Prüfsumme sowie jede einzelne Änderung in einem diff-ähnlichen Format enthält. Auf diese Weise ist es möglich, jede jemals durchgeführte Änderung an einer einzelnen Datei nachvollziehen zu können. Mit dem 1977 eingeführten Befehl prt lässt sich zudem eine Auflistung aller Änderungen anzeigen.

### Revisionen und Branches

Versionsnummern in SCCS, sogenannte SIDs, bestehen meist aus einer Release- und einer Level-Nummer. Die erste Version jeder Datei erhält hierbei die SID 1.1. Für jede neue Änderung wird eine neue Revision erzeugt, wodurch standardmäßig nur der Level erhöht wird, also zum Beispiel von Version 1.1 auf Version 1.2. Mittels des Flags b in der Versionsdatei werden auch Branches unterstützt, was die SIDs um zwei weitere Stellen ergänzt, nämlich um eine Branch- und eine Sequenz-Nummer. Das ermöglicht zum Beispiel die Pflege von Korrekturen in einem älteren Versionszweig einer Anwendung.

### SCCSID und Makros

SCCS kann in geänderten Dateien mittels verschiedener Makros die jeweils aktuelle Revisionsnummer sowie weitere Informationen einfügen. Die Zeile
in einer C-Quellcodedatei etwa wird nach Abschluss der Änderungen durch
ersetzt. Die automatisch eingefügte Zeichenkette @(#) (Makro %Z%) dient hierbei der Auffindbarkeit versionierter Dateien. Mittels des Befehls sccs what kann dieses Auffinden ebenfalls automatisiert werden.

## Weiterentwicklungen

In seiner ursprünglichen Version verwaltet SCCS nur einzelne Dateien und kann daher nicht zur einheitlichen Versionierung von ganzen Projekten verwendet werden. Aus diesem und anderen Gründen wurde es ab 1982 von anderen Versionsverwaltungen zusehends häufiger abgelöst.

### RCS

SCCS ist in seiner Funktionsweise mit dem zehn Jahre später entwickelten Revision Control System (RCS) vergleichbar. Anders als SCCS verfügt RCS jedoch nicht über Prüfsummen und ist somit anfälliger für Dateidefekte. CVS ist eine Weiterentwicklung von RCS, die im Wesentlichen dasselbe Dateiformat verwendet, aber projektbezogenes Arbeiten ermöglicht.

### Spätere Entwicklung

Von Sun Microsystems wurde ab 1986 ein auf SCCS aufbauendes Projektverwaltungssystem namens Network Software Engineering (NSE) entwickelt. Anfang der 1990er Jahre wurde dies durch TeamWare ersetzt, das immer noch für größere Projekte verwendet wird. Auch das BitKeeper-System basierte ursprünglich auf den Datenstrukturen und den internen Programmierschnittstellen von SCCS, ab BitKeeper 5.0 wurde das in jedem Unterverzeichnis angelegte SCCS/-Verzeichnis jedoch durch ein projektglobales Verzeichnis namens .bk/ ersetzt.

## Quellenangaben

* ↑ sccs. In: The Open Group Base Specifications Issue 7, 2018 edition. Abgerufen am 17. Januar 2020.
* ↑ BitSCCS - SCCS compatible revision control system. Abgerufen am 17. Januar 2020.
* ↑ Release notes for BitKeeper version 5.4.6 (released May 6, 2013). 19. Mai 2015, abgerufen am 17. Januar 2020 (englisch, Abschnitt: Other changes): „SCCS directories are no longer stored each directory in the repository. A new directory at the top level, .bk, stores all BK data.“