追溯性地对应用程序进行版本控制

Posted

技术标签:

【中文标题】追溯性地对应用程序进行版本控制【英文标题】:Versioning an app retrospectively 【发布时间】:2018-12-28 23:19:06 【问题描述】:

我最近开始研究一个已有几年历史的应用项目。他们想开始进行代码发布和版本控制,只是为了记录每次迭代后的所有更改。

有没有一种有效的方法来确定当前版本应该是什么?当前的 master 中大约有 5000 次提交,我猜我只需要浏览一下即可。

【问题讨论】:

不清楚你在问什么。如果您刚刚准备开始版本控制,怎么会有 5000 次提交?你如何定义“当前版本应该是什么”? 我是说该项目已经进行了多年,他们并没有跟踪每个增量更改的版本.. 到现在(5000 次提交)和版本? ?.我问在 git 中是否有一种有效的方法来计算他们当前位置的版本号,而不需要通过 5000 次提交来寻找补丁、次要和主要提交? ?那么为什么不声明当前版本号并跟踪版本号。您声明当前版本是什么并不重要。有人会有他们不希望它是 1.0.0 的营销原因,但除此之外,它只是作为与以前不存在的版本号区分开来的一种方式。 (您可以浏览所有历史并为每次提交确定一个版本......但这需要大量工作,而且考虑到 已安装的基础中没有人会知道这些新的还是数字?) 对 - 如果要做大量工作,这样做没有太大意义,我只是为了“正确”做事,但你可能是对的没关系。我想调用当前版本 1.0 将是一个很好的起点,因为它是我们拥有的唯一主要版本。感谢您的意见! @s89_您可以根据自己的使用方式添加答案,稍后标记答案。它也将使有类似问题的其他人受益。 【参考方案1】:

事实证明,我们一直在跟踪我们软件的版本,但每次我们只是将每个版本增加 0.0.1。我会在下面写下我的计划,以防它对某人有所帮助。

正如另一位发帖人所建议的,我们将使用当前的数字 1.4.16 作为起点——因为在此之前的一切都毫无意义。

我将尝试介绍语义版本控制(在此处详述 - https://semver.org/),这似乎是行业标准,并简要总结..

给定版本号 MAJOR.MINOR.PATCH,增加:

    进行不兼容的 API 更改时的主要版本 以向后兼容的方式添加功能时的次要版本 和 PATCH 版本,当您进行向后兼容的错误修复时。

除此之外,我将使用git tag (https://git-scm.com/book/en/v2/Git-Basics-Tagging) 在每个版本中标记提交,并在 Github 上创建版本,它有一些方便的功能来存储我们的版本说明。标记的好处是您可以追溯标记提交 - 因此,如果您愿意,可以将以前的提交标记为 v1.x.x。不管你想走多远。

【讨论】:

以上是关于追溯性地对应用程序进行版本控制的主要内容,如果未能解决你的问题,请参考以下文章

如何务实地对配置文件进行版本控制?

在多项目环境中独立地对模块进行版本控制并压缩所有依赖项

dotnet 核心包版本控制

项目管理工具 SVN

CentOS 7 使用SVN+Apache搭建版本控制服务器

Flyway 一个模式中的多个元数据表