As you might have noticed if you follow me on Twitter (which you should do as I make a lot of small announcements there), or if you monitor the Subversion activity closely, the Symfony 2 code is now hosted on Git.

First of all, let's make it clear right from the start:

The symfony 1.x branches won't be migrated to Git, ever. This post is only talking about Symfony 2, which is obviously not yet released.

So, from now on, all the development activity for Symfony 2 will take place on the new Git repository.

What is Git?

Git is a free distributed revision control system. As explained on Wikipedia, Git was initially designed and developed by Linus Torvalds for Linux kernel development.

Since then, Git has been embraced by a lot of big projects like Ruby on Rails; and recently more and more PHP projects have also made the switch (like PHPUnit or CakePHP for instance).

Apart from being fast as hell, it is also a brand new way of thinking and coding. Being distributed means that when you get a copy of a project (a "clone" in Git speak), you retrieve locally a full-fledged repository with complete history. It allows you to easily work offline for instance.

The other big advantage of Git for a project like Symfony is the ease of accepting contribution from our users. Instead of submitting patches (which you can also do), you can "fork" the project, do some work and ask a member of the core team to "pull" your work. It dramatically lowers the barrier of entry for contributing to the Symfony core. You can also easily maintain your own version of Symfony, and merge the changes easily from the master branch (easy branching and merging is yet another big advantage of Git compared to Subversion).

Symfony on Git

Git being distributed by nature, there is no need for a central repository. That being said, we host an official Git repository on Github. Nowadays, Github is probably the easiest way to participate in the collaboration loop. Everything can be done from their website with some clicks of the mouse (from forking the code to request a pull).

You can also fork one of the core team member repository, like mine, if you want to live on the edge.

Learn to love Git

Many people think that Git is too hard to understand and learn. That's not really true. Of course, you need some help to get started and more important to grasp the main concepts behind Git.

But even if finding documentation on the Internet about Git is not that difficult, it's very difficult to find good tutorials for beginners. I was learning Git the hard way, being frustrated more than once, until I read the excellent Pro Git book by Scott Chacon. This book is the best documentation I have ever read on Git and teach you everything you need to know to master Git in a matter of hours. You can buy the printed book or read it online for free as it is released under the GFDL license!

The Subversion Mirror

Last but not the least, if you don't want to switch to Git or if you cannot afford it because of some corporate policy, be reassured, we won't abandon you. As a user of Symfony, you can still use Subversion as the main Git repository is mirrored on the Symfony Subversion repository as well under the 2.0 branch.