【18】创建分支 在企业级产品的开发过程中,除了通用产品之外,有时会存在一些需要根据客户实际情况进行“定制化”的情况。假设现在我们产品的代码存放在/.../trunk目录下,客户需要的定制化需要修改源代码,而且未来的时间还会有不断的需求提出。 此时就给我们带来了一个问题了:假如我们为了完成客户的定制化要求,直接在/trunk下修改源代码然后提交。那么会直接影响到其他通用产品。所以我们本能的想法就是:再创建一个源代码的拷贝,然后对这个拷贝进行独立修改。以一个独立项目的形式进行版本控制。 这样的想法很好,但是又带来了一个潜在的问题:假如现在发现在/trunk目录的源代码存在重大bug,需要马上修正并更新到所有的分组去这样的工作怎么做? 和其他版本控制工具一样,SVN也提供了分支的概念。“分支”实质上也是一个普通的版本库中的目录。不同的是它是从其他主干或分支复制而来,它和主干或其他分支“共享”了一段相同的版本历史,然后在它被创建之时起又有了它独立的版本历史。 现在我们来模拟“分支”创建的过程和应用。假设经过一段时间开发和测试之后,ECoupon项目已经成熟。此时项目负责人决定在版本库上开放一个ECoupon_GA目录,在这个目录下包含了三个子目录:
现在我们需要做的事情包括: A.把ECoupon项目的代码Import到ECoupon_GA项目下 B.为ECoupon_GA项目创建一个分支,位置在/branches/paul下 关于第一个问题很好解决,有两种方式: A.从本地的E:\Temp\ECoupon项目下导出代码,再导入到ECoupon_GA/trunk目录下 B.从版本库的ECoupon下拷贝到ECoupon_GA/trunk目录下 下面我们来试一下使用svn copy命令来直接从版本库拷贝的做法。还记得我们在前面提到的svn copy URL URL的用法吗?
如果我们想采用下面的方法,会很遗憾的发现行不通