GET(1) GET(1)
НАЗВАНИЕ
get - извлечение версии из SCCS-файла
СИНТАКСИС
get [-rс_идентификатор] [-cкон_время] [-iсписок] [-xсписок] [-k]
[-e] [-l[p]] [-p] [-m] [-n] [-s] [-b] [-g] [-t] [-wтекст]
[-aпорядковый_номер] файл ...
ОПИСАНИЕ
Команда get генерирует текстовый файл из указанных
SCCS-файлов в соответствии с опциями. Опции могут зада-
ваться в любом порядке и относятся ко всем указанным
SCCS-файлам. Если указано имя каталога, get обрабатыва-
ет все файлы в этом каталоге, начинающиеся с s.; файлы,
к которым нет доступа на чтение, игнорируются без до-
полнительных сообщений. Если указано имя -, происходит
чтение со стандартного ввода; каждая строка при этом
трактуется, как имя SCCS-файла, подлежащего обработке.
Файлы, не начинающиеся с s., и файлы, к которым нет
доступа на чтение, также игнорируются без дополнитель-
ных сообщений.
Сгенерированный текст обычно записывается в так называ-
емый g-файл. Имя g-файла получается путем удаления на-
чальных s. из имени SCCS-файла (см. ниже).
Каждая опция об ясняется ниже для одного обрабатываемо-
го файла; при нескольких файлах она применяется к каж-
дому из них.
-rс_идентификатор
Извлечь из SCCS-файла версию по указанному с_иден-
тификатору (SID, SCCS IDentification string). Таб-
лица 1 (ниже) показывает для наиболее распростра-
ненных случаев, как зависит извлекаемая версия от
указанного с_идентификатора, а также каким будет
с_идентификатор новой версии после создания коман-
дой delta(1) (если в get использована опция -e).
-cкон_время
Кон_время имеет формат:
гг[мм[дд[чч[мм[сс]]]]]
Не включать в генерируемый файл версии SCCS-файла,
которые созданы после указанного кон_времени. Опу-
щенные цифры по умолчанию имеют максимально воз-
можные значения, например -c7502 эквивалентно
-c750228235959. Произвольное число любых нецифро-
вых символов может разделять пары цифр, например
можно задать кон_время в виде "-c77/2/2 9:22:25".
Это позволяет использовать ключевые слова %E% и
%U% (см. ниже) для вложенных get, например, в се-
ансе работы с командой cu(1C):
~!get "-c%E% %U%" s.file
-e Показывает, что команда get делается для редакти-
рования или последующего добавления версии в
SCCS-файл с помощью delta(1). Если для какой-либо
версии в SCCS-файле сделан get, последующие версии
с тем же с_идентификатором отвергаются до тех пор,
пока не будет выполнена команда delta [или в
SCCS-файле не будет установлен флаг j, см. ad-
min(1)]. Допускается использование команды get -e
одновременно для разных с_идентификаторов.
Если сгенерированный командой get с опцией -e
g-файл случайно испорчен, он может быть перегене-
рирован командой get с опцией -k вместо -e.
Ограничение прав доступа к версиям SCCS-файла ор-
ганизуется с помощью запоминаемого в файле макси-
мального и минимального номера версии, доступной
для редактирования, и списка пользователей, кото-
рые могут редактировать версии [см. admin(1)]. При
использовании опции -e все эти права проверяются.
-b Используется вместе в опцией -e для указания, что
новая версия должна начинать ответвление, как по-
казано в таблице 1. Опция -b игнорируется, если в
SCCS-файле отсутствует флаг b [см. admin(1)] или
извлекаемая версия не является терминальной (то
есть у нее есть преемники в дереве версий
SCCS-файла). Для нетерминальных версий всегда бу-
дет строиться ответвление.
-iсписок
Список версий, которые должны быть включены при
генерации файла. Список имеет следующий синтаксис:
<список> ::= <элемент> | <список>,<элемент>
<элемент> ::= СИД | СИД-СИД
где СИД - сокращение от с_идентификатор - может
иметь любой формат, упомянутый в колонке "Указан-
ный СИД" таблицы 1. Интерпретация значений показа-
на в колонке "Извлеченный СИД" таблицы 1.
-xсписок
Список версий, которые не должны быть включены при
генерации файла. Формат списка см. в описании оп-
ции -i.
-k Подавить при генерации подстановку значений вместо
ключевых слов (см. ниже). Опция -k подразумевается
опцией -e.
-l[p] Выдать сведения о версиях в l-файл. Если исполь-
зуется опция -lp, l-файл не создается, все сведе-
ния пишутся на стандартный вывод. Формат l-файла
описан ниже.
-p Текст, извлеченный из SCCS-файла, пишется на стан-
дартный вывод. G-файл не создается. Все то, что
обычно пишется на стандартный вывод, при этом, ес-
ли указана опция -s, не выводится никуда (исчеза-
ет), а если опция -s опущена, переадресуется в
стандартный протокол.
-s Подавить выдачу на стандартный вывод. Выдача в
стандартный протокол (в том числе сообщения о фа-
тальных ошибках) при этом не подавляется.
-m Перед каждой строкой, извлеченной из SCCS-файла,
помещается с_идентификатор версии, в которой она
появилась, в следующем формате:
с_идентификатор табуляция строка
-n Перед каждой строкой, извлеченной из SCCS-файла,
помещается значение ключевого слова %M% (см. ни-
же) в соответствии с форматом:
%M% табуляция строка
Если опции -m и -n используются одновременно, фор-
мат будет таким:
%M% табуляция с_идентификатор табуляция строка
-g Подавить генерацию g-файла. Эта опция используется
для генерации l-файла или для проверки существова-
ния конкретного с_идентификатора.
-t Получить доступ к самому последнему (по времени)
состоянию указанной версии (например -r1) или вер-
сии и уровню (например -r1.2).
-wтекст
Подставить текст вместо всех вхождений %W% в изв-
лекаемый файл.
-aпорядковый_номер
Порядковый номер версии SCCS-файла, которая должна
быть извлечена (см. sccsfile(4)). Эта опция ис-
пользуется командой comb(1), пользователям ее при-
менять не рекомендуется. Если указаны одновременно
опции -r и -a, принимается опция -a. Необходимо
соблюдать осторожность при одновременном использо-
вании опций -a и -e, так как с_идентификатор соз-
даваемой версии может оказаться не тем, который
ожидается. Для управления с_идентификатором соз-
даваемой версии можно использовать одновременно
опции -a, -e и -r.
Для каждого обрабатываемого файла команда get выводит
на стандартный вывод с_идентификатор и количество
строк, извлеченных из SCCS-файла. Если используется оп-
ция -e, вслед за с_идентификатором, к которому получен
доступ, следует вновь созданный с_идентификатор. Если в
команде указано более одного файла, указан каталог или
стандартный ввод, перед обработкой каждого файла выво-
дится его имя с предшествующим переводом строки. Если
используется опция -i, выводятся включаемые версии, за
которыми следует слово Included. Если используется оп-
ция -x, выводятся исключаемые версии, за которыми сле-
дует слово Excluded.
Таблица 1. Определение с_идентификатора (СИД)
Указанный Опция Дополнительные Извлеченный СИД создаваемой
СИД* -b**** условия СИД версии
<пусто>***** нет R по умолч.=mR mR.mL mR.(mL+1)
<пусто>***** да R по умолч.=mR mR.mL mR.mL.(mB+1).1
R нет R > mR mR.mL R.1***
R нет R = mR mR.mL mR.(mL+1)
R да R > mR mR.mL mR.mL.(mB+1).1
R да R = mR mR.mL mR.mL.(mB+1).1
R < mR и
R - R не существует hR.mL** hR.mL.(mB+1).1
R < mR и
R - R существует R.mL R.mL.(mB+1).1
R.L нет L = mL R.L R.(L+1)
R.L да L = mL R.L R.L.(mB+1).1
R.L - L < mL R.L R.L.(mB+1).1
R.L.B нет B = mB R.L.B.mS R.L.B.(mS+1)
R.L.B да B = mB R.L.B.mS R.L.(mB+1).1
R.L.B.S нет B = mB R.L.B.S R.L.B.(S+1)
R.L.B.S да B = mB R.L.B.S R.L.(mB+1).1
R.L.B.S - B < mB R.L.B.S R.L.(mB+1).1
* R, L, B, и S - это соответствующие компоненты с_и-
дентификатора: выпуск (release), уровень (level),
ветвь (branch), модификация (sequence); m означает
максимум. Таким образом, например, R.mL означает
максимальный номер уровня в версии R; R.L.(mB+1).1
означает первый номер новой ветви (то есть макси-
мальный номер ветви плюс 1) уровня L версии R. При
указании с_идентификатора в виде R.L, R.L.B или
R.L.B.S каждый из указанных компонентов должен су-
ществовать.
** hR - это максимальная существующая версия, мень-
шая, чем указанная несуществующая версия R.
*** Используется для создания первой версии нового вы-
пуска.
**** Опция -b работает, только если в SCCS-файле при-
сутствует флаг b [см. admin(1)]. Если в колонке
указан -, то значение может быть любым.
***** Применимо, только если флаг d (с_идентификатор по
умолчанию) в файле не установлен. Если флаг d ус-
тановлен, используется его значение, как если бы
оно было указано в команде. Тем самым применяются
другие строки таблицы 1.
Идентифицирующие ключевые слова
Идентифицирующая информация вставляется в извлекаемый
текст вместо идентифицирующих ключевых слов. В текстах,
сохраняемых в SCCS-файлах, могут использоваться следую-
щие ключевые слова:
%M% Имя модуля: либо значение флага m [см. admin(1)],
либо, если флаг m отсутствует, простое имя
SCCS-файла в котором удалены передние s..
%I% С_идентификатор (%R%.%L%.%B%.%S%) извлекаемого
текста.
%R% Выпуск (release).
%L% Уровень (level).
%B% Ветвь (branch).
%S% Модификация (sequence).
%D% Текущая дата (гг/мм/дд).
%H% Текущая дата (мм/дд/гг).
%T% Текущее время (чч:мм:сс).
%E% Дата создания последней версии (гг/мм/дд).
%G% Дата создания последней версии (мм/дд/гг).
%U% Время создания последней версии (чч:мм:сс).
%Y% Тип модуля: значение флага t в SCCS-файле [см. ad-
min(1)].
%F% Простое имя SCCS-файла.
%P% Полное имя SCCS-файла.
%Q% Значение флага q в SCCS-файле [см. admin(1)].
%C% Текущий номер строки. Это ключевое слово предназ-
начено для идентификации ошибок типа "этого не
должно быть". Оно не предназначено для использова-
ния в каждой строке для нумерации.
%Z% Четырехсимвольная цепочка @(#), распознаваемая
программой what(1).
%W% Сокращение для создания строк выполняемых файлов
версии 5 для what(1):
%W% = %Z%%M% табуляция %I%
%A% Сокращение для создания строк выполняемых файлов
не версии 5 для what(1):
%A% = %Z%%Y% %M% %I%%Z%
Команда get создает несколько дополнительных файлов:
g-файл, l-файл, p-файл и z-файл. Имена дополнительных
файлов формируются из имени SCCS-файла: простое имя
SCCS-файла должно начинаться с s.; имя g-файла получа-
ется путем удаления s., имена остальных файлов строятся
путем замены первого символа s соответственно на l, p,
z. Например, для файла s.xyz.c, дополнительные файлы
будут иметь имена соответственно xyz.c, l.xyz.c,
p.xyz.c и z.xyz.c.
G-файл, содержащий сгенерированный текст, создается в
текущем каталоге (если не используется опция -p).
G-файл создается даже если из SCCS-файла get не извлек
ни одной строки. За идентификатор владельца берется ре-
альный идентификатор пользователя. Если используется
опция -k, права доступа к файлу устанавливаются равными
644, иначе 444. Реальный идентификатор пользователя
должен быть таким, чтобы позволить запись в текущий ка-
талог.
L-файл содержит таблицу, показывающую, какие версии бы-
ли использованы при генерации текста. L-файл создается
в текущем каталоге при использовании опции -l; его пра-
ва доступа 444, идентификатор владельца равен реальному
идентификатору пользователя. Реальный идентификатор
пользователя должен быть таким, чтобы позволить запись
в текущий каталог.
Строки l-файла имеют следующий формат:
1. Пробел, если версия использована; * в противном
случае.
2. Пробел, если версия использована или проигнори-
рована; *, если версия не использована и не
проигнорирована.
3. Код причины, почему версия была или не была ис-
пользована:
I: Включена по опции -i.
X: Исключена по опции -x.
C: Время не соответствует указанному в
опции -c.
4. Пробел.
5. С_идентификатор.
6. Табуляция.
7. Дата и время создания (гг/мм/дд чч:мм:сс).
8. Пробел.
9. Входное имя пользователя, создавшего версию.
Комментарии и номер причины модификации выводятся
на следующих строках, перед ними один знак табуля-
ции. Каждая запись заканчивается пустой строкой.
P-файл используется для передачи информации от get с
опцией -e к delta. Его содержимое также используется
для предотвращения последующего выполнения get -e с тем
же с_идентификатором, пока не будет выполнена команда
delta или в SCCS-файле не будет установлен флаг j, [см.
admin(1)]. P-файл создается в каталоге, содержащем
SCCS-файл, действующий идентификатор пользователя дол-
жен быть таким, чтобы разрешить запись в этот каталог.
Права доступа к файлу равны 644, идентификатор владель-
ца равен действующему идентификатору пользователя. Фор-
мат p-файла следующий: извлеченный с_идентификатор,
пробел, новый с_идентификатор, пробел, имя, соответст-
вующее реальному идентификатору пользователя, пробел,
дата и время выполнения get, пробел, аргумент опции -i
(если есть), пробел, аргумент опции -x (если есть), пе-
ревод строки. В p-файле может быть различное число
строк; никакие две из них не могут содержать один и тот
же новый с_идентификатор.
Z-файл служит как файл-замок для защиты от одновремен-
ных изменений. Его содержимое - двоичный двухбайтный
идентификатор процесса get, создавшего z-файл. Z-файл
создается в каталоге, содержащем SCCS-файл, на время
выполнения get. Права доступа к z-файлу 444, остальное
то же, что и для p-файла.
ФАЙЛЫ
g-файл Существует до выполнения команды delta;
удаляется после ее завершения.
p-файл Существует до выполнения команды delta;
может остаться после ее завершения.
q-файл Создается во время выполнения команды
delta; удаляется после ее завершения.
x-файл Создается во время выполнения команды
delta; переименовывается в SCCS-файл
после ее завершения.
z-файл Создается во время выполнения команды
delta; удаляется также во время ее вы-
полнения.
d-файл Создается во время выполнения команды
delta; удаляется после ее завершения.
/usr/bin/bdiff Программа для выявления различий между
"извлеченным" и g-файлом.
СМ. ТАКЖЕ
admin(1), delta(1), help(1), prs(1), what(1).
sccsfile(4) в Справочнике программиста.
ДИАГНОСТИКА
Для раз яснений пользуйтесь командой help(1).
СЮРПРИЗЫ
Если действующий идентификатор пользователя позволяет
запись (явно или неявно) в каталог, содержащий
SCCS-файлы, а реальный идентификатор пользователя этого
не позволяет, то при использовании опции -e в команде
get может быть указано только одно имя файла.
|