Лучшие практики использования git с CVS

Каковы ваши лучшие практики и советы по использованию git для взаимодействия с хранилищем CVS?

5 ответов

Решение

Я написал ответ на подобный вопрос здесь.

Это удивительно хорошо работает, когда вы вынуждены продолжать вносить изменения в центральное хранилище CVS.

Я работал только с Git-CVS, чтобы продемонстрировать Git для друга, но это было очень просто.

  • Вам необходимо установить текущую копию cvsps, Git cvsimport использует это для доступа к истории CVS.
  • Мы обнаружили, что для большого проекта начальная настройка была намного быстрее, если взять полную копию репозитория CVS на свой компьютер и выполнить git cvsimport локально:

    $ rsync rsync://yourprojecthost.com/cvsroot/yourproject/*  
    $ mkdir myproject.git  
    $ cd myproject.git  
    $ git cvsimport -p -x -v -d :local:/path/to/cvsroot/yourproject 
    

Обратите внимание, что -x после -p очень важен. Это передает -x в cvsps. Для получения дополнительной информации см. Справочную страницу cvsps.

Я написал детали моего собственного рабочего процесса для удаленного CVS, локального Git

Слегка мета-ответ. Если вы вынуждены использовать git "партизанский стиль", т. Е. Ваша компания застряла с использованием cvs для контроля версий и вы используете git на своей рабочей станции, чтобы упростить жизнь, вы можете подумать о том, чтобы сделать что-то подобное;

CVS=realCvsPath
# commit to the git first
if ($ARGV[0] && $ARGV[0] eq "commit")
{
system 'git commit -a';
}

# execute the appropriate cvs program
# ===================================
exec "$CVS", @ARGV

Вызов этого файла cvs и включение его в путь перед реальной командой CVS. В противном случае вы можете использовать git коммиты старше cvs, что не очень полезно...

Если восходящий поток на 100% в CVS (например, OpenBSD или многих его подпроектах, таких как mdocml или ports-readmes), и особенно если он такой же ржавый, как дерево CVS OpenBSD (например, иногда даже с перезаписью истории), я нахожу довольно полезно просто зафиксировать основной CVS/{Entries,Repository,Root} файлы прямо в мой git репозиторий.

Это позволяет очень легко не иметь несколько независимых рабочих пространств, сделать возможным оформление заказа с помощью git на любой машине, а потом cvs up на месте, или cvs diff генерировать правильные патчи CVS для рассылки git-less сопровождающим.

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