A.3. Использование CTM

CTM это метод синхронизации удаленного дерева каталогов с центральным. Он встроен во FreeBSD и может использоваться для синхронизации системы с репозиториями исходных текстов FreeBSD. Он поддерживает синхронизацию всего репозитория или только заданного набора ветвей.

CTM создан специально для использования в условиях некачественного соединения по TCP/IP или его отсутствия и предоставляет возможность автоматической отправки изменений по электронной почте. Пользователю требуется загружать до трех изменений в день для наиболее активных ветвей. Размеры обновлений всегда поддерживаются настолько малыми, насколько это возможно, и обычно составляют меньше 5 Кб. Примерно на каждое десятое приходится по 10-50 Кб, и иногда случаются обновления больше 100 Кб.

При использовании CTM для отслеживания процесса разработки FreeBSD требуется учитывать особенности в работе напрямую с исходных текстов, находящихся в разработке, по сравнению с использованием готовых релизов. Эти вопросы рассматриваются в разделе Использование ветви разработки.

Cуществует немного документации по процессу создания дельта-файлов (delta, разница между имеющимися и актуальными исходными текстами) или использованию CTM в других целях. Обратитесь в список рассылки ctm-users для получения ответов на вопросы по использованию CTM.

A.3.1. Получение дельта-файлов

<<Дельта-файлы>> для использования в CTM можно получить двумя способами: через анонимный FTP или по электронной почте.

Дельта-файлы по FTP можно получить со следующих сайтов зеркал. При использовании анонимного FTP для получения дельта-файлов CTM выберите географически ближайшее зеркало. По случаю возникновения проблем сообщайте в список рассылки ctm-users.

Для получения дельта-файлов по почте подпишитесь на один из списков распространения ctm-src, доступных на http://lists.freebsd.org/mailman/listinfo. Например, ctm-src-cur поддерживает главную ветвь разработки, а ctm-src-9 поддерживает ветвь выпуска релизов 9.X.

Как только вы получаете обновления CTM по почте, используйте программу ctm_rmail для их распаковки и применения. Эта программа может выполняться непосредственно из записи в /etc/aliases для автоматизации процесса. Обращайтесь к странице справочника ctm_rmail(1) для получения дополнительной информации.

Примечание:

Вне зависимости от способа получения дельта-файлов, пользователям CTM следует подписаться на список рассылки ctm-announce, поскольку это единственный механизм публикации объявлений CTM.

A.3.2. Использование CTM

Перед началом использования дельта-файлов CTM потребуется определить исходную точку для последующего их применения.

Один из способов состоит в применении <<стартового>> дельта-файла к пустому каталогу. В имени такого файла присутствует Xempty, например, src-cur.3210XEmpty.gz. Обозначение перед X соответствует происхождению первоначального источника. Empty означает пустой каталог. Как правило, файл с Empty создается через каждые 100 дельта-файлов. Обратите внимание, что стартовые дельта-файлы имеют большой размер, и от 70 до 80 мегабайт сжатых в gzip данных для XEmpty является обычным делом.

Другой способ заключается в получении первоначального источника с -RELEASE CD. Это может существенно снизить объём передаваемых данных по сети.

Когда основной дельта-файл создан, примените все дельта-файлы с последующими номерами. Чтобы применить дельта-файлы:

# cd /directory/to/store/the/stuff
# ctm -v -v /directory/which/stores/the/deltas/src-xxx.*

Можно применять несколько дельт одной командой, по мере их последовательной обработки уже применённые дельты игнорируются. CTM работает с дельта-файлами, сжатыми с помощью gzip, что позволяет сэкономить на используемом дисковом пространстве.

Для проверки дельта-файла без его применения используйте параметр командной строки -c. CTM не будет модифицировать локальное дерево, а только проверит целостность дельта-файла на предмет его применимости без ошибок. Обращайтесь к ctm(1) для получения дополнительной информации по имеющимся параметрам и понимания процесса применения дельт, который используется в CTM.

Для поддержания исходных текстов в актуальном состоянии каждый раз, когда становится доступна новая дельта, применяйте её с использованием CTM.

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

A.3.3. Сохранение локальных изменений

Разработчики часто экспериментируют и изменяют файлы в локальном дереве исходных текстов. CTM имеет ограниченную поддержку локальных изменений: перед проверкой наличия файла сначала проверяется файл тем же именем и расширением .ctm. Если такой файл присутствует, CTM будет работать с ним вместо исходного файла.

Такое поведение обеспечивает простой путь поддержки локальных изменений. Перед изменением файла скопируйте его с расширением .ctm. Вносите любые изменения в исходный файл, зная что CTM будет применять обновления только к файлу с расширением .ctm.

A.3.4. Другие возможности CTM

Определение файлов, которые будут затронуты обновлением

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

Создание резервных копий перед обновлением

Для создания резервной копии всех файлов, которые будут изменены обновлением CTM, укажите параметр -B backup-file. С этим параметром CTM выполняет сохранение в backup-file всех файлов, которые затрагиваются применяемыми дельтами CTM.

Ограничение обновлений для определенных файлов

Для ограничения набора файлов, обновляемых CTM, или для извлечения лишь нескольких файлов из последовательности дельт можно указать фильтрующие регулярные выражения с использованием -e, который указывает, какие файлы обрабатывать, или -x, который указывает, какие файлы игнорировать.

Пример извлечения свежей копии lib/libc/Makefile из коллекции сохраненных дельт CTM:

# cd /directory/to/extract/to/
# ctm -e '^lib/libc/Makefile' /directory/which/stores/the/deltas/src-xxx.*

Для каждого файла, указанного в CTM дельте, параметры -e и -x применяются в порядке их задания в командной строке. Файл обрабатывается CTM, только если он помечается как подходящий после обработки всех параметров -e и -x.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.