【18】創(chuàng)建分支 在企業(yè)級(jí)產(chǎn)品的開發(fā)過程中,除了通用產(chǎn)品之外,有時(shí)會(huì)存在一些需要根據(jù)客戶實(shí)際情況進(jìn)行“定制化”的情況。假設(shè)現(xiàn)在我們產(chǎn)品的代碼存放在/.../trunk目錄下,客戶需要的定制化需要修改源代碼,而且未來的時(shí)間還會(huì)有不斷的需求提出。 此時(shí)就給我們帶來了一個(gè)問題了:假如我們?yōu)榱送瓿煽蛻舻亩ㄖ苹?,直接?trunk下修改源代碼然后提交。那么會(huì)直接影響到其他通用產(chǎn)品。所以我們本能的想法就是:再創(chuàng)建一個(gè)源代碼的拷貝,然后對(duì)這個(gè)拷貝進(jìn)行獨(dú)立修改。以一個(gè)獨(dú)立項(xiàng)目的形式進(jìn)行版本控制。 這樣的想法很好,但是又帶來了一個(gè)潛在的問題:假如現(xiàn)在發(fā)現(xiàn)在/trunk目錄的源代碼存在重大bug,需要馬上修正并更新到所有的分組去這樣的工作怎么做? 和其他版本控制工具一樣,SVN也提供了分支的概念。“分支”實(shí)質(zhì)上也是一個(gè)普通的版本庫(kù)中的目錄。不同的是它是從其他主干或分支復(fù)制而來,它和主干或其他分支“共享”了一段相同的版本歷史,然后在它被創(chuàng)建之時(shí)起又有了它獨(dú)立的版本歷史。 現(xiàn)在我們來模擬“分支”創(chuàng)建的過程和應(yīng)用。假設(shè)經(jīng)過一段時(shí)間開發(fā)和測(cè)試之后,ECoupon項(xiàng)目已經(jīng)成熟。此時(shí)項(xiàng)目負(fù)責(zé)人決定在版本庫(kù)上開放一個(gè)ECoupon_GA目錄,在這個(gè)目錄下包含了三個(gè)子目錄:
現(xiàn)在我們需要做的事情包括: A.把ECoupon項(xiàng)目的代碼Import到ECoupon_GA項(xiàng)目下 B.為ECoupon_GA項(xiàng)目創(chuàng)建一個(gè)分支,位置在/branches/paul下 關(guān)于第一個(gè)問題很好解決,有兩種方式: A.從本地的E:\Temp\ECoupon項(xiàng)目下導(dǎo)出代碼,再導(dǎo)入到ECoupon_GA/trunk目錄下 B.從版本庫(kù)的ECoupon下拷貝到ECoupon_GA/trunk目錄下 下面我們來試一下使用svn copy命令來直接從版本庫(kù)拷貝的做法。還記得我們?cè)谇懊嫣岬降膕vn copy URL URL的用法嗎?
如果我們想采用下面的方法,會(huì)很遺憾的發(fā)現(xiàn)行不通