gitea没有相关能让领导一目了然所有员工提交代码情况的统计排名,我用python利用linux定时任务crontab通过git命令拉取当日所有项目代码统计好员工信息提交于gitea上供领导每天查看的有人git提交工作内容情况进行展示。
点击空白处退出提示
语言技术
Python、Shell、Redis、Linux系统类型
Linux行业分类
企业服务开源地址
https://gitee.com/seanrocks/gitea-statistical-ranking授权协议
MIT许可开源组织
gitee(oschina)、github演示地址
https://github.com/seanrocks/gitea-statistical-ranking
gitea没有相关能让领导一目了然所有员工提交代码情况的统计排名,我用python利用linux定时任务crontab通过git命令拉取当日所有项目代码统计好员工信息提交于gitea上供领导每天查看的有人git提交工作内容情况进行展示。
### run_gitea_stats.sh 脚本功能
**脚本位置**:`/home/gitea/statics/run_gitea_stats.sh`
**功能特点**:
- 解决定时任务中的 Python 环境问题
- 支持手动执行和定时任务两种模式
- 自动记录执行日志
- 手动执行时实时显示输出
- 运行前需手动调整gs.env参数,否则默认只跑当天。
### 手动执行模式
```bash
cd /home/gitea/statics
./run_gitea_stats.sh manual
```
**执行流程**:
1. 切换到工作目录 `/home/gitea/statics`
2. 记录开始时间到 `cron.log`
3. 实时显示执行进度(使用 `tee` 命令)
4. 执行 `gitea_stats.py`
5. 记录执行状态(成功/失败)到 `cron.log`
6. 输出同时保存到 `gitea_stats.log`
### 定时任务模式
**定时任务配置**:
```bash
30 17 * * * /home/gitea/statics/run_gitea_stats.sh
```
最终生成.md文件提交到git上,可以登录gitea在页面浏览
## 文件结构
/home/gitea/statics/
├── __init__.py
├── config.py # 配置管理
├── redis_cache.py # Redis 缓存
├── git_operations.py # Git 操作
├── gitea_api.py # Gitea API
├── stats_collector.py #
## 模块说明
### config.py - 配置管理
- 从 gs.env 文件加载配置
- 验证必需参数
- 支持多种认证方式
### redis_cache.py - Redis 缓存
- 管理 Redis 连接
- 提供缓存读写接口
- 自动处理连接失败(降级为无缓存模式)
### git_operations.py - Git 操作
- Git 仓库克隆和更新
- 支持本地缓存目录
- 自动检测和修复浅克隆
- Git 提交记录查询
- 代码行数统计
- 自动认证
### gitea_api.py - Gitea API
- 获取用户列表(过滤禁用用户)
- 获取仓库列表(支持分页)
- 获取提交记录
- 支持多种认证方式
### stats_collector.py - 统计收集
- 收集所有仓库和用户的统计数据
- 使用 Redis 缓存提升性能
- 支持时间范围过滤
- 自动过滤无效数据
### report_generator.py - 报告生成
- 生成文本格式报告
- 导出 JSON 格式数据
- 显示贡献度和具体人名
- 支持仓库贡献者列表(用竖线分割)
### gitea_stats.py - 主程序
- 协调所有模块
- 处理时间范围参数
- 生成统计报告
- 导出 JSON 数据




评论