Skip to content

Latest commit

 

History

History
128 lines (101 loc) · 4.44 KB

File metadata and controls

128 lines (101 loc) · 4.44 KB

GitLab代码审查系统 - 定时拉取功能

概述

本系统实现了自动化的GitLab数据拉取功能,支持定时自动拉取和手动触发拉取。系统会将拉取的数据保存到本地JSON文件中,提供快速的离线访问能力。

主要功能

1. 自动定时拉取

  • Commit拉取: 每5分钟自动拉取新的提交记录,无数量限制,支持分页拉取所有commit
  • 评论拉取: 每10秒自动拉取commit的评论信息,只拉取需要审核的commit
  • 智能增量拉取: 基于本地最新commit时间进行增量拉取,避免重复数据

2. 手动拉取功能

  • 分支信息拉取: 支持手动拉取项目的分支信息
  • 全量数据刷新: 支持手动触发commit、评论、分支的全量刷新

3. 数据存储优化

  • 移除时间戳依赖: 不再使用lastCommitPullTime字段,改为基于本地最新commit时间进行拉取
  • 向后兼容: 自动清理旧数据文件中的lastCommitPullTime字段
  • 无限制拉取: 支持拉取项目的所有commit历史记录,不受100条限制

本地数据存储

数据文件结构

  • Commit数据: server/data/commits_[projectId].json
  • 分支数据: server/data/branches_[projectId].json

Commit数据格式

{
  "projectId": "项目ID",
  "lastCommentPullTime": "最后评论拉取时间",
  "commits": [
    {
      "id": "完整commit ID",
      "short_id": "短commit ID",
      "message": "提交信息",
      "author_name": "作者姓名",
      "author_email": "作者邮箱",
      "committed_date": "提交时间",
      "web_url": "GitLab链接",
      "has_comments": "是否有评论",
      "comments_count": "评论数量",
      "skip_review": "是否跳过审核",
      "comments": "评论详情",
      "needsReview": "是否需要继续拉取评论"
    }
  ]
}

API变更

新增功能

  1. 无限制commit获取:

    • API: GET /api/gitlab/projects/:projectId/commits?all=true
    • 返回项目的所有commit记录,不分页
  2. 智能增量拉取:

    • 基于本地最新commit时间自动确定拉取起始点
    • 首次拉取获取所有历史commit
    • 后续拉取只获取新增commit
  3. 分页拉取支持:

    • 后端支持分页拉取GitLab API数据
    • 自动循环拉取所有页面直到获取完整数据

性能优化

  • 本地缓存: 所有commit和分支数据本地缓存,提升响应速度
  • 离线访问: 支持在GitLab服务不可用时查看历史数据
  • 增量更新: 只拉取新增数据,减少网络请求

服务器启动流程

  1. 初始化数据目录: 确保server/data/目录存在
  2. 启动定时任务:
    • Commit拉取任务(5分钟间隔)
    • 评论拉取任务(10秒间隔)
  3. 数据兼容性处理: 自动清理旧版本数据结构
  4. 健康检查: 提供服务状态监控接口

配置选项

刷新频率设置

  • 默认commit拉取间隔: 5分钟
  • 默认评论拉取间隔: 10秒
  • 支持动态调整刷新频率

项目配置

  • 支持多项目配置
  • 每个项目独立的数据存储
  • 支持项目级别的过滤规则

使用建议

  1. 首次使用: 建议先手动触发一次全量刷新,获取完整的历史数据
  2. 大型项目: 对于commit数量很多的项目,首次拉取可能需要较长时间
  3. 网络环境: 确保服务器能够访问GitLab API
  4. 存储空间: 根据项目规模预留足够的磁盘空间

故障排除

常见问题

  1. 拉取失败: 检查GitLab访问令牌是否有效
  2. 数据不完整: 检查网络连接和API访问权限
  3. 性能问题: 考虑调整刷新频率或优化过滤规则

日志查看

  • 服务器启动日志: 查看定时任务启动状态
  • 拉取日志: 监控数据拉取过程和结果
  • 错误日志: 排查API调用失败原因

技术改进

v2.0 更新内容

  • ✅ 移除lastCommitPullTime字段依赖
  • ✅ 实现基于本地最新commit时间的智能拉取
  • ✅ 支持无限制commit数量拉取
  • ✅ 优化分页拉取逻辑
  • ✅ 增强数据兼容性处理
  • ✅ 前端支持显示所有commit记录

性能提升

  • 拉取效率: 分页拉取避免单次请求超时
  • 存储优化: 去除冗余时间戳字段
  • 响应速度: 前端可获取完整commit列表
  • 用户体验: 无需手动设置拉取数量限制