Документация по ОС FreeBSD Пятница, 26.04.2024, 05:04
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » cvs

Настройка и использование CVS-репозитория для разработки приложений
CVS (concurrent versioning system, система контроля версий) является одним из удобнейших инструментов разработчика программных продуктов. Это могут сказать как программисты пользующиеся этим инструментом, так и знающие о нем понаслышке, и даже рядовые пользователи Unix-подобных систем, поскольку именно в Unix-подобных ОС система CVS получила самое широкое распространение.
 
Одним из наиболее частых заблуждений является то, что для использования CVS необходим так называемый "сервер" CVS. На самом деле, хотя CVS может работать и в режиме сервера ("pserver", "kserver"), наиболее часто CVS используются с локальным репозиторием, или же репозиторием на удаленном сервере с доступом с помощью клиента SSH. Одной из причин по которой CVS редко используется в режиме "pserver" - это сниженная безопасность такого репозитория, поскольку и имена пользователей и пароли передаются в plain text с тривиальным шифрованием, которое способно обезопасить ваши учетные данные лишь от беглого взгляда соседа-злоумышленника. Режим "kserver" имеет более сложную систему авторизации.
 
Для начала работы с CVS вам необходимо создать репозиторий (repository) - хранилище ваших будущих проектов. Нужно понимать, что то что называется хитрым и непонятным словом "репозиторий" - ничто иное как просто директория на локальном или удаленном компьютере.
 
Итак, приступим к созданию CVS-репозитория.
 
Настройка локального репозитория
 
Если вы планируете использовать этот репозиторий единолично, достаточно будет создать в своей домашней директории папку (к примеру, пусть это будет папка .cvs):
 
        [vvp@vvp]$ mkdir ~/.cvs
 
Директория создана. Для того чтобы сделать ее репозиторием, необходимо создать в ней субдиректорию CVSROOT:
 
        [vvp@vvp]$ mkdir ~/.cvs/CVSROOT
 
Обобщая вышесказанное: в корневом каталоге каждого репозитория должна быть директория CVSROOT которая хранит специальные служебные файлы программы CVS.
 
Теперь, я думаю, вам захочется создать в вашем новом репозитории какой-нибудь проект. Не спешите - сначала (конечно для удобства пользования) стоит задать несколько переменных окружения:
 
1) CVSROOT=~/.cvs - указывает на корень репозитория;
 
2) CVSEDITOR=vi (ваш любимый текстовый редактор) - редактор который
   будет использоваться для редактирования заметок при сохранении изменений проекта в репозиторий.
 
Итак:
 
        [vvp@vvp]$ export CVSROOT=~/.cvs
        [vvp@vvp]$ export CVSEDITOR=vi
 
Настройка удаленного репозитория
 
Допустим, ваш основной репозиторий находится в домашней директории в каталоге .cvs на машине vvp. Вы на своей машине vvp-home хотите настроить CVS так чтобы он использовал ваш основной репозиторий.
 
Чтобы избежать излишней мороки с паролями я пользуюсь авторизацией с помощью ключей. Для настройки такой авторизации вам нужно:
 
1) сгенерировать ключ;
2) указать этот ключ в списке авторизируемых на удаленной машине.
 
Последовательность действий будет такова:
 
        [vvp@vvp-home]$ ssh-keygen -t rsa
        Generating public/private rsa key pair.
        Enter file in which to save the key (/home/vvp/.ssh/id_rsa):
        Enter passphrase (empty for no passphrase):
        Enter same passphrase again:
        Your identification has been saved in /home/vvp/.ssh/id_rsa.
        Your public key has been saved in /home/vvp/.ssh/id_rsa.pub.
        The key fingerprint is:
        xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx vvp@vvp-home.dgs.ru
 
Если вы уверены, что к вашему аккаунту больше никто не имеет доступа, можно оставить passphrase пустой, что существенно упрощает жизнь.
 
Сгенерировав ключи, нужно один из них (публичный) поместить в файл authorized_keys расположенном в папке .ssh вашей домашней директории на удаленной машине. Это можно сделать множеством способов. К примеру так:
 
        [vvp@vvp-home]$ cd ~/.ssh
        [vvp@vvp-home]$ sftp vvp@vvp
        Connecting to vvp...
        Password:
        sftp> cd .ssh
        sftp> ls
        .
        ..
        id_rsa
        id_rsa.pub
        known_hosts
        sftp> lls
        authorized_keys id_rsa          id_rsa.pub      known_hosts
        sftp> put id_rsa.pub authorized_keys
        sftp> ls
        .
        ..
        authorized_keys
        id_rsa
        id_rsa.pub
        known_hosts
        sftp> quit
        [vvp@vvp-home]$ ssh vvp
 
