Git vs SVN

16
GIT vs SVN

description

Présentation à la nAcademy (Octobre 2011) : GIT VS SVN par Florian Werich

Transcript of Git vs SVN

Page 1: Git vs SVN

GIT vs SVN

 

Page 2: Git vs SVN

Plan

• But de la présentation• Genèse• Système centralisé VS distribué• Branching• Staging area et nouveaux Workflows• Les outils graphiques• Ressources

Page 3: Git vs SVN

Pourquoi cette Présentation

Git fait de plus en plus parler de lui : • De nombreux projets sous Git

o (Git, Linux Kernel, Perl, Eclipse, Gnome, KDE    Qt, Ruby on Rails, Android, PostgreSQL    Debian, X.org, Plone...)

• le nombre total de commit pour la période de Janvier à Mai 2011 de Github est largement supérieur à ceux de Sourceforge, Google Code et Microsoft CodePlex.

• Systeme de branching au coeur du fonctionnement de Git  

Page 4: Git vs SVN

Au début il y avait BitKeeper...

Kernel.org versionné par BitKeeper                 mais sa licence d'utilisation change.

Besoin : VCS rapide, gérant de gros volumes de données

Outils de remplacement : Aucun

Page 5: Git vs SVN

...puis vint Git

Linus Torvald crée son propre outil :  • Outil écrit en 5 jours • Optimisé pour le noyau linux• exécution rapide des tâches (codé en C)• Zero perte d'information ( DAG : directed Acyclic Graph ou

graphe orienté acyclique)• Nombreuses fonctionnalités (détaillées plus loin)

  MAIS Git n'est pas un VCS !

Page 6: Git vs SVN

Difference Svn/Git

 

Page 7: Git vs SVN

Différence Svn/GitSvn :• checkout récupère la dernière

révision• Checkout/commit/diff online• branching non historisé• plusieurs .svn par sous

répertoire• pas de gestion évoluée de

droits• révisions identifiées par

incrément•  Workflow centralisé• "Annulation" de commit

impossible• historise : unversionné, new,

deleted, modifié

Git:• checkout récupère tout le repo• Pull/push online seulement• branching base de Git• un seul .git par défaut• gestion de droits (base du

fonctionnement de Github)• révision identifiée par

hashcode des fichiers• X workflows possibles• historise : unversionné, new,

deleted, modifié,modifié "non ajouté"

Page 8: Git vs SVN

Utilisation de Git comme Svn

 

Page 9: Git vs SVN

Utilisation de Git comme Svn

Git ne revert pas. Tout est mémorisé, même les branches mergées.

Git aussi a des conflits...mais aucun basé sur le changement de nom d'un fichier (ou sa suppression).

On peut utiliser Git pour travailler sur Svn        git svn clone http://svn.neuros.fr/...

Page 10: Git vs SVN

Branching : La principale puissance de Git

Multiples branches locales :création, fusion (merge) ou suppression en quelques secondes.

On peut :  • Créer une branche pour essayer une nouvelle idée, committer,

revenir à l'endroit où vous avez créé cette branche, appliquer un patch, retourner là où vous expérimentez et fusionnez le avec votre branche principale.

• Créer une nouvelle branche pour toutes les fonctionnalités que vous développez, puis effacer chaque branche une fois que la fonctionnalité est incluse dans la branche principale.      

Page 11: Git vs SVN

Branching : La principale puissance de Git

Page 12: Git vs SVN

Staging area

 

Page 13: Git vs SVN

Exemples de Workflows

 

Page 14: Git vs SVN

Exemples de Workflows

 

Page 15: Git vs SVN

Outils graphiques

Les différents IDE possèdent leurs plugins Git :• Egit (Eclipse)•  NBGit (NetBeans)

Des utilitaires existent pour Git :• TortoiseGit•  Git Tower (Mac)

Page 16: Git vs SVN

Ressources

http://fr.whygitisbetterthanx.com (Plaidoyer Pro git)

http://progit.org/book/ (livre en ligne)

http://blog.loof.fr/2010/08/from-svn-to-git.html

http://www.git-attitude.fr

http://gitfr.net/blog/ (@gitfr)

Videos de présentation    http://www.parleys.com/#st=5&id=2366    http://www.parleys.com/#st=5&id=2368