git - git 在用户/代码库大小方面的扩展效果如何?

标签 git version-control scalability

<分区>

我们目前正在使用由约 50 名活跃开发人员共享的约 600MB(这是 .git 目录的大小)的单个 git 存储库。

随着我们的代码库和开发人员基数的增长,由于代码量(缓慢的 git 状态)和推送量(推送到 master 被拒绝,因为同时有人推送),这种方法似乎最终会变得不可持续。

我的问题是,根据 (1) 代码量? (2) 活跃的开发者数量?

是否有使用 git 的方法(例如,大量使用功能分支)或特定技术可以帮助 git 扩展而不牺牲单个公共(public)历史记录?

谢谢!

最佳答案

Git 由 Linus Torvalds 创建明确处理 Linux 内核的开发。这考虑了为项目做出贡献的用户数量以及由此创建的提交数量。

如此规模的项目是否易于维护在很大程度上取决于您的工作流程。如果您只使用每个人都使用的几个开发分支,您可能最终会遇到多个 merge 冲突。另一方面,如果开发在(功能)分支上高度分离,那么维护它就会变得容易得多,因为当这样一个分支上的工作完成并且可以 merge 工作时,你只需要接触你的主线。你常有人有特殊integrator roles专注于这一点。在 Linux 内核的情况下,您还有副手收集(和验证)开发人员的提交,然后将其提交给 dictator (Linus 本人)然后由谁来决定内核中实际包含的内容。

不过总的来说,没有什么能阻止您在 Git 中拥有一个巨大的项目。根据您的情况,如果可能的话,将其拆分可能是值得的(与具有大量较小存储库的 Android’s OSP 相比)。

请注意,除了初始克隆过程之外,较大的存储库大小不会影响您的工作流程。除非你有一个荒谬的大工作目录(这会影响任何源代码控制系统),否则它不会影响 Git 的正常速度。所有命令都在本地运行,像 git status 这样的东西只需要查看工作目录、索引和当前版本,也就是说,如果历史记录更长,那将不会改变。由于 Git 的数据模型是一个有向无环图,因此无论您的图有多大,超出您使用的访问器(分支指针、HEAD 等),您都可以立即获得所需的大部分内容。

话虽这么说,600 MB 的存储库确实很多。我怀疑你里面有很多二进制文件,这可能不是最好的主意。虽然 Git 以与文本文件相同的方式处理二进制文件,但压缩 Git 不会,并且应用于每个 Git 对象的默认 gzip 压缩通常对二进制文件(如已经压缩的图像)也没有帮助。因此,如果可能的话,您可能希望为您的 Assets 寻找不同的解决方案。

关于git - git 在用户/代码库大小方面的扩展效果如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627146/

相关文章:

git - pod spec lint 错误

git - 如何防止编辑 TypeScript 项目中生成的 Javascript 文件?

java - 使用Ant进行Java部署:帮助进行版本控制,测试等,以实现更好的构建

version-control - 管理加密 key 的好方法?

git - 如何解决 Git : "Updates were rejected because a pushed branch tip is behind its remote counterpart" 中的问题

orm - 将 Subsonic 用于可能大量访问的 ASPNET MVC 应用程序

git - 如何使用 pip 卸载 git repo?

git - 我可以将文件添加到我的 GitHub 存储库之一而不从其中克隆/pull 吗?

architecture - 对项目的架构做出决定;你的决策过程是怎样的?

asp.net - Entity Framework 4.0 扩展和安全性