我有一个main repo,带有4个子模块:
,我想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
存储库,以后再将其添加到我的主存储库中。
谢谢。
答案 0 :(得分:1)
使用--no-checkout
或-n
将自己的kvm存储库克隆到kvm
目录中。根据需要进行设置,从超级项目git submodule absorbgitdirs kvm
中移动存储库并设置其core.worktree
,并将.git
面包屑文件保留在该kvm
工作树中,然后{{ 1}}完成结帐。
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