从 SVN 到 Git,再到云开发:我的代码管理进化史
一、SVN 年代:先更新,后提交
刚入行那几年,公司用的版本管理工具是 SVN。那时候开发主管每天说得最多的一句话就是:“先更新,后提交。”
每天早上来了,先得 svn update 一下。万一哪个同事昨天下班前提交了新代码,你没更新就直接开工,到了下午提交的时候,冲突就得手工处理。那时候最怕听到“冲突了”,得对着满屏的标记一行行看,搞不好还得把别人叫到工位旁边一起改。
所以“先更新,后提交”成了铁律。不是建议,是强制要求。谁忘了更新直接提交,把别人代码覆盖了,第二天晨会上一定会被点名。
SVN 的核心思维是中央服务器是唯一的真理。每个人的本地代码只是一个工作副本,没网就干不了活——你没法提交,也没法看历史,只能干瞪眼。那时候出差去客户现场,没内网环境,连代码都带不走,只能靠 U 盘拷,回来再手工合并。
二、Git 年代:分布式革命
后来公司开始推 Git,最开始是抗拒的。commit 和 push 是两个动作?本地还有个暂存区?分支切换这么快?当时觉得,这都是什么花里胡哨的东西。
真正让我转念的,是一个小项目。当时需要同时维护三个版本的代码:生产版、测试版、还有一个正在开发的新功能。用 SVN 的话,得开三个分支,合并的时候就是灾难。用 Git,建三个分支,功能开发完 merge 到测试分支,测完再 merge 到生产分支,冲突很少,速度快到让我觉得不真实。
慢慢地,SVN 从我的工作里消失了。Git 带来的核心改变不是“更快的命令”,而是一种去中心化的信任机制。SVN 时代,代码的“真理”在中央服务器上,你本地只是一个影子。Git 时代,每个人的本地仓库都是完整的,没有网络的限制,你可以随时提交、随时看历史、随时开分支。
后来 GitHub、GitLab、Gitee 这些平台把 Git 的生态进一步放大。Pull Request、Code Review、CI/CD 这些东西,在 SVN 年代是不可想象的。现在后端开发基本都默认 Git,SVN 在一些老项目、游戏行业、Unity 项目里还有残余,但已经是小众了。
三、远程开发:代码不用落地了
Git 解决了版本管理的问题,但开发环境配置依然是痛点。
几年前接手一个老项目,JDK 8、Node 14、MySQL 5.7、Redis 3.2,十几个依赖版本环环相扣。光配本地环境就花了半天,有几个依赖在 Windows 上根本跑不了,只能装虚拟机。虚拟机一开,笔记本风扇就开始起飞。
后来发现了 VS Code 的 Remote-SSH 插件。第一次连上开发服务器,打开项目,代码在服务器上,编辑在本地的 VS Code 里,终端也是服务器上的终端——那一刻有种“我终于可以把开发环境扔到云端了”的感觉。
再后来,云开发更进一步。GitHub Codespaces、阿里云开发平台这类产品,连服务器都不用自己维护了。打开浏览器,写代码,环境自动配好。你的代码、依赖、终端全在云端,本地只是一个显示器和键盘。
这让我想起一个趋势:开发环境正在从“本地”走向“远端”,从“自己配”走向“自动配”。
| 年代 | 代码在哪 | 环境在哪 | 计算在哪 |
|---|---|---|---|
| SVN 年代 | 中央服务器 + 本地 | 本地 | 本地 |
| Git 年代 | 中央仓库 + 本地完整副本 | 本地 | 本地 |
| 远程开发年代 | 远端服务器 | 远端服务器 | 远端服务器 |
| 云开发年代 | 云端 | 云端自动配 | 云端 |
四、背后的逻辑:让专业变简单
从 SVN 到 Git,再到远程开发和云开发,整个演变过程里有一条主线:把复杂的事情交给工具,让人专注于创造。
SVN 年代,你得自己管理冲突、手动合并、出差还得拷代码。Git 年代,分支管理、版本追溯变得简单了,但开发环境还是头疼。现在远程开发和云开发,连环境都不用你操心了。
这个逻辑不限于开发工具。监控领域也一样。以前服务监控是大公司才有的能力,不管是自建 Zabbix、Prometheus,还是用商业监控软件,都需要专门的运维团队来搭建和维护。小团队、个人开发者根本玩不转。现在像云哨兵这类轻量监控工具,把部署和运维的复杂度都省掉了,填个网址就能用。同样是监控服务,一个需要专人维护,一个开箱即用——区别不在功能,在门槛。
降低门槛,让专业归于简单——那些曾经只有大厂才用得起的东西,正在一步一步变成每个人的标配。供参考。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)