菜单

核心组件

相关源文件

本文档概述了构成 Gitea 核心的根本组件。这些组件构成了 Gitea 所有功能的基础。有关高级架构的信息,请参阅架构概览

核心组件概览

Gitea 的核心功能围绕几个关键组件构建,它们协同工作,提供完整的 Git 存储库托管解决方案。这些组件包括:

  1. 存储库系统 - 处理 Git 存储库及其元数据
  2. Git 集成层 - 与 Git 命令交互以操作存储库
  3. 服务层 - 实现业务逻辑并将模型连接到 Web 处理程序
  4. 权限系统 - 控制对存储库及其功能的访问
  5. 数据库和迁移系统 - 管理数据存储和模式演变

来源

仓库系统

存储库系统是 Gitea 的核心组件。它管理存储库元数据、统计信息和对 Git 存储库的操作。

存储库系统提供关键功能,例如:

  • 存储库统计信息的维护
  • 存储库状态管理
  • 用于检查存储库状态和健康状况的操作

存储库统计信息

Gitea 为存储库维护各种统计信息,例如:

  • 星标数
  • 关注数
  • 问题/拉取请求数
  • 派生数
  • 问题和标签计数

这些统计信息通过 models/repo.go 中的函数进行更新

来源

Git 集成层

Git 集成层充当 Gitea 和底层 Git 命令行工具之间的桥梁。它提供了一个抽象层,用于执行 Git 命令和解释其结果。

Git 集成层的关键组件包括:

批量读取系统

批量读取系统通过将请求批量处理为 git cat-file 命令来优化 Git 操作,这对于处理 Git 存储库的性能至关重要。

Git 引用操作

用于管理 Git 引用的函数(分支、标签)

来源

服务层

服务层通过协调模型和 Git 集成层来实现业务逻辑。服务按功能组织,并在模型和 Web 处理程序之间提供清晰的分离。

存储库上下文服务

存储库上下文服务(services/context/repo.go)管理 Web 请求的存储库上下文,负责:

  • 存储库加载
  • 权限检查
  • Git 引用解析
  • 存储库元数据准备

拉取请求服务

拉取服务(services/pull/review.go)负责拉取请求相关的操作:

  • 代码审查管理
  • 评论处理
  • 拉取请求合并逻辑

来源

权限系统

权限系统控制对存储库及其功能的访问。它提供了一个灵活的模型,用于根据用户与存储库和组织的关系来分配不同的访问级别。

权限结构

权限系统的核心是 Permission 结构体。

权限检查

权限系统提供用于在不同级别检查权限的函数。

权限解析

系统根据用户角色确定权限。

来源

数据库和迁移系统

数据库和迁移系统负责管理数据库模式及其随时间的演变。它通过按正确顺序应用迁移来确保不同版本之间的平滑升级。

迁移结构

每个迁移都表示为:

迁移管理

迁移通过以下函数进行管理:

迁移系统通过以下方式确保数据库模式在不同版本之间的兼容性:

  1. 跟踪当前数据库版本
  2. 按顺序应用待处理迁移
  3. 安全地处理模式更改

来源

Web 和存储库集成

Gitea 将 Git 存储库与 Web 控制器集成,以提供存储库查看和交互功能。

存储库视图处理程序

存储库视图处理程序(routers/web/repo/view_home.go)处理:

  • 存储库主页渲染
  • 目录和文件查看
  • 分支和标签导航

Git HTTP 协议

Gitea 通过专用处理程序支持 Git HTTP 协议。

来源

空存储库处理

Gitea 为空存储库提供特殊处理,包括基于模板的初始化和首次提交工作流。

来源


本文档概述了 Gitea 的核心组件、它们的作用以及它们之间的交互。这些组件为 Gitea 的功能提供了基础,处理从 Git 存储库操作到用户权限和 Web 界面的所有内容。