Skip to main content


Showing posts from February, 2011

A small Subversion guide for Git users

A recurring problem for us Git users is that we tend to forget the good old Subversion tricks. We want to do some patch on some old code in a Subversion repo, and suddenly we've got no idea how to work around.

Here's a quick guide:

> git pull
> svn update

> git add new_filesvn add new_file
> git add changed_fileN/A: SVN automatically adds all modifications to the index. If you don't want to commit it, don't change it.
> git commit; git push (you always have to do these together):> svn commit
> git revert [SHA]
> svn merge -c -[R] .

> git branch branch_name
> svn copy url_to_project/trunk url_to_project/branches/branch_name

> git tag tag_name
> svn copy url_to_project/trunk url_to_project/tags/tag_name

> git checkout branch_name
> svn switch url_to_project/branches/branch_name/

> git merge branch 
svn merge -r[start]:[end] url_to_project/branches/branch_name .
(Note that you have to keep track of at which revision you made the branch, and t…


Kent Beck wrote a small chapter about Communities in his book Extreme Programming Explained: Embrace Change (2nd ed):
Participate in communities, local and global. Look for communities that encourage you to be your best self. If you can't find such a community, start one yourself. If you are wrestling with difficult questions, you are not alone. As a community we can accomplish more than we ever could in isolation. When I lived in Oslo, I was a member of the local XP-meetup group. It was awesome. In the beginning, I was still a CS student, and I felt privileged I could attend these meetings. These experienced people were dropping serious knowledge about how to work and develop software in practice.

It was so refreshing compared to the artificial subjects at university, and it just made more sense. At the same time, the speakers were so humble, you could ask them anything, and they would try to identify with you, draw parallells based on experience, tell stories..

Over the years, th…

Sonatype and Hudson/Jenkins: An Analysis

I'm dare say I'm a seasoned Hudson user (admin) and proponent. For over five years I've been introducing different kinds of CI at whichever place I worked at. When Hudson entered my radar, this work became a lot easier. I'm also a heavy Maven user, and Nexus did for Maven repositories what Hudson did for CI.

The Plot
Over recent weeks, the community around Hudson has been shaken by a fork: The main developers (Koshuke and crew) have renamed Hudson to Jenkins, while Oracle have kept on developing Hudson in partnership with Sonatype. Here's a simple illustration of what happened:

These are my pure external speculations about what has happened recently in the forking process, with regards to Sonatype's involvement in particular.

So who is running this show?
I noticed that Sonatype (usually personified by Jason) have gotten their fingers pretty deeply into the Hudson infrastructure already:

Like this tweet noted, it appears they are controlling Hudson's Twitter acc…

Google Guava r08 is released

A few days ago, Google Guava r08 was released.
"This project contains several of Google's core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, basic string processing, I/O, etc."
I had a little look through the API changes to find some neat new details, and put together a couple of JUnit tests that show them by example here.

That whole GitHub project is a Guava showcase, so if you can think of some more examples that should be in there, please fork! Especially the IO, Net,  and Concurrency bits could need some examples.

I've also taken my old blogposts about Google Guava and ported them to After noting this, the Guava guys honored the effort by linking the page from the Guava homepage, which gave me quite the traffic bump! Luckily, my pages are all hosted on Google servers, so it's their own bandwidth bill ;)