專家課堂 SVN使用說明詳解
本節和大家學習一下SVN使用說明,本節內容主要針對初學者,在這里和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西,歡迎打擊一起來學習SVN使用說明方面的知識。下面是具體介紹。
分支與合并
分支就是在另外一個地方管理代碼的版本,而不影響主線(trunk)的代碼。分支的原因有很多,***次使用svn都希望建立一個分支,然后在自己的分支上工作,相當于自己的獨立的工作空間,這種工作方式沒有錯,但是svn支持并不是很好,需要編寫comment的時候記錄下每次合并代碼的版本號,因此我認為目前分支***的實踐是為某個工作目的創建一個分支,功能實現以后立刻在trunk中合并這個內容,分支的使命完成后就可以刪除了。
SVN使用說明介紹中分支其實很簡單,就是copy一下
kkmao@Loongson:~/expe/workingcopy$svncopyfile:///home/kkmao/expe/repos/trunkfile:///home/kkmao/expe/repos/branches/hi提交后的修訂版為4。
現在你可以選擇把那個hi分支checkout出來修改,這樣子很簡單直接,也可以把本地switch過去,省一點網絡帶寬
kkmao@Loongson:~/expe/workingcopy$svninfo|grepURL
地址(URL):file:///home/kkmao/expe/repos/trunk
kkmao@Loongson:~/expe/workingcopy$svnswitchfile:///home/kkmao/expe/repos/branches/hi于修訂版4。
kkmao@Loongson:~/expe/workingcopy$svninfo|grepURL
地址(URL):file:///home/kkmao/expe/repos/branches/hi
這個時候你本地的workingcopy已經和新的URL發生聯系了,所有的commit都朝向新的URL
ok現在我開始修改,就是把hello換成hi。
kkmao@Loongson:~/expe/workingcopy$cathello
hiword.
Iamkkmao,whoareyou.
但是我發現我錯了,其實我是想加一行hi,我覺得我改了太多了太亂了,索性恢復到我checkout時候的版本kkmao@Loongson:~/expe/workingcopy$svnreverthello
已恢復“hello”
我加了一行以后重新commit
kkmao@Loongson:~/expe/workingcopy$cathello
helloworld.
hiworld,heihei~~~
Iamkkmao,whoareyou.
kkmao@Loongson:~/expe/workingcopy$svncihello
正在發送hello
傳輸文件數據.
提交后的修訂版為5。這個時候我轉回去,開始合并
kkmao@Loongson:~/expe/workingcopy$svnswitchfile:///home/kkmao/expe/repos/trunk
Uhello更新至修訂版5。
kkmao@Loongson:~/expe/workingcopy$cathello
helloword.
Iamkkmao,whoareyou.
當然我不急于合并,我添加一個文件模擬主線仍然進行著有序的開發
kkmao@Loongson:~/expe/workingcopy$vimaccessory
kkmao@Loongson:~/expe/workingcopy$svnaddaccessory
Aaccessory
kkmao@Loongson:~/expe/workingcopy$svnci-m"addaccessory"
新增accessory
傳輸文件數據.
提交后的修訂版為6。
OK,開始合并
合并的過程一開始比較難理解,其實簡單的說就是把分支上面兩個版本之間所作的修改作為一個patch,然后應用到你的本地上面
記住你比較的是分支的兩個版本,比如說分支開發是從r10到r20,執行svnmerge的效果相當于把r20到r10兩個版本樹做一個diff-urN生成一個patch,然后執行patch-p1命令。問題是怎么找出這兩個版本呢?SVN使用說明接下來為大家介紹。
首先我們找出我們是從那個版本開始分支的
kkmao@Loongson:~/expe/workingcopy$svnlog--stop-on-copyfile:///home/kkmao/expe/repos/branches/hi
------------------------------------------------------------------------
r5|kkmao|2007-01-0211:52:56+0800(二,021月2007)|2lines
addhi
------------------------------------------------------------------------
r4|kkmao|2007-01-0211:43:08+0800(二,021月2007)|4lines
hellotohi
------------------------------------------------------------------------
也就是說我們從r4開始我們的分支,到r5完成,因此我們執行
kkmao@Loongson:~/expe/workingcopy$svnmerge-r4:5file:///home/kkmao/expe/repos/branches/hi
Uhello
kkmao@Loongson:~/expe/workingcopy$cathello
helloworld.
hiworld,heihei~~~
Iamkkmao,whoareyou.
完成了合并,注意所有的更改都在本地,應該提交一次,并且要記錄合并的版本
kkmao@Loongson:~/expe/workingcopy$svnci-m"mergefile:///home/kkmao/expe/repos/branches/hi-r4:5"
正在發送hello
傳輸文件數據.
提交后的修訂版為7。如果hi分支仍然繼續開發,請注意下次合并應該從r5開始,避免合并重復的內容s。本節講解SVN使用說明完畢,請關注本節其他相關報道。
【編輯推薦】