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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 170 171 172 173 174 175 176 177 178 ... 324

-rw-r--r-- 1 neil users 109 2003-02-15 11:04 hello.c

Команда импорта в CVS (cvs import) применяется следующим образом: 

$ <b>cvs import -m&quot;Initial version of Simple Project&quot; wrox/chap9-cvs wrox start</b>

Это заклинание заставляет CVS импортировать все файлы в текущий каталог (cvs-sp) и передает системе регистрационное сообщение (log message).

Аргумент wrox/chap9-cvs информирует CVS о том, где относительно корня дерева CVS сохранять новый проект. Напоминаем, что при желании в одном репозитарии можно хранить несколько проектов. Параметр wrox — тег поставщика, применяемый для идентификации автора первоначальной версии импортируемых файлов, а start — тег версии. Теги версии можно применять для идентификации в виде группы наборов связанных файлов, создающих конкретную версию приложения. Система CVS отвечает строками

N wrox/chap9-cvs/hello.c

N wrox/chap9-cvs/Makefile

Nо conflicts created by this import

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

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

$ <b>mkdir junk</b>

$ <b>cd junk</b>

$ <b>cvs checkout wrox/chap9-cvs</b>

U wrox/chap9-cvs/Makefile

U wrox/chap9-cvs/hello.с

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

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

printf(&quot;Have a nice dayn&quot;);

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

$ <b>make</b>

сс hello.c -о hello

$ <b>./hello</b>

Hello World

Have a nice day

$

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

$ <b>cvs diff</b>

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

&gt; printf(&quot;Have a nice dayn&quot;);

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

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

$ <b>cvs commit</b>

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

cvs commit: Examining

Checking in hello.c;

/usr/local/repository/wrox/chap9-cvs/hello.c,v &lt;-- hello.c

new revision: 1.2; previous revision: 1.1

done

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

$ <b>cvs rdiff -r1.1 wrox/chap9-cvs</b>

Система 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(&quot;Hello Worldn&quot;);

+ printf(&quot;Have a nice dayn&quot;);

 exit (EXIT_SUCCESS);

}

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

$ <b>cvs update -Pd wrox/chap9-cv3</b>

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

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

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

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

1 ... 170 171 172 173 174 175 176 177 178 ... 324
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Основы программирования в Linux - Мэтью Нейл.

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