目的
最近将一个开源项目转换到组织,顺带注册了个域名,想要实现如下
- 使用 go get 从自己的域名拉取包,这样拉下的包存放在以自己域名命名的文件夹里
- 使用 GitHub 作为代码仓库,将自己域名作为 git remote
总体
总体思路就是做跳转,这里使用 nginx 来实现
Golang 包的配置
参考官方说明
需要在一个 html 加个 meta 标签填入包名与仓库类型和地址
<meta name="go-import" content="example.org git https://code.org/r/p/exproj">
于是做了个 index.html
1 |
|
扔在 nginx 的文件目录下/usr/share/nginx/html/nps/index.html
nginx 将请求配好
1 | location /nps { |
这样使用 go get 自己的域名就行了,如果没有这个 meta 标签直接跳转,go mod 验证不会通过的
Git Remote 配置
既然 Golang 包是通过 html 跳转的,显然 git 直接设置 remote 为域名就不行了
幸运的是,我们一般是用的 .git
这样作为 remote,所以就可以在 nginx 上用正则表达式来匹配.git
,例如
1 | location ~* \.(git|git/) { |
这样 remote 设置为https://ehang.io/nps.git
就能正常使用 github 的仓库了