配置管理之trunk branches tags

一直没明白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的时候,不过长痛不如短痛,用一时的混乱,换取长期的稳定。

 

本文转载自大数据时代

你可能感兴趣的:(项目管理)