La gestion de version avec
Git
([ʒit] [git])
mathieu.leplatre@makina-corpus.com
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
La petite histoire
Les avantages
Scénario d'utilisation
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
SubVersioN : CVS done right
«There is no way to do CVS right. »
- Linus Torvalds
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
La petite histoire
Les avantages
Scénario d'utilisation
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
La Petite Histoire
2002
●
Linus choisit BitKeeper pour le noyau Linux
●
« Merge » facilité
●
Non-linéaire
●
Décentralisé
2005
●
17000 fichiers, 6 millions de lignes
●
400 développeurs
●
3 patches/heure, 3200 lignes/jour
●
Une version = 5000 patchs
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
La Petite Histoire
2005
●
5 Avril : BitKeeper devient payant
●
6 Avril : Linus annonce son prototype « Git »
●
7 Avril : Une instance est hébergée chez lui
●
18 Avril : Merge multiple de branches
●
16 Juin : Sortie du noyau 2.6.12 géré sur Git
2011
●
Septembre : 1 million d'utilisateurs sur GitHub
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
« I'm an egotistical bastard, and I name all my
projects after myself. First Linux, now git. »
- Linus Torvalds
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
La petite histoire
Les avantages
Scénario d'utilisation
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Les Avantages : 1 - décentralisé
●
Local Dev
●
N'importe où !
●
Mode déconnecté Public
●
Serveur facultatif
●
Distant
●
Branche par branche
●
Publication @server
●
Déploiement /home
●
ex : heroku.com
SVN
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Les Avantages : 2 – léger
●
Un clone parfait
●
= complet
●
Rapide !
●
Réseau seulement pour synchroniser
●
Ultra-performant !
●
Ne stocke que les « diff »
●
Ex : Mozilla 12Go → 420Mo
●
Branches et Tags
●
= fichiers métadonnées
●
Transport : SSH, FTP, HTTP, WebDAV, Email...
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Les Avantages : 3 – branché
$ svn merge -r11:10 http://svn/svn/my_repos/test
$ svn: REPORT request failed on '/svn/my_repos/!svn/bc/11/test'
$ svn: MERGE request failed on '/svn/repository/trunk'
$ svn: MERGE of '/svn/repository/trunk': 200 OK (http://svn.myserver.com)
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Les Avantages : 3 – branché
●
Vue graphique
●
Locales et/ou distantes
●
Algorithmes de fusion (« merge »)
●
Déplacement (« rebase »)
●
Avec suivi (« track »)
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Les Avantages : 3 – branché
●
Manipulation facilitée
●
C'est le core committer celui qui développe, qui gère les conflits !
●
« pull request »
●
Nouveaux paradigmes (« Git Flow »)
●
1 version = 1 branche
●
1 feature = 1 branche
●
Brouillon ? → branche !
●
Temporaire ? → branche !
●
Interrompu ? → branche !
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
La petite histoire
Les avantages
Scénario d'utilisation
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Scénario d'utilisation
●
Initialisation
$ cd demo
$ git init .
Initialized empty Git repository
gitg est ton ami
●
Premières contributions dans master
$ git add README
$ git commit -m "Premier"
(edition de README)
$ git commit -a -m "Deuxième"
Local!
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Scénario d'utilisation
●
Ajout d'un dépôt distant
$ git remote add origin git://you@server/demo.git/
●
Synchronisation : envoi
$ git push origin master
Local
Distant
●
Synchronisation : réception
$ git pull origin master
●
commit != push
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Scénario d'utilisation
●
Travail en local Désynchro
●
Collaboration Distant
$ git fetch origin Local
Commit ajouté
●
Fusion !
$ git merge origin/master
git pull = Fetch+Merge
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Scénario d'utilisation
Départ
●
Nouvelle branche
$ git branch refactor
$ git checkout refactor
...
...
$ git commit -m "Changement"
●
Fusionner avec master
$ git merge master
ou
●
Repositionner refactor
$ git rebase master
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Scénario d'utilisation
●
Tagger une version
$ git tag 1.0
●
Se rendre à un commit antérieur
$ git checkout 1.0
$ git checkout 0ec2ab
●
Annuler les derniers commits
$ git reset HEAD~1
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
Et maintenant ?
$ sudo aptitude install git
●
Dispo sur GNU/Linux, OS X, BSD, Solaris, AIX, BeOS... et Windows
●
Eclipse Indigo 3.7 : Egit
●
TurtoiseGit
●
git-svn : mirroir Git d'un dépôt Subversion
●
git mergetool : Utilise meld par ex. pour résoudre les conflits
●
Server Git = Server SSH + git init --bare /path/repo
●
http://github.com
●
http://gitorious.org
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.
ReconVersion
SubVersion Git
trunk master
svn checkout git clone (+git checkout)
svn commit git commit -a + git push
svn update git pull
svn add git add
svn merge -r 20:HEAD git merge branch
http://example.com/svn/branches/branch
svn copy http://example.com/svn/trunk git tag name
http://example.com/svn/tags/name
svn copy http://example.com/svn/trunk git branch branch
http://example.com/svn/branches/branch git checkout branch
svn switch http://example.com/svn/branches/branch
Makina Corpus – Présentation de Git – Toulouse, 18 Octobre 2011.