14.2 Простые примеры использования CVS contents

Подраздел


14.2 Простые примеры использования CVS

Чтобы понять как работает CVS мы пройд©м через некоторые типовые шаги. Первое, что полезно понять - CVS хранит данные в специально организованном хранилище (репозитарии). Данное обсуждение предполагает, что хранилище существует и его имя задано в переменной окружения $CVSROOT.

Положим, что вы разрабатываете программу (имя программы tc) на языке C. Заметим, что, хотя программа и является небольшой, но все-таки состоит из нескольких модулей и одного файла Makefile для построения исполняемой программы.

14.2.1 Получение исходных текстов из хранилища

Первый шаг, который вы должны сделать, - это получить исходные тексты вашей программы из хранилища и поместить их рабочую копию в вашем рабочем каталоге. Это выполняется командой
cvs checkout tc
здесь:
cvs - основная программа системы
checkout - параметр, команда системы CVS
tc - как мы помним, имя вашей программы. По этой команде будет создан новый каталог с именем tc и в него будут скопированы исходные тексты программы tc из хранилища CVS. После выполнения этой команды вы может перейти в каталог tc
cd tc
Если, далее, вы выполните команду ls, то увидите что-то похожее на нижеследующее:

$ ls

CVS Makefile backend.c driver.c frontend.c parser.c

Здесь мы видим имена исходных модулей, которые составляют программу tc и каталог с═именем CVS, который автоматически создан программой cvs во время выполнения команды checkout. Каталог необходим самой системе CVS, поэтому не стоит его удалять или модифицировать.

Далее, вы можете редактировать ваши исходные тексты, отлаживать программу tc и, вообще, делать то, что вы обычно делаете во время разработки или отладки.

После отладки и правки исходного текстa модуля backend.c вы решили поместить его обновл©нный вариант в основное хранилище. Вы может сделать это посредством команды
cvs commit backend.c
при этом будет автоматически вызван редактор текстов для того, чтобы дать вам возможность ввести комментарий по поводу изменения исходного текста. Вы можете, например, написать: "Добавлена возможность обхода ошибок". Далее, вы выходите из редактора, сохранив файл с вашим комментарием и CVS записывает все это (ваш новый вариант исходного текста и ваш комментарий) в хранилище CVS. Заметим, что поскольку вызывается редактор текста, то вводимый вами комментарий может быть весьма обширным. Например, он может состоять не из одной фразы, а из нескольких абзацев.

Имя редактора текста, который автоматически вызывает система, хранится в переменной окружения $CVSEDITOR. Если переменная $CVSEDITOR не установлена, то принимается переменная окружения $EDITOR. Если переменная $EDITOR тоже не установлена, то принимается умолчание имеющее место для вашей операционной системы.

Во время автоматического вызова редактора по команде CVS commit вы может увидеть список файлов, которые возможно были изменены. Этот список базируется на времени модификации файла. Если время модификации рабочей копии в вашем рабочем каталоге отличается от времени модификации этого же файла в хранилище CVS, то файл будет на подозрении, что он модифицирован. Однако, во время операции commit система проверит, действительно ли файл был изменен или была модифицирована лишь дата модификации файла. Если была лишь изменена дата, то время модификации файла в хранилище CVS не будет изменено.

Если комментарий короток, вы можете избежать вызова редактора текста для ввода комментария:
cvs commit -m "Добавлена возможность обхода ошибок" backend.c

14.2.2 Удаление рабочего каталога

По завершении работы с программой tc вы можете пожелать перейти к следующей работе. Тем самым вам может понадобиться удаление рабочего каталога (ведь все ваши изменения уже находятся в хранилище CVS!), чтобы не засорять ваш основной каталог.

Непосредственно перед удалением каталога полезно использовать команду release системы CVS, которая проверит состояние вашего рабочего каталога на предмет соответствия хранилищу. Ниже приводится последовательность: cd - вход из каталога tc в родительский каталог, выполнение команды release системы CVS, затем приведена диагностика времени выполнения команды.


  $ cd ..

  $ cvs release -d tc

  M driver.c

  ? tc

  You have [1] altered files in this repository.

  Are you sure you want to release (and delete) module verb"`Tc':" n

  ** Release' aborted by user choice.

Здесь:
M driver.c
означает, что данный файл был модифицирован после того, как был скопирован из хранилища CVS. Следующая строка
? tc
означает, что файл tc неизвестен системе CVS. Поскольку это готовая к исполнению программа tc, то е© нет необходимости помещать в хранилище CVS. Следовательно данное сообщение можно игнорировать. Последняя строка привед©нного примера означает, что операция удаления была отменена.

Таким образом, команда release проверяет каждый модуль в каталоге и просит пользователя подтвердить удаление модуля.

Раз мы забыли что были изменения в модуле driver.c, то полезно установить что именно изменилось, например, командой
cd tc
cvs diff driver.c
Иными словами, мы снова перешли в каталог tc, удаление которого было отменено, и выполнили команду diff системы CVS. По этой команде система сравнивает рабочую копию модуля driver.c с тем модулем, который содержится в хранилище системы. Вы обнаруживаете в ч©м разница и далее выполняете последовательность команд:


  $ cvs commit -m "Добавлены новые циклы" driver.c

  Checking in driver.c;

  /usr/local/cvsroot/tc/driver.c,v <-- driver.c

  new revision: 1.2; previous revision: 1.1

  done

  $ cd ..

  $ cvs release -d tc

  ? tc

  You have [0] altered files in this repository.

  Are you sure you want to release (and delete) module `Tc': y

После этого вы можете спокойно удалить ваш рабочий каталог.


contents Обновлено: 16.03.2015