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