Алексей Махоткин

домашняя страница

CVS — Система Управления Параллельными Версиями

Go to the first, previous, next, last section, table of contents.


Как хранить двоичные файлы

При хранении двоичных файлов встает два вопроса. Первый: CVS по умолчанию преобразует коды конца строк между канонической формой, в которой они хранятся в репозитории (только символ новой строки) и формой, соответствующей операционной системе клиента (например, возврат каретки, за которым следует перевод строки под Windows NT).

Второй вопрос – в двоичном файле могут оказаться данные, похожие на ключевое слово (see section Подстановка ключевых слов), так что эта подстановка должна быть выключена.

Ключ командной строки `-kb’, доступный при использовании некоторых команд CVS, позволяет убедиться, что ни преобразование концов строки, ни подстановка ключевых слов не производятся.

Вот пример создания нового файла с использование флага `-kb’:

$ echo ‘$Id$’ > kotest
$ cvs add -kb -m”A test file” kotest
$ cvs ci -m”Первое фиксирование; файл содержит ключевое слово” kotest

Если файл случайно будет добавлен без `-kb’, можно использовать команду cvs admin для восстановления. Например,

$ echo ‘$Id$’ > kotest
$ cvs add -m”A test file” kotest
$ cvs commit -m”Первое фиксирование; содержит ключевое слово” kotest
$ cvs admin -kb kotest
$ cvs update -A kotest
# Для не-UNIX систем:
# Скопировать откуда-нибудь хорошую копию файла
$ cvs commit -m “Сделать файл двоичным” kotest

Когда вы извлечете файл `kotest’, он не станет двоичным, потому что вы не зафиксировали его как двоичный. Команда cvs admin -kb устанавливает метод подстановки ключевых слов по умолчанию для этого файла, но не изменяет рабочую копию файла, которая у вас есть. Если вам нужно справиться с символами конца строки (при использовании CVS на не-UNIX системах), вам требуется зафиксировать новую копию файла, как показано выше в команде cvs commit. Под UNIX достаточно выполнить cvs update -A.

Однако, используя cvs admin -k для изменения режима подстановки ключевых слов, знайте, что этот режим не подчиняется контролю версий. Это означает, что если, скажем, в старых версиях пакета какой-то файл был текстовым, а затем в новых версиях появился двоичный файл с тем же именем, то CVS не обеспечивает способа извлечь файл в двоичном или текстовом режиме в зависимости от версии пакета, которую вы извлекаете. Для обхода этой проблемы хорошего решения не существует.

Вы можете установить значения по умолчанию, которые используют команды cvs add и cvs import, для выяснения, является ли файл текстовым или двоичным, основываясь на его имени. Например, можно гарантировать, что файлы, чьи имена заканчиваются на `.exe’ являются двоичными. See section Файл `cvswrappers’. В настоящий момент нет способа для определения, является ли файл текстовым или двоичным, в зависимости от его содержимого. Основная трудность при разработке такой возможности — неясно, как различить такие файлы, потому что способы сильно различаются в разных операционных системах.


Go to the first, previous, next, last section, table of contents.

Comments