g update升级报错[g] Invalid Semantic Version
wangweicugw opened this issue · 5 comments
Describe the bug/缺陷描述
A clear and concise description of what the bug is.
g 1.4.0版本,使用g update命令升级报错[g] Invalid Semantic Version
Expected behavior/期望行为
A clear and concise description of what you expected to happen.
顺利升级
Screenshots/实际运行结果截图
If applicable, add screenshots to help explain your problem.
Environments (please complete the following information)/运行环境:
-
OS[e.g. uname -a]
-
g --version
g version 1.4.0 build: 2022-06-08T21:28:54+08:00 branch: master commit: e1fdf711f3175765997863f71ab5632ea5cf4261
-
go env
GO111MODULE='' GOARCH='arm64' GOBIN='' GOCACHE='/Users/wangwei/Library/Caches/go-build' GOENV='/Users/wangwei/Library/Application Support/go/env' GOEXE='' GOEXPERIMENT='' GOFLAGS='' GOHOSTARCH='arm64' GOHOSTOS='darwin' GOINSECURE='' GOMODCACHE='/Users/wangwei/go/pkg/mod' GONOPROXY='' GONOSUMDB='' GOOS='darwin' GOPATH='/Users/wangwei/go' GOPRIVATE='' GOPROXY='https://goproxy.io,direct' GOROOT='/Users/wangwei/.g/go' GOSUMDB='sum.golang.org' GOTMPDIR='' GOTOOLCHAIN='auto' GOTOOLDIR='/Users/wangwei/.g/go/pkg/tool/darwin_arm64' GOVCS='' GOVERSION='go1.21rc4' GCCGO='gccgo' AR='ar' CC='clang' CXX='clang++' CGO_ENABLED='1' GOMOD='/dev/null' GOWORK='' CGO_CFLAGS='-O2 -g' CGO_CPPFLAGS='' CGO_CXXFLAGS='-O2 -g' CGO_FFLAGS='-O2 -g' CGO_LDFLAGS='-O2 -g' PKG_CONFIG='pkg-config' GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/s_/c9lpww091y929f8c94k__ylm0000gp/T/go-build3467247047=/tmp/go-build -gno-record-gcc-switches -fno-common'
多谢反馈。先说结论:直接原因是您的网络无法正常访问 github api,根本原因是代码中对于发送 http 请求后的错误处理不够完善。
func (up ReleaseUpdater) CheckForUpdates(current *semver.Version, owner, repo string) (rel *Release, yes bool, err error) {
url := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases/latest", owner, repo)
var latest Release
if _, err = up.client.R().SetHeader("Accept", "application/vnd.github.v3+json").SetResult(&latest).Get(url); err != nil {
return nil, false, err
}
latestVersion, err := semver.NewVersion(latest.TagName)
if err != nil {
return nil, false, err
}
if latestVersion.GreaterThan(current) {
return &latest, true, nil
}
return nil, false, nil
}
当网络条件不佳的情况下,请求github api可能得到非200的响应(比如502),而代码中又没有对响应码的判断,导致latest.TagName
的内容为空,然后就会看到[g] Invalid Semantic Version
的错误信息。
我尝试把URL改为一个错误的地址,这样会得到404的响应码,成功复现了您的错误场景。
这个bug在多个版本中均存在,我会在最新的v1.5.2
版本中进行修复。您可以选择重试,等网络环境好了,更新自然会成功;或者可以选择手动下载最新版本进行更新。再次感谢您的反馈。
您好,我的系统MacOS g版本是version 1.2.1 ,我该怎么手动升级g到最新
这个bug在多个版本中均存在,我会在最新的
v1.5.2
版本中进行修复。您可以选择重试,等网络环境好了,更新自然会成功;或者可以选择手动下载最新版本进行更新。再次感谢您的反馈。
确实,我更换了网络,重试之后更新成功了,感谢支持