Как клонировать 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 нет). Я ничего не знаю об этом инструменте, но, возможно, есть вариант, который вы можете передать, чтобы он автоматически обрабатывал добавление пустых каталогов.

Другие вопросы по тегам