Основы программирования в Linux - Мэтью Нейл
-rw-r--r-- 1 neil users 109 2003-02-15 11:04 hello.cКоманда импорта в CVS (
cvs import$ <b>cvs import -m"Initial version of Simple Project" wrox/chap9-cvs wrox start</b>Это заклинание заставляет CVS импортировать все файлы в текущий каталог (cvs-sp) и передает системе регистрационное сообщение (log message).
Аргумент
wrox/chap9-cvswroxstartN wrox/chap9-cvs/hello.cN wrox/chap9-cvs/MakefileNо 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/MakefileU wrox/chap9-cvs/hello.сВы указываете CVS тот же путь, что и при копировании файлов в репозитарий. Система CVS создает в текущем каталоге каталог wrox/chap9-cvs и помещает туда файлы.
Теперь вы готовы внести некоторые изменения в ваш проект. Отредактируйте файл hello.c в каталоге wrox/chap9-cvs, вставив в него строку
printf("Have a nice dayn");Затем откомпилируйте заново и выполните программу, чтобы убедиться в том, что все в порядке:
$ <b>make</b>сс hello.c -о hello$ <b>./hello</b>Hello WorldHave a nice day$Вы можете спросить у системы CVS о том, что изменилось в проекте. Не нужно сообщать CVS, какой именно файл вас интересует, она может работать со всем каталогом одновременно.
$ <b>cvs diff</b>CVS отвечает следующими строками:
cvs diff: DiffingIndex: hello.c========================================================RCS file: /usr/local/repository/wrox/chap9-cvs/hello.c,vretrieving revision 1.1.1.1diff -r1.1.1.1 hello.c6a7> printf("Have a nice dayn");Вы довольны внесенным изменением и хотите зафиксировать его в CVS.
Когда вы фиксируете изменение с помощью системы CVS, она запускает редактор, позволяющий вам ввести регистрационное сообщение. У вас есть возможность задать переменную окружения
CVSEDITORcommit$ <b>cvs commit</b>CVS сообщает о том, что она сохраняет:
cvs commit: ExaminingChecking in hello.c;/usr/local/repository/wrox/chap9-cvs/hello.c,v <-- hello.cnew revision: 1.2; previous revision: 1.1doneТеперь вы можете запросить систему CVS об изменениях в проекте со времени его первого сохранения в репозитарии. Запросите набор изменений в каталоге wrox/chap9-cvs, начиная с версии 1.1 (начальная версия):
$ <b>cvs rdiff -r1.1 wrox/chap9-cvs</b>Система CVS сообщает следующие подробности:
cvs rdiff: Diffing wrox/chap9-cvsIndex: wrox/chap9-cvs/hello.cdiff -с 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$ <b>cvs update -Pd wrox/chap9-cv3</b>CVS обновит файлы, извлекая из репозитария файлы, измененные другими пользователями, а не вами, и помещая их в ваш локальный каталог. Конечно, некоторые изменения могут оказаться несовместимыми с вашими, но это проблема, над которой вам придется потрудиться. Система CVS хороша, но она не умеет творить чудеса!
К этому моменту вы уже увидели, что использование CVS очень похоже на применение RCS. Но у нее есть существенное отличие, о котором мы пока не. упоминали, — способность функционировать в сети без смонтированной файловой системы.
Вы сообщили системе CVS, где находится репозитарий, применяя опцию
-dCVSROOT