版本控制系统 & hg-flow
-
Upload
yinwm -
Category
Technology
-
view
2.042 -
download
16
Transcript of 版本控制系统 & hg-flow
什么是版本控制?
• 历史• 后悔药• 作案证据
11年5月18日星期三
待解决的问题?
11年5月18日星期三
历史记录
• 被删掉的才是正确的• 为什么要做这个修改• 都修改了哪部分
11年5月18日星期三
最简单的版本控制
11年5月18日星期三
文件之间的关系
• 文件彼此关联• 新建、删除的文件管理
11年5月18日星期三
继续拷贝目录?
11年5月18日星期三
团队协作
• 文件交换• 同时修改• 相互覆盖
11年5月18日星期三
团队协作
• 文件交换• 同时修改• 相互覆盖
11年5月18日星期三
团队协作
• 文件交换• 同时修改• 相互覆盖
11年5月18日星期三
版本控制用来干什么
11年5月18日星期三
版本控制用来干什么
• 有一个公司叫百度
11年5月18日星期三
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧
11年5月18日星期三
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级
11年5月18日星期三
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级• 有一个声音叫F××K
11年5月18日星期三
版本控制用来干什么
• 有一个公司叫百度• 有一个产品叫贴吧• 有一个决策叫升级• 有一个声音叫F××K
• 肿么办?
11年5月18日星期三
需要的版本控制软件
• 原子性• 并行处理• 版本合并• 标签、基线的支持• 离线操作
11年5月18日星期三
中央式和分布式版本控制系统
11年5月18日星期三
中央式
11年5月18日星期三
中央式
• 中心服务器• 依赖网络• 更直观的权限控制
11年5月18日星期三
代表作—CVS
• 曾经最辉煌的版本控制系统• 每个文件单独版本控制• 无原子性• 标签、分支代价大• .cvs
11年5月18日星期三
代表作 — VSS
• 微软出品,必属……• 严格的文件锁• 通过共享服务器• 简单、快捷,非常适合小团队
11年5月18日星期三
代表作 — SVN
• Aims to be a compelling replacement for CVS
• 原子性• 信息存储在中央服务器• 技术上没有标签、分支的概念• svn copy, svn copy, svn copy
• .svn
11年5月18日星期三
分布式
11年5月18日星期三
分布式的特性
• 每个人的本地沙盒• 离线工作• 快!• 天然的分支、合并支持• 不怕中央服务器被哥斯拉当晚餐
11年5月18日星期三
概念上的区别
• 没有传统概念上的连续版本号• 没有技术上的中心库• 区分提交(commit)和推送(push)
• 区分更新(update)和抓取(pull)
• 提交者和推送者的区别
11年5月18日星期三
代表作 — Git
• Linus 的又一个神做。为什么要说又?
• Git == 文件系统
• 出现工程的概念• github
11年5月18日星期三
代表作 — Mercurial
• 对svn命令的兼容
• 对windows的良好支持
• 新引进的概念少• 使用C + Python编写,更容易扩展
11年5月18日星期三
代表作 — Bazaar
• Ubuntu 御用
• 结合 LaunchPad 无往不利
• 同时天然支持中心式 / 分布式
• 纯Python编写,慢
11年5月18日星期三
git-flow / hg-flow分支开发模型
11年5月18日星期三
需要解决的问题
• 多团队并行开发• 多模块并行开发• 明确的开发、测试阶段• 线上代码的快速热修补
11年5月18日星期三
逻辑上的中心式
11年5月18日星期三
明确的分支
• 生产分支 production :线上代码
• 开发分支 develop :开发环境
• 功能分支 feature :功能开发/修复bug
• 待发布分支 release :统一测试
• 热修补分支 hotfix :线上911
11年5月18日星期三
主要分支
• 生产分支• 开发分支
11年5月18日星期三
功能分支
• 分支来源:开发分支• 分支回归:开发分支• 目的:功能开发 / 修复Bug
11年5月18日星期三
功能分支
11年5月18日星期三
待发布分支
• 分支来源:开发分支• 分支回归:开发分支,生产分支• 目的:待发布,进入全面测试阶段
11年5月18日星期三
热修补分支
• 分支来源:生产分支• 分支回归:开发分支,生产分支,待发布分支
• 目的:线上911
11年5月18日星期三
热修补分支
11年5月18日星期三
11年5月18日星期三
Q & A
11年5月18日星期三
参考资料• 版本控制 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日星期三