Commit de5b5492ff86effe83f80e5d07759609ed6c8454

Authored by Louis-Claude Canon
1 parent 2332d56d3f

Typo

Showing 1 changed file with 1 additions and 1 deletions Inline Diff

% Introduction à Git et utilisation pour l'enseignement et la recherche 1 1 % Introduction à Git et utilisation pour l'enseignement et la recherche
% 30/1/2014 2 2 % 30/1/2014
% Louis-Claude Canon 3 3 % Louis-Claude Canon
4 4
Introduction 5 5 Introduction
============ 6 6 ============
7 7
- Prérequis : usage basique de `svn`. 8 8 - Prérequis : usage basique de `svn`.
- Interruptions bienvenues pour compléter ou discuter. 9 9 - Interruptions bienvenues pour compléter ou discuter.
- Contenu : démonstrations, adoption, comparaison avec Subversion, cas 10 10 - Contenu : démonstrations, adoption, comparaison avec Subversion, cas
d'utilisation, conclusion et perspectives. 11 11 d'utilisation, conclusion et perspectives.
12 12
Démonstration 13 13 Démonstration
============= 14 14 =============
15 15
But : montrer l'équivalent de `svn`. 16 16 But : montrer l'équivalent de `svn`.
17 17
mkdir test 18 18 mkdir test
cd test 19 19 cd test
git init . # mise en place d'un serveur svn 20 20 git init . # mise en place d'un serveur svn
> file 21 21 > file
git add file # svn add file 22 22 git add file # svn add file
git commit -a -m "Commit initial" # svn commit 23 23 git commit -a -m "Commit initial" # svn commit
24 24
Le dépôt est uniquement local : le commit n'envoit rien. 25 25 Le dépôt est uniquement local : le commit n'envoie rien.
26 26
echo phrase1 > file 27 27 echo phrase1 > file
git commit -a -m "Second commit" 28 28 git commit -a -m "Second commit"
git checkout HEAD~1 29 29 git checkout HEAD~1
cat file 30 30 cat file
git checkout master 31 31 git checkout master
cat file 32 32 cat file
33 33
Simplicité de déplacement dans l'historique. 34 34 Simplicité de déplacement dans l'historique.
35 35
git log -p 36 36 git log -p
gitk 37 37 gitk
echo phrase2 >> file 38 38 echo phrase2 >> file
git status 39 39 git status
git diff 40 40 git diff
41 41
Concepts 42 42 Concepts
======== 43 43 ========
44 44
Rappel pour Subversion : copie de travail et version serveur. 45 45 Rappel pour Subversion : copie de travail et version serveur.
46 46
Une zone en plus pour git : *stage*. Contient tous les changements candidats 47 47 Une zone en plus pour git : *stage*. Contient tous les changements candidats
pour être commités. Permet d'organiser les commits (chaque commit ne contenant 48 48 pour être commités. Permet d'organiser les commits (chaque commit ne contenant
que des changements ayant la même logique). 49 49 que des changements ayant la même logique).
50 50
Une étape supplémentaire pour envoyer la copie locale à un dépôt externe. 51 51 Une étape supplémentaire pour envoyer la copie locale à un dépôt externe.
52 52
4 zones au total (2 de plus qu'avec Subversion) : 53 53 4 zones au total (2 de plus qu'avec Subversion) :
54 54
![<http://upload.wikimedia.org/wikipedia/commons/d/d8/Git_operations.svg>](fig/Git_operations.png) 55 55 ![<http://upload.wikimedia.org/wikipedia/commons/d/d8/Git_operations.svg>](fig/Git_operations.png)
56 56
Démonstration avancée 57 57 Démonstration avancée
===================== 58 58 =====================
59 59
Micro-commits 60 60 Micro-commits
------------- 61 61 -------------
62 62
git commit -a -m "Troisième commit" 63 63 git commit -a -m "Troisième commit"
sed s/phrase1/phrase1_1/ -i file 64 64 sed s/phrase1/phrase1_1/ -i file
echo phrase3 >> file 65 65 echo phrase3 >> file
git add -p 66 66 git add -p
git commit -m "Micro-commit" 67 67 git commit -m "Micro-commit"
git add -p 68 68 git add -p
git commit -m "Micro-commit" 69 69 git commit -m "Micro-commit"
git log -p 70 70 git log -p
71 71
Rédaction collaborative avec un serveur 72 72 Rédaction collaborative avec un serveur
--------------------------------------- 73 73 ---------------------------------------
74 74
git clone morgane:repo.git 75 75 git clone morgane:repo.git
mv repo test1 76 76 mv repo test1
git clone 77 77 git clone
mv repo test2 78 78 mv repo test2
cd test1 79 79 cd test1
# Modification quelques lignes 80 80 # Modification quelques lignes
git add -p 81 81 git add -p
git commit 82 82 git commit
git push 83 83 git push
cd ../test2 84 84 cd ../test2
# Modification quelques lignes (avec conflit) 85 85 # Modification quelques lignes (avec conflit)
git commit -a 86 86 git commit -a
git push 87 87 git push
git pull 88 88 git pull
# Fusion 89 89 # Fusion
git add lorem 90 90 git add lorem
git commit 91 91 git commit
git push 92 92 git push
93 93
Modification d'un précédent commit 94 94 Modification d'un précédent commit
---------------------------------- 95 95 ----------------------------------
96 96
git log -p 97 97 git log -p
git rebase -i HEAD~5 98 98 git rebase -i HEAD~5
git log -p 99 99 git log -p
100 100
Gestion des branches 101 101 Gestion des branches
-------------------- 102 102 --------------------
103 103
git branch branche 104 104 git branch branche
cat phrase4 >> file 105 105 cat phrase4 >> file
git commit -a 106 106 git commit -a
git checkout master 107 107 git checkout master
cat file 108 108 cat file
git checkout branche 109 109 git checkout branche
cat file 110 110 cat file
111 111
Bilan des commandes 112 112 Bilan des commandes
------------------- 113 113 -------------------
114 114
Travail local : 115 115 Travail local :
116 116
git init . 117 117 git init .
git add file 118 118 git add file
git commit -a # ou git add -p et git commit 119 119 git commit -a # ou git add -p et git commit
git checkout HEAD~1 120 120 git checkout HEAD~1
git log -p # ou gitk 121 121 git log -p # ou gitk
git status 122 122 git status
git diff 123 123 git diff
124 124
Travail collaboratif : 125 125 Travail collaboratif :
126 126
git clone 127 127 git clone
git push 128 128 git push
git pull 129 129 git pull
130 130
Avancées : 131 131 Avancées :
132 132
git rebase -i HEAD~5 133 133 git rebase -i HEAD~5
git branch branche1 134 134 git branch branche1
135 135
Adoption 136 136 Adoption
======== 137 137 ========
138 138
Voir <http://en.wikipedia.org/wiki/Git_%28software%29#Adoption> pour un bilan à 139 139 Voir <http://en.wikipedia.org/wiki/Git_%28software%29#Adoption> pour un bilan à
jour. 140 140 jour.
141 141
Offres d'emploi 142 142 Offres d'emploi
--------------- 143 143 ---------------
144 144
![<http://www.itjobswatch.co.uk/jobs/uk/subversion.do#demand_trend>](fig/itjobs_svn.png) 145 145 ![<http://www.itjobswatch.co.uk/jobs/uk/subversion.do#demand_trend>](fig/itjobs_svn.png)
146 146
![<http://www.itjobswatch.co.uk/jobs/uk/git%20%28software%29.do#demand_trend>](fig/itjobs_git.png) 147 147 ![<http://www.itjobswatch.co.uk/jobs/uk/git%20%28software%29.do#demand_trend>](fig/itjobs_git.png)
148 148
![<http://www.itjobswatch.co.uk/jobs/uk/mercurial.do#demand_trend>](fig/itjobs_mercurial.png) 149 149 ![<http://www.itjobswatch.co.uk/jobs/uk/mercurial.do#demand_trend>](fig/itjobs_mercurial.png)
150 150
![<http://www.itjobswatch.co.uk/jobs/uk/perforce.do#demand_trend>](fig/itjobs_perforce.png) 151 151 ![<http://www.itjobswatch.co.uk/jobs/uk/perforce.do#demand_trend>](fig/itjobs_perforce.png)
152 152
![<http://www.indeed.com/jobtrends?q=git%2Csvn%2Cperforce%2Cmercurial%2Cbazaar&l=>](fig/indeed.png) 153 153 ![<http://www.indeed.com/jobtrends?q=git%2Csvn%2Cperforce%2Cmercurial%2Cbazaar&l=>](fig/indeed.png)
154 154
Popularité 155 155 Popularité
---------- 156 156 ----------
157 157
![<http://hntrends.jerodsanto.net/?q=git%2Csvn%2Cmercurial%2Cperforce%2Cbazaar>](fig/hackernews.png) 158 158 ![<http://hntrends.jerodsanto.net/?q=git%2Csvn%2Cmercurial%2Cperforce%2Cbazaar>](fig/hackernews.png)
159 159
![<http://www.google.com/trends/explore#q=%2Fm%2F05vqwg%2C%20%2Fm%2F012ct9%2C%20%2Fm%2F08441_%2C%20perforce&cmpt=q>](fig/google_trends.png) 160 160 ![<http://www.google.com/trends/explore#q=%2Fm%2F05vqwg%2C%20%2Fm%2F012ct9%2C%20%2Fm%2F08441_%2C%20perforce&cmpt=q>](fig/google_trends.png)
161 161
<http://trendyskills.com/> avec 25% de git et 16% de svn (au 5/2/2014). 162 162 <http://trendyskills.com/> avec 25% de git et 16% de svn (au 5/2/2014).
163 163
Utilisation 164 164 Utilisation
----------- 165 165 -----------
166 166
![<http://www.ohloh.net/repositories/compare>](fig/ohloh.png) 167 167 ![<http://www.ohloh.net/repositories/compare>](fig/ohloh.png)
168 168
![<http://image.slidesharecdn.com/eclipsesurvey2013reportfinal-130612073444-phpapp01/95/slide-14-638.jpg>](fig/eclipse.jpg) 169 169 ![<http://image.slidesharecdn.com/eclipsesurvey2013reportfinal-130612073444-phpapp01/95/slide-14-638.jpg>](fig/eclipse.jpg)
170 170
Bilan de ces 6 statistiques 171 171 Bilan de ces 6 statistiques
--------------------------- 172 172 ---------------------------
173 173
- 3 montrant que git est plus populaire que Subversion 174 174 - 3 montrant que git est plus populaire que Subversion
- 3 montrant que git est aussi utilisé que Subversion 175 175 - 3 montrant que git est aussi utilisé que Subversion
- toute montrant que git progresse alors que Subversion stagne 176 176 - toute montrant que git progresse alors que Subversion stagne
- mercurial est le plus proche concurrent (10 fois moins que git) 177 177 - mercurial est le plus proche concurrent (10 fois moins que git)
178 178
On est dans la partie "Late majority" du modèle de diffusion des idées. 179 179 On est dans la partie "Late majority" du modèle de diffusion des idées.
180 180
![](fig/1000px-Diffusion_of_ideas.png) 181 181 ![](fig/1000px-Diffusion_of_ideas.png)
182 182
Comparaison avec Subversion 183 183 Comparaison avec Subversion
=========================== 184 184 ===========================
185 185
Avantages : 186 186 Avantages :
187 187
- aspect décentralisé : dépôt local complet 188 188 - aspect décentralisé : dépôt local complet
- utilisation pour le versionnage uniquement (sans aspect collaboratif) 189 189 - utilisation pour le versionnage uniquement (sans aspect collaboratif)
- travail dans le train ou lors des pannes internet 190 190 - travail dans le train ou lors des pannes internet
- rapide : opérations immédiates pour les log, les commits 191 191 - rapide : opérations immédiates pour les log, les commits
- possibilité d'organiser les modifications en "découpant" les commits 192 192 - possibilité d'organiser les modifications en "découpant" les commits
- ergonomie : pager intégré et couleurs 193 193 - ergonomie : pager intégré et couleurs
- facilité pour travailler sur un dépôt lorsqu'on a pas les droits (clone et 194 194 - facilité pour travailler sur un dépôt lorsqu'on a pas les droits (clone et
génération de patch) 195 195 génération de patch)
196 196
Inconvénients : 197 197 Inconvénients :
198 198
- aspect décentralisé : une commande en plus pour enregistrer une modification 199 199 - aspect décentralisé : une commande en plus pour enregistrer une modification
sur un serveur distant 200 200 sur un serveur distant
- possibilité d'organiser les commits : une commande en plus pour sélectionner 201 201 - possibilité d'organiser les commits : une commande en plus pour sélectionner
les modifications à intégrer dans le futur commit (zone *stage*) 202 202 les modifications à intégrer dans le futur commit (zone *stage*)
203 203
Cas d'utilisation 204 204 Cas d'utilisation
================= 205 205 =================
206 206
Développement logiciel 207 207 Développement logiciel
---------------------- 208 208 ----------------------
209 209
- ampleur : quelques dizaines de milliers de lignes ? 210 210 - ampleur : quelques dizaines de milliers de lignes ?