在阅读了很多文章/ QA /常见问题/书籍后,我开始思考 [MAJOR]。[MINOR]。[REV] 是最有用的版本控制架构 描述项目版本(版本控制架构)之间的兼容性 对于开发人员,不用于营销)。
MAJOR更改向后不兼容,需要更改 项目名称,文件路径,GUID等。
MINOR更改向后兼容。马克介绍新的 特征
REV用于安全/错误修复。向后和向前兼容。
在我的工作中,许多项目依赖于存储的内部库 在发布服务器(FTP)上。它们有不同的版本,例如:
1.0.0 1.1.0 1.1.1
依赖库的路径包括版本组件和硬件 在构建脚本中编码,用于自动下载到 lib dir。
问题:通常的做法是将库的路径包含在内 为内部开发构建脚本?
问题:这是最好的:在库名中包含版本号或 不?包含哪个组件?例如:
libfoo-1.so libfoo-1.2.jar libfoo-2.3.14.dll
如果仅包含 [MAJOR] ,则可以在源代码中内联库名 和版本更改,您不需要修改任何代码。如 库有固定的名称你总是可以问库版本 运行时(通过调用适当的函数)。
如果每次细微更改都包含 [MAJOR]。[MINOR] 组件 需要更新所有受影响的项目(调用LoadLibrary, CLASSPATH env var)。并且您无法在运行时检查版本 通常在运行时搜索库的标准机制 不允许使用通配符按名称加载(例如“libbar-2。*”)。
我认为不需要 [REV] 。你只需要 以错误报告的方式提供此组件。
问题:我计划实现这样的架构:包发布到 路径,如:
/srv/projs/foo/1.2.2
并创建符号链接
/srv/projs/foo/1.2
来自之前的路径。所以每个依赖项目都不需要make 获取最新库的任何步骤。任何人都使用这样的架构吗?
答案 0 :(得分:2)
如果您仍然没有使用(任何)SCM,那么您走错了路。 如果你不使用可以与旧SCM集成的构建器 - 你又走错了路径
文件的永久名称(不包含 *任何版本号)是维护源代码的最简单方法(您必须在构建内部修改任何内容)