voidint/g

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.
image

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到最新

您好,我的系统MacOS g版本是version 1.2.1 ,我该怎么手动升级g到最新

这里下载一个,或者通过源代码编译一个。

这个bug在多个版本中均存在,我会在最新的v1.5.2版本中进行修复。您可以选择重试,等网络环境好了,更新自然会成功;或者可以选择手动下载最新版本进行更新。再次感谢您的反馈。

确实,我更换了网络,重试之后更新成功了,感谢支持