Parcourir la source

CM2 à peu près ok

Julien Dehos il y a 8 ans
Parent
commit
48202ab0ba
48 fichiers modifiés avec 353 ajouts et 1863 suppressions
  1. 131 39
      CM2/CM2.md
  2. 0 105
      CM2/L3Info_Projets_CM2.tex
  3. 0 7
      CM2/Makefile
  4. 0 63
      CM2/beamerinnerthemeumbcboxes.sty
  5. 0 69
      CM2/beamerinnerthemeumbctribullets.sty
  6. 0 37
      CM2/beamerouterthemeumbcfootline.sty
  7. 0 28
      CM2/beamerthemeumbc2.sty
  8. 221 0
      CM2/concepts_depots_git.svg
  9. BIN
      CM2/images/SVN_Server_Client_Structure.png
  10. BIN
      CM2/images/rapidsvn_accueil.png
  11. BIN
      CM2/images/rapidsvn_checkout1.png
  12. BIN
      CM2/images/rapidsvn_checkout2.png
  13. BIN
      CM2/images/rapidsvn_commit1.png
  14. BIN
      CM2/images/rapidsvn_commit2.png
  15. BIN
      CM2/images/rapidsvn_config.png
  16. BIN
      CM2/images/rapidsvn_modif1.png
  17. BIN
      CM2/images/rapidsvn_modif2.png
  18. BIN
      CM2/images/rapidsvn_resolve1.png
  19. BIN
      CM2/images/rapidsvn_resolve2.png
  20. BIN
      CM2/images/rapidsvn_resolve3.png
  21. BIN
      CM2/images/rapidsvn_resolve4.png
  22. BIN
      CM2/images/rapidsvn_resolve5.png
  23. BIN
      CM2/images/rapidsvn_update.png
  24. BIN
      CM2/images/redmine_0.png
  25. BIN
      CM2/images/redmine_1.png
  26. BIN
      CM2/images/redmine_2.png
  27. BIN
      CM2/images/redmine_3.png
  28. BIN
      CM2/images/redmine_4.png
  29. BIN
      CM2/images/svn_ci1.png
  30. BIN
      CM2/images/svn_ci2.png
  31. BIN
      CM2/images/svn_co1.png
  32. BIN
      CM2/images/svn_co2.png
  33. BIN
      CM2/images/svn_co3.png
  34. BIN
      CM2/images/svn_co4.png
  35. BIN
      CM2/images/svn_co5.png
  36. BIN
      CM2/images/svn_co6.png
  37. BIN
      CM2/images/svn_co7.png
  38. BIN
      CM2/images/svn_conflit1.png
  39. BIN
      CM2/images/svn_conflit2.png
  40. BIN
      CM2/images/svn_conflit3.png
  41. BIN
      CM2/images/svn_conflit4.png
  42. 0 711
      CM2/minted.sty
  43. 0 48
      CM2/section_conception.tex
  44. 0 150
      CM2/section_developpement.tex
  45. 0 271
      CM2/section_outils_git.tex
  46. 0 62
      CM2/section_outils_redmine.tex
  47. 0 271
      CM2/section_outils_svn.tex
  48. 1 2
      Makefile

+ 131 - 39
CM2/CM2.md

@@ -1,6 +1,6 @@
 ---
 title: "Projets, CM2"
-date: 2016-05-18
+date: 2016-05-21
 ---
 
 # Conception d’un logiciel
@@ -132,63 +132,145 @@ icalcomponent * getPtrIcal() const ;
 - outils de gestion de code source (git, svn...)
 - outils de gestion de projets (github, redmine, trac, sourceforge...)
 
+# Gestion de projet avec github
 
-# Gestion de code source avec git
+## Github
 
