尽管目前看起来 pkg.go.dev
和 does not provide API 是相互独立的,但它们实际上是根据 https://blog.golang.org/pkg.go.dev-2020 进行讨论的。pkg.go.dev
的一个特点是追踪谁导入了什么,这有助于确定修改公共结构体和方法的后果。
如果 pkg.go.dev
能够提供一个 API 来列出导入指定包的包,那么可以编写一个工具来Assert项目中一系列 git 提交在 go 生态系统中引发的破坏程度。
这样的工具可以作为 go mod 工具链的一部分,例如:
$ go mod what origin/master..HEAD
Changes from origin/master to HEAD modified following exported signatures:
github.com/org/go-lib/pkg/pkg1.New(...) (modified)
github.com/org/go-lib/pkg/pkg2.NewWithContext(...) (deleted)
github.com/org/go-lib/pkg/pkg2.Struct{...} (modified)
These changes would impact:
github.com/big-corp/oss-project/pkg/pkg1
github.com/oss-org/oss-project/v2/pkg/pkg3
你有什么想法吗?
4条答案
按热度按时间kq0g1dla1#
评估开源Go代码的状态并非一个坏主意,但让我们记住世界各地的企业和组织中数百万行的闭源代码。如果仅仅因为它在开源Go代码中不会引起问题而对Go或标准库进行破坏性更改,这将给闭源Go代码带来相当多的问题。
jrcvhitl2#
是的,您完全正确。
尽管如此,开源方面的事情已经给出了一个很好的评估,即会发生什么。
此外,如果pkg.go.dev被开源,这个工具可能会使部署了自己示例的企业受益。这对于开发人员来说是一个巨大的价值,因为他们可以了解自己在内部项目中的更改在整个企业Go源代码中意味着什么。
我认为这个工具是为了使人们意识到采用Go模块版本控制的重要性,通过给他们发布新的主要版本时发生破坏性更改的后果。
crcmnpdw3#
CC @jayconrod@jba
drkbr07n4#
Also /cc @julieqiu per owners .