forked from Lesin/reposync
5.4 KiB
5.4 KiB
依赖
| name | version | necessity |
|---|---|---|
| python | 3.9 | True |
| uvicorn | 0.14.0 | True |
| SQLAlchemy | 1.4.21 | True |
| fastapi | 0.66.0 | True |
| aiohttp | 3.7.4 | True |
| pydantic | 1.8.2 | True |
| starlette | 0.14.2 | True |
| aiomysql | 0.0.21 | True |
| requests | 2.25.1 | True |
| loguru | 0.6.0 | True |
| typing-extensions | 4.1.1 | True |
| aiofiles | 0.8.0 | True |
如何安装
[!NOTE] 运行代码必须在python 3.9环境下面
pip3 install -r requirement.txt
部署数据库
- 创建一个自己的database
- 仓库目录下的 sql/20240408.sql 文件已列出需要在数据库中创建的表结构
- 设置自己的数据库连接串在src/base/config.py文件内 DB 变量的 'test_env'配置数据库参数
'host': 数据库服务器的主机名或IP地址。可以通过环境变量 'CEROBOT_MYSQL_HOST' 获取其值,也可以自己设置。
'port': 数据库服务器的端口号。可以通过环境变量 'CEROBOT_MYSQL_PORT' 获取其值, 默认端口号'2883'。
'user': 连接数据库的用户名。可以通过环境变量 'CEROBOT_MYSQL_USER' 获取其值,也可以自己设置。
'passwd': 连接数据库的密码。可以通过环境变量 'CEROBOT_MYSQL_PWD' 获取其值,也可以自己设置。
'dbname': 要连接的数据库的名称。可以通过环境变量 'CEROBOT_MYSQL_DB' 获取其值,也可以自己设置。
启动服务
- python3 main.py
- 服务启动成功后查看API文档 http://0.0.0.0:8000/docs
- 历史日志文件记录在本地的 logs 目录下
环境变量说明
# 同步任务执行完成后是否删除同步目录的环境变量
DELETE_SYNC_DIR = ('DELETE_SYNC_DIR', False)
# 是否在日志中详细记录git执行错误信息的环境变量
LOG_DETAIL = ('LOG_DETAIL', True)
# 设置同步目录的环境变量
SYNC_DIR = ("SYNC_DIR", "/tmp/sync_dir/")
详细文件变更日志功能
功能概述
为了解决同步过程中日志内容相似、无法体现仓库间差异的问题,系统新增了详细的文件变更日志功能。该功能能够在同步过程中详细记录:
- 新增文件:显示新增文件的文件名和具体内容
- 修改文件:显示修改文件的文件名和具体修改内容
- 删除文件:显示删除文件的文件名
功能特性
- 智能文件类型识别:自动识别文本文件类型,对文本文件显示详细内容
- 内容大小控制:可配置显示的文件内容大小和行数限制
- 差异对比显示:对修改的文件显示详细的diff信息
- 可配置开关:可通过环境变量控制功能的开启和关闭
配置选项
在 env.ini 文件中可以配置以下选项:
# 是否启用详细文件变更日志
LOG_FILE_CHANGES=True
# 是否显示文件内容
LOG_FILE_CONTENT=True
# 最多显示的文件内容行数
MAX_FILE_CONTENT_LINES=20
# 最大显示的文件内容大小(字符数)
MAX_FILE_CONTENT_SIZE=1000
日志输出示例
文件变更分析头部
2024-01-20 10:30:15 | INFO | robot - ========== 开始分析文件变更 ==========
2024-01-20 10:30:15 | INFO | robot - 源仓库: https://github.com/user/openct-tasks : master
2024-01-20 10:30:15 | INFO | robot - 目标仓库: https://gitee.com/user/openct-tasks : master
2024-01-20 10:30:15 | INFO | robot - ==========================================
2024-01-20 10:30:15 | INFO | robot - 检测到 3 个文件变更
新增文件日志
2024-01-20 10:30:15 | INFO | robot - >>> 新增文件 (1 个):
2024-01-20 10:30:15 | INFO | robot - + src/new_feature.py
2024-01-20 10:30:15 | INFO | robot - [新增文件内容]:
2024-01-20 10:30:15 | INFO | robot - 1: # 新功能模块
2024-01-20 10:30:15 | INFO | robot - 2: class NewFeature:
2024-01-20 10:30:15 | INFO | robot - 3: def __init__(self):
2024-01-20 10:30:15 | INFO | robot - 4: pass
修改文件日志
2024-01-20 10:30:16 | INFO | robot - >>> 修改文件 (1 个):
2024-01-20 10:30:16 | INFO | robot - * src/main.py
2024-01-20 10:30:16 | INFO | robot - [修改详情]:
2024-01-20 10:30:16 | INFO | robot - 变更统计: +2 -1
2024-01-20 10:30:16 | INFO | robot - 文件位置: 第1行 → 第1-2行
2024-01-20 10:30:16 | INFO | robot - -测试新增文件
2024-01-20 10:30:16 | INFO | robot - +测试新增文件
2024-01-20 10:30:16 | INFO | robot - +修改文件测试
删除文件日志
2024-01-20 10:30:17 | INFO | robot - >>> 删除文件 (1 个):
2024-01-20 10:30:17 | INFO | robot - - src/old_module.py
支持的文件类型
系统自动识别以下文本文件类型并显示详细内容:
- 代码文件:
.py,.js,.ts,.java,.cpp,.c,.h,.go,.rs,.swift,.kt - 配置文件:
.json,.yaml,.yml,.xml,.ini - 文档文件:
.md,.txt - 脚本文件:
.sh,.bat,.ps1 - 样式文件:
.css,.html - 特殊文件:
Dockerfile,Makefile
使用说明
- 启用功能:确保
LOG_FILE_CHANGES=True - 查看日志:在同步完成后,通过API接口或日志文件查看详细的文件变更信息
- 调整配置:根据需要调整
MAX_FILE_CONTENT_LINES和MAX_FILE_CONTENT_SIZE来控制显示的详细程度
注意事项
- 二进制文件只显示文件大小,不显示具体内容
- 大文件会被截断显示,避免日志文件过大
- 可以通过配置选项灵活控制功能的开启和详细程度