我正在开发 hap 包的版本 2,它是一个 HTTP API 框架。版本 2 还没有准备好,最新版本 ls
v2.0.0-alpha.2
,如下所示:
* 9319436 - bug fix, refined action error output (HEAD -> master, tag: v2.0.0-alpha.2, origin/master, origin/HEAD) (16 hours ago) <xrfang>
* 2b1046a - various improvements (20 hours ago) <xrfang>
* 464dcb7 - example: added source IP control and global logging (tag: v2.0.0-alpha.1) (2 days ago) <xrfang>
* 94d6607 - reversed finalizer execution order (2 days ago) <xrfang>
* 7604144 - added global actions and finalizers (2 days ago) <xrfang>
... ...
整个repo的目录结构为:
.
├── example
├── go.mod
├── LICENSE
├── README.md
└── v2
├── api
├── arg
├── example
├── go.mod
├── handler
└── param
根目录下的
go.mod
是:
module go.xrfang.cn/hap
go 1.17
而
v2/go.mod
看起来像:
module go.xrfang.cn/hap/v2
go 1.22.1
现在的问题是go无法获取v2预发布,
go mod tidy
在一个使用hap/v2
的项目下:
go: downloading go.xrfang.cn/hap/v2 v2.0.0-alpha.2
go: usermgr imports
go.xrfang.cn/hap/v2: go.mod has non-.../v2 module path "go.xrfang.cn/hap" at revision v2.0.0-alpha.2
go: usermgr imports
go.xrfang.cn/hap/v2/api: go.mod has non-.../v2 module path "go.xrfang.cn/hap" at revision v2.0.0-alpha.2
go: usermgr imports
... ...
使用
go get
:
$ GOPROXY=direct go get -u -v -x go.xrfang.cn/hap/[email protected]
# get https://go.xrfang.cn/hap/v2?go-get=1
# get https://go.xrfang.cn/hap/v2?go-get=1: 200 OK (0.196s)
get "go.xrfang.cn/hap/v2": found meta tag vcs.metaImport{Prefix:"go.xrfang.cn/hap/v2", VCS:"git", RepoRoot:"https://e.coding.net/xrfang/go/hap.git"} at //go.xrfang.cn/hap/v2?go-get=1
mkdir -p /home/xrfang/go/pkg/mod/cache/vcs # git3 https://e.coding.net/xrfang/go/hap.git
# lock /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9.lock
# /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9 for git3 https://e.coding.net/xrfang/go/hap.git
cd /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9; git tag -l
0.002s # cd /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9; git tag -l
cd /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9; git -c log.showsignature=false log --no-decorate -n1 '--format=format:%H %ct %D' refs/tags/v2.0.0-alpha.2 --
0.003s # cd /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9; git -c log.showsignature=false log --no-decorate -n1 '--format=format:%H %ct %D' refs/tags/v2.0.0-alpha.2 --
cd /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9; git cat-file blob 931943650fcb745bf3219ad4bf1ca93177047a5a:go.mod
0.002s # cd /home/xrfang/go/pkg/mod/cache/vcs/0f263e071aed73ec9ef118d38d27fc7cbbcc33f1c19bbac5423684b8b560e3f9; git cat-file blob 931943650fcb745bf3219ad4bf1ca93177047a5a:go.mod
go: go.xrfang.cn/hap/[email protected]: go.mod has non-.../v2 module path "go.xrfang.cn/hap" at revision v2.0.0-alpha.2
在 go-nuts 论坛的帮助下发现并解决了问题。问题是我自己的 go-get Facade 返回了不正确的元标记。它回来了
<meta name="go-import" content="go.xrfang.cn/hap/v2 git https://e.coding.net/xrfang/go/hap.git">
正确的标签应该是:
<meta name="go-import" content="go.xrfang.cn/hap git https://e.coding.net/xrfang/go/hap.git">
因为
/v2
不是这个存储库的根目录。