Table des matières
Ouvrir table des matières
Versionner son code
Vous commencer à mettre en pratique, à programmer quelques morceaux de codes ou une fonctionnalité, vous testez des choses et vous souhaitez garder une trace de ce que vous réalisez? Il est temps de découvrir le versionning, passage obligatoire lorsque l’on fait de la programmation. Vous découvrirez dans cet article une légère approche du versionning pour que vous compreniez ces enjeux et pourquoi vous devez vous y mettre dès maintenant.
Qu’est-ce que c’est le versionning ?
Avant de commencer, il faut tout d’abord définir et savoir ce qu’est le versionning. Le versionning est un système permettant d’enregistrer les évolutions d’un fichier ou d’un ensemble de fichiers au cours du temps de manière à ce qu’on puisse rappeler une version antérieure d’un fichier à tout moment. Pour faire simple, ce système permet d’historier vos modifications sur vos fichiers et de revenir à une version antérieure à tout moment.
Pourquoi l’utiliser ?
Utiliser ce genre de logiciel en programmation a plusieurs avantages :
- Créer une timeline de version pour votre projet. En effet, les logiciels de versionning permettent de créer une version d’un ensemble de fichiers. Imaginons que vous développiez une nouvelle fonctionnalité et que celle-ci est composée d’un ensemble de fichiers, vous allez créer une version de cette fonctionnalité qui contiendra tous vos fichiers. En plus de cela, vous pourrez mettre un nom et une description pour cette version ce qui vous permettra d’améliorer le suivi de votre projet. Vous structurez votre travail intelligemment.
- Faciliter le travail collaboratif si vous travaillez en équipe. Ces logiciels de versionning fonctionnent en « client-serveur ». C’est-à-dire que votre projet peut être mis à disposition sur un serveur et que les personnes habilitées à travailler dessus peuvent travailler dessus pour apporter leur contribution. Chaque membre de l’équipe peut donc être à des kilomètres l’un de l’autre et travailler ensemble sur le même projet très facilement.
- Sachez qui a fait modifié quoi et quand ? Une partie de votre programme fonctionnait correctement et suite à une mise à jour ce n’est plus le cas. Avec le versionning vous pourrez identifier la modification responsable de votre bug, qui l’a provoqué et quand. Il est également possible de restaurer la partie concernée pour rétablir le fonctionnement de votre application.
- Travailler chacun de votre côté et rassembler tout votre travail en commun facilement. Il se peut que plusieurs personnes travaillent sur le même fichier et au même moment. Étant donné que chacun dispose de l’application sur son ordinateur, cela ne pose pas de problème. Seulement lorsque l’on synchronise ce qu’on a fait sur le serveur on peut se poser la question de comment rassembler les différents changements effectués par chacun sur le même fichier ? Le logiciel de versionning se charge de cela pour vous, il va effectuer un « merge » des différents changements de ce même fichier pour en fournir qu’un seul.
- Votre travail peut rendre service. Rendre public son travail en centralisant son projet et en gérant ses versions est une belle contribution à la communauté. Qui sait peut-être que quelqu’un pourra reprendre une partie de votre travail et le faire évoluer ?
Les logiciels
Il existe plusieurs logiciels de versionning qui sont regroupés suivant 2 modèles de versionning :
- gestion de versions centralisée : Il n’y a qu’un seul dépôt qui est positionné sur un serveur. Le fait d’avoir un seul dépôt simplifie la gestion de versions puisque chaque personne utilise ce même dépôt. A contrario, l’inconvénient majeur c’est que si vous n’avez pas de connexion réseau directe au dépôt, vous n’y avez pas accès. Les logiciels de gestion de versions centralisée les plus connus sont « SVN » et « CVS ».
- gestion de versions décentralisée : il y a un dépôt central bien souvent sur un serveur qui est considéré comme le dépôt maître. Les clients se connectent au dépôt pour y télécharger les dernières mises à jour. Chaque personne collaborant au projet possède donc une version du dépôt qui lui est propre. Elle peut ne pas être à jour par rapport au serveur si elle n’a pas téléchargé les dernières mises à jour ou bien si avez des changements effectués sur votre propre dépôt. On retrouve comme logiciel le très célèbre Git mais il existe d’autres comme « Mercurial » et « Bazaar ».
Mon choix logiciel : Git
J’ai choisi et je travaille avec le logiciel Git depuis plusieurs années. J’ai fait ce choix pour plusieurs raisons :
- Il est Open Source donc il évolue suivant les besoins des utilisateurs et de la communauté. En plus étant un développeur web qui utilise des langages Open Source, le choix s’est donc renforcé dans ce sens.
- La gestion décentralisée est pour moi un excellent choix. Il permet aux différents interlocuteurs du projet de pouvoir obtenir une version du projet et d’être nomades. Ils peuvent donc travailler sans connexion internet. Il suffit ensuite d’en avoir une pour pousser son travail ou télécharger les contributions des autres.
- Il est très populaire et il est facile à prendre en main.
- La plupart des projets Open Source sont hébergés sur GitHub.com 🔗, la solution pour héberger gratuitement et publiquement tous ses projets de développement.
En parlant de GitHub, il faut savoir que vous pouvez créer des dépôts privés (non visible par la communauté), mais il faut souscrire à un abonnement pour en bénéficier. Si vous souhaitez faire des dépôts privés sachez qu’il existe une autre solution moins populaire basée sur Git nommé BitBucket. Avec votre compte, vous pourrez créer autant de dépôts privés que vous le souhaitez. C’est une bonne alternative si vous souhaitez versionner votre code sans le rendre public.
Si vous débutez le versionning, ces 2 plateformes web sont parfaites pour commencer. Si vous souhaitez déployer votre propre serveur de versionning, sachez que c’est tout à fait possible. Vous pouvez installer votre propre « GitHub » grâce à GitLab. Il existe d’ailleurs l’interface cloud de GitLab sur GitLab.com 🔗 où vous pouvez également y créer des dépôts privées.
Mini-exemple d’utilisation de Git avec GitHub
Création de votre compte sur GitHub
Et si vous vous y mettiez maintenant ? Pour commencer créer un compte sur GitHub.com, connectez-vous et cliquez sur ce lien pour créer un nouveau dépôt : https://github.com/new 🔗. Remplissez le formulaire en donnant un nom à votre dépôt (le nom de votre projet en cours par exemple) et cliquez sur le bouton vert « Create repository ».
Félicitations ! Vous venez de créer un dépôt sur votre Github. Maintenant, il va falloir alimenter votre dépôt. Pour votre test, vous pouvez utiliser votre projet en cours. Dans mon cas, je vais versionner ma « stack-web » sous Docker.
Installation et utilisation de Git
Maintenant que vous avez un compte sur un serveur Git (GitHub), il vous faut un client. Rendez-vous sur le site de Git (https://git-scm.com/ 🔗), téléchargez et installez la dernière version de Git suivant votre système d’exploitation. Une fois installé, vous êtes prêt à utiliser Git et cela s’utilise en ligne de commande.
Lancez une invitation de commande et positionnez-vous sur le dossier que vous voulez versionner.
Vous allez lancer votre première commande qui consiste à initialiser votre dépôt local :
git init
Une fois que c’est fait, on va dire à ce dépôt quel est le serveur central (remote). La commande est la suivante : git remote add origin https://github.com/ 🔗<votre nom d’utilisateur sur github>/<nom de votre dépôt sur git>.git
Dans mon cas, c’est la commande suivante :
git remote add origin https://github.com/1OOSUR/stack-web-php5.6.git 🔗
Nous allons maintenant dire à Git que les fichiers présents dans notre dossier sont à ajouter pour créer une version avec la commande :
git add .
Le point après le « add » signifie tous les fichiers présents sur le dépôt, mais il est possible de choisir un fichier spécifique ou bien un ensemble de fichiers se terminant par une extension (exemple : *.php).
Nous allons maintenant créer une version de notre ensemble de fichiers grâce à la commande « commit », ce qui donne ceux-ci :
git commit -m "first commit"
Le « -m » est pour donner un titre à votre « commit ». Ici c’est « first commit », mais en général vous y mettrez le nom d’une fonctionnalité ou ce que vous avez apporté au projet.
Pour terminer, nous allons pousser notre « commit » sur le serveur GitHub grâce à la commande push ce qui donne l’instruction suivante :
git push -u origin master
Votre terminal va vous demander votre nom d’utilisateur et mot de passe que vous avez sur GitHub. Une fois fait, il vous suffit de taper dans votre navigateur votre URL (https://github.com/ 🔗<votre nom d’utilisateur sur github>/<nom de votre dépôt sur git>) pour voir le résultat.
Vous apercevez vos fichiers sur votre lien ? Félicitations, vous venez d’utiliser un logiciel de versionning. Bien entendu, il faut creuser la matière pour apprendre le reste des commandes et son utilisation en mode collaboration, mais c’est un très bon début croyez moi.
Pour vos efforts, je vous fournis un document PDF reprenant les commandes utiles sur Git. C’est un document officiel.
Allergique aux lignes de commande ?
Git est très puissant en ligne de commande, mais il est clair qu’une interface graphique permet d’avoir un meilleur visuel de ses différents « commit » et de la visualisation des modifications effectuées. Il existe de nombreux clients graphiques Git et pour tous les goûts des applications de bureau (https://desktop.github.com 🔗) jusqu’aux interfaces web (https://github.com/FredrikNoren/ungit 🔗)
Conclusion
Vous venez de mettre un pied dans le monde du versionning. Vous remarquerez que pour l’utiliser à plusieurs il vous faudra assimiler d’autres commandes. Le meilleur moyen de savoir comment organiser son versionning c’est de s’inspirer d’un dépôt populaire sur Github. Visitez-le il n’y a que l’embarras du choix.