-rw-r--r-- 1 neil users 68 2003-02-15 11:07 Makefile
-rw-r--r-- 1 neil users 109 2003-02-15 11:04 hello.c
Команда импорта в CVS (cvs import) применяется следующим образом:
$ cvs import -m"Initial version of Simple Project" wrox/chap9-cvs wrox start
Это заклинание заставляет 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 и вернуть в него файлы, чтобы убедиться в том, что все нормально:
$ 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 day\n");
Затем откомпилируйте заново и выполните программу, чтобы убедиться в том, что все в порядке:
$ 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 day\n");
Вы довольны внесенным изменением и хотите зафиксировать его в 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 World\n");
+ printf("Have a nice day\n");
exit (EXIT_SUCCESS);
}
Предположим, что у вас есть копия, извлеченная из системы CVS в локальный каталог на время, и вы хотите обновить файлы в вашем локальном каталоге, которые корректировались другими пользователями, а вы сами их не редактировали. CVS может сделать это для вас, применив команду update. Перейдите на верхний уровень пути, в данном случае в каталог, содержащий каталог wrox, и выполните следующую команду: