Можно ли ограничить разветвление и тегирование в CVS на сервере?

Нам нужно преобразовать производственный CVS-репозиторий в SVN. Мы используем CVS2SVN для процесса конвертации, а также некоторые другие инструменты.

Поскольку это живой репозиторий разработки, время простоя в точке переключения репозитория довольно важно. Наши тестовые прогоны базовой конверсии CVS2SVN в настоящее время занимают приблизительно 5 дней, что слишком долго.

Я ищу несколько альтернативных подходов, чтобы сделать процесс несколько инкрементным. Один из подходов требует, чтобы тегирование и ветвление были ограничены в хранилище CVS.

Можно ли ограничить тегирование и ветвление, но разрешить нормальные коммиты в хранилище CVS?

1 ответ

Решение

Таким образом, оказывается, что это возможно с помощью сценария pre-commit taginfo, как подробно описано в разделе администратора руководства здесь.

Файл taginfo

То, что loginfo делает для сообщений журнала, taginfo делает для тегов. Левая сторона taginfo - это регулярные выражения, как обычно, а правая часть - программы. Каждой программе автоматически передаются аргументы при вызове тега CVS в следующем порядке:

arg 1:          tag name
arg 2:          operation ("add" => tag, "mov" => tag -F, "del" => tag -d)
arg 3:          repository
arg 4, 5, etc:  file revision [file revision ...]

Если программа возвращает ненулевое значение, тег отменяется.

Другие вопросы по тегам