Я возрождаю довольно старый проект кода, когда я регулярно использовал CVS, как компонент в новом проекте, над которым я уже работал с использованием git. У меня все еще есть доступ к архиву CVS, в котором находится модуль старого проекта, поэтому я просто собирался использовать git-cvsimport, чтобы получить историю коммитов и перейти оттуда. Тем не менее, это просто создание нового репозитория git внутри текущего. Вполне возможно, что мне нужно сделать это как многошаговый процесс, где я перехожу в CVS -> fresh git repository, а затем использую что-то еще, чтобы вставить его в существующий 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 обладает магией, позволяющей делать такие действия конечно, но я не смог найти очевидного соответствия моей ситуации.