簡體   English   中英

git sparse-checkout 來自根倉庫的子模塊

[英]git sparse-checkout of a submodule from a root 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庫,然后kvm其添加到我的主存儲庫中。

謝謝。

使用--no-checkout aka -n自己克隆 kvm 存儲庫到kvm目錄。 git submodule absorbgitdirs 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM