记录这条老线跟 master 的差异,以及依赖方(如 zg-estate)应该怎么锁定/更新 到这个分支,避免误跑 go get -u 拉到 master 上的破坏性改动。
41 lines
2.3 KiB
Markdown
41 lines
2.3 KiB
Markdown
# git.fsdpf.net/go/contracts(v1-legacy)
|
||
|
||
老架构下跨服务共享的契约层:HTTP/gRPC/队列/任务调度/定时任务/MQTT/WebSocket 等各类服务的接口
|
||
定义,以及资源系统(`resource.go`)、用户审批(`user_approval.go`)等业务相关契约,供
|
||
`framework`(服务编排/启动)和各业务项目共同依赖,避免互相直接 import 造成循环依赖。
|
||
|
||
## 这个分支有什么
|
||
|
||
- `resource.go`/`orm.go`:跟老版 `req`/`orm` 配套的资源、ORM 相关契约。
|
||
- `http.go`/`grpc.go`/`grpcall.go`/`server.go`:HTTP/gRPC 服务契约。
|
||
- `job.go`/`cron.go`/`queue.go`:任务调度、定时任务、消息队列契约。
|
||
- `mqtt.go`/`ws.go`:MQTT、WebSocket 契约。
|
||
- `jwt_auth.go`/`captcha.go`/`user_approval.go`:鉴权、验证码、用户审批相关契约。
|
||
- `res_event.go`:资源变更事件契约(新架构里拆成了 `res_watcher.go`/`event_stream.go`,接口
|
||
形状不一样)。
|
||
- `res_type/`:资源类型相关的独立子包(新架构里已经不存在,能力并到别处了)。
|
||
- `base/`/`support/`:基础类型和辅助工具。
|
||
|
||
## 这个分支的定位
|
||
|
||
给还在维护、但还没迁移到新架构(`master` 分支上新增的 `di.go` DI 辅助函数、`app.go`、
|
||
`condflow.go`、`gobridge.go`、`mcp.go`、`res_virtual_table.go`/`res_watcher.go` 等)的老项目用,
|
||
比如 `zg-estate`(直接依赖)。只接受独立于新架构的 bug 修复。
|
||
|
||
## 依赖方怎么安装/更新
|
||
|
||
Go modules 不会记住某个版本是从哪个分支解析出来的,`go.mod`/`go.sum` 里存的只是一次性解析出
|
||
的 commit 伪版本号,分支上有新提交也不会自动同步。
|
||
|
||
**首次锁定,或者要拿这个分支上新提交的更新**,都执行同一条命令:
|
||
|
||
```
|
||
go get git.fsdpf.net/go/contracts@v1-legacy
|
||
```
|
||
|
||
**禁止**跑裸的 `go get -u`(或者 `go get git.fsdpf.net/go/contracts@latest`)——这个仓库没有打
|
||
语义化 tag,Go 对"最新版本"的解析规则是退回到仓库默认分支(`master`)的 HEAD,会把新架构的
|
||
破坏性改动一起拉进来,而不是停留在这个分支上。同时注意这条老线依赖的 `git.fsdpf.net/go/db`/
|
||
`git.fsdpf.net/go/req`/`git.fsdpf.net/go/orm` 也要一起锁定在它们各自的 `v1-legacy` 分支,
|
||
不能新老混用。
|