Лучшие практики использования git с CVS - PullRequest
48 голосов
/ 27 февраля 2009

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

Ответы [ 5 ]

21 голосов
/ 02 марта 2009

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

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

11 голосов
/ 27 февраля 2009

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

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

    $ 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 .

8 голосов
/ 02 июля 2010

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

1 голос
/ 02 июня 2016

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

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

1 голос
/ 16 июня 2009

Слегка мета-ответ. Если вы вынуждены использовать git 'guerilla style', т. Е. Ваша компания застряла с использованием 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, что не очень полезно ...

...