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