Алексей Махоткин

домашняя страница

CVS — Система Управления Параллельными Версиями

Go to the first, previous, next, last section, table of contents.


Пример использования команды commit

Помещение изменений на ветку

Вы можете зафиксировать изменения в ревизию, находящуюся на ветке (в её номере четное количество точек) с помощью ключа `-r’. Для того, чтобы создать ревизию на ветке, используйте ключ `-b’ команд rtag и tag (see section Создание ветвей и слияние). Затем используйте checkout или update, чтобы ваши исходные тексты стали основаны на этой свежесозданной ветке. Начиная с этого момента все изменения в этом рабочем каталоге автоматически добавляются в ревизию на ветке, никак не мешая разработке в основном стволе. Например, если вам потребовалось создать исправление к версии 1.2 вашего продукта, несмотря на то, что уже разрабатывается версия 2.0, вы можете:

$ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
$ cvs checkout -r FCS1_2_Patch product_module
$ cd product_module
[[ hack away ]]
$ cvs commit

Все это будет работать автоматически, потому что ключ `-r’ является липким.

Создание ветки после редактирования

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

[[ hacked sources are present ]]
$ cvs tag -b EXPR1
$ cvs update -r EXPR1
$ cvs commit

После команды update ключ `-r EXPR1’ прилипнет ко всем файлам. Заметьте, что ваши изменения в файлах никогда не будут удалены командой update. Команда commit автоматически поместит изменения на правильную ветку, потому что ключ `-r’ является липким. Вы также можете сделать так:

[[ hacked sources are present ]]
$ cvs tag -b EXPR1
$ cvs commit -r EXPR1

но в этом случае только те файлы, которые вы изменили, будут иметь прилепленный флаг `-r EXPR1’. Если вы поредактируете еще какие-либо файлы и зафиксируете их без указания флага `-r EXPR1’, то эти файлы могут случайно оказаться в главном стволе.

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

$ cvs checkout -r EXPR1 whatever_module


Go to the first, previous, next, last section, table of contents.

Comments