2012-03-08 1 views
3

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

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

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

Спасибо!

ответ

3

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

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