Monthly Archive for January, 2012

Polling Subversion with Jenkins

There are many advantages Jenkins can offer Apache Subversion users, one of which is the option of automatically polling Subversion repositories for changes, and creating a new build whenever changes are detected. Implementing this functionality is made easy with our free, open ALM platform for Subversion, uberSVN. In this tutorial, we show you how to configure Jenkins to poll a Subversion repository once every five minutes.

1. To automatically poll a Subversion repository, you must first have created at least one Jenkins job. To get started, click on the desired Jenkins job from within uberSVN’s ‘Jenkins’ tab.

2. On the next screen, click ‘Configure.’

3. Select ‘Subversion modules’ and enter the URL of the repository you want Jenkins to poll.

4. Under the ‘Build Triggers’ heading, select ‘Poll SCM Schedule.’ A new text box will open, where you can enter how often you want Jenkins to poll the repository. In this example, Jenkins will poll the Subversion repository every five minutes. Alternatively, you can specify particular dates and times, using the following formula:

MINUTE HOUR DOM MONTH DOW

MINUTE: Minutes within the hour (0-59)
HOUR: The hour of the day (0-23)
DOM: The day of the month (1-31)
MONTH: The month (1-12)
DOW: The day of the week (0-7) where 0 and 7 are Sunday.

Note that each item must be separated by TAB or whitespace.

5. When you have entered all this information, click ‘Save’ and Jenkins will begin automatically polling Subversion.

6. If you want to check the polling process is working, make some changes to your working copy and then commit them back to the repository as normal. Now go back to your Jenkins job and select the ‘Subversion Polling Log’ option.

7. You will see that Jenkins has detected the changes and automatically created a new build (in this example, Build 6.)

8. If you need to check exactly what has changed in this build, click on the build’s link in the ‘Build History’ box.

9. Click on the ‘Detail’ link to be taken to the ‘Changes Summary’ page.

10. On this page, you will see the list of changes made in this build, including files that have been added, deleted, or modified. You have now successfully set Jenkins to poll your repository!

Jenkins is available for free through uberSVN. Visit http://www.ubersvn.com/ now to download uberSVN. A professional support option for Jenkins is also available.

Using uberAPPS? Have your say on uberAPPS at the official forum!

Jenkins Professional Support Comes to uberSVN

At WANdisco, we are always interested in hearing your feedback, especially when it’s related to our award-winning, open ALM platform, uberSVN. With uberSVN, we’re aiming to give users exactly what they want: the freedom to build their own, customized ALM platform made from their open and closed source components of choice. After listening to your feedback, we are pleased to announce we are now offering a professional support option for Jenkins, the world’s number one open source continuous integration (build) server.

We have been offering Jenkins through uberSVN since last year, giving users the option of downloading a version of Jenkins that comes pre-integrated to work with Subversion. Now, uberSVN users will have the option of adding Jenkins professional support to their existing uberSVN support contract.

At WANdisco, we have plenty of experience providing professional support for Apache Subversion to a global customer base, including many Fortune 500 companies. Now, as a partner of CloudBees – the home of founder Kohsuke Kawaguchi and Enterprise Jenkins by CloudBees – we offer a range of Jenkins support options. Our Jenkins support includes:

  • 24-by-7 worldwide coverage, guaranteeing that Jenkins is working when you need it
  • Email support
  • Named support contacts
  • Online case tracking
  • Access to highly experienced Subversion and Jenkins support staff
  • Up to 1 hour of support SLA, with a Platinum or Platinum Plus package

This is good news for uberSVN customers, who now have even more freedom when building their own, unique ALM experience. uberSVN users can choose from:

  • The completely free Jenkins app.
  • Professional uberSVN support.
  • Professional uberSVN support, with Jenkins support as an extra.

uberSVN is free to download and easy to install, and is available from http://www.ubersvn.com/download Jenkins can be downloaded for free through uberSVN’s integrated app store, alongside professional support for both uberSVN and Jenkins.

Need more information? Check out our Top 10 Reasons to Try uberSVN post, or our step-by-step guide to Getting Started with Jenkins in uberSVN.

Using uberAPPS? Have your say on uberAPPS at the official forum!

Subversion Tip of the Week

Subversion Insider Tips

So, you’ve got to grips with using Subversion in your day-to-day development; you’ve read up on best practices, and even branching and merging is no longer giving you nightmares – but are you taking full advantage of everything Subversion has to offer? In this post, we look at some useful, but frequently overlooked, Subversion features.

Revert Command

The Subversion repository remembers every change that’s made to the files and directories, which is useful when reviewing the history of changes made within your project, but it also allows users to recover older versions of their code.

The ‘svn revert’ command can be used to overwrite any local changes made to the working copy, with the code held in the repository. This includes any property changes, and any scheduling operations that may have been set on the working copy. Note that the revert command replaces all changes made to your working copy – once they are gone, there is no way to recover them; you will lose all the changes made since the last commit.

