Login | Register
My pages Projects Community openCollabNet

Enhanced Branch/Tag Support

This page shows off some of the enhanced support for branches and tags that was added to Subclipse as of the 0.9.102 release.

Overview

In many ways, the support for branching and tagging in Subversion represents a vast improvement over CVS. It certainly addresses many of the complaints with this feature in CVS. There is one significant drawback in the implementation in Subversion. Namely, the process of creating a branch/tag does not leave behind any "breadcrumbs" in the source of the branch/tag operation to indicate that the branch/tag was created. In other words, there is information in the branch/tag that indicates where it came from, but there is no similar information in the origin of the branch/tag that would let you see or know that the branch tag exists. The net result is that when looking at a file or folder there is no easy way to know which revisions belong to which tags.

Subclipse aims to solve the above problem by allowing you to maintain a Subversion property in your project that indicates the branches/tags that have been created from that project. The name of the property is subclipse:tags. The format is:

revision_number,tag_name,relative_path,branch/tag
Property

The above screenshot shows what the property looks like. However there is a Configure Branches/Tags option on the Team menu that allows you to edit the property using a custom editor.

Configure

Besides providing basic editing capabilities, the dialog also includes a built-in repository browser. This allows you to select one or more folders and add them as a branch/tag in one action. When folders are added in this manner, Subclipse automatically fills in the Revision number based on the Last Changed Revision of the selected folder.

Configure

Once the property has been defined, there are a number of ways that Subclipse takes advantage of it.

History Browsing

The Resource History View has been enhanced to show the tags for a revision.

History

A preference controls whether to show this information when browsing history directly from the repository. To show the information we have to search the repository for the presence of the subclipse:tags property. On a slow connection you probably would not want to do this.

Compare Revisions

The Compare with Revision ... option has been enhanced to show tags in its history view. This makes it easy to know which revisions you want to compare.

Revision Compare

URL Chooser

The URL Chooser that allows you to pick a URL in many of the Subclipse dialogs has been enhanced to show Branch/Tag information. This allows you to just select a branch/tag and the proper URL to that branch/tag will be automaticlly created.

Repository Browser

Compare with Branch/Tag

Subclipse 0.9.100 added a Compare with Branch/Tag option to the menu. In that release the option only produced a Unified Diff file. As of release 0.9.102 you have the option of producing a unified diff, or an Eclipse graphical compare. The Eclipse compare option is fairly slow if you do not have a fast repository connection. Also, the Eclipse compare option will show differences in svn keywords which the unified diff option will not. That being said it is still convenient to have and combined with the enhanced URL Chooser, it is a very nice option.

Branch Compare

Updating the Property

In addition to the Configures Branches and Tags option that was discussed earlier, there is also support for automatically updating the subclipse:tags property when you create a Branch/Tag using Subclipse. When you take this option, if we detect the subclipse:tags property on the item you selected, then we pop-up a dialog that lets you confirm that you want to add this new information to the subclipse:tags property. You then just have to commit that property change after creating the Branch/Tag. This feature does not exist when creating the Branch/Tag from the repository browser as it is only possible to modify a property value in a working copy.