Чередующиеся дельты

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

Чередующиеся дельты, или SCCS weave - это метод, используемый системой управления исходным кодом для хранения всех ревизий файла. Все строки из всех ревизий «сплетены» вместе в единый блок данных с чередующимися командами управления, указывающими, какие строки включены в какие ревизии файла. Чередующиеся дельты традиционно реализуются с учетом строчно-ориентированных текстовых файлов, хотя ничто не препятствует применению этого метода и к двоичным файлам.

Чередующиеся дельты были впервые реализованы Марком Рохкиндом в SCCS в 1975 году. Его дизайн делает все версии доступными одновременно, так что получение любой версии занимает одно и то же время. Также он содержит достаточно информации, чтобы идентифицировать автора каждой строчки (виновной) в одном блоке. С другой стороны, поскольку все ревизии файла анализируются, каждая операция выполняется медленнее по мере добавления новых ревизий. Термин «чередующаяся дельта» был придуман позже, в 1982 году, Уолтером Ф. Тихи, автором Системы контроля версий, в которой переплетение SCCS сравнивается с его новым механизмом обратной дельты в RCS.

Содержание
  • 1 Реализация в SCCS
  • 2 Преимущества
  • 3 Программное обеспечение с использованием чередующихся дельт
  • 4 См. Также
  • 5 Ссылки
Реализация в SCCS

В SCCS следующие блок weave

^ AI 1 ^ AD 2 foo ^ AE 2 bar ^ AI 2 baz ^ AE 2 ^ AE 1

представляет файл, содержащий строки «foo» и «bar» в первый выпуск и строки «bar» и «baz» во второй ревизии. Строка «^ A» обозначает символ Control-A.

Управляющие линии в чередующемся блоке дельты имеют следующее значение:

  • ^ AI serial Запуск блока строк, который был вставлен с указанным серийным номером.
  • ^ AD serial Начало блока строк, который был удален с указанным серийным номером.
  • ^ AE serial Конец блока для соответствующего оператора ^ AI или ^ AD, который использует тот же серийный номер.
Преимущества

Время, необходимое для извлечения любой ревизии из такого чередующегося дельта-блока, пропорционально размеру архива. Размер архива - это сумма размеров всех различных строк во всех ревизиях.

Для того, чтобы извлечь конкретную ревизию, необходимо создать массив структур, сообщающих, будет ли конкретный блок, помеченный серийным номером в чередующихся дельтах, копироваться на выход или нет. Исходная реализация SCCS требует ок. 100 байтов памяти для каждого серийного номера в дельтах, чтобы знать, как извлечь конкретную ревизию. Таким образом, для распаковки файла истории SCCS с одним миллионом дельт потребуется 100 МБ виртуальной памяти. Размер может быть уменьшен прибл. 32 байта на дельту, если получение аннотированного файла не требуется.

Преимущества метода переплетения следующие:

  • Единое время извлечения для всех ревизий файла.
  • Возможность аннотировать все строки файла с ревизией последнего изменения, Автор последнего изменения и время последнего изменения без дополнительных затрат.
  • Возможность слияния в неперекрывающихся ветвях без дополнительных затрат.
Программное обеспечение с использованием чередующихся дельт

Bazaar планировал использовать чередующиеся дельты в 2006 году, но от него отказались из-за низкой производительности после того, как он был фактически реализован в bzr 0.1. Он по-прежнему обеспечивает алгоритм слияния в стиле плетения.

См. Также
Ссылки
Последняя правка сделана 2021-05-24 04:15:19
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте