Base-Art / Bringing RSS to SVN

For a while I have wanted to be able to build RSS feeds off of the commit activity in a Subversion repository in order to publish the latest commits to an internal intranet site. I found a blog article called Base-Art / Bringing RSS to SVN this morning that makes this possible.

This is yet another note to myself to check it out and see if it fits what was in my head. It may also be an indirect note to Keith to check it out for me. 😉

From what the site says, this allows you to build the RSS feed in a post commit hook, in addition to building a separate HTML file for browsing independently from RSS, and does it all incrementally.

100% Pure Java Subversion Client Libraries

As a note to myself, I have to look at JavaSVN when I get a chance. Its a pure Java implementation of a Subversion client.

Some things I have to research:

  • What would it take to integrate this into CruiseControl to eliminate the need for the Subversion client being installed on the box?
  • What would it take to integrate this into Apache Ant for the reason listed above.
  • Finally, has anyone actually already done the above two things?

I’ll post the answers back here when I find out.

Trac: Integrated SCM and Project Management

This post is more a reminder to myself than anything else. As I was browsing the wordpress plugin repository I saw they are using version 0.8 of a product called Trac that integrates with Subversion and provides basic project management and defect tracking.

The site says the software does the following:

  • An integrated system for managing software projects
  • An enhanced wiki
  • A flexible web-based issue tracker
  • An interface to the Subversion revision control system

This looks really interesting and I need to remember to check it out. I tried to download it this morning, but it seems the download area of their site is down.

Update: Edgewall.com is not down. For some reason, FireFox was giving me zero reply error. When I went to a Windows machine with IE, I was able to download the software.

Pragmatic Version Control with Subversion Book Released

Pragmatic Version Control Using SubversionAn annoucement went to the Subversion mailing list yesterday that the new book in the Pragmatic Programmer Series, Pragmatic Version Control Using Subversion is now available.
I’ll definitely be picking this one up, as I am a big fan of the “pragmatic” series of books. Once I receive it and read it, I will post my impressions of the book.

More information is available at pragmaticprogrammer.com. As an FYI Amazon has this available, currently, for preorder only.

Practical Subversion by Garrett Rooney

Practical SubversionI received an advanced copy of Practical Subversion by Garrett Rooney and read through it over the weekend. Mr. Rooney is a contributor to the Subversion project and has authored the latest book about the software.

Before I actually talk about the book, I think it would be helpful to point out that while I did receive an advanced electronic copy of the book in order to review it (probably due to other postings related to Subversion on this site) I am not being paid to review it. My interests in agreeing to read the book and write about it are solely to point out valuable resources to help people looking to implement Subversion in their environments, not to get paid. As I’ve written before in previous postings, version control and software asset management is an area that I see missing in many corporate software development environments (and worse than that, in many developers skill sets) and an area that I find very important from both a quality and team productivity perspective. My interests lie in highlighting this and pointing out books and tools that help people implement these tools in their environments.

Now with that out of the way, let’s talk about the book. In many respects, this book is a lot like the Pragmatic Programmer series of books. The book starts with some history of source control in general and source control systems like CVS and Perforce. He then gives you a brief history of the Subversion project and then spends the rest of the book walking you through using the tool.

This is a great book for beginners and a good reference for those of us who have used it for a while. The subjects covered include “A Crash Course in Subversion”, which is a 46 or so page detailed description of the Subversion commands with scenarios he walks you through, including setting up a repository, checking out a workarea, branching, merging, switching your workarea to another branch, committing and setting properties on files. There are also chapters on repository administration, repository migration, and advanced Apache integration (a chapter that while I knew most of the things covered, I found a few tidbits I didn’t know and am really glad that someone has finally covered this subject from a Subversion Administrator perspective).

Practical Subversion also has a chapter dedicated to Subversion Best Practices. This chapter outlines some of the recommended best practices for version control in general, but in the context of the Subversion system. It covers subjects such as the use of vendor branches to manage third party source code, using branches, rolling releases, and using test suites to test your code. This is a very good chapter of practical advice to help one manage the concurrent development of software using a source control system.

