Tags: svn
Contents (hide)
SVN

SVN

Subversion is meant to be a better CVS, so it has most of CVS's features. Generally, Subversion's interface to a particular feature is similar to CVS's, except where there's a compelling reason to do otherwise.

Features

  • Commits are true atomic operations. Interrupted commit operations do not cause repository inconsistency or corruption.
  • Renamed/copied/moved/removed files retain full revision history.
  • Directories, renames, and file metadata (but not timestamps) are versioned. Entire directory trees can be moved around and/or copied very quickly, and retain full revision history.
  • Versioning of symbolic links.
  • Native support for binary files, with space-efficient binary-diff storage.
  • Branching and tagging are cheap operations, independent of file size.
  • Natively client/server, layered library design.
  • Client/server protocol sends diffs in both directions.
  • Costs are proportional to change size, not data size.
  • File locking for unmergeable files ("reserved checkouts").
  • PHP, Python, Ruby, Perl, and Java language bindings.
  • Full MIME support - the MIME Type of each file can be viewed or changed, with the software knowing which MIME types can have their differences from previous versions shown.

Local SVN Repositories simple tutorial

Create local repository example:
# creation of empty repository
svnadmin create /path/to/repos
# import sources to repository
cd /path/to/your/sources
svn import . file:///path/to/repos

Read about repository creation and configuration in SVN book#Chapter 5.

Using svn utility

Fetching working repository to ~/projects

mkdir ~/projects
cd ~/projects
svn checkout file:///path/to/repos  # from local repository
    or
svn checkout http://path/to/repos   # from web repository
    or
svn checkout svn://path/to/repos    # from SVN repository

In ~/projects/<repository name>

svn update                       # update from SVN
svn commit -m "message"          # commit changes with some message
svn add <new file>               # add <new file> to SVN
svn delete <file>                # deletes <file> from SVN
svn move <file> <new file>       # moves <file> to <new file> in SVN
svn log <file>                   # prints information about revisions of <file>
svn diff <file>                  # shows differences between local and SVN last version
svn diff <file> --revision <num> # shows differences between local and SVN <num> version

See repository information:

svnlook info /path/to/repos
svnlook tree /path/to/repos

Change repository location:

svn switch --relocate http://path/to/old/svn/ http://path/to/new/svn/ .

Read about basic work cycle on SVN book#Chapter 3.

SVN on Computer Science

Our main SVN server is https://svn.cs.bgu.ac.il/svn/ and its tracking is https://svn.cs.bgu.ac.il/trac/

If you want to open your own SVN repository and Trac, email us:

SVN Hosting for Undergraduate Students

According to many requests, we raise new service: CS SVN Hosting service.

Every undergraduate student can create there SVN repository for a course assignments or for a project.

More details on service homepage.

SVN and Eclipse

All you need, is an Eclipse and Subclipse plugin.

Subclipse gives you abilities to create/explore/modify SVN repository, synchronize your project, update/commit etc.

More info in Subclipse documentation or IBM::developerWorks tutorial.

Clients for SVN

Links