Passer de SVN à Git

Ce post a pour objectif de présenter les fonctionnalités du
logiciel de gestion de versions Git (http://git-scm.com/)
en assumant que SVN est connu du lecteur. Aucune commande Git ne sera présentée
ici, seulement des fonctionnalités et des outils.


Je ne sais pas si cela vous
fera passer à Git, mais si cela peut attiser votre curiosité et vous pousser à
essayer Git tant mieux !

Avantages de git par rapport à SVN

Plus rapide

La plupart des opérations sous Git sont locales
et ne nécessitent pas d'interroger le serveur.

Possibilité de travailler
offline

Le repo étant copié en local, il est possible de
réaliser des commits, merger des branches, créer des tags (et d'autres choses encore)
sans avoir de connexion avec un serveur distant. Très utile pour les personnes
n'ayant pas toujours accès à une connexion internet.

Git suit automatiquement
les renommages/suppressions de fichier

Bien qu'il existe des moyens de le faire
explicitement dans la plupart des cas, Git comprend très bien ces changements.

La granularité des commits
est plus fine

Il n'est pas nécessaire de contacter un serveur
distant pour committer, on est plus souvent incité à réaliser de petits commits
correspondant à une et une seule fonctionnalité. Selon les outils, il est assez
facile de committer seulement une partie d'un fichier puis de committer l'autre
partie lors d'un autre commit.

Faire des branches, c'est
facile

Créer une branche sous Git ne coûte pas
grand-chose, il ne recrée pas une arborescence dans le système de fichier. Ceci
a pour conséquence de ne rien coûter en termes d'espace disque et de temps sur
de gros projets.

Moins de conflits lors des
merges

Grâce à son bon suivi des modifications, Git est
capable de résoudre de nombreux changements sur un même fichier de manière
autonome. De plus, lorsqu'on réalise un merge, on peut tester en local que tout
va bien (le projet compile toujours, les tests unitaires sont tous bien passés,
…). Lorsqu'on s'est trompé dans son merge, il est possible de recommencer ou de
corriger en local jusqu'à ce que ce soit correct pour finalement envoyer le
merge réussi sur le serveur distant.

Il y a d'autres avantages à
Git, j'ai énuméré ce qui est communément admis et qui me passait par la tête.

Désavantages de git

Complexité ajoutée par le
fait que ce soit décentralisé

Plusieurs façons de créer un repository, le fait
de faire un commit puis de devoir pusher pour qu'un changement soit visible au
reste de l'équipe, …

Plus de commandes

Les commandes Git sont nombreuses (ainsi que
leurs options), cependant pour un usage journalier "classique" le
nombre de commande reste faible.

Outils moins
matures/nombreux

Ceci est peut-être plus marquant sous Windows,
mais il est vrai que les plugins, GUIs autour de Git sont moins
nombreux/matures que ceux de SVN. Cependant, nous verrons par la suite qu'il y
a du travail de ce côté-là.

Impossibilité de checkout
seulement une partie du dépo

Bien que sur les versions récentes il y a la
possibilité de faire un "sparse checkout" (voir : http://vmiklos.hu/blog/sparse-checkout-example-in-git-1-7).

La liste n'est pas
exhaustive, il y a probablement d'autres désavantages à l'utilisation de Git.

Les GUIs

Sortie récente de EGit 2

EGit est un plugin
permettant d'intégrer git à Eclipse. Il est incorporé à Eclipse Juno (dernière
version).

Ce projet semble aussi être
bien supporté par Github (http://eclipse.github.com/),
ce qui laisse penser du bon pour la suite (il est dans leur intérêt que l'outil
soit à la hauteur des espérances de potentiels futurs utilisateurs de Github).

Plus d'infos sur la
nouvelle version d'EGit :

Autres GUIs

De nombreuses GUI sont
présentées dans les pages suivantes :

Liens divers

5 commentaires

  1. Ce qui est aussi extrêmement appréciable c’est le contrôle total sur les commits par rapport à la rigidité de SVN.

    Par exemple la capacité de réécrire le passé (Sur votre repository local, il est possible de fusionner deux commits non « pushés » avec la commande rebase).

    Il est aussi possible d’appliquer un certain commit d’une branche A vers une branche B (cherry picking). Par exemple vous travaillez sur une « feature » dans une branche. Vous faites x commits. Et là vous trouvez un bug. Hop une correction, un petit commit et un cherry pick sur la branche principale pour appliquer uniquement cette correction et pas les autres modifications en attente.

    Git demande clairement un petit temps d’adaptation, mais une fois dedans (commencez avec Github), le choix est vite fait !

  2. Bonjour,

    Merci pour le rappel de la manière de passer de SVN à Git. Je suis ravi de voir que la communauté Git émerge de plus en plus car c’est un outil réellement puissant.

    Sinon, bonne présentation des avantages de Git mettant en avant l’outil.

    Pour une lecture complémentaire sur le sujet, voici l’un de mes articles : http://gitstack.com/migrate-from-sv

    Bonne soirée,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.