本文档概述了构成 Gitea 核心的根本组件。这些组件构成了 Gitea 所有功能的基础。有关高级架构的信息,请参阅架构概览。
Gitea 的核心功能围绕几个关键组件构建,它们协同工作,提供完整的 Git 存储库托管解决方案。这些组件包括:
来源
存储库系统是 Gitea 的核心组件。它管理存储库元数据、统计信息和对 Git 存储库的操作。
存储库系统提供关键功能,例如:
Gitea 为存储库维护各种统计信息,例如:
这些统计信息通过 models/repo.go 中的函数进行更新
来源
Git 集成层充当 Gitea 和底层 Git 命令行工具之间的桥梁。它提供了一个抽象层,用于执行 Git 命令和解释其结果。
Git 集成层的关键组件包括:
批量读取系统通过将请求批量处理为 git cat-file 命令来优化 Git 操作,这对于处理 Git 存储库的性能至关重要。
用于管理 Git 引用的函数(分支、标签)
来源
服务层通过协调模型和 Git 集成层来实现业务逻辑。服务按功能组织,并在模型和 Web 处理程序之间提供清晰的分离。
存储库上下文服务(services/context/repo.go)管理 Web 请求的存储库上下文,负责:
拉取服务(services/pull/review.go)负责拉取请求相关的操作:
来源
权限系统控制对存储库及其功能的访问。它提供了一个灵活的模型,用于根据用户与存储库和组织的关系来分配不同的访问级别。
权限系统的核心是 Permission 结构体。
权限系统提供用于在不同级别检查权限的函数。
系统根据用户角色确定权限。
来源
数据库和迁移系统负责管理数据库模式及其随时间的演变。它通过按正确顺序应用迁移来确保不同版本之间的平滑升级。
每个迁移都表示为:
迁移通过以下函数进行管理:
迁移系统通过以下方式确保数据库模式在不同版本之间的兼容性:
来源
Gitea 将 Git 存储库与 Web 控制器集成,以提供存储库查看和交互功能。
存储库视图处理程序(routers/web/repo/view_home.go)处理:
Gitea 通过专用处理程序支持 Git HTTP 协议。
来源
Gitea 为空存储库提供特殊处理,包括基于模板的初始化和首次提交工作流。
来源
本文档概述了 Gitea 的核心组件、它们的作用以及它们之间的交互。这些组件为 Gitea 的功能提供了基础,处理从 Git 存储库操作到用户权限和 Web 界面的所有内容。