Чередующиеся дельты, или SCCS weave - это метод, используемый системой управления исходным кодом для хранения всех ревизий файла. Все строки из всех ревизий «сплетены» вместе в единый блок данных с чередующимися командами управления, указывающими, какие строки включены в какие ревизии файла. Чередующиеся дельты традиционно реализуются с учетом строчно-ориентированных текстовых файлов, хотя ничто не препятствует применению этого метода и к двоичным файлам.
Чередующиеся дельты были впервые реализованы Марком Рохкиндом в SCCS в 1975 году. Его дизайн делает все версии доступными одновременно, так что получение любой версии занимает одно и то же время. Также он содержит достаточно информации, чтобы идентифицировать автора каждой строчки (виновной) в одном блоке. С другой стороны, поскольку все ревизии файла анализируются, каждая операция выполняется медленнее по мере добавления новых ревизий. Термин «чередующаяся дельта» был придуман позже, в 1982 году, Уолтером Ф. Тихи, автором Системы контроля версий, в которой переплетение SCCS сравнивается с его новым механизмом обратной дельты в RCS.
В SCCS следующие блок weave
^ AI 1 ^ AD 2 foo ^ AE 2 bar ^ AI 2 baz ^ AE 2 ^ AE 1
представляет файл, содержащий строки «foo» и «bar» в первый выпуск и строки «bar» и «baz» во второй ревизии. Строка «^ A» обозначает символ Control-A.
Управляющие линии в чередующемся блоке дельты имеют следующее значение:
Время, необходимое для извлечения любой ревизии из такого чередующегося дельта-блока, пропорционально размеру архива. Размер архива - это сумма размеров всех различных строк во всех ревизиях.
Для того, чтобы извлечь конкретную ревизию, необходимо создать массив структур, сообщающих, будет ли конкретный блок, помеченный серийным номером в чередующихся дельтах, копироваться на выход или нет. Исходная реализация SCCS требует ок. 100 байтов памяти для каждого серийного номера в дельтах, чтобы знать, как извлечь конкретную ревизию. Таким образом, для распаковки файла истории SCCS с одним миллионом дельт потребуется 100 МБ виртуальной памяти. Размер может быть уменьшен прибл. 32 байта на дельту, если получение аннотированного файла не требуется.
Преимущества метода переплетения следующие:
Bazaar планировал использовать чередующиеся дельты в 2006 году, но от него отказались из-за низкой производительности после того, как он был фактически реализован в bzr 0.1. Он по-прежнему обеспечивает алгоритм слияния в стиле плетения.