Situation n°1 : Normes de développement Applications web écrites en PHP

référence : GSB-STDWEBPHP

ACTIVITÉS DU RÉFÉRENTIEL MISES EN OEUVRE :

  • A1.4.1 Participation à un projet
  • A4.1.10 Rédaction d’une documentation d’utilisation / procédure de mise en œuvre
  • A5.1.1 Mise en place d’une gestion de configuration
  • A5.1.2 Recueil d’informations sur une configuration et ses éléments
  • A5.1.3 Suivi d’une configuration et de ses éléments

Procédure de création d’un dépôt distant

Premièrement, vous aurez besoin d’un nouveau répertoire, pour cela, cliquez sur New Repository « Nouveau répertoire » en Français.

Une fois fait, vous trouverez la page comme ci-dessous, renseignez ces champs en fonction de vos besoins puis cliquez sur Create Repository.

Voici l’utilité des différents choix :

Repository Name 

Le nom de votre répertoire, essayez de garder un nom en rapport de votre projet afin de garder un maximum de lisibilité.

Description (Optionnel) 

Vous pouvez rajouter une description à votre projet, cela est optionnel.

Public 

Sélectionnez public afin de créer un répertoire visible par tous et profiter   d’un hébergement gratuit.

Private 

Sélectionnez private afin de créer un répertoire privé, visible que par ceux qui en ont l’accès. Cela est payant.

Initialize this repository with a README

 Initialise votre répertoire avec un « Lisez moi » que vous pouvez modifier afin de commenter votre répertoire, donner des informations.

Add .gitignore 

Vous permets de définir en quel langage ou quelle utilisation vous faites de votre répertoire.

Add a License

Vous permet de sélectionne la licence que vous avez utilisé durant votre projet.

Votre dépôt est maintenant créé.

Procédure de connexion à un dépôt distant en SSH

Premièrement, ouvrir l’interface de commande bash de git.

Il est ensuite nécessaire de créer une clef rsa grâce à la commande « ssh-keygen ».

Il est possible de choisir le chemin de la clef (entrer pour laisser le chemin par default), et de mettre un mot de passe sur cette clef (entrer pour ne pas en mettre)

Il est possible de voir les clefs générées grâce à “ls ~/.ssh”.

Pour afficher la clef, il faut utiliser la commande “cat ~/.ssh/id_rsa.pub”.

Il faut ensuite aller dans les paramètres de son compte pour y enregistrer la clef. Vous ferez un copier-coller de la clé affichée précédemment. Ensuite, cliquez sur « Add SSH Key » pour ajouter la clé.

Procédure de clonage d’un dépôt distant

Clonage SSH

Aller sur la page du projet et récupérez le lien SSH en cliquant sur le bouton SSH puis en cliquant sur la petite page avec la flèche par-dessus.

Puis, tapez la commande suivante : git clone lien_vers_le_projet et patientez, cela peut prendre plusieurs minutes. Une fois fait, vous verrez une confirmation qui s’affichera.

Mise en œuvre de TortoiseGit

TortoiseGit, installation et configuration

Un des systèmes de contrôle de version centralisés les plus utilisés, permet de réaliser ses tâches en ligne de commande. Afin de créer une interface graphique plus conviviale et de permettre aux développeurs sous Windows de bénéficier des atouts de Subversion, Stefan Küng et Lübbe Onken ont développé TortoiseSVN, un client Subversion implémenté comme une extension shell de Windows. TortoiseSVN s’intègre parfaitement à l’explorateur Windows et permet de retrouver la quasi-totalité des fonctionnalités de Subversion via une interface graphique très conviviale : superposition d’icônes aux répertoires et fichiers pour visualiser l’état (modifié, à jour, en conflit…), menu contextuel permettant de faire les commit, les mises à jour, graphe de l’historique, gestion des conflits sous forme graphique (via TortoiseMerge)… TortoiseSVN est très vite devenu très populaire (plus de 22 millions de téléchargements, 34 langues différentes ! Prix du meilleur outil [SourceForge.net 2007 Community Choice Award for Best Tool or Utility for Developers]).

En 2008, étant donné que Git était un système de contrôle de version distribué performant mais conscient qu’il lui manquait une interface graphique convivial, Frank Li décide de s’inspirer de TortoiseSVN et de créer une intégration shell pour Windows de Git. En étudiant le code de TortoiseSVN, il a créé TortoiseGit . Comme TortoiseSVN, TortoiseGit est gratuit et 1 open-source.

