版本控制系统 & hg-flow
TRANSCRIPT
![Page 2: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/2.jpg)
什么是版本控制?
• 历史• 后悔药• 作案证据
11年5月18日星期三
![Page 3: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/3.jpg)
待解决的问题?
11年5月18日星期三
![Page 4: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/4.jpg)
历史记录
• 被删掉的才是正确的• 为什么要做这个修改• 都修改了哪部分
11年5月18日星期三
![Page 5: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/5.jpg)
最简单的版本控制
11年5月18日星期三
![Page 6: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/6.jpg)
文件之间的关系
• 文件彼此关联• 新建、删除的文件管理
11年5月18日星期三
![Page 7: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/7.jpg)
继续拷贝目录?
11年5月18日星期三
![Page 8: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/8.jpg)
团队协作
• 文件交换• 同时修改• 相互覆盖
11年5月18日星期三
![Page 9: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/9.jpg)
团队协作
• 文件交换• 同时修改• 相互覆盖
11年5月18日星期三
![Page 10: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/10.jpg)
团队协作
• 文件交换• 同时修改• 相互覆盖
11年5月18日星期三
![Page 11: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/11.jpg)
版本控制用来干什么
11年5月18日星期三
![Page 12: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/12.jpg)
版本控制用来干什么
• 有一个公司叫百度
11年5月18日星期三
![Page 13: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/13.jpg)
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧
11年5月18日星期三
![Page 14: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/14.jpg)
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级
11年5月18日星期三
![Page 15: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/15.jpg)
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级• 有一个声音叫F××K
11年5月18日星期三
![Page 16: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/16.jpg)
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级• 有一个声音叫F××K
• 肿么办?
11年5月18日星期三
![Page 17: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/17.jpg)
需要的版本控制软件
• 原子性• 并行处理• 版本合并• 标签、基线的支持• 离线操作
11年5月18日星期三
![Page 18: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/18.jpg)
中央式和分布式版本控制系统
11年5月18日星期三
![Page 19: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/19.jpg)
中央式
11年5月18日星期三
![Page 20: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/20.jpg)
中央式
• 中心服务器• 依赖网络• 更直观的权限控制
11年5月18日星期三
![Page 21: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/21.jpg)
代表作—CVS
• 曾经最辉煌的版本控制系统• 每个文件单独版本控制• 无原子性• 标签、分支代价大• .cvs
11年5月18日星期三
![Page 22: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/22.jpg)
代表作 — VSS
• 微软出品,必属……• 严格的文件锁• 通过共享服务器• 简单、快捷,非常适合小团队
11年5月18日星期三
![Page 23: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/23.jpg)
代表作 — SVN
• Aims to be a compelling replacement for CVS
• 原子性• 信息存储在中央服务器• 技术上没有标签、分支的概念• svn copy, svn copy, svn copy
• .svn
11年5月18日星期三
![Page 24: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/24.jpg)
分布式
11年5月18日星期三
![Page 25: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/25.jpg)
分布式的特性
• 每个人的本地沙盒• 离线工作• 快!• 天然的分支、合并支持• 不怕中央服务器被哥斯拉当晚餐
11年5月18日星期三
![Page 26: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/26.jpg)
概念上的区别
• 没有传统概念上的连续版本号• 没有技术上的中心库• 区分提交(commit)和推送(push)
• 区分更新(update)和抓取(pull)
• 提交者和推送者的区别
11年5月18日星期三
![Page 27: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/27.jpg)
代表作 — Git
• Linus 的又一个神做。为什么要说又?
• Git == 文件系统
• 出现工程的概念• github
11年5月18日星期三
![Page 28: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/28.jpg)
代表作 — Mercurial
• 对svn命令的兼容
• 对windows的良好支持
• 新引进的概念少• 使用C + Python编写,更容易扩展
11年5月18日星期三
![Page 29: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/29.jpg)
代表作 — Bazaar
• Ubuntu 御用
• 结合 LaunchPad 无往不利
• 同时天然支持中心式 / 分布式
• 纯Python编写,慢
11年5月18日星期三
![Page 30: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/30.jpg)
git-flow / hg-flow分支开发模型
11年5月18日星期三
![Page 31: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/31.jpg)
需要解决的问题
• 多团队并行开发• 多模块并行开发• 明确的开发、测试阶段• 线上代码的快速热修补
11年5月18日星期三
![Page 32: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/32.jpg)
逻辑上的中心式
11年5月18日星期三
![Page 33: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/33.jpg)
明确的分支
• 生产分支 production :线上代码
• 开发分支 develop :开发环境
• 功能分支 feature :功能开发/修复bug
• 待发布分支 release :统一测试
• 热修补分支 hotfix :线上911
11年5月18日星期三
![Page 34: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/34.jpg)
主要分支
• 生产分支• 开发分支
11年5月18日星期三
![Page 35: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/35.jpg)
功能分支
• 分支来源:开发分支• 分支回归:开发分支• 目的:功能开发 / 修复Bug
11年5月18日星期三
![Page 36: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/36.jpg)
功能分支
11年5月18日星期三
![Page 37: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/37.jpg)
待发布分支
• 分支来源:开发分支• 分支回归:开发分支,生产分支• 目的:待发布,进入全面测试阶段
11年5月18日星期三
![Page 38: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/38.jpg)
热修补分支
• 分支来源:生产分支• 分支回归:开发分支,生产分支,待发布分支
• 目的:线上911
11年5月18日星期三
![Page 39: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/39.jpg)
热修补分支
11年5月18日星期三
![Page 40: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/40.jpg)
11年5月18日星期三
![Page 41: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/41.jpg)
Q & A
11年5月18日星期三
![Page 42: 版本控制系统 & hg-flow](https://reader031.vdocuments.net/reader031/viewer/2022012306/55a967741a28aba8518b4662/html5/thumbnails/42.jpg)
参考资料• 版本控制 http://en.wikipedia.org/wiki/
Revision_control
• 了解分布式版本管理系统 http://code.google.com/p/kcpycamp/wiki/AbtDvcs
• git-flow http://nvie.com/posts/a-successful-git-branching-model/
• hg-flow https://bitbucket.org/yinwm/hgflow/wiki/cn/Home
• hg简单教程 http://hginit.com/
11年5月18日星期三