git sparse-checkout подмодуля из корневого репозитория

У меня есть основной репозиторий с 4 подмодулями:

  • квм
  • libvmi
  • кему
  • нитро

и я хотел бы sparse-checkout kvm, чтобы отфильтровать несколько надоедливых файлов, которые несовместимы с ограничениями файловой системы в Windows (AUX — это зарезервированное имя файла, а дерево kvm содержит aux.{h|c})

Я понимаю, как сделать sparse-checkout в обычном репозитории, но когда я делаю то же самое в подмодуле, это не работает, каталог .git/modules отсутствует:

git clone https://github.com/KVM-VMI/kvm-vmi/
git -C kvm config core.sparseCheckout true
echo "!drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.*" >> .git/modules/kvm/info/sparse-checkout # ignore aux.*
echo "/*" >> .git/modules/kvm/info/sparse-checkout # checkout everything else
git submodule update --init

Первая команда echo завершится ошибкой, поскольку .git/modules еще не создана.

Я не знаю, кто отвечает за создание этого каталога.

Я где-то пропустил команду "init"?

Примечание:

Я искал решения в Stackoverflow или в сообщениях в блогах:

но у меня они не работают, потому что я не хочу клонировать отдельный репозиторий kvm, а затем добавлять его в свой основной репозиторий.

Спасибо.


person Wenzel    schedule 29.12.2019    source источник


Ответы (1)


Клонируйте репозиторий kvm самостоятельно с помощью --no-checkout, также известного как -n, в каталог kvm. Настройте его по своему усмотрению: git submodule absorbgitdirs kvm из суперпроекта, чтобы переместить репозиторий и установить его core.worktree, и оставить файл хлебных крошек .git в этом рабочем дереве kvm, и git -C kvm reset --hard, чтобы завершить проверку.

git clone https://github.com/KVM-VMI/kvm-vmi
cd kvm-vmi
git submodule init
git clone -n `git config submodule.kvm.url` kvm
mkdir kvm/.git/info

и ты готов к

mkdir kvm/.git/info
git -C kvm config core.sparsecheckout true
printf %s\\n '/*' '!aux.*' >kvm/.git/info/sparse-checkout
git submodule absorbgitdirs kvm
git -C kvm reset --hard
person jthill    schedule 29.12.2019