Hi guys,

We been talking a while on this on IRC,
so now, like many other JBoss projects (hibernate, infinispan, ...),
we are moving to git on github.

- What do you need to do? => MUST READ, deadline Thursday 16-DEC-2010
- Why are we moving to git?
- What will you get by moving to git?

What do you need to do?
===============

If you are a drools committer and wish to continue committing after next Saturday 18-DEC-2010.
1) Install git for your OS
  1a) Linux: Install the package git (and optionally gitk)
    $ sudo apt-get install git
    $ sudo apt-get install gitk
  1b) Windows: Use the icon on the right on http://git-scm.com
  1c) Mac OSX: Use the icon on the right on http://git-scm.com (and optionally install gitx from http://gitx.frim.nl/ )
2) Install git in your IDE
  2b) Eclipse: Install the EGit plugin. Menu Help, menu item Install new software. Work with update site Helios, open Tree item Collaboration, tree item Eclipse EGit.
  2c) IntelliJ: Enable the git plugin (if not enabled): menu file, menu item Other Settings, menu item Configure plugins.
3) Get a Github account: https://github.com/signup/free
4) Configure git correctly (Github also tells you this):
  $ git --version
  git version 1.7.1
  $ git config --global user.name myUsername
  $ git config --global user.email myAccount@gmail.com
  $ git config --global -l
  user.name=ge0ffrey
  user.email=ge0ffrey.spam@...
5) Mail me these details before next Thursday 16-DEC-2010
 (to gds.geoffrey.de.smet at gmail dot com or ge0ffrey.spam at gmail dot com )
 if you are a drools committer (which I 'll verify):
 5a) Your Github username
 5b) Your JBoss Subversion username
 5c) Your full name
 5d) Your e-mail address (used on github). Note: you can register more than 1 e-mail address on GitHub.
6) Push your public key to github:
  Follow the instructions on http://github.com/guides/providing-your-ssh-key

Do NOT commit changes to subversion after Friday evening (so after 8:00 GMT Saturday 18-DEC-2010).
The svn to git migration will probably take hours. Sorry in advance for the hindrance.
I 'll send a mail to the drools dev list when svn commits are forbidden and also when git commits are open.
More info about the git URL and switching tips & tricks will follow soon.

Why are we moving to git?
=================

Subversion has been great (and much better than CVS), but git's just better.

How my life improved since last month when I used svn. by Emmanuel Bernard (Hibernate annotations etc lead)
  http://blog.emmanuelbernard.com/2010/05/git-how-my-life-has-improved-since-last-month-when-i-used-svn/

Why is git better than subversion?
  http://whygitisbetterthanx.com/#svn

What will you get by moving to git?
======================

- Less merge conflicts and therefor easier branching

- Pull requests

Pull requests are really cool. It's like patches on steroids.
Ever been in a situation where you made a big, risky change?
You wanted to commit it (to get it off your plate, it's done),
but you'd like to get it peer reviewed by colleague X (because it's risky).
But a patch file didn't work because:
- A patch file can't handle binary files
- A patch file probably results in a merge conflict on applying (so X ignores them)
- Applying a patch file needs to be done on the correct directory
- A patch file will forget I am the author and will make X the author
- A patch file does not allow for a conversation when X wants me to change something before committing it
With git, just commit it as a pull request. Take a look at the pull requests (with comments!) on hibernate-core:
 https://github.com/hibernate/hibernate-core/pulls

- Multitasking in isolation
You work on a big improvement but you stumble up an existing bug (in the same file(s)).
You want to fix the bug, the unfinished changes of the big improvement break the build.
And - even worse - the big improvement changes break because of the existing bug.
Read "Multitasking in isolation" on
  http://blog.emmanuelbernard.com/2010/05/git-how-my-life-has-improved-since-last-month-when-i-used-svn/
-- 
With kind regards,
Geoffrey De Smet