Система управления версиями CVS
25 октября 2005
Рубрика: Обзоры и мнения.
Автор: Игорь Бронников.

pic

Что такое CVS?

Вы, как разработчик, ежедневно вносите изменения и дополнения в программный продукт, причем программный код из стадии полностью рабочего и отлаженного переходит в промежуточную стадию нерабочего и незаконченного до тех пор, пока очередная задача не будет завершена. Используя CVS или другую систему контроля версий, вы в любой момент будете знать, куда и где были внесены изменения, даже если эти изменения вносили не вы. Вы всегда сможете вернуться назад и отменить любые изменения кода, вернуться к «исходникам, которые работали», после самых смелых экспериментов с кодом, на которые вы никогда не решились бы без системы контроля версий. Самое время пояснить — CVS (Concurrent Versions System) переводится как система управления параллельными версиями. Программисты, использующие CVS, не подвержены синдрому «работает — не трогай», потому что могут совершенно безболезненно ударяться в самые сложные эксперименты со своей программой, создавая «ответвления» от основного «ствола» разработки и при необходимости переключаться на нужную ветку или возвращаться к последней рабочей версии

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

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

  • Кто внес данное изменение?
  • Когда его внесли?
  • Зачем его сделали?
  • Какие еще изменения произошли в то же самое время?

При работе с проектом каждый отдельный разработчик работает только со своей копией файла, что не вызывает ошибок разделения доступа. CVS сама следит за объединением изменений.

С ЧЕМ РАБОТАЕТ CVS
CVS распознает 2 типа файлов: текстовые и бинарные (двоичные). Эти типы файлов обрабатываются по-разному. Изменения в текстовых файлах отслеживаются и запоминаются с точностью до одной строки текста, бинарные же файлы обрабатываются целиком (старый заменяется новым). К текстовым файлам относятся файлы c расширениями: .TXT, .HTML, .CSS, .PHP, .C, .CPP, и т.п. К сожалению, такие файлы, как .DOC (документы WORD), .XLS (документы EXCEL), не относятся к текстовым из-за особенностей формата этих файлов, и отслеживать изменения в них с точностью до одной строки текста не получится.

СХЕМА РАБОТЫ CVS
CVS состоит из 2-х частей – сервер и клиентский модуль.
Серверный модуль (CVSNT) обслуживает запросы клиентских модулей и поддерживает базу, содержащую все дерево каталогов с полной историей изменения файлов, и по запросу клиентского модуля выдает или обновляет нужные версии файлов. Эта база называется репозиторий (Repository).
Клиентский модуль (WinCVS) работает по следующему принципу: из репозитория сервера скачивается или обновляется (check out) в локальный рабочий каталог копии файлов. Все изменения файлов производятся в рабочем каталоге, после чего измененные файлы загружаются (check in) на сервер.

УСТАНОВКА CVS
Для получения серверного и клиентского модуля достаточно зайти на страницу http://wiht.link/CVS-resources и под заголовком «Latest Recommended Release WinCVS 2.0.2.4» (версия может отличаться) скачать инсталляционный файл по ссылке [Download Installer] ([Download «Bare»Installer] не подойдет, так как не содержит серверного компонента). Инсталляционный файл имеет размер около 3.5 Мб и содержит как серверный (SVCNT_SETUP), так и клиентский (WINCVS_SETUP) модули.

pic

И помните! ПО распространяется по лицензии GNU General Public License (GPL),
бесплатно и с открытым кодом. Наша совесть чиста!

Для установки запустите WINCVS_SETUP, после установки клиентского модуля будет запущена установка серверного (SVCNT_SETUP), где по умолчанию не выбрана установка серверного компонента. В нашем случае она нужна. Отметьте серверный компонент или выберите полную инсталляцию. Если вы все сделали правильно, установщик попросит перезагрузку компьютера. Не будем ему отказывать.

СОЗДАНИЕ РЕПОЗИТОРИЯ И ПОЛЬЗОВАТЕЛЕЙ
1.Зайдите в панель управления и откройте CVS for NT и на вкладку Repositories.
2.Здесь нужно создать репозиторий — кнопка ADD (место, где сервер будет хранить файлы и историю).
Напишем в Location: C:/Repository (не удивляйтесь, что слеш не в ту сторону. Это повелось со времен Unix).
Name поменяется автоматически.
3.Жмем ОК и на вопрос о создании отвечаем yes (репозиторий должен быть проинициализирован).

Теперь создадим пользователей.