L’installation de Git doit s’effectuer avant l’installation de TortoiseGit. Voici les liens vers les versions de Git et de TortoiseGit utilisées.

Git : https://git-scm.com/downloads

TortoiseGit : https://tortoisegit.org/download/

Il y a très peu de choses à configurer avec TortoiseGit. Faites un clic droit sur un fichier ou un dossier, puis cliquez sur TortoiseGit -> Settings.

Dans le dialogue qui s’ouvre, sélectionnez dans la colonne de gauche «General». Assurez-vous que la case «Path» du panel «MSysGit» contient bien le chemin vers le dossier bin de votre installation de Git.

Dans la colonne de gauche, cliquez ensuite sur Git → Config et rentrez votre nom et votre email. Ces informations seront utilisées lors de vos commit.

Utilisation de TortoiseGit

Cette partie a pour objectif de présenter les commandes indispensables à l’utilisation de TortoiseGit. Toutes les commandes ne seront pas présentées. Il existe notamment plusieurs solutions pour atteindre un même objectif, mais dans un souci d’efficacité, seules certaines d’entre elles sont proposées ainsi que quelques recettes. Dans la plupart des cas, les opérations seront présentées dans leur forme Git (ligne de commande) et TortoiseGit (menu contextuel). Si nécessaire, des schémas illustreront les opérations. Des cas d’utilisation plus concrets seront présentés dans la partie suivante. Les opérations sont présentées dans l’ordre logique d’utilisation d’un collaborateur. Cette partie part du principe que le repository est déjà créé.

Créer le dossier dans lequel vous souhaitez stocker le repository en local et votre version de travail. Faites un clic droit sur ce dossier et cliquer sur «Git Clone…»

Cloner un repository existant en local

Lorsque vous souhaitez collaborer à un projet contrôlé avec Git, vous devez récupérer une copie du repository. La commande à utiliser est «clone» . L’ensemble du repository (toutes les versions de tous les fichiers) est recopié sur votre disque dur. Cette commande crée automatiquement un dossier du même nom que votre repo sur votre disque dur, recopie toutes les données, et fait un «checkout» de la dernière version

Dans la fenêtre de dialogue qui s’ouvre, rentrez l’URL du repository, le dossier dans lequel vous voulez le cloner.

La fenêtre suivante vous demande de rentrer votre mot de passe, puis télécharge le repository.

Utilisation du repository local

Lorsque vous avez modifié un fichier, et qu’il n’est donc plus à jour par rapport au repository, il est marqué d’une pastille rouge qui fait peur, pour indiquer qu’il est modifié, et non soumis dans le repository local. Un clic droit sur un fichier ou un dossier de votre répertoire de travail et un clic sur «Git Commit -> «master»…» (le master dépend de la branche sur laquelle vous êtes. c.f. parties suivantes), ouvre une nouvelle fenêtre de dialogue.

Cette fenêtre vous permet de vérifier quels sont les fichiers qui vont être transférés vers le repository local. Vous pouvez encore les (dé)sélectionner grâce à la ListBox «ChangesMade». Vous devez ensuite décrire votre commit à l’aide d’un message que vous pouvez signer avec le bouton «Sign» (si vous avez configuré correctement TortoiseGit).

Une nouvelle fenêtre de dialogue s’ouvre vous illustrant la progression du commit. Les fichiers modifiés sont transférés vers le repository local (dans la branche «master»).

Notez le bouton «Push» qui vous permet de transférer les modifications du repository local vers le repository distant (ce qui sera expliqué dans une des parties suivantes). Le fichier est à nouveau à jour, il retrouve sa jolie pastille verte.

Add La commande add se fait via le menu contextuel : clic droit sur le(s) fichier(s) à ajouter -> Tortoise Git -> Add… Une fenêtre de dialogue apparaît alors vous permettant d’ajuster votre ajout en (dé)sélectionnant les fichiers à ajouter.

Après avoir valider votre ajout, votre fichier est marqué d’un gros + bleu, indiquant qu’il se trouve comme modifié (staged) et sera ajouté au prochain commit.

Commit La fenêtre de dialogue suivante vous permet d’ailleurs de faire directement le commit. Même s’il est conseillé de le faire une fois pour tous les fichiers ajoutés et modifiés, voici tout de même la liste des commandes à effectuer.

