When Subversion modifies your working copy (or any information within .svn
), it tries to do so as safely as possible. Before changing the working copy, Subversion writes its intentions to a log file. Next it executes the commands in the log file to apply the requested change, holding a lock on the relevant part of the working copy while it works—to prevent other Subversion clients from accessing the working copy in mid-change. Finally, Subversion removes the log file. Architecturally, this is similar to a journaled filesystem. If a Subversion operation is interrupted (if the process is killed, or if the machine crashes, for example), the log files remain on disk. By re-executing the log files, Subversion can complete the previously started operation, and your working copy can get itself back into a consistent state.
svn cleanupがやるのは、まさにこのことです。 作業コピーを探して、残ったログを実行し、プロセスのロックを 取り除きます。Subversionに作業コピーのどこかが「ロック」 されていると言われたときには、このコマンドを実行してください。 同様にsvn status はロックされているアイテム の隣に L
を表示してそのことを示します:
$ svn status L somedir M somedir/foo.c $ svn cleanup $ svn status M somedir/foo.c
Don't confuse these working copy locks with the ordinary locks that Subversion users create when using the 「lock-modify-unlock」 model of concurrent version control; see 「lock」 の三つの意味 for clarification.