月光宝盒--版本管理1
凡事总须研究,才会明白。大话西游能够成为90年代经典,我也还依稀记得是因为“得不到 + 已失去”,可是不甚清楚。我翻开碟子一查,明明白白的每帧中都写着“无厘头”几个水印。我横竖睡不着,仔细看了半夜,才从帧相关中看出货来,满片满世界都刻着两个字:“时间”和“版本”!
版本管理现在越发地直白出来了。
1. 当做消遣的科幻电影
1984年,T800回到提交点,想创建出另一个demon分支。它失败了,但留下一个足以破坏主干架构的bug。1992年,bug在主干已成长为宕机级bug,demon分支即将自动生成。T1000带着更大的权限,来清除未来的QA,遭遇到被改造过的reviewer--另一个T800,结果bug被回滚。再后来的2003年,2009年,我们看到主干上还在不断制造bug,然后被reviewer清除。
1985年,Marty McFly在Back to the Future(实际是回到过去)中,比较了30年前和现在的老爸。帮助老爸打败情敌,维护以自己为核心的主干正常发展,并解救了自己的忘年交Dr. Emmett Brown。后来Marty发现,他只是一个修改号(revision),他得去HEAD解救他的儿子。
1993年,猪猡公园,对不起,是猪猡记公园。Steven Spielberg自己在主干的蚊子中,埋下了罪恶的设计缺陷种子,引诱开发人员培养出无数恐龙级的bug,这个模块用户的大部分被bug吃掉。还好该bug的在一个独立的模块中,幸存者逃出来后就从主干中关闭了这个模块的功能配置项。(慢,真的关掉了吗?Spielberg显然不会轻易让自己维护的模块出局,他接着发布了猪猡2、猪猡3、猪猡3D,搞得大家对模块化是否能封装变化产生怀疑)
1995年,Bruce Willis被不准确的修改号和注释整得很惨,被当成精神病(遇见一个病友),被回到一战战场,最后和“十二猴子军团”的疯子领导战斗,这个领导就是当初的病友。混乱的注释,混乱的回滚。Willis不是被自己提交的注释绊倒的第二个人。
2001年,Keanu Reeves完整演示了冲突分支的概念。Neo在主干中从实习生做起,平时干私活搞点小聪明,有搞bug的天赋,被选中做领导来维护OEM分支(备注:该分支已经重启了六次,每次都失败)。于是年纪轻没经验,在主干中飞天入地乱加代码,挑战各种规范接口,非法调用其他模块资源。搞得发布分支老大非常不爽,要清理OEM团队在分支和主干的提交。两者目标和资源冲突起来,搞得以前一个野心勃勃的reviewer Smith,也要建立一个OEM分支。Smith连开发背景都没有,只知道追求完全一致的接口,按代码行数计算功能和规模,胡闹一通,还要求一国三制。最后发布分支和Neo都受不了了,讨论一个妥协方案,保留少部分Neo分支资源,然后Neo和Smith火并,Smith分支全部被删除,Neo分支建立起来,但没有需求人员,人心也散了。主干继续做人肉电池,为发布分支自动化运行提供支持。
2010年,Nolan和Leonardo合作,整出了一堆费脑子的Inception递归项目,而且只在主干做,不允许使用分支。每个人都干得很辛苦,因为每递归一层子项目,项目时间会延长20倍,除非你不玩了,需要自杀或他杀来退出。但你没有陀螺单元测试的时候,你根本分不清你在哪个项目混。结果有人的死了,她还活着;有的人活着,他被骗了。
2011年,Colter Stevens上尉,穿着别人的马甲,在8分钟的Sourcecode实验项目里,不断地从一个指定提交点开始死亡行军,试图找出导致项目死亡的真凶。随着项目进行,他了解到无论成败,他都会被从项目注销掉。本着开发的职业精神,利用不知名的工具,最后他成功了解救了项目,并在实验马甲被注销的前一刻,他同步到项目主干中,继续发布新版本生活。
1968年的人猿星球,一个人类开发员,去实验分支搞预研,因为没有版本计划,打了个瞌睡。醒来发现自己已经被放置在非人类项目中,自己的角色是临床实验对象。测试、开发、项目经理都是猩猩,管理还在处于手工作坊式阶段。凭着以前的项目经验,做不了就撤,他成功摆脱实验对象角色,准备寻找自己的主干。突然,他发现他就在原来的项目主干之中!只不过项目内容已经面目全非,不过他看到了以前团队残留的设计模型。
...
科幻片具有几个模式:向前、向后、(UXO)Undefined X Object,好的导演能够自圆其说。这些导演,用好了版本管理的某个特性,就发挥出巨大的影响力。我们有些用户还在讨论电影的“逻辑错误”问题,我认为他们版本概念一无所知,更别说提交、注释、分支、合并。
月光宝盒-版本管理2
月光宝盒--版本管理1相关推荐
- 月光宝盒--版本管理2
月光宝盒--版本管理1 2. 日渐混乱的海量历史 如果从版本管理角度看人类历史的发展,也许会很有意思.横向时间线上分为3个阶段:初始版本.实体文字版本.多媒体+电子文字版本.纵向属性线上从范围.质量. ...
- Git案例:月光宝盒 ,让我们随时回到以前
Git就是月光宝盒 ,让我们随时回到以前 Git案例:版本切换 项目需求: 项目不同版本间切换: 新建项目,Git初始化项目. 制作三个不同版本项目(不同版本区分使用标签(tag)): html5_v ...
- 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)
首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...
- 代码管理和版本管理的作业流程以及规范是怎样的?
代码管理和版本管理的作业流程以及规范是怎样的? 代码管理和版本管理的作业流程以及规范是怎样的?下面以文档的形式进行详细分析,希望能够给予测试人员一些帮助和指导. 本文目的 本文试图提供一套有效进行代码 ...
- Git安装与使用教程-本地仓库与远程仓库内容版本管理
一.Git 简介 Git是目前世界上最先进的分布式版本控制系统.其可以进行本地和远程两种版本控制. 本地版本控制:在本地 .git 文件夹内维护历时文件 远程仓库(如GitHub)版本控制:在本地 . ...
- 目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?...
目前流行的源程序版本管理软件和项目管理软件:Microsoft TFS,Github,SVN,Coding 各自的优缺点: Microsoft TFS: 优点: 任务版上能将需求.项目进度一览无余,对 ...
- 用好 Git 和 SVN,轻松驾驭版本管理
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 凌承一 来源 | bubuko.com/infodeta ...
- 跟我做CVS版本管理试验
本篇文章主要讲述版本管理中的标记用法,目前假设已经安装了CVS并且配置了环境变量CVSROOT,在前面的文章中又相关的记录,[url]http://tianli.blog.51cto.com/1903 ...
- 谈一谈git和SVN两大版本管理工具。
Git 和 SVN 的区别? 写在前面: git和SVN都是一个版本管理工具,没有孰优孰劣之分,在这里,只是简单的说一说git和svn的优缺点.选用哪一个看自己公司的实际情况而定. 1) 核心的区别在 ...
最新文章
- opencv-contrib-python安装
- 目标检测 /yolo算法原理的详解
- Django:序列化的几种方法
- 51Nod--1100-斜率最大
- vant实现下拉刷新和上拉加载_微信小程序 - 实现下拉刷新、上拉加载
- mysql主从配置,innobackup备份
- 飞鸽传书linux运行,Linux下飞鸽传书实现
- 项目采购管理和干系人管理
- 奖状自定义生成(可生成多张)
- ubuntu16.04 误删文件找回
- jOOQ是如何设计事务API(详细指南)
- ArcEngine IPageLayout 添加经纬网和公里网
- 新一代自助建站工具的领航者 - Tap . cn
- redis服务器错误日志分析
- 微信小程序中Vant Weapp的引用与使用
- 中国真的需要企业协同平台吗?
- [转]服务器操作系统CoreOS介绍
- SSM+jsp实现仓库管理系统,界面那叫一个优雅
- cocos2d-iphone之魔塔20层第七部分
- 巨磁阻磁头和水平磁记录技术介绍