跳过正文

Version Control

·9 字·1 分钟
yjdyamv
作者
yjdyamv
偶尔写点东西,记录生活,分享知识。

今天想谈谈版本管理, 水水

早在2000年甚至更早,在有成熟工业软件开发的时代,版本管理就被充分的认识到了。企业里的程序员可以通过控制版本号来控制软件的发行,营销可以通过一个版本号的变化显示出新产品相对于旧产品的“nb”,文字工作者可以用版本控制来减小订正错误的精力。版本控制发生在社会生活的方方面面,在我们程序员这一行更不必说了,git大家天天用。

近来想要运行别人发来的源码才发现版本控制的必要性,对操作系统、工具链、库的层层控制,保证了我们必定能复现问题、追溯问题、解决问题。

对于操作系统的控制集中在操作系统的版本号、内核版本,典型工具是docker。我们可以定义基础镜像Ubuntu:2404Debian13,定义docker的运行逻辑,每一步都被我们控制的很好:基础镜像->下载依赖->构建软件/运行服务。

对于工具链的控制也即中在工具链的版本号上,如clang21gcc15VisualStudio2026java25nodejs:24等。CMake提供了cmake_minimum_required来控制CMake的行为,编译器提供了传递的参数来控制编译链接的行为。

对于库的控制也是集中在版本号上。库有可能引入了breaking change,它可能会用大版本号的提升来提示这点。只要能控制我们使用的库的版本,我们就能保证库依赖的行为。

现代软件开发也由此开发了不少工具,如包管理、虚拟环境、docker等。唯一的圣人linus在2005年开发了git的基础,现在git为无数人所用,产出了GitHub、GitLab等百亿级别的公司,大家也都依赖于它。其重要性是显而易见的。