Можно ли ограничить разветвление и тегирование в 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 ...]
Если программа возвращает ненулевое значение, тег отменяется.