用途:在 Grafana Tempo 仓库的 main 或 release 分支上,处理合并、变基或依赖升级引起的 vendor/ 冲突,包括直接升级和传递依赖级联。
主要能力与原则:核心原则是绝不手工修补 vendor/ 文件,CI 会执行 go mod vendor 覆盖手工修改,修复必须来自升级或固定上游依赖。开始前需确认用户在当前处于 main 还是 release 分支,因为可接受的修复方式不同。
使用方式:先 git diff go.mod 了解改动的模块;用 git log、git show 在 main 上查找已解决问题的提交与版本,把 main 当作事实来源;运行 go mod tidy 暴露错误,再逐项修复缺失包、接口变更或调用点不匹配。随后重跑 go mod tidy 与 go mod vendor,确认修复是真实上游代码而非补丁,并执行 go build -mod vendor ./... 与 go test -mod vendor -run ^$ ./...(含集成测试目录)检查编译;必要清单还包括 go run pkg/docsgen/generate_manifest.go,如产生变更需提交 docs/sources/tempo/configuration/manifest.md。
分支差异与限制:main 分支允许手工修改代码;release 分支不应手工改生产代码,应优先从 main 挑选并 cherry-pick 对应提交,仅在没有合适修复时允许在 _test.go 中加最小兼容桩。修复前需先提交 go.mod、go.sum 与 vendor/ 变更,cherry-pick 冲突时对 go.mod、go.sum、vendor 保留己方,对新生成的文档或配置文件采用对方。资料还说明可根据提交大小及是否引入无关文件来决定 cherry-pick 还是手工修复,如需更广测试需用户确认。