Reverse Merge

A reverse merge rolls back a change that has already been committed to the repository, and then applies it to the local working copy. A reverse merge can be performed with the following commands:

1) svn merge –dry-run – (optional) displays what the merge will produce.
2) svn merge -r (revision number) – rolls the working copy back to the specified revision. Note that a reverse merge is like any other merge operation, so ‘svn status’ and ‘svn diff’ can be used to inspect and approve the changes.
3) svn commit – the merge command will only change files in the working copy, so remember to commit the changes to the repository.

External Files and Folders

Occasionally, it’s useful to construct a working copy that consists of several different checkouts. To help with this, Subversion supports external definitions, which allow users to map a local directory to the URL of a versioned resource. External definitions are declared with the ‘svn:externals’ property.

Once ‘svn externals’ is set on a versioned directory, everyone who checks out a working copy from that directory, also checks out the definitions, so only one person needs to define the nested working copy checkout per repository.

To edit the externals definition, use the following subcommand:

svn propedit (target)

When anyone runs ‘svn update,’ Subversion will automatically synchronize the checked out items against the changed externals definition. Similarly, when other team members update their working copy, they will automatically receive any changes made to the externals definition.

The ‘svn status’ command can be used to print the status of working copies and directories with ‘svn:externals’ properties, as ‘svn status’ recognizes externals definitions.

WANdisco Celebrate Success of uberSVN ‘Blake’

uberSVN fans may remember that we announced our codenaming strategy for uberSVN last month. For those not already in the know: Apple name their releases after big cats (Mac OS X Snow Leopard, Lion) and Google name their releases after desserts (Honeycomb, Ice Cream Sandwich) but since uberSVN is developed entirely in Sheffield, UK, we decided to show our support for the local area, and name our releases after all our favourite Sheffield pubs.

The current release of uberSVN is codenamed Blake, after the Blake pub in Walkley, Sheffield, and to commemorate the release, we had a great night out at the Blake just before the holiday season. But, after the success of uberSVN Blake (we’ve now had over 50,000 downloads!) we felt we had to do something extra special, so we nipped back to the Blake and presented the owners with a very special, uberSVN plaque, as a “thank you” for letting us use their name.

Check out this photo of Kevin Walke, head of support at WANdisco, presenting the Blake staff with their uberSVN plaque (just before it took pride of place behind the bar!)

We’re looking forward to the next release!

WANdisco Host Apache Meetup for Local Developer Community

This week, core members of the Apache Software Foundation, Greg Stein and Hyrum Wright, have been visiting WANdisco at our offices in Sheffield, UK. To celebrate, we hosted a special, one-off ‘Apache in the Pub’ event at the Rutland Arms, giving the local developer community the opportunity to meet these prominent ASF members, in the local pub!

The event was a great success, with a packed room of developers all debating open source topics: Subversion, Apache, Python, and of course the brand-new Apache Bloodhound project. We even got to hear some of Greg’s tales from his time at Google!

The event attracted much attention on Twitter. Here’s a selection of our favourite tweets from Apache in the Pub attendees:

  • Looking forward to a pint @RutlandArms with @gstein & @hyrumwright of @theasf tonight courtesy of @wandisco & @gistwire
  • @WANdisco @rutlandarms Apache in the Pub was a good event with a great turnout. Big thanks to you both for organising and hosting.
  • Good beer @RutlandArms and interesting people did fix bad day. Met a bunch of new bods from @WANdisco and talked about #bloodhound 🙂
  • @WANdisco @dchetwynd Hope everyone who came had a good time – those who didn’t missed out!

Thank you to our local GIST Foundation, and the ASF, for helping us host this free event for the local developer community. After receiving some great feedback, and being overwhelmed by the full attendance, we’re convinced the local community wants to see more of these sorts of events. If you have any ideas or feedback on community events you would like to see in the local area, please don’t hesitate to leave us a comment at the blog, or alternatively Tweet or email us.

We hope you all had a great time at Apache in the Pub, and we hope to see you at another WANdisco-hosted event soon!

WANdisco Host Apache in the Pub

Fancy an evening in the pub with core members of the Apache Software Foundation? This week, director and former chairman of the Apache Software Foundation, Greg Stein, and Apache Subversion release manager Hyrum Wright, will be paying a visit to WANdisco’s Sheffield office. To celebrate, WANdisco and the Apache Software Foundation, in cooperation with the GIST Foundation, will be hosting a very special, one-off Apache in the Pub event at the Rutland Arms pub in Sheffield, UK, giving the local developer community the opportunity to meet these prominent Apache Software Foundation members, and discuss all things open source, including the new Apache Bloodhound project, Python, and Apache Subversion.

If there’s time, maybe we’ll even hear how Greg launched Google Code, or some of his other war stories from the cutting edge.

This event is completely free, simply visit the Apache in the Pub Eventbrite page. And as an extra bonus, they’ll be a free pint for everyone who arrives on time!

Like WANdisco on Facebook and Win an Amazon Voucher

Fancy winning a $20 Amazon voucher? All this week, if you ‘Like’ the WANdisco Facebook page, not only will you be signing up for all the latest news on Apache Subversion, useful tutorials and our handy Subversion Tip of the Week, but you’ll also be entered into our free prize draw.

One new Facebook fan signing up between January 23rd and January 27th, will be selected at random. Simply head over to our Facebook page now and click ‘Like’ to enter. Good luck!

Subversion Tip of the Week

Resolving Conflicts in Subversion

Merge conflicts may be dreaded by developers, but Apache Subversion has all the tools you need to quickly resolve such conflicts when they do occur. Whenever Subversion warns of a merge conflict, the first step is to run an update on your working copy:

svn update {path}

This could be all that’s needed to sort out the conflict! But, in the worst case scenario where you’ve modified the exact same part of the exact same file as your teammate, Subversion will flag the file as being in ‘conflict’ and it will be down to you to manually resolve the problem.

To resolve the conflict, open the corresponding folder in your working copy. You will see some new versions of the conflicted file:

  • The file with the highest numbered extension is the repository’s most recent file.
  • The file with the lower revision number is your local file.

From here, you can manually merge the changes between the repository’s version and the local version (or simply select one version over the other!) When you have finished, replace the working file with the finished item, and delete the duplicates. You will now be able to successfully complete your commit!

Subversion Tip of the Week

Filtering Log Messages

When you have 40-50 revisions and a couple of projects, finding a particular revision is pretty easy. When you have three years of history, 20 active projects and revisions in the high five or low six digits, locating a specific revision can be an adventure. (And by adventure we’re not talking about a trip to Disneyland, we’re talking about the running out of gas 20 miles from the nearest town in 2 feet of snow, at night, type of adventure.)

First of all, finding a specific revision becomes a lot easier if you have some standards:

  • Always put in log messages. Not just for commits, but for copies, deletes, renames, anytime you are prompted for one.
  • For certain activities, have a defined structure. “Fixed bug #1431”, “Added Feature #5r31a”, “Created Branch”, “Deleted Branch”.
  • Use training, published “Policies and Procedures”, hook scripts and active management to ensure that proper log messages are added.

Luckily in TortoiseSVN you can filter (search) for log messages. In fact, you can search for log messages as well as the text of authors, dates, and paths. But mostly you will search on log messages.

Let’s look at an example of filtering. In the picture below we have a standard of entering the log message “Working on Bug #nnnn” or “Fixed Bug #nnnn” depending on whether the development effort is underway or finished. The first image shows our results, pre-filter and the second picture shows filtering on the bug number “5100”.
Log messages with no filtering.

Filtering on the string “5100”.

But let’s say we want only those revisions with the bug number “5100” but not containing the string “Working”. This would give us the revision where the bug was fixed.

The filter “ 5100 -Working” would look for all messages containing the string “5100” but NOT the string “Working”.

The minus sign (-) means without.

Note: The filter “5100 -WoRkIng“ would generate the same results. Case is ignored.

Other examples of filtering:

  • Sort -Marketing +Finance – searches for strings containing both Sort but not Marketing, or strings which contain Finance.
  • !Sort Report – searches for strings which do not contain both Sort and Report
  • “Finance Reporting” – searches for the literal expression “Finance Reporting”

You can also use regular expressions to limit your searches by selecting this option. An example of a regular expression would be:

  • Market(ing|ers) – which would find messages with Marketing or Marketers.

But that will be covered in another blog.

WANdisco Supports new Apache Bloodhound Project

It’s no secret WANdisco are big fans of open source, so we’re excited to see that the Bloodhound project has taken its first step to becoming a fully-fledged Apache Software Foundation project: Bloodhound has been voted into the Apache Incubator by the Apache community!

The Apache Bloodhound project will provide a software collaboration tool based on the code base of the well-known Trac project, and will include issue tracking, a wiki, and repository browsing. It will further build on Trac by incorporating some of the most popular plugins, to create a more complete distribution than your typical Trac installation. One of the Apache Bloodhound project’s core goals, is to create a strong developer community around the Trac code base in a vendor-neutral location. Trac has already included a potential Bloodhound project on its list of derivatives. At WANdisco, we are excited to get involved in this new project, by sponsoring a number of the initial committers.

Although WANdisco are sponsoring some of the initial committers, one of the major aims of Apache Bloodhound will be to create a vibrant developer community, and any interested committers will be able to contribute to the project. Interested in getting involved? Check out the Bloodhound webpage for more info.