Как я могу синхронизировать CVS и репозиторий git? Какой сценарий поможет мне с этим справиться?

Да, я знаю, что мне следует отказаться от CVS, но это не мое решение, и CVS будет существовать некоторое время из-за «устаревшей» поддержки. Однако я считаю, что шаг 1 - показать репо в контексте git. По этой причине я сначала хотел бы просто синхронизировать CVS -> «только для чтения» Git.

Затем я могу вручную вернуть изменения в репозиторий git обратно в CVS.

Какие инструменты я могу использовать для этого? Что лучше? Чего нельзя сделать (я полагаю, что все CVS можно перенести в Git, и мне не нужно систематически делать обратное).

Спасибо!


person Dan Bolser    schedule 08.03.2012    source источник


Ответы (1)


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

В итоге я обнаружил, что cvs2git более надежен. Однако этот инструмент не поддерживает инкрементные преобразования. Однако вы можете обойти это, выполнив полное преобразование cvs2git, а затем отправив результат в свое текущее зеркало. Преимущество этого заключается в том, что ваши пользователи git могут при необходимости нажимать рабочие ветки, если они не делают коммитов в зеркалированных ветвях. Это хорошо работает уже около года на довольно большом репозитории (10 лет работы, полмиллиона LOC).

person patthoyts    schedule 08.03.2012