Кратчайшее введение в работу с 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 находится в вашем рабочем каталоге, но не
соответствует ни одному файлу в репозитории, и не
находится в списке файлов, которые нужно игнорировать