Рейтинговые книги
Читем онлайн Основы программирования в Linux - Нейл Мэтью

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 105 106 107 108 109 110 111 112 113 ... 200

N wrox/chap9-cvs/hello.c

N wrox/chap9-cvs/Makefile

Nо conflicts created by this import

информируя вас о том, что два файла импортированы корректно.

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

$ mkdir junk

$ cd junk

$ cvs checkout wrox/chap9-cvs

U wrox/chap9-cvs/Makefile

U wrox/chap9-cvs/hello.с

Вы указываете CVS тот же путь, что и при копировании файлов в репозитарий. Система CVS создает в текущем каталоге каталог wrox/chap9-cvs и помещает туда файлы.

Теперь вы готовы внести некоторые изменения в ваш проект. Отредактируйте файл hello.c в каталоге wrox/chap9-cvs, вставив в него строку

printf("Have a nice dayn");

Затем откомпилируйте заново и выполните программу, чтобы убедиться в том, что все в порядке:

$ make

сс hello.c -о hello

$ ./hello

Hello World

Have a nice day

$

Вы можете спросить у системы CVS о том, что изменилось в проекте. Не нужно сообщать CVS, какой именно файл вас интересует, она может работать со всем каталогом одновременно.

$ cvs diff

CVS отвечает следующими строками:

cvs diff: Diffing

Index: hello.c

========================================================

RCS file: /usr/local/repository/wrox/chap9-cvs/hello.c,v

retrieving revision 1.1.1.1

diff -r1.1.1.1 hello.c

6a7

> printf("Have a nice dayn");

Вы довольны внесенным изменением и хотите зафиксировать его в CVS.

Когда вы фиксируете изменение с помощью системы CVS, она запускает редактор, позволяющий вам ввести регистрационное сообщение. У вас есть возможность задать переменную окружения CVSEDITOR для запуска определенного редактора перед выполнением команды commit:

$ cvs commit

CVS сообщает о том, что она сохраняет:

cvs commit: Examining

Checking in hello.c;

/usr/local/repository/wrox/chap9-cvs/hello.c,v <-- hello.c

new revision: 1.2; previous revision: 1.1

done

Теперь вы можете запросить систему CVS об изменениях в проекте со времени его первого сохранения в репозитарии. Запросите набор изменений в каталоге wrox/chap9-cvs, начиная с версии 1.1 (начальная версия):

$ cvs rdiff -r1.1 wrox/chap9-cvs

Система CVS сообщает следующие подробности:

cvs rdiff: Diffing wrox/chap9-cvs

Index: wrox/chap9-cvs/hello.c

diff -с wrox/chap9-cvs/hello.с:1.1 wrox/chap9-cvs/hello.с:1.2

*** wrox/chap9-cvs/hello.с:1.1 Mon Jul 9 09:37:13 2007

--- wrox/chap9-cvs/hello.с Mon Jul 9 09:44:36 2007

************

*** 4,8 ****

--- 4,9 ---

int main() {

 printf("Hello Worldn");

+ printf("Have a nice dayn");

 exit (EXIT_SUCCESS);

}

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

$ cvs update -Pd wrox/chap9-cv3

CVS обновит файлы, извлекая из репозитария файлы, измененные другими пользователями, а не вами, и помещая их в ваш локальный каталог. Конечно, некоторые изменения могут оказаться несовместимыми с вашими, но это проблема, над которой вам придется потрудиться. Система CVS хороша, но она не умеет творить чудеса!

К этому моменту вы уже увидели, что использование CVS очень похоже на применение RCS. Но у нее есть существенное отличие, о котором мы пока не. упоминали, — способность функционировать в сети без смонтированной файловой системы.

Доступ к CVS по сети

Вы сообщили системе CVS, где находится репозитарий, применяя опцию -d в каждой команде или установив переменную окружения CVSROOT. Если вы хотите действовать через сеть, то просто используете расширенную синтаксическую запись для этого параметра. Например, во время написания книги все исходные файлы разработки GNOME (GNU Network Object Model Environment, сетевая объектная среда GNU — популярная графическая настольная система с открытым исходным кодом) были доступны в Интернете благодаря системе CVS. Вам нужно только задать месторасположение подходящего CVS-репозитария, указав некоторую сетевую информацию перед спецификатором пути к нему.

