别把 Go 代码耦合到 GitHub:用自定义域名给代码托管解绑
来源: iain.rocks — 2026-09-27
概述
Go 用导入路径直接指明去哪里取代码,这既方便又埋雷:一旦导入路径里写着托管商的名字,你的代码就和托管商绑死了。作者主张使用自定义域名,把「去哪取」变成一条可以随时改的 DNS 指向。
核心要点
- 如果导入路径写成 github.com/user/repo,迁移到 GitLab 就必须修改代码,否则工具仍然去拉取旧版本。
- 作者见过一家公司同时运营 GitLab、GitHub 与 Azure DevOps 三套平台,只因为迁移代码成本高到「没有时间」处理,结果白白付三份托管费用。
- 解法是 go.iain.rocks、go.uber.org、go.mongodb.org 这类自定义域名,换托管商时只改域名指向,代码一行不动。
- 服务端靠 go-import 与 go-source 元标签告诉 Go 工具真实仓库位置,nginx 里用 go-get=1 区分来访者是工具还是人类浏览器,后者直接 301 到 GitHub。
- 为了让页面本身就是可用的人类入口,重定向里还保留了原始路径。
金句
这时你的代码就和托管商绑定了:一旦把 Git 托管迁到 GitLab,你不得不修改代码。
👍 0
👎 0
← 返回 Lobsters 首页