Finally! Your edits are finished, you’ve merged all changes from the server, and you’re ready to commit your changes to the repository.
The svn commit
command sends all of your changes to the repository. When you
commit a change, you need to supply a log message
describing your change. Your log message will be attached to the new
revision you create. If your log message is brief, you may wish to
supply it on the command line using the --message
(or
-m
) option:
$ svn commit -m "Corrected number of cheese slices." Sending sandwich.txt Transmitting file data . Committed revision 3.
However, if you’ve been composing your log message as you work,
you may want to tell Subversion to get the message from a file by
passing the filename with the --file
(-F
)
option:
$ svn commit -F logmsg Sending sandwich.txt Transmitting file data . Committed revision 4.
If you fail to specify either the --message
or
--file
option, Subversion will automatically launch
your favorite editor (see the information on editor-cmd
in Config) for composing a log
message.
If you’re in your editor writing a commit message and decide that you want to cancel your commit, you can just quit your editor without saving changes. If you’ve already saved your commit message, simply delete the text, save again, and then abort:
$ svn commit Waiting for Emacs...Done Log message unchanged or not specified (a)bort, (c)ontinue, (e)dit a $
The repository doesn’t know or care whether your changes make any sense as a whole; it checks only to make sure nobody else has changed any of the same files that you did when you weren’t looking. If somebody has done that, the entire commit will fail with a message informing you that one or more of your files are out of date:
$ svn commit -m "Add another rule" Sending rules.txt svn: Commit failed (details follow): svn: File '/sandwich.txt' is out of date ...
(The exact wording of this error message depends on the network protocol and server you’re using, but the idea is the same in all cases.)
At this point, you need to run svn update
, deal
with any merges or conflicts that result, and attempt your commit
again.
That covers the basic work cycle for using Subversion. Subversion offers many other features that you can use to manage your repository and working copy, but most of your day-to-day use of Subversion will involve only the commands that we’ve discussed so far in this chapter. We will, however, cover a few more commands that you’ll use fairly often.