Date: September 29, 2007 7:40:42 PM CEDT
Subject: An Experiment with GIT
Hi,
For anyone who wants to make changes to Maven but doesn't have access I am going to setup a GIT repository to try and enable some distributed development. After using GIT for about a week I'm having a hard time using SVN but obviously we're not going to be switching anytime soon.
But for anyone who has patches or wants to try and work with me to get changes in I am going to try this method of publishing Maven as a GIT repository which will allow anyone to clone the repository and work on any changes you like in a controlled way. Once you clone you can commit changes to your own copy of Maven and do whatever you like. Then in order for me to see your changes I can simply pull from your originally cloned repository to a branch on my side and merge. Merging is sooooooo easy with GIT. So easy in fact that it makes you wonder how SVN got it so wrong and makes it so painful compared to GIT.
This is the model that the Linux kernel uses where anyone has a real copy of the repository, they work as they like, creating branches for features of what have you.
I am trying this with Oleg Gusakov who has many ideas and is helping me do some experiments with the artifact resolution system. But anyone else who is interested in trying just let me know. This document is the most helpful:
And a little collection of things I have read about GIT:
It is so damn fast it is unbelievable. With the visual tool that comes with it you can see the entire history of the project in a few minutes. It is very, very cool. I simply cannot believe how easy it is to merge bits from all over the place. My hope is that this method being truly distributed means that people can work on their branches in a way that's natural and we remove the immense tedium working with patches. If you have something good, it's now very easy for me to pull a branch from you and try it. If that branch works it then takes me a second to merge it. I test and them push back to subversion using the git-svn bridge.
In the short term I really only want to try with a few people but if you're keen, want to learn about GIT (which I highly, highly recommend) then I will take your patches. I think any developer here and anyone who has ever tried to contribute changes sees that the JIRA+patch model is highly unworkable and bordering on completely useless. JIRA might be fine to raise the issue but with a reference to a GIT repository to pull from it will make life infinitely easier. People who are not committers can work with people that are in a way that resembles everyon being part of the team. Dealing with patches just sucks ass and as a result we don't look at them nearly as often as we should so I hope this can become a model that enables people to contribute in a more effective way. I'm going to try this with Oleg but I am highly hopeful. I will help anyone who wants to try this as I see this as a way to truly collaborate with the community. Down with JIRA+patches! All hail JIRA+GIT! :-)
Thanks,
Jason