git 从根仓库稀疏检出子模块
git sparse-checkout of a submodule from a root repo
我有一个带有 4 个子模块的 main repo:
- kvm
- libvmi
- qemu
- 硝基
我想 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
”命令?
注:
我一直在 Whosebug 上或博客文章中寻找解决方案:
但它们对我不起作用,因为我不想克隆一个单独的 kvm
存储库,然后再将其添加到我的主存储库中。
谢谢。
使用 --no-checkout
aka -n
自己克隆 kvm 存储库到 kvm
目录。根据需要进行设置,git submodule absorbgitdirs kvm
从超级项目移动 repo 并设置其 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
我有一个带有 4 个子模块的 main repo:
- kvm
- libvmi
- qemu
- 硝基
我想 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
”命令?
注:
我一直在 Whosebug 上或博客文章中寻找解决方案:
但它们对我不起作用,因为我不想克隆一个单独的 kvm
存储库,然后再将其添加到我的主存储库中。
谢谢。
使用 --no-checkout
aka -n
自己克隆 kvm 存储库到 kvm
目录。根据需要进行设置,git submodule absorbgitdirs kvm
从超级项目移动 repo 并设置其 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