Я воскрешаю довольно старый проект кода, когда я регулярно использовал CVS, в качестве компонента в новом проекте, над которым я уже работал с помощью git. У меня все еще есть доступ к архиву CVS, в котором находится модуль старого проекта, поэтому я просто собирался использовать git-cvsimport, чтобы получить историю коммитов и перейти оттуда. Однако это просто создание нового репозитория git внутри текущего. Вполне возможно, что мне нужно сделать это как многоступенчатый процесс, в котором я перехожу CVS -> свежий репозиторий git, а затем использую что-то еще, чтобы поместить его в существующий репозиторий git.
Запускаем это в newproj / newsubdir ($ CVSROOT уже правильно настроен в моей конфигурации оболочки):
git cvsimport -k -o master -u -s \- -A ~/Documents/cvs-authors.txt oldproj
дает мне новый репозиторий newproj / newsubdir / .git / со всеми правильными коммитами (комментарии, временные метки, история) и с HEAD там, где я хочу.
Я хочу, чтобы исторические коммиты CVS всегда были в newproj / newsubdir / oldproj-file1, newproj / newsubdir / oldproj-file2 и т. Д. По моему опыту, у git есть волшебство, чтобы делать такие вещи, но я не мог найти очевидного соответствия моей ситуации.