Penguin
Note: You are viewing an old revision of this page. View the current version.

SubVersion is a modern VersionControlSystem that aims to replace CVS. Of the numerous CVS replacements, SubVersion is quite possibly the most similar to CVS in CommandLine interface and has a stable support community, making it a good choice if you wish to move away from CVS.

It lifts the limitations of CVS by versioning MetaData and dealing with commits as a unit, called a change set. How does this help?

  • Versioning MetaData along with the files allows for moving and renaming files within the repository without dissociating them from their history.
  • Change sets guarantee that the repository will always be in a defined and consistent state. They also allow rolling back large commits as a whole, and are the foundation for SubVersion's vastly improved branch and tag handling.

The CommandLine client, analogous to cvs(1) and with very similar use for the most part, is called svn. svn help provides a list of all commands and global options. svn help command provides help about the specific command. Unfortunately, there is no ManPage to speak of.

Things that you might want to know about merging:

  • if you change the name remember to include the name of the old file at the end of the merge or else it will give a weird error message - use syntax like this:

    • svn merge new.c -r1:5 ../old/prevnew.c
  • if merge is not automatic edit the file manually and then remember to do this:

    • svn resolve new.c

Problems experienced:

  • if you do a svn delete of a directory the next svn commit will fail with a weird error message unless you manually delete the directory yourself afterwards. This looks like it is fixed in 1.1.14 but I have not tested that.

Flagging a file as executable

svn propset svn:executable on filename

See also: