Tag Archive for 'Open Source'

Subversion Tip of the Week

The Undo Button!

In the world of software development, client requirements change and new features can introduce more bugs than they fix – sometimes, you just need an ‘undo’ button! Thankfully, Apache Subversion remembers every change made to its files and directories, so you can roll back to a revision before it all went wrong! There are several methods for reverting to a previous version:

1) svn revert {filename} - this command overrides any local changes made to the working copy, with the code in the repository.

To run this command in TortoiseSVN, select ‘Revert…’ from the TortoiseSVN menu.

You will then be able to specify which changes you wish to implement. In this example, we are re-adding the ‘Help file.’

2) svn merge -r {revision number} – this command performs a reverse merge by rolling back to a change that has already been committed to the repository, and then applying it to the local working copy.
3) Alternatively, it is possible to simply delete your working copy and then checkout a fresh working copy from the repository.

Extending Jenkins with uberSVN

Installing Jenkins is made easy with our free, open ALM platform for Apache Subversion, uberSVN. But when installed through uberSVN, your Jenkins installation contains only the bare minimum; at some point you will want to extend your uberSVN and Jenkins installation with additional plugins. Thankfully, this is made easy with uberSVN, as any number of new plugins can be added without ever leaving your installation.

Start by going to the ‘Jenkins’ tab, followed by the ‘Manage Jenkins’ option on the left side of the screen, and finally selecting the ‘Manage Plugins’ link.

From here, click on the ‘Available’ tab, which will bring up a list of all the plugins you can add to Jenkins.

Scroll down to see the list of available plugins. If you need some more information on a particular plugin, clicking on the name of the plugin will take you to a product page where you can browse all the relevant information about the plugin in question, including the changelog, maintainers, and the date of the most current release.

If you wish to install the plugin, go back to the ‘Available’ page and select the tickbox on the left. When you have finished selecting plugins to install, scroll to the bottom of the screen and hit the ‘Install’ button.

The plugin will now be downloaded. Note that Jenkins will need to be restarted for these changes to take effect.

Once you have restarted Jenkins, go to the ‘Installed’ tab in the ‘Manage Plugins’ screen. You will see that the plugin you have just downloaded has been added to the Installed list.

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!

Apache Subversion 1.7.3 Released

The first Apache Subversion release of 2012 is now available! Subversion 1.7.3 builds on the long-awaited enhancements of the recent Subversion 1.7 release, by introducing even more improvements. Subversion 1.7.3 improves the SASL error messages, allows committing the result of some copy operations, and fixes a source of possible FSFS corruption.

More information on what’s new and noteworthy in this release, is available at the Changes file. The latest binaries can be downloaded for free from the WANdisco website. As ever, our 1.7.3 binaries undergo the same rigorous quality assurance process as our Enterprise Subversion products.

Congratulations to Apache Subversion’s community of developers, contributors and users, on another great release!

Subversion Tip of the Week

Moving a Subversion Repository

Need to move your Apache Subversion repository? In Subversion, the recommended cause of action is to collect all of the data contained within your repository into a single, portable dump file, and then load the data from the dump file into a new repository. To create the dump file, either run:

svnadmin dump

Or, specify a particular revision to dump, or a range of revisions:

svnadmin dump myrepos –revision

Once you have dumped the data from the original repository, you will need to load the data from the dump file into your new repository. To load the dump file, run the following command in the new location:

svnadmin load {REPOS_PATH}

All your data will now be available in the new repository!

It’s useful to keep in mind that dump files are typically larger than the original repository. This can cause the shell to timeout when loading a dump file into a new repository. If this occurs, you can change the bash shell timeout to load indefinitely, with the following command:

export TMOUT =0

Subversion Tip of the Week

Recovering Deleted Items

If you delete an item from your Apache Subversion repository and need to recover it at a later date, a useful tip is to locate the desired file in a revision before it was removed, and copy it back into the repository. The first step, is to run a search in the directory that used to contain the deleted item:

svn log -verbose

This will list all of the changed items in each revision, allowing you to pinpoint the revision where you deleted the file.

Now you have located the file, you can perform a reverse merge, which will re-add the desired file to your working copy:

svn merge {revision number}

Perform a commit, and the file will once again exist in the repository. Alternatively, the ‘svn copy’ command can be used, along with the revision number you located earlier:

svn copy {revision number}

WANdisco’s January Roundup

At WANdisco HQ we’re staring 2012 as we mean to go on: with a string of announcements and releases! Firstly, we are excited to announce two great new additions to uberSVN and uberAPPS: professional support for the Jenkins continuous integration server, and crowdsourcing functionality from the world’s largest marketplace for software testing services: uTest.

Just before the holiday season, the Apache Incubator gained a new addition, with Bloodhound being voted into the incubator. WANdisco are sponsoring some of the initial Bloodhound committers, so we’re excited to see Bloodhound taking its first steps to becoming a fully-fledged Apache project. Want to get involved? Head over to the Apache Bloodhound incubator page now, for more info.

Also this month, team WANdisco had a great night at the Sheffield Business Awards, where we were shortlisted for the Digital Industries Award. As a Sheffield-based company, it was an honour for our Made In Sheffield product, uberSVN, to be shortlisted for another prestigious award from our own city. We’d like to thank the Sheffield Chamber of Commerce for putting on such a fantastic awards show, and for award sponsors Highlander for shortlisting WANdisco.

Some of the core developers of Apache Subversion also paid a visit to WANdisco’s Sheffield office this month. To celebrate, we hosted a one off, free ‘Apache in the Pub’ event for the local software developer community. The event featured talks by Subversion’s release manager Hyrum Wright, and Greg Stein, director and former chairman of the Apache Software Foundation, where they covered everything from Apache Bloodhound, to Python, and even Greg Stein’s experiences at Google. Thank you to the Apache Software Foundation and our local GIST Foundation, for helping us out with this great event.

Finally, to celebrate the success of uberSVN ‘Blake,’ we decided a return trip to the Blake pub in Walkley, Sheffield, was in order. We presented the Blake’s staff with a special uberSVN plaque, so they never forget they have award-winning software named after their pub.

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 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!

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!