【19】切換分支
“分支”的一個重要作用就是并行開發---在企業級開發中,通常需要同時開發軟件的新版本和維護軟件的舊版本,trunk目錄通常用于存放最新的代碼,而branch目錄通常用于存放某個開發過程中的分支。
例如:在開發ECoupon項目的過程中,程序員為了試驗一個新需求或新功能是否可用,需要另外開辟一個空間來做測試。但是這個程序員的工作不應該影響到其他人的進度,或者說在主干線上工作的人員進度不能受到這個程序員的影響。那么此時分支的作用就顯現出來了。
我們可以給該程序員創建一個分支,該分支的原始版本可以來自于主干的最新可運行代碼,讓這個程序員工作在這個分支上,而其他人并行地進行主干線的開發。但是因為此前這個程序員的本地工作副本是指向主干,所以他必須重新把版本關系指向這個屬于他的最新分支。
這時他有兩種做法:
A.從分支中檢出一份拷貝到不同于原來ECoupon項目的位置,然后獨立開發
B.使用svn switch命令來切換到版本庫的不同位置。
這里我們選擇方法B。svn switch命令的用法是:svn switch [--relocate] URL。該命令有兩種用法:一種是不使用參數relocate的,一種是使用relocate參數的。它們的使用原則如下:
A.如果切換后的版本庫路徑還是在同一個版本庫,只是在不同的路徑下。那么使用svn switch URL
B.如果切換后的版本庫位置已經改變(主機遷移,版本庫遷移),但是目錄結構不變。就需要relocate參數
因為我們切換的新路徑是在同一個版本庫下,只是路徑變了。所以我們用如下命令就可以了




現在我們檢查這個本地工作副本的信息,它已經轉向分支paul了











一個簡單的命令就成功地把版本庫和本地工作副本的聯系切換過了!
注意上面的例子中我們沒有使用--relocate參數,這是因為我們切換的前后始終都是在同一個版本庫,如果現在版本庫的主機換了那么就需要加上該參數了
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。