Выбрать главу

Всё ли так гладко и замечательно, как кажется на первый взгляд? В большинстве случаев – да. Однако существуют моменты, когда в процессе совмещения редакций возникает ситуация, при которой CVS не может самостоятельно решить вопрос о слиянии. Например, если в предыдущем примере в обоих рабочих каталогах был исправлена одна и та же строчка, но по-разному. Вообще говоря, для CVS важно, чтобы изменения были достаточно далеко друг от друга. Тогда процесс совмещения происходит автоматически. Если же изменения слишком близки, возникает конфликт, который необходимо разрешить вручную прежде, чем продолжать работу. Более подробно о конфликтах рассказывается в пункте «Разрешение конфликтов» второй части статьи.

Базовые операции

Подготовка к работе

Чтобы начать работать с CVS, вам нужно всего ничего – исполняемый модуль (cvs.exe для Windows) и всё! «Что?» - скажете вы: «мне не нужна сеть и выделенный сервер? У меня не будет множества проблем с инсталляцией?». Именно так. CVS вполне может работать на локальной машине, в маленькой домашней сети, в сети компании или обеспечивать совместную разработку множества программистов по всему миру через Интернет. В данной статье мы будем использовать в основном локальный вариант.

Установка

Если Вы чувствуете себя комфортно в мире Open Source, можете скачать исходные тексты CVS с официальной web-страницы http://www.cvshome.org/ и собрать его для своей системы самостоятельно. Если же вам удобнее сразу получить исполняемый модуль, особенно если вы используете операционную систему Windows – проще всего взять готовый модуль на странице, посвящённой CVS для Windows http://www.cvsnt.org/. Скачайте архив, называющийся «Precompiled binaries w/o installer», и достаньте оттуда cvs.exe, который следует поместить в каталог, прописанный в каталогах поиска системы (path). Остальные файлы из архива пригодятся, если Вы надумаете устанавливать cvs server на Windows NT/2000/XP.

Вы можете спросить меня, зачем мучиться с командной строкой для работы с CVS, когда можно использовать какую-нибудь оболочку и получить все преимущества графического интерфейса пользователя? Мне кажется, используя оболочки сложнее понять принципы работы, закономерности и, кроме того, затруднительно создать более-менее сложный скрипт для обновления нескольких связанных проектов, их автоматической сборки и запуска набора тестов с последующей отправкой результатов по электронной почте. Тем не менее, я буду указывать, как добиться того же результата с помощью одной из самых популярных оболочек над CVS для Windows – WinCVS, страница которой расположена по адресу http://www.wincvs.org/.

Исполнение команд

Общий синтаксис операций с CVS выглядит так:

> cvs [cvs-options] command [command-options-and-arguments]

ПРИМЕЧАНИЕ. Угловой скобкой в начале строки «>» я буду отмечать текст, набираемый в командной строке. Текст без угловой скобки, следующий за командой, является предполагаемым выводом.

Иными словами, после имени исполняемого модуля идут опции, общие для всех команд и определяющие функционирование системы в целом, а после имени команды – опции, определяющие поведение этой команды, и специфичные для команды аргументы. Ниже приводится список ключей для CVS.

ПРЕДУПРЕЖДЕНИЕ. Некоторые ключи имеют одинаковое наименование, но совершенно разный смысл, когда используются как ключи к CVS (cvs –key command) и как ключи к команде (cvs command –key). Будьте внимательны при использовании ключей и располагайте их в правильном месте.

Ключ Описание
-d cvsroot Указать CVSROOT явно. Если не указан, CVS пытается определить CVSROOT из текущего каталога, переменной окружения «CVSROOT» или файла .cvsrc
-q Показывать меньше информации во время работы (quiet). Подавляется дополнительная информация, например о сканировании дерева каталогов.
-Q Показывать еще меньше информации во время работы (really quiet). Выводятся только сообщения об ошибках.
-r Новые файлы, полученные из репозитория, помечаются флагом read-only. Используется для отслеживания редактирования файлов при помощи watchers/editors.
-w Новые файлы, полученные из репозитория, помечаются флагом read-write (включена по умолчанию). Используется для отключения опции –r при использовании переменных окружения или .cvsrc.
-l Не записывать информацию о выполненной команде в журнал (history log). Команда, тем не менее, выполняется, и все изменения файлов отслеживаются.
-n Не производить никаких фактических изменений в рабочем каталоге. Полезно для проверки наличия изменений в репозитории.
-t Показывать детально, что происходит во время операции. Особенно полезно для понимания работы CVS, рекомендуется использовать с ключом –n.
-v Показать версию CVS.
-T tmpdir Использовать tmpdir как временный каталог во время работы.
-e editor Использовать editor для редактирования дополнительной информации, например при отсутствии –m у команд, требующих комментария.
-f Не использовать .cvsrc (файл, в котором можно сохранить постоянно используемые настройки, в этой статье не обсуждается).
-z #Сжимать данные при передаче по сети (0 – не сжимать, 9 – максимальное сжатие).
-x Шифровать данные при передаче по сети (если поддерживается методом доступа).
-a Авторизоваться при каждом взаимодействии с сервером (если поддерживается методом доступа).
-s VAR=VAL Установить пользовательскую переменную для CVS (в этой статье не обсуждается).

WINCVS. Можно использовать Admin\Command line… для выполнения команд CVS, набранных вручную.

Создание репозитория

Эксперименты проще всего производить с локальным репозиторием. Работа с удаленным CVS мало чем отличается, однако в этом случае Вам должен быть известен правильный CVSROOT. Например, администратор CVS-сервера может создать тестовый репозиторий и сообщить Вам необходимую информацию. Для работы с локальным репозиторием необходимо его проинициализировать самостоятельно. Создайте где-либо пустой каталог и выполните команду инициализации:

> cvs –d :locaclass="underline" c:/cvs/repository init

>

Ключ –d позволяет задать CVSROOT в командной строке. Команда init проводит первичную инициализацию репозитория. Вы может создать сколько угодно репозиториев в разных не пересекающихся каталогах и использовать их для различных категорий проектов, разных команд, как приватный и публичный и так далее.

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