x/pkgsite:使用pkg.go.dev作为源来确定破坏性更改的影响,

gk7wooem  于 6个月前  发布在  Go
关注(0)|答案(4)|浏览(43)

尽管目前看起来 pkg.go.devdoes 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

你有什么想法吗?

kq0g1dla

kq0g1dla1#

评估开源Go代码的状态并非一个坏主意,但让我们记住世界各地的企业和组织中数百万行的闭源代码。如果仅仅因为它在开源Go代码中不会引起问题而对Go或标准库进行破坏性更改,这将给闭源Go代码带来相当多的问题。

jrcvhitl

jrcvhitl2#

是的,您完全正确。
尽管如此,开源方面的事情已经给出了一个很好的评估,即会发生什么。
此外,如果pkg.go.dev被开源,这个工具可能会使部署了自己示例的企业受益。这对于开发人员来说是一个巨大的价值,因为他们可以了解自己在内部项目中的更改在整个企业Go源代码中意味着什么。
我认为这个工具是为了使人们意识到采用Go模块版本控制的重要性,通过给他们发布新的主要版本时发生破坏性更改的后果。

drkbr07n

drkbr07n4#

Also /cc @julieqiu per owners .

相关问题