CTM for OpenBSD

Что такое CTM?

Систему CTM разработал Poul-Henning Kamp для внесения изменений в дерево исходных текстов по электрoнной почте. Это хороший способ отслеживать текущее состояние исходных текстов или CVS репозитория при медленном соединении с интернет - например, если у вас модем.

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

По любым проблемам, предложениям и вопросам относительно CTM, свяжитесь с администратором CTM Hans Günter Weigand. (Пожалуйста, не беспокойте других людей из OpenBSD по поводу CTM, так как они заняты решением других проблем. Спасибо.)

Как она работает?

Основная идея CTM заключается в том, что вы подписываетесь на специальный список рассылки для конкретного CVS модуля или дерева исходных текстов. Каждый день вы получаете почтовое сообщение, содержащее все изменения в данном дереве за этот период. Каждый такой набор изменений называется дельтой. На самом деле, CTM сервер создаёт новые дельты каждые 12 часов.

Вы начинаете с базового набора, на который накладываются последующие дельты. Для того, чтобы начать использовать CTM, вы должны взять последний базовый набор и все дельты, которые появились после него. Базовые наборы разбиты на части по 1400kB, для облегчения загрузки по плохим линиям.

Базовые наборы создаются примерно через 50 дельт, поэтому вам не придётся загружать более 50 дельт для синхронизации исходных текстов.

В настоящий момент существует два типа базовых набора. Долгое время мы делали файлы tar.gz вручную, но теперь мы создаём истинные базовые CTM дельты. Они также содержат контрольную сумму md5(1) и генерируются автоматически, поэтому немного безопаснее. Вы можете различить эти два типа базовых набора по их названию. Пример tar.gz файла: OpenBSD-cvs.1450.tar.gz, тогда как базовая CTM дельта будет называться: OpenBSD-cvs.1500A.gz.

Какая пропускная полоса требуется для ctm?

Вы получаете базовый набор и все дельты до текущего момента с ftp серверов, приведённых ниже. Размеры:

Как использовать CTM?

Примечание: Ниже идущий пример относятся к OpenBSD-cvs.

Список FTP серверов на которых вы можете найти CTM дельты:

Примечание: Мне хотелось бы найти другие сервера по всему миру, которые захотели бы размещать у себя эти дельты.

Что мне выбрать - CVS репозиторий или дерево исходных текстов?

Это зависит, среди прочего, от свободного места на вашем диске. Так как CTM ещё не умеет работать с файлами, которые были изменены локально, лучшим вариантом конечно будет CVS репозиторий. Тогда вы сможете извлечь рабочее дерево исходных текстов из вашего CVS репозитория, и хранить ваши локальные изменения в вашем дереве, можете следить за стабильной веткой. CVS достаточно силен, чтобы объединить ваши локальные изменения. Вы сможете использовать любые команды CVS, за исключением cvs commit и cvs tag.

Недостатком, однако, является тот объем дискового пространства, который при этом используется. Извлечённое дерево исходных текстов занимает примерно 370MB, но если вы содержите свой CVS репозиторий, вам потребуется на него более 1Gb, плюс другие 370MB для извлечённого дерева исходных текстов. При этом не берутся в расчёт ещё около 100Mb или более (в зависимости от архитектуры), которые потребуются для компилирования исходных текстов.

Если вы только хотите иметь дерево исходных текстов, вам придётся самому разбираться с локальными изменениями. Один из способ сделать это - использовать файловую систему union (смотрите mount_union(8)), хотя были сообщения, что файловая система union может быть нестабильна если оба уровня - верхний и нижний находятся на одной физической файловой системе. Если вы разместите нижний и верхний уровни на разных файловых системах, у вас не должно возникнуть таких проблем. Пример этого:

Предположим, что дерево обновляемое через CTM, находится в /usr/src-ctm, и ваше настоящее дерево исходных текстов, то, в котором вы делаете изменения и которое вы компилируете, находится в /usr/src. /usr/src должен быть пустой директорией. Данная команда выполнит объединённое монтирование файловых систем:

	mount -t union -o -b /usr/src-ctm /usr/src

Изменения, сделанные в файлах на /usr/src, становятся файлами, находящимися в /usr/src, и скрывающими те, что находятся в src-ctm. Если изменения были внесены CTM в низлежащее дерево src-ctm, они не будут видны, если есть файлы на верхнем уровне, скрывающие их.

Вы должны периодически размонтировать объединённую файловую систему и искать файлы, которые являются локальными для этой файловой системы.

	umount /usr/src
	find /usr/src -type f

Команды ls -W и rm -W будут так же полезны, поскольку объекты называемые "whiteouts" в /usr/src, будут также скрывать файлы в src-ctm.

Если вы выбрали CVS репозиторий, вы можете использовать команду cvs checkout для извлечения дерева исходных текстов из него. Каждый раз, когда вы производите обновление при помощи CTM, вы можете использовать команду cvs update для обновления дерева исходных текстов.

Чтобы получить начальный src репозиторий:

	cd /usr
	cvs -qd YOUR_CVS_REPOSITORY checkout -P src

и после каждого CTM обновления:

	cd /usr/src
	cvs -q update -Pd

На сколько стабильна CTM для OpenBSD?

CTM для OpenBSD используется более пяти лет, а для FreeBSD ещё больше. CTM вполне стабильна и надёжна.

Что преподнесёт будущее для CTM?

Предвидятся многочисленные (мелкие) изменения и возможная оптимизация. Среди них: Напишите мне ваши мнения и пожелания!

Дополнительная информация

Если вы хотите узнать больше о CTM, хорошо бы ознакомиться с FreeBSD handbook: Там, также находятся man страницы для всех утилит CTM.

Cводка:

Важные замечания и объявления по CTM будут посланы в список рассылки announce@OpenBSD.org.

Благодарности

Логотип OpenBSD/CTM для проекта OpenBSD создал Phillip F Knaack.


OpenBSD www@openbsd.org
Originally [OpenBSD: ctm.html,v 1.26 ]
$RuOBSD: ctm.html,v 1.9 2004/02/28 08:38:39 dfa Exp $
$Translation: ctm.html,v 1.11 2004/02/28 19:30:43 dfa Exp $
$OpenBSD: ctm.html,v 1.9 2004/02/29 08:50:22 jufi Exp $