git - 是否可以硬链接(hard link)本地 git 子模块存储库?

标签 git git-submodules

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

当使用 --local 或/path/to/repo 进行克隆时,Git 会建立到原始存储库的硬链接(hard link),但它似乎不会为子模块存储库建立硬链接(hard link)。我早该想到

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

为所有 repo 创建硬链接(hard link)。我可以告诉 git 也对子模块使用硬链接(hard link)吗?

最佳答案

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

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

关于git - 是否可以硬链接(hard link)本地 git 子模块存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15021096/

相关文章:

git - 使用 pygit2 创建提交

python - GitPython:获取尚未应用的远程提交列表

git - 为什么 git svn 不能克隆一个裸仓库?

git - Git “pairing broken” 和 “unknown” 状态是什么意思,它们何时出现?

python - gitpython 使用 PYTHON 检查文件是否有任何更改

git子模块更新 "no-fetch"

当我 checkout master 时,git 子模块有 "new commits"

git - 在 git 子模块中显示未推送的提交

git - 如何使用子模块和 n 层 git 存储库策略

git - 为什么我不能在删除后添加回 git 子模块