天天看點

SVN ---檔案加鎖,執行clean up指令

一、SVN 中 clean up 的功能

     當Subversion改變你的工作拷貝(或是.svn中的任何資訊),它會盡可能的小心,在修改任何事情之前,它把意圖寫到日志檔案中去,然後執行 log檔案中的指令,并且執行過程中在工作拷貝的相關部分儲存一個鎖,防止Subversion用戶端在變更過程中通路工作拷貝。如果 Subversion的操作中斷了(舉個例子:程序被殺死了,機器死掉了),日志檔案會儲存在硬碟上,通過重新執行日志檔案,Subversion可以完成上一次開始的操作,你的工作拷貝可以回到一緻的狀态。

       這就是svn clean up所作的:它查找工作拷貝中的所有遺留的日志檔案,删除程序中工作拷貝的鎖。如果Subversion告訴你工作拷貝中的一部分已經“鎖定”了,你就需要運作這個指令了。

二、本地檔案鎖定,使用“清除”指令

    SVN本地更新時,由于一些操作中斷,如磁盤空間不夠,使用者取消等,可能會造成本地檔案被鎖定的情況。這時候無論你在執行SVN的更新、上傳、添加等子指令都會提示“**locked”的錯誤,如圖:

SVN ---檔案加鎖,執行clean up指令
一般出現這種情況的解決方法:
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指令。 第4種和第5種方式,未找到相關locked檔案 和 log檔案,不知道是不是SVN版本的問題。本地檔案加鎖,“清除指令clean up”很好使。      本文轉自yzy121403725 51CTO部落格,原文連結: http://blog.51cto.com/lookingdream/1838682 ,如需轉載請自行聯系原作者