【竞赛赛题】提交,修复部分缺陷,完成了部分进阶任务 #13
Loading…
Reference in New Issue
No description provided.
Delete Branch "sapientialM/reposync:master"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
进阶任务1:缺陷修复
1. Delete Repo 调用失败后,仍会删除数据库内仓库记录
【缺陷描述】:因 Windows 权限问题无法删除tmp目录下git仓库时导致 Delete Repo 调用时失败,但数据库内记录已被删除。
【错误日志】:
【解决方法】:添加报错日志,完善错误定位,并给予相关信息协助手动删除仓库
【关联提交】:c8ee97d212
2. 新建同步工程页面 React 警告
【缺陷描述】:点击新建同步工程后,控制台抛出 “Each child in a list should have a unique ���key’ prop” 的警告。
【解决方法】:为
<ProFormText></ProFormText>添加 key 属性【关联提交】:744df990d8
进阶任务2:疑修同步功能实现
实现情况
完成了Github与Gitee两个平台的同步,并仅支持issue的title、body、负责人、标签的创建、更新、删除。其中由于接口限制,issue的删除体现为将issue状态更改为closed并添加需要删除的评论。
实现思路
issue 拉取与更新
对于Gitee平台,选择使用Gitee API 文档所提供的API,使用网络请求进行issue的拉取、更新。对于GitHub平台,使用PyGithub包进行issue的拉取、更新。
issue 映射
为保证双方平台的issue修改得以准确同步,创建了sync_issue数据库作为映射。其SQL创建语句如下
功能实现
经观察代码后发现,Sync Repo 接口比较符合 issue 同步的实现思路。所以选择以附加功能的形式在Sync Repo的实现中添加 issue 同步功能。具体从 reposync\reposync\src\api\Sync_config.py 文件中在 sync_repo_task 并列添加 sync_issue_task(self, issues, repo, user, repo_name)。并在相关do、service层也添加了 MySQL 的相关实体SyncIssue及其函数定义。
功能使用
在访问 /cerobot/sync/repo 创建项目的接口时,添加请求体属性sync_issue,true 表示启用issue同步,false表示不启用。在第一次访问 /cerobot/sync/repo/{project} 开始同步的接口时,需要保证exter仓库的issue为空,以保证映射表的初始化。
进阶任务3:RepoSyncer的合并请求同步功能实现
实现情况
完成了Github与Gitee两个平台的同步,并仅支持PR的title、body、负责人、标签的创建、更新。
实现思路
PR 拉取与更新
对于Gitee平台,选择使用Gitee API 文档所提供的API,使用网络请求进行PR的拉取、更新。对于GitHub平台,使用PyGithub包进行PR的拉取、更新。
PR 映射
借鉴了issue同步的实现,这里取消了多余的内容字段,仅保留 inter_number、exter_number、updated_at、repo_name字段。其中update_at字段用于判断是否需要更新。
为保证双方平台的PR修改得以准确同步,创建了sync_pr数据库作为映射。其SQL创建语句如下:
功能实现
经观察代码后发现,Sync Repo 接口比较符合 PR 同步的实现思路。所以选择以附加功能的形式在Sync Repo的实现中添加 PR 同步功能。具体从 reposync\reposync\src\api\Sync_config.py 文件中在 sync_repo_task 并列添加 sync_pr_task(self, pullrequests, repo, user, repo_name)。并在相关do、service层也添加了 MySQL 的相关实体SyncPr及其函数定义。
功能使用
在访问 /cerobot/sync/repo 创建项目的接口时,添加请求体属性sync_pr,true 表示启用pr同步,false表示不启用。在第一次访问 /cerobot/sync/repo/{project} 开始同步的接口时,需要保证exter仓库的pr为空,以保证映射表的初始化。
Step 1:
From your project repository, check out a new branch and test the changes.Step 2:
Merge the changes and update on Gitea.