S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

SVN目录结构

Posted on 2010-09-03 11:15 S.l.e!ep.¢% 阅读(812) 评论(0)  编辑 收藏 引用 所属分类: Team
一直没明白trunk branches tags的意思,今天问了一下google,来理解一下。

trunk:主线,开发过程中的工作目录
branches:支线,临时分支,定制化需求
branches/order008
branches/order009
tags:发布目录,不做修改
tags/release-1.0
tags/release-1.1

场景一:
产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布我们的1.0版本,不再提交代码
1. svn copy svn://server/trunk svn://server/tags/release-1.0 -m "1.0 released"

场景二:
有一个客户想对产品做定制,我们可以从已发布库中选择一个版本,做为起点来开发
1. svn copy svn://server/tags/release-1.0 svn://server/branches/order009 -m "定单009" 

场景三:
有一天,突然在trunk下的core中发现一个致命的bug,那么所有的branches一定也一样,这时需要进行分支合并
1. svn -r 148:149 merge svn://server/trunk branches/order008
2. svn -r 148:149 merge svn://server/trunk branches/order009
其中148和149是两次修改的版本号。

由于我们是给自己公司的网站源码做配置管理,没有明确的trunk branches tags区分。我们以SCRUM的形式做开发,一般保持两个版本线,一条主线A,一条支线B。A与运行版本保持一致,B做为Sprint开发的工作目录。A,B都可以提交代码,视情况在A,B之间进行部分合并。Sprint开发完成后,进行总合并,并选择其中一条继续做主线,移除另一条。下一期Sprint开始的时候,继续A,B两条线的开发。
这样做的目的,也是为了适应自己的配置需求,在进行B线开发时,经常会有A线的改动。A线的代码保持最新,可更新到运行环境的能力。混乱经常发生在合并A,B的时候,不过长痛不如短痛,用一时的混乱,换取长期的稳定。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理