Система контроля исходного кода
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2010 г. ) |
Оригинальный автор(ы) | Марк Дж. Рочкинд |
---|---|
Разработчик(и) | Белл Лаборатории |
Первоначальный выпуск | 1973 год обсуждать ] | [
Репозиторий | Н/Д |
Написано в | Первая версия: СНОБОЛ4 Переписать: С |
Операционная система | OS/360 , Unix , Unix-подобные |
Платформа | IBM System/370 , PDP-11 , IA-32 |
Тип | Контроль версий |
Лицензия | проприетарные лицензии, Общая лицензия на разработку и распространение |
Веб-сайт | Базовые спецификации открытой группы, выпуск 7, IEEE Std 1003.1-2008, издание 2016 г. |
Система контроля исходного кода ( SCCS ) — это система контроля версий, предназначенная для отслеживания изменений в исходном коде и других текстовых файлах во время разработки программного обеспечения. Это позволяет пользователю получить любую из предыдущих версий исходного исходного кода и сохраненных изменений. Первоначально он был разработан в Bell Labs в конце 1972 года Марком Рочкиндом для компьютера IBM System/370 под управлением OS/360 . [1]
Характерной особенностью SCCS является строка scccid , встроенная в исходный код и автоматически обновляемая SCCS для каждой ревизии. [2] Этот пример иллюстрирует его использование в языке программирования C :
static char sccsid[] = "@(#)ls.c 8.1 (Berkeley) 6/11/93";
Эта строка содержит имя файла, дату, а также может содержать комментарий. После компиляции строку можно найти в двоичных и объектных файлах, выполнив поиск по шаблону @(#)
и может использоваться для определения того, какие файлы исходного кода использовались во время компиляции. what
доступна команда для автоматизации поиска строк версии. [3]
История
[ редактировать ]В 1972 году Марк Рочкинд разработал SCCS в SNOBOL4 в Bell Labs для компьютера IBM System/370 под управлением OS/360 MVT . [1] Он переписал SCCS на языке программирования C для использования под UNIX , а затем в 1973 году запустил его на PDP-11 .
Первой публично выпущенной версией была версия 4 SCCS от 18 февраля 1977 года. [4] Он был доступен в Programmer's Workbench версии операционной системы (PWB) . Выпуск 4 SCCS был первой версией, в которой использовался текстовый формат файла истории; более ранние версии использовали форматы файлов истории в двоичном формате. Выпуск 4 больше не писался и не поддерживался Марком Рочкиндом. Впоследствии SCCS был включен в AT&T компании System III и System V коммерческие дистрибутивы . Он не был лицензирован для 32V , предшественника BSD . [5] Набор команд SCCS теперь является частью Единой спецификации UNIX .
SCCS была доминирующей системой контроля версий для Unix, пока более поздние контроля версий системы , особенно RCS и более поздняя CVS , не получили более широкое распространение. Сегодня эти ранние системы контроля версий обычно считаются устаревшими, особенно в сообществе разработчиков ПО с открытым исходным кодом , которое в основном использует распределенные системы контроля версий . Однако формат файла SCCS по-прежнему используется внутри некоторых новых программ контроля версий, включая BitKeeper и TeamWare . Последний является интерфейсом SCCS. Sablime , заархивированный 22 июля 2016 г. на Wayback Machine, был разработан на основе модифицированной версии SCCS. [6] но использует формат файла истории, несовместимый с SCCS. Формат файла SCCS использует метод хранения, называемый чередующимися дельтами (или переплетением [7] ). теперь считают этот метод хранения Многие разработчики систем контроля версий основой передовых методов слияния и управления версиями. [8] например, слияние "Precision Codeville" ("pcdv").
Помимо исправления проблем 2000 года в 1999 году, не велось активной разработки различных версий SCCS для UNIX, специфичных для конкретных поставщиков. [9] В 2006 году компания Sun Microsystems (сегодня часть Oracle ) выпустила Solaris версию SCCS для с открытым исходным кодом под лицензией CDDL в рамках своих усилий по открытию исходного кода Solaris. [10]
Фон
[ редактировать ]Система контроля исходного кода (SCCS) — это система контроля изменений файлов и истории. Программное обеспечение обычно обновляется до новой версии путем исправления ошибок, оптимизации алгоритмов и добавления дополнительных функций. [11] Изменение программного обеспечения вызывает проблемы, для решения которых требуется контроль версий. [1]
- Исходный код занимает слишком много места, поскольку повторяется в каждой версии.
- Получить информацию о том, когда и где произошли изменения, сложно.
- Найти именно ту версию, с которой у клиента проблемы, сложно.
SCCS был создан для решения этих проблем. У SCCS от AT&T было пять основных версий для ОС IBM и пять основных версий для UNIX. [12] Двумя конкретными реализациями, использующими SCCS, являются: PDP 11 под Unix и IBM 370 под ОС. [1]
Состав
[ редактировать ]SCCS состоит из двух частей: команд SCCS и файлов SCCS. [13] Все основные операции (например, создание, удаление, редактирование) могут быть реализованы с помощью команд SCCS. [13] Файлы SCCS имеют уникальный префикс формата. s.
, который управляется командами SCCS. [2]
SCCS-файлы
[ редактировать ]Файл SCCS состоит из трех частей: [14]
- Таблица дельты
- Флаги доступа и отслеживания
- Основная часть текста
Таблица дельты
[ редактировать ]В SCCS дельта — это одна редакция в файле SCCS. Дельта-таблица хранится в таблице изменений, поэтому каждый файл SCCS имеет собственную запись изменений. [14]
Флаги контроля и отслеживания в файлах SCCS
[ редактировать ]Каждая операция каждого файла SCCS отслеживается флагами. Их функции следующие: [14]
- Установка разрешений на редактирование каждого файла SCCS.
- Контролируйте каждый выпуск каждого файла SCCS.
- Разрешение совместного редактирования каждого файла SCCS.
- Взаимные ссылки на изменения каждого файла SCCS.
Тело
[ редактировать ]SCCS использует три типа контрольных записей для отслеживания вставок и удалений, применяемых в различных дельтах. Это управляющая запись вставки, управляющая запись удаления и конечная управляющая запись. Всякий раз, когда пользователь изменяет какую-либо часть текста, вокруг этого изменения вставляется контрольная запись. Управляющие записи хранятся в теле вместе с исходными текстовыми записями. [1]
Основные команды SCCS
[ редактировать ]SCCS предоставляет набор команд в форме вызовов макросов, которые выполняют или инициируют функции управления исходным кодом с простым синтаксисом, такие как создание, получение, редактирование, prt. [15] [16] Он также обеспечивает доступ к истории изменений файлов, находящихся под управлением. Эти команды реализованы как команды-аргументы программы-драйвера sccs .
Создавать
[ редактировать ]Команда sccs create использует текст исходного файла для создания нового файла истории. Например:
$ sccs create program.c
program.c:
1.1
87 lines
Выходные данные: имя, версия и строки.
Команда представляет собой макрос, который расширяется до 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 unchanged
1.2
97 lines
Проверьте новую версию и получите новую версию от scs.
Команда представляет собой макрос, который расширяется до delta для регистрации файла новой версии, а затем get для получения файла.
Получать
[ редактировать ]$ sccs get program.c
1.1
87 lines
Выходные данные — это версия и строки, которые вы хотите получить из конкретного файла.
Прт
[ редактировать ]$ sccs prt program.c
Эта команда создает отчет об изменениях исходного кода.
Реализации
[ редактировать ]UNIX-версии SCCS
[ редактировать ]Большинство версий UNIX включают версию SCCS, которая, однако, часто уже не разрабатывается активно. [17] [ нужен лучший источник ]
Вилка Йорга Шиллинга
[ редактировать ]Покойный Йорг Шиллинг (который просил выпустить SCCS на заре проекта OpenSolaris ) [18] поддерживал форк SCCS [19] [20] основанный на исходном коде OpenSolaris. Он получил значительные улучшения функций, но остается совместимым с исходными версиями SCCS, если не используется режим «нового проекта». [21]
Семейный проект
[ редактировать ]Проект Heirloom включает версию SCCS, полученную из OpenSolaris. исходного кода [22] и поддерживался с декабря 2006 г. по апрель 2007 г. [23]
Утилита преобразования GNU
[ редактировать ]GNU предлагает совместимую с SCCS программу GNU CSSC («Compatible Stupid Source Control»), которая иногда используется для преобразования архивов SCCS в более новые системы, такие как CVS или Subversion ; [24] это не полный [25] Реализация SCCS не рекомендуется для использования в новых проектах, а в основном предназначена для перехода на современную систему контроля версий.
Другие системы контроля версий
[ редактировать ]С 1990-х годов было разработано и стало популярным множество новых систем контроля версий , предназначенных для управления проектами с большим количеством файлов и предлагающих расширенные функциональные возможности, такие как многопользовательская работа, контроль доступа, автоматическое создание, поддержка сети, управление выпусками. и распределенный контроль версий . Bitkeeper и TeamWare используют формат файлов SCCS внутри себя и могут считаться преемниками SCCS. [26] [27]
В системах BSD SCCSID заменяется RCSID, начинающимся и заканчивающимся на $ ; соответствующий инструмент идент . [28] Эта система изначально используется RCS и добавляется автоматически при оформлении заказа. Полученные идентификаторы контроля версий исходного кода задокументированы в NetBSD. [29] и FreeBSD [30] руководства по стилю для собственных баз кода. NetBSD определяет пользовательское ключевое слово $NetBSD: ...$ в то время как FreeBSD определяет $FreeBSD: ...$ и переименованный макрос __ФБСИДИД .
Система контроля версий SRC также может использовать внутренний формат файлов SCCS (или форматы RCS ) и призвана обеспечить лучший пользовательский интерфейс для SCCS, при этом управляя только однофайловыми проектами. [31]
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и Рочкинд, Марк Дж. (декабрь 1975 г.), «Система управления исходным кодом» (PDF) , Транзакции IEEE по разработке программного обеспечения , том. СЭ-1, нет. 4, стр. 364–370, doi : 10.1109/tse.1975.6312866 , S2CID 10006076 , заархивировано из оригинала (PDF) 25 мая 2011 г. , получено 8 июля 2005 г.
- ^ Jump up to: а б Оракул. «Глава 5 Система контроля исходного кода SCCS» . Руководство по утилитам программирования .
- ^ "что" . IEEE и Открытая группа. нд . Проверено 28 ноября 2022 г.
- ^ http://sccs.sourceforge.net/PWB.html Объявление AT&T для SCCSv4.
- ^ Справочная страница SCCS What(1) из 4BSD, 1980, на веб-сайте Общества наследия Unix . Архивировано 31 августа 2005 г. в Wayback Machine .
- ^ Эстюблиер, Джеки, Дэвид Лебланг, Андре ван дер Хук , Рейдар Конради, Джеффри Клемм, Вальтер Тичи и Дарси Выборг-Вебер. «Влияние исследований в области разработки программного обеспечения на практику управления конфигурацией программного обеспечения». Транзакции ACM по разработке программного обеспечения и методологии (TOSEM) 14 (октябрь 2005 г.): 383–430.
- ^ Хадсон, Грег (03 октября 2002 г.), Примечания по хранению истории версий файлов , Неопубликованные личные заметки
- ^ Эстюблиер, Джеки, Дэвид Лебланг, Андре ван дер Хук , Рейдар Конради, Джеффри Клемм, Вальтер Тичи и Дарси Выборг-Вебер. «Влияние исследований в области разработки программного обеспечения на практику управления конфигурацией программного обеспечения». ACM Transactions on Software Engineering and Methodology (TOSEM) 14 (октябрь 2005 г.): стр.398.
- ^ Что такое SCCS , операционная система GNU
- ^ Стивен Лау, Sun Microsystems (19 декабря 2006 г.). «SCCS/сделать источник доступным» . Архивировано из оригинала 25 апреля 2012 года . Проверено 14 ноября 2011 г.
- ^ Выбор домашней организации ПроКвест 215925387
- ^ Эволюция системы контроля исходного кода. Алан Л. Глассер, опубликовано в журнале sigmetrics, ноябрь 1978 г., когда SCCS в UNIX была версии 4.
- ^ Jump up to: а б «СККС» . www-h.eng.cam.ac.uk . Проверено 12 сентября 2016 г.
- ^ Jump up to: а б с IBM (7 июня 2018 г.). «Общие концепции программирования: написание и отладка программ» . Центр знаний IBM .
- ^ Введение в систему контроля исходного кода Эрик Оллман, Project Ingres, Калифорнийский университет в Беркли
- ^ системы управления исходным кодом Руководство по утилитам программирования
- ^ Койке, Хидеки и Хуэй-Чу Чу. «VRCS: Интеграция контроля версий и управления модулями» с использованием интерактивной трехмерной графики». Визуальные языки, 1997. Труды. 1997. Симпозиум IEEE. ИИЭР, 1997.
- ^ "os.solaris.opensolaris.rfe - Re: star - msg#00001 - Недавнее обсуждение OSDir.com" . osdir.com . Проверено 10 сентября 2016 г.
- ^ Веб-сайт разработки SCCS Йорга Шиллинга.
- ^ «Коллекция инструментов, написанных или ранее управляемых Йоргом Шиллингом» . Кодеберг . 22 октября 2022 г. Проверено 28 ноября 2022 г.
разработку подхватила группа волонтеров, которые хотели бы сохранить проект живым и процветающим
- ^ Веб-сайт 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 в документации.
- ^ "ревтул" . Документация BitKeeper .
- ^ «Введение в Sun WorkShop TeamWare» . docs.oracle.com . Проверено 10 сентября 2016 г.
- ^ NetBSD по общим командам Руководство –
- ^ "src/share/misc/style version 1.64" . Репозиторий CVS NetBSD.
- ^ FreeBSD . разработчика ядра Руководство –
- ^ «Страница ресурсов для src 1.29» . 21 января 2022 г. . Проверено 28 ноября 2022 г.
Дальнейшее чтение
[ редактировать ]- Эссе Марка Рочкинда о том, как был изобретен SCCS
- Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- FreeBSD по основным командам Руководство –
- Solaris 11.4 по пользовательским командам Справочное руководство –
- – Страница руководства AIX 7.3
- HP-UX 11i пользователя по командам Руководство –
- IRIX 6.5 пользователя Руководство –