Versionnage avec Git
Gérard Rozsavolgyi
roza@univ-orleans.fr
Jan 2022
roza@univ-orleans.fr
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 2 / 75
Les systèmes de gestion de version
Git
Formations 2022
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 3 / 75
Plan:
Notions générales sur les systèmes de gestion de version
Git, prise en main
Les branches en Git
Introduction aux tests
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 4 / 75
Fiches memo sur Git en pdf
Git commandes de base
Git collaboratif dépôt unique
Git collaboratif dépôts distincts
Git collaboration avec des branches sur dépôt unique
Git collaboration avec des branches et dépôts distincts
Git merge et rebase
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 5 / 75
Slides Git en pdf
Ces slides en pdf (4/3)
Ces slides en pdf (16/9)
Ces slides en pdf (16/10)
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 6 / 75
Problématique 1
conserver l’historique des modifications apportées chaque jour … et
revenir en arrière en cas de besoin
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 7 / 75
Problématique 2
partager le développement entre plusieurs personnes
permettre un accès partagé au système de fichiers versionné
permettre un accès distant depuis diverses plateformes
retrouver rapidement l’origine d’un Bug en cas de régression
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 8 / 75
Problématique 3
Comment gérer des distributions ?
,→ plusieurs versions peuvent coexister ( branches de développement,
branches beta, branches production )
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 9 / 75
Problématique 4
Utiliser de l’intégration continue (Gitlab, Github, Jenkins, etc.)
,→ introduire des vérifications, tests, production d’artefacts lors d’une
mise à jour d’un dépôt.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 10 / 75
Complexe
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 11 / 75
Ou
Figure 2: Branches de chrome…
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 12 / 75
Un logiciel de gestion de version
Agit sur une arborescence de fichiers
Permet de mutualiser un développement
Permet de stocker toute évolution du code source
,→ Ajoute une nouvelle dimension au système de fichiers: le temps
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 13 / 75
2 modèles
Centralisés
Décentralisés
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 14 / 75
Centralisés �
Style CVS ou SVN
un seul dépôt de référence
besoin d’un serveur
besoin de synchronisation
conflits plus fréquents …
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 15 / 75
Décentralisés �
plusieurs dépôts pour un même logiciel
chacun peut travailler à son rythme
de façon synchronisée ou pas des autres
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 16 / 75
Systèmes décentralisés
Bazaar
Mercurial
Git
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 17 / 75
Avantages �
ne pas être dépendant d’une machine
travailler sans connexion
participation “progressive” à un projet:
accès au code
contribution proposée
contributeur “actif” si acceptée
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 18 / 75
Dépôt de référence
Dépôt contenant les versions livrées d’un projet
Un dépôt est un emplacement central où sont stockées :
l’historique des versions des fichiers
les logs
les dates, auteurs, tags, etc.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 19 / 75
Dépôt �
Un dépôt apparaît de l’extérieur comme un système de fichiers composé
de répertoires au sein desquels on peut naviguer, lire et écrire selon les
permissions dont on dispose.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 20 / 75
Master (ou Trunck en SVN) �
Version principale
à partir d’elle, on peut crééer des branches
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 21 / 75
Branches �
un développement « secondaire » est mis en route
nouvelle fonctionnalité
correction de bugs, etc.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 22 / 75
Destin d’une branche
Une branche peut soit être à nouveau fusionnée dans le « master »
soit disparaître
soit donner lieu à un nouveau programme. On parle alors de fork �
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 23 / 75
Le Checkout
consiste à récupérer pour la première fois les fichiers déjà existant
au sein d’un projet du dépôt
Le résultat est une copie de travail
Sous git cela consiste aussi à choisir sa branche de travail
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 24 / 75
Ajout
Pour ajouter un fichier spécifique:
git add monfic
Pour ajouter tout le contenu du répertoire courant:
git add .
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 25 / 75
Commit �
Met à jour la copie locale (puis si on veut, le dépôt)
Une nouvelle révision est alors créée
il faut que la copie de travail corresponde à la dernière version du
dépôt
un message est associé au commit
éventuellement un tag
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 26 / 75
Commit �
git commit -m "added a wonderful new feature"
ou si on veut ajouter en même temps les modifications portant sur des
fichiers existants :
git commit -am "added a wonderful new feature"
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 27 / 75
update (pull) �
L’update synchronise la copie de travail locale avec le dépôt
en récupérant la dernière version des fichiers du dépôt
C’est à cette occasion que des conflits de version peuvent
apparaître :)
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 28 / 75
Merge
Fusion de branches entre elles
Fusion d’une branche avec le master (main)
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 29 / 75
Schéma
git commits et branches
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 30 / 75
Conflits ��
certaines modifications peuvent être contradictoires
par exemple lorsque deux personnes ont apporté des modifications
différentes à la même partie d’un fichier …
il faut alors résoudre ce conflit !
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 31 / 75
Diff
Permet d’afficher les différence entre deux versions d’un fichier
kdiff pour linux ou autres
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 32 / 75
mergetools
vscode
atom
vim
kdiff3
opendiff
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 33 / 75
Git
Le plus utilisé
créé par Linus Torvalds pour gérer le noyau de Linux
centaines de contributeurs
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 34 / 75
Historique video Linux Kernel contributions
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 35 / 75
Première révision par Linus T.
premier commit
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 36 / 75
Git
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 37 / 75
commandes de base
alan> git config --global user.name "Alan Turing "
alan> git config --global user.email "alan@univ-orleans.fr"
alan> git config --global core.editor emacs
alan> git config -l
(choisir votre editeur)
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 38 / 75
git help
Documentation
bob> git --help
bob> git help -a
bob> git help init
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 39 / 75
travailler avec git
git init
un dossier .git est créé
Pour voir son contenu :
tree .git
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 40 / 75
Ajoutons un fichier Readme
git add Readme.md
Readme.md est à présent dans l’ index mais pas encore commité …
AJoutons-le:
git commit -m "ajout Readme.md"
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 41 / 75
Git dans tous ses états
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 42 / 75
un commit
operation atomique pour le dépôt git
pas trop gros, pas trop petit
contribution unique
ne pas réparer 3 bugs et ajouter 2 nouvelles fonctionnalités dans le
même commit !!
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 43 / 75
rm
N'effacez pas un fichier versionné directement
Faites-le sous le contrôle de git
Idem pour un renommage
git rm monfichier
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 44 / 75
Premier travail
créer un petit projet demo
y ajouter un Readme.md
commiter
changer quelque chose au Readme.md
utiliser git diff pour afficher les différences
commiter la nouvelle version
N'oubliez pas d'utiliser git status, git log, etc.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 45 / 75
Configurer un dépôt distant
Une fois que vous avez un contenu versionné localement
crééez un dépôt distant, par exemple:
https://gitlab.com/bob/demo.git
pour publier votre travail :
git remote add origin https://gitlab.com/bob/demo.git
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 46 / 75
publiez votre travail
git push -u origin master
et quand vous aurez du nouveau contenu à mettre à jour :
git push
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 47 / 75
git status
Pour vérifier :
Si vous avez du nouveau contenu à commiter
sur quelle branche vous travaillez
S’il vous manque du contenu du dépôt distant
ou l’inverse : Your branch is ahead of 'origin/master' by 3
commits.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 48 / 75
update (pull) �
git pull
Synchronise le dépôt local avec le distant
A cette occasion, des conflits peuvent apparaître …
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 49 / 75
git avec dépôt distant
Figure 5: git distant
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 50 / 75
Où entreposer votre code
Figure 6: Github, Gitlab, etc.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 51 / 75
Les entrepôts de code connus
Github permet maintenant des dépôts privés gratuits depuis le
rachat par Microsoft… Voir
Gitlab et bitbucket le permettaient déjà
Vous pouvez télécharger et installer votre propre gitlab ou Gogs
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 52 / 75
ignorer certains fichiers
ajouter et commiter un nouveau fichier .gitignore
contenant une liste de fichiers ou extensions que vous ne voulez
pas versionner. Comme par exemple :
*.o
__pycache__
*.class
*~
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 53 / 75
Ajouter d’autres remotes
Si vous voulez travailler avec Alice:
git remote add alice https://gitlab.com/alice/monproject.git
lister vos remotes:
git remote -v
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 54 / 75
Créer et utiliser une branche
git branch db-integration
git checkout db-integration
en une ligne :
git checkout -b db-integration
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 55 / 75
Contribuer à un projet opensource
1 Choisir un projet sympa (nodejs, ruby on rails, d3js, etc.) sur
github ou gitlab
2 forkez-le sur Github ou Gitlab
3 clonez votre fork localement
4 choisissez un bug signalé ou une nouvelle fonctionnalité demandée
Par exemple NodeJS Github repo
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 56 / 75
Contribuez
5 creez une branche pour développer le code correspondant
6 publiez cette branche sur votre dépôt
7 Soumettez un Pull Request ou PR (Github) Soumettez un Merge
Request ou MR (Gitlab)
8 Attendez le verdict. Si refus, retour à 5 …
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 57 / 75
motifs de refus �
Merge impossible (rebasage nécessaire …)
Style non conforme, manque de commentaires
Manque de tests ou tests qui échouent
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 58 / 75
integration continue
certains tests ou programmes peuvent être automatiquement
lancés quand certains fichiers sont mis à jour sur le dépôt
spécifié dans un fichier .gitlab-ci.yml sur Gitlab
similaire à un Dockerfile
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 59 / 75
TDD - méthodes agiles
Test-Driven Development
Kent Beck 2003
premiers concepts d'extreme programming
méthodes agiles
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 60 / 75
Agile
Les méthodes agiles constituent de nouveaux modes d’organisation
Pas seulement en informatique
Industrie automobile, logistique, etc.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 61 / 75
Méthodes les plus connues
Pair Programming
Test Driven Development
Scrum
Scrum Master
Product Owner
Sprints
StandUp meetings
Retrospectives
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 62 / 75
Standup Meetings
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 63 / 75
But de ces meetings
Fournir un feedback (retrospective)
Organiser les étapes suivantes
Etre dans une position “active”
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 64 / 75
Backlogs (Todo lists)
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 65 / 75
Overloaded backlog
Figure 8: backlog un peu chargé
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 66 / 75
Méthode Scrum
Figure 9: Eléments Scrum
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 67 / 75
Scrum
Pierre angulaire :
items de Backlog
Tests
TDD et versionnage
Groupes :
Typiquement 4-5 personnes
certains projets concernent des centaines de personnes (noyau linux,
OS, etc.)
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 68 / 75
Avant tout: les Tests
Différentes sortes de tests
exemples
Pourquoi le TDD ?
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 69 / 75
Différentes sortes de tests
En informatique, un test est une procédure de vérification par
Il y a une grande diversité de tests, concentrons nous sur les 3 principales
catégories
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 70 / 75
Les 3 principaux types de tests
tests unitaires : s’appliquent à une méthode ou fonction isolée du
reste du système (d’où le nom d’unitaire)
tests d’intégration : comme les tests unitaires, mais sans êtres
séparés du reste du système.
tests fonctionnels : On teste une fonctionnalité complète en
décrivant une sucession d’actions effectuée par un utilisateur de
l’application.
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 71 / 75
exemples
Pour tester une fonction, on fournit une liste d’entrées/sorties
Pour tester une fonctionalité, on peut décrire son comportement
attendu en écrivant une User Story comme: “Alice se rend sur la
page d’accueil du site, voit 2 zones de saisie de nombres qu’elle
complète, puis clique sur le bouton ajouter, et constate avec plaisir
que le résultat de l’addition des 2 nombres s’affiche dans une zone
encadrée de vert au milieu de la page”
Voir TDD with Python
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 72 / 75
Test-Driven Development
si on formalise l’idée de penser d’abord en termes d’exemples
d’entrées/sorties examples avant de coder
on arrive naturellement au TDD :
definir les tests
puis on code
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 73 / 75
Automatiser les tests
Tous les langages ont leur librairie de tests unitaires
phpUnit en PHP
JUnit en Java
pytest ou unnitest en Python
GoogleTest ou Boost en C++
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 74 / 75
2021 Gérard Rozsavolgyi gerard.rozsa @ gmail.com
Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 75 / 75

