1. 程式人生 > >SVN命令之清理命令(clean up)的功能及使用技巧

SVN命令之清理命令(clean up)的功能及使用技巧

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命令。