Upload
dolien
View
216
Download
2
Embed Size (px)
Citation preview
2SLAM - PPEUn outil de gestion de
versionsGIT
Sources : - Introduction aux systèmes de gestion de versions - DevelopR6 - Florent Langrognet- Gérez vos codes sources avec Git - OpenClassrooms - Mathieu Nebra- Site officiel de Git : http://git-scm.com/
2014/2015 2SLAM - PPE – Gestion de versions 2 / 22
Un outil de gestion de versions
I. Principes d'un Système de Gestion de Versions
II. Catégories de S.G.V.
III. Présentation de Git
IV. Utilisation en PPE
2014/2015 2SLAM - PPE – Gestion de versions 3 / 22
Principes d'un SGV
Travailler à plusieurs sur un projet logiciel
2014/2015 2SLAM - PPE – Gestion de versions 4 / 22
Principes d'un SGV
Conserver l'historique des modificationsPouvoir revenir en arrière
Savoir qui a effectué une modification
Comparer deux versions
2014/2015 2SLAM - PPE – Gestion de versions 5 / 22
Principes d'un SGV
Faire évoluer plusieurs versions en parallèle (« branches »)
Identifier une version aboutie (« tag »)
2014/2015 2SLAM - PPE – Gestion de versions 6 / 22
Principes d'un SGV
Notion de dépôt
Dépôt
Copies locales
2014/2015 2SLAM - PPE – Gestion de versions 7 / 22
ScénarioBob et Alice travaillent sur le même projet ; ils téléchargent la même version depuis le dépôt
Quelle est la version commune ?V0V0 V1 AliceV1 Bob V1 AliceV1 Bob
V0 V1 Bob V1 Alice
?
Bob Alice
Principes d'un SGV
2014/2015 2SLAM - PPE – Gestion de versions 8 / 22
Principes d'un SGVSolution
V2V1 BobV2
V1 Bob
On fusionne : V1 Bob + V1 Alice = V2
V1 AliceV1 Bob
V1 Alice
?
NON
V2
V1 Bob
V2
V2
V2
2014/2015 2SLAM - PPE – Gestion de versions 9 / 22
Principes d'un SGV
SynthèseUn SGV gère le mécanisme de lecture-fusion-
écriture
La fusion automatique est possible siil s’agit d’un fichier texte
les modifications sont assez éloignées les unes de autres
Autres fonctions
l’historique
les branches
Les tags, ...
2014/2015 2SLAM - PPE – Gestion de versions 10 / 22
Catégories de SGV
Systèmes centralisés (CVS, Subversion, ...)
Principe : un seul dépôt, sur un serveur central
Avantages : sécurité, technologie répandue
Inconvénients : dépendance/dépôt, performance si gros projet
2014/2015 2SLAM - PPE – Gestion de versions 11 / 22
Catégories de SGV
Systèmes décentralisés (Git, Mercurial, ...)
Principe : chaque contributeur a son propre dépôt
Avantages :Possibilité de travailler de façon indépendante (hors connexion)
Les dépôts peuvent communiquer deux à deux (lecture/écriture/fusion) Travailler avec un dépôt central reste possible
Inconvénient : gestion plus complexe (beaucoup de possibilités) => appliquer des principes rigoureux
2014/2015 2SLAM - PPE – Gestion de versions 12 / 22
Catégories de SGV
Critères de choix
Méthodologie du projet
Outils disponibles (intégration aux IDE)
Compatibilité avec des « forges »
Portabilité (multi-O.S.)
Documentation
...
2014/2015 2SLAM - PPE – Gestion de versions 13 / 22
Présentation de Git
SGV décentralisé
Historique :
d'abord un SGF (créé par Linus Torvalds), puis un SGV
associé à LinuxBasé sur les différences entre fichiers (algo. SHA-1)
Protocole d'échange spécifique (git) ou bien https, ssh, …
Compression des fichiers « zlib »
2014/2015 2SLAM - PPE – Gestion de versions 14 / 22
Utilisation de GitEn mode commande
Sous linux, paquetage Git git-core et gitk pour avoir une interface graphique
Commandes :gitcloneurl, gitpull, git add file, git rm file, git mv file, git status, git commit -a, git diff, gitapply, gitbranch, gitcheckout, ...
Intégré à un I.D.E.
2014/2015 2SLAM - PPE – Gestion de versions 15 / 22
Utilisation de GitUtilisation en PPE
Commandes et interface graphique intégrés à NetBeans
Choix de Git-hub.com comme dépôt central
Gratuit pour les dépôts publics : accès libre en lecture, réservé aux collaborateurs en écriture
Savoir utiliser git-hub
Savoir utiliser NetBeans + Git
2014/2015 2SLAM - PPE – Gestion de versions 16 / 22
Le dépôt centralGit-hub.com
Créer un compte pour chaque collaborateur (adresse mail valide)
Créer une « organisation » pour l'équipe du projet ex : 2slamppe-prj1-eq7 et y inscrire les collaborateurs
Créer un dépôt pour cette organisation
créer un dépôt (new repository)
Ajouter des collaborateurs (settings - add)
2014/2015 2SLAM - PPE – Gestion de versions 17 / 22
Le dépôt localNetBeans
initialiser un dépôt local pour un projet (initialize git repository)
Conserver le répertoire par défaut
Exécuter une première écriture (commit) ; attention, le message est important pour repérer les versions
2014/2015 2SLAM - PPE – Gestion de versions 18 / 22
Le dépôt localMettre à jour le dépôt distant
Une branche principale (master) est alors créée (dépôt local)
2- puis, il faut importerTeam/Remote/Push (s'authentifier comme l'un des collaborateurs)
Pour importer sur le dépôt central depuis le dépôt local :
1- il faut tout d'abord fusionner les deux (sauf la première fois, si le dépôt distant est vide) :Team/Remote/Pull (connexion anonyme) https://github.com/2slamppe-prj1-eq7/demogit.git/
Si cette étape est négligée, l'écriture (push) échouera
2014/2015 2SLAM - PPE – Gestion de versions 19 / 22
Le dépôt localDupliquer le dépôt distant sur un site local
C'est un « clonage »Team/Git/Clone (connexion anonyme) https://github.com/2slamppe-eq7/demogit.git/
Créer un projet NetBeans d'après la copie
Le nouveau dépôt local peut alors évoluer.
Rappels : dépôt local : marquer les changements en exécutant un « commit » dépôt distant : avant de valider les changements (« push »), il faut
fusionner (« pull »)
2014/2015 2SLAM - PPE – Gestion de versions 20 / 22
Fusion des dépôtsGestion des conflitsLors de la récupération des modifications du dépôt central (« pull »), celui-ci est fusionné avec le dépôt local. Des conflits peuvent apparaître en cas de modification des mêmes zones du même fichier …=> Il faut arbitrer en choisissant, puis valider les modifications localement (« commit ») et retenter le « pull »
2014/2015 2SLAM - PPE – Gestion de versions 21 / 22
Le dépôt :branches et « tags »
Utilisation des branches et des tags
Il y a au moins une branche : « master »
Une branche = une version (majeure ou mineure ex : 2.1)
Une branche est une évolution séparée du projet
Une branche peut être fusionnée avec une autre (« merge »)
Pour changer de branche : « checkout »
Chaque version de maintenance (ex: 2.1.1, 2.1.2) sera taguée= marquée pour l'identifier facilement
2014/2015 2SLAM - PPE – Gestion de versions 22 / 22
Travail collaboratifQuand valider
Un commit après chaque test unitaire correctcommenter le commit
Une fusion avec le dépôt distant (pull/push) une fois par jour au maximum
attention, un « push » est irréversible