git - 将 Git 存储库和子模块镜像到离线源
问题描述
所以我意识到有类似的问题,但他们似乎都没有回答如何将存储库镜像到离线位置的问题,而无需在超级项目之外手动组织子模块。大多数问题都是关于“在线”镜像,或者没有子模块的离线镜像。
我的第一个想法是为我的超级项目创建一个镜像,但由于 repo 是裸露的,你不能运行git submodule update
.
现在,我知道在这种情况下.gitmodules
,使用相对路径而不是绝对路径对您有好处,我们已经这样做了。
但是我仍然不太了解拥有超级项目及其所有子模块的镜像的最佳方式。
我们的项目由一个包含许多子模块(约 50 个,但没有嵌套)的存储库组成,因此我试图避免手动维护它们。
这必须是可能的,但我还没有偶然发现最好的组织是什么,以及如何找回它。
任何帮助将不胜感激!
谢谢你们。
解决方案
我想我遇到了与您的问题类似的问题。我的问题是不同网络上的开发人员有不同的子模块路径。我的解决方案是使用url.PATH.insteadOf URL
并设置一个变量来填充 URL。见下文。我在我的 .bashrc 中设置 GITPUB 以指向我存储所有公共存储库的位置。
git config --global url.file:///MY/PATH/.insteadOf file:///GITPUB
git config -f .gitmodules submodule.MYSUBMODULE.url=file:///GITPUB/subrepo.git
git submodule sync MYSUBMODULE
git submodule update MYSUBMODULE
您必须为每个子模块执行此操作,但在脚本中执行此操作很容易。
我们通过在 repo.git 和每个 submodule.git 中运行以下命令来创建 repo 和子模块的包。git bundle create myrepo.bundle --all
. 您可以使用 进行增量更新since=
。git bundle create myrepo.bundle --all --since=8/30/19
另一方面,您可以从捆绑包中提取git pull myrepo.bundle my_branch
如果进行完整导出,您可以使用镜像捆绑包git clone --mirror myrepo.bundle
推荐阅读
- docker - 为什么 Redis 会在几个小时后删除我的数据?
- performance - netperf 中本地发送大小 (-m) 和发送缓冲区大小 (-s) 的区别?
- r - 当我导入一个 excel 文件时,字符列带有数字
- html - 如何为幻灯片创建淡入淡出的悬停效果?
- python - python将文件从一个目录删除到另一个目录
- react-native - Expo React-Native 应用中 Stripe PaymentIntent 的确认
- css - 重构 Sass 关键帧停止
- google-cloud-platform - 策略疑难解答错误:“您无权查看特定组成员身份。”
- javascript - 绝对位置增加元素的高度
- oop - “耦合”和“避免外部依赖”的概念是否有相反的目标?