C’est une question que je me suis déjà posé plusieurs fois quand je vois les gurus de la communauté Ruby On Rails passer un par un à Git.

Tout d’abord qu’est-ce que Git : Git est un gestionnaire de code source, il a été créé à la base par Linus Torvalds afin de gérer le développement du noyau Linux.

Alors les avantages par rapport à subversion que j’ai pu noter sont :

  1. la facilité de créer des branches parallèles au “développement normal” d’un projet, permettant ainsi de tester des choses experimentales où des migrations d’application vers une nouvelles version de framework (comme Rails 2)
  2. La possibilité de commiter ses modifications off-line et de pousser par la suite sur le référentiel en ligne

Je vais passer l’installation de Git sur les différents OS. Je laisse Google vous aider sur ce coup là.

Ce qui est intéressant avec Git, c’est que l’on peut l’utiliser en complément de Subversion.

C’est à dire utiliser Git sur sa machine locale pour profiter des commits locals et la création de branches et de pousser ses modifs ultérieurement sur le référentiel subversion.

Alors, allons y. Tout d’abord, configurons Git sur notre machine pour lui indiquer le nom et l’email qui sera renseigné dans nos commits :

$ git config --global user.name=Mathieu Fosse
$ git config --global user.email=mathieu.fosse@gmail.com

Ensuite nous allons indiquer à Git que l’on veut activer la couleur les commandes (status, diff et branch) histoire que ça soit un peu plus sympa !

$ git config --global color.status=auto
$ git config --global color.diff=auto
$ git config --global color.branch=auto

Bon maintenant on peut récupérer un projet existant sous subversion et utiliser Git avec. Démonstration :

Récupération du projet sous subversion et transformation au format Git :

$ git-svn clone http://svn.domain.com/svn/monprojet/trunk monprojet

Voilà notre projet peut être maintenant géré à l’aide de Git et pousser les modifications ensuite sur le référentiel subversion.

Quelques commandes pour vous aidez :

Afficher le statut des fichiers :
$ git status

Commiter ses modifs en locals :

$ git commit -a -m "Ajout de modifications" 

Afficher la branche sur laquelle on se trouve :

$ git branch

Créer une nouvelle branche et se lier à celle-ci :

$ git checkout -b rails2_migration

Créer une branche sans se lier à celle-ci :

$ git branch master

Afficher les logs de la branche courante :

$ git log

Changer de branche (ici master la branche par défaut) :

$ git checkout master

Enfin, une fois que vos modifs vous semble aboutis vous pouvez les pousser sur le référentiel subversion à l’aide de la commande suivante :

$ git-svn dcommit

Et si au contraire, vous voulez récupérer des modications provenant du référentiel subversion, il vous faut exécuter cette commande :

$ git-svn fetch

J’essairaie dans un futur proche de continuer ce billet sur Git pour qu’il soit plus complet.