Введение

Система управления исходным кодом (SCCS) — это система контроля версий, предназначенная для отслеживания изменений в исходном коде и других текстовых файлах в процессе разработки программного обеспечения. Это позволяет пользователю восстанавливать любую из предыдущих версий исходного кода и сохраненных изменений. Она была первоначально разработана в Bell Labs в конце 1972 года Марком Роккиндом для компьютера IBM System/370 под управлением OS/360. Характерной особенностью SCCS является строка sccsid, которая внедряется в исходный код и автоматически обновляется SCCS с каждой ревизией. Этот пример иллюстрирует её использование в языке программирования C:
static char sccsid[] = "@(#)ls.c 8.1 (Berkeley) 6/11/93";
Эта строка содержит имя файла, дату и может также содержать комментарий. После компиляции эта строка может быть найдена в бинарных и объектных файлах по шаблону @(#) и использоваться для определения, какие файлы исходного кода были использованы при компиляции. Команда what позволяет автоматизировать этот поиск строк версий.

История

В 1972 году Марк Роккинд разработал SCCS на SNOBOL4 в лабораториях Bell для компьютера IBM System/370 с операционной системой OS/360 MVT. Он поставлялся с редакцией операционной системы Programmer's Workbench (PWB). Выпуск 4 SCCS стал первой версией, использовавшей текстовый формат файла истории, в то время как более ранние версии использовали бинарные форматы файлов истории. Выпуск 4 больше не разрабатывался и не поддерживался Марком Роккиндом. Впоследствии SCCS был включен в коммерческие дистрибутивы System III и System V от AT&T. Он не поставлялся с лицензией 32V, являющейся предком BSD. Набор команд SCCS теперь является частью спецификации Single UNIX Specification. SCCS была доминирующей системой контроля версий для Unix до появления более поздних систем контроля версий, в частности RCS и, позднее, CVS, которые получили более широкое распространение. Сегодня эти ранние системы контроля версий обычно считаются устаревшими, особенно в сообществе разработчиков открытого исходного кода, которое в значительной степени перешло на распределенные системы контроля версий. Однако формат файла SCCS до сих пор используется внутри некоторых новых программ контроля версий, включая BitKeeper и TeamWare. Последняя является надстройкой над SCCS. Sablime был разработан на основе модифицированной версии SCCS, но использует формат файла истории, несовместимый с SCCS. Формат файла SCCS использует метод хранения, называемый перекрывающимися дельтами (или "ткачеством"). Этот метод хранения сейчас многими разработчиками систем контроля версий считается основополагающим для продвинутых методов слияния и контроля версий, таких как слияние "Precise Codeville" ("pcdv"). Помимо исправления проблем, связанных с 2000 годом, в 1999 году, активная разработка различных версий SCCS, специфичных для UNIX, не велась. В 2006 году Sun Microsystems (сейчас часть Oracle) выпустила свою версию SCCS для Solaris под лицензией CDDL в рамках усилий по открытию исходного кода Solaris.

Дельта-таблица

В SCCS дельта — это отдельная ревизия в SCCS-файле. Дельты хранятся в дельта-таблице, поэтому каждый SCCS-файл имеет свою собственную историю изменений. Система также обеспечивает доступ к истории версий файлов, находящихся под управлением. Эти команды реализованы как аргументы командной строки программы-драйвера sccs.

Прит.

$ sccs prt program. c
Эта команда генерирует отчет об изменениях в исходном коде.

Версии UNIX SCCS

Большинство версий UNIX включают в себя версию SCCS, которая, однако, часто больше не поддерживается активно.

Вилка Йорга Шиллинга

Покойный де (который просил выпустить SCCS на ранних этапах проекта OpenSolaris) поддерживал ответвление SCCS, основанное на исходном коде OpenSolaris. В него были внесены существенные улучшения, но оно остаётся совместимым с исходными версиями SCCS, за исключением использования режима "новый проект".

Проект "Наследие"

Проект Heirloom включает версию SCCS, полученную из исходного кода OpenSolaris и поддерживавшуюся с декабря 2006 года по апрель 2007 года.

Утилита преобразования GNU

GNU предлагает программу GNU CSSC ("Compatibly Stupid Source Control"), совместимую с SCCS, которая иногда используется для преобразования архивов SCCS в более современные системы, такие как CVS или Subversion. Это не полноценная реализация SCCS и не рекомендуется для использования в новых проектах, а предназначена главным образом для переноса в современную систему контроля версий.

Другие системы управления версиями

С 1990-х годов было разработано и получило широкое распространение множество новых систем контроля версий, предназначенных для управления проектами с большим количеством файлов и предлагающих расширенную функциональность, такую как многопользовательский режим, контроль доступа, автоматическая сборка, сетевая поддержка, управление выпусками и распределенный контроль версий. Bitkeeper и TeamWare используют формат файлов SCCS внутри и могут считаться преемниками SCCS. В системах BSD идентификатор SCCSID заменяется на RCSID, начинающийся и заканчивающийся точкой с запятой (;), соответствующий инструмент – эта система изначально используется RCS и добавляется автоматически при извлечении (checkout). Полученные идентификаторы контроля версий исходного кода документированы в руководствах по стилю NetBSD и FreeBSD для их собственных кодовых баз. NetBSD определяет пользовательское ключевое слово, а FreeBSD определяет и макрос с измененным именем. Система контроля версий SRC также может использовать формат файлов SCCS (или RCS) внутри и стремится предоставить более удобный пользовательский интерфейс для SCCS, при этом управляя проектами, состоящими только из одного файла.