2.9 KiB
2.9 KiB
仓库拆分与子模块使用说明
目的:将 AdminApi 与 TenantApi 解耦,减少多租户对管理端的影响;同时沉淀共享基础库与文档运维资产,便于复用与独立发布。
1. 仓库划分
- TakeoutSaaS.AdminApi:管理后台 API(运营/客服/平台管理),允许跨租户查询(以路由
tenantId作为单租户操作入口)。 - TakeoutSaaS.TenantApi:租户端 API(MiniApi/UserApi),强制租户隔离,面向小程序/用户端。
- TakeoutSaaS.Gateway:YARP 反向代理网关(路由、CORS、限流、可观测性)。
- TakeoutSaaS.BuildingBlocks:共享基础组件库(
Shared.Abstractions/Shared.Kernel/Shared.Web)。 - TakeoutSaaS.Docs:文档与运维资产(架构、边界、部署、脚本等)。
2. 子模块策略
- AdminApi 通过
git submodule引入:TakeoutSaaS.BuildingBlocks→TakeoutSaaS.BuildingBlocks/TakeoutSaaS.Docs→TakeoutSaaS.Docs/
- TenantApi 通过
git submodule引入:TakeoutSaaS.BuildingBlocks→TakeoutSaaS.BuildingBlocks/TakeoutSaaS.Docs→TakeoutSaaS.Docs/
- Gateway 保持独立仓库:不以子模块形式挂回 AdminApi/TenantApi(避免耦合与引用链)。
3. 克隆与初始化
3.1 新克隆(推荐)
# AdminApi
git clone --recurse-submodules -b dev git@github.com:msumshk/TakeoutSaaS.AdminApi.git
# TenantApi
git clone --recurse-submodules -b dev git@github.com:msumshk/TakeoutSaaS.TenantApi.git
# Gateway
git clone -b dev git@github.com:msumshk/TakeoutSaaS.Gateway.git
3.2 已有仓库补齐子模块
git submodule update --init --recursive
4. 子模块更新流程(推荐)
原则:子模块自身先提交,再由宿主仓库提交“子模块指针变更”。
4.1 更新 Docs/BuildingBlocks 内容
- 进入子模块目录(如
TakeoutSaaS.Docs/),正常git add/commit/push。 - 回到宿主仓库根目录,提交子模块引用更新:
git add TakeoutSaaS.Docsgit commit -m "docs: 更新文档子模块引用"
- 其他成员拉取宿主仓库后执行:
git submodule update --init --recursive
4.2 拉取子模块最新 dev(可选)
git submodule update --remote --merge
注意:
--remote会移动子模块引用,需要在宿主仓库提交。
5. 常用运行入口
# AdminApi(在 TakeoutSaaS.AdminApi 仓库根目录)
dotnet run --project src/Api/TakeoutSaaS.AdminApi/TakeoutSaaS.AdminApi.csproj
# TenantApi - MiniApi(在 TakeoutSaaS.TenantApi 仓库根目录)
dotnet run --project src/Api/TakeoutSaaS.MiniApi/TakeoutSaaS.MiniApi.csproj
# TenantApi - UserApi(在 TakeoutSaaS.TenantApi 仓库根目录)
dotnet run --project src/Api/TakeoutSaaS.UserApi/TakeoutSaaS.UserApi.csproj
# Gateway(在 TakeoutSaaS.Gateway 仓库根目录)
dotnet run --project TakeoutSaaS.ApiGateway.csproj