什么版本?
这个问题在最新版本中是否重现?
是的
你做了什么?
查询 https://golang.org/dl/?mode=json 以获取稳定版本和测试版。
你期望看到什么?
一种查询端点并返回最新稳定版本的方法,即 go1.14.7 和 go1.13.5,以及最新的不稳定/测试版/候选发布版本,即 go1.15rc2。
你看到了什么?
我只看到了一种查询最后两个稳定版本的方法:
https://golang.org/dl/?mode=json
或者查询所有包含稳定版本、不稳定版本和已归档版本的发布版本,其中有很多:
https://golang.org/dl/?mode=json&include=all
5条答案
按热度按时间jhdbpxl91#
建议
我认为对于那些能够自动安装最新稳定版本的工具或开发环境,能够轻松查询最新不稳定版本是很有用的。鼓励使用不稳定版本,这样可以尽早发现问题,这是我们使之变得更容易的一种方式。
我们可以将
include
选项更改为其他值,如stable
、unstable
和archived
。查询值可以支持逗号分隔的有效值列表,因此有可能指定stable,unstable
。https://golang.org/dl/?mode=json&include=stable (默认)
https://golang.org/dl/?mode=json&include=stable,unstable
https://golang.org/dl/?mode=json&include=all
这个实现起来非常简单,因为这里的逻辑非常直接且可塑性强:
https://github.com/golang/website/blob/0108f0928b89f2c1b821381349f473db3f4cbfc4/internal/dl/server.go#L101-L107
fsi0uk1n2#
https://golang.org/cl/247524提到了这个问题:
internal/dl: add includes values stable, unstable, archive
pdtvr36n3#
确实,为这个功能添加支持的实现相当小且简单。然而,一旦我们为这个功能添加了支持,它将变得难以(几乎不可能)移除,我们需要无限期地维护它。所以在做出改变之前,我想更好地了解现在哪些事情是不可能的(或者困难或低效的)。
在我看来,客户端可以请求 ?mode=json&include=all 并在他们自己的端执行任何类型的过滤逻辑。这是灵活且简单的。
你能详细说明为什么你认为应该进行这个更改吗?这是否与能够在某些情况下减少需要传递的响应大小有关?还有其他因素吗?
我认为对于能够自动安装最新稳定版本Go的开发工具或环境来说,能够轻松查询最新的不稳定版本是有用的。
目前哪些方面不容易实现呢?
另外,请参阅 #36898 、 #38773 和 #37581 ,它们可能与此相关。
anhgbhbe4#
目前的情况有什么不容易的地方吗?
这并不是关于减小响应大小的问题,而是那些在不同环境中自动安装Go的人可能会遇到困难,比如我,我在像bash脚本这样的脚本中这样做。因为默认的响应只是最后两个稳定版本,所以很容易将输出管道到其他shell命令以安装稳定版本。
我没有发现在bash中过滤大量JSON很简单。在Go或其他语言中做这件事应该没问题,所以也许我只是用错了工具。
当发布候选版本和测试版发布时,理想情况下,人们可以通过在URL中添加参数来轻松安装它们,就像安装稳定版本一样容易。解析所有已归档的旧版本以获取发布候选版本/测试版绝对是可能的,但我认为至少在归档列表之外显示betas是有意义的,这样人们更容易安装所有稳定+RCs/betas,因为鼓励运行betas和RCs。如果鼓励的话,降低门槛是值得的吗?
另一个选择是将发布候选版本/测试版包含在默认输出中,但那将是一个破坏性的变化,我不确定这是否合适。
nhhxz33t5#
我们希望为vscode-go的Go发布检查使用这个。在我们的案例中,响应的大小很重要,因为vscode-go定期监视这个端点。目前,
include=all
输出大小接近1M,并且会持续增长。@dmitshur和@leighmcculloch,你们介意我们重新打开这个问题来重新考虑这个功能并整理细节(例如include=stable,unstable
)吗?