slides gitslides git .pdfslides git .pdf .pdf

  • 1.
    Versionnage avec Git GérardRozsavolgyi roza@univ-orleans.fr Jan 2022
  • 2.
  • 3.
    Les systèmes degestion de version Git Formations 2022 Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 3 / 75
  • 4.
    Plan: Notions générales surles systèmes de gestion de version Git, prise en main Les branches en Git Introduction aux tests Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 4 / 75
  • 5.
    Fiches memo surGit en pdf Git commandes de base Git collaboratif dépôt unique Git collaboratif dépôts distincts Git collaboration avec des branches sur dépôt unique Git collaboration avec des branches et dépôts distincts Git merge et rebase Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 5 / 75
  • 6.
    Slides Git enpdf Ces slides en pdf (4/3) Ces slides en pdf (16/9) Ces slides en pdf (16/10) Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 6 / 75
  • 7.
    Problématique 1 conserver l’historiquedes modifications apportées chaque jour … et revenir en arrière en cas de besoin Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 7 / 75
  • 8.
    Problématique 2 partager ledéveloppement entre plusieurs personnes permettre un accès partagé au système de fichiers versionné permettre un accès distant depuis diverses plateformes retrouver rapidement l’origine d’un Bug en cas de régression Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 8 / 75
  • 9.
    Problématique 3 Comment gérerdes distributions ? ,→ plusieurs versions peuvent coexister ( branches de développement, branches beta, branches production ) Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 9 / 75
  • 10.
    Problématique 4 Utiliser del’intégration continue (Gitlab, Github, Jenkins, etc.) ,→ introduire des vérifications, tests, production d’artefacts lors d’une mise à jour d’un dépôt. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 10 / 75
  • 11.
    Complexe Gérard Rozsavolgyi (roza@univ-orleans.fr)Versionnage avec Git Jan 2022 11 / 75
  • 12.
    Ou Figure 2: Branchesde chrome… Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 12 / 75
  • 13.
    Un logiciel degestion de version Agit sur une arborescence de fichiers Permet de mutualiser un développement Permet de stocker toute évolution du code source ,→ Ajoute une nouvelle dimension au système de fichiers: le temps Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 13 / 75
  • 14.
    2 modèles Centralisés Décentralisés Gérard Rozsavolgyi(roza@univ-orleans.fr) Versionnage avec Git Jan 2022 14 / 75
  • 15.
    Centralisés � Style CVSou SVN un seul dépôt de référence besoin d’un serveur besoin de synchronisation conflits plus fréquents … Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 15 / 75
  • 16.
    Décentralisés � plusieurs dépôtspour un même logiciel chacun peut travailler à son rythme de façon synchronisée ou pas des autres Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 16 / 75
  • 17.
    Systèmes décentralisés Bazaar Mercurial Git Gérard Rozsavolgyi(roza@univ-orleans.fr) Versionnage avec Git Jan 2022 17 / 75
  • 18.
    Avantages � ne pasêtre dépendant d’une machine travailler sans connexion participation “progressive” à un projet: accès au code contribution proposée contributeur “actif” si acceptée Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 18 / 75
  • 19.
    Dépôt de référence Dépôtcontenant les versions livrées d’un projet Un dépôt est un emplacement central où sont stockées : l’historique des versions des fichiers les logs les dates, auteurs, tags, etc. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 19 / 75
  • 20.
    Dépôt � Un dépôtapparaît de l’extérieur comme un système de fichiers composé de répertoires au sein desquels on peut naviguer, lire et écrire selon les permissions dont on dispose. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 20 / 75
  • 21.
    Master (ou Truncken SVN) � Version principale à partir d’elle, on peut crééer des branches Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 21 / 75
  • 22.
    Branches � un développement« secondaire » est mis en route nouvelle fonctionnalité correction de bugs, etc. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 22 / 75
  • 23.
    Destin d’une branche Unebranche peut soit être à nouveau fusionnée dans le « master » soit disparaître soit donner lieu à un nouveau programme. On parle alors de fork � Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 23 / 75
  • 24.
    Le Checkout consiste àrécupérer pour la première fois les fichiers déjà existant au sein d’un projet du dépôt Le résultat est une copie de travail Sous git cela consiste aussi à choisir sa branche de travail Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 24 / 75
  • 25.
    Ajout Pour ajouter unfichier spécifique: git add monfic Pour ajouter tout le contenu du répertoire courant: git add . Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 25 / 75
  • 26.
    Commit � Met àjour la copie locale (puis si on veut, le dépôt) Une nouvelle révision est alors créée il faut que la copie de travail corresponde à la dernière version du dépôt un message est associé au commit éventuellement un tag Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 26 / 75
  • 27.
    Commit � git commit-m "added a wonderful new feature" ou si on veut ajouter en même temps les modifications portant sur des fichiers existants : git commit -am "added a wonderful new feature" Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 27 / 75
  • 28.
    update (pull) � L’updatesynchronise la copie de travail locale avec le dépôt en récupérant la dernière version des fichiers du dépôt C’est à cette occasion que des conflits de version peuvent apparaître :) Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 28 / 75
  • 29.
    Merge Fusion de branchesentre elles Fusion d’une branche avec le master (main) Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 29 / 75
  • 30.
    Schéma git commits etbranches Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 30 / 75
  • 31.
    Conflits �� certaines modificationspeuvent être contradictoires par exemple lorsque deux personnes ont apporté des modifications différentes à la même partie d’un fichier … il faut alors résoudre ce conflit ! Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 31 / 75
  • 32.
    Diff Permet d’afficher lesdifférence entre deux versions d’un fichier kdiff pour linux ou autres Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 32 / 75
  • 33.
  • 34.
    Git Le plus utilisé créépar Linus Torvalds pour gérer le noyau de Linux centaines de contributeurs Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 34 / 75
  • 35.
    Historique video LinuxKernel contributions Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 35 / 75
  • 36.
    Première révision parLinus T. premier commit Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 36 / 75
  • 37.
    Git Gérard Rozsavolgyi (roza@univ-orleans.fr)Versionnage avec Git Jan 2022 37 / 75
  • 38.
    commandes de base alan>git config --global user.name "Alan Turing " alan> git config --global user.email "alan@univ-orleans.fr" alan> git config --global core.editor emacs alan> git config -l (choisir votre editeur) Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 38 / 75
  • 39.
    git help Documentation bob> git--help bob> git help -a bob> git help init Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 39 / 75
  • 40.
    travailler avec git gitinit un dossier .git est créé Pour voir son contenu : tree .git Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 40 / 75
  • 41.
    Ajoutons un fichierReadme git add Readme.md Readme.md est à présent dans l’ index mais pas encore commité … AJoutons-le: git commit -m "ajout Readme.md" Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 41 / 75
  • 42.
    Git dans tousses états Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 42 / 75
  • 43.
    un commit operation atomiquepour le dépôt git pas trop gros, pas trop petit contribution unique ne pas réparer 3 bugs et ajouter 2 nouvelles fonctionnalités dans le même commit !! Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 43 / 75
  • 44.
    rm N'effacez pas unfichier versionné directement Faites-le sous le contrôle de git Idem pour un renommage git rm monfichier Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 44 / 75
  • 45.
    Premier travail créer unpetit projet demo y ajouter un Readme.md commiter changer quelque chose au Readme.md utiliser git diff pour afficher les différences commiter la nouvelle version N'oubliez pas d'utiliser git status, git log, etc. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 45 / 75
  • 46.
    Configurer un dépôtdistant Une fois que vous avez un contenu versionné localement crééez un dépôt distant, par exemple: https://gitlab.com/bob/demo.git pour publier votre travail : git remote add origin https://gitlab.com/bob/demo.git Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 46 / 75
  • 47.
    publiez votre travail gitpush -u origin master et quand vous aurez du nouveau contenu à mettre à jour : git push Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 47 / 75
  • 48.
    git status Pour vérifier: Si vous avez du nouveau contenu à commiter sur quelle branche vous travaillez S’il vous manque du contenu du dépôt distant ou l’inverse : Your branch is ahead of 'origin/master' by 3 commits. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 48 / 75
  • 49.
    update (pull) � gitpull Synchronise le dépôt local avec le distant A cette occasion, des conflits peuvent apparaître … Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 49 / 75
  • 50.
    git avec dépôtdistant Figure 5: git distant Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 50 / 75
  • 51.
    Où entreposer votrecode Figure 6: Github, Gitlab, etc. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 51 / 75
  • 52.
    Les entrepôts decode connus Github permet maintenant des dépôts privés gratuits depuis le rachat par Microsoft… Voir Gitlab et bitbucket le permettaient déjà Vous pouvez télécharger et installer votre propre gitlab ou Gogs Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 52 / 75
  • 53.
    ignorer certains fichiers ajouteret commiter un nouveau fichier .gitignore contenant une liste de fichiers ou extensions que vous ne voulez pas versionner. Comme par exemple : *.o __pycache__ *.class *~ Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 53 / 75
  • 54.
    Ajouter d’autres remotes Sivous voulez travailler avec Alice: git remote add alice https://gitlab.com/alice/monproject.git lister vos remotes: git remote -v Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 54 / 75
  • 55.
    Créer et utiliserune branche git branch db-integration git checkout db-integration en une ligne : git checkout -b db-integration Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 55 / 75
  • 56.
    Contribuer à unprojet opensource 1 Choisir un projet sympa (nodejs, ruby on rails, d3js, etc.) sur github ou gitlab 2 forkez-le sur Github ou Gitlab 3 clonez votre fork localement 4 choisissez un bug signalé ou une nouvelle fonctionnalité demandée Par exemple NodeJS Github repo Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 56 / 75
  • 57.
    Contribuez 5 creez unebranche pour développer le code correspondant 6 publiez cette branche sur votre dépôt 7 Soumettez un Pull Request ou PR (Github) Soumettez un Merge Request ou MR (Gitlab) 8 Attendez le verdict. Si refus, retour à 5 … Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 57 / 75
  • 58.
    motifs de refus� Merge impossible (rebasage nécessaire …) Style non conforme, manque de commentaires Manque de tests ou tests qui échouent Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 58 / 75
  • 59.
    integration continue certains testsou programmes peuvent être automatiquement lancés quand certains fichiers sont mis à jour sur le dépôt spécifié dans un fichier .gitlab-ci.yml sur Gitlab similaire à un Dockerfile Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 59 / 75
  • 60.
    TDD - méthodesagiles Test-Driven Development Kent Beck 2003 premiers concepts d'extreme programming méthodes agiles Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 60 / 75
  • 61.
    Agile Les méthodes agilesconstituent de nouveaux modes d’organisation Pas seulement en informatique Industrie automobile, logistique, etc. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 61 / 75
  • 62.
    Méthodes les plusconnues Pair Programming Test Driven Development Scrum Scrum Master Product Owner Sprints StandUp meetings Retrospectives Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 62 / 75
  • 63.
    Standup Meetings Gérard Rozsavolgyi(roza@univ-orleans.fr) Versionnage avec Git Jan 2022 63 / 75
  • 64.
    But de cesmeetings Fournir un feedback (retrospective) Organiser les étapes suivantes Etre dans une position “active” Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 64 / 75
  • 65.
    Backlogs (Todo lists) GérardRozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 65 / 75
  • 66.
    Overloaded backlog Figure 8:backlog un peu chargé Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 66 / 75
  • 67.
    Méthode Scrum Figure 9:Eléments Scrum Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 67 / 75
  • 68.
    Scrum Pierre angulaire : itemsde Backlog Tests TDD et versionnage Groupes : Typiquement 4-5 personnes certains projets concernent des centaines de personnes (noyau linux, OS, etc.) Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 68 / 75
  • 69.
    Avant tout: lesTests Différentes sortes de tests exemples Pourquoi le TDD ? Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 69 / 75
  • 70.
    Différentes sortes detests En informatique, un test est une procédure de vérification par Il y a une grande diversité de tests, concentrons nous sur les 3 principales catégories Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 70 / 75
  • 71.
    Les 3 principauxtypes de tests tests unitaires : s’appliquent à une méthode ou fonction isolée du reste du système (d’où le nom d’unitaire) tests d’intégration : comme les tests unitaires, mais sans êtres séparés du reste du système. tests fonctionnels : On teste une fonctionnalité complète en décrivant une sucession d’actions effectuée par un utilisateur de l’application. Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 71 / 75
  • 72.
    exemples Pour tester unefonction, on fournit une liste d’entrées/sorties Pour tester une fonctionalité, on peut décrire son comportement attendu en écrivant une User Story comme: “Alice se rend sur la page d’accueil du site, voit 2 zones de saisie de nombres qu’elle complète, puis clique sur le bouton ajouter, et constate avec plaisir que le résultat de l’addition des 2 nombres s’affiche dans une zone encadrée de vert au milieu de la page” Voir TDD with Python Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 72 / 75
  • 73.
    Test-Driven Development si onformalise l’idée de penser d’abord en termes d’exemples d’entrées/sorties examples avant de coder on arrive naturellement au TDD : definir les tests puis on code Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 73 / 75
  • 74.
    Automatiser les tests Tousles langages ont leur librairie de tests unitaires phpUnit en PHP JUnit en Java pytest ou unnitest en Python GoogleTest ou Boost en C++ Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 74 / 75
  • 75.
    2021 Gérard Rozsavolgyigerard.rozsa @ gmail.com Gérard Rozsavolgyi (roza@univ-orleans.fr) Versionnage avec Git Jan 2022 75 / 75