From dd9f592b84a49ba934f94fc7b373ad98649be6bc Mon Sep 17 00:00:00 2001 From: Louis-Claude Canon Date: Wed, 5 Feb 2014 14:53:55 +0100 Subject: [PATCH] Initial commit --- git/.gitignore | 4 + git/Makefile | 14 +++ git/git.md | 283 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ talk.md | 67 ++++++++++++++ trends.md | 30 ++++++ 5 files changed, 398 insertions(+) create mode 100644 git/.gitignore create mode 100644 git/Makefile create mode 100644 git/git.md create mode 100644 talk.md create mode 100644 trends.md diff --git a/git/.gitignore b/git/.gitignore new file mode 100644 index 0000000..6b8c73e --- /dev/null +++ b/git/.gitignore @@ -0,0 +1,4 @@ +fig/ +git.html +git.pdf +gitstats/ diff --git a/git/Makefile b/git/Makefile new file mode 100644 index 0000000..a0e26d6 --- /dev/null +++ b/git/Makefile @@ -0,0 +1,14 @@ +OUTPUT=git.pdf git.html + +all: $(OUTPUT) + +%.pdf: %.md + pandoc -s -N -V lang:french -V papersize:a4paper -V geometry:margin=1in \ + $< -o $@ + +%.html: %.md + pandoc -s -N -t slidy $< -o $@ + +.PHONY: clean +clean: + -rm $(OUTPUT) 2> /dev/null diff --git a/git/git.md b/git/git.md new file mode 100644 index 0000000..a91e892 --- /dev/null +++ b/git/git.md @@ -0,0 +1,283 @@ +% Introduction à Git et utilisation pour l'enseignement et la recherche +% 30/1/2014 +% Louis-Claude Canon + +Introduction +============ + +- Prérequis : usage basique de `svn`. +- Interruptions bienvenues pour compléter ou discuter. +- Contenu : démonstrations, adoption, comparaison avec Subversion, cas + d'utilisation, conclusion et perspectives. + +Démonstration +============= + +But : montrer l'équivalent de `svn`. + + mkdir test + cd test + git init . # mise en place d'un serveur svn + > file + git add file # svn add file + git commit -a -m "Commit initial" # svn commit + +Le dépôt est uniquement local : le commit n'envoit rien. + + echo phrase1 > file + git commit -a -m "Second commit" + git checkout HEAD~1 + cat file + git checkout master + cat file + +Simplicité de déplacement dans l'historique. + + git log -p + gitk + echo phrase2 >> file + git status + git diff + +Concepts +======== + +Rappel pour Subversion : copie de travail et version serveur. + +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 +que des changements ayant la même logique). + +Une étape supplémentaire pour envoyer la copie locale à un dépôt externe. + +4 zones au total (2 de plus qu'avec Subversion) : + +![](fig/Git_operations.png) + +Démonstration avancée +===================== + +Micro-commits +------------- + + git commit -a -m "Troisième commit" + sed s/phrase1/phrase1_1/ -i file + echo phrase3 >> file + git add -p + git commit -m "Micro-commit" + git add -p + git commit -m "Micro-commit" + git log -p + +Rédaction collaborative avec un serveur +--------------------------------------- + + git clone morgane:repo.git + mv repo test1 + git clone + mv repo test2 + cd test1 + # Modification quelques lignes + git add -p + git commit + git push + cd ../test2 + # Modification quelques lignes (avec conflit) + git commit -a + git push + git pull + # Fusion + git add lorem + git commit + git push + +Modification d'un précédent commit +---------------------------------- + + git log -p + git rebase -i HEAD~5 + git log -p + +Gestion des branches +-------------------- + + git branch branche + cat phrase4 >> file + git commit -a + git checkout master + cat file + git checkout branche + cat file + +Bilan des commandes +------------------- + +Travail local : + + git init . + git add file + git commit -a # ou git add -p et git commit + git checkout HEAD~1 + git log -p # ou gitk + git status + git diff + +Travail collaboratif : + + git clone + git push + git pull + +Avancées : + + git rebase -i HEAD~5 + git branch branche1 + +Adoption +======== + +Voir pour un bilan à +jour. + +Offres d'emploi +--------------- + +![](fig/itjobs_svn.png) + +![](fig/itjobs_git.png) + +![](fig/itjobs_mercurial.png) + +![](fig/itjobs_perforce.png) + +![](fig/indeed.png) + +Popularité +---------- + +![](fig/hackernews.png) + +![](fig/google_trends.png) + + avec 25% de git et 16% de svn (au 5/2/2014). + +Utilisation +----------- + +![](fig/ohloh.png) + +![](fig/eclipse.jpg) + +Bilan de ces 6 statistiques +--------------------------- + +- 3 montrant que git est plus populaire que Subversion +- 3 montrant que git est aussi utilisé que Subversion +- toute montrant que git progresse alors que Subversion stagne +- mercurial est le plus proche concurrent (10 fois moins que git) + +On est dans la partie "Late majority" du modèle de diffusion des idées. + +![](fig/1000px-Diffusion_of_ideas.png) + +Comparaison avec Subversion +=========================== + +Avantages : + +- aspect décentralisé : dépôt local complet + - utilisation pour le versionnage uniquement (sans aspect collaboratif) + - travail dans le train ou lors des pannes internet + - rapide : opérations immédiates pour les log, les commits +- possibilité d'organiser les modifications en "découpant" les commits +- ergonomie : pager intégré et couleurs +- facilité pour travailler sur un dépôt lorsqu'on a pas les droits (clone et + génération de patch) + +Inconvénients : + +- aspect décentralisé : une commande en plus pour enregistrer une modification + sur un serveur distant +- possibilité d'organiser les commits : une commande en plus pour sélectionner + les modifications à intégrer dans le futur commit (zone *stage*) + +Cas d'utilisation +================= + +Développement logiciel +---------------------- + +- ampleur : quelques dizaines de milliers de lignes ? +- historique : nécessité de le conserver ? +- nombre d'intervenants ? +- besoins avancées (branches) ? + +La migration et l'apprentissage de git peuvent valoir le coup (beaucoup de +projets ont fait le passage) ou pas. + +Contexte éducatif +----------------- + +- plus didactique car on peut découper l'enseignement (versionnage, puis fusion + de branche) +- apprentissage plus progressif et plus de concepts +- [gitstats](gitstats/index.html) + +Versionnage des supports d'un cours +----------------------------------- + +- pas d'historique +- un seul utilisateur (quel niveau d'information sur git ?) +- besoins modestes (commit) + +Git semble largement gagnant car décentralisé. + +Rédaction d'un article +---------------------- + +- dépôt existant avec historique +- utilisateurs néophytes +- quelques utilisateurs en mode passage de jeton (peu de conflit) +- besoins modestes (push/pull) + +Le coût de la migration ou de l'apprentissage dépasse les avantages apportés +par git. + +Rédaction d'un article (bis) +---------------------------- + +- pas de dépôt existant +- utilisateurs informés + +Autant commencer directement avec git. + +Conclusion +========== + +- plus puissant que Subversion et qui peut le plus peut le moins +- plus ergonomique à l'usage +- mieux vaut un seul outil pour n'avoir à retenir que le minimum de réflexes +- pas beaucoup plus complexe pour les besoins basiques (et même plus simple + pour le versionnage seul) +- pas indispensable de tout migrer à git, mais outil à connaître pour ne pas + limiter le choix lors des nouveaux projets (l'une des principales limites à + son utilisation avec l'absence de forge) + +Perspectives +============ + +- idées pour de prochains séminaires techniques + - plagiat : recherche un participant pour présenter les outils de détection + spécifiques aux textes / dissertations (C. Lang ?) + - syllabus : recherche de participants pour présenter leur usage et leur + retour (B. Legard ?) + - dépôt APP (F. Bouquet ?) : recherche d'un autre spécialiste d'une + démarche administrative + - tutoriel git : 1 à 2 heures avec plus de théorie, de la pratique et une + ouverture eclipse (N. Marilleau ?) + - BigData et calcul parallèle (K. Mazouzi ?) +- possibilité de monter un groupe de travail plus formel ? + - thème : outils connexes à la recherche et l'enseignement ? + - liste de diffusion pour éviter la pollution ? + - créneau ? + - durée : 15' à 1 heure ? diff --git a/talk.md b/talk.md new file mode 100644 index 0000000..0f50ef5 --- /dev/null +++ b/talk.md @@ -0,0 +1,67 @@ +Liste des thèmes possibles +========================== + +Séminex -> Séminaires sur les outils connEXes (ou séminaire d'excellence) + +Outils scientifiques +-------------------- + +- analyse de données : R, ggplot2 +- analyse de données reproductible : RStudio, Markdown, knitr, publish, git + +Outils techniques +----------------- + +- tutoriel git : 1 à 2 heures avec plus de théorie, de la pratique et une + ouverture eclipse (N. Marilleau ?) et un test de Mercurial ? +- BigData et calcul parallèle (K. Mazouzi ?) +- C11 et C++11 (J. Bernard) +- tikz (Pierre-Cyrille) +- Maven, Jenkins, Sonar ? +- plateformes de développement : Github/Bitbucket/Gitlab, travis, drone.io, + codeclimate, gemnasium, coveralls.io ? +- technos pratiques : rédaction collaborative (Authorea, Draftin, Penflip), + pad, chatb +- formats de fichier : Markdown (présentation, prise de notes, rédaction), quiz + (gift, latex) + +Outils pédagogiques +------------------- + +- plagiat : recherche un participant pour présenter les outils de détection + spécifiques aux textes / dissertations (C. Lang ?) +- syllabus (plan de cours) : recherche de participants pour présenter leur + usage et leur retour (B. Legard ?) +- Outils pédagogiques comme les TRC ? +- Génération de tests/mutants (mujava) et évaluation des batteries de tests +- Gradebook with import for publishing notes + +Outils administratifs +--------------------- + +- dépôt APP (F. Bouquet ?) : recherche d'un autre spécialiste sur la PI et les + licences pour les questions ouvertes suivantes + - licence sur les supports de cours (CC) ? + - PI des productions étudiantes ? + - PI des réalisations enseignantes (administratif, enseignement ou + recherche) ? + +Créneaux disponibles +==================== + +------- ----------------------------------------------- --- +30/1 surveillances EAD OK +6/2 projets M2 +13/2 AG département non +20/2 projet Lpro, forum BAC+2, réunion Vesontio non +27/2 vacances non +6/3 Bouquet (MOIA) +13/3 présentation M2, projets L3, réunion Cartoon non +20/3 Bouquet (APP), Forum sup'Info 70 Premières +27/3 Héam (entretien doctoraux), réunion Cartoon non +3/4 +10/4 +17/4 Paquette (APP) +24/4 +1/5 vacances +------- ----------------------------------------------- --- diff --git a/trends.md b/trends.md new file mode 100644 index 0000000..9f5d70c --- /dev/null +++ b/trends.md @@ -0,0 +1,30 @@ +# Indicateurs de popularité et d'adoption d'une technologie + +## Agrégateur d'offres d'emploi + +- Offres françaises : +- Offres mondiales : +- Offres britanniques : + + +## Tendance/popularité + +- Google trends : + +- Hacker news : + - + - + - +- Nombre et popularité des projets sur github : +- + +## Usage réel + +Spécifique à chaque technologie : + +- SGBDs libre : Jelastic +- systèmes de gestion de versions : Ohloh, + +- IPv6 : Google +- languages : TIOBE, + -- 1.7.10.4