这个项目是对 Gogs 核心后端的 Rust 重写,当前约束有三个:
当前技术选型:
actix-webSQLite + rusqlitegit 二进制当前不包含:
frontend当前代码已经不是“脚手架阶段”,而是已经完成了第一批核心后端闭环:
这意味着项目现在已经具备一个“最小可用的 Git 服务后端核心”,但距离 Gogs 的完整产品能力还差几个大块。
对应模块:
已完成:
gitr.toml 或默认值加载配置owner/repo.git 的磁盘路径对应模块:
已完成:
argon2 存储密码哈希updated_unix当前安全边界:
POST /api/admin/users 只允许首个用户 bootstrappassword_hash对应模块:
已完成:
update-server-infoauto_initauto_init 时创建首个 README 提交对应模块:
已完成:
access 表collaboration 表Read / Write / Admin / OwnerOwnerread / write / admin当前语义:
404403对应模块:
已完成:
git http-backend 提供最小 Git HTTP 能力git-upload-packupload-pack / receive-pack对应模块:
已完成:
is_fork、fork_id对应模块:
已完成:
说明:
对应模块:
已完成:
pull_request 表Mergeable / Conflictmerged_commit_id对应模块:
当前已有接口:
POST /api/admin/usersPOST /api/user/loginPOST /api/user/tokensGET /api/user/tokensDELETE /api/user/tokens/{id}GET /api/users/{username}GET /api/users/{username}/reposGET /api/user/reposPOST /api/reposGET /api/repos/searchGET /api/repos/{owner}/{repo}POST /api/repos/{owner}/{repo}/forksGET /api/repos/{owner}/{repo}/branchesGET /api/repos/{owner}/{repo}/comparePOST /api/repos/{owner}/{repo}/pullsGET /api/repos/{owner}/{repo}/pullsGET /api/repos/{owner}/{repo}/pulls/{index}POST /api/repos/{owner}/{repo}/pulls/{index}/mergePOST /api/repos/{owner}/{repo}/pulls/{index}/closePOST /api/repos/{owner}/{repo}/pulls/{index}/reopenPOST /api/repos/{owner}/{repo}/collaboratorsGET /api/repos/{owner}/{repo}/collaboratorsGET /api/repos/{owner}/{repo}/collaborators/{username}DELETE /api/repos/{owner}/{repo}/collaborators/{username}GET /healthz对应模块:
已完成:
对应模块:
已完成:
code / message / status400/401/403/404/409/500 具备稳定错误码语义500 响应不再把底层 I/O / DB / Git 细节直接暴露给客户端主要测试文件:
目前已覆盖的行为包括:
password_hash404internal_error,且 message 已脱敏当前测试状态:
cargo test38 passed下面按优先级拆分,而不是按“想到什么做什么”。
目标:
还缺:
建议优先级:
目标:
还缺:
这是后续真正会改变权限模型的一大块。
还缺:
这部分完成后,repo 权限才会开始接近 Gogs 的真实结构。
还缺:
这部分是“能不能真正拿来替代现有 Git 服务”的关键。
当前 PR/MR 是脱离 issue 系统的最小闭环。
如果要继续接近 Gogs,还缺:
这块工作量会明显高于当前阶段。
当前明确未做:
这块应在后端主链稳定后再接。
如果继续推进,建议顺序如下:
当前仓库已经完成:
当前最值得继续做的,不是再加零散功能,而是: