Глава 5. Репозиторий

Содержание

Как сообщить CVS, где находится репозиторий
Как данные хранятся в репозитории
Как данные хранятся в рабочем каталоге
Административные файлы
Несколько репозиториев
Создание репозитория
Резервное копирование репозитория
Перемещение репозитория
Сетевые репозитории
Доступ к репозиторию только для чтения
Временные каталоги на сервере

В репозитории CVS хранит полные копии всех файлов и каталогов, находящихся под контролем версий.

Обычно вам никогда не придется напрямую обращаться к файлам в репозитории. Вместо этого вы будете использовать команды CVS для получения вашей собственной копии файлов в вашем рабочем каталоге, а затем будете работать с этой копией. Когда вы внесли определенные изменения, вы помещаете (или фиксируете) их в репозиторий. Теперь в репозитории хранится информация о сделанных вами изменениях: что именно и когда было изменено и прочая подобная информация. Заметьте, что репозиторий не является подкаталогом рабочего каталога, и обратное также неверно; они находятся в совершенно разных местах.

CVS может обращаться к репозиторию множеством способов. Репозиторий может находиться на локальной машине, на соседней машине или же на машине, находящейся на другом континенте. Чтобы различать способы доступа к репозиторию, его имя начинается с метода доступа. Например, метод доступа :local: означает, что репозиторий находится в локальном каталоге. Например, :local:/usr/local/cvsroot' означает, что репозиторий находится в каталоге /usr/local/cvsroot на компьютере, на котором используется CVS. Другие методы доступа описаны в разделе “Сетевые репозитории”.

Если метод доступа не указан, и имя репозитория не содержит :, то предполагается метод :local:. Если в имени содержится :, то предполагается метод доступа :ext: или :server:. Например, если ваш локальный репозиторий находится в /usr/local/cvsroot, то вы можете использовать /usr/local/cvsroot вместо :local:/usr/local/cvsroot. Но если, например, под Windows NT ваш локальный репозиторий находится в c:\src\cvsroot, то вы должны указать метод доступа, то есть :local:c:\src\cvsroot.

Репозиторий делится на две части. $CVSROOT/CVSROOT содержит административные файлы CVS. Все прочие каталоги содержат модули, определенные пользователем.

Как сообщить CVS, где находится репозиторий

Существует несколько способов сообщить CVS, где искать репозиторий. Вы можете явно задать репозиторий в командной строке с помощью ключа -d (“directory”, каталог):

cvs -d /usr/local/cvsroot checkout yoyodyne/tc

Другим вариантом является установка переменной окружения $CVSROOT в полный путь до корня репозитория, например, /usr/local/cvsroot. Чтобы установить $CVSROOT, пользователи csh и tcsh должны поместить в свой файл ~/.cshrc или ~/.tcshrc такую строку:

setenv CVSROOT /usr/local/cvsroot

Пользователи sh и bash должны поместить в свой файл .profile или .bashrc такие строки

CVSROOT=/usr/local/cvsroot
export CVSROOT

Имя репозитория, указанное с помощью -d, будет использоваться вместо указанного в переменной окружения $CVSROOT. Когда вы извлечете рабочую копию из репозитория, эта копия будет помнить, из какого именно репозитория ее извлекли (эта информация хранится в файле CVS/Root в рабочем каталоге).

Ключ -d и файл CVS/Root переопределяют репозиторий, заданный в переменной окружения $CVSROOT. Если репозиторий, заданный ключом -d, отличается от репозитория, указанного в файле CVS/Root, используется первый из них. Конечно же, для правильного функционирования в обоих местах должен быть упомянут один и тот же репозиторий.