本系统实现了自动化的GitLab数据拉取功能,支持定时自动拉取和手动触发拉取。系统会将拉取的数据保存到本地JSON文件中,提供快速的离线访问能力。
- Commit拉取: 每5分钟自动拉取新的提交记录,无数量限制,支持分页拉取所有commit
- 评论拉取: 每10秒自动拉取commit的评论信息,只拉取需要审核的commit
- 智能增量拉取: 基于本地最新commit时间进行增量拉取,避免重复数据
- 分支信息拉取: 支持手动拉取项目的分支信息
- 全量数据刷新: 支持手动触发commit、评论、分支的全量刷新
- 移除时间戳依赖: 不再使用
lastCommitPullTime字段,改为基于本地最新commit时间进行拉取 - 向后兼容: 自动清理旧数据文件中的
lastCommitPullTime字段 - 无限制拉取: 支持拉取项目的所有commit历史记录,不受100条限制
- Commit数据:
server/data/commits_[projectId].json - 分支数据:
server/data/branches_[projectId].json
{
"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": "是否需要继续拉取评论"
}
]
}-
无限制commit获取:
- API:
GET /api/gitlab/projects/:projectId/commits?all=true - 返回项目的所有commit记录,不分页
- API:
-
智能增量拉取:
- 基于本地最新commit时间自动确定拉取起始点
- 首次拉取获取所有历史commit
- 后续拉取只获取新增commit
-
分页拉取支持:
- 后端支持分页拉取GitLab API数据
- 自动循环拉取所有页面直到获取完整数据
- 本地缓存: 所有commit和分支数据本地缓存,提升响应速度
- 离线访问: 支持在GitLab服务不可用时查看历史数据
- 增量更新: 只拉取新增数据,减少网络请求
- 初始化数据目录: 确保
server/data/目录存在 - 启动定时任务:
- Commit拉取任务(5分钟间隔)
- 评论拉取任务(10秒间隔)
- 数据兼容性处理: 自动清理旧版本数据结构
- 健康检查: 提供服务状态监控接口
- 默认commit拉取间隔: 5分钟
- 默认评论拉取间隔: 10秒
- 支持动态调整刷新频率
- 支持多项目配置
- 每个项目独立的数据存储
- 支持项目级别的过滤规则
- 首次使用: 建议先手动触发一次全量刷新,获取完整的历史数据
- 大型项目: 对于commit数量很多的项目,首次拉取可能需要较长时间
- 网络环境: 确保服务器能够访问GitLab API
- 存储空间: 根据项目规模预留足够的磁盘空间
- 拉取失败: 检查GitLab访问令牌是否有效
- 数据不完整: 检查网络连接和API访问权限
- 性能问题: 考虑调整刷新频率或优化过滤规则
- 服务器启动日志: 查看定时任务启动状态
- 拉取日志: 监控数据拉取过程和结果
- 错误日志: 排查API调用失败原因
- ✅ 移除
lastCommitPullTime字段依赖 - ✅ 实现基于本地最新commit时间的智能拉取
- ✅ 支持无限制commit数量拉取
- ✅ 优化分页拉取逻辑
- ✅ 增强数据兼容性处理
- ✅ 前端支持显示所有commit记录
- 拉取效率: 分页拉取避免单次请求超时
- 存储优化: 去除冗余时间戳字段
- 响应速度: 前端可获取完整commit列表
- 用户体验: 无需手动设置拉取数量限制