TeamViewRelay 的共享协议源。
proto/teamviewer/v1/teamviewer.proto:唯一的 ProtoBuf 真相源buf.yaml:协议模块 lint / breaking 配置
- 本仓库只负责共享
.proto定义与buf规则。 - 本仓库不直接向消费仓库写入生成代码。
- Python / TypeScript / Java 生成物都由消费仓库在本地或 CI 中自行生成。
- 协议版本使用
proto/vX.Y.Z命名,例如proto/v0.6.0。 - 这里的 tag 表示“协议发布版本”,不是 Mod、后端或前端脚本的应用版本。
- 消费仓库必须锚定具体 submodule commit,不允许依赖本仓库 branch head 作为构建输入。
以下变更默认需要创建新的协议 tag:
- wire shape 变化,例如字段新增、删除、改名、类型变化、
oneof结构变化 - 兼容性基线变化,例如最低兼容协议版本变化
- 需要三端同步升级的协议语义变化
- 在本仓库修改
proto/teamviewer/v1/teamviewer.proto - 运行
buf lint - 在三个消费仓库验证生成与构建
- 创建并 push 协议 tag,例如
proto/v0.6.0 - 在消费仓库把
third_party/TeamViewRelay-Protocol升级到该 tag 对应 commit - 重新生成代码、运行测试并提交 submodule 指针更新
消费仓库通过 third_party/TeamViewRelay-Protocol 这一 git submodule 锚定本仓库的具体 commit:
Minecraft-TeamViewer-BackendMinecraft-TeamViewer-Web-ScriptMinecraft_TeamViewer
不要依赖本仓库的 branch head;应先发布协议 tag,再在消费仓库中更新 submodule 指针。
- 不要在消费仓库中复制、重建或手改
.proto副本。 - 修改协议后,必须明确说明目标 tag、兼容性影响,以及需要更新哪些消费仓库。
- 任何破坏兼容的协议变更都必须显式记录,不允许“静默升级”。