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