Skip to main content

Posts

Git+SVN at the Java User Group in Essen (ruhrjug)

Update: There's now a Xing signup for the event:  https://www.xing.com/events/living-with-git-and-subversion-parallel-710010 I will be heading up to Essen next month to present Git+SVN at the ruhrjug event . The arrangers ( Infaktum ) are also behind GearConf , where I presented on the same topic last year . The event takes place on 14th of April, and starts at 18:00 in the Glaspavillon Campus Essen: View Larger Map If you want to know the tricks of living with Git and Subversion in parallel , be there! I'll be showing off all the steps, from getting started with git-svn, through the obligatory Git-Subversion mirror, to the final-migration-away-from-SVN. Hopefully there'll be time for showing off stuff I didn't get to at GearConf, as well as some good discussion. Oh, by the way, if you've got any reference cases where you are also using git-svn, I would love to hear about it. I recently noticed that Gnu Cash  are using it, and it would make me happy to ...

The Dream of a Bi-directional Git-SVN mirror

This post is part of  a series on Git and Subversion . To see all the related posts, screencasts and other resources, please  click here .  I just got an email asking me how one can set up a bi-directional Git-SVN mirror. It ended up being quite a long answer, so I'll post it here for the benefit of other Git-SVN readers with the same idea. As you may know, I'm a proponent of my own Git-SVN setup . I remember trying to go down the path of a bi-directional repository, but always ran into problems. Here is how it could work: However nice this would be to have, it can be very hard to achieve in practice: Git-svn requires working in a non-bare repository, so pushing to it is by default refused. You can work around this by doing this in the target sync repo: git config receive.denyCurrentBranch ignore You also have to automatically perform a git reset --hard in the syncing repo after each push (by some git hook?), because the work-dir is c...

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_file svn add new_file > git add changed_file N/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 ...

XP-Meetups

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

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

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 tfnico.com/presentations/guava . 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 ;)

Eclipse Color Themes

I think it's a shame how StackOverflow is jammed with old Q&A about how to do custom color themes for Eclipse. Thanks to  Felix  and his buddy Roger Dudler , there is now a far better way: Eclipse Color Theme plugin  and  www.eclipsecolorthemes.org . (Picture from  http://www.rogerdudler.com/?p=509 )

Certified Scrum Master?

I think the dust has begun to settle around the certification debate . It seems to be that we've ended up at a kind of " Yes, CSM certification is silly, but it's a necessary evil. " attitude. I don't like this. Judging by the membership-ID on my ScrumAlliance profile page, I reckon I was one of the first few thousands to take the certification. I openly blogged about it at the time, I dare say with a hint of skepticism, and since then I've never really flaunted it (well, maybe now I am). I just saw a nice analogy for the CSM, paraphrasing Jon Kern : To filter out potential employees by checking their certification, is like seeking out race-car drivers by checking if they have a driver's license. I don't want to support this unwarranted prestige of being a CSM any more, so I've taken the notion of CSM out of my résumé , and I recommend everyone else to do the same. If I'm hiring, and you flag your CSM title, I'll rank it as brag...

Made a Google Guava page

Just a quick post to announce my new Google Guava page. My Guava blog post has gotten a relatively large amount of traffic, but the list of resources have gone a bit stale. In order to make the resources a bit more "time-agnostic", I've cleaned it up a little, and made it into it's own page: http://www.tfnico.com/presentations/google-guava

Maven build helper POMs

A typical misconception in Maven is that if you want to build a project in a special way, or parameterize it somehow, profiles are the thing for you. My opinion is that.. Profiles are POM smell. While I know they have their uses, I have abused profiles heavily in the past, and seen others do this too. What might start off as a simple little trick to get some desired build eventually leads to: One profile for each testing category (unit, database, web-tests, etc) (Hint: Use a test framework that supports grouping ) One profile for each environment/stage configuration (testing, live, etc) (Hint: Use a tool that supports  stage-aware configuration ) One profile for each artifact assembly (exclude module X when deploying in certain environments) The POM ends up awfully complicated, you get confusion around what kind of artifact is deployed where, and people start hating Maven because they forget -P parameters when they build, and end up rebuilding the whole project to change...

