Git vs SVN

Post on 25-May-2015

8.416 views 0 download

description

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

Transcript of Git vs SVN

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

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  

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

...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 !

Difference Svn/Git

 

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é"

Utilisation de Git comme 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/...

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.      

Branching : La principale puissance de Git

Staging area

 

Exemples de Workflows

 

Exemples de Workflows

 

Outils graphiques

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

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

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