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