惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - quitgame

IBM 、M$ 、Google & Apple Java 程序员 和 .NET 程序员 Chrome 必将战胜 Firefox。 一特性让IE8难以望Firefox3项背 一个女人的一天,牛逼! - quitgame - 博客园 Meizu M8 Preview IBatis.net 获取记录数之道 -- 迂回 IE 已死 很WEB很2.0---谷歌金山糍粑 惊天大发现:WindowsXP SP3带来的新功能! 很WEB很2.0---ThunderBird 谈恋爱是一个项目 爱上 UBUNTU UBUNTU 图两个 我的一些项目管理经验 并行开发版本管理之路(四) --- 流动的基线 并行开发版本管理之路(三) --- 版本的强制控制和版本合并 流氓软件,你装了吗? 并行开发版本管理之路(一) --- 版本管理危机
并行开发版本管理之路(二) --- 典型的版本管理难题
quitgame · 2006-10-23 · via 博客园 - quitgame

并行开发版本管理之路(二) --- 典型的版本管理难题

  1.  如何保证新版本开发与BugFix同时进行?也就是要求修改过的BUG不能存在于新版本中

  2. 如何保证两个新版本并行开发?可能的情况是两个完全不同的版本,或者一个是另外一个基础

  3.  如何保证版本的发布不受开发人员无意的代码检入影响?  

不再拐弯抹角了,解决这三个难题的答案是使用分支(这里设计到一个著名的版本管理工具-ClearCase,分支正是其中的重要工具和概念)。

[OK,这里有个术语,就是分支。要理解分支必须同时理解其他的术语,比如说标签、视图。本文不打算详细的描述基础的概念,相关的概念可以参考ClearCase(一个强大的版本管理工具)的文档。]

`

   上面是一颗版本树,形象的记载了一个文件的版本变化情况。

 1 其中1、2、3是不同的版本,

 2 MainVer2.0就是分支。
 3 Release1023
Ver2.0Begin则是标签,标签就像是打在代码版本上的标记。
 4 视图就是由分支类型、标签名称、获取规则动态的决定的代码横截面。我可以建立
Main分支的视图,在这个视图中我就看不到Ver2.0分支中的任何代码修改,我也可以建立Ver2.0分支的视图,在这个视图中我们可以看到Ver2.0分支的最新代码和未在Ver2.0分支中产生修改的Main分支中位于Ver2.0Begin标签处的代码。开发人员总是习惯工作于一个视图上。

       OK,那看看解决第一个问题的办法。

 

  1. 建立用于修改BUG的分支视图,在此视图上进行修改

  2. 将在BugFix上修改的代码合并到主分支中,合并产生新的版本3,移动Ver2.0Begin标签到版本3,Ver2.0分支自动获取到修复BUG以后的代码,同时,主分支上的BUG也得到了修正
  3. 如果此时代码已经在Ver2.0上发生了变化,则需要执行另外一个合并,将更改合并到Ver2.0中。但是幸运的是,大多数时候不会在BugFix之前修改Ver2.0的代码。

   这样做我们至少收获了几个附加的好处

  1. 我们获得了从Main分支发布稳定版本的能力
  2. 我们获得了从Ver2.0分支发布最新预览版的能力
  3. 开发人员的检入检出不影响版本发布
  4. 版本管理员可以对Main分支进行锁定等控制,防止其他人员越权或者意外的修改Main分支的代码


待续……

posted on 2006-10-23 22:56  quitgame  阅读(3091)  评论()    收藏  举报