Как клонировать CVS-репозиторий с пустыми каталогами
Я конвертирую CVS-репозиторий в Git-репозиторий с помощью следующей команды:
$ git cvsimport -vaikd :pserver:thillaiselvan@192.168.1.11:2401/ -C IVR-GUI GIT
Однако Git игнорирует пустые каталоги в хранилище CVS. Но я хочу, чтобы репозиторий был клонирован, включая эти пустые репозитории. Как я могу заставить Git сделать это?
1 ответ
Git не может отслеживать пустые каталоги, поэтому они не переносятся при конвертации в CVS-Git. Из Git FAQ: "Каталоги добавляются автоматически при добавлении файлов внутри них". Ваши каталоги не появляются, потому что Git ничего не отслеживает в них.
Как отследить пустые репозитории в Git
Одним из обходных путей для отслеживания пустых каталогов является размещение пустого файла, например .gitkeep
в каждом пустом каталоге (.gitkeep
используется по соглашению, но вы можете назвать этот файл как угодно). Отслеживайте файлы, тогда вы сможете клонировать пустые каталоги. Есть несколько других способов добавить пустые каталоги в репозиторий Git.
Вручную скопируйте пустые файлы из существующего хранилища CVS
Следующая команда скопирует все пустые каталоги в вашем репозитории cvs в ваш репозиторий Git (замените фиктивные пути к каталогам)
$ find ~/cvs_repo -type d -empty -exec cp -r {} ~/git_repo/ \;
Затем вы можете добавить эти пустые каталоги в свой проект, выбрав обходной путь, и выполнить что-то вроде $git commit -m "Add empty directories to repository"
,
Автоматизация процедуры с cvsimport
?
Теперь я бы предположил, что cvsimport
будет компенсировать эту разницу в VCS (CVS позволяет отслеживать пустые каталоги, Git нет). Я ничего не знаю об этом инструменте, но, возможно, есть вариант, который вы можете передать, чтобы он автоматически обрабатывал добавление пустых каталогов.