The section on branching best practices has some good advice but recommends the frequent merging of the trunk over to branches in order to ensure you are developing and testing the change in the context of the work going on in the rest of the project. While this is good advice, it also introduces other problems which aren’t covered. Subversion does not currently have merge tracking support, and in many instances in which you do frequent merges from the trunk to the branch in real life, you will run into conflicts when merging the branch changes back to the trunk where changes appear in both the trunk and the branch. In practical use, we have found that in order to do this effectively, the developer has to keep track of the revisions in his branch that resulted from trunk merges and merge around them when merging back to the trunk in order to effectively implement this best practice. Once the tool supports merge tracking this shouldn’t be an issue and is definitely a practice that should be followed. If you have dedicated staff to keep track of this stuff, this is the best way to do it. Your average developer, however, does not really want to learn enough about the tool to do all of this record keeping and you may hear frequent complaints about the extra work involved when doing frequent merges from the trunk to your development branches in real life.

Chapter 7 of the book cover topics such as integrating Subversion with existing tools, such as the bash shell, emacs and Ant, along with using Subversion on the OS X platform. It also covers other tools available for use with Subversion such as ViewCVS and SVN::Web. Finally plugins for Eclipse and Visual Studio .NET are briefly covered. This is a great addition to the book and something that I wish I had had during my initial planning of my Subversion rollout.

Finally, Chapter 8 covers the use of the Subversion API. This chapter starts off covering the use of the Apache Portable Runtime libraries relevant to Subversion and then covers the client, repository access and file system APIs. This chapter in and of itself is worth the price of admission in my opinion. This chapter is mainly for those who want to take advantage of the application libraries that the Subversion tools are written around and write their own tools around the Subversion tool. The Subversion team has done a great job of documenting the Subversion system as a whole, but the API documentation is sorely lacking and this chapter gives a really good high level overview of the API’s and how to use them.

Overall, I really liked the book. As I said earlier, this book reminded me a lot of “Pragmatic” series of books. It really is “Practical Subversion”, catering to both beginning and advanced users alike. The book will definitely be a great addition to my library and I recommend it for those who want to implement version control quickly in their environments. This book does not replace the Version Control with Subversion book, but it’s a great addition to it.

The only thing missing from this book that would make it completely indispensable is a chapter on setting up an automated build system with Subversion, using tools like CruiseControl. This small thing aside, there really isn’t anything missing from this book to get your development group up and running on Subversion.

Subversion 1.1.1 released.

The 1.1.1 version of Subversion has been released. This release fixes the performance problems introduced between rc3 and 1.1 along with some other fixes. The official announcement with a detailed list of changes can be found here.

The distribution tarballs for this release can be found by following the links below:

http://subversion.tigris.org/tarballs/subversion-1.1.1.tar.gz
http://subversion.tigris.org/tarballs/subversion-1.1.1.tar.bz2
http://subversion.tigris.org/tarballs/subversion-1.1.1.zip

Subversion 1.0.9 released.

Subversion 1.0.9 has been released. This version fixes a performance issue inadvertantly introduced in 1.0.8. The team is recommending that you upgrade to 1.0.9.

The 1.1.0 release apparently suffers from the same performance issue and a 1.1.1 release is in the works.

Subversion can be found at http://subversion.tigris.org

The official announcement for this release can be found here.

Subversion 1.0.7 released.

For those who are not mucking about with the 1.1 beta, Subversion 1.0.7 has been released. The official announcement can be found here.

The distribution archives can be downloaded from the following:

Unix Source Distributions
http://subversion.tigris.org/tarballs/subversion-1.0.7.tar.gz
http://subversion.tigris.org/tarballs/subversion-1.0.7.tar.bz2
http://subversion.tigris.org/tarballs/subversion-1.0.7.zip

Windows Binary Distribution
There is no official Windows binary available yet. I will update this entry when it is released.