SVN錯誤如何產(chǎn)生及解決方法專家剖析
本節(jié)向大家簡單描述一下SVN錯誤,在學(xué)習(xí)SVN的過程中如何避免SVN錯誤,SVN錯誤如何解決(locked conflict 文件不存在)這是大家最關(guān)心的問題,本節(jié)就和大家一起來學(xué)習(xí)一下,希望通過本節(jié)的介紹大家對SVN錯誤有深刻的理解。
    這段時間做項目也學(xué)到了很多,尤其是關(guān)于SVN的。在使用SVN之前對于SVN的學(xué)習(xí)僅限于架服務(wù)器。對于學(xué)習(xí)中遇到的錯誤則都是通過一點一滴的經(jīng)驗得到的。
SVN錯誤記錄
1.強(qiáng)制輸入提交日志的鉤子(hooks)程序(pre-commit)無法運行,提交的時候報錯:
Error: Commit failed (details follow): Error: MERGE request failed on ‘/svn/ttt/trunk/engineering/doc/%E5%89%8D%E7%BD%AE%E6%9C%BA’ Error: Failed to start ‘/home/jira/repo/ttt/hooks/pre-commit’ hook
可能的原因:
(1).pre-commit的權(quán)限設(shè)置問題,確保具有運行權(quán)限,chmod a+x pre-commit;有些系統(tǒng)要求所有者為www-data:www-data,這點根據(jù)安裝的svn而定
(2).系統(tǒng)的資源不足(主要是內(nèi)存),重啟apache服務(wù),如果問題解決,一般是此原因。
2. Relocate can only change the repository part of an URL
如果服務(wù)器上的某個文件的位置有改動,如果我們想使用relocate將工作拷貝中的此目錄的路徑重定位的話,肯定會遇到這個錯誤的。但是如果使用 switch來改變路徑,則不會遇見此錯誤。
原因(Switch & Relocate的區(qū)別)
Switch —–在版本庫內(nèi)改變與當(dāng)前工作拷貝關(guān)聯(lián)的服務(wù)器路徑URL(只限于同一個Repository內(nèi)),應(yīng)用情景:有時,服務(wù)器的目錄會有所變化,和你當(dāng)前工作拷貝關(guān)聯(lián)的服務(wù)器URL改變了,這種改變的直接結(jié)果是,你在工作拷貝中所做的修改不能提交到服務(wù)器,這時就需要Switch到正確的URL再提交。
Relocate—-功能和Switch雷同,差別在于,Relocate實現(xiàn)的是Repository和Repository之間的切換。當(dāng)服務(wù)器地址或Repository名稱發(fā)生變化時,可以用它來更新你的工作拷貝。
另外:relocate的功能與“svn switch –relocate 舊地址 新地址”相同。
3、最開始出現(xiàn)的SVN錯誤是locked,嚴(yán)格說,locked不是錯誤。解決比較簡單:右擊文件夾—>tortoiseàcleanup,一般情況下不會出錯,如果遇到無法cleanup,那就是其他的錯誤或者沖突了。
   
4、再就是沖突,conflict。由于兩個(或多個)人同時更改了一個文件。理論上專業(yè)一點的說法是:采用鎖定-修改-解鎖方案來進(jìn)行版本控制。舉個例子來講Sally下載了版本A,此時,版本A此時就進(jìn)行了鎖定,然后Sally對A進(jìn)行改動,成了A’,未提交;此時Herry再從服務(wù)器上下載的時候還是A。Herry也對A進(jìn)行了改動,成了A’’。那么,Sally提交,版本A升到A’,Herry再提交的時候就會先提示文件過時,請先update。當(dāng)update的時候提示沖突。
解決的方法也很簡單:
    在文件夾上右擊—>tortoiseàresolveà在彈出的對話框中右擊沖突的文件à選擇resolve use theirs 或者選擇 resolve use mine。此時,Sally和Herry的版本只能提交一份。也就是說只能使用版本A’和A’’ 其中之一。當(dāng)然這實際上是人工解決的。SVN防止了無知覆蓋錯誤的產(chǎn)生。
    
產(chǎn)生沖突并不是我們想要的,對于項目的開發(fā)也是不好的。所以要盡量避免SVN錯誤:
一、良好的工作分配是首要的。個人管個人的文件,不更改其他人的文件。
二、工作組安排好提交。
三、個人想要修改文件之前先update,然后再修改;修改完成后及時提交(commit)。
5、還會遇到***文件夾不存在的情況,有時候是組內(nèi)成員將文件夾刪除,這種問題一般不會在正規(guī)的開發(fā)中遇到。解決的辦法就是先備份,然后重新checkout。本節(jié)關(guān)于SVN錯誤產(chǎn)生及解決介紹完畢。
【編輯推薦】
- 使用mod_dav_svn模塊訪問SVN倉庫方法揭秘
 - 九步輕松實現(xiàn)SVN創(chuàng)建管理項目
 - SVN客戶端常用命令專家全程講解
 - SVN使用說明跟蹤介紹
 - 跟蹤報道SVN客戶端常用命令
 















 
 
 
 
 
 
 