<chapter id="cvs"> <title >Использование &CVS;</title> <indexterm zone="cvs" ><primary >CVS</primary ></indexterm> <indexterm zone="cvs" ><primary >контроль версий</primary ></indexterm> <sect1 id="cvs-basics"> <title >Основы &CVS;</title> <para >&CVS; — это система контроля версий, используемая большинством проектов с открытым исходным кодом, в т.ч. и &kde;. Она хранит весь исходный код в одном месте, называемом <emphasis >репозиторием</emphasis > (хранилищем). С помощью такого хранилища каждый может получить снимок исходного кода на определённый момент времени (и не обязательно на текущий). В отличии от других систем контроля версий, при работе над файлом разработчику не нужно его <emphasis >блокировать</emphasis >, что расширяет возможности параллельной разработки. </para> <para >После выполнения задачи разработчик <emphasis >загружает</emphasis > (<emphasis >commit</emphasis >) изменённые файлы в хранилище (со списком изменений). &CVS; может объединять изменения в одном файле, сделанные несколькими людьми. Конечно, может случиться так, что разработчики работали над одной и той же частью файла, что приведёт к конфликту (на практике такое случается редко и является результатом недостаточного обсуждения процесса разработки). В таком случае &CVS; отказывается принять конфликтный файл и разработчику придётся устранять конфликт самостоятельно. </para> <para >&CVS; может намного больше, например, вести несколько веток (branch) разработки (например &kde; 3.1.4 и &kde; 3.2 были разными ветками дерева разработки &kde;), перемещать изменения из одной ветки в другую, выводить различия между разными версиями файла, выводить историю изменений файла и т.д. </para> <para >&CVS; реализован как система клиент-сервер. Со стороны пользователя связь с хранилищем идёт через консольную программу &cvs;. Однако доступно также большое количество графических интерфейсов к ней, например &cervisia; (<ulink url="http://cervisia.sf.net" ></ulink >) или <application >TkCVS</application > (<ulink url="http://tkcvs.sf.net" ></ulink >). В &kdevelop; напрямую доступна лишь небольшая часть функциональности &cvs;, необходимая для каждодневной работы. </para> <para >Вам потребуется знание основ использования &CVS;, в частности, вы должны знать как загружать (checkout) проект из хранилища. Мы рекомендуем прочитать книгу <ulink url="http://cvsbook.red-bean.com/cvsbook.html" >Open Source Development With CVS</ulink >, написанную Карлом Фогелем (Karl Fogel), распространяемую бесплатно (кроме нетехнических глав). Кроме того, вы можете прочитать о &CVS; по-русски на сайте <ulink url="http://www.linux.org.ru/books/GNU/cvs_ru/" >linux.org.ru</ulink > </para> </sect1 > <!-- cvs-basics --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <sect1 id="cvs-commands"> <title >Команды &CVS; в &kdevelop;</title> <para >В обзоре файлов доступны такие пункты контекстного меню: </para> <variablelist> <varlistentry> <term >Добавить в хранилище</term> <listitem> <para >Подготавливает отмеченные файлы к передаче их в хранилище. </para> </listitem> </varlistentry> <varlistentry> <term >Удалить из хранилища</term> <listitem> <para >Подготавливает отмеченный файл к удалению из хранилища. При этом файл также удаляется на локальной файловой системе. </para> </listitem> </varlistentry> <varlistentry> <term >Обновить</term> <listitem> <para >Выполняет команду <command >cvs update</command > для объединения изменений, сделанных другими пользователями. Если вы вызываете эту команду для каталога, обновление происходит рекурсивно, если только вы не отключили это в конфигурационном файле <filename >.cvsrc</filename >. </para> </listitem> </varlistentry> <varlistentry> <term >Передать на сервер</term> <listitem> <para >Выполняет команду <command >cvs commit</command > для передачи изменений, сделанных вами в хранилище. Помните, что перед этим необходимо выполнить обновление. Иначе, если другой пользователь уже передал свои изменения до этого, может возникнуть конфликт. </para> </listitem> </varlistentry> </variablelist> <para >Все эти команды запускаются как подпроцесс &kdevelop; без дополнительных ключей или переменных окружения. Это создаёт проблемы, например, когда вы работаете через соединение &ssh;, и вам нужно ввести пароль. Это необходимо, например, при работе с <filename >sourceforge.net</filename >. Работа над этой проблемой описана в FAQ &CVS;/SSH, который можно найти в разделе документации проекта SourceForge. </para> </sect1 > <!-- cvs-basics --> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <sect1 id="cvs-behind"> <title >За кулисами</title> <sect2 id="cvs-behind-workdir"> <title >Что &CVS; записывает в рабочем каталоге</title> <para >(... в процессе написания ...) </para> </sect2 > <!-- cvs-behind-workdir --> </sect1 > <!-- cvs-behind --> </chapter > <!-- cvs -->