Лучшие практики использования 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 сопровождающим.