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