Suivi de version avec Subversion (SVN) pour les débutants
Avez-vous déjà souhaité travailler sur un projet avec la possibilité de suivre vos modifications et de les annuler? How-To Geek explique comment utiliser le célèbre système de suivi de version, Subversion (a.k.a SVN).
Image clairement ambiguë
Prélog
Ce guide aura pour but de vous donner la possibilité d’utiliser le client Subversion en général et, si vous en avez un, sur votre routeur * DD-WRT. Ce guide n'est en aucun cas un guide définitif pour Subversion et de nombreuses informations sont disponibles sur le livre rouge de Subversion. Ce guide est uniquement destiné à vous donner une réponse abrégée aux questions les plus élémentaires..
Vue d'ensemble
Il peut y avoir de nombreuses raisons pour lesquelles vous voudrez pouvoir «extraire» le dernier code d'un projet logiciel utilisant un système de gestion de versions. Cela vous permet de bénéficier des dernières modifications non encore publiées, de l'aide pour les tests et même du développement. Dans ce guide, nous allons passer en revue une terminologie de base de SVN, montrer comment installer le client SVN sous Linux, Windows et, le cas échéant, votre routeur DD-WRT activé pour OPKG. Nous avons également inclus un exemple de projet que vous pouvez commander et utiliser pour ledit routeur..
Qu'est-ce que Subversion??
Subversion n'est en aucun cas le seul système de contrôle de version existant et des alternatives incluent Git (créé par Linus Torvalds, fondateur du noyau Linux), Mercurial et PerForce, pour n'en nommer que quelques-uns. Cela dit, c’est un des logiciels gratuits, il est mature et est largement utilisé dans le monde entier..
Hors du «livre rouge» de Subversion:
Subversion est une source libre / open système de contrôle de version (VCS). En d’autres termes, Subversion gère les fichiers et les répertoires, ainsi que leurs modifications, au fil du temps. Cela vous permet de récupérer d'anciennes versions de vos données ou d'examiner l'historique de l'évolution de vos données. À cet égard, beaucoup de gens voient dans un système de contrôle de version une sorte de «machine à remonter le temps».
Note: ce livre est la collection ultime de connaissances sur Subversion et il est conseillé de s'y référer sur tous les sujets liés à Subversion.
Qu'est-ce que le versioning?
La gestion des versions est un processus dans lequel l'état d'un projet à un moment donné est enregistré. Ce type de procédure est souvent utilisé pour gérer le développement logiciel, de sorte que le travail puisse continuer à améliorer le projet ou à ajouter des fonctionnalités, tout en permettant de suivre ce qui a changé depuis le dernier point de sauvegarde global. Pour élaborer, ce type de procédure peut être utile pour une seule personne mais plus encore pour un groupe de personnes travaillant toutes sur le même projet. En effet, lorsque vous travaillez sur un projet en groupe, il existe une répartition des responsabilités et différentes personnes modifient différents aspects du projet. Sans un mécanisme de gestion des versions, il serait très difficile de garder tout le monde synchronisé sur les dernières modifications apportées par tous les autres.
Terminologie
Le référentiel
Le référentiel est l'emplacement où sont enregistrées toutes les données de tous les endroits. Dans le monde de la subversion, du point de vue du client, c'est le serveur qui contient la base de données du projet. Cette base de données contient tous les fichiers qui font partie du projet avec toutes leurs versions antérieures..
Révision
Lorsqu'un référentiel est créé, il reçoit le numéro de révision zéro (0). Ce nombre est incrémenté d'un (1) chaque fois qu'une validation est effectuée. Le numéro de révision est global pour le référentiel. C'est-à-dire qu'il n'y a pas de numéro de révision individuel pour les fichiers individuels dans le référentiel, même si rien n'a changé dans ce fichier pour ce commit spécifique.
La copie de travail
Une copie de travail est une copie locale (ou «extraction») d'une version particulière. Habituellement, cette version, une fois extraite, est la “dernière” version (également appelée “tête“), mais une version précédente peut être demandée. L'utilisateur peut faire avec la copie locale tout ce qu'il désire, sachant qu'au pire, il pourrait simplement extraire à nouveau le code. De plus, cette copie est «privée». En effet, tant que vous n'aurez ni mis à jour ni validé votre copie, vous ne verrez ni les modifications des autres utilisateurs, ni les vôtres..
Mise à jour et résolution de conflits
Une copie de travail locale peut être mise à jour. Autrement dit, si vous avez "extrait" une certaine version et que, pendant que vous travailliez, la version du référentiel a été mise à jour, vous pouvez mettre à jour votre copie de travail au plus tard. En fait, le serveur vous empêchera de valider vos modifications avant de mettre à jour la dernière version pour correspondre au référentiel. Ceci est fait pour vous obliger à résoudre les conflits localement, avant même de penser à valider des modifications dans le référentiel.
Fusion
La fusion fait référence au processus par lequel le code modifié est fusionné en une seule version. Cela peut également impliquer la résolution de conflits.
Commet
La validation est le processus dans lequel les modifications que vous avez apportées à votre copie locale seront fusionnées dans le référentiel. C’est la partie la plus périlleuse du processus, car c’est ici que les modifications que vous avez apportées pourraient avoir un impact sur les autres utilisateurs du même référentiel. C’est la raison pour laquelle cela est généralement fait après réflexion, avec le consensus de l’équipe et après la résolution des conflits de fusion..
Le flux de travail
Le flux de travail le plus élémentaire du point de vue de l'utilisateur lors de l'utilisation de subversion est le suivant:
1. Commander le code existant (généralement la "tête").
2. Apporter des modifications, ajouter des fichiers et développer généralement le code.
3. Mettez à jour vers la dernière version pour vous assurer que votre copie locale est synchronisée avec les mises à jour du référentiel..
4. Fusionnez localement et résolvez les conflits si nécessaire.
5. Commettez les modifications fusionnées dans le référentiel.
6. Aller à l'étape 2.
Permet de craquer
Installer le client
Pour pouvoir utiliser Subversion, vous devez installer le client sur votre machine..
Sur Linux
Vous devez seulement installer le paquet. Sur Ubuntu / Mint, cela se ferait avec:
sudo aptitude install subversion
Sur DD-WRT
Si vous avez suivi la procédure «Comment installer des logiciels supplémentaires sur votre routeur domestique (DD-WRT)», vous pouvez installer le client svn en émettant simplement:
mise à jour opkg; opkg installe subversion-client
Sur Windows
Bien que nous, les grands connaisseurs, puissions commencer à oublier que l'interface graphique existe même parfois, tout le monde ne l'a pas. Si vous souhaitez utiliser un client Windows pour vous connecter à un référentiel SVN, celui de loin le plus populaire est «Tortoise». Pour l'utiliser, il suffit de télécharger le programme et de l'installer à la manière habituelle «suivant, suivant, termine».
Créer le "référentiel"
Bien que nous n'allions pas entrer dans trop de détails sur la configuration d'un serveur de sous-version dans ce guide, l'alternative de Google n'est pas un mauvais début pour l'utilisateur novice. Pour créer un référentiel Google:
- Rendez-vous sur le site Web d'hébergement de Google Code et «créez» un nouveau projet..
- Dans la page suivante, remplissez les champs obligatoires et sélectionnez le type de «système de contrôle de version» à subversion.
Remarque: vous voudrez peut-être jeter un coup d'œil sur la différence entre les licences offertes par Google avant de sélectionner une licence pour le projet.. - Cliquez sur "Créer un projet".
Une fois votre projet créé, vous devriez pouvoir trouver les instructions pour y accéder dans l'onglet «Source»..
La bonne chose à propos du code Google, c'est qu'il permettra une version anonyme en lecture seule pour votre projet. Si vous ne souhaitez pas gérer les problèmes liés à la création de votre propre projet, vous pouvez consulter anonymement le référentiel de cet auteur..
Une remarque à propos du projet hotfortech: Ce projet est destiné à couvrir les fonctionnalités qui ont été ajoutées à DD-WRT dans How-To Geek (que j'utilise personnellement), ainsi que quelques ajustements personnels. Bien que ce projet soit conçu pour fonctionner en conjonction avec les articles publiés ici sur howtogeek, il reste mon projet privé. C’est-à-dire qu’il est parfaitement adapté à mon routeur Buffalo (architecture AR71xx), à mes caprices personnels et qu’il est sujet au borkage occasionnel.
Sous Linux / DD-WRT
Créez le répertoire dans lequel travailler, par exemple sur DD-WRT, qui pourrait être:
mkdir -p / jffs / svn; cd / jffs / svn
La commande complète sous Linux comprend la commande SVN elle-même, la directive «checkout», l’adresse du référentiel et le répertoire de contrôle également. Créez un répertoire vide et exécutez la commande ci-dessous:
svn checkout http://hotfortech-dd-wrt.googlecode.com/svn/trunk/ hotfortech-dd-wrt-read-only
Notez que dans l'exemple ci-dessus, la version en lecture seule est en cours d'extraction. Si vous avez choisi de créer votre propre référentiel, vous devrez utiliser le lien httpS..
Sur Windows
Tortoise étant une extension du shell, vous devrez utiliser le menu contextuel de l'explorateur de fichiers Windows (clic droit) pour l'utiliser. En fait, si vous essayez de l'invoquer à partir du menu Démarrer, vous obtiendrez:
- Créer un répertoire vide.
- Faites un clic droit dessus pour faire apparaître le menu contextuel.
- Sélectionnez «SVN Checkout»:
- Copiez et collez le lien du projet (si vous en avez un) dans la zone de texte «URL»:
- En fonction de la taille de votre projet, cela peut prendre un certain temps, mais lorsque la "Commande" est terminée, vous devriez voir quelque chose comme:
- Vous pouvez commencer à développer.
Mettre à jour et fusionner votre copie de travail
Si vous travaillez sur le code avec des collègues ou si vous-même le mettez à jour à partir de plusieurs emplacements (ordinateur portable, ordinateur de bureau ou même routeur), vous devrez mettre à jour votre copie de travail avant de valider les dernières modifications..
Sous Linux / DD-WRT
La commande pour faire cela sur ces systèmes POSIX est simplement:
svn up
Sur Windows
- Faites un clic droit dans le répertoire de travail et sélectionnez “Mise à jour SVN”:
- Si vous rencontrez des conflits, essayez de suivre les instructions à l'écran et utilisez votre jugement pour savoir quoi faire à ce sujet..
"Commit" vos modifications
Voilà, vous devriez être libre de tout conflit et prêt à mettre à jour le référentiel avec vos modifications.
Le point à noter ici est qu’il est courant d’ajouter un message «log» au commit, afin de pouvoir facilement rappeler pourquoi les modifications ont été apportées. En fait, le référentiel de Google en fait une condition préalable obligatoire pour engager.
Sous Linux / DD-WRT
Voici un exemple de l'engagement que j'ai pris dans le projet hotfortech qui l'a propulsé à la version 19:
svn commit -m “mis à jour pour refléter le nouveau lien ant-ads pack”
Sur Windows
- Faites un clic droit dans le répertoire de travail et sélectionnez “SVN Commit”:
- Vous devriez être accueilli par une fenêtre vous permettant de noter un message de journal:
- Cliquez sur OK et lorsque vous êtes invité à entrer un mot de passe, indiquez le mot de passe généré par Google..
- Si le commit a réussi, vous devriez voir quelque chose comme:
- Ça y est, vous devriez pouvoir vous engager comme un BOSS.
Remarques finales
Cela devrait être suffisant pour vous aider à démarrer. Nous vous conseillons de lire les ouvrages de référence SVN pour mieux comprendre tous les usages, options et mises en garde de SVN. De plus, nous vous rappelons (encore une fois) que la subversion n'est PAS le seul système de contrôle de version disponible et que GIT (créé par Linus Torvalds, le fondateur du noyau Linux) semble gagner en popularité ces dernières années..
Si vous décidez d’exécuter «running-config.sh» à partir du projet hotfortech sur votre routeur, vous constaterez qu’il va s’installer pour vous: le pack anti-ads-pack, le script geek-init d’Opkg, des choses telles que l'intégralité de GNU «ls», «moins», «BASH» et plus encore.
/jffs/svn/hotfortech-dd-wrt/running-conf.sh
Plus de fonctionnalités sont en attente et seront ajoutées à l'avenir.
Les administrateurs système coderont leur manière de sortir du codage.