Présentation du versioning
avec
Matthieu Sadouni
@msadouni
pourquoi ?
méthode "La RACHE" ©




http://www.risacher.com/la-rache/index.php?z=2
problèmes

Comment :
● avoir un historique de la vie du projet ?
● revenir en arrière ?
● corriger un bug quand on travaille sur autre chose ?
● maintenir plusieurs environnements (dev, test, prod) ?
● travailler à plusieurs ?
solution
enregistrer les changements apportés au code (commit)

●   ensemble de modifications (diff)
●   message explicatif
●   date
●   auteur
●   identifiant unique
anatomie d'un commit
bénéfices
historique




- identifier qui a fait quoi et quand
- revenir à n'importe quelle étape précédente
développements parallèles




http://nvie.com/posts/a-successful-git-branching-model/
fusion automatique




http://www.flickr.com/photos/foryou/6197709847/
comment ?
centralisé   vs   distribué
plusieurs outils
pourquoi git ?
● pérenne car très utilisé :
   ○ industrie : google, facebook, twitter, microsoft...
   ○ gros projets open source : linux, android, ruby on rails...
● github.com
● le plus rapide
● facile à installer
● « cheap branches »
git au quotidien
initialiser un projet
cd /projet
git init
git add .
git commit -m "premier commit"




   premier commit   Matthieu Sadouni   18/10/2012   abcdef
git au quotidien
enregistrer des modifications
hack...
git add .
git commit -m "ajout du compte client"



  ajout du compte client   Matthieu Sadouni   18/10/2012   fa2c24

  premier commit           Matthieu Sadouni   18/10/2012   abcdef
git au quotidien
corriger un bug
git checkout -b correction-bug-123
hack...
git add .
git commit -m "bug #123 corrigé"
git checkout master
git merge correction-bug-123
git branch -d correction-bug-123


   Merge commit 6ae3dc      Matthieu Sadouni   19/10/2012   8e3c1

         bug #123 corrigé   Matthieu Sadouni   19/10/2012   6ae3dc


   ajout du compte client   Matthieu Sadouni   18/10/2012   fa2c24

   premier commit           Matthieu Sadouni   18/10/2012   abcdef
git au quotidien
travailler à plusieurs
# récupérer la liste des nouveaux commits sur le dépôt distant
# la copie locale n'est pas modifiée
git fetch origin


# récupérer et fusionner les nouveaux commits sur le dépôt distant avec la
branche actuelle
# pull = fetch + merge
git pull origin master



# envoyer les nouveaux commits d'une branche sur le dépôt distant
git push origin master
existe aussi en GUI




http://harrywolff.com/the-best-mac-git-gui/sourcetree-01/
autres bénéfices

● versionner autre chose que du code : PSD, etc...

● base d'un process de qualité :
   ○ pour le prestataire
   ○ pour le client
conclusion

 C'est comme ne pas mettre sa ceinture de
 sécurité parce qu'on n'a pas encore eu
 d'accident.
conclusion

      filet de sécurité permanent


          tranquillité d'esprit


       expérimentation facilitée


        gains de compétences
questions ?
Matthieu Sadouni
@msadouni

Présentation du versioning avec Git