1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. ОПЦИИ 2
5. ПОДСТАНОВКА КЛЮЧЕВЫХ СЛОВ 8
6. ФАЙЛОВЫЕ РЕЖИМЫ 10
7. ФАЙЛЫ 10
8. СРЕДА 11
9. ДИАГНОСТИКА 11
10. ИДЕНТИФИКАЦИЯ 11
11. СМ. ТАКЖЕ 11
12. ОГРАНИЧЕНИЯ 11
1. ИМЯ
co - оформленный вывод (checkout) модификаций (revisions) RCS
2. ФОРМАТ
co [options] file...
3. ОПИСАНИЕ
co ищет модификацию в каждом файле RCS и направляет ее для сохра-
нения в соответствующий рабочий файл file.
Имена путей, соответствующие суффиксу RCS, означают файлы RCS;
все другие означают рабочие файлы. Имена спарены, как объяснено в
ci(1).
Модификации файла RCS могут быть оформленно выведены блокирован-
ными или неблокированными. Блокирование модификации предотвращает
перекрытие обновлений. Модификация, оформленно выведенная для
чтения или обработки (например, для компиляции), не нуждается в
блокировании. Модификацию, оформленно выведенную для редактирова-
ния и позднейшего оформленного ввода, в норме надо блокировать.
Оформленный вывод (checkout) с блокированием не удается, если
оформленно выводимая модификация в этот момент блокирована другим
пользователем. (Блокировка может быть нарушена с помощью rcs(1).)
Оформленный вывод с блокированием также требует, чтобы пользова-
тель числился в списке доступа файла RCS, если он не владелец
файла или не привилегированный пользователь и этот список непуст.
Оформленный вывод без блокирования не подвержен ограничениям
списка доступа, и на него не влияет наличие блокировок.
Модификация выбирается при помощи опций для номера модификации
или ветви, даты/времени оформленного ввода (checkin), автора или
состояния. Когда опции для выбора применяются в комбинации, то co
ищет самую позднюю модификацию, удовлетворяющую им всем. Если ни
одна из опций выбора не специфицирована, то co ищет самую позднюю
модификацию на ветви по умолчанию (в норме на стволе, см. опцию
-b в rcs(1). Номер модификации или ветви может быть приписан лю-
бой из опций -f, -I, -l, -M, -p, -q, -r или -u. Опции -d (дата),
-s (состояние) и -w (автор) ищутся из одной (выбранной) ветви,
- 2 -
которая или специфицирована одной из опций -f,...,-u или является
ветвью по умолчанию.
Команда co, применяемая к файлу RCS без модификаций, создает ра-
бочий файл нулевой длины. co всегда совершает подстановку ключе-
вых слов (см. ниже).
4. ОПЦИИ
-r[rev]
ищет самую позднюю модификацию, чей номер меньше или равен
rev. Если rev указывает на ветвь, а не на модификацию, то
ищется самая поздняя модификация на этой ветви. Если rev
опущена, то ищется самая поздняя модификация на ветви по
умолчанию (см. опцию -b в rcs(1)). Если rev = $, то co оп-
ределяет номер модификации из значений ключевых слов в ра-
бочем файле. Иначе модификация составляется из одного или
более числовых или символьных полей, разделенных точками.
Если rev начинается с точки, то ветвь по умолчанию (в
норме ствол) прибавляется к ее началу. Если rev - номер
ветви с последующей точкой, то используется самая поздняя
модификация на этой ветви. Численный эквивалент символьно-
го поля специфицируется с опцией -n команд ci(1) или
rcs(1).
-l[rev]
то же, что -r, за исключением того, что она также блокиру-
ет искомую модификацию для пользователя.
-u[rev]
то же, что -r, за исключением того, что она разблокирует
искомую модификацию, если она блокирована пользователем.
Если rev опущена, то -u ищет модификацию,блокированную
пользователем, если такая есть; иначе она ищет самую позд-
нюю модификацию на ветви по умолчанию.
-f[rev]
вызывает перезапись рабочего файла; полезна в соединении с
-q. См. также ФАЙЛОВЫЕ РЕЖИМЫ ниже.
- 3 -
-kkv Генерирует строки ключевых слов, используя форму по умол-
чанию, например, $Revision: 5.13 $ для ключевого слова
Revision. Имя блокиратора вставляется в заголовок, Id, и в
ключевые строки блокиратора только когда файл блокирует-
ся, т.е. при помощи ci -l и co -l. Это - по умолчанию.
-kkvl Подобна kkv, за исключением того, что имя блокиратора все-
гда вставляется, если данная модификация в этот момент
блокирована.
-kk Генерирует только имена ключевых слов в строках ключевых
слов; опускает их значения. См. ниже ПОДСТАНОВКА КЛЮЧЕВЫХ
СЛОВ. Например, для ключевого слова Revision генерирует
строку $Revision$ вместо $Revision: 5.13 $. Эта опция по-
лезна для игнорирования различий из-за подстановки ключе-
вых слов при сравнении различных модификаций файла. Жур-
нальные записи вставляются после ключевых слов $Log$, даже
если специфицирована -kk, так как это более полезно при
слиянии изменений.
-ko Генерирует старую строку ключевых слов, присутствовавшую в
рабочем файле перед его оформленным вводом. Например, для
ключевого слова Revision генерирует строку $Revision: 1.1
$ вместо $Revision: 5.13 $, если это - содержимое строки
перед оформленным вводом файла. Это может быть полезным
для форматов файла, которые не переносят изменений в под-
строках, которые могут принять форму ключевых строк.
-kb Генерирует двоичный образ старой строки ключевых слов. Она
действует как -ko, за исключением того, что она совершает
все вводы и выводы рабочего файла в двоичном режиме. Это
создает некоторое различие на машинах Posix и Unix, но на
машинах типа DOS надо использовать rcs -i -kb для инициа-
лизации файла RCS, предназначенного для использования как
двоичный файл. К тому же на всех машинах rcsmerge(1) отка-
зывается сливать файлы при действующей -kb.
-kv Генерирует только значения ключевых слов для строк ключевых
слов. Например, для ключевого слова Revision генерирует
- 4 -
строку 5.13 вместо $Revision: 5.13 $. Это может помочь ге-
нерировать файлы на языках программирования, в которых
трудно оторвать ограничители ключевых слов наподобие
$Revision: $ от строки. Однако дальнейшая подстановка клю-
чевых слов не может выполняться, если удалены имена ключе-
вых слов, так что эту опцию надо использовать осторожно.
Из-за такой опасности потери ключевых слов эту опцию нель-
зя комбинировать с -l, и право доступа владельца рабочего
файла на запись выключается; для более позднего редактиро-
вания файла оформленно выведите его снова без -kv.
-p[rev]
печатает найденную модификацию rev на стандартном выходе,
а не сохраняет ее в рабочем файле. Эта опция полезна, ког-
да co - часть выходного канала.
-q[rev]
"молчаливый" режим; диагностика не печатается.
-I[rev]
интерактивный режим; пользователя приглашают и задают воп-
росы, если стандартный вход - не терминал.
-ddate ищет самую позднюю модификацию на выбранной ветви,
дата/время оформленного ввода которой меньше или равно
date. Дату и время можно задавать в свободном формате. Ча-
совой пояс LT обозначает местное время; другие общие имена
часовых поясов понятны. Например, следующие даты эквива-
лентны, если местное время - 11 января 1990 г., 8pm (8 ча-
сов вечера) Тихоокеанского Стандартного Времени, на 8 ча-
сов к западу от Координированного Всемирного Времени (КВВ):
8:00 pm 1t
4:00 AM, Jan. 12, 1990 КВВ по умолчанию
1990-01-12 04:00:00+00 ISO 8601 (КВВ)
1990-01-11 20:00:00-08 ISO 8601
(местное время)
1990/01/12 04:00:00 традиционный формат
RCS
- 5 -
Thu Jan 11 20:00:00 1990 LT выход ctime(3) +LT
Thu Jan 11 20:00:00 PST 1990 выход date(1)
Fri Jan 12 04:00:00 GMT 1990
Thu, 11 Jan 1990 20:00:00 -0800 Internet RFC 822
12-January-1990, 04:00 WET
Большинство полей в дате и времени можно давать по
умолчанию. Часовой пояс по умолчанию - в норме КВВ, но это
можно перезаписать опцией -z. Другие умолчания определены
в порядке - год, месяц, день, час, минуты и секунды (от
большего к меньшему значащему). Должно быть предусмотрено
по крайней мере одно из этих полей. Для пропущенных полей
более высокой значимости, чем наивысшее оставленное поле,
предполагаются текущие значения часового пояса. Для всех
других опущенных полей предполагаются наименьшие возможные
значения. Например, без -z дата 20, 10:30 соответствует по
умолчанию 10:30:00 КВВ 20-го текущего месяца и года часо-
вого пояса КВВ. Дату/время надо взять в кавычки, если там
есть пробелы.
-M[rev]
устанавливает на новом рабочем файле время модифицирова-
ния, равное дате искомой модификации rev. Используйте эту
опцию осторожно; она может нарушить make(1).
-sstate
ищет самую позднюю модификацию на выбранной ветви, чье
состояние установлено на state.
-T Сохраняет время модифицирования в файле RCS, даже если файл
RCS изменяется из-за добавления или удаления блокировки.
Эта опция может подавлять лишнюю перекомпиляцию, вызванную
зависимостью какой-то копии рабочего файла от файла RCS
через make(1). Используйте эту опцию осторожно; она может
подавить перекомпиляцию даже при ее необходимости, т.е.
когда изменение блокировки будет означать изменение в
строках ключевых слов в другом рабочем файле.
-w[login]
- 6 -
ищет самую позднюю модификацию на выбранной ветви, которая
была оформленно введена пользователем с регистрационным
именем login. Если аргумент login опущен, то предполагает-
ся регистрационное имя пользователя.
-jjoinlist
генерирует новую модификацию, которая есть объединение мо-
дификаций в списке joinlist. Эта опция значительно устаре-
ла после введения rcsmerge(1), но оставлена для обратной
совместимости.
joinlist - разделенный запятыми список пар форм rev2:rev3,
где rev2 и rev3 - (символьные или численные) номера моди-
фикаций. Для такой начальной пары rev1 означает модифика-
цию, выбираемую вышеописанными опциями -f,...,-w. Для всех
других пар rev1 означает модификацию, сгенерированную
предыдущей парой. (Таким образом, выход одного соединения
становится входом для следующего.)
Для каждой пары co соединяет модификации rev1 и rev3 по
отношению к rev2. Это означает, что все изменения, кото-
рые преобразуют rev2 в rev1, применяются к копии rev3.
Это, в частности, полезно, если rev1 и rev3 - концы двух
ветвей, имеющих rev2 общим предком. Если rev1
ci - оформленный ввод модификаций RCS
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. ОПЦИИ 3
5. ИМЕНОВАНИЕ ФАЙЛОВ 8
6. ПРИМЕРЫ 9
7. ФАЙЛОВЫЕ РЕЖИМЫ 9
8. ФАЙЛЫ 9
9. ИСПОЛЬЗОВАНИЕ УСТАНОВКИ ИДЕНТИФИКАТОРОВ ПОЛЬЗОВАТЕЛЯ (УИП) 10
10. СРЕДА 12
11. ДИАГНОСТИКА 13
12. ИДЕНТИФИКАЦИЯ 13
1. ИМЯ
ci - оформленный ввод модификаций RCS
2. ФОРМАТ
ci [options] file...
3. ОПИСАНИЕ
ci сохраняет новые модификации в файлах RCS. Каждое имя пути, под-
ходящее для суффикса RCS, принимается за RCS-файл. Предполагается,
что все другие - это рабочие файлы, содержащие новые модификации.
Если задан только рабочий файл, то ci пытается найти соответствую-
щий файл RCS в поддиректории RCS и затем в директории рабочего
файла. Для дальнейших деталей см. ниже ИМЕНОВАНИЕ ФАЙЛОВ.
Для запуска ci регистрационное имя пользователя должно быть в
списке доступа, за исключением случаев, когда этот список пуст
или пользователь - привилегированный или владелец файла. Для до-
бавления новой модификации к существующей ветви оконечная модифи-
кация на этой ветви должна быть блокирована пользователем. Иначе
может быть только создана новая ветвь. Это ограничение не накла-
дывается на владельца файла, если используется нестрогое блокиро-
вание (см. rcs(1)). Блокировка, наложенная кем-то другим, может
быть нарушена командой rcs.
Если не задана опция -f, то ci проверяет, отличается ли размещае-
мая модификация от предшествующей. Если нет, то вместо создания
новой модификации ci обращается к предшествующей. Для такого об-
ращения обычная rcs удаляет рабочий файл и любую блокировку;
ci -l сохраняет, а ci -u устраняет любую блокировку, и затем они
обе генерируют новый рабочий файл, как если бы co -l или co -u
были применены к предшествующей модификации. При обращении любые
опции -n и -s применяются к предшествующей модификации.
Для каждой помещенной модификации ci запрашивает запись в журна-
ле. Запись в журнале должна суммировать изменения и должна окан-
чиваться символом конец_файла или строкой, содержащей в себе точ-
ку. Если оформлено введены несколько файлов, то ci запрашивает,
использовать ли вновь предыдущую запись в журнале. Если стандарт-
- 2 -
ный вход - не терминал, то ci подавляет запрос и использует одну
и ту же запись в журнале для всех файлов. См. также -m.
Если файл RCS не существует, то ci создает его и размещает содер-
жимое рабочего файла как начальную модификацию (номер по умолча-
нию: 1.1). Список доступа инициализируется как пустой. Вместо за-
писи в журнале ci затребует поясняющий текст (см. ниже -t).
Номер rev размещаемой модификации может быть задан одной из опций
-f, -i, -I, -j, -k, -l, -M, -q, -r или -u. rev может быть символь-
ным, численным или смешанным. Символические имена в rev уже должны
быть определены; см. опции -n и -N для присвоения имен при
checkin'е. Если rev = $, то ci определяет номер модификации из зна-
чений ключевых слов в рабочем файле.
Если rev начинается с точки, то эта модификация "насаживается" на
ветвь по умолчанию (в норме на ствол).Если rev - номер ветви с
точкой на конце, то используется самая поздняя модификация на
этой ветви.
Если rev - номер модификации, то он должен быть выше, чем самая
поздняя модификация на ветви, к которой принадлежит rev, или с
него должна начаться новая ветвь.
Если rev - это ветвь, а не номер модификации, то новая модифика-
ция добавляется к этой ветви. Номер уровня получается прибавлением
номера самой "верхней" модификации на этой ветви. Если rev указы-
вает на несуществующую ветвь, то такая ветвь создается с
начальной модификацией с номером rev.1.
Если rev опущена, то ci пробует вывести номер новой модификации
из последней блокировки пользователя. Если пользователь блокирует
самую верхнюю модификацию ветви, то новая модификация добавляется
к этой ветви. Номер новой модификации получается прибавлением но-
мера самой верхней модификации. Если пользователь блокировал не
самую верхнюю модификацию, то начинается новая ветвь от этой мо-
дификации прибавлением номера наивысшей ветви к этой модификации.
По умолчанию начальная ветвь и номера уровней суть 1.
- 3 -
Если rev опущена и пользователь не имеет "замка", но владеет
файлом и блокирование не установлено на строгое, то модификация
добавляется к началу ветви по умолчанию (в норме к стволу; см.
опцию -b в rcs(1)).
Исключение: на стволе модификации добавляются к концу, а не
вставляются.
4. ОПЦИИ
-rrev Оформлено вывести модификацию rev
-r Чистая опция -r (без какой-либо модификации) имеет нео-
бычное значение в ci. С другими командами RCS чистая опция
-r специфицирует самую позднюю модификацию на ветви по
умолчанию, но с ci чистая опция -r переустанавливает пове-
дение по умолчанию освобождения "замка" и удаления рабоче-
го файла и используется для перезаписи любой опции -l или
-u, устанавливаемой псевдонимами (aliases) оболочки или
командными файлами.
-l[rev]
работает как -r, за исключением того, что она совершает
дополнительно co -l для сохраненной модификации. Таким об-
разом сохраненная модификация снова немедленно оформленно
выводится и блокируется. Это полезно для сохранения моди-
фикации, хотя иногда желательно продолжать редактирование
после оформленного ввода.
-u[rev]
работает как -l, за исключением того, что сохраненная моди-
фикация не блокируется. Это позволяет читать рабочий файл
непосредственно после checkin.
Опции -l, чистая -r и -u взаимоисключающие и незаметно пе-
резаписывают (перекрывают) друг друга. Например, ci -u -r
эквивалентно ci -r, так как чистая -r перекрывает -u.
- 4 -
-f[rev]
выполняет копирование во внешнюю память; новая модификация
копируется, даже если она не отличается от предшествующей.
-k[rev]
ищет рабочий файл для значений ключевых слов, чтобы опре-
делить номер его модификации, дату создания, состояние и
автора (см. co(1)) и присваивает эти значения сохраненной
модификации, а не вычисляет их локально. Она также генери-
рует регистрационное сообщение по умолчанию, выполняющее
регистрацию пользователя, и действительную дату оформлен-
ного ввода. Эта опция полезна для готового продукта. Моди-
фикация, которая устанавливается на нескольких машинах,
должна быть оформленно введена на этих машинах с опцией -k
для сохранения первоначальных номера, даты, автора и сос-
тояния. Извлеченные значения ключевых слов и регистрацион-
ное сообщение по умолчанию могут быть перекрыты опциями
-d, -m, -s, -w и любой опцией, которая содержит номер мо-
дификации.
-q[rev]
"молчаливый" режим; диагностический выход не печатается.
Модификация, которая не отличается от предшествующей, не
копируется во внешнюю память, если не задана -f.
-i[rev]
первоначальный checkin; сообщить об ошибке, если файл RCS
уже существует. Это исключает состязания (гонки) в некото-
рых приложениях.
-j[rev]
только оформленно ввести и не инициализировать; сообщить
об ошибке, если файл RCS не существует.
-I[rev]
интерактивный режим; пользователю подсказывают и задают
вопросы, даже если стандартный вход - не терминал.
-d[date]
- 5 -
использует date как дату и время оформленного ввода. Дата
специфицируется в свободном формате, как объяснено в
co(1). Это полезно для подмены даты оформленного ввода и
для -k, если дата недоступна. Если date пуста, то исполь-
зуется время последнего модифицирования рабочего файла.
-M[rev]
устанавливает время модифицирования любого нового рабоче-
го файла по дате искомой модификации rev. Например, ci -d
-M -u f не изменяет время модифицирования для f, даже если
содержимое f изменяется из-за подстановки ключевых слов.
Используйте эту опцию осторожно; она может нарушить
make(1).
-mmsg использует строку msg как запись в журнале для всех оформ-
ленно введенных модификаций. По условию журнальные записи,
начинающиеся с #, являются комментариями и игнорируются
программами вроде пакета GNU Emacs's vc. Вдобавок, жур-
нальные записи, начинающиеся с {clumpname} (групповое имя)
(с пробелами после них), будут собраны вместе при возмож-
ности, даже если они ассоциируются с различными файлами;
{clumpname} используется только для сборки и не считается
частью самой журнальной записи.
-nname присваивает символическое имя name номеру оформленно вве-
денной модификации. ci сообщает об ошибке, если name уже
присвоено другому номеру.
-Nname то же, что -n за исключением того, что она перекрывает
предыдущее присвоение name.
-sstate
устанавливает состояние оформленно введенной модификации
для идентификатора state. Состояние по умолчанию - Exp.
-tfile записывает поясняющий текст из названного файла file в
файл RCS, убирая существующий текст. file не может начи-
наться с -.
- 6 -
-t-string
записывает поясняющий текст из строки string в файл RCS,
убирая существующий текст.
Опция -t в обеих ее формах имеет действие только во время
начального оформленного ввода; иначе она незаметно игнори-
руется.
Во время начального оформленного ввода, если -t не зада-
на, ci получает текст со стандартного ввода,
оканчивающийся символом конец_файла или строкой, содержа-
щей точку. Пользователь приглашается ко вводу текста, если
возможна интерактивная работа; см. -I.
Для обратной совместимости со старыми версиями RCS чистая
опция -t игнорируется.
-T устанавливает время модифицирования файла RCS на время
новой модификации, если прежняя предшествует последней и
есть новая модификация; иначе сохраняет время модификации
файла RCS. Если вы заблокировали модификацию, то ci обычно
обновляет время модификации файла RCS на текущее время,
так как блокировка сохраняется в файле RCS и устранение
блокировки требует изменения файла RCS. Так можно создать
файл RCS новее, чем рабочий файл. одним из двух способов:
(1) ci -M может создать рабочий файл с датой до текущего
времени; (2) при обращении к предыдущей модификации файл
RCS может измениться, тогда как рабочий файл останется не-
изменным. Эти два случая могут вызвать лишнюю перекомпиля-
цию, вызванную зависимостью рабочего файла от RCS файла
через make(1). Опция -T запрещает такую перекомпиляцию пу-
тем подмены даты файла RCS. Используйте эту опцию осторож-
но; она может подавить перекомпиляцию, даже когда оформ-
ленный ввод одного рабочего файла должен воздействовать на
другой рабочий файл, ассоциированный с тем же файлом RCS.
Предположим, что время файла RCS - 01:00, время измененно-
го рабочего файла -02:00, какая-то еще копия рабочего фай-
ла имеет время 03:00, а текущее время - 04:00. Тогда ci -d
-T устанавливает время файла RCS на 02:00 вместо обычного
- 7 -
04:00; это заставляет make(1) думать (неправильно), что
последняя копия новее, чем файл RCS.
-wlogin
использует login как поле автора помещаемой модификации.
Полезна для подмены поля автора и для -k, если автор не-
доступен.
-V Печатает номер версии RCS.
-Vn Эмулирует RCS версии n. См. co(1) для деталей.
-xsuffixes
специфицирует суффиксы suffixes для файлов RCS. Непустой
суффикс соответствует любому имени пути, оканчивающемуся
на этот суффикс. Пустой суффикс соответствует любому имени
пути в форме RCS/путь или путь1/RCS/путь2. Опция -x может
специфицировать список суффиксов, разделенных /. Например,
-x,v/ специфицирует два суффикса: ,v и пустой суффикс. Ес-
ли специфицируются два или более суффикса, то они рассмат-
риваются по порядку при просмотре файла RCS; первый срабо-
тавший используется для этого файла. Если не найдено
файла RCS, но файл RCS может быть создан, то суффиксы
рассматриваются для определения имени нового файла RCS.
Умолчание для суффиксов зависимо от инсталляции; в норме
это ,v/ для машин типа Unix, которые позволяют запятые в
именах файлов, и пустой суффикс для других машин.
-zzone специфицирует выходной формат даты в подстановке ключевых
слов и часовой пояс по умолчанию для даты в опции -ddate.
zone должна быть или пустой, или численным смещением КВВ,
или специальной строкой LT для местного времени. Умолчание
- пустой пояс, который использует традиционный RCS-формат
для КВВ без указания на часовой пояс и со слэшами, разде-
ляющими части даты; иначе времена выводятся в формате ISO
8601 с указанием часового пояса. Например, если местное
время - 11 января 1990 г., 8pm (8 часов вечера) Тихоокеан-
ского Стандартного Времени, восемь часов к западу от КВВ,
то выход времени будет такой:
- 8 -
опция выход времени
-z 1990/01/12 04:00:00 (умолчание)
-zLT 1990-01-11 20:00:00-08
-z+05:30 1990-01-12 09:30:00+05:30
Опция -z не воздействует на даты, хранимые в файлах RCS,
которые всегда КВВ.
5. ИМЕНОВАНИЕ ФАЙЛОВ
Пары файлов RCS и рабочих файлов могут быть специфицированы тремя
способами (см. также раздел примеров).
1) Даны и файл RCS и рабочий файл. Имя пути RCS имеет форму
путь1/раб_файлX, а рабочее имя пути имеет форму
путь2/раб_файл,где путь1/ и путь2/ - (возможно, различные или
пустые) пути, раб_файл - имя файла, а X - RCS-суффикс. Если X
пусто, то путь1/ должен начинаться с RCS/ или должен содержать
/RCS/.
2) Дан только файл RCS. Рабочий файл создается в текущем директо-
рии и его имя выводится из имени файла RCS удалением путь1/ и
суффикса X.
3) Дан только рабочий файл. Тогда ci рассматривает каждый
RCS-суффикс X по очереди, ища файл RCS в форме путь2/RCS/раб_файл
или (если прежний не найден и X непусто) путь2/раб_файлX.
Если файл RCS специфицирован без пути в 1) и 2), то ci ищет файл
RCS первый в директории ./RCS и затем в текущем директории.
ci сообщает об ошибке, если попытка открыть файл RCS не удается
по необычной причине, даже если имя пути файла RCS - это только
одна из нескольких возможностей. Например, для подавления ис-
пользования команд RCS в директории d создать регулярный файл с
именем d/RCS, так чтобы случайные попытки использовать команды
RCS в d оканчивались неудачей из-за того, что d/RCS - не директо-
рий.
- 9 -
6. ПРИМЕРЫ
Пусть ,v - RCS-суффикс и текущий директорий содержит поддиректо-
рий RCS с файлом RCS io.c,v. Тогда каждая из следующих команд
оформленно вводит копию io.c в RCS/io.c,v как самую позднюю моди-
фикацию, удаляя io.c.
ci io.c; ci RCS/io.c,v; ci io.c,v;
ci io.c RCS/io.c,v; ci io.c io.c,v;
ci RCS/io.c,v io.c; ci io.c,v io.c;
Пусть вместо этого пустой суффикс - это RCS-суффикс и текущий ди-
ректорий содержит поддиректорий RCS с файлом RCS io.c. Каждая из
следующих команд оформленно вводит новую модификацию.
ci io.c; ci RCS/io.c;
ci io.c RCS/io.c;
ci RCS/io.c io.c;
7. ФАЙЛОВЫЕ РЕЖИМЫ
Файл RCS, созданный ci, наследует права чтения и исполнения от
рабочего файла. Если файл RCS уже существует, то ci сохраняет его
права на чтение и исполнение. ci выключает все права записи фай-
лов RCS.
8. ФАЙЛЫ
Временные файлы создаются в директории, содержащем рабочий файл и
также в рабочем директории (см.TMPDIR в разделе СРЕДА).Семафорный
файл или файлы создаются в директории, содержащем файл RCS. С не-
пустым суффиксом имена семафоров начинаются с первого символа
суффикса; следовательно, не специфицируйте суффикс, чей первый
символ может оказаться первым символом имени рабочего файла. С
пустым суффиксом имена семафоров кончаются на _ , так что имена
рабочих файлов не должны кончаться на _ .
ci не изменяет файл RCS или рабочий файл. В норме ci снимает свя-
зи с файла и создает новый; но вместо разрушения цепочки из одной
или нескольких связей к файлу RCS она отключает связи к результи-
рующему файлу. Следовательно, ci разрушает любые жесткие или сим-
вольные связи к любому рабочему файлу, который она изменяет; и
- 10 -
жесткие связи к файлам RCS являются бездействующими, но символь-
ные связи к файлам RCS сохраняются.
Опытный пользователь должен уметь искать и записывать директорий,
содержащий файл RCS. В норме обычный пользователь должен уметь
читать файлы RCS и рабочие файлы и искать и записывать директо-
рий, содержащий рабочий файл; однако некоторые старые машины не
могут легко переключаться между обычным и опытным пользователями,
так что на этих машинах опытный пользователь имеет доступ ко всем
возможностям. Опытный пользователь - это то же, что обычный поль-
зователь, если ваши копии ci и co не имеют привилегий установки
идентификаторов пользователя. Как описано в следующем разделе,
эти привилегии создают повышенную безопасность, если опытный
пользователь владеет всеми файлами RCS и директориями и если
опытный пользователь может записывать директории RCS.
Пользователи могут управлять доступом к файлам RCS установкой
прав (разрешений) на директорий, содержащий файлы; только пользо-
ватели с правом записи в директорий могут использовать команды
RCS для изменения его файлов RCS. Например, в машинах, которые
разрешают пользователю принадлежать к нескольким группам, можно
сделать групповые директории RCS перезаписываемыми только для
этой группы. Этот подход достаточен для неформальных проектов, но
он означает, что любой член группы может произвольно изменять
групповые файлы RCS и может даже полностью их удалять. Поэтому
более формальные проекты иногда делают различие между администра-
тором RCS, который может изменять файлы RCS по своему желанию, и
другими членами проекта, которые могут оформленно вводить новые
модификации, но не могут иным способом изменять файлы RCS.
9. ИСПОЛЬЗОВАНИЕ УСТАНОВКИ ИДЕНТИФИКАТОРОВ ПОЛЬЗОВАТЕЛЯ (УИП)
Для предотвращения удаления модификаций кем-либо. кроме админист-
ратора RCS, пользователи могут использовать привилегии УИП следу-
ющим образом.
- Проверить, что машина поддерживает использование УИП RCS. Про-
консультироваться с достойным доверия экспертом, если есть
сомнения. Лучше всего, если вызов системы УИП работает, как
описано в Posix 1003.1a Draft 5, так как RCS может легко пе-
реключаться между реальным и номинальным пользователями, даже
- 11 -
если реальный пользователь - это root. Если нет, то лучше, ес-
ли вызов системы УИП поддерживает сохраненный УИП (поведение
{_POSIX_SAVED_IDS} в Posix 1003.1-1990); это не удается только
если реальный или номинальный пользователь - это root. Если
RCS обнаруживает несрабатывание в УИП, то она немедленно выхо-
дит.
- Выбрать пользователя A в качестве администратора RCS для набора
пользователей. Только A может вызывать команду rcs на пользо-
вательских файлах RCS. A не должен быть root'ом или любым дру-
гим пользователем со специальными полномочиями. Множества
пользователей, взаимно не доверяющие друг другу, должны иметь
разных администраторов.
- Выбрать имя пути B для директория файлов, которые будут испол-
няться пользователями.
- Пользователю A ввести в B копии ci и co, которые являются УИП
для A, путем копирования команд из их директория D стандартной
инсталляции следующим образом:
mkdir B
cp D/c[io] B
chmod go-w,u+s B/c[io]
- Каждому пользователю добавлять B к началу его пути следующим
образом:
PATH=B:$PATH; export PATH # обычная оболочка
set path=(B $path) # оболочка C
- Пользователю A создавать каждый RCS-директорий R с правом запи-
си только для A следующим образом:
mkdir R
chmod go-w R
- Если вы хотите позволить только некоторым пользователям читать
файлы RCS, то поместите этих пользователей в группу G, а поль-
- 12 -
зователю A следует далее защищать RCS-директорий следующим об-
разом:
chgrp G R
chmod g-w,o-rwx R
- Пользователю A скопировать старые файлы RCS (если есть) в R
для обеспечения A правом их владения.
- Список доступа файлов RCS ограничивается теми, кто может оформ-
ленно вводить и блокировать модификации. По умолчанию список
доступа пуст, что дает доступ к оформленному вводу любому, кто
может читать файлы RCS. Если вы хотите ограничить доступ к
оформленному вводу, то пользователю A следует вызвать rcs -a
для файла; см. rcs(1). В частности, rcs -e -aA ограничивает
доступ только пользователем A.
- Пользователю A инициализировать любой новый файл RCS при помощи
rcs -i перед начальным оформленным вводом, добавляя опцию -a,
если вы хотите ограничить доступ к оформленному вводу.
- Дать привилегии УИП только для ci, co и rcsclean; не давать их
rcs или любой другой команде.
- Не использовать другие УИП-команды для вызова команд RCS; УИП
более замысловат, чем вы думаете!
10. СРЕДА
RCSINIT Опции добавляются к началу списка аргументов, разделен-
ных пробелами. Обратный слэш позволяет включать пробелы
в опцию. Опции RCSINIT добавляются к началу списка аргу-
ментов большинства команд RCS. Полезные опции RCSINIT
включают -q, -V, -x и -z.
TMPDIR Имя временного директория.Если оно не установлено,то тог-
да проверяются переменные среды TMP и TEMP и берется
первое найденное значение; если они не установлены, то
используется машинно-зависимое умолчание, обычно /tmp.
11. ДИАГНОСТИКА
Для каждой модификации ci печатает файл RCS, рабочий файл и чис-
ло сохраненных и предшествующих модификаций. Статус выхода = 0,
если и только если все операции были успешными.
12. ИДЕНТИФИКАЦИЯ
Автор: Walter F. Tichy.
Manual Page Revision: 5.17; Release Date: 1995/06/16.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Paul
Eggert.
13. СМ. ТАКЖЕ
co(1), emacs(1), ident(1), make(1), rcs(1), rcsclean(1),
rcsdiff(1), rcsintro(1), rcsmerge(1), rlog(1), setuid(2),
rcsfile(5)
Walter F. Tichy, RCS--A System for Version Control,
Software--Practice & Experience 15, 7 (July 1985),
637-654.
ident - идентифицировать строки ключевых слов RCS в файлах
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. КЛЮЧЕВЫЕ СЛОВА 2
5. ИДЕНТИФИКАЦИЯ 3
6. СМ. ТАКЖЕ 3
1. ИМЯ
ident - идентифицировать строки (цепочки) ключевых слов RCS
в файлах.
2. ФОРМАТ
ident [ -q ] [ -V ] [ file...]
3. ОПИСАНИЕ
ident ищет все экземпляры образца $ключ_слово: текст $ в назван-
ных файлах или, если файлы не названы, то стандартный вход.
Эти образцы в норме вставляются автоматически RCS-командой co(1),
но их можно вставлять и вручную. Опция -q подавляет предупрежде-
ние, выдаваемое, если в файле нет образцов. Опция -v печатает но-
мер версии ident.
ident работает на текстовых и объектных файлах и на дампах. Нап-
ример, если C-программа в f.c содержит
#include
static char const rcsid[] =
"$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp
$";
int main() { return printf("%s\n", rcsid) == EOF; }
а f.c компилируется в f.o, то команда
ident f.c f.o
даст выход
f.c:
$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $
f.o:
$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $
Если C-программа определяет строку наподобие вышеприведенной
rcsid, но не использует ее , то lint(1) может объяснить это, и
- 2 -
некоторые C-компиляторы уберут эту строку для оптимизации. Самое
надежное решение - вставить в программу строку rcsid, как показа-
но в вышеприведенном примере.
ident находит все образцы $ключ_слово: текст $ образец, даже если
ключевое слово не поддерживается RCS. Это дает вам информацию о
нестандартных ключевых словах вроде $XConsortium$.
4. КЛЮЧЕВЫЕ СЛОВА
Вот список ключевых слов, ныне поддерживаемых co(1). Все времена
даны в Координированном Всемирном Времени (КВВ) по умолчанию, но
если файлы были оформленно выведены с co-опцией -zzone, то време-
на даются с добавлением численной индикации часового пояса.
$Author$
Регистрационное имя пользователя, который оформленно ввел
модификацию.
$Date$
Дата и время оформленного введения модификации.
$Header$
Стандартный заголовок, содержащий полное имя пути файла
RCS, номер модификации, дату/время, автора, состояние и бло-
киратор (если файл заблокирован).
$Id$
То же, что $Header$, только имя файла RCS дается без пути.
$Locker$
Регистрационное имя пользователя, который блокировал модифи-
кацию (пустое, если не блокирована).
$Log$
Журнальная запись, поступающая во время checkin'а. Для целей
ident это эквивалентно $RCSfile$.
$Name$
Символьное имя, используемое для оформленного вывода модифи-
- 3 -
кации, если оно есть.
$RCSfile$
Имя файла RCS без пути.
$Revision$
Номер, присвоенный модификации.
$Source$
Полное имя пути файла RCS.
$State$
Состояние, присвоенное модификации опцией -s в rcs(1) или
ci(1).
co(1) представляет следующие символы в значениях ключевых строк
управляющими последовательностями.
символ управляющая последовательность
таб \t
нов_стр \n
пробел \040
$ \044
\ \\
5. ИДЕНТИФИКАЦИЯ
Автор: Walter F. Tichy.
Manual Page Revision: 5.4; Release Date: 1993/11/09.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1992, 1993, Paul Eggert.
6. СМ. ТАКЖЕ
ci(1), co(1),rcs(1), rcsdiff(1), rcsintro(1),
rcsmerge(1), rlog(1) ,rcsfile(5)
Walter F. Tichy, RCS--A System for Version Control,
Software--Practice & Experience 15, 7 (July 1985),
637-654.
rcsdiff - сравнить RCS-модификации
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. ПРИМЕР 2
5. СРЕДА 2
6. ДИАГНОСТИКА 2
7. ИДЕНТИФИКАЦИЯ 2
8. СМ. ТАКЖЕ 2
1. ИМЯ
rcsdiff - сравнить RCS-модификации
2. ФОРМАТ
rcsdiff [ -ksubst ] [ -q ] [ -rrev1 [ -rrev2 ]] [ -T ] [ -V[n] ]
[ -xsuffixes ] [ -zzone ] [ diff options ] file....
3. ОПИСАНИЕ
rcsdiff исполняет diff(1) для сравнения двух модификаций каждого
заданного файла RCS.
Имена путей, соответствующие суффиксу RCS, означают имена файлов
RCS; все другие означают рабочие файлы. Имена спарены, как объяс-
нено в ci(1).
Опция -q подавляет диагностический выход. С опцией -r могут быть
специфицированы 0, 1 или 2 модификации. Опция -ksubst воздейству-
ет на подстановку ключевых слов при извлечении модификаций, как
описано в co(1); например, -kk -r1.1 -r1.2 игнорирует различия в
значениях ключевых слов при сравнении модификаций 1.1 и 1.2. Для
избежания излишнего выхода от подстановки имени блокиратора пред-
полагается -kkvl, если (1) дана максимум одна опция модификации,
(2) не дана опция -k, (3) -kkv есть подстановка ключевых слов по
умолчанию и (4) режим рабочего файла устанавливается co -l. См.
co(1) для деталей о -T, -V, -x и -z. В ином случае все опции
diff(1), применяемые к регулярным файлам, принимаются с теми же
значениями, что у diff.
Если и rev1 и rerv2 опущены, то rcsdiff сравнивает самую позднюю
модификацию на ветви по умолчанию (по умолчанию на стволе) с со-
держимым соответствующего рабочего файла. Это полезно для опреде-
ления того, что вы изменили после последнего оформленного ввода.
Если rev1 задан, но rev2 опущен, то rcsdiff сравнивает модифика-
цию rev1 файла RCS с содержимым соответствующего рабочего файла.
Если даны и rev1 и rev2, то rcsdiff сравнивает модификации rev1 и
- 2 -
rev2 файла RCS.
И rev1 и rev2 могут быть заданы символьно или численно.
4. ПРИМЕР
Команда
rcsdiff f.c
сравнивает самую последнюю модификацию на ветви по умолчанию фай-
ла RCS с содержимым рабочего файла f.c.
5. СРЕДА
RCSINIT
опции добавляются к началу списка аргументов, разделенных
пробелами. См. ci(1) для деталей.
6. ДИАГНОСТИКА
Статус выхода = 0, если нет различий при любом сравнении, 1, если
есть и 2 при ошибке.
7. ИДЕНТИФИКАЦИЯ
Автор: Walter F. Tichy.
Manual Page Revision: 5.5; Release Date: 1993/11/03.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1991, 1992, 1993 Paul Eggert.
8. СМ. ТАКЖЕ
ci(1), co(1), diff(1), ident(1), rcs(1), rcsintro(1),
rcsmerge(1), rlog(1)
Walter F. Tichy, RCS--A System for Version Control,
Software--Practice & Experience 15, 7 (July 1985),
637-654.
rcsmerge - слить модификации RCS
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. ОПЦИИ 1
5. ПРИМЕРЫ 2
6. СРЕДА 3
7. ДИАГНОСТИКА 3
8. ИДЕНТИФИКАТОР 3
9. СМ. ТАКЖЕ 3
1. ИМЯ
rcsmerge - слить модификации RCS.
2. ФОРМАТ
rcsmerge [options] file
3. ОПИСАНИЕ
rcsmerge включает изменения между двумя модификациями файла RCS
в соответствующий рабочий файл.
Имена путей, соответствующие суффиксу RCS, означают файлы RCS;
все другие означают рабочие файлы. Имена спарены, как объяснено
в ci(1).
Должна быть специфицирована минимум одна спецификация с одной из
опций, написанных ниже, обычно -r. Могут быть специфицированы
максимум две модификации. Если специфицирована только одна моди-
фикация, то для второй модификации предполагается самая поздняя
модификация на ветви по умолчанию (в норме на наивысшей ветви на
стволе). Модификации можно специфицировать численно или символь-
но.
rcsmerge печатает предупреждение, если есть перекрытия и обстав-
ляет ограничителями области перекрытия, как объяснено в
merge(1). Эта команда полезна для включения изменений в оформ-
ленно выведенную модификацию.
4. ОПЦИИ
-A Вывести конфликты, используя стиль -A из diff3(1), если
есть поддержка от diff3. Это сливает все изменения, веду-
щие от file2 к file3 в file1 и генерирует наиболее под-
робный выход.
-E, -e Эти опции специфицируют конфликтные стили, генерирующие
меньше информации, чем -A. См. diff3(1) для деталей.
Умолчание - -E. С -e rcsmerge не предупреждает о конфлик-
тах.
- 2 -
-ksubst
Использовать стиль subst для подстановки ключевых слов.
См. co(1) для деталей. Например, -kk -rl.1 -rl.2 игнори-
рует различия в значениях ключевых слов при слиянии изме-
нений от 1.1 до 1.2. В норме не имеет смысла сливать
двоичные файлы как текстовые, поэтому rcsmerge отказыва-
ется сливать файлы, если используется расширение -kb.
-p[rev]
Послать результат на стандартный выход вместо переписыва-
ния рабочего файла.
-q[rev]
Исполнять "молча"; не печатать диагностику.
-r[rev]
Слить по отношению к модификации rev. Здесь пустая rev
обозначает самую позднюю модификацию на ветви по умолча-
нию, в норме на головной.
-T Эта опция бездействует;она введена для совместимости с
другими командами RCS.
-V Печатать номер версии RCS.
-Vn Эмулировать RCS версии n. См. co(1) для деталей.
-xsuffixes
Использовать suffixes для характеризации файлов RCS. См.
ci(1) для деталей.
-zzone Использовать zone как часовой пояс для подстановки ключе-
вых слов. См. co(1) для деталей.
5. ПРИМЕРЫ
Пусть вы выпускаете модификацию 2.8 файла f.c. Пусть далее после
вашего завершения невыпущенной модификации 3.4 вы принимаете об-
новления в выпуск 2.8 от кого-то еще. Для комбинации этих обнов-
лений в 2.8 и ваших изменений между 2.8 и 3.4 вставьте обновле-
- 3 -
ния в 2.8 в файл f.c и выполните
rcsmerge -p -r2.8 -r3.4 f.c >f.merge.c
Затем проверьте f.merge.c. Альтернативно, если вы хотите
сохранить обновления в 2.8 в файле RCS, то оформленно введите их
как модификацию 2.8.1.1 и выполните co -j:
ci -r2.8.1.1 f.c
co -r3.4 -j2.8:2.8.1.1 f.c
В качестве другого примера следующая команда отменяет изменения
между модификациями 2.4 и 2.8 в вашей текущей оформленно выве-
денной модификации и в f.c.
rcsmerge -r2.8 -r2.4 f.c
Заметим порядок аргументов, и что f.c будет переписан.
6. СРЕДА
RCSINIT
Опции добавляются к началу списка аргументов, разделенного
пробелами.См. CI(1) для деталей.
7. ДИАГНОСТИКА
Статус выхода =0, если нет перекрытий, 1, если есть перекрытие,
2 - при ошибке.
8. ИДЕНТИФИКАТОР
Автор: Walter F. Tichy.
Manual Page Revision: 5.6; Release Date: 1995/06/01.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Paul
Eggert.
9. СМ. ТАКЖЕ
rcsintro(1), co(1), ci(1), ident(1), rcsclean(1),
rcsdiff(1), rcsmerge(1), rlog(1), rcsfile(5)
Walter F. Tichy, RCS--A System for Version Control,
Software--Practice & Experience 15, 7 (July 1985),
637-654.
rlog - печать журнальных записей и другой информации о файлах RCS
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. ПРИМЕРЫ 4
5. СРЕДА 4
6. ДИАГНОСТИКА 4
7. ИДЕНТИФИКАЦИЯ 4
8. СМ. ТАКЖЕ 5
9. ОШИБКИ 5
1. ИМЯ
rlog - печать журнальных записей и другой информации о файлах
RCS.
2. ФОРМАТ
rlog [ options ] file...
3. ОПИСАНИЕ
rlog печатает информацию о файлах RCS.
Имена путей, соответствующие суффиксу RCS, означают файлы RCS;
все другие означают рабочие файлы. Имена спарены, как объяснено
в ci(1).
rlog печатает следующую информацию для каждого файла RCS: имя
пути RCS, рабочее имя пути, "голову" (т.е. номер самой поздней
модификации на стволе), ветвь по умолчанию, список доступа, бло-
кировки, символьные имена, суффикс, полное число модификаций,
число модификаций, выбранных для печати и поясняющий текст. За
этим следуют вхождения для выбранных модификаций в обратном хро-
нологическом порядке для каждой ветви. Для каждой модификации
rlog печатает номер модификации, автора, дату/время, состояние,
число добавленных/удаленных строк (относительно предыдущей моди-
фикации), блокиратора модификации (если есть) и журнальную за-
пись. Все времена даются в Координированном Всемирном Времени
(КВВ) по умолчанию; это может быть перезаписано опцией -z.Без
опций rlog печатает полную информацию. Следующие опции ограничи-
вают этот выход.
-L Игнорировать файлы RCS, которые не имеют установки блокирова-
ния. Это удобно в комбинации с -h, -l, и -R.
-R Печатать только имя файла RCS. Это удобно для трансляции ра-
бочего имени пути в имя пути RCS.
-h Печатать только имя пути RCS, рабочее имя пути, "голову",
ветвь по умолчанию, список доступа, блокировки, символьные
имена и суффикс.
- 2 -
-t Печатать то же, что -h, плюс поясняющий текст.
-N Не печатать символьные имена.
-b Печатать информацию о модификациях на ветви по умолчанию, в
норме на наивысшей ветви на стволе.
-ddates
Печатать информацию о модификациях с датой/временем оформ-
ленного ввода в диапазонах, заданных списком дат dates, раз-
деленных точками с запятыми. Диапазон в форме d1d1 выбирает модификации, которые расположены между d1 и
d2 исключительно. Диапазон в форме выбирает все
модификации раньше d. Диапазон в форме d< или >d выбирает
все модификации, датированные позже d. Если за < или > сле-
дует = , то диапазоны - включительные, а не исключительные.
Диапазон в форме d выбирает единственную, самую позднюю мо-
дификацию, датированную d или ранее. Строки даты/времени d,
d1 и d2 - в свободном формате, объясненном в co(1). Кавычки
в норме необходимы, особенно для < и >. Заметим, что разде-
литель - точка с запятой.
-l[lockers]
Печатать информацию только о блокированных модификациях. В
добавление, если дан разделенный запятыми список регистраци-
онных имен блокираторов lockers, то игнорировать все блоки-
ровки, кроме заданных блокираторами. Например, rlog -L -R
-lwft RCS /* печатает имена файлов RCS, блокированных поль-
зователем wft.
-r[revisions]
печатает информацию о модификациях, заданных в разделенном
запятыми списке revisions модификаций и диапазонов. Диапазон
rev1:rev2 означает модификации от rev1 до rev2 на одной вет-
ви, :rev означает модификации от начала ветви до rev включи-
тельно, rev: означает модификации от rev до конца ветви, со-
держащей rev. Ветвь как аргумент означает все модификации на
- 3 -
этой ветви. Диапазон ветвей означает все модификации на вет-
вях в этом диапазоне. Ветвь с точкой на конце означает самую
позднюю модификацию на этой ветви. Чистое -r без модификаций
означает самую позднюю модификацию на ветви по умолчанию, в
норме на стволе.
-sstates
печатает информацию о модификациях, чьи атрибуты состояния
соответствуют одному из состояний, заданных в разделенном
запятыми списке states.
-w[logins]
печатает информацию о модификациях, оформленно введенных
пользователями с регистрационными именами из разделенного
запятыми списка logins. Если logins опущен, то предполагает-
ся регистрационное имя пользователя.
-T Эта опция бездействует; она введена для совместимости с дру-
гими командами RCS.
-V Печатать номер версии RCS.
-Vn Эмулировать RCS версии n при генерации журналов. См. co(1)
для большего.
-xsuffixes
Использовать suffixes для характеризации файлов RCS. См.
ci(1) для большего.
rlog печатает пересечение модификаций, выбранных опциями -d, -l,
-s, и -w, пересеченных с объединением модификаций, выбранных
через -b и -r.
-zzone
специфицирует выходной формат даты и часовой пояс по умолча-
нию для даты в опции -ddates. zone должна быть пустой, чис-
ленным смещением КВВ или специальной строкой LT для местного
времени. Умолчание - пустая zone, которая использует тради-
- 4 -
ционный RCS-формат КВВ без указания часового пояса и со слэ-
шами, разделяющими части даты; иначе времена выдаются в фор-
мате ISO 8601 с указанием часового пояса. Например, если
местное время - 11 января 1990г., 8pm Тихоокеанского Стан-
дартного Времени, восемь часов к западу от КВВ, то время бу-
дет выдано как показано:
опция выход времени
-z 1990/01/12 04:00:00 (умолчание)
-zLT 1990-01-11 20:00:00-08
-z+05:30 1990-01-12 09:30:00+05:30
4. ПРИМЕРЫ
rlog -L -R RCS/*
rlog -L -h RCS/*
rlog -L -l RCS/*
rlog RCS/*
Первая команда печатает имена всех файлов RCS в поддиректо-
рии RCS, который имеет блокировки. Вторая команда печатает
заголовки этих файлов, а третья - заголовки плюс журнальные
записи блокированных модификаций. Последняя команда печатает
полную информацию.
5. СРЕДА
RCSINIT
опции добавляются к началу списка аргументов, разделенного
пробелами. См. ci(1).
6. ДИАГНОСТИКА
Статус выхода =0, если и только если все операции были ус-
пешными.
7. ИДЕНТИФИКАЦИЯ
Автор: Walter F. Tichy.
Manual Page Revision: 5.9; Release Date: 1995/06/16.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Paul
Eggert.
8. СМ. ТАКЖЕ
rcsintro(1), co(1), ci(1), ident(1), rcsclean(1),
rcsdiff(1), rcsmerge(1), rlog(1), rcsfile(5)
Walter F. Tichy, RCS--A System for Version Control,
Software--Practice & Experience 15, 7 (July 1985),
637-654.
9. ОШИБКИ
Разделитель для диапазонов модификаций в опции -r обычно использу-
ется - вместо :, но это ведет к путанице, когда символьные имена
содержат -. Для обратной совместимости rlog -r еще поддерживает
старый разделитель -, но предупреждает, что его употребление уста-
рело.
rcsfile - формат файла RCS
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ОПИСАНИЕ 1
3. ИДЕНТИФИКАЦИЯ 4
4. СМ. ТАКЖЕ 4
1. ИМЯ
rcsfile - формат файла RCS.
2. ОПИСАНИЕ
Содержимое файла RCS описывается приводимой ниже грамматикой.
Текст - в свободном формате: пробел, обратный пробел, табуляция,
нов_строка, вертикальная табуляция, прогон страницы и возврат ка-
ретки (в совокупности - пробельные символы) не имеют значения,кроме
как в строках. Однако пробельные символы не могут появляться внутри
id, num или sym, и файл RCS должен кончаться нов_строкой.
Строки (цепочки) заключены в @. Если строка содержит @, то @ должна
быть удвоена; в ином случае строка может содержать произвольные
двоичные данные.
Мета-синтаксис использует следующие соглашения: `|' разделяет аль-
тернативы; `{' и `}' окружают опциональные фразы; `{' и `}*' окру-
жают фразы, которые надо повторить 0 или более раз; `{' и ` }+' ок-
ружают фразы, которые должны появиться хотя бы один раз и могут
повторяться; терминальные символы даются жирным шрифтом; нетерми-
нальные - курсивом.
rcstext ::= admin {delta}* desc {deltatext}*
admin ::= head {num};
{ branch {num}; }
access {id}*;
symbols {sym : num}*;
locks {id : num}*; {strict ;}
{ comment {string}; }
{ expand {string}; }
{ newphrase }*
delta ::= num
date num;
- 2 -
author id;
state {id};
branches {num}*;
next {num};
{ newphrase }*
desc ::= desc string
deltatext ::= num
log string
{ newphrase }*
text string
num ::= {digit | .}+
digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
id ::= {num} idchar {idchar | num}*
sym ::= {digit}* idchar {idchar | digit}*
idchar ::= любой вводимый графический символ, кроме
специальных
special ::= $ | , | . | : | ; | @
string ::= @{любой символ с удвоением @}*@
newphrase ::= id word* ;
word ::= id | num | string | :
В идентификаторах различается величина символов. Ключевые слова да-
ются только строчными символами. Наборы ключевых слов и идентифика-
торов могут пересекаться. В большинстве сред RCS использует
кодировку ISO 8859/1: видимые графические символы - это коды
041-176 и 240-377, а пробельные символы - 010-015 и 040.
Даты, появляющиеся после ключевого слова date, имеют форму
- 3 -
Г.мм.дд.чч.мм.сс, где Г - год, мм - месяц (01-12), дд - день
(01-31), чч - час (00-23), мм - минута (00-59) и сс - секунда
(00-60). Г содержит только две последние цифры года для годов 1990-
1999 и все цифры для последующих лет. Даты используют григорианский
календарь; время - КВВ.
Продукции newphrase в этой грамматике резервируются для будущих
расширений формата файлов RCS. newphrase не должна начинаться с лю-
бого уже употребляемого ключевого слова.
Узлы delta образуют дерево. Все узлы, чьи номера состоят из одной
пары (например, 2.1, 2.3, 1.3 и т.д.), находятся на стволе и связа-
ны через следующее поле в порядке уменьшения номеров. Головное поле
в узле admin указывает на голову этой последовательности (т.е. со-
держит наивысшую пару). Узел branch в узле admin указывает на ветвь
по умолчанию (или на модификацию) для большинства операций RCS. Ес-
ли он пуст, то ветвь по умолчанию - это наивысшая ветвь на стволе.
Все узлы delta, чьи номера состоят из 2n полей (n>=2) (например,
3.1.1.1, 2.1.2.2 и т.д.), связаны следующим образом. Все узлы, чьи
первые 2n-1 поля номера идентичны, связываются через следующее поле
в порядке возрастания номеров. Для каждой такой последовательности
узел delta, чей номер идентичен первым 2n-2 полям номера узлов
delta в этой последовательности, называется узловой точкой. Поле
ветвей узла содержит список номеров первых узлов всех последова-
тельностей, для которых существует узловая точка. Этот список упо-
рядочен по возрастанию номеров.
Следующая диаграмма показывает пример организации файла RCS.
Голова
|
|
V / \
--------- / \
/ \ / \ | | / \ / \
/ \ / \ | 2.1 | / \ / \
/ \ / \ | | / \ / \
- 4 -
/1.2.1.3\ /1.3.1.1\ | | /1.2.2.2\ /1.2.2.1.1.1\
--------- --------- --------- --------- -------------
^ ^ | ^ ^
| | | | |
| | V | |
/ \ | --------- / \ |
/ \ | \ 1.3 / / \ |
/ \ ---------\ / / \-----------
/1.2.1.1\ \ / /1.2.2.1\
--------- \ / ---------
^ | ^
| | |
| V |
| --------- |
| \ 1.2 / |
---------------------\ /---------
\ /
\ /
|
|
V
---------
\ 1.1 /
\ /
\ /
\ /
3. ИДЕНТИФИКАЦИЯ
Автор: Walter F. Tichy, Purdue University, West
Lafayette, IN, 47907.
Manual Page Revision: 5.6; Release Date: 1995/06/05.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Paul
Eggert.
4. СМ. ТАКЖЕ
rcsintro(1), co(1), ci(1), ident(1), rcsclean(1),
rcsdiff(1), rcsmerge(1), rlog(1), rcsfile(5)
Walter F. Tichy, RCS--A System for Version Control,
Software--Practice & Experience 15, 7 (July 1985),
637-654.
rcsclean - очистка рабочих файлов
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. ОПЦИИ 1
5. ПРИМЕРЫ 3
6. ФАЙЛЫ 3
7. СРЕДА 3
8. ДИАГНОСТИКА 3
9. ИДЕНТИФИКАЦИЯ 3
10. СМ. ТАКЖЕ 3
11. ОШИБКИ 4
1. ИМЯ
rcsclean - очистка рабочих файлов
2. ФОРМАТ
rcsclean [options] [files...]
3. ОПИСАНИЕ
rcsclean удаляет файлы, с которыми никто не работает. rcsclean
-u также разблокирует и удаляет файлы, с которыми работают, но
которые не изменены.
Для каждого данного файла rcsclean сравнивает рабочий файл и мо-
дификацию в соответствующем файле RCS. Если она находит разли-
чия, то она не делает ничего. Иначе она сначала разблокирует мо-
дификацию, если дана опция -u, а затем удаляет рабочий файл, ес-
ли рабочий файл не является перезаписываемым или если модифика-
ция не блокирована. Она регистрирует свои действия выдачей соот-
ветствующих команд rcs -u и rm -f на стандартный выход.
Файлы спарены, как объяснено в ci(1). Если файл не задан, то
очищаются все рабочие файлы в текущем директории. Имена путей,
соответствующие суффиксу RCS, означают файлы RCS; все другие оз-
начают рабочие файлы.
Номер модификации, с которой сравнивается рабочий файл, может
быть приписан к любой из опций -n, -q, -r или -u. Если номер мо-
дификации не специфицирован, то если дана опция -u и пользова-
тель заблокировал модификацию, rcsclean использует эту модифика-
цию; иначе rcsclean использует самую позднюю модификацию на
ветви по умолчанию, в норме на стволе.
rcsclean полезна для целей clean в makefile'ах. См. также
rcsdiff(1), которая распечатывает различия, и ci(1), которая в
норме обращается к предыдущей модификации, если файл не изменял-
ся.
4. ОПЦИИ
-ksubst
Использовать стиль subst подстановки ключевых слов при по-
- 2 -
иске модификации для сравнения. См. co(1) для деталей.
-n[rev]
Не удалять по-настоящему любые файлы или не разблокировать
любые модификации. Использование этой опции скажет вам,
что именно rcsclean могла бы сделать без действительного
выполнения этого.
-q[rev]
Не регистрировать действия, выдаваемые на стандартный вы-
ход.
-r[rev]
Эта опция не имеет другого действия, кроме как специфика-
ции модификации rev для сравнения.
-T Сохраняет время модифицирования файла RCS, даже если файл
RCS изменяется из-за удаления блокировки. Эта опция может
подавлять лишнюю перекомпиляцию, вызванную зависимостью
некоторой другой копии рабочего файла от файла RCS через
make(1). Используйте эту опцию осторожно; она может пода-
вить перекомпиляцию, даже когда она нужна, т.е. когда уда-
ление блокировки означало бы изменение в строках ключевых
слов в другом рабочем файле.
-u[rev]
Разблокировать модификацию rev, если она заблокирована и
не найдено различий.
-V Печатать номер версии RCS.
-Vn Эмулировать RCS версии n. См. co(1) для деталей.
-xsuffixes
Использовать suffixes для характеризации файлов RCS. См.
ci(1) для деталей.
-zzone
Использовать zone как часовой пояс для подстановки ключе-
- 3 -
вых слов; см. co(1) для деталей.
5. ПРИМЕРЫ
rcsclean *.c *.h
удаляет все рабочие файлы, оканчивающиеся на .c или .h, которые
не были изменены после их оформленного вывода.
rcsclean
удаляет все рабочие файлы в текущем директории, которые не были
изменены после их оформленного вывода.
6. ФАЙЛЫ
rcsclean имеет доступ к файлам в основном так же, как ci(1).
7. СРЕДА
RCSINIT
опции добавляются к началу списка аргументов, разделенных
пробелами. Пробелы, предваряемые обратным слэшем, можно
вставлять внутри опций. Опции RCSINIT добавляются к на-
чалу списка аргументов большинства команд RCS. Полезные
опции RCSINIT включают -q, -V, -x, и -z.
8. ДИАГНОСТИКА
Статус выхода = 0, если и только если все операции были успешны-
ми. Пропуск рабочих файлов и файлов RCS незаметно игнорируется.
9. ИДЕНТИФИКАЦИЯ
Автор: Walter F. Tichy.
Manual Page Revision: 1.12; Release Date: 1993/11/03.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1991, 1992, 1993, Paul Eggert.
10. СМ. ТАКЖЕ
ci(1), co(1), ident(1), rcs(1), rcsdiff(1), rcsintro(1),
rcsmerge(1), rlog(1),rcsfile(5)
Walter F. Tichy, RCS--A System for Version Control,
Software--Practice & Experience 15, 7 (July 1985),
637-654.
11. ОШИБКИ
В старых версиях Unix должен быть задан по крайней мере один
файл, что не предусматривает необходимых операций сканирования
директория.
merge - слияние файлов
С О Д Е Р Ж А Н И Е
1. ИМЯ 1
2. ФОРМАТ 1
3. ОПИСАНИЕ 1
4. ОПЦИИ 1
5. ДИАГНОСТИКА 2
6. ИДЕНТИФИКАЦИЯ 2
7. СМ. ТАКЖЕ 2
8. ОШИБКИ 2
1. ИМЯ
merge - слияние файлов.
2. ФОРМАТ
merge [options ] file1 file2 file3
3. ОПИСАНИЕ
merge собирает все изменения, которые ведут от file2 к file3, в
file1. Результат обычно помещается в file1. merge полезна для
комбинирования раздельных изменений в оригинал. Пусть file2 -
оригинал, а file1 и file3 - модификации file2. Тогда merge ском-
бинирует оба изменения.
Возникает конфликт, если и file1 и file3 имеют изменения в общем
сегменте строк. Если конфликт обнаружен, то merge в норме выдает
предупреждение и обрамляет конфликт строками <<<<<<< и >>>>>>>.
Типичный конфликт выглядит примерно так:
<<<<<<< файл A
строки в файле A
=======
строки в файле B
>>>>>>> файл B
Если есть конфликты, то пользователь должен отредактировать ре-
зультат и удалить одну из альтернатив.
4. ОПЦИИ
-A Выдать конфликты, используя стиль -A из diff3(1), если
она поддерживается diff3. Это сливает все изменения, ве-
дущие от file2 к file3, в file1 и генерирует весьма под-
робный вывод.
-E, -e Эти опции специфицируют конфликтные стили, генерирующие
меньше информации, чем -A. См. diff(1) для деталей.
Умолчание - -E. При -e merge не предупреждает о конфлик-
тах.
- 2 -
-L label
Эта опция может быть выдана до трех раз, и она специфи-
цирует метки label для использования их вместо имен фай-
лов в сообщениях о конфликтах. Т.е. merge -L x -L y -L z
a b c генерирует выход, как если бы он был получен от
файлов x, y и z вместо файлов a, b и c.
-p Посылает результаты на стандартный вывод вместо перезапи-
сывания file1.
-q Исполнять "молча"; не предупреждать о конфликтах.
-V Печатает номер версии.
5. ДИАГНОСТИКА
Статус выхода = 0, если нет конфликтов, 1, если они есть и 2 при
ошибке.
6. ИДЕНТИФИКАЦИЯ
Автор: Walter F. Tichy.
Manual Page Revision: 5.7; Release Date: 1995/06/01.
Copyright (C) 1982, 1988, 1989 Walter F. Tichy.
Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
7. СМ. ТАКЖЕ
diff3(1), diff(1), rcsmerge(1), co(1).
8. ОШИБКИ
Обычно не имеет смысла сливать двоичные файлы как текстовые, но
merge может попытаться это сделать.
СЛОВАРЬ
A
alias - псевдоним
B
back end - внутренний интерфейс
backup - резервная копия
binary - исполняемый файл; двоичный
binary distribution - распространение готового продукта
binary file - двоичный файл
break - прерывать, нарушать
bring up to date - обновлять, перевести путем обновления
bugfixes - исправление ошибок
C
caller - пользователь
cancel - отменить
check in - оформленно ввести
check out - оформленно вывести
comment leader - начальный участок с комментариями
commit - фиксировать
contribute - выпустить, предложить
customer installation - инсталляция для потребителя
D
delimitor - ограничитель
deposit - копировать во внешнюю память
descend - спускаться
descriptive text - поясняющий текст
distribution - (внешняя) поставка
E
effective user - номинальный пользователь
enabled - задействован
escape sequence - управляющая последовательность
exempt - отстраненный
F
FAQ (frequently asked questions) - ЧЗВ (часто задаваемые вопросы)
feed - загрузить
file permissions - право доступа к файлу
flag - флаг, опция командной строки, ключ; помечать
front end - внешний интерфейс
ftp-site - ftp-сервер
H
hardcopy - книга, распечатка
head - головной
header - заголовок
I
immediate sub-directory - непосредственный поддиректорий
K
keyword - ключевое слово
L
lie about - подменять
lock - блокировать
locker - блокиратор
log - журнал
log message - запись в журнал, регистрационное сообщение,
журнальная запись
login - регистрация
login name - регистрационное имя пользователя
M
mailing list - список рассылки
major release - старший выпуск
manual page format - формат команды man
matching - подходящий
merge - сливать
merging - слияние
mistag - ошибочно дескриптировать
mode - режим
mounts - подмонтированные файловые системы
N
newsgroup - телеконференция
null-character - нулевой символ (0x00, '\0')
O
override - перезаписать, перекрыть
P
period - точка
permission - право доступа
pipe - выходной канал
prepend - добавить к началу
prompt - приглашать, запрашивать
prune - отрезать, отсечь
Q
quiet - "молчаливый"
quietly - "молча"
R
race - состязания, гонки
read-write - перезаписываемый
reconsile - согласовать, улаживать
relative path - относительный путь
release - выпуск, издание
resurrecting - восстановление
revision - модификация
run - исполнять, выполнять (команду)
S
script - командный файл
secondary storage - внешняя память
semaphore file - семафорный файл
setgid - установка идентификаторов группы
setuid - установка идентификаторов пользователя (УИП)
share - совместно использовать
shell script - командный файл
silently - незаметно
site - WWW-страница, машина (вычислительная)
source - исходный текст
spurious - некондиционный
sticky tag - распределенный дескриптор
strict locking - строгая блокировка
subscribe - подписываться
superuser - привилегированный пользователь
support contract - контракт поддержки
synopsis - (здесь) формат
T
tag - дескриптор; дескриптировать
tape construction - лентопротяжное устройство
time zone - часовой пояс
top - верхний
top revision - самая верхняя модификация
U
undo - ликвидировать, отменить
update - обновление; обновлять
UTC (Coordinated Universal Time)
- КВВ (Координированное Всемирное Время)
V
vendor - поставщик
vendor branch - ветвь поставщика
W
wrapper - обертка