软件版本控制
Posted
技术标签:
【中文标题】软件版本控制【英文标题】:Software Versioning 【发布时间】:2017-11-20 15:07:38 【问题描述】:平台:Visual Studio 2008(我知道它很旧,但我有自己的原因)。
我是概念的新手,所以我需要有关如何使用它的建议。
目前,这是我使用的方式:-
1.0.0.0 到 1.0.0.1(用于清除错误) 1.0.0.0 到 1.0.1.0(用于软件的微小更改,例如性能改进) 1.0.0.0 到 1.1.0.0(用于在软件中添加某些功能) 1.0.0.0 到 2.0.0.0(主要更新)我是从 here 那里学到的。
现在我能想到的问题是,当软件从版本 1.0.0.0 那么就会有无数行代码。例如:
将 1.0.0.0 更新到 1.0.0.1
-
使用存储过程而不是视图
添加了备份功能
将 1.0.0.1 更新到 1.0.0.2
-
改进的备份功能实用程序。
将 1.0.0.2 更新到 1.0.0.3
-
修复了软件备份功能中的错误。
现在假设从版本 1.0.0.0 更新到 1.0.0.1 花费了 40代码行来更改存储在系统中的数据库或文件的设计,并且对于每次单独的更新,根据更新需要越来越多的代码。现在达到 3.5.17.3485 版本后,想想会有多少行代码。
谁能告诉我如何处理这种情况?
【问题讨论】:
您大大高估了数据库结构更改的频率。即使每次更新都会发生变化,为什么大型升级实用程序会成为问题? @JJJ,如果我们以我目前的情况为例,我的软件版本是 1.0.2.27,更新类已经有 1500 行代码了。 为什么这是个问题?虽然我真的不敢相信数据库迁移脚本会变得那么大,或者你做错了什么。 为什么小更新的升级脚本大小为 1MB?这没有任何意义。除非并且即使数据库结构完全改变,也应该只有几行代码。 呃...是,升级脚本应该只更改需要更改的部分而不是其他任何内容,而不是从头开始重建整个数据库。 【参考方案1】:你应该看看Semantic Versioning:
考虑 X.Y.Z (Major.Minor.Patch) 的版本格式。不影响 API 的错误修复会增加补丁版本,向后兼容的 API 添加/更改会增加次要版本,而向后不兼容的 API 更改会增加主要版本。
只有更改主要版本的版本实际上可能需要您的应用程序用户更改他/她自己的代码。
【讨论】:
请检查更新的问题,我忘了提到升级日志是指开发人员所做的更改,例如在软件中写入的数据库中添加和删除字段。 在这种情况下,您的问题与版本控制无关。相反,您应该提供手动或自动运行的数据库迁移脚本。这些脚本应该完成在特定版本中运行应用程序所需的所有累积更改。 你是说我应该为每个版本更新维护每个单独的脚本吗?因为如果我达到 3.5.9.1555 版本,我会有 GB 的脚本给我的客户更新。 我建议有一个单独的数据库迁移脚本需要从版本 A 升级到 B,从 B 到 C 等。但是如果你有千兆字节的数据库迁移,那么你要么误解了一些东西,要么你做错了。 不,这就是我所说的,根据我将软件从 1.0.0.0 更新到 1.0.0.1 会假设制作 1MB 的脚本,现在我必须将所有脚本维护到 3.5。 9.2566 那你不觉得会有这么多脚本吗?【参考方案2】:为什么开发人员需要维护更新日志?如果你使用 svn/git 或其他任何东西,任务可以很容易地自动化。另外,如果 3.5.17.xxx 版本的自述文件/历史文件只包含自 3.5.0.0 版本以来的日志,我想每个人都会很高兴。
尽可能地自动化构建系统有很多优点,尤其是在进行“快速”修复或为客户发布特殊版本时,自动化任务不会忘记事情。
【讨论】:
我已经更新了我的 qustion,我忘了说我的平台是 VS2008,这就是为什么我不能使用 GitHub 等,实际上它是如何工作的? @Agent_Spock 为什么在使用 VS2008 时不能能够使用 GitHub? 你能指导我怎么做吗?或任何关于它的文章? 对于“升级日志”的误导性使用,我们深表歉意。我的意思是开发人员编写的用于更新数据库的查询,例如更新存储过程、视图、添加和删除字段等。 我也坚持使用/使用 vs,并且使用 svn 取得了巨大成功。我什至使用 dos 样式的 .bat 文件,而不是 Windows 扩展的 bash。我远程工作,构建机器实际上在不同的国家。制作构建系统只用了不到 2 周的时间,制作一个新的构建很简单:将 a 分支到 svn 上的标记。点击 build.bat。使用模块的新标记更改依赖项文件,为依赖模块运行构建,这会更新 .vcproj 文件中依赖项的路径。做一个标签,构建。以上是关于软件版本控制的主要内容,如果未能解决你的问题,请参考以下文章