當Subversion改變你的工作副本(或是.svn中的任何訊息),它會盡可能的小心,在修改任何事情之前,它把意圖寫到日誌文件中去,然後執行log文件中的命令,並且執行過程中在工作副本的相關部分保存一個鎖— 防止Subversion客戶端在變更過程中訪問工作副本。然後刪掉日誌文件,這與記帳試的文件系統架構類似。如果Subversion的操作中斷了(舉個例子:進程被殺死了,機器死掉了),日誌文件會保存在硬碟上,通過重新執行日誌文件,Subversion可以完成上一次開始的操作,你的工作副本可以回到一致的狀態。
這就是svn cleanup所作的:它查找工作副本中的所有遺留的日誌文件,刪除進程中工作副本的鎖。如果Subversion告訴你工作副本中的一部分已經「鎖定」了,你就需要運行這個命令了。同樣,svn status將會使用L 標示鎖定的項目:
$ svn status L somedir M somedir/foo.c $ svn cleanup $ svn status M somedir/foo.c
不要將工作副本鎖與Subversion用戶使用並發版本控制的「鎖定-修改-解鎖」模型建立的鎖混淆;更多細節見鎖定的三種含義。