首页 游戏问答 正文

野猫 版本大全

发现这个烂摊子

我刚接手这家公司的技术顾问活儿时,差点没被气死。他们那个核心系统,内部代号叫“野猫”。版本简直是一团浆糊。新来的开发员根本不知道自己

跑的

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址(www.game519.com)
是哪个版本。我

打开

代码仓库,

拉下来

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址(www.game519.com)
一看,好家伙,分支比树杈还多。

这个“大全”不是我整理出来的,是他们自己

搞出来的

灾难。这公司历史有点久,每换一任技术主管,就

推倒重来

一套技术栈。有基于Python 2.7的,有半途转Go的,甚至还有一套是十年前外包公司用Delphi写的控制台程序,竟然在生产环境里

跑着

关键业务。

我问他们:“你们怎么

区分

哪个是正式版?万一出问题怎么

回滚

?”他们给我的回答是:

看服务器的名字!

服务器名里带“Alpha”的就是最新的,带“Beta”的可能随时要

。我当时就

拍了桌子

,这哪是版本管理,这是

考古

探险队。整个团队都在

盲人摸象

,没人真正

知道

系统的全貌。

逼我动手的原因

为什么我这个老油条要亲自

插手

这种脏活累活?说出来有点丢人,主要是私人恩怨。前阵子,我那个亲戚,就是在我介绍下

进了

这家公司的小伙子,他

搞砸了

一个版本升级。

跑错

了环境,把一个测试数据

灌进

了正式版本。客户炸了,公司赔钱了。小伙子直接被

炒鱿鱼

了。我当时脸都绿了,觉得自己

欠他

一个交代。我心想这根本不是他的错,是这堆“野猫”版本把人

绕晕

了。

这件事发生后,我直接

找到

老板。

撂下

狠话:这个版本大全不

清掉

,下次出事的就不是一个程序员,而是整个公司。

为了

给我那亲戚

出口气

,为了让公司能正常

运转

,我必须

清理

这个门户。

我的清理大战:版本定性与归档

决定

不再相信任何文档,我自己动手

。这事儿急不得,我

花了

三天时间,就

做了一件事

建立

事实清单。

我先

组织

了一次全公司拉网式的摸底。我

抓着

各个小组的负责人,让他们把现在跑着的代码的

哈希值

给我

拎出来

,一个都不能少。然后我

建了

一个大的表格,我管它叫“野猫收容所”。

  • 明确了

    现在还在用的生产版本:只有三个。我们把它们

    打上

    了唯一的Tag,比如“野猫_PRODUCTION_GO_V4.2”。

  • 标注了

    那些已经停产但是客户那边可能还在用的版本(主要是那套Delphi写的遗留系统)。这些系统我

    冻结

    了代码库,只允许

    修补

    安全漏洞,不准

    新增

    功能。

  • 最重要的是,我

    揪出

    了那几个开发自己私藏的、还没上线的、

    乱七八糟

    的分支。这些分支,如果三天内没有

    合到

    主干或者

    解释

    清楚用途,我一律

    强制删除

整个过程,我强行

推行

了Git Flow的简化版,

要求

所有人都必须

流程。所有的老版本,我

打上

了唯一的Tag,然后直接

封存

到名叫“博物馆”的仓库里。任何人不准再

博物馆里的代码,除非

获得了

三级审批,这几乎是

不可能

的。

落地和感受

这回实践,我

整整花了

三个礼拜,

磨破了

嘴皮子。为什么会搞出这么多版本?就是因为最早那批人根本

没想长远

。今天觉得Go明天觉得Java香,大家都是各

占一个山头

,只

考虑

自己那一片,根本不

别人。项目越滚越大,互相牵制,根本

撤不下来

。技术债务

堆积

,最终要由

倒霉蛋

背锅

很多人嘴上说要规范,但真让他们把自己的“宝贝”老代码

扔掉

,那比

要他命

还难。但我

坚持

住了,把那些不合格的代码分支

砍掉

。现在所有人都必须

基于

最新的主干进行开发。

我的那个亲戚虽然

丢了

工作,但至少我

拆掉了

这个地雷阵。现在这套流程跑得挺稳,虽然大家一开始骂我,但现在

至少

没人再因为版本混乱而

背锅

了。所有的“野猫”都被

锁进

了笼子,

跑不出来

了。在我看来,这比什么都强。