Кратчайшее введение в работу с CVS на примере SmartCVS ====================================================== $Id: cvs-qs.txt,v 1.2 2007/05/27 14:56:39 ygreks Exp $ CVS - система хранения данных с отслеживанием и контролем изменений. Все данные хранятся на сервере(который впрочем можно настроить и на локальном компьютере). Для получения файлов с сервера используется CVS клиент. Репозиторий - место на сервере где хранятся все данные и история их изменений. Рабочая копия - локальный каталог где хранится (текущая) версия данных. Ревизия - версия файла. Commit - сохранение локальных изменений на сервере Checkout - начальное получение файлов с сервера Update - получение изменений с сервера Оригинальный клиент работает в коммандной строке. Для более полного ознакомления с CVS советую Здесь же описаны только простейшие операции. Рассмотрим работу с CVS на примере графического кроссплатформенного клиента SmartCVS При установке возможны два варианта - Professional и Foundation версии. Выбираем бесплатную - возможностей вполне хватит. ------------------ Запускаем клиент. Меню Project - Repository Profiles - Add - Enter CVS Location И вводим строку соединения. Если вы зарегистрированный девелопер в проекте spf на SF.net, то это :ext:username@spf.cvs.sourceforge.net:/cvsroot/spf Иначе (доступ только по чтению) :pserver:anonymous@spf.cvs.sourceforge.net:/cvsroot/spf Жмём Next. В поле пароля зарегистрированные участники вводят пароль, анонимные пользователи оставляют пустым. На следующем шаге выбираем имя профиля - просто название проекта в меню выбора - например SPF. По нажатию Ок проверится соединение и если нет ошибок - добавится пункт в Repository Profiles. ------------------ Далее Меню - Project - Checkout 1) Выбор repository - выбираем только что созданный профиль 2) Появится список файлов/папок на сервере. Выбираем что нас интересует - лучше от корня берём всё.. 3) Выбираем каталог на локальном компьютере куда будут закачаны все файлы - это будет рабочяя копия. 4) Checkout options ничего не меняем 5) Пропускаем 6) Подтверждаем. Ждём окончания операции. Всё - файлы на локальном компе в указанном каталоге. Теперь с ним можно работать (прямо в этом каталоге), не боясь что-то испортить, т.к. всегда можно добыть любую версию файлов с сервера. Каталоги с именем CVS в рабочей копии - служебные файлы системы. Не трогайте! ------------------ Например вы что-то отредактировали, проверили что всё работает и хотите сохранить изменения на сервере. Открываем клиент. Выбираем Project - Open - ИмяПроекта. Появится список файлов, некоторые из них (изменённые по сравнению с их состоянием на сервере) будут отмечены красным. Выделяем те файлы которые хотим отправить на сервер и нажимаем кнопку с оранжевой стрелкой :) или выбираем пункт контекстного меню Commit Changes ------------------ Если же некоторые из изменённых файлов были отредактированы ошибочно, или же вы по какой-либо иной причине не хотите сохранить эти изменения на сервере, выбираем из контекстного меню пункт Revert local changes, и выделенные файлы будут синхронизированы с текущей версией этих файлов на сервере (ваши изменения будут потеряны) ------------------ Перед тем как коммитить какой-то файл бывает полезно просмотреть что же в нём изменилось по сравнению с сервером. Для этого служит пункт контекстного меню Compare. По умолчанию используется встроенный сравнивальщик файлов. Лично я предпочитаю WinMerge , настроить внешнюю программу сравнения можно в preferences. ------------------ Есть возможность просмотреть лог изменений конкретного файла, с указнием человека внёсшего изменения, даты, и комментария. Выбираем Show Log. ------------------ Если вы хотите добавить файл на cvs - надо выбрать его и сделать Add. Появится диалог с опциями. Можно ничего не менять, но если хотите чтобы в текстовом файле автоматически делалась подстановка атрибутов в Id, Date etc (см. в заголовке этого файла), надо выбрать опцию -kkv. По-умолчанию это можно выставить в Menu-Edit-Preferences-Actions-Add После этого файл пометится как запланированный к добавлению. Чтобы окончательно его добавить - надо сделать commit. ------------------ Для того чтобы получить на локальный комп изменения сделанные другими людьми на сервере - используется действие Update. Выделите корневую папку в левой панели и нажмите на кнопку с зелёной стрелкой. Для избежания проблем лучше делать Update всегда первым действие после запуска клиента - так вы гарантируете отсутствие устаревших файлов в вашей рабочей копии. Если произошли какие-то изменения - в логе появятся сообщения : // взято из http://alexm.here.ru/cvs-ru/ `U FILE' Файл был обновлен из репозитория. Обновление производится: для файлов, существующих в репозитории, но не в вашем рабочем каталоге; для файлов, которые вы не изменяли, и для которых в репозитории существует более свежая ревизия. `P FILE' Похоже на `U', но для этого файла CVS-сервер посылает файл с исправлениями вместо целого файла. Результирующий файл оказывается тем же самым. `A FILE' Файл был добавлен в вашем рабочем каталоге, и будет помещен в репозиторий, когда вы выполните команду `commit'. Это сообщение -- напоминание о том, что файл требуется зафиксировать. `R FILE' Файл был удален из вашей личной копии исходников, и будет удален из репозитория, когда вы выполните команду `commit'. Это сообщение -- напоминание о том, что файл требуется зафиксировать. `M FILE' Файл был изменен в вашем рабочем каталоге. `M' может означать одно из двух состояний файла, над которым вы работаете: либо этот файл не менялся в репозитории, и поэтому остался неизменным в результате выполнения команды `update', либо же файл изменился как в рабочем каталоге, так и в репозитории, но слияние изменений в ваш рабочий файл прошло успешно, без конфликтов. CVS выдает некоторые сообщения, когда сливает изменения, и оставляет резервную копию рабочего файла (как он выглядел перед выполнением `update'). Точное имя этого файла печатается во время работы `update'. `C FILE' При попытке объединить изменения из репозитория в вашу рабочую копию файла был обнаружен конфликт. FILE (ваша рабочая копия) теперь является результатом попытки объединить две ревизии; неизмененная копия файла также находится в рабочем каталоге, с именем `.#FILE.REVISION', где REVISION -- это ревизия, на которой был основан измененный вами файл. `? FILE' FILE находится в вашем рабочем каталоге, но не соответствует ни одному файлу в репозитории, и не находится в списке файлов, которые нужно игнорировать