Commit dd9f592b84a49ba934f94fc7b373ad98649be6bc

Authored by Louis-Claude Canon
0 parents

Initial commit

Showing 5 changed files with 398 additions and 0 deletions Inline Diff

git/.gitignore View file @ dd9f592
File was created 1 fig/
2 git.html
3 git.pdf
4 gitstats/
git/Makefile View file @ dd9f592
File was created 1 OUTPUT=git.pdf git.html
2
3 all: $(OUTPUT)
4
5 %.pdf: %.md
6 pandoc -s -N -V lang:french -V papersize:a4paper -V geometry:margin=1in \
7 $< -o $@
8
9 %.html: %.md
10 pandoc -s -N -t slidy $< -o $@
File was created 1 % Introduction à Git et utilisation pour l'enseignement et la recherche
2 % 30/1/2014
3 % Louis-Claude Canon
4
5 Introduction
6 ============
7
8 - Prérequis : usage basique de `svn`.
9 - Interruptions bienvenues pour compléter ou discuter.
10 - Contenu : démonstrations, adoption, comparaison avec Subversion, cas
11 d'utilisation, conclusion et perspectives.
12
13 Démonstration
14 =============
15
16 But : montrer l'équivalent de `svn`.
17
18 mkdir test
19 cd test
20 git init . # mise en place d'un serveur svn
21 > file
22 git add file # svn add file
23 git commit -a -m "Commit initial" # svn commit
24
25 Le dépôt est uniquement local : le commit n'envoit rien.
26
27 echo phrase1 > file
28 git commit -a -m "Second commit"
29 git checkout HEAD~1
30 cat file
31 git checkout master
32 cat file
33
34 Simplicité de déplacement dans l'historique.
35
36 git log -p
37 gitk
38 echo phrase2 >> file
39 git status
40 git diff
41
42 Concepts
43 ========
44
45 Rappel pour Subversion : copie de travail et version serveur.
46
47 Une zone en plus pour git : *stage*. Contient tous les changements candidats
48 pour être commités. Permet d'organiser les commits (chaque commit ne contenant
49 que des changements ayant la même logique).
50
51 Une étape supplémentaire pour envoyer la copie locale à un dépôt externe.
52
53 4 zones au total (2 de plus qu'avec Subversion) :
54
55 ![<http://upload.wikimedia.org/wikipedia/commons/d/d8/Git_operations.svg>](fig/Git_operations.png)
56
57 Démonstration avancée
58 =====================
59
60 Micro-commits
61 -------------
62
63 git commit -a -m "Troisième commit"
64 sed s/phrase1/phrase1_1/ -i file
65 echo phrase3 >> file
66 git add -p
67 git commit -m "Micro-commit"
68 git add -p
69 git commit -m "Micro-commit"
70 git log -p
71
72 Rédaction collaborative avec un serveur
73 ---------------------------------------
74
75 git clone morgane:repo.git
76 mv repo test1
77 git clone
78 mv repo test2
79 cd test1
80 # Modification quelques lignes
81 git add -p
82 git commit
83 git push
84 cd ../test2
85 # Modification quelques lignes (avec conflit)
86 git commit -a
87 git push
88 git pull
89 # Fusion
90 git add lorem
91 git commit
92 git push
93
94 Modification d'un précédent commit
95 ----------------------------------
96
97 git log -p
98 git rebase -i HEAD~5
99 git log -p
100
101 Gestion des branches
102 --------------------
103
104 git branch branche
105 cat phrase4 >> file
106 git commit -a
107 git checkout master
108 cat file
109 git checkout branche
110 cat file
111
112 Bilan des commandes
113 -------------------
114
115 Travail local :
116
117 git init .
118 git add file
119 git commit -a # ou git add -p et git commit
120 git checkout HEAD~1
121 git log -p # ou gitk
122 git status
123 git diff
124
125 Travail collaboratif :
126
127 git clone
128 git push
129 git pull
130
131 Avancées :
132
133 git rebase -i HEAD~5
134 git branch branche1
135
136 Adoption
137 ========
138
139 Voir <http://en.wikipedia.org/wiki/Git_%28software%29#Adoption> pour un bilan à
140 jour.
141
142 Offres d'emploi
143 ---------------
144
145 ![<http://www.itjobswatch.co.uk/jobs/uk/subversion.do#demand_trend>](fig/itjobs_svn.png)
146
147 ![<http://www.itjobswatch.co.uk/jobs/uk/git%20%28software%29.do#demand_trend>](fig/itjobs_git.png)
148
149 ![<http://www.itjobswatch.co.uk/jobs/uk/mercurial.do#demand_trend>](fig/itjobs_mercurial.png)
150
151 ![<http://www.itjobswatch.co.uk/jobs/uk/perforce.do#demand_trend>](fig/itjobs_perforce.png)
152
153 ![<http://www.indeed.com/jobtrends?q=git%2Csvn%2Cperforce%2Cmercurial%2Cbazaar&l=>](fig/indeed.png)
154
155 Popularité
156 ----------
157
158 ![<http://hntrends.jerodsanto.net/?q=git%2Csvn%2Cmercurial%2Cperforce%2Cbazaar>](fig/hackernews.png)
159
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
162 <http://trendyskills.com/> avec 25% de git et 16% de svn (au 5/2/2014).
163
164 Utilisation
165 -----------
166
167 ![<http://www.ohloh.net/repositories/compare>](fig/ohloh.png)
168
169 ![<http://image.slidesharecdn.com/eclipsesurvey2013reportfinal-130612073444-phpapp01/95/slide-14-638.jpg>](fig/eclipse.jpg)
170
171 Bilan de ces 6 statistiques
172 ---------------------------
173
174 - 3 montrant que git est plus populaire que Subversion
175 - 3 montrant que git est aussi utilisé que Subversion
176 - toute montrant que git progresse alors que Subversion stagne
177 - mercurial est le plus proche concurrent (10 fois moins que git)
178
179 On est dans la partie "Late majority" du modèle de diffusion des idées.
180
181 ![](fig/1000px-Diffusion_of_ideas.png)
182
183 Comparaison avec Subversion
184 ===========================
185
186 Avantages :
187
188 - aspect décentralisé : dépôt local complet
189 - utilisation pour le versionnage uniquement (sans aspect collaboratif)
190 - travail dans le train ou lors des pannes internet
191 - rapide : opérations immédiates pour les log, les commits
192 - possibilité d'organiser les modifications en "découpant" les commits
193 - ergonomie : pager intégré et couleurs
194 - facilité pour travailler sur un dépôt lorsqu'on a pas les droits (clone et
195 génération de patch)
196
197 Inconvénients :
198
199 - aspect décentralisé : une commande en plus pour enregistrer une modification
200 sur un serveur distant
201 - possibilité d'organiser les commits : une commande en plus pour sélectionner
202 les modifications à intégrer dans le futur commit (zone *stage*)
203
204 Cas d'utilisation
205 =================
206
207 Développement logiciel
208 ----------------------
209
File was created 1 Liste des thèmes possibles
2 ==========================
3
4 Séminex -> Séminaires sur les outils connEXes (ou séminaire d'excellence)
5
6 Outils scientifiques
7 --------------------
8
9 - analyse de données : R, ggplot2
10 - analyse de données reproductible : RStudio, Markdown, knitr, publish, git
11
12 Outils techniques
13 -----------------
14
15 - tutoriel git : 1 à 2 heures avec plus de théorie, de la pratique et une
16 ouverture eclipse (N. Marilleau ?) et un test de Mercurial ?
17 - BigData et calcul parallèle (K. Mazouzi ?)
18 - C11 et C++11 (J. Bernard)
19 - tikz (Pierre-Cyrille)
20 - Maven, Jenkins, Sonar ?
21 - plateformes de développement : Github/Bitbucket/Gitlab, travis, drone.io,
22 codeclimate, gemnasium, coveralls.io ?
23 - technos pratiques : rédaction collaborative (Authorea, Draftin, Penflip),
24 pad, chatb
25 - formats de fichier : Markdown (présentation, prise de notes, rédaction), quiz
26 (gift, latex)
27
28 Outils pédagogiques
29 -------------------
30
31 - plagiat : recherche un participant pour présenter les outils de détection
32 spécifiques aux textes / dissertations (C. Lang ?)
33 - syllabus (plan de cours) : recherche de participants pour présenter leur
34 usage et leur retour (B. Legard ?)
35 - Outils pédagogiques comme les TRC ?
36 - Génération de tests/mutants (mujava) et évaluation des batteries de tests
37 - Gradebook with import for publishing notes
38
39 Outils administratifs
40 ---------------------
41
42 - dépôt APP (F. Bouquet ?) : recherche d'un autre spécialiste sur la PI et les
43 licences pour les questions ouvertes suivantes
44 - licence sur les supports de cours (CC) ?
45 - PI des productions étudiantes ?
46 - PI des réalisations enseignantes (administratif, enseignement ou
47 recherche) ?
48
49 Créneaux disponibles
50 ====================
51
52 ------- ----------------------------------------------- ---
53 30/1 surveillances EAD OK
54 6/2 projets M2
55 13/2 AG département non
56 20/2 projet Lpro, forum BAC+2, réunion Vesontio non
File was created 1 # Indicateurs de popularité et d'adoption d'une technologie
2
3 ## Agrégateur d'offres d'emploi
4
5 - Offres françaises : <http://www.jobisjob.fr/Trends?q=postgresql>
6 - Offres mondiales : <http://www.indeed.com/jobtrends>
7 - Offres britanniques :
8 <http://www.itjobswatch.co.uk/jobs/uk/postgresql.do#demand_trend>
9
10 ## Tendance/popularité
11
12 - Google trends :
13 <http://www.google.com/trends/explore#q=PostgreSQL%20%2B%20Postgres%2C%20MySQL&cmpt=q>
14 - Hacker news :
15 - <http://hntrends.jerodsanto.net/>
16 - <http://www.diffbot.com/robotlab/hackernews/#>
17 - <http://www.ryan-williams.net/hacker-news-hiring-trends/>
18 - Nombre et popularité des projets sur github : <www.yasiv.com/github/>
19 - <http://trendyskills.com/>
20
21 ## Usage réel
22
23 Spécifique à chaque technologie :