Now that we've covered the day-to-day tasks that you'll frequently use Subversion for, we'll review a few administrative tasks relating to your working copy.
Subversion doesn't track either the state or the existence of working copies on the server, so there's no server overhead to keeping working copies around. Likewise, there's no need to let the server know that you're going to delete a working copy.
If you're likely to use a working copy again, there's nothing wrong with just leaving it on disk until you're ready to use it again, at which point all it takes is an svn update to bring it up to date and ready for use.
However, if you're definitely not going to use a working
copy again, you can safely delete the entire thing, but you'd
be well served to take a look through the working copy for
unversioned files. To find these files, run svn
status
and review any files that are prefixed with a
?
to make certain that they're not of
importance. After you're done reviewing, you can safely
delete your working copy.
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 logfile. Next, it
executes the commands in the logfile 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 mid-change. Finally,
Subversion removes the logfile. Architecturally, this is
similar to a journaled filesystem. If a Subversion operation
is interrupted (e.g, if the process is killed or if the machine
crashes), the logfiles remain on disk. By
reexecuting the logfiles, Subversion can complete the
previously started operation, and your working copy can get
itself back into a consistent state.
And this is exactly what svn cleanup
does: it searches your working copy and runs any leftover
logs, removing working copy locks in the process.
If Subversion ever tells you that some part of your working copy
is “locked,” this is the command that you
should run. Also, svn status will display
an L
next to locked items:
$ 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 the sidebar The Three Meanings of “Lock” for clarification.