Если после этого удаленный хост не стал спрашивать у вас пароль, а просто пустил вас, значит все прошло удачно, и пришло время настроить собственно CVS. Указываем: export CVSROOT=:ext:vvp@vvp:/home/vvp/.cvs - ext в спецификации пути к репозиторию указывает что для входа на удаленную машину будет использована внешняя программа (в нашем случае это будет ssh). Для указания какую именно программу необходимо использовать служит переменная окружения CVS_RSH. Итак, export CVS_RSH=ssh.
 
Использование репозитория, или курс молодого бойца
 
Репозиторий настроен. Дело осталось за малым - создать проект. Для этого во-первых нужно перейти в каталог который впоследствии станет вашим рабочим каталогом. Во-вторых необходимо выполнить последовательность команд:
 
        [vvp@vvp]$ cvs checkout -l .
        cvs checkout: Updating .
 
Затем создаем рабочую папку проекта:
 
        [vvp@vvp]$ mkdir hiworld
 
И добавляем ее в репозиторий:
 
        [vvp@vvp]$ cvs add hiworld
        Directory /home/vvp/.cvs/hiworld added to the repository
 
Проект готов! Вы можете добавлять в него новые файлы командой cvs add (например: cvs add hiworld/hiworld.c). Запомните, что файлы готового
проекта НЕ добавляются в репозиторий немедленно. Почти все изменения в
готовом проекте вступают в силу после команды сохранения изменений в
репозиторий (cvs commit).
 
Работая с cvs не забывайте, что вы должны находиться в корневом каталоге
локального дерева исходников (в вашем "рабочем" каталоге).
 
Итак:
 
        [vvp@vvp]$ pwd
        /home/vvp/work
        [vvp@vvp]$ ls
        CVS/ hiworld/
        [vvp@vvp]$ touch hiworld/hiworld.c
        [vvp@vvp]$ cvs add hiworld/hiworld.c
        cvs add: scheduling file `hiworld/hiworld.c' for addition
        cvs add: use 'cvs commit' to add this file permanently
        [vvp@vvp]$ cvs commit hiworld
 
 
Далее вам предлагается ввести заметки о изменениях внесенных в проект в
текстовом редакторе. Строки начинающиеся с CVS: будут проигнорированы.
Введя ваш комментарий и сохранив файл, выходим из редактора.
 
        RCS file: /home/vvp/.cvs/hiworld/hiworld.c,v
        done
        Checking in hiworld/hiworld.c;
        /home/vvp/.cvs/hiworld/hiworld.c,v  <--  hiworld.c
        initial revision: 1.1
        done
 
 
В нашем дереве исходных кодов появился еще один файл с номером ревизии 1.1. Номер ревизии может используется для последующего отката изменений сделанных в файле. Теперь изменим файл hiworld.c:
 
        ----------------------------
        #include <stdio.h>
 
        int main() {
            printf("Hello, world.");
            return 0;
        }
        ----------------------------
 
Проверив, компилируется ли код и работает ли получившаяся программа так как предполагалось, мы решаем что нас все устраивает и стоит сохранить текущее состояние программы в репозитории:
 
[vvp@vvp]$ cvs commit hiworld.c (или просто, cvs commit, если мы хотим сохранить изменения сделанные во всех файлах всех субдиректорий текущей директории)
 
Вам опять будет предложено ввести заметки о сохраняемых изменениях.
Отредактировав и сохранив комментарий, выходим.
 
        Checking in hiworld.c;
        /home/vvp/.cvs/hiworld/hiworld.c,v  <--  hiworld.c
        new revision: 1.2; previous revision: 1.1
        done
 
Итак, наш файл был сохранен с номером ревизии 1.2. Впоследствии можно будет откатить любой файл проекта, или весь проект к необходимой точке ревизии.
 
Мы рассмотрели создание репозитория CVS и начало работы с ним. Для более подробного описания работы с CVS вы можете обратиться к многочисленной документации в Интернет. В частности полное руководство по работе с CVS находится по адресу http://alexm.here.ru/cvs-ru/html_chapter/cvs-ru_toc.html
 
 
Владимир В. Павлюк
Категория: cvs | Добавил: oleg (12.11.2007)
Просмотров: 2027 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024