This page last changed on Jun 26, 2006 by tcarlson.

On 14/4/2006 the Mule source repository was migrated from CVS to Subversion and the old CVS repository disabled.

Mule repository

You have several options for accessing the Mule repository, please refer to http://xircles.codehaus.org/projects/mule/repo for the available URLs.

Authentication for committers

Subversion uses HTTPS for security, so unlike CVS, there is no need to tunnel your connection through SSH. Authentication is only performed when you try to commit, and for that you will be prompted for a password which you should receive when added as a developer on the project.

Introduction to Subversion for new (or ex-CVS) users

Subversion is basically very similar to CVS but with some important advantages and new features which will make Mule development more efficient in the long run.

Please take the time to familiarize yourself with Subversion as most FOSS projects will sooner or later be making the switch over to it from CVS.

To get started, take a look at the Introduction and Subversion for CVS Users

The complete documentation can be found here.

Subversion is a lot more stringent and picky than CVS where you can often get away with manually "fixing" things. Fortunately, in Subversion you (usually) don't have to.

To avoid wrecking your working copy, don't manipulate the .svn directories or move folders around. To move folders, always use the svn move command. Use svn status often to see what you have done to your working copy.

Subversion clients

Command line Subversion client ("svn")

This is the official, "native" version of the client library. Sometimes it's just handy to drop into the shell and do some CLI magic. For most operations, little magic is required since resources in Subversion are adressed by URL only (branches and tags are just logical copies at a point in time), so there's no tag options or sticky settings to fiddle with.

Web

You can browse and search the repository, see the latest commits, compare previous versions of files, export source as a tarball/zip and much more using the Fisheye web interface

Eclipse

Use the Subclipse plug-in for Eclipse.
For Eclipse 3.x, just add http://subclipse.tigris.org/update_1.0.x as an update site in Eclipse's update manager (which you can find in the Help menu).

The plugin lets you choose between the native client library (JavaHL) or the standalone Java library (JavaSVN). JavaSVN is easier to configure (no native libraries required), but the native JavaHL JNI layer is the "official" client code. On Windows, JavaHL is bundled with the plugin.

IDEA

IDEA versions 5.x and onwards have built-in support for Subversion, just make sure you use the https scheme to keep things simple.

TortoiseSVN

A Windows Explorer shell extension. Very nice, though it sometimes bogs down a little with very large repositories when scanning for changes.

SmartSVN

A standalone cross-platform client GUI that uses the JavaSVN library. Obviously good if you need the same GUI for Windows, Linux and OS/X.

Working with branches

A branch of the project is done by making a copy svn cp of the trunk to a subdirectory of branches:

~> svn copy https://svn.codehaus.org/mule/trunk https://svn.codehaus.org/mule/branches/foo-feature

You can then move your working copy (your "checkout") between the trunk and the branch by using svn switch. While switching, your changes will be retained.

~> cd ~/mule-devel
~/mule-devel> svn switch https://svn.codehaus.org/mule/branches/foo-feature

When working on a feature branch, it is sometimes wise to integrate the changes happening in the trunk into your branch, and then once the feature is done, merge the diff between the trunk and the branch into trunk.
Such a merge could look like this (with the working copy on the branch):

~/mule-devel> svn merge https://svn.codehaus.org/mule/trunk -r124:145

There is a cool tool which can help you do this, called svnmerge . Is uses a Subversion property so you don't have to write down the revision numbers on a piece of paper, generated log messages from the revisions you are merging, and other goodness.

Note: You may choose to branch at a lower level than the "root/trunk". Since your can switch at any level in your WC, this is not really needed, but the merging effort is smaller. Just remember to switch at the same level within the tree, or unexpected results will occur.

Miscellaneous tips for working with Subversion

Excessive load on your file system

Since a Subversion working copy contains base revisions of a file as well as the file itself, it tends to put increased strain on file systems since often they modify the last access time of a file on read access. Needless to say this can lead to hundreds of thousands of disk writes just because you have updated a single file in your working copy!

For Windows, the solution is outlined at http://www.winguides.com/registry/display.php/50/. The setting does not do any harm and can be reverted at any time; it's obviously useful outside of Subversion too.

On Linux ext2/3 can be mounted with the "noatime" option, which also avoids "write storms" that happen for no apparent reasons - especially with big CVS or Subversion trees on slower (Laptop) drives this can make a noticeable difference.

Color scheme for the SmartSVN client

Out of the box the otherwise really excellent SmartSVN client has an
(IMHO!) really evil color scheme that makes things hard to read, especially on TFTs. Luckily there is a solution to the problem - undocumented of course..

Locate your SmartSVN/bin directory and add the following line to the SmartSVN.cfg file:

vmoption=-Dsmartsvn.lookandfeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel

This tells SmartSVN to use the Windows L&F. Apparently other L&Fs are possible too; supposedly you can drop a jar into the lib directory and specify the required class as described. Note that I have not tested this.

Document generated by Confluence on Oct 03, 2006 09:23