# Использование &CVS;

## Основы &CVS;

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

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

&CVS; может намного больше, например, вести несколько веток (branch) разработки (например &kde; 3.1.4 и &kde; 3.2 были разными ветками дерева разработки &kde;), перемещать изменения из одной ветки в другую, выводить различия между разными версиями файла, выводить историю изменений файла и т.д.

&CVS; реализован как система клиент-сервер. Со стороны пользователя связь с хранилищем идёт через консольную программу &cvs;. Однако доступно также большое количество графических интерфейсов к ней, например &cervisia; () или TkCVS (). В &kdevelop; напрямую доступна лишь небольшая часть функциональности &cvs;, необходимая для каждодневной работы.

Вам потребуется знание основ использования &CVS;, в частности, вы должны знать как загружать (checkout) проект из хранилища. Мы рекомендуем прочитать книгу Open Source Development With CVS, написанную Карлом Фогелем (Karl Fogel), распространяемую бесплатно (кроме нетехнических глав). Кроме того, вы можете прочитать о &CVS; по-русски на сайте linux.org.ru

## Команды &CVS; в &kdevelop;

В обзоре файлов доступны такие пункты контекстного меню:

Добавить в хранилище

  Подготавливает отмеченные файлы к передаче их в хранилище.

Удалить из хранилища

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

Обновить

  Выполняет команду `cvs update` для объединения изменений, сделанных другими пользователями. Если вы вызываете эту команду для каталога, обновление происходит рекурсивно, если только вы не отключили это в конфигурационном файле `.cvsrc`.

Передать на сервер

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

Все эти команды запускаются как подпроцесс &kdevelop; без дополнительных ключей или переменных окружения. Это создаёт проблемы, например, когда вы работаете через соединение &ssh;, и вам нужно ввести пароль. Это необходимо, например, при работе с `sourceforge.net`. Работа над этой проблемой описана в FAQ &CVS;/SSH, который можно найти в разделе документации проекта SourceForge.

## За кулисами

### Что &CVS; записывает в рабочем каталоге

(... в процессе написания ...)