reposync/Documentation.md

5.4 KiB
Raw Blame History

依赖

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/")

详细文件变更日志功能

功能概述

为了解决同步过程中日志内容相似、无法体现仓库间差异的问题,系统新增了详细的文件变更日志功能。该功能能够在同步过程中详细记录:

  1. 新增文件:显示新增文件的文件名和具体内容
  2. 修改文件:显示修改文件的文件名和具体修改内容
  3. 删除文件:显示删除文件的文件名

功能特性

  • 智能文件类型识别:自动识别文本文件类型,对文本文件显示详细内容
  • 内容大小控制:可配置显示的文件内容大小和行数限制
  • 差异对比显示对修改的文件显示详细的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

使用说明

  1. 启用功能:确保 LOG_FILE_CHANGES=True
  2. 查看日志在同步完成后通过API接口或日志文件查看详细的文件变更信息
  3. 调整配置:根据需要调整 MAX_FILE_CONTENT_LINESMAX_FILE_CONTENT_SIZE 来控制显示的详细程度

注意事项

  • 二进制文件只显示文件大小,不显示具体内容
  • 大文件会被截断显示,避免日志文件过大
  • 可以通过配置选项灵活控制功能的开启和详细程度