Dependencies 语义版本修补协议:如果依赖项发生碰撞,您会碰撞吗?

Dependencies 语义版本修补协议:如果依赖项发生碰撞,您会碰撞吗?,dependencies,versioning,semantic-versioning,Dependencies,Versioning,Semantic Versioning,我有一个具有固定依赖项的python项目。由于第三方依赖项中的错误,在我的包中发现了一个错误。该依赖项发布了一个修补程序,修复了该漏洞。但是,根据协议,是否为固定依赖项的每个修补程序版本升级并发布版本?是的,您应该更新版本号。至少,您正在以一种可能改变其行为的方式(通过使用不同的依赖版本)更改应用程序,这需要传达给您的应用程序/库用户。也许你很有信心这是一个安全的改变,但总有改变的可能 如果你只是说更新一个固定的依赖项,没有添加任何主要功能,也没有产生API差异,那么你只会增加你的“补丁”版本号

我有一个具有固定依赖项的python项目。由于第三方依赖项中的错误,在我的包中发现了一个错误。该依赖项发布了一个修补程序,修复了该漏洞。但是,根据协议,是否为固定依赖项的每个修补程序版本升级并发布版本?

是的,您应该更新版本号。至少,您正在以一种可能改变其行为的方式(通过使用不同的依赖版本)更改应用程序,这需要传达给您的应用程序/库用户。也许你很有信心这是一个安全的改变,但总有改变的可能

如果你只是说更新一个固定的依赖项,没有添加任何主要功能,也没有产生API差异,那么你只会增加你的“补丁”版本号,例如从v1.2.3到v1.2.4。对于具有一组新的依赖项管脚的每个版本,您将升级修补程序版本。别担心,您不会用完版本号;)

另一方面,如果您使用内部向后兼容的功能更改汇总依赖项pin更新,那么您将碰撞“次要”版本号(例如1.2.3->1.3.0),如果您将其与不向后兼容的更改捆绑在一起,那么您将碰撞主要版本号(1.2.3->2.0.0)


这是一项艰巨的工作。如果您有一个底层模块需要更改,那么现在您不仅需要修改它的版本(可能是在清单中,并在git中标记它,并且记住推送标记),而且还必须在整个链上执行此操作。这是正常的吗?像这样的工具是否将其包含在为您提供的自动化中?Work==baddhing(tm)?当您有两个不同的客户机,它们拥有应用程序的v1.2.3版,其中一个看到不良行为,另一个看到良好行为时,您通常会开始寻找它们的环境差异如何影响系统行为。如果问题的根本原因是某个第三方库的版本不同,那么您最好先了解这两个应用程序之间的差异,尽管差异很小。是的,这很正常。嗯。。。当您试图遵循最佳实践时,需要做大量的工作,但每个依赖项只有一个用途,只有一个“客户机”,您开始怀疑这一切是否值得。:-)