С новой редкой функцией контроля в Мерзавце 1.7.0, действительно ли возможно просто получить содержание подкаталога как то, как Вы можете в SVN? Я нашел этот пример, но он сохраняет полную структуру каталогов. Предположите, что я просто хотел содержание 'perl' каталога без фактического каталога, названного 'perl'.
- РЕДАКТИРОВАНИЕ-
Пример:
Мой репозиторий мерзавца содержит следующие пути
repo/.git/
repo/perl/
repo/perl/script1.pl
repo/perl/script2.pl
repo/images/
repo/images/image1.jpg
repo/images/image2.jpg
repo/doc/
repo/doc/readme.txt
repo/doc/help.txt
То, что я хочу, должно смочь произвести из вышеупомянутого репозитория это расположение:
repo/.git/
repo/script1.pl
repo/script2.pl
Однако с текущей редкой функцией контроля, кажется, что только возможно добраться
repo/.git/
repo/perl/script1.pl
repo/perl/script2.pl
который НЕ является тем, что я хочу.
Вам все равно нужно клонировать весь репозиторий, в котором будут все файлы. Вы можете использовать флаг --depth
, чтобы получить только ограниченное количество истории.
После клонирования хранилища трюк с деревом чтения ограничивает ваш "взгляд" на хранилище только теми файлами или каталогами, которые находятся в файле .git/info/sparse-checkout
.
Я написал быстрый скрипт, чтобы помочь управлять разреженностью, поскольку на данный момент он немного недружелюбен:
#!/bin/sh
echo > .git/info/sparse-checkout
for i in "$@"
do
echo "$i" >> .git/info/sparse-checkout
done
git read-tree -m -u HEAD
Если вы сохраните этот скрипт как git-sparse. sh
в путь, указанный вызовом git --exec-path
, то вы можете запустить git sparse foo/ bar/
, чтобы "проверить" только каталоги foo и bar, или git sparse '*'
, чтобы вернуть всё обратно.
Короткий ответ - нет. Git видит все файлы как единое целое.
Я рекомендую вам разбить репозитории на логические части. Отдельный для perl, изображений и документов. Если вам также необходимо поддерживать стиль uber-репо, вы можете создать репо, состоящее из подмодулей .