Commit dd9f592b84a49ba934f94fc7b373ad98649be6bc

Authored by Louis-Claude Canon
0 parents

Initial commit

Showing 5 changed files with 398 additions and 0 deletions Side-by-side Diff

git/.gitignore View file @ dd9f592
... ... @@ -0,0 +1,4 @@
  1 +fig/
  2 +git.html
  3 +git.pdf
  4 +gitstats/
git/Makefile View file @ dd9f592
... ... @@ -0,0 +1,14 @@
  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 $@
  11 +
  12 +.PHONY: clean
  13 +clean:
  14 + -rm $(OUTPUT) 2> /dev/null
... ... @@ -0,0 +1,283 @@
  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 +
  210 +- ampleur : quelques dizaines de milliers de lignes ?
  211 +- historique : nécessité de le conserver ?
  212 +- nombre d'intervenants ?
  213 +- besoins avancées (branches) ?
  214 +
  215 +La migration et l'apprentissage de git peuvent valoir le coup (beaucoup de
  216 +projets ont fait le passage) ou pas.
  217 +
  218 +Contexte éducatif
  219 +-----------------
  220 +
  221 +- plus didactique car on peut découper l'enseignement (versionnage, puis fusion
  222 + de branche)
  223 +- apprentissage plus progressif et plus de concepts
  224 +- [gitstats](gitstats/index.html)
  225 +
  226 +Versionnage des supports d'un cours
  227 +-----------------------------------
  228 +
  229 +- pas d'historique
  230 +- un seul utilisateur (quel niveau d'information sur git ?)
  231 +- besoins modestes (commit)
  232 +
  233 +Git semble largement gagnant car décentralisé.
  234 +
  235 +Rédaction d'un article
  236 +----------------------
  237 +
  238 +- dépôt existant avec historique
  239 +- utilisateurs néophytes
  240 +- quelques utilisateurs en mode passage de jeton (peu de conflit)
  241 +- besoins modestes (push/pull)
  242 +
  243 +Le coût de la migration ou de l'apprentissage dépasse les avantages apportés
  244 +par git.
  245 +
  246 +Rédaction d'un article (bis)
  247 +----------------------------
  248 +
  249 +- pas de dépôt existant
  250 +- utilisateurs informés
  251 +
  252 +Autant commencer directement avec git.
  253 +
  254 +Conclusion
  255 +==========
  256 +
  257 +- plus puissant que Subversion et qui peut le plus peut le moins
  258 +- plus ergonomique à l'usage
  259 +- mieux vaut un seul outil pour n'avoir à retenir que le minimum de réflexes
  260 +- pas beaucoup plus complexe pour les besoins basiques (et même plus simple
  261 + pour le versionnage seul)
  262 +- pas indispensable de tout migrer à git, mais outil à connaître pour ne pas
  263 + limiter le choix lors des nouveaux projets (l'une des principales limites à
  264 + son utilisation avec l'absence de forge)
  265 +
  266 +Perspectives
  267 +============
  268 +
  269 +- idées pour de prochains séminaires techniques
  270 + - plagiat : recherche un participant pour présenter les outils de détection
  271 + spécifiques aux textes / dissertations (C. Lang ?)
  272 + - syllabus : recherche de participants pour présenter leur usage et leur
  273 + retour (B. Legard ?)
  274 + - dépôt APP (F. Bouquet ?) : recherche d'un autre spécialiste d'une
  275 + démarche administrative
  276 + - tutoriel git : 1 à 2 heures avec plus de théorie, de la pratique et une
  277 + ouverture eclipse (N. Marilleau ?)
  278 + - BigData et calcul parallèle (K. Mazouzi ?)
  279 +- possibilité de monter un groupe de travail plus formel ?
  280 + - thème : outils connexes à la recherche et l'enseignement ?
  281 + - liste de diffusion pour éviter la pollution ?
  282 + - créneau ?
  283 + - durée : 15' à 1 heure ?
... ... @@ -0,0 +1,67 @@
  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
  57 +27/2 vacances non
  58 +6/3 Bouquet (MOIA)
  59 +13/3 présentation M2, projets L3, réunion Cartoon non
  60 +20/3 Bouquet (APP), Forum sup'Info 70 Premières
  61 +27/3 Héam (entretien doctoraux), réunion Cartoon non
  62 +3/4
  63 +10/4
  64 +17/4 Paquette (APP)
  65 +24/4
  66 +1/5 vacances
  67 +------- ----------------------------------------------- ---
... ... @@ -0,0 +1,30 @@
  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 :
  24 +
  25 +- SGBDs libre : Jelastic
  26 +- systèmes de gestion de versions : Ohloh,
  27 + <http://en.wikipedia.org/wiki/Git_%28software%29#Adoption>
  28 +- IPv6 : Google
  29 +- languages : TIOBE,
  30 + <http://en.wikipedia.org/wiki/Measuring_programming_language_popularity>