-TODO
+- [https://github.com](https://github.com)
+- hébergement de dépôts git 
+- gestion des collaborateurs + droits d'accès
+- gestion de projet basique (tickets, jalons, pulls request, wiki, stats...)
 
-```
-A -- B -- C
-           \
-            D -- E
-```
+## Créer un projet
 
-![](github_accueil.png)
+- à partir d'un projet existant : fork
+- nouveau projet : ![](github_nouveau_projet.png)
 
-* * * *
+## Gestion des collaborateurs
 
-![](github_issue_3.png)
+![](github_collaborateurs.png)  
 
-* * * *
+## Ajouter un jalon
 
-![](github_issue_3.png)
+![](github_milestone.png)
 
-* * * *
+## Voir les jalons
 
 ![](github_milestone_2.png)
 
-* * * *
+## Ajouter un ticket
 
-![](github_collaborateurs.png)  
+![](github_issue.png)
 
-* * * *
+## Voir les tickets
 
-![](github_issue_4.png)
+![](github_issue_2.png)      
 
-* * * *
+## Fermer un ticket
 
-![](github_milestone.png)
+- via l'interface web
+- via les messages de commit : `close #1`
 
-* * * *
+![](github_issue_3.png)
 
-![](github_issue_2.png)      
 
-* * * *
 
-![](github_issue.png)
+# Gestion de code source avec git 
+
+## Git
+
+- système de gestion de code source 
+- fonctionnalités : journalisation, synchronisation...
+- implémentations : client console, gui
+- notions principales : 
+    - commit 
+    - dépôt  
+
+## Notion de commit
+
+- état des fichiers versionnés
+- seules les modifications par rapport au commit précédent sont stockées
+- branches
+- historique des commits
+
+```
+            H -- I
+           /
+A -- B -- C -- F -- G
+      \      /
+       D -- E
+```
+
+## Notion de dépôt (repository)
+
+- ensemble des commits du projet
+- système décentralisé : 
+    - chaque collaborateur a un dépôt complet et équivalent
+    - les dépôts peuvent se synchroniser
+    - souvent, on synchronise via un dépôt sur un serveur (github)
+
+![](concepts_depots_git.svg)
+
+## Workflow git
 
-* * * *
+- initialisations :
+    - configurer le client git 
+    - créer un dépôt git 
+- déroulement du projet :
+    - ajouter, modifier, supprimer des fichiers 
+    - valider les modifications (commit)
+    - récupérer les modifications du serveur (pull)
+    - corriger les conflits éventuels
+    - envoyer les modifications sur le serveur (push)
 
-![](github_nouveau_projet.png)
+## Configurer le client git
 
-* * * *
+- installer git :
+```
+sudo apt-get install git
+```
+- configurer l'utilisateur :
+```
+git config --global user.name "Julien Dehos"
+git config --global user.email dehos@nimpe.org
+```
+- paramétrer le client :
+```
+git config --global core.editor emacs
+git config --global http.proxy http://user:pass@proxyhost:proxyport
+```
 
+## Quelques commandes git
+
+---|---|
+`git clone` | récupère un dépôt |
+`git status` | 	affiche l'état courant des fichiers |
+`git add <fichiers>` | 	demande à Git de versionner des fichiers |
+`git mv <nom1> <nom2>` | renomme des fichiers versionnés |
+`git rm <fichiers>` | supprime des fichiers versionnés |
+`git commit <fichiers>` | 	valide les modifications des fichiers spécifiés |
+`git commit -a` | 	valide les modifications de tous les fichiers versionnés |
+`git commit -am "message"` | valide les modifications avec le message donné |
+`git log` |	affiche la liste des commits |
+`git diff` | affiche les modifications courantes (par rapport au dernier commit)|
+`git checkout -- .` | 	supprime les modifications courantes (revient au commit) |
+`git pull` | récupère les modifications du dépôt distant et les intègre dans le dépôt local |
+`git push ` | envoie les commits du dépôt local sur le dépôt distant |
 
+## Quelques conseils
+
+- faire des commits réguliers et correspondant à des petites tâches successives (ou à des tickets)
+- ne pas commiter un projet cassé (par exemple, du code qui ne compile pas)
+- ne pas versionner les fichiers auto-générés
+- utiliser `git mv` et `git rm` pour déplacer et supprimer des fichiers commités
+- éviter les conflits potentiels en organisant le travail de telle sorte que les intervenants aient à travailler sur des fichiers différents
 
 
+## Récupérer un dépôt github
 
-```console
+```
 $ git clone https://juliendehos@github.com/juliendehos/projet_l3
+
 Clonage dans 'projet_l3'...
 remote: Counting objects: 3, done.
 remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
@@ -196,10 +278,13 @@ Dépaquetage des objets: 100% (3/3), fait.
 Vérification de la connectivité... fait.
 ```
 
-```console
+## Ajouter des fichiers
+
+```
 $ git add proto.cpp Makefile 
 
 $ git status
+
 Sur la branche master
 Votre branche est à jour avec 'origin/master'.
 Modifications qui seront validées :
@@ -207,14 +292,24 @@ Modifications qui seront validées :
 
 	nouveau fichier : Makefile
 	nouveau fichier : proto.cpp
+```
+
+## Valider un commit
 
-$ git commit -am "close #1"
-[master eab4260] close #1
+```
+$ git commit -am "mise en place du code, close #1"
+
+[master eab4260] mise en place du code, close #1
  2 files changed, 9 insertions(+)
  create mode 100644 Makefile
  create mode 100644 proto.cpp
+```
 
+## Envoyer des commits sur un serveur 
+
+```
 $ git push
+
 Password for 'https://juliendehos@github.com': 
 Décompte des objets: 4, fait.
 Delta compression using up to 4 threads.
@@ -226,22 +321,19 @@ To https://juliendehos@github.com/juliendehos/projet_l3
 ```
 
 
-# Gestion de projets avec github
-
-TODO
-
-
 # Travail à réaliser
 
 ## Au début du projet
 
-- créez des comptes et un dépôt sur [github](https://github.com)
+- sur [github](https://github.com) :
+    - créer un compte pour chaque étudiant (ou binôme) du groupe
+    - créer un dépôt pour le groupe (et ajouter les collaborateurs)
 - faire une conception prévisionnelle du logiciel
-- faire un planning prévisionnel (et les tickets correspondant sur github)
+- faire un planning prévisionnel (et les tickets/jalons correspondants sur github)
 
 ## Tout au long du projet
 
-- utiliser git pour réaliser le projet (code, documentations, cahier des charges...)
+- utiliser git pour réaliser le projet (code, documentations, cahier des charges, rapport...)
 - utiliser github pour suivre le déroulement du projet
 - faire le point régulièrement pour mettre à jour la conception du logiciel et la répartition du travail
 

+ 0 - 105
CM2/L3Info_Projets_CM2.tex

@@ -1,105 +0,0 @@
-\documentclass[10pt]{beamer}
-\usepackage{fontspec}
-\usepackage[frenchb]{babel}
-\usepackage{wasysym}
-\usepackage{graphicx}
-\usepackage{hyperref}
-\usepackage[export]{adjustbox}
-\usepackage{minted}
-\usepackage{multicol}
-
-\usepackage{tikz}
-%\usetikzlibrary{shapes}
-%\usetikzlibrary{calc}
-% red, green, blue, cyan , magenta, yellow, black, gray, darkgray, lightgray, brown, lime, olive, orange, pink, purple, teal, violet and white.
-
-%----------------------------------------------------------------------
-
-\usecolortheme[RGB={200,50,150}]{structure}
-\usetheme{Madrid} 
-\setbeamersize{text margin left=1cm, text margin right=1cm} 
-\useoutertheme{umbcfootline} 
-\setfootline{\insertshortauthor \hfill \insertshorttitle \hfill \insertframenumber/\inserttotalframenumber} 
-
-\setcounter{tocdepth}{1}
-
-\AtBeginSection[] {
-  \begin{frame}{\large Sommaire}
-    \tableofcontents[currentsection]
-    \addtocounter{framenumber}{-1}
-  \end{frame}
-} 
-
-\title{ULCO-L3Info-Projets-CM2}
-
-\author[A. Lewandowski, E. Ramat, J. Dehos]{Arnaud Lewandowski, Eric Ramat, Julien Dehos}
-
-\institute{Université du Littoral Côte d'Opale}
-
-%----------------------------------------------------------------------
-
-\begin{document}
-
-\begin{frame}
-  \maketitle
-\end{frame}
-
-\begin{frame}{\large Sommaire}
-  \tableofcontents
-\end{frame}
-
-%----------------------------------------------------------------------
-
-
-\input{section_conception}
-
-\input{section_developpement}
-
-\input{section_outils_redmine}
-
-\input{section_outils_svn}
-
-%\input{section_outils_git}
-
-%----------------------------------------------------------------------
-
-\section{Travail à réaliser}
-
-\begin{frame}{\large \insertsection}
-  \begin{center}
-    \begin{block}{Au début du projet }
-        \begin{itemize}
-        \item faire une conception prévisionnelle du logiciel
-        \item faire un planning prévisionnel en utilisant redmine/github
-        \end{itemize}
-    \end{block} 
-  \end{center}
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{center}
-    \begin{block}{Tout au long du projet }
-        \begin{itemize}
-            \item utiliser svn/git pour réaliser le projet \\
-                (code, documentations, cahier des charges…)
-            \item utiliser redmine/github pour suivre le déroulement du projet
-            \item faire le point régulièrement pour mettre à jour la conception du logiciel et la répartition du travail
-        \end{itemize}
-    \end{block} 
-  \end{center}
-\end{frame}
-
-%----------------------------------------------------------------------
-
-\begin{frame}
-  \begin{center}
-  Fin du CM2
-  \end{center}
-\end{frame}
-
-%----------------------------------------------------------------------
-
-\end{document}
-
-%----------------------------------------------------------------------
-

+ 0 - 7
CM2/Makefile

@@ -1,7 +0,0 @@
-
-all: 
-	xelatex -shell-escape L3Info_Projets_CM2.tex
-
-clean:
-	rm *.aux *.log *.out *.nav *.toc *.pyg *.snm *.vrb
-

+ 0 - 63
CM2/beamerinnerthemeumbcboxes.sty

@@ -1,63 +0,0 @@
-\ProvidesPackage{beamerinnerthemeumbcboxes}[2004/12/20 v1.0 for beamer 3.01]
-
-% Here we define two new environments, displaybox and onlinebox,
-% draw fancy boxes around text and equations.
-% 
-% Usage:
-%
-% \documentclass{beamer}
-% \usetheme{umbc4}
-% \useinnertheme{umbcboxes}
-% \setbeamercolor{umbcboxes}{bg=violet!15,fg=black}
-% ...
-% \begin{displaybox}{5cm}
-% \[ a^2 + b^2 = c^2 \]
-% \end{displaybox}
-% ...
-% This is an \begin{onlinebox}{24mm} online box.\end{onlinebox}
-% 
-% Rouben Rostamian <rostamian@umbc.edu>
-
-\mode<presentation>
-
-% The default box color.  The user is expected to override this.
-\setbeamercolor{umbcboxes}{bg=structure!15!normal text.bg,fg=black}
-
-% \newenvironment{displaybox}[1]{
-% \begin{columns}\begin{column}{#1}
-% \begin{beamerboxesrounded}[lower=umbcboxes,shadow=true]{}}
-% {\end{beamerboxesrounded}\end{column}\end{columns}}
-% 
-% \newenvironment{onlinebox}[1]{
-% \newbox\@mybox
-% \setbox\@mybox\hbox\bgroup\begin{minipage}{#1}
-% \begin{beamerboxesrounded}[lower=umbcboxes,shadow=true]{}%
-%   \centering\vspace{-2pt}}
-% {\end{beamerboxesrounded}\end{minipage}\egroup%
-%   \hspace{0.0em}\raisebox{1pt}{\usebox\@mybox}\hspace{0.5em}}
-
-\newenvironment{displaybox}[1]
-{
-  \centerline\bgroup\hfill
-  \begin{beamerboxesrounded}[lower=umbcboxes,shadow=true,width=#1]{}
-}
-{
-  \end{beamerboxesrounded}\hfill\egroup
-}
-
-\newenvironment{onlinebox}[1]
-{
-  \newbox\@mybox
-  \newdimen\@myboxht
-  \setbox\@mybox\hbox\bgroup%
-    \begin{beamerboxesrounded}[lower=umbcboxes,shadow=true,width=#1]{}
-  \centering
-}
-{
-  \end{beamerboxesrounded}\egroup
-  \@myboxht\ht\@mybox
-  \raisebox{-0.25\@myboxht}{\usebox\@mybox}\hspace{2pt}
-}
-
-\mode<all>
-

+ 0 - 69
CM2/beamerinnerthemeumbctribullets.sty

@@ -1,69 +0,0 @@
-\ProvidesPackage{beamerinnerthemeumbctribullets}[2004/12/14 v1.0 for beamer 3.01]
-
-% Beamer inner theme
-% Set enumi, enumii, enumiii markers to triangles with shadows
-% 
-% Usage:
-%
-%    \useinnertheme{umbctribullets}
-% 
-% The color of the triangles may be changed with the command:
-% 
-%    \umbctribulletscolors{colori}{colorii}{coloriii}
-%
-% For example:
-% 
-%    \umbctribulletscolors{structure!60!bg}{structure!60!bg}{red}
-%    
-% 
-% Rouben Rostamian <rostamian@umbc.edu>
-
-
-\mode<presentation>
-
-% added 2007-05-05
-\usepackage{pgfcomp-version-0-65}
-
-% Draws a right-pointing triangle in color #1.
-\newcommand{\umbc@filledTriangle}[1]{%
-  \pgfmoveto{\pgfxy(0,-1)}
-  \pgflineto{\pgfxy(0,1)}
-  \pgflineto{\pgfxy(1,0)}
-  \pgfclosepath
-  \color{#1}
-  \pgffill}
-
-% Draws three overlapping triangles to achieve a shadow effect.
-% The non-shadow trangle is drawn in color #1.
-\newcommand{\umbc@tribullets}[1]{{       % two braces to localize \pgfsetxvec
-  \pgfsetxvec{\pgfpoint{0.75ex}{0pt}}   % x-scale
-  \pgfsetyvec{\pgfpoint{0pt}{0.75ex}}   % y-scale
-  \begin{pgfpicture}{-0.1ex}{-0.6ex}{1.2ex}{-0.6ex}  % clipping
-    \pgftranslateto{\pgfxy(0.15,-.30)}
-    \pgftranslateto{\pgfxy(-0.05,.10)}\umbc@filledTriangle{black!20!bg}
-    \pgftranslateto{\pgfxy(-0.05,.10)}\umbc@filledTriangle{black!75!bg}
-    \pgftranslateto{\pgfxy(-0.05,.10)}\umbc@filledTriangle{#1}
-  \end{pgfpicture}}}
-
-% hook to let user change the tribullets colors for enumi, enumii, enumiii
-\newcommand{\umbctribulletscolors}[3]{%
-  \def\umbc@tribulletscoli{#1}
-  \def\umbc@tribulletscolii{#2}
-  \def\umbc@tribulletscoliii{#3}
-}
-
-% set default colors for enumi, enumii, enumiii
-\umbctribulletscolors{red}{blue}{orange!40!yellow}
-
-\defbeamertemplate{itemize item}{umbctribullets}{%
-  \umbc@tribullets{\umbc@tribulletscoli}}
-
-\defbeamertemplate{itemize subitem}{umbctribullets}{%
-  \small\umbc@tribullets{\umbc@tribulletscolii}}
-
-\defbeamertemplate{itemize subsubitem}{umbctribullets}{
-  \footnotesize\umbc@tribullets{\umbc@tribulletscoliii}}
-
-\setbeamertemplate{items}[umbctribullets]
-
-\mode<all>

+ 0 - 37
CM2/beamerouterthemeumbcfootline.sty

@@ -1,37 +0,0 @@
-\ProvidesPackage{beamerouterthemeumbcfootline}[2004/11/27 v1.0 for beamer 3.01]
-
-% A Beamer outer theme to put footlines on slides
-% 
-% The user can override the default contents of the footline
-% through the command \setfootline{whatever}
-% 
-% Rouben Rostamian <rostamian@umbc.edu>
-
-\mode<presentation>
-
-% the default contents of footline
-\newcommand{\umbc@footline}{%
-  \insertshortauthor, \insertshortinstitute
-  \hfill
-  \insertshorttitle
-  \ifx\insertsubtitle\@empty\else, \insertshortsubtitle\fi
-  \hfill
-  \insertframenumber/\inserttotalframenumber}
-
-% color definition as in beamerouterthemeinfolines.sty
-\setbeamercolor{umbc@ftcolor}{parent=palette secondary}
-
-\setbeamertemplate{footline}{%
-  \usebeamerfont{structure}
-  \begin{beamercolorbox}[wd=\paperwidth,ht=2.25ex,dp=1ex]{umbc@ftcolor}%
-    \Tiny\hspace*{4mm}\umbc@footline\hspace{4mm}
-  \end{beamercolorbox}}
-
-% The user can override the default \umbc@footline by \setfootline{whatever}
-\newcommand{\setfootline}[1]{\renewcommand{\umbc@footline}{#1}}
-
-% don't show navigation buttons
-\setbeamertemplate{navigation symbols}{}
-
-\mode<all>
-

+ 0 - 28
CM2/beamerthemeumbc2.sty

@@ -1,28 +0,0 @@
-\ProvidesPackage{beamerthemeumbc2}[2004/12/19 v1.0 for beamer 3.01]
-
-% A slightly modified version of the Classic theme (beamer 2.21) and
-% and the Singapore theme (beamer 3.01).
-% 
-% Usage:
-% 
-% \documentclass{beamer}
-% \usetheme{umbc2}
-% ...
-% Rouben Rostamian <rostamian@umbc.edu>
-
-\mode<presentation>
-
-% vertical shading for header
-\setbeamercolor{section in head/foot}{use=structure,bg=structure.fg!25!bg}
-\AtBeginDocument{%
-  {\usebeamercolor{section in head/foot}}
-  \pgfdeclareverticalshading{beamer@headfade}{\paperwidth}{%
-    color(0cm)=(bg); color(1.5cm)=(section in head/foot.bg) }
-  \setbeamercolor{section in head/foot}{bg=}
-}
-\addtoheadtemplate{\pgfuseshading{beamer@headfade}\vskip-1.5cm}{}
-
-\setbeamertemplate{items}[ball]   % 3-D balls for itemize/enumerate
-\useoutertheme{umbcfootline}
-
-\mode<all>

Fichier diff supprimé car celui-ci est trop grand
+ 221 - 0
CM2/concepts_depots_git.svg


BIN
CM2/images/SVN_Server_Client_Structure.png


BIN
CM2/images/rapidsvn_accueil.png


BIN
CM2/images/rapidsvn_checkout1.png


BIN
CM2/images/rapidsvn_checkout2.png


BIN
CM2/images/rapidsvn_commit1.png


BIN
CM2/images/rapidsvn_commit2.png


BIN
CM2/images/rapidsvn_config.png


BIN
CM2/images/rapidsvn_modif1.png


BIN
CM2/images/rapidsvn_modif2.png


BIN
CM2/images/rapidsvn_resolve1.png


BIN
CM2/images/rapidsvn_resolve2.png


BIN
CM2/images/rapidsvn_resolve3.png


BIN
CM2/images/rapidsvn_resolve4.png


BIN
CM2/images/rapidsvn_resolve5.png


BIN
CM2/images/rapidsvn_update.png


BIN
CM2/images/redmine_0.png


BIN
CM2/images/redmine_1.png


BIN
CM2/images/redmine_2.png


BIN
CM2/images/redmine_3.png


BIN
CM2/images/redmine_4.png


BIN
CM2/images/svn_ci1.png


BIN
CM2/images/svn_ci2.png


BIN
CM2/images/svn_co1.png


BIN
CM2/images/svn_co2.png


BIN
CM2/images/svn_co3.png


BIN
CM2/images/svn_co4.png


BIN
CM2/images/svn_co5.png


BIN
CM2/images/svn_co6.png


BIN
CM2/images/svn_co7.png


BIN
CM2/images/svn_conflit1.png


BIN
CM2/images/svn_conflit2.png


BIN
CM2/images/svn_conflit3.png


BIN
CM2/images/svn_conflit4.png


+ 0 - 711
CM2/minted.sty

@@ -1,711 +0,0 @@
-%%
-%% This is file `minted.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% minted.dtx  (with options: `package')
-%% Copyright 2010--2011 Konrad Rudolph
-%% 
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%% 
-%% Additionally, the project may be distributed under the terms of the new BSD
-%% license.
-%% 
-%% This work has the LPPL maintenance status `maintained'.
-%% 
-%% The Current Maintainer of this work is Konrad Rudolph.
-%% 
-%% This work consists of the files minted.dtx and minted.ins
-%% and the derived file minted.sty.
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{minted}[2013/12/21 v2.0-alpha3 ]
-\RequirePackage{keyval}
-\RequirePackage{kvoptions}
-\RequirePackage{fancyvrb}
-\RequirePackage{float}
-\RequirePackage{ifthen}
-\RequirePackage{calc}
-\RequirePackage{ifplatform}
-\RequirePackage{pdftexcmds}
-\RequirePackage{etoolbox}
-\RequirePackage{xstring}
-\AtBeginDocument{\@ifpackageloaded{color}{}{\RequirePackage{xcolor}}}
-\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
-\DeclareVoidOption{section}{\def\minted@float@within{section}}
-\newboolean{minted@cache}
-\DeclareVoidOption{cache}{%
-  \minted@cachetrue
-  \AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}%
-}
-\StrSubstitute{\jobname}{ }{_}[\minted@jobname]
-\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
-\StrSubstitute{\minted@jobname}{*}{-}[\minted@jobname]
-\newcommand{\minted@cachedir}{.minted-\minted@jobname}
-\let\minted@cachedir@windows\minted@cachedir
-\define@key{minted}{cachedir}{%
-  \@namedef{minted@cachedir}{#1}%
-  \StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]}
-\let\minted@outputdir\@empty
-\let\minted@outputdir@windows\@empty
-\define@key{minted}{outputdir}{%
-  \@namedef{minted@outputdir}{#1/}%
-  \StrSubstitute{\minted@outputdir}{/}%
-    {\@backslashchar}[\minted@outputdir@windows]}
-\newboolean{minted@langlinenos}
-\DeclareVoidOption{langlinenos}{\minted@langlinenostrue}
-\ProcessKeyvalOptions*
-\newcommand{\minted@infile}{\jobname.out.pyg}
-\newcommand{\minted@cachefiles}{}
-\newcommand{\minted@addcachefile}[1]{%
-  \expandafter\gdef\expandafter\minted@cachefiles\expandafter{%
-    \minted@cachefiles,#1}%
-  \expandafter\gdef\csname minted@current@#1\endcsname{}%
-}
-\newcommand{\minted@savecachefiles}{%
-  \immediate\write\@mainaux{%
-    \string\gdef\string\minted@oldcachefiles\string{%
-      \minted@cachefiles\string}}%
-}
-\newcommand{\minted@cleancache}{%
-  \ifthenelse{\boolean{minted@cache}}{%
-    \ifcsname minted@oldcachefiles\endcsname
-      \renewcommand{\do}[1]{%
-        \ifthenelse{\equal{##1}{}}{}{%
-          \ifcsname minted@current@##1\endcsname\else
-            \DeleteFile[\minted@outputdir\minted@cachedir]{##1.pygtex}%
-          \fi
-        }%
-      }%
-      \expandafter\docsvlist\expandafter{\minted@oldcachefiles}%
-    \else
-    \fi
-  }{}%
-}
-\ifthenelse{\boolean{minted@cache}}%
-  {\AtEndDocument{%
-    \minted@savecachefiles
-    \minted@cleancache}}%
-  {}%
-\ifwindows
-  \providecommand{\DeleteFile}[2][]{%
-    \ifthenelse{\equal{#1}{}}%
-      {\IfFileExists{#2}{\immediate\write18{del "#2"}}{}}%
-      {\IfFileExists{#1/#2}{%
-        \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
-        \immediate\write18{del "\minted@windir\@backslashchar #2"}}{}}}
-\else
-  \providecommand{\DeleteFile}[2][]{%
-    \ifthenelse{\equal{#1}{}}%
-      {\IfFileExists{#2}{\immediate\write18{rm "#2"}}{}}%
-      {\IfFileExists{#1/#2}{\immediate\write18{rm "#1/#2"}}{}}}
-\fi
-\ifwindows
-  \newcommand{\ProvideDirectory}[1]{%
-    \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
-    \immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}}
-\else
-  \newcommand{\ProvideDirectory}[1]{%
-    \immediate\write18{mkdir -p "#1"}}
-\fi
-\newboolean{AppExists}
-\newread\minted@appexistsfile
-\newcommand{\TestAppExists}[1]{
-  \ifwindows
-    \DeleteFile{\jobname.aex}
-    \immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd)
-      do set >\jobname.aex <nul: /p
-      x=\string^\@percentchar \string~$PATH:i>>\jobname.aex}
-    %$ <- balance syntax highlighting
-    \immediate\openin\minted@appexistsfile\jobname.aex
-    \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar}
-    \endlinechar=-1\relax
-    \readline\minted@appexistsfile to \minted@apppathifexists
-    \endlinechar=\@tmp@cr
-    \ifthenelse{\equal{\minted@apppathifexists}{}}
-     {\AppExistsfalse}
-     {\AppExiststrue}
-    \immediate\closein\minted@appexistsfile
-    \DeleteFile{\jobname.aex}
-    \immediate\typeout{file deleted}
-  \else
-    \immediate\write18{which #1 && touch \jobname.aex}
-    \IfFileExists{\jobname.aex}
-      {\AppExiststrue
-        \DeleteFile{\jobname.aex}}
-      {\AppExistsfalse}
-  \fi
-}
-\newcommand{\minted@optg}{}
-\let\minted@lang\@empty
-\newcommand{\minted@optlang}{}
-\newcommand{\minted@optcmd}{}
-\newcommand{\minted@checklang}{%
-  \ifcsname minted@optlang\minted@lang\endcsname\else
-    \expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
-  \fi
-  \ifcsname minted@optlang\minted@lang @extra\endcsname\else
-    \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
-  \fi
-}
-\newcommand{\minted@resetoptcmd}{%
-  \@namedef{minted@optcmd@extra}{}%
-  \let\minted@optcmd@autogobble\relax}
-\newcommand{\minted@getoptg}[1]{%
-  \expandafter\detokenize%
-  \expandafter\expandafter\expandafter{\csname minted@optg@#1\endcsname}}
-\newcommand{\minted@getoptlang}[1]{%
-  \expandafter\detokenize\expandafter\expandafter\expandafter{%
-    \csname minted@optlang\minted@lang @#1\endcsname}}
-\newcommand{\minted@getoptcmd}[1]{%
-  \expandafter\detokenize%
-  \expandafter\expandafter\expandafter{\csname minted@optcmd@#1\endcsname}}
-\newcommand{\minted@regoptg}[1]{%
-  \ifcsname minted@optg@#1@reg\endcsname\else
-    \expandafter\let\csname minted@optg@#1@reg\endcsname\@empty
-    \expandafter\def\expandafter\minted@optg\expandafter{%
-      \minted@optg\space\minted@getoptg{#1}}%
-  \fi
-}
-\newcommand{\minted@regoptlang}[1]{%
-  \ifcsname minted@optlang\minted@lang @#1@reg\endcsname\else
-    \ifcsname minted@optlang\minted@lang\endcsname\else
-      \expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
-    \fi
-    \expandafter\let\csname minted@optlang\minted@lang @#1@reg\endcsname\@empty
-    \expandafter\let\expandafter\minted@optlang%
-      \csname minted@optlang\minted@lang\endcsname
-    \expandafter\def\expandafter\minted@optlang\expandafter{%
-      \minted@optlang\space\minted@getoptlang{#1}}%
-    \expandafter\let\csname minted@optlang\minted@lang\endcsname\minted@optlang
-    \let\minted@optlang\@empty
-  \fi
-}
-\newcommand{\minted@regoptcmd}[1]{%
-  \ifcsname minted@optcmd@#1@reg\endcsname\else
-    \expandafter\let\csname minted@optcmd@#1@reg\endcsname\@empty
-    \expandafter\def\expandafter\minted@optcmd\expandafter{%
-      \minted@optcmd\space\minted@getoptcmd{#1}}%
-    \expandafter\def\expandafter\minted@resetoptcmd\expandafter{%
-        \minted@resetoptcmd
-        \@namedef{minted@optcmd@#1}{}}
-  \fi
-}
-\newcommand{\minted@define@opt}[4][]{%
-  \ifthenelse{\equal{#1}{}}%
-    {\define@key{minted@optg}{#2}{\@namedef{minted@optg@#2}{#3=#4}%
-        \@namedef{minted@optg@#2@val}{#4}%
-        \minted@regoptg{#2}}%
-      \define@key{minted@optlang}{#2}{%
-        \@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
-        \@namedef{minted@optlang\minted@lang @#2@val}{#4}%
-        \minted@regoptlang{#2}}%
-      \define@key{minted@optcmd}{#2}{\@namedef{minted@optcmd@#2}{#3=#4}%
-        \@namedef{minted@optcmd@#2@val}{#4}%
-        \minted@regoptcmd{#2}}}%
-    {\define@key{minted@optg}{#2}[#1]{\@namedef{minted@optg@#2}{#3=#4}%
-        \@namedef{minted@optg@#2@val}{#4}%
-        \minted@regoptg{#2}}%
-      \define@key{minted@optlang}{#2}[#1]{%
-        \@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
-        \@namedef{minted@optlang\minted@lang @#2@val}{#4}%
-        \minted@regoptlang{#2}}%
-      \define@key{minted@optcmd}{#2}[#1]{\@namedef{minted@optcmd@#2}{#3=#4}%
-        \@namedef{minted@optcmd@#2@val}{#4}%
-        \minted@regoptcmd{#2}}}%
-}
-\newcommand{\minted@define@optstyle}{%
-  \define@key{minted@optg}{style}{%
-    \@namedef{minted@optg@style}{-P style=##1 -P commandprefix=PYG##1}%
-    \minted@regoptg{style}\minted@regstyle{##1}}%
-  \define@key{minted@optlang}{style}{%
-    \@namedef{minted@optlang\minted@lang @style}%
-      {-P style=##1 -P commandprefix=PYG##1}%
-    \minted@regoptlang{style}\minted@regstyle{##1}}%
-  \define@key{minted@optcmd}{style}{%
-    \@namedef{minted@optcmd@style}{-P style=##1 -P commandprefix=PYG##1}%
-    \minted@regoptcmd{style}\minted@regstyle{##1}}%
-}
-\newcommand{\minted@regstyle}[1]{%
-  \ifcsname minted@stylereg@#1\endcsname\else
-    \expandafter\global\expandafter%
-      \let\csname minted@stylereg@#1\endcsname\@empty
-    \ifthenelse{\boolean{minted@cache}}%
-      {\IfFileExists{\minted@outputdir\minted@cachedir/#1.pygstyle}{}{%
-        \ifwindows
-          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
-            -P commandprefix=PYG#1
-            > "\minted@outputdir@windows\minted@cachedir@windows\@backslashchar#1.pygstyle"}%
-        \else
-          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
-            -P commandprefix=PYG#1
-            > "\minted@outputdir\minted@cachedir/#1.pygstyle"}%
-        \fi
-        }%
-        \begingroup
-        \let\def\gdef
-        \endlinechar=-1\relax
-        \input{\minted@outputdir\minted@cachedir/#1.pygstyle}%
-        \endgroup}%
-      {\ifwindows
-          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
-            -P commandprefix=PYG#1 > "\minted@outputdir@windows\jobname.out.pyg"}%
-        \else
-          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
-            -P commandprefix=PYG#1 > "\minted@outputdir\jobname.out.pyg"}%
-        \fi
-        \begingroup
-        \let\def\gdef
-        \endlinechar=-1\relax
-        \input{\minted@outputdir\jobname.out.pyg}%
-        \endgroup}%
-  \fi
-}
-\newcommand{\minted@define@switch}[3][]{
-  \define@booleankey{minted@optg}{#2}
-    {\@namedef{minted@optg@#2}{#3}\minted@regoptg{#2}}
-    {\@namedef{minted@optg@#2}{#1}\minted@regoptg{#2}}
-  \define@booleankey{minted@optlang}{#2}
-    {\@namedef{minted@optlang\minted@lang @#2}{#3}\minted@regoptlang{#2}}
-    {\@namedef{minted@optlang\minted@lang @#2}{#1}\minted@regoptlang{#2}}
-  \define@booleankey{minted@optcmd}{#2}
-    {\@namedef{minted@optcmd@#2}{#3}\minted@regoptcmd{#2}}
-    {\@namedef{minted@optcmd@#2}{#1}\minted@regoptcmd{#2}}
-}
-\newcommand{\minted@define@extra}[1]{
-  \define@key{minted@optg}{#1}{%
-    \expandafter\def\expandafter\minted@optg@extra\expandafter{%
-      \minted@optg@extra,#1=##1}}
-  \@namedef{minted@optg@extra}{}
-  \define@key{minted@optlang}{#1}{%
-    \ifcsname minted@optlang\minted@lang @extra\endcsname\else
-      \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
-    \fi
-    \expandafter\let\expandafter\minted@optlang@extra%
-      \csname minted@optlang\minted@lang @extra \endcsname
-    \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
-      \minted@optlang@extra,#1=##1}%
-    \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
-      \minted@optlang@extra
-    \let\minted@optlang@extra\@empty}%
-  \@namedef{minted@optlang@extra}{}
-  \define@key{minted@optcmd}{#1}{%
-    \expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
-      \minted@optcmd@extra,#1=##1}}
-  \@namedef{minted@optcmd@extra}{}
-}
-\newcommand{\minted@define@extra@switch}[1]{
-  \define@booleankey{minted@optg}{#1}
-    {\expandafter\def\expandafter\minted@optg@extra\expandafter{%
-      \minted@optg@extra,#1}}
-    {\expandafter\def\expandafter\minted@optg@extra\expandafter{%
-      \minted@optg@extra,#1=false}}
-  \define@booleankey{minted@optlang}{#1}
-    {%
-      \ifcsname minted@optlang\minted@lang @extra\endcsname\else
-        \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
-      \fi
-      \expandafter\let\expandafter\minted@optlang@extra%
-        \csname minted@optlang\minted@lang @extra\endcsname
-      \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
-        \minted@optlang@extra,#1}%
-      \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
-        \minted@optlang@extra
-      \let\minted@optlang@extra\@empty}
-    {%
-      \ifcsname minted@optlang\minted@lang @extra\endcsname\else
-        \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
-      \fi
-      \expandafter\let\expandafter\minted@optlang@extra%
-        \csname minted@optlang\minted@lang @extra\endcsname
-      \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
-        \minted@optlang@extra,#1=false}%
-      \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
-        \minted@optlang@extra
-      \let\minted@optlang@extra\@empty}
-  \define@booleankey{minted@optcmd}{#1}
-    {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
-      \minted@optcmd@extra,#1}}
-    {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
-      \minted@optcmd@extra,#1=false}}
-}
-\minted@define@opt{encoding}{-P encoding}{#1}
-\minted@define@opt{outencoding}{-P outencoding}{#1}
-\minted@define@opt{stripnl}{-P stripnl}{#1}
-\minted@define@switch{python3}{-P python3=True}
-\minted@define@switch[-P funcnamehighlighting=False]%
-  {funcnamehighlighting}{-P funcnamehighlighting}
-\minted@define@switch{startinline}{-P startinline}
-\minted@define@opt{gobble}{-F gobble:n}{#1}
-\minted@define@opt{codetagify}{-F codetagify:codetags}{#1}
-\minted@define@opt{keywordcase}{-F keywordcase:case}{#1}
-\minted@define@switch{texcl}{-P texcomments}
-\minted@define@switch{texcomments}{-P texcomments}
-\minted@define@switch{mathescape}{-P mathescape}
-\minted@define@switch{linenos}{-P linenos}
-\minted@define@optstyle
-\minted@define@extra{frame}
-\minted@define@extra{framesep}
-\minted@define@extra{framerule}
-\minted@define@extra{rulecolor}
-\minted@define@extra{numbersep}
-\minted@define@extra{numbers}
-\minted@define@extra{firstnumber}
-\minted@define@extra{stepnumber}
-\minted@define@extra{firstline}
-\minted@define@extra{lastline}
-\minted@define@extra{baselinestretch}
-\minted@define@extra{xleftmargin}
-\minted@define@extra{xrightmargin}
-\minted@define@extra{fillcolor}
-\minted@define@extra{tabsize}
-\minted@define@extra{fontfamily}
-\minted@define@extra{fontsize}
-\minted@define@extra{fontshape}
-\minted@define@extra{fontseries}
-\minted@define@extra{formatcom}
-\minted@define@extra{label}
-\minted@define@extra@switch{numberblanklines}
-\minted@define@extra@switch{showspaces}
-\minted@define@extra@switch{resetmargins}
-\minted@define@extra@switch{samepage}
-\minted@define@extra@switch{showtabs}
-\minted@define@extra@switch{obeytabs}
-\let\minted@optcmd@bgcolor\@empty
-\define@key{minted@optcmd}{bgcolor}{\@namedef{minted@optcmd@bgcolor}{#1}}
-\newcommand{\minted@encoding}{%
-  \ifcsname minted@optcmd@encoding@val\endcsname
-    \csname minted@optcmd@encoding@val\endcsname
-  \else
-    \ifcsname minted@optlang\minted@lang @encoding@val\endcsname
-      \csname minted@optlang\minted@lang @encoding@val\endcsname
-    \else
-      \ifcsname minted@optg@encoding@val\endcsname
-        \csname minted@optg@encoding@val\endcsname
-      \else
-        UTF8%
-      \fi
-    \fi
-  \fi
-}
-\define@booleankey{minted@optg}{autogobble}
-    {\expandafter\let\csname minted@optg@autogobble\endcsname\@empty}
-    {\expandafter\let\csname minted@optg@autogobble\endcsname\relax}
-\define@booleankey{minted@optlang}{autogobble}
-    {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\@empty}
-    {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax}
-\define@booleankey{minted@optcmd}{autogobble}
-    {\expandafter\let\csname minted@optcmd@autogobble\endcsname\@empty}
-    {\expandafter\let\csname minted@optcmd@autogobble\endcsname\relax}
-\newboolean{minted@autogobble}
-\newcommand{\minted@set@autogobble}{%
-  \ifcsname minted@optg@autogobble\endcsname\else
-    \expandafter\let\csname minted@optg@autogobble\endcsname\relax
-  \fi
-  \ifcsname minted@optlang\minted@lang @autogobble\endcsname\else
-    \expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax
-  \fi
-  \ifcsname minted@optcmd@autogobble\endcsname\else
-    \expandafter\let\csname minted@optcmd@autogobble\endcsname\relax
-  \fi
-  \expandafter\ifx\csname minted@optcmd@autogobble\endcsname\@empty
-    \setboolean{minted@autogobble}{true}%
-  \else
-    \expandafter\ifx\csname minted@optlang\minted@lang @autogobble\endcsname\@empty
-      \setboolean{minted@autogobble}{true}%
-    \else
-      \expandafter\ifx\csname minted@optg@autogobble\endcsname\@empty
-        \setboolean{minted@autogobble}{true}%
-      \else
-        \setboolean{minted@autogobble}{false}%
-      \fi
-    \fi
-  \fi
-}
-\newsavebox{\minted@bgbox}
-\newenvironment{minted@colorbg}[1]{
-    %\setlength{\fboxsep}{-\fboxrule}
-    \def\minted@bgcol{#1}
-    \noindent
-    \begin{lrbox}{\minted@bgbox}
-    \begin{minipage}{\linewidth-2\fboxsep}}
- {\end{minipage}
-    \end{lrbox}%
-    \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}}
-\newwrite\minted@code
-\newcommand{\minted@savecode}[1]{
-  \immediate\openout\minted@code\jobname.pyg\relax
-  \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}%
-  \immediate\closeout\minted@code}
-\newcommand{\minted@write@detok}[1]{%
-  \immediate\write\FV@OutFile{\detokenize{#1}}}
-\newcommand{\minted@FVB@VerbatimOut}[1]{%
-  \@bsphack
-  \begingroup
-    \FV@UseKeyValues
-    \FV@DefineWhiteSpace
-    \def\FV@Space{\space}%
-    \FV@DefineTabOut
-    \let\FV@ProcessLine\minted@write@detok
-    \immediate\openout\FV@OutFile #1\relax
-    \let\FV@FontScanPrep\relax
-    \let\@noligs\relax
-    \FV@Scan}
-\newcommand{\MintedPygmentize}{pygmentize}
-\newcommand{\minted@pygmentize}[2][\jobname.pyg]{%
-  \minted@checklang
-  \minted@set@autogobble
-  \ifthenelse{\boolean{minted@autogobble}}%
-    {\def\minted@codefile{\jobname.pyg}}%
-    {\def\minted@codefile{#1}}%
-  \def\minted@cmd{\MintedPygmentize\space -l #2
-    -f latex -F tokenmerge
-    \minted@optg \space \csname minted@optlang\minted@lang\endcsname
-    \space \minted@optcmd \space -P "verboptions=\minted@getoptg{extra}%
-      \minted@getoptlang{extra}\minted@getoptcmd{extra}"
-    -o "\minted@outputdir\minted@infile" \space
-    "\minted@outputdir\minted@codefile"}%
-  % For debugging, uncomment:
-  % \immediate\typeout{\minted@cmd}%
-  \ifthenelse{\boolean{minted@cache}}%
-    {%
-      \expandafter\ifx\csname XeTeXinterchartoks\endcsname\relax
-        \ifthenelse{\boolean{minted@autogobble}}%
-          {\edef\minted@hash{\pdf@filemdfivesum{#1}%
-            \pdf@mdfivesum{\minted@cmd autogobble}}}%
-          {\edef\minted@hash{\pdf@filemdfivesum{#1}%
-            \pdf@mdfivesum{\minted@cmd}}}%
-      \else
-        \immediate\openout\minted@code\jobname.mintedcmd\relax
-        \immediate\write\minted@code{\minted@cmd}%
-        \ifthenelse{\boolean{minted@autogobble}}%
-          {\immediate\write\minted@code{autogobble}}{}%
-        \immediate\closeout\minted@code
-        %Cheating a little here by using ASCII codes to write `{` and `}`
-        %in the Python code
-        \def\minted@hashcmd{%
-          \detokenize{python -c "import hashlib;
-            hasher = hashlib.sha1();
-            f = open(\'}\minted@outputdir\jobname.mintedcmd\detokenize{\', \'rb\');
-            hasher.update(f.read());
-            f.close();
-            f = open(\'}\minted@outputdir#1\detokenize{\', \'rb\');
-            hasher.update(f.read());
-            f.close();
-            f = open(\'}\minted@outputdir\jobname.mintedmd5\detokenize{\', \'w\');
-            macro = \'\\edef\\minted@hash\' + chr(123) + hasher.hexdigest() + chr(125) + \'\';
-            f.write(\'\\makeatletter\' + macro + \'\\makeatother\n\');
-            f.close();"}}%
-        \immediate\write18{\minted@hashcmd}
-        \input{\minted@outputdir\jobname.mintedmd5}%
-      \fi
-      \ifwindows
-        \edef\minted@infile{%
-          \minted@cachedir@windows\@backslashchar\minted@hash.pygtex}%
-      \else
-        \edef\minted@infile{%
-          \minted@cachedir/\minted@hash.pygtex}%
-      \fi
-      \IfFileExists{\minted@cachedir/\minted@hash.pygtex}{}{%
-        \ifthenelse{\boolean{minted@autogobble}}{%
-          %Need a version of open() that supports encoding under Python 2
-          \edef\minted@autogobblecmd{%
-            \detokenize{python -c "import sys;
-            import textwrap;
-            from io import open;
-            f = open(\'}\minted@outputdir#1\detokenize{\', \'r\', encoding=\'}\minted@encoding\detokenize{\');
-            t = f.read();
-            f.close();
-            f = open(\'}\minted@outputdir\jobname.pyg\detokenize{\', \'w\', encoding=\'}\minted@encoding\detokenize{\');
-            f.write(textwrap.dedent(t));
-            f.close();"}%
-          }%
-          \immediate\write18{\minted@autogobblecmd}}{}%
-        \immediate\write18{\minted@cmd}}%
-      \expandafter\minted@addcachefile\expandafter{\minted@hash}%
-      \minted@inputpyg}%
-    {%
-      \ifthenelse{\boolean{minted@autogobble}}{%
-        %Need a version of open() that supports encoding under Python 2
-        \edef\minted@autogobblecmd{%
-          \detokenize{python -c "import sys;
-          import textwrap;
-          from io import open;
-          f = open(\'}\minted@outputdir#1\detokenize{\', \'r\', encoding=\'}\minted@encoding\detokenize{\');
-          t = f.read();
-          f.close();
-          f = open(\'}\minted@outputdir\jobname.pyg\detokenize{\', \'w\', encoding=\'}\minted@encoding\detokenize{\');
-          f.write(textwrap.dedent(t));
-          f.close();"}%
-        }%
-        \immediate\write18{\minted@autogobblecmd}}{}%
-      \immediate\write18{\minted@cmd}%
-      \minted@inputpyg}%
-}
-\newcommand{\minted@inputpyg}{%
-  \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
-    {}%
-    {\begin{minted@colorbg}{\minted@optcmd@bgcolor}}%
-  \input{\minted@outputdir\minted@infile}%
-  \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
-    {}%
-    {\end{minted@colorbg}}%
-}
-\newcounter{minted@FancyVerbLineTemp}
-\newcommand{\minted@langlinenoson}{%
-  \ifcsname c@minted@lang\minted@lang\endcsname\else
-    \newcounter{minted@lang\minted@lang}%
-  \fi
-  \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
-  \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}%
-}
-\newcommand{\minted@langlinenosoff}{%
-  \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}%
-  \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
-}
-\ifthenelse{\boolean{minted@langlinenos}}{}{%
-  \let\minted@langlinenoson\relax
-  \let\minted@langlinenosoff\relax
-}
-\newcommand{\setminted}[2][]{%
-  \ifthenelse{\equal{#1}{}}%
-    {\setkeys{minted@optg}{#2}}%
-    {\def\minted@lang{#1}\setkeys{minted@optlang}{#2}}%
-}
-\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
-\newcommand{\mintinline}[2][]{%
-  \minted@resetoptcmd
-  \setkeys{minted@optcmd}{#1}%
-  \def\minted@lang{#2}%
-  \begingroup
-  \let\do\@makeother\dospecials
-  \catcode`\{=1
-  \catcode`\}=2
-  \catcode`\^^I=\active
-  \@ifnextchar\bgroup
-    {\minted@inline@iii}%
-    {\catcode`\{=12\catcode`\}=12
-      \minted@inline@i}}
-\def\minted@inline@i#1{%
-  \endgroup
-  \def\minted@inline@ii##1#1{%
-    \minted@inline@iii{##1}}%
-  \begingroup
-  \let\do\@makeother\dospecials
-  \minted@inline@ii}
-\newcommand{\minted@inline@iii}[1]{%
-  \endgroup
-  \immediate\openout\minted@code\jobname.pyg\relax
-  \immediate\write\minted@code{\detokenize{#1}}%
-  \immediate\closeout\minted@code
-  \begingroup
-  \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
-  \minted@pygmentize{\minted@lang}%
-  \endgroup}
-\newcommand{\mint}[3][]{%
-  \def\minted@lang{#2}%
-  \DefineShortVerb{#3}%
-  \minted@resetoptcmd
-  \setkeys{minted@optcmd}{#1}%
-  \SaveVerb[aftersave={%
-    \UndefineShortVerb{#3}%
-    \minted@savecode{\FV@SV@minted@verb}%
-    \minted@langlinenoson
-    \minted@pygmentize{#2}
-    \minted@langlinenosoff}]{minted@verb}#3}
-\newenvironment{minted}[2][]
-  {\VerbatimEnvironment
-    \let\FVB@VerbatimOut\minted@FVB@VerbatimOut
-    \def\minted@lang{#2}%
-    \minted@resetoptcmd
-    \setkeys{minted@optcmd}{#1}%
-    \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\jobname.pyg}}%
- {\end{VerbatimOut}%
-    \minted@langlinenoson
-    \minted@pygmentize{\minted@lang}%
-    \minted@langlinenosoff}
-\newcommand{\inputminted}[3][]{%
-  \def\minted@lang{#2}%
-  \minted@resetoptcmd
-  \setkeys{minted@optcmd}{#1}%
-  \minted@pygmentize[#3]{#2}}
-\newcommand{\newminted}[3][]{
-  \ifthenelse{\equal{#1}{}}
-    {\def\minted@envname{#2code}}
-    {\def\minted@envname{#1}}
-  \newenvironment{\minted@envname}
-    {\VerbatimEnvironment
-      \begin{minted}[#3]{#2}}
-    {\end{minted}}
-  \newenvironment{\minted@envname *}[1]
-    {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}}
-    {\end{minted}}}
-\newcommand{\newmint}[3][]{
-  \ifthenelse{\equal{#1}{}}
-    {\def\minted@shortname{#2}}
-    {\def\minted@shortname{#1}}
-  \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
-    \mint[#3,##1]{#2}##2}}
-\newcommand{\newmintedfile}[3][]{
-  \ifthenelse{\equal{#1}{}}
-    {\def\minted@shortname{#2file}}
-    {\def\minted@shortname{#1}}
-  \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
-    \inputminted[#3,##1]{#2}{##2}}}
-\newcommand{\newmintinline}[3][]{%
-  \ifthenelse{\equal{#1}{}}%
-    {\def\minted@shortname{#2inline}}%
-    {\def\minted@shortname{#1}}%
-    \expandafter\newcommand\csname\minted@shortname\endcsname{%
-      \begingroup
-      \let\do\@makeother\dospecials
-      \catcode`\{=1
-      \catcode`\}=2
-      \@ifnextchar[{\endgroup\minted@inliner[#3][#2]}%
-        {\endgroup\minted@inliner[#3][#2][]}}%
-    \def\minted@inliner[##1][##2][##3]{\mintinline[##1,##3]{##2}}%
-}
-\@ifundefined{minted@float@within}
-  {\newfloat{listing}{h}{lol}}
-  {\newfloat{listing}{h}{lol}[\minted@float@within]}
-\newcommand{\listingscaption}{Listing}
-\floatname{listing}{\listingscaption}
-\newcommand{\listoflistingscaption}{List of listings}
-\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
-\AtEndOfPackage{
-  \ifnum\pdf@shellescape=1\relax\else
-    \PackageError{minted}
-     {You must invoke LaTeX with the
-      -shell-escape flag}
-     {Pass the -shell-escape flag to LaTeX. Refer to the minted.sty
-      documentation for more information.}%
-  \fi
-  \TestAppExists{pygmentize}
-  \ifAppExists\else
-    \PackageError{minted}
-     {You must have `pygmentize' installed
-      to use this package}
-     {Refer to the installation instructions in the minted
-      documentation for more information.}
-  \fi
-  \setminted{style=default}%
-}
-\AtEndDocument{
-  \expandafter\ifx\csname XeTeXinterchartoks\endcsname\relax
-  \else
-    \DeleteFile[\minted@outputdir]{\jobname.mintedcmd}%
-    \DeleteFile[\minted@outputdir]{\jobname.mintedmd5}%
-  \fi
-  \DeleteFile[\minted@outputdir]{\jobname.pyg}%
-  \DeleteFile[\minted@outputdir]{\jobname.out.pyg}%
-}
-%% \Finale
-\endinput
-%%
-%% End of file `minted.sty'.

+ 0 - 48
CM2/section_conception.tex

@@ -1,48 +0,0 @@
-
-\section{Conception d'un logiciel}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Quoi-qu'est-ce ?}
-        \begin{itemize}
-            \item "plan du code" (diagrammes de classes…) 
-            \item au début du projet, permet de prévoir le code à écrire
-            \item pendant le projet, permet de suivre l'avancée du projet
-            \item à la fin du projet, permet de documenter le code (maintenance)\\
-            $\rightarrow$ doit correspondre aux fonctionnalités prévues et au code réel
-        \end{itemize}
-    \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{En pratique}
-        \begin{itemize}
-            \item représentation graphique + explications 
-            \item si possible, utiliser un formalisme classique (UML)
-            \item utiliser plusieurs niveaux d'abstraction (vue d'ensemble, vues détaillées)
-        \end{itemize}
-    \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Étape de conception}
-        \begin{itemize}
-            \item étape \textbf{très importante}, à faire avant le développement
-            \item évite "d'avoir à tout casser" au cours du développement
-            \item permet de répartir le travail et de planifier plus finement
-        \end{itemize}
-    \end{block} 
-\end{frame}
-
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Quelques conseils}
-        \begin{itemize}
-            \item faire simple, logique, classique (MVC, design patterns…)
-            \item granularité : ne pas trop détailler sauf si important/incertain/complexe
-            \item vérifier \textbf{a priori} que la conception permet d'implémenter les fonctionnalités prévues dans le cahier des charges
-        \end{itemize}
-    \end{block} 
-\end{frame}
-
-

+ 0 - 150
CM2/section_developpement.tex

@@ -1,150 +0,0 @@
-
-\section{Développement d'un logiciel}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Méthode pour écrire du code}
-    \begin{itemize}
-    \item comprendre le travail à faire (fonctionnalité/classe à implémenter)
-    \item découper en étapes et les ordonner
-    \item implémenter (coder, compiler, tester) étape par étape
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Conseils sur le développement en équipe}
-    \begin{itemize}
-    \item faire le point régulièrement : travail fait, travail à faire
-    \item répartir le travail de façon à éviter les conflits (fichiers différents)
-    \item commits réguliers, branches si nécessaire
-    \item faire attention à respecter le cahier des charges et la conception
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Programmation en binômes}
-    \begin{itemize}
-    \item principe : 
-    \begin{itemize}
-    \item un secrétaire + un relecteur \textbf{sur une même machine}
-    \item les deux participent activement
-    \item changer les rôles fréquemment
-    \end{itemize}
-
-    \item intérêts :
-    \begin{itemize}
-    \item moins d'erreurs
-    \item réflexions complémentaires
-    \item motivation, convivialité (ou pas, mais bon…)
-    \end{itemize}
-
-    \item[$\rightarrow$] à utiliser quand le travail n'est pas complètement trivial 
-    \\(donc tout le temps pour les projets L3)
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Tests unitaires}
-    \begin{itemize}
-    \item souvent : test "avec un printf" $\rightarrow$ pas bien
-    \item principe des tests unitaires :
-    \begin{itemize}
-    \item écrire des petites fonctions de test en même temps que le code
-    \item compiler toutes les fonctions de test dans un programme de test
-    \item exécuter le programme de test
-    \item vérification et non-régression automatiques
-    \item attention : détection d'erreurs $\neq$ preuve
-    \end{itemize}
-    \item[$\rightarrow$] à utiliser pour les modules de base (traitement de données) voire plus
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Programmation par pseudo-code}
-    \begin{itemize}
-    \item principe :
-    \begin{itemize}
-    \item commencer par écrire le pseudo-code de l'algo en commentaire
-    \item traduire chaque ligne de pseudo-code en code réel
-    \item laisser le pseudo-code en commentaire
-    \end{itemize}
-    \item intérêt :
-    \begin{itemize}
-    \item code plus facile à écrire
-    \item code plus facile à relire 
-    \end{itemize}
-    \item[$\rightarrow$] très utile quand le code à écrire n'est pas trivial 
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Gestion d'erreurs}
-    \begin{itemize}
-    \item assertions
-    \item logs
-    \item codes de retour, variables d'état
-    \item exceptions
-    \item[$\rightarrow$] problème difficile
-    \item[$\rightarrow$] se mettre d'accord sur la façon de faire au début du projet
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Conventions de code}
-    \begin{itemize}
-    \item formatage du code, nommage des variables…
-    \item conventions à définir et à respecter au niveau du projet
-    \item permet d'avoir un code plus facile à lire
-    \item utiliser des conventions classiques ou les expliciter dans la documentation
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Exemple de conventions de code C++}
-    \begin{itemize}
-    \item notation dromadaire
-    \item un nom de classe commence par une majuscule : \\ 
-    \mintinline{c++}{class Event ... }
-    \item préfixe \mintinline{c++}{_} pour les attributs : \\ 
-    \mintinline{c++}{std::string _summary;}
-    \item préfixe \mintinline{c++}{ptr} pour les pointeurs : \\
-    \mintinline{c++}{icalcomponent * _ptrIcal;}
-    \item un nom de fonction commence par un verbe : \\ 
-    \mintinline{c++}{void updateDataFromIcal();} \\
-    \mintinline{c++}{icalcomponent * getPtrIcal() const;}
-    \item maximum 80 caractères par ligne
-    \item …
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-
-
-
-
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Quelques outils de développement à décider}
-    \begin{itemize}
-    \item langages, bibliothèques…
-    \item outils de compilation, test, déploiement
-    \item outils de gestion de code source (svn, git…)
-    \item outils de gestion de projets (redmine, trac, github, sourceforge…)
-    \end{itemize}
-  \end{block} 
-\end{frame}
-

+ 0 - 271
CM2/section_outils_git.tex

@@ -1,271 +0,0 @@
-
-\section{Outils de gestion de code source (git)}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion}
-    \begin{itemize}
-    \item système de gestion de code source
-    \item journalisation
-    \item travail collaboratif
-    \item serveur dédié au module projets L3 : \url{https://193.49.201.37/svn/<projet>}
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : principe}
-    \begin{itemize}
-    \item système centralisé
-    \item dépôt sur un serveur
-    \item modifications via des copies locales
-    \end{itemize}
-    \centering
-    \includegraphics[width=7cm,frame]{images/SVN_Server_Client_Structure.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : quelques notions}
-    \begin{itemize}
-    \item \textbf{dépôt (repository) :} données et méta-données
-      du projet, sur le serveur
-    \item \textbf{révision (revision) :} numéro de modification du dépôt
-    \item \textbf{copie de travail (working copy) :} copie locale du
-      projet, sur laquelle un intervenant peut travailler
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : quelques opérations}
-    \begin{itemize}
-    \item \textbf{créer (create) :} créé un dépôt (fait par
-      l'administrateur)
-    \item \textbf{récupérer (checkout) :} récupère les données du
-      projet dans une copie de travail
-    \item \textbf{mettre à jour (update) :} met à jour la copie de travail en
-      récupérant la dernière révision du dépôt
-    \item \textbf{publier (commit) :} envoie, dans le dépôt, les modifications
-      réalisées sur la copie de travail
-    \item \textbf{ajouter (add) :} demande d’ajouter, dans le dépôt,
-      un fichier/répertoire de la copie de travail
-    \item \textbf{supprimer (delete) :} demande de supprimer un
-      fichier/répertoire
-    \item \textbf{résoudre (resolve) :} résout un conflit sur la copie
-      de travail
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : résumé de l'utilisation d'un dépôt SVN}
-    \begin{itemize}
-    \item pour récupérer le dépôt : checkout
-    \item pour mettre à jour le dépôt :
-      \begin{itemize}
-      \item modifier la copie locale, add, delete\dots
-      \item update
-      \item resolve (si besoin)
-      \item commit
-      \end{itemize}
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : bonnes pratiques}
-    \begin{itemize}
-    \item supprimer les fichiers en utilisant la commande svn delete
-    \item ne pas mettre, sur le dépôt, des fichiers générés
-      automatiquement
-    \item avant de publier une modification, vérifier que le code reste
-      valide
-    \item éviter les conflits potentiels en organisant le travail de telle
-      sorte que les intervenants aient à travailler sur des fichiers
-      différents
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}[fragile]{\large \insertsection}
-  \begin{block}{Subversion : configuration du client svn avec proxy}
-    ~\\
-    \begin{minted}[frame=single,label={\~~/.subversion/servers}]{bash}
-  http-proxy-host=...
-  http-proxy-port=...
-  http-proxy-username=...
-  http-proxy-password=...
-    \end{minted}
-  \end{block} 
-\end{frame}
-%http-proxy-host=192.168.22.62
-%http-proxy-port=3128
-%http-proxy-username=tseptemb
-%http-proxy-password=septembre2013
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        créer un nouveau projet de type svn \\~\\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co1.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)}  
-        ~\\ ... \\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co2.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        spécifier le dépot à récupérer \\~\\
-        \centering
-    \includegraphics[width=6cm]{images/svn_co3.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        ~\\ ... \\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co4.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        demander de créer un projet eclipse correspondant \\~\\
-        \centering
-    \includegraphics[width=8cm]{images/svn_co5.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        ~\\ ... \\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co6.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        résultat \\~\\
-        \centering
-    \includegraphics[width=10cm]{images/svn_co7.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : commit (avec eclipse+subversive)} 
-        \texttt{Team > Commit} \\~\\
-        \centering
-    \includegraphics[width=7cm]{images/svn_ci1.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : commit (avec eclipse+subversive)} 
-        résultat \\~\\
-        \centering
-    \includegraphics[width=10cm]{images/svn_ci2.png}
-  \end{block} 
-\end{frame}
-
-
-
-\begin{frame}[fragile]{\large \insertsection}
-  \begin{block}{Subversion : scénario type d'un conflit}
-    \begin{multicols}{2}
-    \begin{enumerate}
-      \scriptsize
-    \item initialement tout le monde est à jour :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
-        \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2};
-        \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Ginette et Roger modifient un même fichier :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
-        \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2'};
-        \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2'};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Ginette fait un update puis un commit :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
-        \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
-        \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2'};
-        \draw [<->,>=latex, thick] (C1) to (D) {};
-        \draw [>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Roger fait un update, il y a un conflit :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
-        \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
-        \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2*};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [<-,>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Roger doit modifier le fichier puis resolve puis commit :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r6};
-        \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
-        \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r4};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [->,>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \end{enumerate}
-    \end{multicols}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : détection d'un conflit}
-    \begin{itemize}
-    \item après un update
-    \item création de 4 fichiers :
-      \begin{itemize}
-      \item fichier avec les modifs locales ("\texttt{readme.txt.mine}")
-      \item fichier avec les modifs du dépôt ("\texttt{readme.txt.r3}")
-      \item fichier à la précédente révision ("\texttt{readme.txt.r2}")
-      \item fichier de résolution ("\texttt{readme.txt}")
-      \end{itemize}
-    \end{itemize}
-    \centering
-    \includegraphics[width=10cm]{images/svn_conflit1.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : résolution d'un conflit}
-        \begin{itemize}
-            \item éditer le fichier (\texttt{Team > Resolve conflicts}) \\
-                \includegraphics[width=10cm]{images/svn_conflit2.png}
-        \end{itemize}
-    \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : résolution d'un conflit}
-        \begin{itemize}
-        \item resolve (\texttt{Team > Mark as merged}) \\
-      \includegraphics[width=10cm]{images/svn_conflit3.png}
-    \item update, commit
-    \end{itemize}
-  \end{block} 
-\end{frame}
-

+ 0 - 62
CM2/section_outils_redmine.tex

@@ -1,62 +0,0 @@
-
-\section{Outils de gestion de projets (redmine)}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Redmine}
-    \begin{itemize}
-      \item application de gestion de projets :
-	\begin{itemize}
-	  \item planification de tâches
-	  \item bug-tracking
-	  \item wiki
-	  \item forum de discussion\dots
-	\end{itemize}
-      \item serveur dédié au module projets L3 : \url{https://193.49.201.37/redmine}
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Redmine : connexion au serveur}
-    \begin{itemize}
-      \item ouvrez un navigateur
-      \item allez sur le serveur : \url{https://193.49.201.37/redmine}
-      \item connectez-vous avec les identifiants envoyés par mail
-    \end{itemize}
-    \centering
-    \includegraphics[width=10cm,frame]{images/redmine_0.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Redmine : sélection du projet}
-    \centering
-    \includegraphics[width=10cm,frame]{images/redmine_1.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Redmine : accueil du projet}
-    \centering
-    \includegraphics[width=10cm,frame]{images/redmine_2.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Redmine : outils "Demandes"}
-    \centering
-    \includegraphics[width=10cm,frame]{images/redmine_3.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Redmine : outils "Gantt"}
-    \centering
-    \includegraphics[width=10cm,frame]{images/redmine_4.png}
-  \end{block} 
-\end{frame}
-
-
-
-

+ 0 - 271
CM2/section_outils_svn.tex

@@ -1,271 +0,0 @@
-
-\section{Outils de gestion de code source (svn)}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion}
-    \begin{itemize}
-    \item système de gestion de code source
-    \item journalisation
-    \item travail collaboratif
-    \item serveur dédié au module projets L3 : \url{https://193.49.201.37/svn/<projet>}
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : principe}
-    \begin{itemize}
-    \item système centralisé
-    \item dépôt sur un serveur
-    \item modifications via des copies locales
-    \end{itemize}
-    \centering
-    \includegraphics[width=7cm,frame]{images/SVN_Server_Client_Structure.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : quelques notions}
-    \begin{itemize}
-    \item \textbf{dépôt (repository) :} données et méta-données
-      du projet, sur le serveur
-    \item \textbf{révision (revision) :} numéro de modification du dépôt
-    \item \textbf{copie de travail (working copy) :} copie locale du
-      projet, sur laquelle un intervenant peut travailler
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : quelques opérations}
-    \begin{itemize}
-    \item \textbf{créer (create) :} créé un dépôt (fait par
-      l'administrateur)
-    \item \textbf{récupérer (checkout) :} récupère les données du
-      projet dans une copie de travail
-    \item \textbf{mettre à jour (update) :} met à jour la copie de travail en
-      récupérant la dernière révision du dépôt
-    \item \textbf{publier (commit) :} envoie, dans le dépôt, les modifications
-      réalisées sur la copie de travail
-    \item \textbf{ajouter (add) :} demande d’ajouter, dans le dépôt,
-      un fichier/répertoire de la copie de travail
-    \item \textbf{supprimer (delete) :} demande de supprimer un
-      fichier/répertoire
-    \item \textbf{résoudre (resolve) :} résout un conflit sur la copie
-      de travail
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : résumé de l'utilisation d'un dépôt SVN}
-    \begin{itemize}
-    \item pour récupérer le dépôt : checkout
-    \item pour mettre à jour le dépôt :
-      \begin{itemize}
-      \item modifier la copie locale, add, delete\dots
-      \item update
-      \item resolve (si besoin)
-      \item commit
-      \end{itemize}
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : bonnes pratiques}
-    \begin{itemize}
-    \item supprimer les fichiers en utilisant la commande svn delete
-    \item ne pas mettre, sur le dépôt, des fichiers générés
-      automatiquement
-    \item avant de publier une modification, vérifier que le code reste
-      valide
-    \item éviter les conflits potentiels en organisant le travail de telle
-      sorte que les intervenants aient à travailler sur des fichiers
-      différents
-    \end{itemize}
-  \end{block} 
-\end{frame}
-
-\begin{frame}[fragile]{\large \insertsection}
-  \begin{block}{Subversion : configuration du client svn avec proxy}
-    ~\\
-    \begin{minted}[frame=single,label={\~~/.subversion/servers}]{bash}
-  http-proxy-host=...
-  http-proxy-port=...
-  http-proxy-username=...
-  http-proxy-password=...
-    \end{minted}
-  \end{block} 
-\end{frame}
-%http-proxy-host=192.168.22.62
-%http-proxy-port=3128
-%http-proxy-username=tseptemb
-%http-proxy-password=septembre2013
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        créer un nouveau projet de type svn \\~\\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co1.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)}  
-        ~\\ ... \\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co2.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        spécifier le dépot à récupérer \\~\\
-        \centering
-    \includegraphics[width=6cm]{images/svn_co3.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        ~\\ ... \\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co4.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        demander de créer un projet eclipse correspondant \\~\\
-        \centering
-    \includegraphics[width=8cm]{images/svn_co5.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        ~\\ ... \\
-        \centering
-    \includegraphics[width=7cm]{images/svn_co6.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : checkout (avec eclipse+subversive)} 
-        résultat \\~\\
-        \centering
-    \includegraphics[width=10cm]{images/svn_co7.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : commit (avec eclipse+subversive)} 
-        \texttt{Team > Commit} \\~\\
-        \centering
-    \includegraphics[width=7cm]{images/svn_ci1.png}
-  \end{block} 
-\end{frame}
-
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : commit (avec eclipse+subversive)} 
-        résultat \\~\\
-        \centering
-    \includegraphics[width=10cm]{images/svn_ci2.png}
-  \end{block} 
-\end{frame}
-
-
-
-\begin{frame}[fragile]{\large \insertsection}
-  \begin{block}{Subversion : scénario type d'un conflit}
-    \begin{multicols}{2}
-    \begin{enumerate}
-      \scriptsize
-    \item initialement tout le monde est à jour :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
-        \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2};
-        \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Ginette et Roger modifient un même fichier :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
-        \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2'};
-        \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2''};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Ginette fait un update puis un commit :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
-        \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
-        \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2''};
-        \draw [<->,>=latex, thick] (C1) to (D) {};
-        \draw [>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Roger fait un update, il y a un conflit :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
-        \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
-        \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2*};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [<-,>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \item Roger doit modifier le fichier puis resolve puis commit :\\
-      \begin{tikzpicture}[thick,font=\scriptsize,align=center]
-        \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r4};
-        \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
-        \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r4};
-        \draw [>=latex, thick] (C1) to (D) {};
-        \draw [->,>=latex, thick] (C2) to (D) {};
-      \end{tikzpicture}%
-    \end{enumerate}
-    \end{multicols}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : détection d'un conflit}
-    \begin{itemize}
-    \item après un update
-    \item création de 4 fichiers :
-      \begin{itemize}
-      \item fichier avec les modifs locales ("\texttt{readme.txt.mine}")
-      \item fichier avec les modifs du dépôt ("\texttt{readme.txt.r3}")
-      \item fichier à la précédente révision ("\texttt{readme.txt.r2}")
-      \item fichier de résolution ("\texttt{readme.txt}")
-      \end{itemize}
-    \end{itemize}
-    \centering
-    \includegraphics[width=10cm]{images/svn_conflit1.png}
-  \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-    \begin{block}{Subversion : résolution d'un conflit}
-        \begin{itemize}
-            \item éditer le fichier (\texttt{Team > Resolve conflicts}) \\
-                \includegraphics[width=10cm]{images/svn_conflit2.png}
-        \end{itemize}
-    \end{block} 
-\end{frame}
-
-\begin{frame}{\large \insertsection}
-  \begin{block}{Subversion : résolution d'un conflit}
-        \begin{itemize}
-        \item resolve (\texttt{Team > Mark as merged}) \\
-      \includegraphics[width=10cm]{images/svn_conflit3.png}
-    \item update, commit
-    \end{itemize}
-  \end{block} 
-\end{frame}
-

+ 1 - 2
Makefile

@@ -1,8 +1,7 @@
 
 all: tmp/index.html tmp/index_slides.html tmp/CM1.html tmp/CM1_slides.html tmp/CM2.html tmp/CM2_slides.html tmp/CM3.html tmp/CM3_slides.html
 	cp www/template.css www/slidy.css www/slidy.js tmp
-	cp CM?/*.png tmp
-	cp CM?/*.svg tmp
+	cp CM?/*.png CM?/*.svg tmp
 
 tmp/before.html: www/before.md
 	mkdir -p tmp