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

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


咨詢
建站咨詢
