摘要:
在软件管理的世界里有一个可怕的地方叫“依赖地狱(dependency hell)”。你的系统越是成长壮大,你越是整合更多的软件包到你自己的系统中,你越有可能在将来的某天发现自己已经掉进了这个绝望的深渊。
在一个有着众多依赖的系统里,发布新版本可能很快成为一个恶梦。如果依赖定义得过于紧密,你就有可能进入版本锁定(version lock)的状态(版本锁定是指一旦更新一个软件包,就不得不更新其他所有依赖于它的包)。如果依赖定义得过于松散,你又难免会被版本穿插(version promiscuity)所伤(让人以为会与多得不合理的未来版本兼容)。当你被版本锁定或版本穿插所阻挠而不能容易地让你的项目顺利前进时,你就身处依赖地狱中了。
作为这个问题的解决方案之一,我提议用一组简单的规则和要求来约束版本号的分配和增长规则。为了让这套理论运作,你必须预先定义好自己的公共API。这可以通过文档定义或代码强制要求来实现。无论如何,这套API的清楚明了是十分重要的。一旦你定义了公共API,你就可以通过修改相应的版本号来通知大家你的修改。考虑使用这样的版本号格式:X.Y.Z(主版本号,次版本号, 阅读全文