4.1 Gestion de versions
-
Deux objectifs :
-
gestion des versions de sources ;
- orchestration d’un groupe d’intervenants.
- Large choix d’outils :
-
Concurrent Versions System (CVS), l’ancêtre ;
- Apache Subversion (SVN), compatible CVS ;
- GIT, décentralisé, très rapide ;
- Mercurial, concurrent de GIT.
- Outil GIT fondé par Linus Torvald :
-
architecture distribuée (pas forcément de serveur) ;
- efficace pour les divergences et les convergences ;
- optimisé : rapide et économe ;
- utilise les protocoles réseaux existants.
- Hiérarchie des niveaux sous GIT :
-
éventuellement un dépôt distant ;
- votre dépôt local :
-
votre répertoire de travail ;
- l’index (répertoire .git) ;
- le dépôt (répertoire .git).
- Exercice "création d’un dépot" (version locale) :
-
dans un répertoire vide archive, initialisation par git init ;
- l’état de l’archive peut être affichée par git status ;
- renseignez votre nom et votre courriel par les commandes ...
- git config --global user.name "Prénom Nom" et ...
- ... git config --global user.email "courriel" ;
- liste des fichiers dans l’index par git ls-files ;
- liste des fichiers dans le dépôt par git ls-tree -r HEAD ;
- créez un dépôt vide par git commit --allow-empty -m "Archive vide" ;
- créez un fichier de travail, listez l’index, listez le dépôt, conclusion ?
- vous pouvez lister les fichiers de travail non indexés : git ls-files --other ;
- ajoutez le fichier à l’index par git add, listez index et dépôt, conclusion ?
- ajoutez le fichier dans le dépôt par git commit -m, listez index et dépôt, conclusion ?
- Exercice "création d’un dépôt" (version serveur ssh) :
-
connectez vous sur une machine de projet par ssh ;
- créez un répertoire, placez-vous dans ce répertoire ;
- créez votre dépôt par la commande git init --bare ;
- sur la machine de TP, créez un dépôt de travail par ...
- git clone ssh://utilisateur@serveur/
~
utilisateur/depot ;
- entrez dans le dépôt, créez un fichier lisezmoi ;
- insérez le fichier dans l’index git add lisezmoi ;
- validez vos modifications localement git commit ;
- téléversez vos modifications git push origin master ;
- clonez le dépôt dans un autre espace ;
- modifiez lisezmoi dans les deux espaces ;
- tentez de téléverser aprés validation locale ;
- résolvez le conflit !
- Exercice "création d’un dépôt" (version application gitlab) :
-
visualisez la page https://archives.plil.fr avec un navigateur ;
- connectez vous à gitlab avec vos identifiants école ;
- créez un dépôt privé pour le module de programmation avancé ;
- sous votre compte de TP, créez une clef asymétrique avec ssh-keygen -t rsa ;
- importez la clef publique
~
/.ssh/id_rsa.pub pour votre dépôt ;
- créez un dépôt de travail via ssh par la commande ...
- ... git clone git@archives.plil.fr:<login>/programmation_avancee.git ;
- entrez dans le dépôt, créez un fichier lisezmoi ;
- insérez le nouveau fichier dans l’index avec git add lisezmoi ;
- validez vos modifications localement git commit -m "exercice git" ;
- téléversez vos modifications vers gitlab avec git push ;
- sur une machine de projet, configurez votre nom et courriel ;
- créez un dépôt de travail via https par la commande ...
- ... git clone https://<login>@archives.plil.fr/<login>/programmation_avancee.git ;
- modifiez le fichier lisezmoi dans les deux dépôts de travail ;
- tentez de pousser vos modifications aprés validation locale ;
- résolvez le conflit (et jouez un peu avec gitlab) !
- Exercice "branches et fusion" :
-
créez une branche dans votre archive par git branch <branche> ;
- basculez vers votre nouvelle branche par git checkout <branche> ;
- créez un répertoire GIT_branche dans la nouvelle branche ;
- modifiez le fichier lisezmoi dans la nouvelle branche ;
- ajoutez un fichier dans le répertoire GIT_branche ;
- mettez à jour le dépôt distant ;
- basculez vers la branche principale par git checkout master ;
- que constatez-vous dans votre répertoire de travail ?
- créez un répertoire GIT_master dans la branche principale ;
- modifiez le fichier lisezmoi dans la branche principale ;
- ajoutez un fichier dans le répertoire GIT_master ;
- basculez vers la branche annexe, que constatez-vous ?
- revenez dans la branche principale, fusionnez par git merge <branche> ;
- affichez l’historique des branches par git show-branch.
- Exercice "versions" :
-
posez une étiquette sur votre archive par git tag -a "v0.1" ;
- créez un répertoire GIT_version, créez-y un fichier ;
- mettez à jour le dépôt distant ;
- posez une seconde étiquette par git tag -a "v0.2" ;
- mettez à jour les étiquettes le dépôt distant par git push --tags ;
- listez les étiquettes par git tag ;
- récupérez l’archive dans un autre répertoire ;
- vérifiez que vous avez bien les fichiers de la version v0.2 ;
- basculez sur la version v0.1 par git checkout v0.1.