Другим примером может служить указание на CVS-репозитарий Web-стандартов консорциума W3C, значение переменной CVSROOT при этом должно быть равно :pserver:[email protected]:/sources/public. Оно информирует систему CVS о том, что для доступа к репозитарию применяется аутентификация (pserver) с паролем и что репозитарий находится на сервере по адресу dev.w3.org.

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

$ export CVSROOT=:pserver:[email protected]:/sources/public

$ cvs login

Когда появится приглашение для ввода пароля, введите anonymous.

Теперь вы готовы применять команды cvs во многом так же, как при работе с локальным каталогом, за исключением того, что следует добавлять опцию -z3 ко всем командам cvs, чтобы добиться сжатия для экономии полосы пропускания сети.

Если вы хотите получить исходные файлы HTML-валидатора W3C (системы проверки допустимости HTML-файлов), наберите приведенную далее команду:

$ cvs -z3 checkout validator

Если хотите сделать доступным в сети собственный репозитарий, необходимо запустить CVS-сервер на своей машине. Сделать это следует с помощью супердемона xinetd или inetd в зависимости от конфигурации вашей ОС Linux. Для применения хinetd отредактируйте файл /etp/xinetd.d/cvs, указав в нем местоположение CVS-репозитария, и воспользуйтесь средством настройки системы для активизации и запуска сервиса cvs. Для применения супердемона inetd просто добавьте строку в файл etc/inetd.conf и перезапустите inetd. Далее приведена необходимая строка:

2401 stream tcp nowait root /usr/bin/cvs cvs -b /usr/bin --allow-root=/usr/local/repository pserver

Она информирует inetd об автоматическом запуске CVS-сеанса для клиентов, подключающихся к порту 2401, стандартному порту CVS-сервера. Дополнительную информацию о запуске сетевых сервисов с помощью супердемона inetd см. в интерактивном справочном руководстве к inetd и inetd.conf.

Для использования системы CVS с вашим репозитарием и сетевым доступом к нему вы должны задать соответствующее значение переменной окружения CVSROOT. Например,

$ export CVSFOOT=:pserver:[email protected]:/usr/local/repository

В этом коротком разделе мы смогли дать лишь поверхностное описание функциональных возможностей системы CVS. Если вы хотите основательно познакомиться с этой системой, настоятельно рекомендуем установить локальный репозитарий для экспериментов, найти расширенную документацию по CVS и получать удовольствие! Помните, что это система с открытым кодом, поэтому, если вы столкнулись с непонятными действиями программы или (что невероятно, но возможно) думаете, что обнаружили ошибку, всегда можно получить исходный программный код и изучить его самостоятельно. Начальная страница CVS расположена по адресу http://ximbiot.com/cvs/cvshome/.

Внешние интерфейсы CVS

Для доступа к CVS-репозитариям существует множество графических внешних интерфейсов. Может быть, их лучшую коллекцию для разных операционных систем можно найти на Web-сайте http://www.wincvs.org/. Там есть клиентское программное обеспечение для ОС Windows, Macintosh и, конечно, Linux.

Клиентская часть CVS позволяет создавать репозитарий и управлять им, включая удаленный доступ к репозитариям по сети.

На рис. 9.1 показана хронология работы с нашим простым приложением, отображенная WinCVS на сетевом клиенте под управлением ОС Windows.

Рис. 9.1

Subversion

Subversion разработана как система управления версиями, представляющая собой отличную замену системы CVS в сообществе разработчиков и пользователей программного обеспечения с открытым исходным кодом. Она проектировалась как "улучшенная CVS", о чем говорится на исходной странице Subversion Web-сайта http://subversion.tigris.org/, и, следовательно, обладает большей частью функциональных возможностей системы CVS и очень похожим работающим интерфейсом.

Популярность Subversion определенно растет, особенно в среде совместно разрабатываемых проектов, в которых над созданием приложения многие программисты работают вместе в Интернете. Большинство пользователей Subversion подключаются к сетевому репозитарию, настроенному менеджерами, разрабатываемого проекта. Эта система не так широко используется для управления индивидуальными или небольшими групповыми проектами, для них система CVS все еще остается основным применяемым средством.

1 ... 105 106 107 108 109 110 111 112 113 ... 200
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Нейл Мэтью бесплатно.
Похожие на Основы программирования в Linux - Нейл Мэтью книги

Оставить комментарий