SVN本地更新時,由於一些操作中斷,如磁盤空間不夠,用戶取消等,可能會造成本地文件被鎖定的情況。這時候無論你在執行SVN的更新、上傳、添加等子命令都會提示“**locked”的錯誤,如圖:
一般出現這種情況的解決方法:
1、可以使用SVN clean up來清除鎖定。
如果不是本目錄鎖定,系統提示上一層目錄鎖定,需要到上一層或者根目錄中清除。
2.如果cleanup沒有效果的話只好手動刪除鎖定文件。
cd 到svn項目目錄下,然后執行如下命令
del lock /q/s
就把鎖刪掉了。
其實SVN加鎖會在.SVN(隱藏文件)中生成一個名字叫lock的文件(無后綴),查找所有的,手工刪除。然后再嘗試更新,系統可能會提示某個.base文件無法訪問。找到它,把相關的文件或其所在的目錄刪除,重新UPDATE。
在相應的目錄中,比如我在更新metasploit的“/opt/metasploit3/msf3/lib/active_support/core_ext”這個目錄時就遇到了類似的情況,把.SVN子目錄里(注意,“.”目錄是個隱藏目錄,需要選擇“文件夾選項”→“查看”→“顯示隱藏文件”菜單項)面log文件刪除,就可以了。然后繼續做svn cleanup命令。
3.如果找不到lock文件,一般采取的方法是另外找一個目錄重新CHECKOUT。但有時有時SVN目錄下可能有一些自己本地修改的文件,還未提交到SVN服務器,這時重新CHECKOUT需要注意本地文件的備份,並且不要強制覆蓋服務器上其它人修改的內容。
一、SVN 中 clean up 的功能
當Subversion改變你的工作拷貝(或是.svn中的任何信息),它會盡可能的小心,在修改任何事情之前,它把意圖寫到日志文件中去,然后執行log文件中的命令,並且執行過程中在工作拷貝的相關部分保存一個鎖,防止Subversion客戶端在變更過程中訪問工作拷貝。如果Subversion的操作中斷了(舉個例子:進程被殺死了,機器死掉了),日志文件會保存在硬盤上,通過重新執行日志文件,Subversion可以完成上一次開始的操作,你的工作拷貝可以回到一致的狀態。
這就是svn clean up所作的:它查找工作拷貝中的所有遺留的日志文件,刪除進程中工作拷貝的鎖。如果Subversion告訴你工作拷貝中的一部分已經“鎖定”了,你就需要運行這個命令了。SVN ---文件加鎖,執行clean up命令
參考網址:
http://blog.csdn.net/mazhaojuan/article/details/7906522