Git-SVN Mirror for multiple branches

This post is part of  a series on Git and Subversion . To see all the related posts, screencasts and other resources, please  click here .  This extends the posts where I explained how to set up a git-svn mirror for a single directory. NOTE: If you just want to use Git against a SVN repo on your own, stop reading ,now, and stick to the git-svn basics. However, if you want a setup where you can share a Git repository with colleagues and friends while still interfacing with Subversion, keep reading. I'll show how to set up a git-svn mirror for a standard Subversion project with trunk , branches and tags . It's a bit like the single directory mirror, but in order to keep all branches in sync, it's a bit more fiddling. The good part is that this setup enables us to cherry-pick commits from one branch to the other. This is slightly smoother than using svn merge . First of all, let's repeat how our Subversion and Git-repositories look physically (roughly the sa...

Repeating Agile in a Year at CologneJUG next week

Next Monday I'm doing the Agile in a Year talk for the Java User Group in Cologne ( JUGCologne ). Unfortunately, the  the Xing event is already booked out, but for those who'll miss out, there's always the video recording of the last time I did the talk at FrOSCon . Oliver Gierke will be presenting Hades  afterwards. Should be good stuff. He held a great presentation right after me at GearConf . His topic (Eclipse Mylyn) was more soft, while mine was very techy. This time we've switched around :)

Geek and Poke versus Subversion

I noticed that Geek and Poke has done a fair share of SVN-bashing over the last months. These are awesome, hilarious, and ring so true to my experience with SVN.  I've collected them here and written a few thoughts on how it's different with a distributed alternative like Git. 1. Being a Coder Made Easy Typical syndrome of first-man-to-the-mill syndrome. The typical use-case is to commit a big fat refactoring early in the morning, before anyone has a chance to get in your way. With Git , these situations do not occur so often. Big commits are made in branches where they do not disturb the workflow of others. Branches do have to get merged back at some point, and conflicts dealt with, but this happens in a planned and orderly fashion. There is no race to merge branch first. 2.  Simply Explained - SVN Guinea Pig Oh, so typical. Do not update the code when it's broken centrally. This problem is magnified in the lack of a continuous integration system or a fast build. ...

Pumping blog traffic with DZone, etc.

This is microscopic blog, readership-wise. Since I started tracking traffic in June 2006, there's been 15,514 visits. Each blog entry usually gets around 100-300 views, with a few odd cases booming into the thousands, like my Spring TestContext post with 2,378 views and counting. The thing that made that post so popular was that it got ' DZoned ', and is still the 3rd result on Google  on the subject to this very day. By any standard of the Internet, my blog is tiny, but I don't mind, cause for me it's just my voice in this "tribe" of these 300 like-minded people, typically Java-enthusiasts with a sense of agile in them. Many of them are old friends and colleagues, and some are new people that I sometimes meet at user-groups and conferences. The blog is part of my dialog with them, just like with my twitter account  (number of followers is also right under 300). Recently, I devoted quite a few evenings putting together my first ever screencasts , on ...

GearConf 2010 impressions

This week, me and a couple of colleagues attended GearConf 2010 in Düsseldorf. I also did a talk there about Git+SVN . Figured I'd write a couple of impressions from the conference. First of all, there aren't enough conferences around here aimed at our profession. There must be tens of thousands of people working with software- and IT in NRW , and this amount of people deserve a bigger community scene than a few JUGs. GearConf is a great event in this landscape. Obviously, it's a lot about gear, tools we use for software development. It's also language agnostic, so there are talks about .Net and Java and others as well. Finally, this year attracted many talks about agile practices, like Scrum and Kanban, and specific agile techniques. Day one On day one, we started off by attending the "Agile refactoring" talk by André Neubauer ( @devpg ) and Oliver Schmitz-Hennemann ( @oschmi ), from ImmobilienScout24.de . It was a fascinating talk, with lots of insigh...