GitWatcher 是一个自动化 Git 仓库监控系统,可以监控仓库更新并通过邮件发送通知。系统采用前后端分离架构,前端基于 Vue 3 + Element Plus 开发,后端基于 Flask 开发。
GitWatcher 旨在帮助团队和开发者实时监控 Git 仓库的更新情况,当发现新提交时,自动发送格式化的邮件通知。系统支持 AI 驱动的更新日志处理,可以对提交记录进行翻译和总结,生成精美的 HTML 邮件。
- 自动化监控:无需手动检查仓库更新,系统自动完成
- 及时通知:新提交立即通知,确保团队同步
- 智能处理:AI 辅助处理更新日志,提供更好的阅读体验
- 灵活配置:支持多种配置选项,适应不同需求
- 多语言支持:支持中文、繁体中文和英文
- 开源项目维护者监控贡献情况
- 团队协作中监控核心仓库更新
- 依赖库更新监控
- CI/CD 流程中的仓库状态监控
- 监控机制:定时检查 Git 仓库的 HEAD 提交,与本地记录对比
- 频率配置:支持自定义监控频率(分钟、小时、天)
- 并行处理:多仓库同时监控,提高效率
- 超时处理:设置合理的超时时间,避免阻塞
- 失败重试:监控失败时自动重试,确保可靠性
- SMTP 配置:支持主流邮件服务商(Gmail、Outlook、企业邮箱等)
- 邮件模板:可发送精美的 HTML 邮件,由AI功能生成
- 发送机制:异步发送,不影响监控流程
- 通知条件:可配置通知触发条件
- 发送记录:保存邮件发送记录,便于查询
- 更新日志翻译:支持将提交信息翻译成多种语言
- 更新日志总结:AI 自动生成提交记录摘要
- 多 AI 提供商支持:可配置不同的 AI 服务提供商
- 自定义提示词:支持自定义 AI 处理的提示词
- 处理记录:保存 AI 处理记录,便于调试
- 响应式设计:适配不同设备的邮件客户端
- 样式定制:支持自定义邮件样式
- 动态内容:支持动态插入仓库信息、提交记录等
- 预览功能:支持邮件预览
- 支持语言:简体中文 (zh-CN)、繁体中文 (zh-TW)、英文 (en)
- 动态切换:系统内支持实时切换语言
- 翻译管理:提供翻译文件管理功能
- 自动检测:支持根据浏览器语言自动选择
- 添加仓库:支持添加多个 Git 仓库
- 编辑配置:可修改仓库的监控配置
- 删除仓库:支持删除不需要监控的仓库
- 手动触发:支持手动触发仓库更新检查
- 状态查看:实时查看仓库监控状态
- 监控配置:设置默认监控频率、超时时间等
- AI 配置:管理 AI 提供商和 API 密钥
- SMTP 配置:设置邮件服务器信息
- 系统参数:配置系统级别的参数
- 保存配置:配置自动保存,重启后生效
- 用户登录:基于 JWT 的身份认证
- 密码修改:支持用户修改密码
- 头像更新:支持上传和更新用户头像
- 权限控制:基于角色的权限管理
- 用户列表:支持查看和管理用户
- 一键重置:支持将项目恢复到初始状态
- 重置范围:可选择重置的数据范围
- 安全提示:重置前提供安全提示
- 重置记录:保存重置记录
- 自动备份:支持定期自动备份配置
- 手动备份:支持手动触发备份
- 备份管理:查看和管理备份文件
- 恢复功能:支持从备份文件恢复配置
- 跨版本支持:支持不同版本间的备份恢复
- 日志级别:支持多种日志级别(DEBUG、INFO、WARNING、ERROR)
- 日志查询:支持按时间、级别、关键词查询
- 日志导出:支持导出日志文件
- 实时日志:支持查看实时日志
- 日志清理:支持自动清理旧日志
| 技术 | 版本 | 用途 |
|---|---|---|
| Vue 3 | ^3.3.4 | 渐进式 JavaScript 框架 |
| Vite | ^4.4.5 | 下一代前端构建工具 |
| Element Plus | ^2.3.8 | 基于 Vue 3 的企业级 UI 组件库 |
| Vue Router | ^4.2.4 | Vue 官方的路由管理器 |
| Pinia | ^2.1.6 | Vue 官方的状态管理库 |
| Vue I18n | ^9.2.2 | Vue 官方的国际化插件 |
| Axios | ^1.5.0 | 基于 Promise 的 HTTP 客户端 |
| 技术 | 版本 | 用途 |
|---|---|---|
| Flask | ^2.3.2 | Python Web 框架 |
| Flask-RESTful | ^0.3.10 | Flask 扩展,用于构建 REST API |
| Flask-JWT-Extended | ^4.5.3 | JWT 认证扩展 |
| Flask-Migrate | ^4.0.5 | 数据库迁移扩展 |
| Flask-SQLAlchemy | ^3.0.5 | ORM 扩展 |
| APScheduler | ^3.10.1 | 任务调度库 |
| GitPython | ^3.1.32 | Git 操作库 |
| SQLite | 3.37.0 | 轻量级数据库 |
| python-dotenv | ^1.0.0 | 环境变量管理 |
| requests | ^2.31.0 | HTTP 客户端库 |
- VS Code:推荐的代码编辑器
- ESLint:代码质量检查工具
- Prettier:代码格式化工具
- Python 虚拟环境:隔离 Python 依赖
- Git:版本控制系统
- Node.js:18.x 或更高版本
- Python:3.8 或更高版本
- Git:2.0 或更高版本
- 操作系统:Linux、macOS、Windows
git clone https://github.com/Warm-winter/gitwatcher.git
cd gitwatcher# Linux/macOS
cd backend
python3 -m venv venv
source venv/bin/activate
# Windows
cd backend
python -m venv venv
venv\Scripts\activatepip install -r requirements.txtflask db upgradecd backend/
source venv/bin/activate
flask run --host=0.0.0.0 --port=9528后端服务将运行在 http://localhost:9528。
cd ../frontend
npm install或使用 yarn:
yarn install创建 .env 文件,配置 API 地址:
VITE_API_BASE_URL=http://localhost:9528/apinpm run dev或使用 yarn:
yarn dev前端应用将运行在 http://localhost:5174。
npm run build或使用 yarn:
yarn build构建产物将生成在 dist 目录中。
gitwatcher/
├── backend/ # 后端应用
│ ├── app/ # 后端核心代码
│ │ ├── __init__.py # 应用初始化
│ │ ├── ai_processing.py # AI 处理模块
│ │ ├── api/ # API 路由
│ │ ├── core/ # 核心功能
│ │ ├── git_utils.py # Git 工具函数
│ │ ├── models/ # 数据模型
│ │ ├── routes/ # Web 路由
│ │ └── tasks.py # 定时任务
│ ├── config.py # 配置文件
│ ├── requirements.txt # Python 依赖
│ ├── run.py # 后端启动脚本
│ └── venv/ # Python 虚拟环境
├── frontend/ # 前端应用
│ ├── public/ # 静态资源
│ ├── src/ # 前端源代码
│ │ ├── assets/ # 资源文件
│ │ ├── components/ # Vue 组件
│ │ ├── locales/ # 多语言配置
│ │ ├── router/ # 路由配置
│ │ ├── store/ # 状态管理
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面组件
│ │ ├── App.vue # 根组件
│ │ └── main.js # 入口文件
│ ├── .eslintrc.js # ESLint 配置
│ ├── .prettierrc.js # Prettier 配置
│ ├── index.html # HTML 模板
│ ├── package.json # npm 依赖
│ └── vite.config.js # Vite 配置
└── README.md # 项目说明文档
开发模式下,在浏览器中访问:http://localhost:5174
使用默认管理员账户登录:
- 默认用户名:
admin - 默认密码:
admin
- 登录后,点击左侧菜单的「仓库管理」
- 点击「添加仓库」按钮
- 填写仓库信息:
- 仓库名称:自定义名称
- 仓库 URL:Git 仓库的 URL
- 监控频率:选择监控频率
- 通知邮箱:接收通知的邮箱地址
- 点击「保存」按钮
- 点击左侧菜单的「系统设置」
- 配置 SMTP 邮件服务器:
- SMTP 服务器地址
- SMTP 端口
- 发件人邮箱
- 发件人密码/授权码
- 配置 AI 提供商:
- 选择 AI 提供商
- 输入 API 密钥
- 点击「保存设置」按钮
- 点击左侧菜单的「日志管理」
- 查看系统日志和监控日志
- 可按状态、时间范围过滤日志
- 点击日志条目查看详细信息
- 在「仓库管理」页面
- 找到需要手动触发的仓库
- 点击「手动检查」按钮
- 系统将立即检查该仓库的更新情况
- 点击页面右上角的语言切换按钮
- 选择需要的语言(简体中文、繁体中文、英文)
- 系统将立即切换到所选语言
- 在
frontend/src/locales/目录下创建新的语言文件(如ja.json) - 复制现有语言文件的内容,翻译为目标语言
- 在
frontend/src/i18n.js中添加新语言的配置 - 重新构建前端应用
- 使用 ESLint 进行代码质量检查
- 使用 Prettier 进行代码格式化
- 遵循 Vue 3 的最佳实践
- 组件命名使用 PascalCase
- 变量和函数命名使用 camelCase
- 文件命名使用 kebab-case
- 遵循 PEP 8 代码风格
- 使用 Flask 最佳实践
- 函数和变量命名使用 snake_case
- 类命名使用 PascalCase
- 注释清晰,说明函数用途和参数
- 创建分支:
git checkout -b feature/feature-name - 开发功能:实现所需功能
- 测试:确保功能正常工作
- 代码检查:
- 前端:
npm run lint - 后端:使用 flake8 或其他工具检查
- 前端:
- 提交代码:
git commit -m 'Add feature: feature-name' - 推送到远程:
git push origin feature/feature-name - 创建 Pull Request
- main:主分支,用于发布稳定版本
- develop:开发分支,用于集成新功能
- feature/*:功能分支,用于开发新功能
- bugfix/*: bug 修复分支,用于修复问题
- release/*:发布分支,用于准备发布新版本
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
MIT 许可证是一种宽松的开源许可证,允许您:
- 自由使用、复制、修改、合并、发布、分发、再许可和销售软件副本
- 在软件及其文档中保留版权和许可声明
- 无需承担任何担保责任
完整许可证文本请参见 LICENSE 文件。
- 项目地址:https://github.com/Warm-winter/gitwatcher
- 问题反馈:GitHub Issues
- 贡献代码:Pull Requests
功能特性
- ✅ 自动化仓库监控
- ✅ 邮件通知系统
- ✅ AI 驱动的更新日志翻译和总结
- ✅ HTML 邮件生成
- ✅ 多语言支持
- ✅ 仓库管理功能
- ✅ 系统设置管理
- ✅ 用户账户管理
- ✅ 项目重置功能
- ✅ 备份和恢复功能
- ✅ 日志管理功能
技术栈
- 前端:Vue 3, Element Plus, Vite, Vue Router, Pinia, Vue I18n, Axios
- 后端:Flask, SQLite, Flask-Migrate, JWT, APScheduler, GitPython
享受使用 GitWatcher! 🎉