如果你有一个项目,它会释放一个库和一个应用程序,你如何处理两者之间的版本号。

示例:您的项目提供了一个库,可以将不同的文件格式相互转换。该库已发布,可包含在其他应用程序中。但是,您还发布了一个命令行应用程序,它使用该库并实现了该功能的接口。

新版本的库会导致应用程序的新版本(使用所有新功能),但应用程序的新版本可能不会触发库的新版本。现在如何处理版本号:完全独立还是库和应用程序版本应该以某种方式依赖?

有帮助吗?

解决方案

我会说使用单独的版本号,当然还要记录每个应用版本需要的最低库版本。如果它们总是具有相同的版本号,并且您只对相同编号的库版本测试应用程序,那么它们实际上不是单独的组件,所以不要说它们是。将整个批次作为一个整体释放。

如果您将它们分开,您仍然可以在适当的时候给它们相同的版本号 - 例如,在主要的兼容性中断之后,您可能同时发布2.0版本。

以下示例说明:xsltproc(命令行应用程序)作为libxslt(库)的一部分发布,因此没有自己的版本号。但是libxslt依赖于另外两个库,它们的版本号是独立的。

$ xsltproc --version
Using libxml 20628, libxslt 10120 and libexslt 813
xsltproc was compiled against libxml 20628, libxslt 10120 and libexslt 813
libxslt 10120 was compiled against libxml 20628
libexslt 813 was compiled against libxml 20628

其他提示

完全独立的版本号,但命令行(或任何其他相关的)应用程序应该在帮助部分或横幅中说明它编译的库的版本。

通过这种方式,您将能够确定应用程序具有哪些功能并减少潜在的混淆,特别是考虑到有人可以出于任何原因针对旧库编译较新的应用程序版本。此外,您可以将它们分离,并可以在库中添加功能,而不依赖于新应用程序版本的发布等。

如果你确定你总是希望所有的应用程序和库都保持同步,那么你可以使用相同的数字,但这是因为没有强大的理由而添加约束。

我们构建了一个使用框架的应用程序。我们为两者保留单独的版本号。

这很好用,特别是现在框架和应用程序已经变得足够大,可以由不同的团队开发。

所以我的意见......保持版本号分开。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top