# Руководство &cervisia;

## Введение

### Доступ к хранилищу

В этом разделе мы предполагаем, что вы используете &CVS; только на стороне клиента. Это означает, что кто-то (вероятно администратор архива CVS) дал вам учётную запись на сервере, и это - ваша работа по проверке модулей хранилища (репозитория) и работе с ними.

&CVS; поддерживает несколько методов доступа к хранилищу:

Локальный

- Имя хранилища будет похоже на `/home/cvs` и просто сохранен в каталоге, который является доступным для вашего компьютера. Он может быть не диске, смонтированном по NFS, это не важно. Если вы часто пользуетесь локальным хранилищем, можете указать &cervisia; использовать его.

  ### Добавление локального хранилища

  1. Для открытия диалога репозиториев, выберите Репозиторий Репозитории... .

  2. Нажмите кнопку Добавить... .

  3. В появившемся диалоговом окне введите детали о хранилище.

  4. Подтвердите нажатием кнопки OK.

  В дальнейшем, когда вы будете использовать &cervisia; для проверки нового модуля, &cervisia; предоставит вам хранилище, которые вы добавили здесь.

rsh

- Имя хранилища будет похоже на `:ext:bernd@cvs.cervisia.sourceforge.net:/cvsroot/cervisia`.

  Этот метод требует, чтобы вы имели учётную запись на сервере (в этом случае `cvs.sourceforge.net` и используете отдалённую оболочку для связи. По умолчанию для этой цели &CVS; использует ↱, однако ↱ считается ненадёжным и широко используется &ssh;.

  Если вы используете &ssh;, вы должны установить переменную окружения$`CVS_RSH` в &ssh; при использовании клиента `cvs`. &cervisia; это поддерживает.

  Откройте окно репозиториев снова и нажмите кнопку Добавить.... Теперь в первой строке введите имя хранилища и командную оболочку (⪚ &ssh;) во второй строке. Если вы подтвердите нажатием кнопки OK, &cervisia; запомнит эти настройки.

  Обратите внимание, что &cervisia; не может ответить на возможные запросы пароля c сервера. Вы должны убедиться, что вход на сервер работает и пароля не требует. При использовании ↱ это может быть достигнуто созданием файла `$`HOME` /.rhosts` со списком проверенных серверов (см. страницу man по ↱).

  При использовании &ssh;, вы должны скопировать ваш публичный ключ `$`HOME`/.ssh/identity.pub` на сервер. Ключ не должен быть защищён паролем (см страницу man по &ssh; и FAQ по &CVS; SSH на SourceForge). Если вы не уверены, уточните у вашего системного администратора.

pserver

- Имя хранилища будет похоже на `:pserver:gehrmab@cvs.kde.org:/home/kde`

  Этот метод использует специальный протокол со слабой аутентификацией (`pserver` замещает идентификацию пароля). Перед использованием сервера вы должны войти на него. Поскольку это не поддерживается &cervisia; напрямую, выполните в командной оболочке

      %cvs -d :pserver:joe@cvs.kde.org:/home/kde login

  (конечно, указывается имя вашего хранилища). &CVS; попросит вас ввести пароль и сверится с сервером. Если пароль верный, имя хранилища вместе с паролем будет добавлено в конец файла `$`HOME`/.cvspass`. Далее при каждом обращении к хранилищу &CVS; будет использовать эту информацию автоматически. Поскольку каждый, кто знает ваш пароль, может работать с хранилищем от вашего имени (а также может намеренно повредить файлы), вы должны хранить `$`HOME`/.cvspass` в тайне и сделать его нечитаемым для других.

### Импорт модуля в репозиторий

В этом разделе описывается процесс помещения нового проекта в репозиторий &CVS;. Если вы хотите работать только с существующим хранилищем, можете пропустить этот раздел.

#### Снимок экрана диалога импорта &cervisia;

Снимок экрана диалога импорта &cervisia;

В screenshot-import представлен диалог который поможет выполнить импорт проекта как модуля. После того как вы заполнили форму подтвердите OK, и будет выполнена следующая команда:

    cvs -d репозиторий import -m "" модуль метка разработчика метка релиза

- Имя хранилища &CVS;, также известное как $`CVSROOT`. Вы должны иметь доступ на запись в него, и репозиторий должен быть корректно инициализирован. Если репозиторий ещё не существует инициализируйте его командой ``cvs` `-d` `репозиторий` `init``.

  Если репозиторий не локальный, удостоверьтесь в том, что аутентификация работает (см accessing-repository).

- Имя модуля, под которым проект будет сохранён. После импорта проект может быть проверен под этим именем. Дополнительную информацию смотрите checkingout. Это также название соответствующего каталога в хранилище.

- Метка разработчика исторически используется для определения сторонних источников. Используйте ваше имя пользователя, если не имеете лучших вариантов. Это не имеет очень большого значения.

- Эта метка также используется для того, чтобы импортировать различные версии стороннего программного обеспечения. Если вы не имеете лучшие варианты, используйте `start` либо строку `FOO_1_0`, где `FOO` имя вашего проекта и `1.0` - номер версии.

### Рабочий каталог

Это начальный каталог проекта, который вы хотите импортировать Импорт начинается с этого каталога, включая все подкаталоги.

### Игнорировать файлы

Если вы заполните это поле, в команду `cvs import` будет добавлена дополнительная опция `-I `файлы`` . Этот параметр интерпретируется как разделённый пробелами список игнорируемых файлов. В общем случае это более чистый и менее подверженный ошибкам способ контроля файлов, которые входят в репозиторий. Однако этот метод может быть полезен, если проект содержит файлы, которые игнорируются &CVS;, например файлы `core`. В этом случае, в поле укажите символ `!`. Это блокирует механизм блокируемых файлов &CVS;, смотрите ignoredfiles.

### Импортировать как бинарные

Если вы выбираете этот параметр, все файлы будут импортированы в бинарном режиме, т.е. будет использована команда `cvs import` с аргументом `-kb`.

### Проверка модуля из хранилища

Перед началом работы с контролем версий проекта, вы должны проверить рабочую копию.

#### Снимок экрана диалога проверки &cervisia;

Снимок экрана диалога проверки &cervisia;

### Репозиторий

Имя хранилища &CVS;, известное как ``$CVSROOT``. Если репозиторий не локальный, убедитесь что аутентификация работает, также смотрите accessing-repository.

### Модуль

Имя модуля для проверки. Если вы работаете с существующим хранилищем, вы должны получить это имя у администратора. Если репозиторий содержит файл ``$CVSROOT`/modules` вы можете получить список доступных модулей щелчком мыши на кнопке Получить список.

### Рабочий каталог

Каталог в котором модуль должен быть проверен. Обратите внимание, что начальный каталог рабочей копии всегда создаётся как каталог с именем модуля в каталоге, указанном здесь.

### Проверка изменений

Альтернативное имя каталога, в котором нужно сделать checkout модуля, т.е. загруженные файлы будут сохранены не в каталоге с именем модуля, а в указанном

### Только экспорт

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

### Главное окно

Когда вы запускаете &cervisia;, и открываете рабочую копию используя Файл Открыть песочницу... вы видите иерархическое представление текущего каталога. Файлы указанные в `.cvsignore`, не отображаются. Для каждого файла, отображается его состояние. По умолчанию это "Неизвестно", так как &cervisia; не отображает информацию пока вы не запросите её используя Обновить или Статус из меню Файл. Таким образом вы имеете минимальную функциональность даже если не имеете постоянного подключения к серверу &CVS;.

#### Снимок экрана главного окна &cervisia;

Снимок экрана главного окна &cervisia;

Команды из меню Файл обычно воздействуют только на выделенные файлы. Вы также можете выделять каталоги. Когда вы выбираете Обновить из меню Файл. &cervisia; запускает команду

    cvs update -n имена файлов

для получения информации о статусе выбранных файлов. Обратите внимание, &cervisia; проходит рекурсивно по всем подкаталогам, только если указана соответствующая опция в меню Настройки. Теперь вы видите в столбце Статус соответствующее состояние файла:

- Изменён локально - это означает, что вы изменили файл по сравнению с версией в хранилище.

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

- Удалён локально - это означает, что вы удалили файл, но он все ещё существует в хранилище Фактическое удаление происходит только после выполнения команды Передать.

- Необходимо обновление - означает, что в хранилище существует более новая версия файла, например кто-то передал свою модификацию. Обычно вы обновляете свою копию файла в рабочем каталоге из хранилища.

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

- Необходимо слияние - указывает на необходимость слияния вашей рабочей копии с версией файла в хранилище. Это обычно случается если кто-то передал в репозиторий свои изменения редактируемого вами файла. В случае конфликта (если кто-то ещё изменил некоторые из тех же строк что и вы), тогда устанавливается статус "Конфликт".

- Современный - указывает, что файл идентичен версии в хранилище.

- Конфликт - указывает, что файл всё ещё имеет маркеры конфликта. Возможно вы раньше модифицировали файл но не разрешили конфликты.

- Не в CVS - указывает, что файл не зарегистрирован в хранилище &CVS;. Если вы хотите сделать это файл доступным для других, вы должны добавить его в репозиторий. Если нет, вы должны добавить его в файл `.cvsignore`.

Теперь вы имеете представление о статусе файлов CVS, и можете сделать их обновление. Выделите несколько файлов (или начальный каталог, который соответствует все файлам и каталогам содержащимся в нём). Выберите Обновить из меню Файл . (Возможно вы уже выбрали файлы ранее). Теперь состояние некоторых файлов изменилось. Обычно файлы имеющие статус "Необходимо исправление" или "Необходимо обновление" обновляются, так что в столбце "Статус" возможны новые пункты:

- Обновлён - если файл обновлён из хранилища

- Исправлен - указывает, что сервер послал исправления для этого файла, и исправление было успешно применено. Если исправление не было успешно, из за конфликта между вашими модификациями и других разработчиков, устанавливается состояние "Конфликт"

Возможно вы уже заметили что в зависимости от состояния файла, его строка меняет свой цвет. Цвета подобраны таким образом, чтобы отразить приоритет состояния. Например файл с конфликтом отмечен красным цветом, так как вы должны решить конфликт прежде чем сможете работать с этим файлом. Чтобы получить информацию о файлах, которые имеют необычное состояние щёлкните на заголовке столбца Статус. Теперь список файлов отсортирован по состоянию, и вы имеете необходимую информацию в начале списка. Чтобы вернуться к алфавитному порядку представления файлов щёлкните по заголовку столбца Имя файла.

## Работа с файлами

Все наиболее часто используемые функциональные возможности &CVS; доступны в главном окне &cervisia;. Команды обычно воздействуют сразу на несколько файлов, а именно на выбранные в данный момент. Если выбраны и каталоги, то их интерпретация зависит от опций, расположенных в меню Настройки. Например если установлена опция Настройки Передавать и удалять рекурсивно и вы выполнили Файл Передать... и выбран каталог, то все файлы расположенные в этом каталоге и всех его подкаталогах будут переданы. Иначе будут переданы только файлы, расположенные в выбранном каталоге.

Вы можете открыть файл для редактирования двойным щелчком мыши или клавишей Enter. Это запускает текстовый редактор указанный в Настройки Настроить Cervisia... и передаёт ему имя файла как аргумент.

### Добавление файлов

Добавление файла к проекту состоит из двух шагов: Сначала файлы должны быть зарегистрированы в &CVS;. Выделите в главном окне &cervisia; все файлы которые хотите добавить. Далее выберите Файл Добавить в репозиторий. &cervisia; выполнит следующую команду

    cvs add имена файлов

Если операция завершиться успешно, в колонке статуса для добавленных файлов отобразиться "Добавлен в репозиторий"

Чтобы фактически поместить файлы в репозиторий, вы должны передать их. Эта процедура имеет существенное преимущество: вы можете передавать файлы вместе с модификациями в других частях проекта. При выполнении этого, можно видеть (как при отправке электронной почты), что все изменения часть целого.

&CVS; не предназначен для обеспечения контроля версий бинарных файлов. Например, слияние бинарных файлов не имеет смысла. Кроме того, по умолчанию &CVS; использует расширенные ключевые фразы (⪚ в строке `$ Revision: 1.6 $`) когда файл передан. В бинарных файлах такие вставки могут повредить файл и сделать его полностью непригодным. Вы должны передавать бинарные файлы (или другие файлы подобно Postscript) с использованием командной строки

    cvs add -kb имена файлов

В &cervisia;, это выполняется выбором в меню Файл Добавить как бинарный...

### Удаление файлов

Как и при добавлении, удаление файлов состоит из двух частей. С начала файлы должный быть зарегистрированы как удалённые, выберите в меню Файл Удалить из хранилища для запуска команды

    cvs remove -f имена файлов

Далее, эти изменения должны быть переданы, возможно вместе с другими модификациями проекта.

Указанная команда работает только если файл является современным. Иначе вы получите сообщение об ошибке. Если вы изменили файл по сравнению с версией в хранилище, или кто-то ещё сделал любые модификации. Вы должны будите сначала проверить их и решить, хотите ли отказаться от них.

### Добавление и удаление каталогов

Обработка каталогов существенно отличается от файлов &CVS;. Они не находятся под контролем версий, то-есть вы не можете проверить какие каталоги существовали в хранилище в некоторое время. Кроме того каталоги никогда не могут удалятся явно (ожидается удаление их непосредственно в хранилище).

Как замена, &CVS; следует соглашению, что каталог "не существует" если в версии проекта он пуст. Это может быть предписано использованием опции `-P` в командах `cvs update` и `cvs checkout`. Эта опция может быть установлена в меню Настройки Удалять пустые каталоги при обновлении.

Каталог можно добавить в репозиторий командой

    cvs add имя каталога

которая имеется и в меню Файл Добавить в репозиторий. Обратите внимание, что добавление каталогов не требует передачи впоследствии.

### Передача файлов

После внесения изменений в фалы рабочей копии, чтобы предоставить доступ к ним другим разработчикам, вы 'передаёте' их. При передаче, вы помещаете вашу версию модифицированных файлов, как новую версию в хранилище. Последующее обновление другими разработчиками, перенесёт вашу модификацию в их рабочие копии.

Чтобы передать несколько файлов, выбелите их в главном окне &cervisia; и выберите в меню Файл Передать....

#### Снимок экрана диалога передачи &cervisia;

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

    cvs commit -m сообщение имена файлов

&cervisia; предоставляет несколько способов отображения журнальной информации: Во первых, в списке файлов вы можете дважды щёлкнуть на файле или нажать Enter чтобы увидеть изменения сделанные в файле. Во вторых, предоставляется список журнальных сообщений, которые вы недавно использовали в выпадающем списке. В третьих, этот диалог интегрирован с редактором &cervisia;changelog, описанным ниже.

Наиболее частая ошибка при передаче файлов Неудачная проверка современности. Она указывает что кто-то передал свои изменения в репозиторий с момента вашего последнего обновления. Если говорить технически ваша версия `BASE` не последняя в своей ветке. В этом случае &CVS; отказывается сливать ваши модификации с хранилищем. Решение этой проблемы состоит в том, чтобы выполнить разрешение конфликтов и передать файл снова. Конечно, если вы работаете с программным проектом, это хороший метод, чтобы проверить работает ли программа после того, как вы выполнили обновление - в конце концов, могло быть и плохое взаимодействие между вашими модификациями и другими модификациями, которые разрушают код.

Другие популярные ошибки Метка Sticky 'X' для файла'X' не в ветке. Это случается, когда вы пытаетесь передать файл, который вы предварительно привели к определённой версии или метке командой

    %cvs update -r X

(которая является ⪚ использованию меню Расширенный Обновить до метки/даты...). В это случае, метка на этот файл становится липкой, т.е. дальнейшие обновления не обновляют файл до последней версии в ветке. Если вы хотите передать дальнейшие версии в ветку, вы должны предварительно обновить его до метки на ветви.

С помощью &cervisia; очень легко поддерживать файл ChangeLog, который должен соответствовать рекомендациям по кодированию GNU. Чтобы воспользоваться этой возможностью выберите в меню Файл Вставить запись в ChangeLog.... Если файл с именем `ChangeLog` уже существует к корневом каталоге вашей песочницы, он будет загружен и вы сможете его редактировать. В верхней чести этого файла автоматически будет добавлена текущая дата и ваше имя пользователя (которое должно быть определено, как указано в customize-general). По окончании щёлкните на кнопке OK, при следующем открытии диалога передачи в сообщении журнала вы увидите сообщение ChangeLog введённое раннее.

### Разрешение конфликтов

Конфликты могут произойти, когда вы сделали изменения в файле, который уже изменён другим разработчиком. Конфликт будет обнаружен &CVS;, когда вы обновляете изменённый файл. Тогда &CVS; попробует объединить модификации переданные другими разработчиками в вашу рабочую копию. Сбои слияния, если и ваши и другие модификации находятся в накладывающихся частях файла, сервер &CVS; сообщит об этой ошибке.

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

В главном окне &cervisia;, файлы с конфликтами помечены как "Конфликт" в колонке статуса и красным цветом. Для разрешения конфликта вы можете воспользоваться традиционным путём, дважды щёлкните на имени файла и отредактируйте его в текстовом редакторе. Но вы можете воспользоваться диалогом в меню Файл Разрешение... .

#### Снимок экрана диалога разрешения &cervisia;

Снимок экрана диалога разрешения &cervisia;

В верхней части диалога, вы видите вашу версию с левой стороны версию из хранилища с правой стороны. Различия между ними отмечены красным цветом. В нижней части вы видите объединённую версию, которая будет сохранена при нажатии кнопки Сохранить.

Вы можете переключаться между секциями различий нажатием кнопок << и >>. В середине нижней части диалога вы можете видеть какая секция сейчас активна. Например, `2 из 8` означает что вы во второй секции из 8 (общее количество). Теперь вы можете решать какой раздел из 2 версий вы ходите иметь в финальном файле. Нажимая A, вы принимаете версию, которую вы редактировали. Нажимая B, вы принимаете версию из хранилища.

## Получение информации о файлах

### Просмотр журнала cvs

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

    cvs log имена файлов

и будет показан диалог отражающий историю версий выбранного файла.

#### Снимок экрана диалога просмотра журнала &cervisia;

Снимок экрана диалога просмотра журнала &cervisia;

Вы можете выбрать вид истории как дерево или как список. Что вы предпочтёте, это вопрос вкуса и зависит от того, какая информация вам нужна. Дерево - это представление того что было сделано с файлом авторами в различных версиях. Как подсказки вы можете видеть журнальные сообщения. Список по своему характеру линейный - поэтому не даёт представления ветвей. С другой стороны имеет более компактное представление, а именно время каждого изменения и первой части журнального сообщения.

Для получения дополнительной информации о некоторой версии, вы можете щёлкнуть по ней в списке или в в дереве. Поля, расположенные в середине диалога, заполняться дополнительной информацией предоставляемой командой `cvs log`. Вы можете отметить две версии 'A' и 'B', которые являются корректными, если собираетесь использовать особенности предоставляемые командными кнопками. Версия 'A' может быть выбрана левой кнопкой мыши, версия 'B' - средней. В списке, вы также можете перемещаться используя клавиши стрелок. Чтобы выделить версии 'A' и 'B' используйте короткие клавиши Ctrl A и Ctrl B, соответственно.

Если вы нажимаете кнопку Аннотация, Вы увидите диалог отображающий содержимое файла из версии 'A'. Каждая строка которого предваряется информацией о предыдущем редакторе, и о его версии.

Если вы нажимаете кнопку Различия будет выполнена команда `cvs diff` и вы увидите диалог со всеми модификациями между двумя отмеченными версиями. Чтобы облегчить чтение для отображения добавленных, удалённых или изменённых строк используются различные цвета.

### Просмотр истории

Если используемый репозиторий поддерживает ведение журнала, &cervisia; может предоставлять хронологию некоторых событий таких как проверки, передачи, обновления, релизы и rtags. Выберите в меню Вид пункт История, и &cervisia; выполнит команду

    cvs history -e -a

Это загружает файл истории с сервера, то-есть списка событий для всех пользователей и всех модулей. Он может быть очень большого размера!

Теперь вы можете видеть список событий, сортированный по дате. Во втором столбце, тип события означает:

- Проверка - пользователь, указанный в столбце 'Автор' проверил модуль

- Метка - пользователь использовал команду `cvs rtag`. Примечание, использование `cvs tag` (в меню &cervisia; Расширенный Метка/Ветвь... ) не заносится в журнал истории. Это имеет исторические причины (смотрите &CVS; FAQ).

- Релиз - пользователь выпустил модуль. Обычно эта команда редко используется и не имеет большого значения.

- Обновление, Удалён - пользователь сделал модификацию в файле, который был удалён в хранилище. Как следствие файл был удалён и в его рабочей копии.

- Обновление, Скопирован - пользователь внёс модификации в файл. Новая версия которого была скопирована в репозиторий.

- Обновление, Объединён - пользователь сделал модификации в файле. Модификации в версии хранилища были объединены в его рабочую копию.

- Обновление, Конфликт - пользователь сделал модификации в файле, и был обнаружен конфликт с его собственными модификациями.

- Передача, Изменён - пользователь передал изменённый файл.

- Передача, Добавлен - пользователь добавил файл и передал его.

- Передача, Удалён - пользователь удалил файл и передал его.

#### Снимок экрана диалога истории &cervisia;

Снимок экрана диалога истории &cervisia;

Вы легко можете сортировать список и по другим критериям, нажимая на соответствующий заголовок столбца. Чтобы легко можно было разобраться в записях хронологии, некоторые опции фильтра активируются переключателями:

- Показать события передачи - показывать передачи

- Показать события проверки - показывать проверки

- Показать события меток - показывать метки

- Показать другие события - показывать события не указанные выше

- Только пользователь - показывать события, вызванные конкретным пользователем

- Соответствие имён файлов - фильтровать имена файлов регулярным выражением.

- Соответствие имён каталогов - фильтровать имена каталогов регулярным выражением.

Специальные символы используемые в регулярных выражениях

- `x*` соответствует любому количеству символов `x`.

- `x+` соответствует одному или более символу `x`.

- `x?` соответствует нулю или одному символу `x`.

- `^` соответствует началу строки.

- `$` соответствует концу строки.

- `[a-cx-z]` соответствует набору символов, ⪚ набор состоящий из a,b,c,x,y,z.

### Наблюдение различий между версиями

Есть несколько мест в &cervisia; где вы можете вызвать окно отображающее различия между версиями файла:

- В главном окне, вы можете выбрать в меню Вид Различия с хранилищем... Это основано на команде `cvs diff` и отображает различия между версией в вашей песочнице и последней обновлённой версией (также известной как `BASE`). Это особенно полезно перед передачей файла, так что вы можете найти соответствующее журнальное сообщение.

- В диалоге передачи файлов, вы можете вызвать окно различий дважды щёлкая на имени файла или нажатием Enter. Это похоже на использование Вид Различия с хранилищем... с соответствующим файлом в главном окне.

- В диалоге просмотра журнала, вы можете выбрать две версии файла и вызвать диалог показывающий различия между ними (смотрите раздел browsinglogs).

Поскольку вы, возможно ожидали, &cervisia; не блокирует вывод команды `diff` в ваш терминал, но отображает графическое представление как описано в screenshot-log.

#### Снимок экрана диалога различий &cervisia;

Снимок экрана диалога различий &cervisia;

Текст в диалоге - улучшенный вариант текста, предоставленного командой diff с опцией `-u`. Вы можете видеть различные версии в двух окнах, с упорядоченными для построчного сравнения строками. Это значить, при добавлении или удалении текста, в соответствующем окне отображаются пустые строки с маркером `+++++` в левой части. Также вы можете видеть в левом столбце номер каждой строки.

Во втором столбце правого окна, вы можете видеть тип сделанного изменения. Возможные варианты `Добавлено`, `Удалено` и `Изменено`. Соответствующие строки отмечены синим, зелёным и красным цветом. В середине диалога отображается изображение с цветными маркерами. Этим способом вы можете получить представление обо всех изменениях в файле. Вы также можете ориентироваться по изображению при использовании полос прокрутки.

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

Информацию о настройке диалога различий смотрите в customize-commands.

### Наблюдение при просмотре аннотаций файла

Командой `cvs annotate` &CVS; предлагает просмотреть, для каждой строки в файле, кто изменил её последний. Этот вид может быть полезен, чтобы узнать, кто внёс изменение в поведение программы, или кого нужно попросить о изменении или исправлении ошибки в коде.

&cervisia; не только предоставляет доступ к этой особенности, но и обогащает её информацию интерактивным образом. Вы можете увидеть аннотированное представление выбрав в меню Вид Аннотации... Другой способ состоит состоит в нажатии кнопки Аннотации в диалоге просмотра журнала. В screenshot-annotate вы можете посмотреть снимок экрана с этого диалога.

#### Снимок экрана диалога аннотаций &cervisia;

Снимок экрана диалога аннотаций &cervisia;

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

Следовательно, когда какая-то строка покажется вам странной, вы можете узнать, кто является ответственный за неё. Вы также можете узнать почему эта строка была изменена. При перемещении курсора мыши на номер версии, во подсказке можно увидеть журнальное сообщение и дату изменения.

## Расширенное использование

### Метки и ветви

Здесь мы обсуждаем только технические аспекты меток и ветвей. Если вы - только пользователь, у вас не должно возникнуть проблем. Однако если вы администратор хранилища, вы сначала должны разобраться в нетехнических проблемах, которые сопутствуют ветвлению, чтобы получить представление об отнимающее много времени и подверженное ошибкам обслуживание различных ветвей. Приложение содержит некоторые ссылки по этой теме.

Простая метка - что вы делаете при релизе, так что вы могли вернуться к этому состоянию проекта. Меткам обычно дают имена состоящие из названия проекта и номера версии. Например &cervisia; 1.0 доступен по метке `CERVISIA_1_0`. &cervisia; соблюдает строгие правила &CVS; о допустимых именах меток. Она должна начинаться с символа и может содержать символы, цифры, дефисы и подчёркивания.

Обычно, вы отмечаете целый проект (хотя &CVS; позволяет вам отмечать только подмножество). Отметьте начальный каталог в главном окне и выберите в меню Расширенный Метка/Ветвь... . Теперь введите имя метки, и нажмите Enter.

Создание ветви не намного сложнее: В диалоге метки, выберите параметр Создать ветвь с этой метки. Вы также можете удалить существующую метку: Выберите в меню Расширенный Удалить метку...

Существует несколько способов обновить проект до некоторого состояния.

- Вы можете выполнить обновление до некоторой метки. Используйте для этого меню Расширенный Обновить до метки/даты. Этаже процедура используется для обновления до ветви. Команда запущенная &cervisia;

      cvs update -r метка

- Вы можете обновить до некоторой даты. Это бывает полезно, если ошибка внесена между двумя релизами, и вы знаете приблизительное время её внесения. Вы можете перейти в некоторую дату выбрав в меню Расширенный Обновить до метки/даты и включив опцию обновить до даты. В поле ниже, вы можете указывать широкое разнообразие форматов даты. Один возможный вариант - `yyyy-mm-dd` где `yyyy` - год, `mm` - месяц (цифрами) и `dd` - день месяца. Альтернативно можно использовать некоторые английские фразы подобно `yesterday` или`2 weeks ago`. При использовании этой опции &cervisia; выполняет команду

      cvs update -D дата

- Обе опции выше делают метку или дату 'липкой'. т.е. вы не сможете передать модификации этих файлов (если это не метка ветви). Чтобы вернуться на ветвь с именем `HEAD`, используйте в меню Расширенный Обновить до HEAD Это приведёт к команде

      cvs update -A

#### Снимок экрана диалога обновления до метки &cervisia;

Снимок экрана диалога аннотаций &cervisia;

Другой аспект использования ветвления - объединение модификаций из ветки к текущей ветви. Если вы собираетесь сделать это, выберите в меню Расширенный Объединить... . Диалог, который появиться далее, предоставит вам два варианта:

Вы можете объединить все модификации сделанные в любой ветви с текущей ветвью. В этот случае отметьте параметр Слияние с ветвью и указать в поле метку, с которой вы хотите объединить. В этом случае &cervisia; выполнить команду

    cvs update -j метка ветви

Другая возможность состоит в том, что вы можете объединить только модификации, сделанные между двумя метками на ветви. Это обычно случается, когда вы объединяете модификации одной ветви к метке со стволом несколько раз. В этом случае отметьте параметр Объединить модификации и введите (в правильном порядке) две корректные метки. Это выполнить команду

    cvs update -j метка ветви1 -j метка ветви2

### Использование контрольных точек

Наблюдение - название особенности &CVS; позволяющей информировать пользователей хранилища, когда разработчик начинает редактирование файла. Для использования наблюдения необходимо, чтобы файл ``$CVSROOT`/CVSROOT/notify` был установлен корректно. Он не обсуждается здесь, если вы нуждаетесь в информации об его установке обратитесь к одной из книг, перечисленных в приложении.

Основная поддержка наблюдения - шесть пунктов меню.

Чтобы добавить наблюдение к одному или нескольким файлам, используйте меню Расширенный Установить наблюдение.... В диалоге, вы выбираете типы событий, поддерживаемые &CVS;. Например, если вы хотите получать уведомления когда файл передаётся, выберите параметр Только и Передачи. если вы хотите получать уведомления в любом случае выберите параметр Все. При принятии этого диалога будет выполнена команда

    cvs watch add -a commit имена файлов

или с подобной опцией, в зависимости от событий, которые вы хотите наблюдать.

Если вы более не интересуетесь некоторыми файлами, вы можете удалить наблюдение с них. Для этого используйте меню Расширенный Удалить наблюдение.... Далее в диалоге вы указываете те-же параметры, что и при добавлении контрольной точки. Когда вы принимаете этот диалог &cervisia; выполнить команду

    cvs watch remove имена файлов

возможно с опцией `-a` для выбранных событий.

Наконец, вы можете получить список людей, которые наблюдают несколько файлов. Выберите в меню Расширенный Показать наблюдающих. Будет использована команда

    cvs watchers имена файлов

В обычной практике использования &CVS; каждый разработчик работает в своей песочнице. Когда он начинает редактировать файл никто об этом не знает, пока он не выполнить передачу.

Для некоторых групп разработчиков, эта модель разработки является неприемлемой. Они хотят сразу знать о работающем над файлом человеке, когда он только начинает. Это может быть достигнуто следующими командами &CVS;. Когда вы начинаете редактировать файл, выберите в главном окне файл и в меню Расширенный Редактировать файлы. Это выполнить команду

    cvs edit имена файлов

Этот отошлёт уведомления всем, кто установил наблюдение на `редактирование` этого файла. Это также регистрирует вас как редактора этого файла. Вы можете просмотреть список редакторов файла используя меню Расширенный Показать редакторов . Это эквивалентно команде

    cvs editors имена файлов

Сессия редактирования автоматически закончится когда вы передадите файл. В этот момент всем, зарегистрировавшим наблюдение на этом файле, будет отослано уведомление о `Окончании редактирования фалов`. Конечно, вы можете прервать сеанс редактирования файла и вернуться к его предыдущей версии. Это делается с использованием меню Расширенный Закончить редактирование фалов . Обратите внимание, что &cervisia; не будет спрашивать подтверждения, и вся выполненная работа в этом файле с момента использования меню Расширенный Редактировать файлы, будет потеряна. При этом &cervisia; использует команду

    echo y | cvs unedit имена файлов

Пока мы рассматриваем случай, где редактирование и окончание редактирования используется разработчиками добровольно. Кроме того &CVS; поддерживает и модель с принудительным использованием этих команд. Команда, используемая для переключения в принудительную модель - `cvs watch on`, которую мы не будем рассматривать далее, потому что она используется преимущественно администраторами репозиториев. Однако, важным моментом является то, что при использовании проектом редактирования, рабочие копии доступны только для чтения. (если вы не используете уловки типа `chmod`). Только когда вы используете меню Расширенный Редактировать файлы, файл становится доступным для записи. И становится только для чтения, когда вы используете Расширенный Закончить редактирование фалов .

Интерфейс редактора &cervisia; позволяет использовать в проекте наблюдения принудительно, несколькими способами. Если вы запустили редактор с файлом только для чтения двойным щелчком мыши или использовав меню Файл Правка, вы не сможете позже сохранить внесённые изменения. Каждый раз, когда вы хотите внести изменения в файл, вы должны выполнить команду `cvs edit`, чтобы люди, наблюдающие файл получили уведомление о том, что вы работаете с файлом.

В этом случае желательно использовать опцию Настройка Выполнять cvs edit автоматически при необходимости . Теперь, каждый раз, когда вы начинаете редактирование файл двойным щелчком мыши &cervisia; выполнить команду `cvs edit` перед загрузкой этого файла в редакторе. Когда вы закончите редактирование выполните передачу фалов, и переданные файлы станут опять доступными только для чтения.

### Блокировка

Модель разработки используемая &CVS; называется не резервированными проверками. Каждый разработчик имеет свою собственную песочницу, в которой редактирует файлы, как ему необходимо.

Другие системы контроля версий подобно RCS и SourceSafe используют отличную модель. Когда разработчик хочет изменить файл, он блокирует его. Только один разработчик может блокировать файл. Когда он заканчивает модифицировать файл, блокировка снимается. С одной стороны, с такой моделью разработки, конфликты никогда не возникают. С другой стороны два разработчика не могут вносить изменения в один и тот-же файл одновременно, даже если их изменения не затрагивают друг друга. Этот может быть критичным параметром. Мы не собираемся обсуждать выгоды обоих подходов. Однако &CVS; имеет средства блокировки, это не предпочтительный способ работы с &CVS;. Вы не должны использовать такие особенности, если не уверены, что ваш координатор проекта разрешил их.

В &cervisia; вы блокируете файлы следующим образом Выберите блокируемые файлы в главном окне. В меню Расширенный Разблокировать файлы . Это запустит команду

    cvs admin -l имена файлов

Обратный эффект может быть достигнут использованием меню Расширенный Разблокировать файлы. Это запустит команду

    cvs admin -u имена файлов

## Настройка &cervisia;

&cervisia; может быть настроена различными способами по вашим потребностям и предпочтениям. Некоторые опции, которые изменяются регулярно, непосредственно доступны в меню Настройка. Другие объединены в общем диалоге, который доступен в меню Настройка Настроить Cervisia....

### Общие

### Имя пользователя для редактора файла ChangeLog

Каждый раз, когда вы используете меню Файл Вставить запись ChangeLog... , генерируется новая запись ChangeLog с вашим именем и текущей датой. Обычно, считается хорошим стилем вставлять ваше полное имя и адрес электронной почты в каждую запись ChangeLog. Здесь вы можете настроить это.

### Путь к cvs

Здесь вы можете указать имя (и путь) клиента командной строки `cvs`. По умолчанию, &cervisia;. использует программу найденную в вашем `$PATH`.

### Редактор

Здесь вы можете настроить редактор, который вызывается при двойном щелчке на имени файла в главном окне. Для запуска редактора, эта поле должно содержать имя исполняемого файла. Так что возможно использование программ подобно `gnuclient`. Вы можете также указать строку `$EDITOR` если вы определили переменную окружения `$EDITOR` указывающую на редактор открывает окно X11 непосредственно.

### Некоторые команды

### Количество строк в диалоге отличий

Для диалога различий, &cervisia; использует опцию `-U` команды `diff`. Это позволяет команде `diff` отображать только ограниченное количество строк около каждой отличной области. Здесь вы можете установить этот аргумент `-U`.

### Дополнительные опции для cvs diff

Здесь вы можете указать дополнительные параметры к команде `diff`. Часто используется опция `-b`, которая позволяет команде `diff` игнорировать изменения в количестве пустых строк.

### Табуляция в диалоге различий

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

### Внешняя оболочка для diff

Когда вы используете любую из особенностей, предоставляемых диалогом различий, подобно Вид Различия с хранилищем..., &cervisia; использует собственную оболочку для diff. Если вы предпочитаете использовать другую, подобно Kompare, TkDiff, или xxdiff, вы можете настроить это здесь.

### Автоматически выполнять Файл Статус

Если выбрана эта опция, команда Файл Статус будет выполняться при открытии песочницы. Поскольку эта команда нуждается в некотором времени и подключению к серверу для нелокальных репозиториев (делающих её непригодной при использовании а автономном режиме). Вы можете установить эту опцию отдельно для локальных и отдалённых репозиториев.

### Задержка перед отображение диалога прогресса

Фактически все команды &CVS; запускаемые в песочнице которая принадлежит определённому хранилищу, нуждаются в подключении к серверу &CVS;. Это вызывает задержки сетевого подключения или высокой загрузки сервера. По этой причини для команд, подобных Вид Различия с хранилищем... &cervisia; открывает диалог отображающий процесс выполнения команды и позволяющий прервать её. Кроме того, этот диалог используется для отображения сообщений об ошибках &CVS;. Поскольку такой диалог может сильно раздражать можно указать задержку перед его отображением. По умолчанию она равна 4 секундам. Здесь вы можете изменить это значение.

### Уровень компрессии по умолчанию

Клиент `cvs` сжимает файлы и исправления передаваемые по сети. Уровень сжатия может быть установлен опцией командной строки `-z`. Вы можете настроить &cervisia; для использования этой опции выбирая здесь уровень компрессии. Это значение используется как значение по умолчанию, дополнительно в свойствах каждого хранилища доступного в меню Репозиторий Репозитории... можно указать свой уровень компрессии.

### Внешний вид

### Разделить главное окно горизонтально

Обычно главное окно &cervisia; делиться вертикально в левой части - дерево файлов, в правой отображается вывод. Альтернативно вы можете разделить их по горизонтали.

### Шрифт для окна протокола

Этот шрифт используется в окне протокола. В этом окне отображается информация выводимая программой `cvs`.

### Шрифт для отображения аннотаций

Этот шрифт используется для отображения аннотаций.

### Шрифт для отображения различий

Этот шрифт используется в диалогах различий.

## Приложение

### Игнорируемые файлы

В главном дереве файлов &cervisia; не отображает всех файлов, фактически расположенных там. Это аналог команды `cvs` помогает избегать беспорядка, вызванного малоинтересными объектными файлами. &cervisia; пытается подражать `cvs` насколько это возможно. т.е. использует игнорируемые списки следующих источников:

- Статичный список должен включать строки, подобные `*.o` и `core`. Дополнительную информацию смотрите в документации по &CVS;.

- Файл ``$HOME`/.cvsignore`.

- Переменная окружения `$CVSIGNORE`.

- Файл `.cvsignore` в соответствующем каталоге.

`cvs` ищет дополнительные записи в файле ``$CVSROOT`/CVSROOT/cvsignore`, но это файл на сервере, и &cervisia; должен работать и автономно. Если вы работаете в группе, которая предпочитает использовать игнорируемый список на сервере, возможно неплохой идеей будет скопировать содержимое файла с сервера в файл `.cvsignore` в вашем домашнем каталоге.

### Дополнительная информация и поддержка

- &CVS; поставляется с полным набором документации в виде info-страниц, известных как "The Cederqvist". Если всё установлено корректно вы можете получить доступ к ним набрав `info:/cvs` в строке адреса kdehelp или khelpcenter. Альтернативно в &cervisia; вы можете выбрать в меню Помощь Руководство по CVS. Он-лайн версия Cederqvist доступна здесь.

  Поскольку эта книга поддерживается совместно с &CVS;, обычно это наиболее свежая. Однако мы рекомендуем рассмотреть и другую документацию по использованию &CVS;, описанную ниже.

- Karl Fogel написал превосходную книгу, Open Source Development with CVS. Приблизительно половина этой книги о процессе разработки программ с открытым исходным кодом. Другая половина - техническая документация по &CVS;. Техническая часть книги была сделана свободно-распространяемой по лицензии GPL, так что вы можете свободно получить её HTML версию. Список опечаток доступен на странице упомянутой выше.

- Выпуски &CVS; обсуждаются на специализированном списке рассылки.

- Есть группа USENET `comp.software.config-mgmt` специализированная на управлении конфигурациями вообще. &CVS; - незначительный раздел в этой группе, но это может быть интересно, чтобы обсудить достоинства и недостатки различных систем управления версиями по сравнению с &CVS;.

- И последнее, есть список рассылки &cervisia;.

### Описание команд

#### Меню Файл

Файл Открыть песочницу...

- Открывает песочницу в главном окне

Файл Недавние песочницы

- Открывает песочницы использовавшиеся недавно.

Файл Вставить запись ChangeLog...

- Открывает редактор файла ChangeLog, подготовленный для добавления новой записи о внесённых изменениях.

&Ctrl;U Файл Обновить

- Выполняет команду 'cvs update' для выбранных файлов и изменяет их статус и номер версии в списке файлов.

F5 Файл Статус

- Выполняет команду 'cvs -n update' для выбранных файлов и изменяет их статус и номер версии в списке файлов.

Файл Редактировать

- Открывает выбранный файл в вашем редакторе.

Файл Разрешение конфликтов...

- Открытие диалога для выбранного файла позволяющего вам разрешить и объединить конфликты в нём.

# Файл Передать...

- Позволяет вам передавать выбранные файлы.

+ Файл Добавить в репозиторий...

- Позволяет вам добавлять выбранные файлы в репозиторий.

Файл Добавить как бинарный...

- Позволяет вам добавлять файлы в репозиторий как бинарные (`cvs add`-kb``).

- Файл Удалить из хранилища...

- Позволяет вам удалять выбранные файлы из хранилища.

Файл Вернуть

- Отключение локальных изменений сделанных вами в выбранном файле, и возвращение его версии из хранилища (Опция `-C` команды `cvs update`).

&Ctrl;Q Файл Выход

- Выход из &cervisia;.

#### Меню Вид

Escape Вид Стоп

- Прерывает выполняющиеся подпроцессы.

&Ctrl;L Вид Просмотреть журнал...

- Просмотр дерева версий выбранного файла.

&Ctrl;A Вид Аннотации...

- Показывает аннотированное представление выбранного файла, т.е. представление где вы можете видеть кто последний создал строку или внёс изменения.

&Ctrl;D Вид Различия с хранилищем...

- Показывает различия между версией выбранного файла в песочнице и обновлённой ранее версией (BASE).

Вид Последние изменения...

- Показывает различия между версией выбранного файла и обновлённой ранее версией (BASE).

Вид История...

- Показывать историю CVS хранящуюся на сервере

Вид Развернуть дерево файлов

- Открывает все каталоги в списке файлов так, чтобы вы могли видеть все файлы и каталоги.

Вид Свернуть дерево файлов

- Закрытие всех каталогов в списке файлов.

#### Меню Расширенный

Расширенный Метка/Ветвь...

- Метка или ветвь выбранных файлов.

Расширенный Удалить метку...

- Удаление указанной метки из выбранных файлов.

Расширенный Обновить до Метки/Даты...

- Переносит выбранные файлы к данной метке или дате, делая из липкими.

Расширенный Обновить до HEAD...

- Переносит выбранный файлы к версии HEAD.

Расширенный Объединить...

- Слияние с данной ветвью или модификации между двумя метками в выбранных файлах.

Расширенный Установить наблюдение...

- Установить наблюдение событий для выбранных файлов.

Расширенный Удалить наблюдение...

- Удалить контрольную точку из набора событий выбранных файлов.

Расширенный Показать наблюдателей

- Список наблюдателей для выбранных файлов.

Расширенный Редактировать файлы

- Выполнить команду `cvs edit` для выбранных файлов.

Расширенный Закончить редактирование фалов

- Выполнить команду `cvs unedit` для выбранных файлов.

Расширенный Показать редакторов

- Выполнить команду `cvs editors` для выбранных файлов.

Расширенный Блокировать файлы

- Блокирование выбранных файлов.

Расширенный Разблокировать файлы

- Разблокирование выбранных файлов.

Расширенный Создать заплатку для хранилища...

- Создание заплатки из модификаций в вашей песочнице

#### Меню Репозиторий

Репозиторий Проверка...

- Открывает диалог, которые позволяет вам производить проверку модуля в хранилище.

Репозиторий Импорт...

- Открывает диалог, которые позволяет вам импортировать пакет в репозиторий.

Репозиторий Репозитории...

- Настроить список репозиториев, которые вы наиболее часто используете.

#### Меню Настройка

Настройка Настроить быстрые клавиши...

- Открытие диалога настройки клавиатурный сокращений.

Настройка Настроить Cervisia...

- Открытие диалога настройки &cervisia;

Настройка Создавать каталоги при обновлении

- Позволяет при обновлении создавать каталоги, не существовавшие ранее в песочнице (Опция `-d` команды `cvs update`).

Настройка Удалять пустые каталоги при обновлении

- Позволяет при обновлении удалять пустые каталоги в песочнице (Опция `-P` команды `cvs update`).

Настройка Обновлять рекурсивно

- Позволяет обновлять каталоги рекурсивно (Опция `-r` команды `cvs update`).

Настройка Передавать и удалять рекурсивно

- Позволяет выполнять передачу и удаление рекурсивно (Опция `-r` для команд `cvs add` и `cvs remove`).

Настройка Выполнять cvs edit автоматически при необходимости

- Позволяет выполнять команду `cvs edit` автоматически при редактировании файла.

#### Меню Помощь

F1 Помощь Руководство по Cervisia

- Запустить систему помощи KDE и загрузить справочное руководство по &cervisia; (этот документ)

Помощь Сообщить об ошибке...

- Открытие диалога сообщения об ошибке.

Помощь О &cervisia;

- Отобразить информацию о версии и авторах.

Помощь О KDE

- Отобразить версию KDE и базовую информацию.

Помощь Руководство по CVS

- Открыть страницу руководства по &CVS; в справочной системе KDE.

## Разработчики и лицензии

&underFDL;