1.資料用途
本資料登記項(xiàng)目人員使用TortoiseSVN客戶端,或者在eclipse中使用svn插件時(shí),遇到的問題,問題原因及對(duì)應(yīng)的解決方案。用于幫助配置管理員快速定位及解決常見問題。
本文檔為動(dòng)態(tài)文檔,即應(yīng)為持續(xù)不斷更新的。
2.問題和解決方案(每個(gè)問題之間我用了分割線,方便逐個(gè)查找)
問題1.如何將svn插件加入eclipse中?
解決方法
步驟1 下載svn插件;
步驟2 將下載的svn插件帶文件夾解壓到eclipse安裝文件中;
步驟3 在eclipse安裝文件夾中新建links文件夾;
步驟4 在links中創(chuàng)建svn.link文件;
步驟5 在創(chuàng)建的文件中指定svn插件路徑:
path=D:\\Tools\\eclipse\\site-1.6.5
步驟6 在eclipse菜單中,依次點(diǎn)擊preferences -> Team -> SVN ->SVN接口,將svn接口的選項(xiàng)改成javahl。
以上6個(gè)步驟,即完成插件配置。
問題2.用戶在使用eclipse創(chuàng)建資源庫(kù)時(shí),提示驗(yàn)證位置時(shí)發(fā)生錯(cuò)誤。錯(cuò)誤提示如下圖:
問題原因
項(xiàng)目人員使用的機(jī)器保存的是別人的賬號(hào)密碼,該賬號(hào)對(duì)資源庫(kù)沒有訪問權(quán)限。
解決方法
方法1:把Documents and Settings\Administrator\Application Data\Subversion\auth\文件夾中的所有文件刪除,即可;
方法2:如果不行,還可以試試看,安裝TortoiseSVN客戶端,然后右鍵菜單TortoiseSVN----設(shè)置(settings)----已保存數(shù)據(jù)(Saved Data)----認(rèn)證數(shù)據(jù)(Authentication data),點(diǎn)擊“清除”(clear);
清除后,重新下載項(xiàng)目時(shí)輸入賬號(hào)密碼就可以了。
問題3.Eclipse操作時(shí),提示用戶“請(qǐng)求的名稱有效,但是找不到請(qǐng)求的類型的數(shù)據(jù)。svn: Unable to connect to a repository at URL……”
問題原因:本機(jī)不能連接網(wǎng)絡(luò)
解決方法:本機(jī)可以上網(wǎng)便正常。
問題4.64位Win 7 上eclipse的svn插件找不到 javaHL(javaHL not available),如下圖:
問題表現(xiàn)形式
機(jī)器1為64位win7系統(tǒng),機(jī)器2為32位系統(tǒng),機(jī)器2提交的文件,機(jī)器1同步不到,但修改的文件可以正常同步。
說明
Subclipse是一個(gè)很優(yōu)秀的SVN客戶端。它提供了ClientAdapter、JavaHL和SVNKit等方式與SVN服務(wù)交互。官方強(qiáng)烈推薦使用JavaHL的方式。JavaHL使用JNI調(diào)用SVN的本地庫(kù)。速度快,穩(wěn)定可靠。
但是在64位的Win7下,就比較麻煩了。默認(rèn)安裝好后, Subclipse的配置界面中,顯示的javaHL的狀態(tài)是“unavailable“,如圖。這是因?yàn)橄到y(tǒng)中沒有安裝svn的javahl。
解決方法
安裝SlikSVN,可以在http://www.sliksvn.com/en/download下載SlikSVN,不同的Subsvn要安裝不同的SlikSVN。
當(dāng)前版本對(duì)應(yīng)
下載安裝完SlikSVN后,配置系統(tǒng)環(huán)境變量,把SlikSVN安裝目錄下的bin目錄加入到系統(tǒng)環(huán)境變量:
重新啟動(dòng)Eclipse,你會(huì)看到Subsvn已經(jīng)有JavaHL庫(kù)了
問題5.svn修改后無法commit,也無法update,提交時(shí)提示“Incomplete copy information on path ...”
問題原因:有可能是因?yàn)楸镜氐?svn文件夾過多導(dǎo)致。
解決方法
刪除本地工作區(qū)源代碼中的.svn文件夾,update不了的重新checkout或者update即可;commit不了的,刪除.svn文件夾后,先將文件add加入版本控制,再commit即可。
問題6.svn代碼沖突,無法提交
問題原因
一個(gè)文件同時(shí)被a1和a2兩個(gè)人修改。a1修改完后先提交未告知a2。a2修改后未先將版本更新,直接提交。導(dǎo)致沖突發(fā)生。
解決方法
步驟1 右鍵沖突文件,在TortoiseSVN菜單中點(diǎn)擊“Resolved”先將沖突狀態(tài)移除;
步驟2 右鍵該文件,update更新版本。
參考:http://www.haodaima.net/art/2512917
問題7.在使用TortoiseSVN客戶端操作版本合并merge時(shí)失敗,提示“one or more files are in a conflicted state”,錯(cuò)誤如下圖:
問題原因:選擇merge第一項(xiàng)時(shí),沒有選擇需要合并的文件版本號(hào)
解決方法
在對(duì)svn文件進(jìn)行合并時(shí),選擇需要合并的文件的版本信息,然后next即可,如下圖:
問題8.在eclipse提交代碼時(shí)提示Lock‘Attempted to lock an already-locked dirsvn:Workingcopy'D:\workspace\qxt_admin\WebRoot\WEB-INF\view\meipm\business\library\mmsTemp'locked’,錯(cuò)誤詳情如下圖:
問題原因:本地工作拷貝被鎖定。
解決方法:使用Clean up清理即可。
問題9.在eclipse中update更新文件,提示前一個(gè)操作被中斷,讓用戶嘗試cleanup解決。但操作cleanup后提示整個(gè)目錄被鎖定,報(bào)錯(cuò)如圖示:
1)更新報(bào)錯(cuò):
2)Cleanup報(bào)錯(cuò):
(忘記截圖),彈出提示框提示整個(gè)文件夾均被鎖定無法操作。
問題原因:未能定位。
解決方法
嘗試了以下方法
一.直接根據(jù)提示,使用Cleanup清理,清理完成更新。若更新不成功,繼續(xù)嘗試其他方法。
二.清理wc.db文件中的記錄;
*.下載sqlite3.exe
*.找到你項(xiàng)目的.svn文件,查看是否存在wc.db
*.將sqlite3.exe放到.svn的同級(jí)目錄
*.啟動(dòng)cmd執(zhí)行sqlite3 ?.svn/wc.db "select * from work_queue"
*.看到一些記錄,下一步執(zhí)行delete from work_queue,執(zhí)行完后再執(zhí)行步驟4的語句,會(huì)發(fā)現(xiàn)已經(jīng)沒有看到記錄了。
*.現(xiàn)在在到項(xiàng)目里面,執(zhí)行cleanup。
(文章鏈接:http://blog.csdn.net/luojian520025/article/details/22196865)
三.若第二種方法后,還是提示目錄鎖定,刪除一下鎖定文件。
產(chǎn)生這種情況大多是因?yàn)樯洗蝧vn命令執(zhí)行失敗且被鎖定了,需要?jiǎng)h除文件夾中的lock文件,即可解鎖。這里介紹3種方法:
方法一.直接進(jìn)行cleanup;對(duì)較小的文件比較管用,文件稍大些等待時(shí)間很長(zhǎng)或不起作用;
方法二.選擇文件,右鍵執(zhí)行release lock;等待時(shí)間較長(zhǎng);
方法三.手動(dòng)刪除鎖定文件:
*.在運(yùn)行中輸入cmd進(jìn)入命令行;
*.在命令提示符下cd 到svn項(xiàng)目被鎖定的位置;
*.執(zhí)行命令del lock /q/s
*.等待刪除lock文件成功,cleanup后重新更新SVN。
問題10.在更新svn時(shí)候提示目錄下多出了一個(gè)xx.tmp文件,提示使用cleanup解決。但每次cleanup都會(huì)產(chǎn)生一個(gè).tmp文件,并且提示文件目錄locked。
解決方法
將隱藏文件.svn解除隱藏,之后把tmp目錄下所有臨時(shí)文件以及目錄刪除,再次cleanup后。更新操作成功。
問題11.在eclipse中提交失敗,提示不知道這樣的主機(jī),如下圖:
問題原因
這種情況一般是網(wǎng)絡(luò)問題導(dǎo)致。也可能是因?yàn)橛脩籼峤磺拔催M(jìn)行更新操作。
解決方法
提交(commit)前先更新(update),一般都可以解決。
積累1 ?eclipse中svn圖標(biāo)的詳細(xì)含義
在eclipse中使用svn,會(huì)遇到這樣那樣的問題,對(duì)svn圖標(biāo)含義的了解,可以方便我們更加快速準(zhǔn)確地分析問題產(chǎn)生的原因。以下鏈接文章是比較詳細(xì)的svn含義解說。歡迎參考學(xué)習(xí)。
問題12.在Eclipse中commit,提示Malformed network data
今天在Eclipse中提交svn項(xiàng)目時(shí),遇到一個(gè)問題,就是提交更改時(shí)報(bào) svn: Malformed network data 錯(cuò)誤。google了一下,才知道是javaSVN的版本問題。我用的Subclipse,雖然是最新版,但是它使用的javaSVN庫(kù)不是最新的。
解決辦法有三個(gè)
1.不用javaSVN,而使用javaHL接口,在我的Ubuntu9.10上試了一下,安裝libsvn-java是成功了,但是提示javahl的版本要1.3.x或以上,網(wǎng)上看了一下,基本上這種方法比較麻煩,放棄了。
2.使用最新版的javaSVN庫(kù),去svnkit(javaSVN)官方網(wǎng)站http://svnkit.com/download.php 下載一個(gè)Standalone Version的zip包,然后將 $eclipse/plugins/org.tigris.subversion.subclipse.core_1.0.0/lib 下的 javasvn.jar和svnjavahl.jar替換成下載的zip包中的svnkit.jar 和 svnkit-javahl.jar,文件名仍然是 javasvn.jar和svnjavahl.jar 。【我執(zhí)行到這里可以用了】另外還要加一個(gè) trilead.jar,也在zip包中,不過直接放到 lib下面還無法加載,我干脆把其中的類文件打包到 javasvn.jar 中去了。OK,重啟Eclipse就可以了。
3.直接不用subclipse,改用svnkit 。不知道有沒有問題,沒試過。
問題13.本地使用TortoiseSVN客戶端,刪除本地代碼后提交,提示提交失敗,失敗信息如下:
問題原因:返回上一級(jí)后,發(fā)現(xiàn)目錄沖突了。
解決方法:使用Resolved解決了沖突之后再提交,就沒有問題了。
問題14.本地使用TortoiseSVN客戶端,提交commit失敗,提示“Permission denied0”,如下圖:沒有訪問目錄的權(quán)限。
解決方法
對(duì)應(yīng)目錄權(quán)限指定給操作者即可。(若該操作者不是項(xiàng)目人員,權(quán)限不予開放。若需開放權(quán)限,需由項(xiàng)目負(fù)責(zé)人提交申請(qǐng)。)
問題15.checkout時(shí)出錯(cuò),提示“請(qǐng)求的名稱有效,但找不到請(qǐng)求類型的數(shù)據(jù)”,如下圖:
問題原因:路徑不正確。
解決方法:使用正確的路徑checkout即可。
問題16.’.’is not a working copy. Can’t open file ‘.svn\entries’:系統(tǒng)找不到指定的路徑。
問題原因:輸入的訪問路徑不正確。如svn://192.168.6.200/如果最后少寫了“ /”,就會(huì)出現(xiàn)這種錯(cuò)誤提示。
問題17.將文件checkout之后,沒有出現(xiàn)SVN的圖標(biāo),是怎么回事?
解答:有些時(shí)候在客戶端Checkout文件后,SVN的系統(tǒng)圖標(biāo)也會(huì)不顯示,可以執(zhí)行一下“Clean up”,就會(huì)出現(xiàn)SVN的系統(tǒng)圖標(biāo)。
問題18.為什么添加的文件,別人看不見,版本庫(kù)里也找不到?
解答:最可能的原因,就是你只操作了“Add”而沒有操作“Commit”,這樣只是在本地注明某個(gè)文件是預(yù)定要增加的,而沒有實(shí)際添加到版本庫(kù)中,要添加到版本庫(kù)必須執(zhí)行“Commit”。刪除文件也是一樣。
問題19.“Commit failed。……You have to update your working copy first”提交失敗,需要首先執(zhí)行更新操作。
解答:這個(gè)提示很明顯。若要提交,先進(jìn)行更新操作。一般先更新再提交就正常了。
這是因?yàn)槎嗳送瑫r(shí)修改同一文件,在提交前其他人已經(jīng)搶先提交到SVN服務(wù)器中,導(dǎo)致該錯(cuò)誤;
問題20.更新時(shí)提示文件發(fā)生沖突:“One or more files are not a conflicted state。”
解答:多人同時(shí)修改同一文件的同一部分,SVN無法自動(dòng)進(jìn)行合并,會(huì)導(dǎo)致該錯(cuò)誤;解決方法:對(duì)工作復(fù)本中的文件和服務(wù)器的文件進(jìn)行比較,手工合并即可。
問題21.“Commit failed;File already exists”提交失敗,文件**已存在。
解答:版本管理系統(tǒng)在改變你的計(jì)算機(jī)上的工作副本時(shí),是非常的小心的。在做任何事情之前,它都盡可能把您的意圖寫到你的計(jì)算機(jī)上的日志文件中去。但如果偶然地操作中斷了(例如:突然停電了,您的計(jì)算機(jī)死機(jī)了),那么日志文件記錄就可能同您最后的工作狀態(tài)不一致。一種建議解決途徑:先把要提交的東西拷出來放到其它目錄,再更新本地文件,然后把拷出來的文件重新放回去提交。
問題22.Working copy’**’locked. Please execute the’Clean up’command.
解答:Subversion客戶端在提交內(nèi)容之前會(huì)在本地的工作拷貝寫日志,防止其他客戶端再次作操作,如果這個(gè)提交過程中發(fā)生錯(cuò)誤,就會(huì)存在未清理的日志,解決這個(gè)問題之需要執(zhí)行“清理”操作,整理你的計(jì)算機(jī)上的工作副本,清理錯(cuò)誤的日志記錄,使您可以繼續(xù)操作。
問題23.執(zhí)行clean up時(shí),出現(xiàn)錯(cuò)誤“Subversion reported an error while doing a cleanup!” '**' is not a working copy directory ”
解答:遇到這種情況,先刪除隱藏文件夾.svn中的tmp下面的臨時(shí)文件,再執(zhí)行 clean up。
問題24.因?yàn)閭}(cāng)庫(kù)與目錄很多,使用TSVN每次選擇目錄URL of repository有很多地址,如何才清除呢?像清除瀏覽器中的歷史那樣,用什么方法呢?
解答:右鍵->TortoiseSVN->Settings->Saved Data,就可以清除你想要的東西了,包括URL、log、窗口大小、密碼緩存等。
問題25.在SVN中選中一個(gè)目錄show log時(shí),出現(xiàn)了某些版本只顯示版本號(hào)和(no date),沒有其他信息,什么原因引起的?
解答:出現(xiàn)了(no date)的revision,為其他人修改了你所沒有權(quán)限訪問的某個(gè)目錄下的文件。
問題26.提交時(shí)失敗,At least one property change failed; repository is unchanged,如下圖:
解答:注釋信息較長(zhǎng),適當(dāng)?shù)臏p少,問題解決。
問題27.提交時(shí),提示checkout ?of……403 forbidden
“svn: CHECKOUT of '/svn/meip/!svn/ver/13833/%E5%86%85%E8%92%99%E5%8F%A4%E4%BC%81%E4%BF%A1%E9%80%9A/01.%E5%BC%80%E5%8F%91%E5%BA%93/00.%E4%BB%A3%E7%A0%81/MessgaeServer29_nm/src/com/creawor/meip/sms/server/security/GaoeControlChecker.java': 403 Forbidden (http://www.creawor.com:2051)”
問題原因:svn插件使用錯(cuò)誤或者未安裝。
解決方法:1、進(jìn)入MyEclipse中 -- > windows選項(xiàng)-->Perferences選項(xiàng)-->Team選項(xiàng)-->SVN選項(xiàng)窗口,查看svn接口是否含兩項(xiàng)。如下圖。其中JavaHL為正確的svn插件客戶端。若選擇錯(cuò)誤,更改即可。
2、若無JavaHL接口文件,表示svn插件未安裝,安裝插件后,在此處設(shè)置即可。設(shè)置完成,重啟eclipse。
問題28.有權(quán)限的項(xiàng)目提交時(shí)提示forbidden(路徑中的字母大小寫問題)
問題報(bào)錯(cuò):org.apache.subversion.javahl.ClientException: URL access forbidden for unknown reasonsvn: Commit failed (details follow):svn: Access to /svn/smm/!svn/act/423e5688-9469-204c-b92f-785c1c3f1e32' forbidden
org.apache.subversion.javahl.ClientException: URL access forbidden for unknown reason
svn: Commit failed (details follow):svn: Access to '/svn/smm/!svn/act/423e5688-9469-204c-b92f-785c1c3f1e32' forbidden
以上問題出現(xiàn)在項(xiàng)目提交時(shí)(eclipse中)
其時(shí)項(xiàng)目下載是正常的,嘗試過的解決方法
1.清理賬號(hào)密碼重新登錄,問題仍在
2.清理或刷新項(xiàng)目,問題仍在
3.項(xiàng)目大小寫與版本庫(kù)更改為一致,問題解決
以后項(xiàng)目下載要注意項(xiàng)目的大小寫問題,以免再次出現(xiàn)這種情況
(在網(wǎng)頁訪問時(shí)大小寫不區(qū)分,有些項(xiàng)目也不區(qū)分大小寫,不知道是不是巧合,就是大小寫的更改解決了上述問題)
問題29.資源同步時(shí),出現(xiàn)以下問題
org.eclipse.team.core.TeamException: Error getting status for resource L/qxt_web/src/com/creawor/meip/auth/LoginAction.java org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded
svn: Working copy 'E:\workspace[newgd]\qxt_web\src\com\creawor\meip\auth' is too old (format 10, created by Subversion 1.6)
eclipse不編譯,每次修改代碼控制臺(tái)都顯示錯(cuò)誤
svn:The working copy needs to be upgraded
org.apache.subversion.javahl.ClientException: The working copy needs to be upgraded
svn: Working copy ‘E:\aliyun-spirit\spiritmap0916′ is too old (format 10, created by Subversion 1.6)
提示的意思就是要更新svn版本,引發(fā)問題的原因就是用低版本的svn客戶端/插件檢出的代碼后,升級(jí)了svn客戶端/插件,去處理之前低版本載下來的代碼。右鍵project--Team--upgrade之后就ok了。或者在當(dāng)前版本下重新檢出代碼
2017年3月31日更新
問題30.提交時(shí)失敗,提示out of date
問題原因:文件有沖突,服務(wù)器上該文件的版本比本地版本新。
解決方法:先update,解決沖突,再commit,步驟如下:
a.先備份out of date的新文件
b.對(duì)out of date文件執(zhí)行revert操作
c.再執(zhí)行update操作
d.用剛才備份的新文件覆蓋掉舊有的文件
e.再次執(zhí)行commit,ok.
2018年10月25號(hào)更新
問題31.編碼原因?qū)е碌膩y碼問題
解決方法:因?yàn)楣ぞ吣J(rèn)編碼為ISO-8859-1,用window->perference->general->workspace頁簽中設(shè)置默認(rèn),也可以對(duì)工程右鍵->perperties->resource修改單個(gè)工程編碼
待續(xù)……