新聞中心
本節(jié)接著上節(jié)簡(jiǎn)單介紹一下SVN簡(jiǎn)易使用手冊(cè),在學(xué)習(xí)SVN的過程中這些是必須掌握的內(nèi)容,在這里和大家分享一下,希望通過本節(jié)的學(xué)習(xí)大家能夠掌握SVN的使用,讓我們一起來學(xué)習(xí)SVN簡(jiǎn)易使用手冊(cè)吧。

西吉網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
另一種檢查修改的方式是svndiff命令,你可以通過不帶參數(shù)的svndiff精確的找出你所做的修改,這會(huì)輸出統(tǒng)一區(qū)別格式:[3]
$svndiffIndex:bar.c===================================================================---bar.c(revision3)+++bar.c(workingcopy)@@-1,7+1,12@@+#include
svndiff命令通過比較你的文件和.svn的“原始”文件來輸出信息,預(yù)定要增加的文件會(huì)顯示所有增加的文本,要?jiǎng)h除的文件會(huì)顯示所有要?jiǎng)h除的文本。
輸出的格式為統(tǒng)一區(qū)別格式(unifieddiffformat),刪除的行前面加一個(gè)-,添加的行前面有一個(gè)+,svndiff命令也打印文件名和打補(bǔ)丁需要的信息,所以你可以通過重定向一個(gè)區(qū)別文件來生成“補(bǔ)丁”:$svndiff>patchfile
舉個(gè)例子,你可以把補(bǔ)丁文件發(fā)送郵件到其他開發(fā)者,在提交之前審核和測(cè)試。svnrevert假設(shè)你通過上面的diff輸出發(fā)現(xiàn)你不小心用編輯器在README中輸入了一些字符。
這是使用svnrevert的好機(jī)會(huì)。
$svnrevertREADMEReverted'README'
Subversion把文件恢復(fù)到未修改的狀態(tài),叫做.svn目錄的“原始”拷貝,應(yīng)該知道svnrevert可以恢復(fù)任何預(yù)定要做的操作,舉個(gè)例子,你不再想添加一個(gè)文件:
$svnstatusfoo?foo$svnaddfooAfoo$svnrevertfooReverted'foo'$svnstatusfoo?foo
注意:
SVN簡(jiǎn)易使用手冊(cè)中有些需要注意的問題。svnrevertITEM的效果與刪除ITEM然后執(zhí)行svnupdate-rBASEITEM完全一樣,但是,如果你使用svnrevert它不必通知版本庫就可以恢復(fù)文件。
或許你不小心刪除了一個(gè)文件:$svnstatusREADMEREADME$svndeleteREADMEDREADME$svnrevertREADMEReverted'README'$svnstatusREADMEREADME
看!沒有網(wǎng)絡(luò)!
這三個(gè)命令(svnstatus、svndiff和svnrevert)都可以在沒有網(wǎng)絡(luò)的情況下工作,這讓你在沒有網(wǎng)絡(luò)連接時(shí)的管理修改過程更加簡(jiǎn)單,像在飛機(jī)上旅行,乘坐火車往返或是在海灘上奮力工作時(shí)。
Subversion通過在.svn管理區(qū)域使用原始的版本緩存來做到這一點(diǎn),這使得恢復(fù)本地版本而不必訪問網(wǎng)絡(luò),這個(gè)緩存(叫做“text-base”)也允許Subversion可以根據(jù)原始版本生成一個(gè)壓縮的增量(“區(qū)別”)提交—即使你有個(gè)非??斓木W(wǎng)絡(luò),有這樣一個(gè)緩存有極大的好處,非常的快,只向服務(wù)器提交修改的部分,這一點(diǎn)乍一看好像并不重要,但當(dāng)你要提交一個(gè)400M大小的文件的修改時(shí),你就會(huì)明白!
解決沖突(合并別人的修改)
我們學(xué)習(xí)SVN簡(jiǎn)易使用手冊(cè)時(shí)可以使用svnstatus-u來預(yù)測(cè)沖突,當(dāng)你運(yùn)行svnupdate一些有趣的事情發(fā)生了:
$svnupdateUINSTALLGREADMECbar.cUpdatedtorevision46.
U和G沒必要關(guān)心,文件干凈的接受了版本庫的變化,文件標(biāo)示為U表明本地沒有修改,文件已經(jīng)根據(jù)版本庫更新。G標(biāo)示合并,標(biāo)示本地已經(jīng)修改過,與版本庫沒有重迭的地方,已經(jīng)合并。但是C表示沖突,說明服務(wù)器上的改動(dòng)同你的改動(dòng)沖突了,你需要自己手工去解決。
當(dāng)沖突發(fā)生了,有三件事可以幫助你注意到這種情況和解決問題:
Subversion打印C標(biāo)記,并且標(biāo)記這個(gè)文件已沖突。
如果Subversion認(rèn)為這個(gè)文件是可合并的,它會(huì)置入沖突標(biāo)記—特殊的橫線分開沖突的“兩面”—在文件里可視化的描述重疊的部分(Subversion使用svn:mime-type屬性來決定一個(gè)文件是否可以使用上下文的,以行為基礎(chǔ)合并,更多信息可以看“svn:mime-type”一節(jié))。
對(duì)于每一個(gè)沖突的文件,Subversion放置三個(gè)額外的未版本化文件到你的工作拷貝:filename.mine
你更新前的文件,沒有沖突標(biāo)志,只是你最新更改的內(nèi)容。(如果Subversion認(rèn)為這個(gè)文件不可以合并,.mine文件不會(huì)創(chuàng)建,因?yàn)樗凸ぷ魑募嗤?。?br /> filename.rOLDREV
這是你的做更新操作以前的BASE版本文件,就是你在上次更新之后未作更改的版本。
filename.rNEWREV
這是你的Subversion客戶端從服務(wù)器剛剛收到的版本,這個(gè)文件對(duì)應(yīng)版本庫的HEAD版本。
這里OLDREV是你的.svn目錄中的修訂版本號(hào),NEWREV是版本庫中HEAD的版本號(hào)。
舉一個(gè)例子,Sally修改了sandwich.txt,Harry剛剛改變了他的本地拷貝中的這個(gè)文件并且提交到服務(wù)器,Sally在提交之前更新它的工作拷貝得到了沖突:
$svnupdateCsandwich.txtUpdatedtorevision2.$ls-1sandwich.txtsandwich.txt.minesandwich.txt.r1sandwich.txt.r2
在這種情況下,Subversion不會(huì)允許你提交sandwich.txt,直到你的三個(gè)臨時(shí)文件被刪掉。
$svncommit--message"Addafewmorethings"svn:Commitfailed(detailsfollow):svn:Abortingcommit:'/home/sally/svn-work/sandwich.txt'remainsinconflict
如果你遇到?jīng)_突,三件事你可以選擇:
“手動(dòng)”合并沖突文本(檢查和修改文件中的沖突標(biāo)志)。
用某一個(gè)臨時(shí)文件覆蓋你的工作文件。運(yùn)行svnrevert
【編輯推薦】
- SVN簡(jiǎn)易使用手冊(cè)專家推薦
- SVN簡(jiǎn)易使用手冊(cè)實(shí)例詳解
- ApacheSVN服務(wù)器安裝指導(dǎo)手冊(cè)
- 程序集版本中使用SVN版本號(hào)自動(dòng)生成方法詳解
- SVN服務(wù)器安裝指導(dǎo)手冊(cè)
網(wǎng)頁名稱:學(xué)習(xí)筆記SVN簡(jiǎn)易使用手冊(cè)詳解
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/cddegoo.html


咨詢
建站咨詢
