我仍在尝试解决 Git 子模块的问题。假设我正在使用指向公共存储库的子模块,而我只有读取权限。
当该存储库脱机并且不再可访问时,我的项目会发生什么?
这是 git/DSCM 的优点之一:您的本地克隆是一个完整的常设存储库。子模块也不例外。
任何“中央”存储库只是项目开发人员agree
将更改推送到的位置。用最简单的术语来说,写入权限意味着您可以推送到这个预先商定的位置。从理论上讲,您甚至可以将多个“中央”存储库主机联网,并让开发人员推送到每个主机,或者让每个存储库运行挂钩以相互同步。
因为 git 存储库(包括子模块)的每个克隆本身都是一个完整的存储库,所以如果该中央官方推送位置发生更改或消失,您仍然拥有一个完全正常工作的存储库,具有对本地克隆的完全读/写访问权限。
如果官方子模块项目开发人员决定他们只是想重新定位他们的“中央”克隆,那么您所要做的就是更新子模块的遥控器以指向新的正确位置。
看:
更新
假设您的项目可以被其他人访问。这隐含地意味着这些用户还需要访问您的项目使用的任何子模块。
您可以重新托管本地子模块(称为“分叉”)并修改主项目存储库以引用分叉存储库。这比复制/粘贴更可取,即使官方回购仍然存在,这也可能是一个好主意。当然,这取决于提供原始项目的许可证。
这是一个好主意的几个原因:
official
中央存储库的写入权限的情况下对您的分叉进行更改。在某种程度上,子模块被视为单独的存储库。因此,如果您的子模块存储库脱机 - 无法更新子模块。
当您使用子模块时,您意味着在整个开发周期中所有开发人员都可以访问 repo。
仅对相对稳定的组件使用子模块。
您的存储库是您的,您仍然拥有以前所做的一切。如果您可以找到该项目的其他来源,只需更改 URL。里面有管理分发的.gitmodules
行政协助,没有什么说你必须使用建议的 URL。您的仓库使用.git/config
. git submodule
只加载默认值。