En cliquant sur «Commit …», vous voyez apparaître la fenêtre de dialogue suivante. Notez qu’il est encore possible d’ajouter des fichiers non encore ajoutés (et donc unstaged) dans la staging area pour les ajouter au commit ! N’oubliez pas non plus d’ajouter le message pour les collaborateurs.

En cliquant sur OK, vous lancez le commit, dont la progression apparaît dans la fenêtre suivante (cf. partie précédente).

Supprimer des fichiers du repository local : rm

Git permet de supprimer des fichiers du repository local. La suppression a réellement lieu au commit suivant, et il reste bien entendu possible de retrouver les fichiers avant leur suppression en revenant sur une version précédente. La suppression s’opère de la manière suivante : l’appel de rm sur un fichier le retire de la staging area et donc des fichiers à versionner ; le commit suivant ne contient plus le fichier dans la nouvelle version.

La commande rm se fait via le menu contextuel : clic droit sur le(s) fichier(s) à supprimer -> Tortoise Git -> Delete ou Delete (keep local). Les deux préparent la suppression du fichier au prochain commit, mais le premier envoie en plus le fichier à la corbeille (rm), alors que le second le laisse en place sur le disque dur (rm –cached, il n’a plus aucune pastille). Le dossier contenant prend une méchante pastille en forme de X rouge annonçant qu’il y aura des suppressions au prochain commit.

Via TortoiseGit, il est toutefois encore possible d’annuler une suppression (avant le commit bien sûr) grâce à la commande revert. Un clic droit sur le fichier (s’il a été supprimé avec Delete (keep local)) ou sur un dossier parent, puis TortoiseGit -> Revert… permet de réaliser cette opération.

Il faut confirmer dans la boîte de dialogue qui s’ouvre ensuite, en sélectionnant les fichiers à récupérer.

Commit Pour réaliser la suppression dans la version suivante du repository local, on doit ensuite faire un commit (pour comme add), sur un dossier parent. La réalisation de la phase commit a ensuite été décrite dans les parties commit et add précédentes.

Exploitation des branches pour travailler en mode collaboratif

Procédures de gestion des branches via Invite de commandes/Terminal

Pour créer une branche, il faut utiliser la commande “git branch nom_de_la_branche”. Ne pas oublier de lancer la commande “git push nom_du_depot nom_de_la_branche” pour la rendre accessible à tous les contributeurs.

Pour changer de branche, utiliser la commande “git checkout nom_de_la_branche”.

Pour fusionner deux branches, il faut utiliser la commande “git merge nom_de_la_branche”.

Si un ou plusieurs fichier(s) entrent en conflit lors du merge, le message d’erreur suivant apparaitra, indiquant le ou les fichiers en cause.

Pour corriger ces erreurs, il faut utiliser la commande “git mergetool” qui va ouvrir l’outil de résolution de conflit. Appuyer sur entrer pour ouvrir le panneau.

L’outil affiche les différentes versions du fichier qui sont en conflit. Il est donc nécessaire de modifier les fichiers depuis cette interface (grâce à VIM, l’outil par défaut de bash), ou bien en effectuant un commit correctif.

Une fois le conflit résolu, le prochain commit effectuer poursuivra le merge précédemment lancé.

Pour supprimer une branche, il est nécessaire d’utiliser la commande “git push nom_du_depot –delete nom_de_la_branche”

Pour créer un dépôt distant, il est nécessaire d’utiliser la commande “git remote add nom_du_dépot lien_vers_le_projet”. Remarque: le lien vers le projet est trouvable sur la page BitBucket de celui-ci.

Il est possible d’afficher la liste des dépôts existants avec la commande “git remote” (Voir ci-dessous).

Pour récupérer les données d’un dépôt, il est nécessaire d’utiliser la commande “git fetch nom_du_dépôt”.

Pour pousser les données sur le dépôt, la commande correspondante est “git push nom_du_dépôt nom_de_la_branche”.

La commande “git remote show nom_du_dépôt” permet d’inspecter un dépôt.

Enfin, “git remote rm nom_du_dépôt” permet de supprimer un dépôt.

Productions associées :

https://drive.google.com/open?id=1LtysvBMvxB-oqRDtv6avEPlJ-v5rj443