1.0 KiB
1.0 KiB
ADR-002:外部项目使用子模块配置
状态
已接受,2026-10-15。替代早期复制数据库驱动源码的做法。
决定
数据库服务与 Rust 驱动作为两个独立 Git 子模块维护。主仓库只提交远程地址、固定版本指针、初始化/构建配置,不提交依赖源码或编译产物。Cargo 引用初始化后的驱动路径,数据库从外部 checkout 构建并暂存到被忽略的 Docker 构建目录。
正式来源使用 ChuGit:/srv/git/ChuSQL.git 与 ChuGit:/srv/git/ChuSQL-RustDriver.git。在服务器可读本地 bare 仓库时,项目级 insteadOf 优先使用 file:///srv/git/…;开发者可显式指定已有本地来源。文件协议只在初始化这两个明确子模块的命令中启用,不设置全局许可,不递归获取未知子模块。
已有驱动副本从主仓库的历史树中删除。外部项目仍各自保留完整历史;主仓库不能替代依赖仓库分发其对象,源仓库必须先具有固定指针所引用的提交。