版本控制系统 & hg-flow

42
版本控制系统 [email protected] 11年5月18日星期三

Transcript of 版本控制系统 & hg-flow

Page 1: 版本控制系统 & hg-flow

版本控制系统[email protected]

11年5月18日星期三

Page 2: 版本控制系统 & hg-flow

什么是版本控制?

• 历史• 后悔药• 作案证据

11年5月18日星期三

Page 3: 版本控制系统 & hg-flow

待解决的问题?

11年5月18日星期三

Page 4: 版本控制系统 & hg-flow

历史记录

• 被删掉的才是正确的• 为什么要做这个修改• 都修改了哪部分

11年5月18日星期三

Page 5: 版本控制系统 & hg-flow

最简单的版本控制

11年5月18日星期三

Page 6: 版本控制系统 & hg-flow

文件之间的关系

• 文件彼此关联• 新建、删除的文件管理

11年5月18日星期三

Page 7: 版本控制系统 & hg-flow

继续拷贝目录?

11年5月18日星期三

Page 8: 版本控制系统 & hg-flow

团队协作

• 文件交换• 同时修改• 相互覆盖

11年5月18日星期三

Page 9: 版本控制系统 & hg-flow

团队协作

• 文件交换• 同时修改• 相互覆盖

11年5月18日星期三

Page 10: 版本控制系统 & hg-flow

团队协作

• 文件交换• 同时修改• 相互覆盖

11年5月18日星期三

Page 11: 版本控制系统 & hg-flow

版本控制用来干什么

11年5月18日星期三

Page 12: 版本控制系统 & hg-flow

版本控制用来干什么

• 有一个公司叫百度

11年5月18日星期三

Page 13: 版本控制系统 & hg-flow

版本控制用来干什么

• 有一个公司叫百度• 有一个产品叫贴吧

11年5月18日星期三

Page 14: 版本控制系统 & hg-flow

版本控制用来干什么

• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级

11年5月18日星期三

Page 15: 版本控制系统 & hg-flow

版本控制用来干什么

• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级• 有一个声音叫F××K

11年5月18日星期三

Page 16: 版本控制系统 & hg-flow

版本控制用来干什么

• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级• 有一个声音叫F××K

• 肿么办?

11年5月18日星期三

Page 17: 版本控制系统 & hg-flow

需要的版本控制软件

• 原子性• 并行处理• 版本合并• 标签、基线的支持• 离线操作

11年5月18日星期三

Page 18: 版本控制系统 & hg-flow

中央式和分布式版本控制系统

11年5月18日星期三

Page 19: 版本控制系统 & hg-flow

中央式

11年5月18日星期三

Page 20: 版本控制系统 & hg-flow

中央式

• 中心服务器• 依赖网络• 更直观的权限控制

11年5月18日星期三

Page 21: 版本控制系统 & hg-flow

代表作—CVS

• 曾经最辉煌的版本控制系统• 每个文件单独版本控制• 无原子性• 标签、分支代价大• .cvs

11年5月18日星期三

Page 22: 版本控制系统 & hg-flow

代表作 — VSS

• 微软出品,必属……• 严格的文件锁• 通过共享服务器• 简单、快捷,非常适合小团队

11年5月18日星期三

Page 23: 版本控制系统 & hg-flow

代表作 — SVN

• Aims to be a compelling replacement for CVS

• 原子性• 信息存储在中央服务器• 技术上没有标签、分支的概念• svn copy, svn copy, svn copy

• .svn

11年5月18日星期三

Page 24: 版本控制系统 & hg-flow

分布式

11年5月18日星期三

Page 25: 版本控制系统 & hg-flow

分布式的特性

• 每个人的本地沙盒• 离线工作• 快!• 天然的分支、合并支持• 不怕中央服务器被哥斯拉当晚餐

11年5月18日星期三

Page 26: 版本控制系统 & hg-flow

概念上的区别

• 没有传统概念上的连续版本号• 没有技术上的中心库• 区分提交(commit)和推送(push)

• 区分更新(update)和抓取(pull)

• 提交者和推送者的区别

11年5月18日星期三

Page 27: 版本控制系统 & hg-flow

代表作 — Git

• Linus 的又一个神做。为什么要说又?

• Git == 文件系统

• 出现工程的概念• github

11年5月18日星期三

Page 28: 版本控制系统 & hg-flow

代表作 — Mercurial

• 对svn命令的兼容

• 对windows的良好支持

• 新引进的概念少• 使用C + Python编写,更容易扩展

11年5月18日星期三

Page 29: 版本控制系统 & hg-flow

代表作 — Bazaar

• Ubuntu 御用

• 结合 LaunchPad 无往不利

• 同时天然支持中心式 / 分布式

• 纯Python编写,慢

11年5月18日星期三

Page 30: 版本控制系统 & hg-flow

git-flow / hg-flow分支开发模型

11年5月18日星期三

Page 31: 版本控制系统 & hg-flow

需要解决的问题

• 多团队并行开发• 多模块并行开发• 明确的开发、测试阶段• 线上代码的快速热修补

11年5月18日星期三

Page 32: 版本控制系统 & hg-flow

逻辑上的中心式

11年5月18日星期三

Page 33: 版本控制系统 & hg-flow

明确的分支

• 生产分支 production :线上代码

• 开发分支 develop :开发环境

• 功能分支 feature :功能开发/修复bug

• 待发布分支 release :统一测试

• 热修补分支 hotfix :线上911

11年5月18日星期三

Page 34: 版本控制系统 & hg-flow

主要分支

• 生产分支• 开发分支

11年5月18日星期三

Page 35: 版本控制系统 & hg-flow

功能分支

• 分支来源:开发分支• 分支回归:开发分支• 目的:功能开发 / 修复Bug

11年5月18日星期三

Page 36: 版本控制系统 & hg-flow

功能分支

11年5月18日星期三

Page 37: 版本控制系统 & hg-flow

待发布分支

• 分支来源:开发分支• 分支回归:开发分支,生产分支• 目的:待发布,进入全面测试阶段

11年5月18日星期三

Page 38: 版本控制系统 & hg-flow

热修补分支

• 分支来源:生产分支• 分支回归:开发分支,生产分支,待发布分支

• 目的:线上911

11年5月18日星期三

Page 39: 版本控制系统 & hg-flow

热修补分支

11年5月18日星期三

Page 40: 版本控制系统 & hg-flow

11年5月18日星期三

Page 41: 版本控制系统 & hg-flow

Q & A

11年5月18日星期三