1.Зайдите в командную строку.
2.Дайте команду

set cvsroot=:sspi:localhost:/Repository

где Repository это название созданного и проинициализированного репозитория.
3.Добавим пользователя с именем user (надеюсь, вы не закрыли окно командной строки?). Дайте команду

cvs passwd -r Administrator -a user

где Administrator это имя пользователя, под которым вы залогинены. Система попросит задать пароль для пользователя. Для начала задайте пустой пароль.

НАСТРОЙКА КЛИЕНТА WINCVS
Если вы все сделали правильно, то клиент WinCVS у вас уже установлен, и нужно его настроить.
1.Из меню программы WinCVS выбрать Admin -> Login.
2.Выйдет диалоговое окно, которое поможет нам создать переменную окружения CVSROOT, которой пользуется клиент для соединения с сервером. Справа от текстового окна кнопка, позволяющая упростить настройку. Жмем.
3.Клиент спросит, где будет находиться рабочий каталог, куда будут помещаться рабочие версии файлов. Создайте каталог, например C:\CVSHOME и укажите к нему путь.
4.В протоколах выбираем pserver
5.В Repository path пишем /Repository
6.Username user
7.Hostname localhost
8.Жмем ОК, и наша переменная CVSROOT приобретает такой вид:
:pserver;username=user;hostname=localhost:/Repository
9.Жмем ОК еще раз, спросит пароль – введем или ENTER, если пустой.
Если вы получили сообщение
***** CVS exited normally with code 0 *****
То значит, мы все сделали правильно! Поздравляю!

НАШ ПЕРВЫЙ ПРОЕКТ
Теперь давайте пройдемся по основным этапам работы. Для начала нужно занести проект в репозиторий сервера. (Ни в коем случае не копируйте ничего руками в каталоги C:\Repository и C:\CVSHOME).

Для примера создадим папку C:\TEST и создадим в ней файлы file_1.txt и file_2.txt. Это будет наш первый проект. Занесем его в репозиторий
1.Откроем WinCVS
2.Выделим папку C:\TEST
3.Из меню программы WinCVS выберем Remote -> Import module
4.Появится диалоговое окно, в котором мы указываем тип файла (TEXT или BINARY). Если в текстовых файлах есть русские символы, CVS может воспринимать их как BINARY. Мы же знаем, что там только текст, если у вас Type *.txt распознался как BINARY, смените на FORCE TEXT (Принудительно TEXT), жмем OK
5.В окне Import settings выберем CVSROOT
:pserver;username=user;hostname=localhost:/Repository
А в большом окне Enter the log message напишем
наш первый проект
6.Убедитесь, что Repository path установлен в TEST
7.Жмем OK. Если вы получили сообщение
No conflicts created by this import
***** CVS exited normally with code 0 *****
то все ОК.

Обратите внимание, что мы только добавили проект в репозиторий. Теперь нужно из репозитория занести проект в рабочий каталог. Поехали.
1.Выделяем рабочий каталог C:\CVSHOME
2.Из меню программы WinCVS выберем Remote -> Checkout module
3.В Module name пишем TEST
4.Убедитесь, что CVSROOT правильный
5.Жмем OK.

Теперь, не выходя из WinCVS, откроем рабочий каталог (C:\CVSHOME) и увидим, что там находится наш TEST, отмеченный черной галочкой (она означает, что это рабочий каталог системы CVS), а в нем два файла: file_1.txt и file_2.txt. Сверните или закройте WinCVS. Внесите изменения в файл file_1.txt (обратите внимание, что с этого момента все изменения и работа с файлами выполняется в каталоге C:\CVSHOME а не C:\TEST), после чего вернемся назад (на момент редактирования файлов WinCVS не обязательно должна быть запущена). Вы видите, что измененный файл стал красным. Для того, чтобы изменения были внесены в репозиторий на сервер, нужно его отметить и дать команду Commit (кнопка pic). Жмем. В диалоговом окне Enter the log message можно написать комментарий – что именно вы изменили. После нажатия ОК можете увидеть, что версия файла с 1.1.1.1 поменялась на 1.2

Если вы работаете не один и хотите получить из репозитория последние версии файлов, то можно воспользоваться кнопкой Update to Head (кнопкаpic).

Теперь вкратце о возможностях:

pic

Orphus system
Подписывайтесь на канал infoCOM.UZ в Telegram, чтобы первыми узнавать об ИКТ новостях Узбекистана
В Telegram
В Одноклассники
ВКонтакте