Номера ревизий живут своей собственной жизнью. Они могут совершенно никак не соотноситься с номером версии вашего программного продукта. В зависимости от того, как вы используете CVS, номера ревизий могут измениться несколько раз между двумя выпусками продукта. Например, файлы с исходными текстами RCS 5.6 имеют такие номера ревизий:
ci.c 5.21 co.c 5.9 ident.c 5.3 rcs.c 5.12 rcsbase.h 5.11 rcsdiff.c 5.10 rcsedit.c 5.11 rcsfcmp.c 5.9 rcsgen.c 5.10 rcslex.c 5.11 rcsmap.c 5.2 rcsutil.c 5.10
Вы можете использовать команду tag
, чтобы задать буквенное
имя определённой ревизии файла. Вы можете использовать ключ
командной строки `-v' команды status
, чтобы увидеть
все метки, которые имеет файл, а также какие номера ревизий они
представляют. Имена меток должны начинаться с буквы и могут
содержать буквы, цифры и знаки `-' и `_'. Два имени
меток BASE
и HEAD
зарезервированы для использования
в CVS. Предполагается, что будущие зарезервированные имена
будут иметь специальный вид, например, начинаться с символа
`.', чтобы избежать конфликтов с действительными именами
меток.
Вы захотите выбрать какое-либо соглашение об именах меток,
основываясь, например, на имени программы и номере её версии.
Например, можно взять имя программы, за которым следует номер
версии, в котором символ `.' заменён на `-', так что
CVS 1.9 будет помечен как cvs1-9
. Если вы выберете
стабильные правила именования, вам не придётся постоянно
угадывать, называется ли метка cvs-1-9
, cvs1_9
или
как-то ещё. Вы можете даже принудительно задать эти правила
именования в файле `taginfo' (see section Настройка журналирования).
В нижеследующем примере показано, как добавить метку к файлу. Команды должны выполняться внутри вашего рабочего каталога, то есть там, где находится файл `backend.c'.
$ cvs tag rel-0-4 backend.c T backend.c $ cvs status -v backend.c =================================================================== File: backend.c Status: Up-to-date Version: 1.4 Tue Dec 1 14:39:01 1992 RCS Version: 1.4 /u/cvsroot/yoyodyne/tc/backend.c,v Sticky Tag: (none) Sticky Date: (none) Sticky Options: (none) Existing Tags: rel-0-4 (revision: 1.4)
Полный синтаксис команды cvs tag
, включая разнообразные
ключи командной строки, описан в section Краткий справочник по командам CVS.
Редко требуется помечать одиночные файлы. Гораздо чаще нужно пометить все файлы, составляющие модуль, в стратегической точке цикла разработки, например, когда выпущена новая версия.
$ cvs tag rel-1-0 . cvs tag: Tagging . T Makefile T backend.c T driver.c T frontend.c T parser.c
(Если вы дадите CVS каталог в качестве параметра командной строки, она обычно оперирует над всеми файлами в этом каталоге и, рекурсивно, ко всем подкаталогам, которые тот содержит. See section Рекурсивное поведение.)
Команда checkout
имеет ключ командной строки `-r',
позволяющий извлечь определённую ревизию модуля. Этот флаг
упрощает извлечение исходного текста, из которого сделана версия
1.0 модуля `tc' в когда-нибудь в будущем.
$ cvs checkout -r rel-1-0 tc
Это полезно, например, если кто-то заявляет, что в той версии была ошибка, но вы не можете найти её в текущей рабочей копии.
Вы можете также извлечь модуль по состоянию на любую дату.
See section Ключи команды checkout. Задав команде checkout
ключ командной строки `-r', следует остерегаться липких
меток; see section Липкие метки.
Когда вы помечаете более одного файла, вы можете думать о метке как о кривой, проведенной по таблице имен файлов и их номеров ревизий. Скажем, у нас есть пять файлов со следующими ревизиями:
file1 file2 file3 file4 file5 1.1 1.1 1.1 1.1 /--1.1* <-*- TAG 1.2*- 1.2 1.2 -1.2*- 1.3 \- 1.3*- 1.3 / 1.3 1.4 \ 1.4 / 1.4 \-1.5*- 1.5 1.6
Когда-то в прошлом, ревизии, отмеченные звездочками, были помечены. Вы можете думать о метке, как о ручке, приделанной к кривой, нарисованной на помеченных ревизиях. Когда вы тянете за ручку, вы получаете все помеченные ревизии. Еще одним способом представления является прямая линия, вдоль которой вы смотрите на набор файлов, и вдоль которой выровнены помеченные ревизии, например:
file1 file2 file3 file4 file5 1.1 1.2 1.1 1.3 _ 1.1 1.2 1.4 1.1 / 1.2*----1.3*----1.5*----1.2*----1.1 (--- <--- Look here 1.3 1.6 1.3 \_ 1.4 1.4 1.5
Go to the first, previous, next, last section, table of contents.