Система контроля исходного кода - Source Code Control System

Система управления исходным кодом (SCCS)
Автор (ы) оригинала Марк Дж. Рохкинд
Разработчики) Bell Labs
Первый выпуск 1973 ; 48 лет назад ( 1973 )
Репозиторий Официальный веб-сайт
Написано в Первая версия: SNOBOL4
Переписать: C
Операционная система OS / 360 , Unix , Unix-подобный
Платформа IBM System / 370 , PDP-11 , IA-32
Тип Контроль версий
Лицензия проприетарные лицензии, Общая лицензия на разработку и распространение
Веб-сайт Базовые спецификации Open Group, выпуск 7, IEEE Std 1003.1-2008, издание 2016 г.

Система контроля исходного кода ( 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» [1] для автоматизации этого поиска строк версии.

История

В 1972 году Марк Рочкинд разработал SCCS в SNOBOL4 в Bell Labs для компьютера IBM System / 370 под управлением OS / 360 MVT . Он переписал SCCS на языке программирования C для использования под UNIX , а затем работал на PDP-11 в 1973 году.

Первой публично выпущенной версией была SCCS версии 4 от 18 февраля 1977 года. Она была доступна вместе с версией операционной системы Programmer's Workbench (PWB) . Выпуск 4 SCCS был первой версией, в которой использовался текстовый формат файла истории, более ранние версии действительно использовали двоичные форматы файлов истории. Релиз 4 больше не писался и не поддерживался Марком Рохкиндом. Впоследствии SCCS был включен в коммерческие дистрибутивы System III и System V компании AT&T . Он не был лицензирован с 32V , предком BSD . Набор команд SCCS теперь является частью спецификации Single UNIX .

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 от AT&T имел пять основных версий для ОС IBM и пять основных версий для UNIX. Две конкретные реализации с использованием SCCS: PDP 11 под Unix и IBM 370 под ОС.

Состав

SCCS состоит из двух частей: команд SCCS и файлов SCCS. Все основные операции (например, создание, удаление, редактирование) могут быть реализованы с помощью команд SCCS. Файлы SCCS имеют уникальный префикс формата s., который управляется командами SCCS.

Файлы SCCS

Файл SCCS состоит из трех частей:

  • Таблица дельты
  • Флаги доступа и отслеживания
  • Тело текста

Таблица дельты

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

Флаги управления и отслеживания в файлах SCCS

Каждая операция каждого файла SCCS отслеживается флагами. Их функции следующие:

  • Установка прав на редактирование каждого файла SCCS.
  • Управляйте каждым выпуском каждого файла SCCS.
  • Разрешение совместного редактирования каждого файла SCCS.
  • Взаимно-ссылающиеся изменения каждого файла SCCS.

Тело

SCCS использует три типа управляющих записей для отслеживания вставок и удалений, применяемых в различных дельтах. Это контрольная запись вставки, контрольная запись удаления и конечная контрольная запись. Каждый раз, когда пользователь изменяет какую-либо часть текста, вокруг изменения вставляется контрольная запись. Контрольные записи хранятся в теле вместе с исходными текстовыми записями.

Основные команды SCCS

SCCS предоставляет набор команд в форме вызовов макросов, которые выполняют или запускают функции управления исходным кодом с простым синтаксисом, например create, get, edit, prt. Он также обеспечивает доступ к истории изменений управляемых файлов. Эти команды реализованы как команды аргументов для программы драйвера sccs .

Создавать

Команда sccs create использует текст исходного файла для создания нового файла истории. Например:

$ sccs create program.c
program.c:
1.1
87 lines

На выходе будут имя, версия и строки.

Команда представляет собой макрос, который расширяется до admin, чтобы создать новый файл истории, а затем получить файл.

Редактировать

$ sccs edit program.c
1.1
new delta 1.2
87 lines

Отредактируйте определенный файл.

Команда представляет собой макрос, который расширяется до get -e .

Делгет

$ sccs delget program.c
comments? main function enhanced
1.2
10 inserted
0 deleted
87 unchanged
1.2
97 lines

Зарегистрируйте новую версию и получите новую версию от sccs.

Команда представляет собой макрос, который расширяется до дельты, чтобы проверить файл новой версии, а затем получить файл.

Получать

$ sccs get program.c
1.1
87 lines

Выходы - это версия и строки, которые вы хотите получить из определенного файла.

Prt

$ sccs prt program.c

Эта команда создает отчет об изменениях исходного кода.

Реализации

Версии UNIX SCCS

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

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

Йорг Шиллинг (который запросил выпуск SCCS на заре проекта OpenSolaris ) поддерживал форк SCCS, основанный на исходном коде OpenSolaris. Он получил значительные улучшения функций, но остается совместимым с исходными версиями SCCS, если не используется режим «новый проект».

Семейная реликвия

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

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

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

Другие системы контроля версий

С 1990-х годов было разработано и стало популярным множество новых систем контроля версий , предназначенных для управления проектами с большим количеством файлов и предлагающих расширенные функции, такие как многопользовательская работа, контроль доступа, автоматическое построение, сетевая поддержка, управление выпусками. и распределенный контроль версий . Bitkeeper и TeamWare внутренне используют формат файла SCCS и могут считаться преемниками SCCS.

В системах BSD SCCSID заменяется на RCSID, начинающийся и заканчивающийся на $ ; соответствующий инструмент идент . Эта система изначально использовалась RCS и добавлялась автоматически при оформлении заказа, но с тех пор стала неотъемлемой частью руководства по стилю в базе кода FreeBSD , которое определяет пользовательское ключевое слово $ FreeBSD: ... $ и макрос, переименованный в __FBSDID .

Система управления версиями SRC также может использовать формат файла SCCS внутри (или RCS ) и направлена ​​на обеспечение лучшего пользовательского интерфейса для SCCS при одновременном управлении только однофайловыми проектами.

использованная литература

дальнейшее чтение