CTM это метод синхронизации удаленного дерева каталогов с центральным. Он встроен во FreeBSD и может использоваться для синхронизации системы с репозиториями исходных текстов FreeBSD. Он поддерживает синхронизацию всего репозитория или только заданного набора ветвей.
CTM создан специально для использования в условиях некачественного соединения по TCP/IP или его отсутствия и предоставляет возможность автоматической отправки изменений по электронной почте. Пользователю требуется загружать до трех изменений в день для наиболее активных ветвей. Размеры обновлений всегда поддерживаются настолько малыми, насколько это возможно, и обычно составляют меньше 5 Кб. Примерно на каждое десятое приходится по 10-50 Кб, и иногда случаются обновления больше 100 Кб.
При использовании CTM для отслеживания процесса разработки FreeBSD требуется учитывать особенности в работе напрямую с исходных текстов, находящихся в разработке, по сравнению с использованием готовых релизов. Эти вопросы рассматриваются в разделе Использование ветви разработки.
Cуществует немного документации по процессу создания дельта-файлов (delta, разница между имеющимися и актуальными исходными текстами) или использованию CTM в других целях. Обратитесь в список рассылки ctm-users для получения ответов на вопросы по использованию CTM.
<<Дельта-файлы>> для использования в 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.
Перед началом использования дельта-файлов 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.
Рекомендуется не удалять дельты после применения, если их сложно загрузить повторно. В этом случае будет доступна локальная копия, которая может понадобиться при восстановлении после сбоя.
Разработчики часто экспериментируют и изменяют файлы в
локальном дереве исходных текстов.
CTM имеет ограниченную поддержку
локальных изменений: перед проверкой наличия файла сначала
проверяется файл тем же именем и расширением
.ctm
. Если такой файл присутствует,
CTM будет работать с ним вместо
исходного файла.
Такое поведение обеспечивает простой путь поддержки
локальных изменений. Перед изменением файла скопируйте его с
расширением .ctm
. Вносите любые
изменения в исходный файл, зная что
CTM будет применять обновления
только к файлу с расширением .ctm
.
Для определения списка изменений, которые
CTM внесет в локальный
репозиторий исходных текстов, используйте параметр
-l
. Этот параметр используется для
записи лога изменений или выполнения предварительной
или последующей обработки какого-либо подмножества
изменяемых файлов.
Для создания резервной копии всех файлов, которые
будут изменены обновлением
CTM, укажите параметр
-B
. С
этим параметром CTM выполняет
сохранение в backup-file
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
.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.