Etc.: CVS – Система Управления Параллельными Версиями
Начинаем проект под CVS
Так как переименование файлов и перемещение их между каталогами слегка неудобно, первое, что вам следует сделать, когда вы начинаете новый проект -- продумать организацию файлов. Собственно, перемещать и переименовывать файлы можно, но это, во-первых, увеличивает возможность недопонимания, а во-вторых, у CVS есть некоторые неполадки, например, при переименовании каталогов. See section Перемещение и переименование файлов.
Дальнейшие действия зависят от конкретной ситуации.
Первым шагом будет создание файлов в репозитории. Это может быть сделано несколькими различными способами.
Когда вы начнете использовать CVS, вы, скорее всего, уже имеете несколько проектов, которые можно поместить под контроль CVS. В этих случаях самым простым методом будет использование команды import
. Самым простым объяснением, вероятно, будет привести пример. Если файлы, которые вы хотите поместить под CVS, находятся в `wdir', а вы хотите, чтобы они появились в репозитории в каталоге `$CVSROOT/yoyodyne/rdir', вы можете сказать:
$ cd wdir
$ cvs import -m "Imported sources" yoyodyne/rdir yoyo start
Если вы не укажете журнальное сообщение с помощью ключа командной строки `-m', то CVS запустит редактор, в котором можно будет набрать это сообщение. Строка `yoyo' -- это тэг производителя, а `start' -- это тэг релиза. В данном контексте они могут не иметь назначения, но CVS требует их присутствия. See section Слежение за чужими исходными текстами, за дальнейшей информацией.
Теперь вы можете проверить, что все работает и удалить ваш исходный каталог.
$ cd ..
$ mv dir dir.orig
$ cvs checkout yoyodyne/dir # объяснение следует
$ diff -r dir.orig yoyodyne/dir
$ rm -r dir.orig
Было бы неплохо удалить изначальные файлы, чтобы случайно не начать редактировать их в dir без использования CVS. Конечно же, перед удалением хорошо было бы убедиться, что у вас есть резервная копия исходных текстов.
Команда checkout
получает в качестве аргумента имя модуля (как в предыдущих примерах) или имя каталога относительно $CVSROOT
, как в вышеприведенном примере.
Хорошо было бы проверить, что права доступа на созданные CVS каталоги правильны, и что эти каталоги принадлежат должным группам. See section Права доступа к файлам.
Если какие-то из файлов, которые нужно импортировать, являются бинарными, вам потребуется использовать обертки, чтобы указать, какие именно. See section Файл `cvswrappers'.
Если у вас есть проект, который обслуживается другой системой контроля версий, например, RCS, вы можете захотеть поместить эти файлы под управление CVS и сохранить историю изменения этих файлов.
- Из RCS
- Если вы использовали RCS, найдите все RCS-файлы, обычно файлу `foo.c' будет соответствовать файл `RCS/foo.c,v' (этот файл может также находиться в другом месте, обратитесь к документации на RCS. Затем создайте соответствующие каталоги в CVS, если они еще не существуют. Затем скопируйте файл в соответствующие каталоги в репозитории (имя в репозитории должно совпадать с именем исходного файла с добавленным `,v'; файлы находятся прямо в соответствующем каталоге репозитория, а не в подкаталоге `RCS/'. Это --- один из редких случаев, когда желателен прямой доступ к репозиторию, без использования команд CVS. Теперь вы можете извлечь новый рабочий каталог. RCS-файл не должен быть заблокирован, когда вы перемещаете его под управление CVS, иначе у CVS будут проблемы при работе с этим файлом.
- Из другой системы контроля версий
- Многие системы контроля версий способны экспортировать RCS-файлы в стандартном формате. Если ваша система умеет так делать, экспортируйте RCS-файлы и следуйте вышеприведенным инструкциям. Если это не так, вероятно, лучшим выходом будет написать скрипт, который извлекает каждую ревизию файла, используя интерфейс командной строки старой системы, а затем фиксирующий эти ревизии в CVS. Скрипт `sccs2rcs', упомянутый ниже, является хорошим примером.
- Из SCCS
- В каталоге `contrib/' среди исходных текстов CVS есть скрипт `sccs2rcs', конвертирующий файлы SCCS в файлы RCS. Замечание: вы должны выполнить этот скрипт на машине, на которой установлен как SCCS, так и RCS, и этот скрипт не поддерживается.
- Из PVCS
- В каталоге `contrib/' среди исходных текстов CVS есть скрипт `pvcs_to_rcs', конвертирующий архивы PVCS в файлы RCS. Вы должны выполнить этот скрипт на машине, на которой установлены как PVCS, так и RCS, и как и все прочее в каталоге `contrib/', этот скрипт не поддерживается. Детали описаны в комментариях к скрипту.
Для нового проекта самым простым способом, вероятно, будет создать пустую структуру каталогов, например:
$ mkdir tc
$ mkdir tc/man
$ mkdir tc/testing
Затем используйте команду import
, чтобы создать соответствующую (пустую) структуру каталогов внутри репозитория:
$ cd tc
$ cvs import -m "Created directory structure" yoyodyne/dir yoyo start
Затем используйте команду add
, чтобы добавлять файлы и новые каталог по мере их появления.
Убедитесь, что права доступа, которые CVS дает новым каталогам в `$CVSROOT', правильны.
Следующим шагом будет определение модуля в файле `modules'. Это необязательно, но модули удобны для группирования связанных файлов и каталогов.
В простых случаях нижеследующих шагов достаточно для определения модуля.
- извлеките рабочую копию файла `modules':
$ cvs checkout CVSROOT/modules
$ cd CVSROOT
- отредактируйте этот файл, вставив в него строку, определяющую модуль. См. See section Административные файлы. Полное описание файла `modules' можно найти в See section Файл `modules'. Например, для описания модуля `tc' можно использовать такую строку:
tc yoyodyne/tc
- зафиксируйте ваши изменения в файле `modules'
$ cvs commit -m "Added the tc module." modules
- Освободите модуль
CVSROOT
.
$ cd ..
$ cvs release -d CVSROOT
Далее >>>