Система контроля исходного кода ( SCCS ) - это система контроля версий, предназначенная для отслеживания изменений в исходном коде и других текстовых файлах во время разработки программного обеспечения. Это позволяет пользователю получить любую из предыдущих версий исходного исходного кода и сохраненные изменения. Первоначально он был разработан в Bell Labs в конце 1972 года Марком Рочкиндом для компьютера IBM System / 370 под управлением OS / 360 . [1]
Автор (ы) оригинала | Марк Дж. Рохкинд |
---|---|
Разработчики) | Bell Labs |
Первый выпуск | 1973 | [ обсудить ]
Репозиторий | Официальный веб-сайт |
Написано в | Первая версия: SNOBOL4 Переписать: C |
Операционная система | OS / 360 , Unix , Unix-подобный |
Платформа | IBM System / 370 , PDP-11 , IA-32 |
Тип | Управление версиями |
Лицензия | проприетарные лицензии, Общая лицензия на разработку и распространение |
Веб-сайт | Базовые спецификации Open Group, выпуск 7, IEEE Std 1003.1-2008, издание 2016 г. |
Характерной особенностью SCCS является строка sccsid, которая встроена в исходный код и автоматически обновляется SCCS для каждой ревизии. [2] Этот пример иллюстрирует его использование в языке программирования C :
static char sccsid [] = "@ (#) ls.c 8.1 (Беркли) 6/11/93";
Эта строка содержит имя файла, дату, а также может содержать комментарий. После компиляции строку можно найти в двоичных и объектных файлах, выполнив поиск по шаблону «@ (#)», и ее можно использовать для определения, какие файлы исходного кода использовались во время компиляции. Доступна команда «what» [1] для автоматизации поиска строк версии.
История
В 1972 году Марк Рочкинд разработал SCCS в SNOBOL4 в Bell Labs для компьютера IBM System / 370 под управлением OS / 360 MVT . [1] Он переписал SCCS на языке программирования C для использования под UNIX , а затем работал на PDP-11 в 1973 году.
Первой публично выпущенной версией была SCCS версии 4 от 18 февраля 1977 г. [3] Она была доступна вместе с версией операционной системы Programmer's Workbench (PWB) . Выпуск 4 SCCS был первой версией, в которой использовался текстовый формат файла истории, более ранние версии действительно использовали двоичные форматы файлов истории. Релиз 4 больше не написан и не поддерживается Марком Рохкиндом. Впоследствии SCCS был включен в коммерческие дистрибутивы System III и System V компании AT&T . Он не был лицензирован с 32V , предком BSD . [4] Набор команд SCCS теперь является частью спецификации Single UNIX .
SCCS была доминирующей системой управления версиями для Unix до тех пор, пока более поздние системы управления версиями , особенно RCS, а затем и CVS , не получили более широкого распространения. Сегодня эти ранние системы контроля версий обычно считаются устаревшими, особенно в сообществе разработчиков ПО с открытым исходным кодом , которое в значительной степени охватило распределенные системы контроля версий. Однако формат файла SCCS по-прежнему используется внутри нескольких более новых программ управления версиями, включая BitKeeper и TeamWare . Последний является интерфейсом для SCCS. Sablime был разработан на основе модифицированной версии SCCS [5], но использует формат файла истории, несовместимый с SCCS. Формат файла SCCS использует метод хранения, называемый чередующимися дельтами (или переплетением [6] ). Этот метод хранения сейчас рассматривается многими разработчиками систем контроля версий как основа для передовых методов слияния и управления версиями [7], таких как слияние « Precise Codeville » («pcdv»).
Помимо исправления проблем 2000 года в 1999 году, не велось активной разработки различных версий SCCS для различных производителей UNIX. [8] В 2006 году Sun Microsystems (сегодня часть Oracle ) выпустила свою версию SCCS для Solaris с открытым исходным кодом под лицензией CDDL в рамках своих усилий по созданию Solaris с открытым исходным кодом. [9]
Задний план
Система контроля исходного кода (SCCS) - это система для контроля изменений файлов и истории. Программное обеспечение обычно обновляется до новой версии путем исправления ошибок, оптимизации алгоритмов и добавления дополнительных функций. [10] Изменение программного обеспечения вызывает проблемы, для решения которых требуется контроль версий. [1]
- Исходный код занимает слишком много места, потому что он повторяется в каждой версии.
- Трудно получить информацию о том, когда и где произошли изменения.
- Найти точную версию, с которой у клиента проблемы, сложно.
SCCS был создан для решения этих проблем. SCCS от AT&T имел пять основных версий для ОС IBM и пять основных версий для UNIX [11]. Две конкретные реализации с использованием SCCS: PDP 11 под Unix и IBM 370 под ОС. [1]
Состав
SCCS состоит из двух частей: команд SCCS и файлов SCCS. [12] Все основные операции (например, создание, удаление, редактирование) могут быть реализованы с помощью команд SCCS. [12] Файлы SCCS имеют уникальный префикс формата s.
, который управляется командами SCCS. [2]
Файлы SCCS
Файл SCCS состоит из трех частей: [13]
- Таблица дельты
- Флаги доступа и отслеживания
- Тело текста
Таблица дельты
В SCCS дельта - это одна ревизия в файле SCCS. Дельты хранятся в дельта-таблице, поэтому каждый файл SCCS имеет свою собственную запись изменений. [13]
Флаги управления и отслеживания в файлах SCCS
Каждая операция каждого файла SCCS отслеживается флагами. Их функции следующие: [13]
- Установка прав на редактирование каждого файла SCCS.
- Управляйте каждой версией каждого файла SCCS.
- Разрешение совместного редактирования каждого файла SCCS.
- Взаимно-ссылающиеся изменения каждого файла SCCS.
Тело
SCCS использует три типа управляющих записей для отслеживания вставок и удалений, применяемых в различных дельтах. Это контрольная запись вставки, контрольная запись удаления и конечная контрольная запись. Каждый раз, когда пользователь изменяет какую-либо часть текста, вокруг изменения вставляется контрольная запись. Контрольные записи хранятся в теле вместе с исходными текстовыми записями. [1]
Основные команды SCCS
SCCS предоставляет набор команд в форме вызовов макросов, которые выполняют или запускают функции управления исходным кодом с простым синтаксисом, например create, get, edit, prt. [14] [15] Он также обеспечивает доступ к истории изменений управляемых файлов. Эти команды реализованы как команды аргументов для программы драйвера sccs .
Создавать
Команда sccs create использует текст исходного файла для создания нового файла истории. Например:
$ sccs create program.c program.c : 1.1 87 строк
На выходе будут имя, версия и строки.
Команда представляет собой макрос, который расширяется до admin для создания нового файла истории, за которым следует get для получения файла.
Редактировать
$ sccs edit program.c 1.1 новая дельта 1.2 87 строк
Отредактируйте определенный файл.
Команда представляет собой макрос, который расширяется до get -e .
Делгет
$ sccs delget program.c комментарии? основная функция улучшена 1,2 10 вставлено 0 удалено 87 без изменений 1,2 97 строк
Зарегистрируйте новую версию и получите новую версию от sccs.
Команда представляет собой макрос, который расширяется до дельты для проверки файла новой версии, за которым следует get для получения файла.
Получать
$ sccs get program.c 1.1 87 строк
Выходы - это версия и строки, которые вы хотите получить из определенного файла.
Prt
$ sccs prt program.c
Эта команда создает отчет об изменениях исходного кода.
Реализации
Версии UNIX SCCS
Большинство версий UNIX включают версию SCCS, которая, однако, часто больше не разрабатывается. [16] [ нужен лучший источник ]
Вилка Йорга Шиллинга
Йорг Шиллинг (который запросил выпуск SCCS на заре проекта OpenSolaris ) [17] поддерживает форк SCCS [18] , основанный на исходном коде OpenSolaris. Он получил значительные улучшения функций, но остается совместимым с исходными версиями SCCS, если не используется режим «новый проект». [19]
Семейная реликвия
Проект Heirloom включает версию SCCS, полученную из исходного кода OpenSolaris [20] и поддерживаемую с декабря 2006 г. по апрель 2007 г. [21]
Утилита преобразования GNU
GNU предлагает совместимую с SCCS программу GNU CSSC («Compatibly Stupid Source Control»), которая иногда используется для преобразования архивов SCCS в более новые системы, такие как CVS или Subversion ; [22] это не полная [23] реализация SCCS и не рекомендуется для использования в новых проектах, но в основном предназначена для преобразования в современную систему контроля версий.
Другие системы контроля версий
С 1990-х годов было разработано и стало популярным множество новых систем контроля версий , которые предназначены для управления проектами с большим количеством файлов и предлагают расширенные функции, такие как многопользовательская работа, контроль доступа, автоматическое создание, сетевая поддержка, управление выпусками. и распределенный контроль версий . Bitkeeper и TeamWare внутренне используют формат файла SCCS и могут считаться преемниками SCCS. [24] [25]
В системах BSD SCCSID заменяется на RCSID, начинающийся и заканчивающийся на $ ; соответствующий инструмент идент . [26] Эта система изначально использовалась RCS и добавлялась автоматически при оформлении заказа, но с тех пор стала неотъемлемой частью руководства по стилю в базе кода FreeBSD , которое определяет настраиваемое ключевое слово $ FreeBSD: ... $ и переименованный макрос __FBSDID . [27]
Система управления версиями SRC также может использовать формат файла SCCS внутри (или RCS ) и направлена на обеспечение лучшего пользовательского интерфейса для SCCS при одновременном управлении только однофайловыми проектами.
Рекомендации
- ^ a b c d e Рохкинд, Марк Дж. (декабрь 1975 г.), «Система управления исходным кодом» (PDF) , IEEE Transactions on Software Engineering , SE-1 (4), стр. 364–370, doi : 10.1109 / tse.1975.6312866 , S2CID 10006076
- ^ а б Oracle. «Глава 5 Система управления исходным кодом SCCS» . Руководство по программным утилитам .
- ^ http://sccs.sourceforge.net/PWB.html Объявление AT&T о SCCSv4
- ^ Справочная страницаSCCS what (1) из 4BSD, 1980, на веб-сайте The Unix Heritage Society. Архивировано 31 августа 2005 г.на Wayback Machine .
- ^ Estublier, Jacky, Дэвид Leblang, Андре ван дер Хук , Reidar Конради, Джеффри Клемм, Вальтер Tichy и Дарси Wiborg-Вебера. «Влияние исследований программной инженерии на практику управления конфигурацией программного обеспечения». ACM Transactions по разработке программного обеспечения и методологии (TOSEM) 14 (октябрь 2005 г.): 383–430.
- ^ Хадсон, Грег (2002-10-03), Заметки о хранении истории версий файлов , Неопубликованные личные заметки
- ^ Estublier, Jacky, Дэвид Leblang, Андре ван дер Хук , Reidar Конради, Джеффри Клемм, Вальтер Tichy и Дарси Wiborg-Вебера. «Влияние исследований программной инженерии на практику управления конфигурацией программного обеспечения». ACM Transactions по разработке программного обеспечения и методологии (TOSEM) 14 (октябрь 2005 г.): стр. 398.
- ^ Что такое SCCS , операционная система GNU
- ^ Стивен Лау, Sun Microsystems (19 декабря 2006 г.). «SCCS / сделать исходный код доступным» . Архивировано из оригинального 25 апреля 2012 года . Проверено 14 ноября 2011 .
- ^ «Выбор домашней организации». ProQuest 215925387 . Цитировать журнал требует
|journal=
( помощь ) - ^ Эволюция системы контроля исходного кода. Алан Глассер, опубликовано в журнале sigmetrics, ноябрь 1978 г., когда SCCS на UNIX была версией 4
- ^ а б «SCCS» . www-h.eng.cam.ac.uk . Проверено 12 сентября 2016 .
- ^ а б в IBM. «Общие концепции программирования: написание и отладка программ» . Центр знаний IBM .
- ^ Введение в систему управления исходным кодом Эрик Аллман, Project Ingres, Калифорнийский университет в Беркли
- ^ Руководство по утилитам программирования системы управления исходным кодом
- ↑ Koike, Hideki и Hui-Chu Chu. «VRCS: интеграция контроля версий и управления модулями с использованием интерактивной трехмерной графики». Визуальные языки, 1997. Труды. Симпозиум IEEE 1997 г. IEEE, 1997.
- ^ "os.solaris.opensolaris.rfe - Re: star - msg # 00001 - Недавнее обсуждение OSDir.com" . osdir.com . Проверено 10 сентября 2016 года .
- ^ Сайт разработки SCCS Йорга Шиллинга
- ^ Веб-сайт Schily SCCS : «Останется ли предстоящий SCCSv6 совместимым с POSIX и историческими реализациями SCCS?»
- ^ Гуннар Риттер (20 июня 2010 г.). «Инструменты развития семейной реликвии» . Проверено 4 ноября 2011 года .
- ^ http://heirloom.cvs.sourceforge.net/viewvc/heirloom/heirloom-devtools/sccs/ см. историю CVS
- ^ Утилита преобразования SCCS2SVN. Архивировано 22 декабря 2009 г. на Wayback Machine , которая работает как с SCCS, так и с CSSC.
- ^ Список ограничений GNU CSSC в документации
- ^ "Revtool" . Документация BitKeeper .
- ^ «Введение в Sun WorkShop TeamWare» . docs.oracle.com . Проверено 10 сентября 2016 года .
- ^ - Руководство по основным командам NetBSD
- ^ - Руководство разработчика ядра FreeBSD
дальнейшее чтение
- Очерк Марка Рочкинда о том, как был изобретен SCCS