Github或任何其他基于云的存储库服务(Gitlab,Bitbucket)如何存储源代码文件和目录?

nkt*_*tsg 4 git directory storage file github

它们是否将文件和目录的元数据存储在数据库中以及服务器实例的文件系统上的实际文件和目录?

Von*_*onC 5

它应该在光秃的存储库中
但这取决于您正在谈论的Git存储库服务器的规模

例如,GitHub正在使用DGit

DGit是“ 分布式Git。

正如许多读者已经知道的那样,Git本身是分布式的-Git存储库的任何副本都包含项目整个历史中的每个文件,分支和提交。
DGit使用Git的此属性在三个不同的服务器上保留每个存储库的三个副本。
DGit的设计可确保存储库完全可用,即使其中一台服务器出现故障也不会中断。即使在极端情况下,一个存储库的两个副本无法同时使用,该存储库仍可读取;也就是说,抓取,克隆和大多数Web UI继续起作用。

关键是:您不能只存储裸仓库而不处理其余仓库:

所有这些甚至都没有考虑到托管服务器建议的所有服务和元数据(项目,Wiki,问题等)。例如,请参阅“ 将持久性数据从Redis中移出 ”,以了解所构成的技术挑战。

那只是GitHub。BitBucket和GitLab都有自己的技术挑战和解决方案。