【23】标记
软件开发的过程有时是漫长的,但我们的主干、分支达到一定程度后,我们也许会提交了很多版本,更新很多资源。如果此时我们不适当地对软件做一个“阶段的标识”,那么在将来的时间我们将很难对某个阶段所做的修改有一个明确的记忆。
也许你会说:我们不是有svn log吗?我们可以查看log啊~。问题是当版本更新到一定程度后,svn log的输出将变得非常多而复杂,要在几百个版本中分辨出来那个版本是我们需要的是一件很困难的事。我们期望能够有一种类似于“里程碑”式的版本来记录我们在某段时间内的所有更新。
标记Tag就是基于这种概念而出现的。和分支Branch一样,在SVN看来他们都只是普通的目录而已,Branch是动态变化的,而Tag则像快照一样一旦留下就不会改变了。
什么时候是Branch?什么时候是Tag?原则如下:
如果你还需要继续向目录提交变更,它就是个分支。如果一旦拷贝后不再提交任何改变哪就是标记。实际上SVN不会强制你不能对名为***tag的目录进行commit操作,这只是通常上约定。即便因为误操作我们也可以轻易的使用update操作回滚到当初创建Tag时的快照版本
创建标记的方法和分支一摸一样,都是使用svn copy 命令,你也可以加上-r 版本号来指定创建某个版本的快照
【24】主干、分支与标记的配合
在企业级的应用开发中,通常会遇到新旧版本同时开发的问题,为了不影响新版本功能的开发,我们通常采用如下的分支策略:
Step 1: 所有的程序员把日常开发的代码都提交到主干trunk上,包括每天的新功能,bug修正
Step 2: 当开发进行到一个段落后,管理人员认为可以释放版本了。将其拷贝到假设名为branch/1.0目录下
Step 3: 测试或QA组的成员对这个“稳定”的版本进行测试,与此同时开发人员继续在主干上进行2.0版本的开发
Step 4: 当测试或QA组完成branch/1.0目录下软件的测试后,决定可以发布了。就将其拷贝到假设名为tag/1.0的目录下,此时tag/1.0目录下的内容就是我们要正式发布的产品了。而且不会对该目录下的任何资东西进行修改了。如果有需要则滚落下一版本的开发、测试。
Step 5: 发布成功后,测试或QA组的成员又从trunk目录下检出最新的2.0的代码,拷贝到假设名为branch/1.1目录下,重复上面步骤
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2009-12-11 17:39
Paul Lin 阅读(358)
评论(0) 编辑 收藏 所属分类:
项目管理