14.36 Подстановка ключевых слов contents

Подраздел


14.36 Подстановка ключевых слов

Пока вы редактируете исходные тексты внутри вашей рабочей копии модуля вы в любой момент сможете определить состояние файлов посредством команд cvs status и cvs log. Однако, вскоре после того, как вы экспортируете файлы из вашего разработческого окружения и настроек, вы обнаружите, что стало труднее определить с какой версией модуля вы работаете.

Чтобы как-то помочь идентифицировать исходные тексты, CVS позволяет использовать механизм, который называется постановка ключевых слов. Строки вида $KEYWORD$ и $KEYWORD:...$ внутри файла будут заменены строками вида $KEYWORD:VALUE$, когда вы получаете новую версию файла.

14.36.1 Список ключевых слов

Ниже привед©н список ключевых слов.

$Author$
Имя пользователя (имя для login), кто вв©л данную версию в хранилище.

$Date$
Дата и время, когда данная версия была внесена в хранилище.

$Header$
Стандартный заголовок, который содержит полное имя файла RCS, номер версии, дату, имя пользователя, состояние, кто закрыл файл (если он закрыт). Обычно файлы не будут закрыты, если вы используете CVS.

$Id$
То же самое, что $Header$ исключая то, что имя файла будет неполным.

$Name$
Имя тега, который использовался, чтобы взять этот файл (т.е. для выполнения команды checkout).

$Locker$
Имя пользователя (имя login), который закрыл файл.

$Log$
Комментарий, который использовался во время выполнения команды commit, которому предшествует стандартный заголовок. Существующие комментарии не замещаются. Вместо этого, новый комментарий вставляется после строки

% $L o g: CVS_Key.tex,v $}

Обратите внимание, в строке слово Log написано с разрядкой, чтобы CVS не пыталась подставить значение в данном месте. Каждая новая строка начинается с одной и той же последовательности, которой предшествует ключевое слово SPMquot

Например, если файл содержит


% $Log: CVS_Key.tex,v $

% Revision 1.10 1999/05/18 09:29:41 shevel

% Minor

%

% Revision 1.9 1999/05/18 09:07:21 shevel

% Minor

Дополнительные строки, которые добавляются, когда подставляется значение, $Log будут начинаться со знака процента. В противоположность прежним версиям CVS и RCS "начало комментария" из файла RCS не используется. Ключевое слово $Log очень удобно, чтобы аккумулировать протокол изменений исходного текста. Однако, в некоторых случаях это может оказаться непростым.

$RCSfile$
Имя файла RCS без имени пути (т.е. не абсолютное имя).

$Revision$
Номер версии присвоенный данному варианту.

$Source$
Абсолютное имя файла RCS.

$State$
Состояние, присвоенное данной версии. Состояние может быть присвоено командой
cvs admin -s.

14.36.2 Использование ключевых слов

Чтобы включить ключевое слово, вы просто включаете соответствующий текст. Например, вставляете строку $Id$ в ваш файл и выполняете команду commit. Система CVS автоматически выполнит соответствующую подстановку как часть выполнения commit.

Обычно, включив строку $Id$ в исходные файлы, вы получите в результате то, что подставленное значение будет попадать в сгенерированные файлы (готовые к исполнению двоичные коды). Например, если вам необходимо поддерживать исходные тексты компьютерных программ, то вы могли бы использовать какую-то переменную, которая содержала бы эту строку.

Команда ident, которая является частью системы RCS, можете быть использована, чтобы извлечь ключевые слова и их значение из файла. Это безусловно удобно для текстовых файлов, но ещ© важнее для двоичных файлов.


$ ident samp.c

samp.c:

  $Id: CVS_Key.tex,v 1.10 1999/05/18 09:29:41 shevel Exp $

$ gcc samp.c

$ ident a.out

a.out:

  $Id: CVS_Key.tex,v 1.10 1999/05/18 09:29:41 shevel Exp $

Существует другая система поддержки версий SCCS, которая имеет команду what. Команда what очень похожа на команду ident и используется для тех же целей. Во многих местах нет системы RCS, но есть система SCCS. Поскольку what ищет символы SPMquot@(#)", то легко использовать ключевые слова, которые распознаются обеими системами. Просто используйте ключевые слова RCS вместе с "магическими" фразами SCCS, как, например, показано ниже:
static char *id="(#) $Id: ab.c,v 1.5 1993/10/19 14:57:32 ceder Exp $";

14.36.3 Обход подстановок

Механизм подстановки ключевых слов не всегда удобен. Так, если вы желаете, чтобы в тексте появилась строка литерально совпадающая с $A u th o r$, без того чтобы CVS заменила е© на что-то вроде SPMquot Author: shevel". К сожалению нет возможности селективно отключить часть подстановок. Вы можете отключить только все подстановки сразу, используя параметр -ko.

Во многих случаях вы можете избежать использования ключевого слова в исходном тексте, даже если оно должно появиться в финальном варианте текста. Например, исходный вид ключевого слова $Author$ в данном тексте таков SPMquot$Author$".

14.36.4 Режимы подстановки

Для каждого файла имеется умалчиваемый режим подстановки. То же самое верно и для копии файла в рабочем каталоге. Первое устанавливается посредством параметра -k в командах cvs add и cvs admin. Последняя устанавливается посредством параметров -k или -A в командах cvs checkout или cvs update. Команда cvs diff также имеет команду -k.

Имеются следующие режимы подстановки:

-kkv
Генерировать подстановку с использованием форм по умолчанию, т.е. SPMquot Revision: 1.10" для ключевого слова Revision.

-kkvl
Почти то же, что -kkv, но будет добавляться имя того, что закрыл файл, если файл закрыт. Обычно такой режим не используется с CVS.

-kk
Генерировать только имена ключевых слов, опуская их значения. Например, для ключевого слова Revision будет сгенерировано $Revision$ вместо SPMquot Revision: 1.10". Эта возможность полезна, когда необходимо сравнить две версии одного файла, поскольку это позволит исключить влияние различия в значениях ключевых слов.

-ko
Генерировать старую ключевую строку, представленную в рабочем файле непосредственно перед помещением файла в хранилище. Например, для ключевого слова Revision будет сгенерировано $Revision: 1.1 $ вместо SPMquot Revision: 1.10", т.к. будет использовано значеное при котором файл был помещ©н в хранилище.

-kb
То же что -ko, но для некоторых операционных систем (не типа Unix/Linux) может отличаться от -ko.

-kv
Генерировать только значения ключевых слов. Например, для ключевого слова Revision генерируется строка 1.9 вместо $Revision: 1.9$.

Следует помнить, что этот параметр не может быть корректно использован при экспорте двоичных файлов.

14.36.5 Проблемы с ключевым словом Log

Ключевое слово $Log$ является до некоторой степени противоречивым. Информация об истории изменения вашего файла всегда доступна, даже если вы не используете ключегого слова $Log$ - достаточно использовать команду
cvs log.

Более серь©зная проблема с данным ключевым словом состоит в том, что CVS не слишком успешно может управляться со значениями этого ключевого слова, например, когда вы пытаетесь объединить боковую ветвь и основной ствол разработки. Частым результатом могут оказаться сообщения о конфликтах.

Чтобы избежать проблем, лучше воздержаться от использования ключевого слова $Log$, елси это не является абсолютно необходимым.


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