rcsintro - введение в команды RCS



С О Д Е Р Ж А Н И Е
1. ИМЯ 1 2. ОПИСАНИЕ 1 2.1 Функции RCS 1 2.2 Начало работы с RCS 2 2.3 Автоматическая идентификация 5 3. ИДЕНТИФИКАЦИЯ 6 4. СМ. ТАКЖЕ 6
1. ИМЯ rcsintro - введение в команды RCS 2. ОПИСАНИЕ Revision Control System (RCS) управляет множественными модифи- кациями файлов. RCS автоматизирует хранение, поиск, регистрацию, идентификацию и слияние файлов. RCS полезна для текста, когда он часто пересматривается (модифицируется), например, для программ, документации, графики, деловых бумаг и писем. Базовый пользовательский интерфейс крайне прост. Новичку надо выучить только две команды: ci(1) и co(1). ci, сокращение для "check in" (оформленный ввод), помещает содержимое файла в ар- хивный файл, называемый файлом RCS. Файл содержит все модифика- ции (revisions) конкретного файла. co, сокращение для "check out" (оформленный вывод), ищет модификации из файла RCS. 2.1 Функции RCS - Хранить и искать множественные модификации текста. RCS со- храняет все старые модификации экономным по памяти способом. Изменения более не разрушают оригинал, так как предыдущие модификации остаются недоступными. Модификации можно искать согласно диапазонам номеров модификаций, символическим име- нам, датам, авторам и состояниям. - Поддерживать полную историю изменений. RCS автоматически регистрирует все изменения. Кроме текста каждой модификации, RCS сохраняет автора, дату/время оформленного ввода и жур- нальную запись (регистрационное сообщение), суммируя измене- ния. Регистрация облегчает нахождение того, что случилось с модулем, без необходимости сравнивать листинги исходных текстов или консультироваться с коллегами. - Разрешать конфликты доступа. Когда два или более программи- стов хотят модифицировать одну и ту же модификацию, RCS пре- дупреждает программистов и предотвращает одну модификацию от разрушения другой. - 2 - - Поддерживать дерево модификаций. RCS может поддерживать отдельные линии разработки для каждого модуля. Она сохраняет структуру дерева, которая представляет наследственные взаи- моотношения среди модификаций. - Сливать модификации и разрешать конфликты. Две отдельные ли- нии разработки модуля могут быть соединены слиянием. Если сливаемые модификации воздействуют на одни и те же участки кода, то RCS предупреждает пользователя об изменениях типа перекрытия. - Управлять выпусками (releases) и конфигурациями. Модифика- циям можно присваивать символические имена, и их можно мар- кировать как выпускаемые, стабильные, экспериментальные и т.д. С учетом этих возможностей конфигурации модулей могут быть описаны просто и прямо. - Автоматически идентифицировать каждую модификацию именем, номером модификации, временем создания, автором и т.д. Иден- тификация подобна штампу, который можно вставить в подходя- щее место в тексте модификации. С идентификацией проще определить, какие модификации каких модулей составляют дан- ную конфигурацию. - Минимизировать внешнюю память. RCS нуждается в некотором лишнем пространстве для модификаций (только для их разли- чий). Если удаляются промежуточные модификации, то соответс- твующие кусочки сжимаются в согласии с этим. 2.2 Начало работы с RCS Пусть у вас есть файл f.c, который вы хотите поставить под управление RCS. Если вы еще не сделали этого, то создайте дирек- торий RCS командой mkdir RCS а затем вызовите команду оформленного ввода - 3 - ci f.c Эта команда создает файл RCS в директории RCS, сохраняет f.c в нем как модификацию 1.1 и удаляет f.c. Она также запрашивает у вас описание. Описание должно быть форматом содержания файла. Все позднейшие команды оформленного ввода будут запрашивать у вас ввод регистрации, которая должна суммировать производимые вами изменения. Файлы в директории RCS называются файлами RCS; другие называются рабочими файлами. Для возвращения рабочего файла f.c в предыду- щем примере используйте команду оформленного вывода co f.c Эта команда извлекает самую позднюю модификацию из файла RCS и пишет ее в f.c. Если вы хотите редактировать f.c, то надо блоки- ровать его при его оформленном выводе командой co -l f.c Теперь вы можете редактировать f.c. Пусть после редактирования вы хотите знать сделанные вами изме- нения. Команда rcsdiff f.c укажет вам различия между самой поздней оформленно введенной версией и рабочим файлом. Вы можете оформленно ввести файл, выз- вав ci f.c Это должным образом дает приращение номеру модификации. Если ci выдает сообщение ci error: no lock set by your name - 4 - то это значит, что вы пытались оформленно ввести файл, не блоки- ровав его при оформленном выводе. Конечно, уже поздно делать оформленный вывод с блокировкой, так как другой оформленный вы- вод перезапишет ваши модифицирования. Вместо этого вызовите rcs -l f.c Эта команда заблокирует для вас самую позднюю модификацию, если кто-то другой не сделал этого до вас. В этом случае вам придется вести переговоры с этой личностью. Блокирование гарантирует, что вы и только вы можете оформленно вводить следующее обновление и тем избежите неприятных проблем, если несколько человек работают на одном файле. Если даже моди- фикация блокирована, ее можно оформленно вывести для чтения, компиляции и т.д. Все, что предотвращается блокированием, это оформленный ввод кем-то, кроме блокиратора. Если ваш файл RCS - личный (private), т.е. если вы - единствен- ный человек, собирающийся помещать модификации в него, то стро- гая блокировка не необходима и вы можете выключить ее. Если строгая блокировка выключена, то владельцу файла RCS не нужна блокировка для оформленного ввода; всем другим нужна. Включение и выключение блокирования производится командами rcs -U f.c и rcs -L f.c Если вы не хотите переполнять ваш рабочий директорий файлами RCS, то создайте поддиректорий с именем RCS в вашем рабочем ди- ректории и перепишите туда все ваши рабочие файлы. Команды RCS заглянут в поисках нужных файлов прежде всего в этот директорий. Все команды, приведенные выше, будут здесь работать без всякого модифицирования. (Реально пары файлов RCS и рабочих файлов могут специфицироваться тремя способами: (a) заданы оба, (b) задан только рабочий файл, (c) задан только файл RCS. И файлы RCS и рабочие файлы могут иметь произвольные путевые префиксы; команды RCS спаривают их разумно.) - 5 - Для избежания удаления рабочего файла при оформленном вводе (ес- ли вы хотите продолжать редактирование или компиляцию) вызовите ci -l f.c или ci -u f.c Эти команды оформленно вводят f.c как обычно, но совершают неяв- ный оформленный вывод. Первая форма также блокирует оформленно вводимую модификацию, а вторая нет. Таким образом, эти опции экономят вам одну операцию оформленного вывода. Первая форма по- лезна при желании продолжить редактирование, вторая - при жела- нии только читать файл. Обе обновляют маркеры идентификации в вашем рабочем файле (см. ниже). Вы можете дать ci любой номер, присваиваемый оформленно вводи- мой модификации. Пусть все ваши модификации пронумерованы 1.1, 1.2, 1.3 и т.д. и вы хотели бы начать выпуск 2. Команда ci -r2 f.c или ci -r2.1 f.c присвоит номер 2.1 новой модификации. С этого места ci будет ну- меровать последующие модификации 2.2, 2.3 и т.д. Соответствующие команды co co -r2 f.c и co -r2.1 f.c ищут самую позднюю модификацию с номером 2.x и модификацию 2.1 соответственно. co без номера модификации выбирает самую позднюю модификацию на стволе, т.е. наивысшую модификацию с номером, состоящим из двух полей. Номера с более чем двумя полями нужны для ветвей. Например, для начала ветви с модификации 1.3 вызови- те ci -r1.3.1 f.c Эта команда начинает ветвь с номером 1 от модификации 1.3 и присваивает номер 1.3.1.1 новой модификации. Для большей инфор- мации о ветвях см. rcsfile(5). 2.3 Автоматическая идентификация RCS может вставлять специальные строки (цепочки) для идентифика- - 6 - ции в ваш исходный текст и объектный код. Для получения такой идентификации поместите маркер $Id$ в ваш текст, например, в комментарий. RCS заменит этот маркер строкой в форме $Id: filename revision date time author state $ С таким маркером на первой странице каждого модуля вы всегда мо- жете видеть, с которой модификацией вы работаете. RCS поддержи- вает маркеры для дат автоматически. Для помещения маркеров в ваш объектный код просто вставляйте их в символьные строки. В языке C это делается так: static char rcsid[] = "$Id$"; Команда ident извлекает такие маркеры из любого файла, даже из объектного кода и дампов. Таким образом, ident позволяет нахо- дить, какие модификации каких модулей использованы в данной программе. Может быть полезно также вставить маркер $Log$ в ваш текст внутри комментария. Такой маркер собирает регистрационные сооб- щения, которые затребуются во время оформленного ввода. Таким образом, вы можете поддерживать полную историю вашего файла пря- мо внутри него. Есть несколько дополнительных идентификационных маркеров; см. co(1) для деталей. 3. ИДЕНТИФИКАЦИЯ Автор: Walter F. Tichy. Manual Page Revision: 5.3; Release Date: 1993/11/03. Copyright (C) 1982, 1988, 1989 Walter F. Tichy. Copyright (C) 1990, 1991, 1992, 1993, 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.