3

我们目前有一个相当大的带有子模块的 git 存储库(大约 10GB),从服务器克隆它需要相当长的时间。我想在我们的项目目录中保留一个本地副本并将其用作构建的来源。项目目录存储在 NFS 安装的驱动器上。

使用 --local 或仅 /path/to/repo 进行克隆时,Git 会创建指向原始存储库的硬链接,但它似乎没有为子模块存储库创建硬链接。我本来期望的

git clone --local --recursive /path/to/origin mycopy

为所有回购创建硬链接。我可以告诉 git 也为子模块使用硬链接吗?

4

1 回答 1

0

我认为这不能通过 buildin 命令完成,但您可以.gitmodules在(或等效)命令之前修改文件git submodule init并稍后恢复原始文件:

git clone --local /path/to/origin mycopy
sed -i '/path = /{h;s,.* = ,,;x};/url = /{s, = .*, = /path/to/origin,;G;s,\n,,}' mycopy/.gitmodules
git -C mycopy submodule update --init
git -C mycopy checkout -- .gitmodules
于 2018-01-03T16:06:05.707 回答