Nous allons aborder comment utiliser subversion en ligne de commande, après avoir vu comment utiliser un client subversion en mode graphique. Il n’y a aucun impact sur la copie de travail que cela soit fait en mode graphique ou en ligne de commande. Vous pouvez sans aucun problème alterner les deux modes d’accès. En effet les deux logiciels ne font que lire et modifier les fichiers de configuration de la copie locale. Ainsi tout ce qui est fait avec l’un est visible par l’autre.
Dans mon précédent article, nous avons vu comment installer, configurer un dépôt sur un serveur. Si vous n’avez pas de dépôt disponible, je vous conseille vivement de lire l’article : bien démarrer avec subversion en cinq étapes.
Table des matières
Étape 1 : installer le client en mode console
Installation
Sur les distributions du type Debian, l’installation se fait comme d’habitude avec le logiciel APT. Elle ne présente aucune difficulté.
admin-libre@admin-libre:~$ sudo apt install subversion [sudo] password for admin-libre: Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Lecture des informations d'état... Fait Paquets suggérés : db5.3-util libapache2-mod-svn subversion-tools Les NOUVEAUX paquets suivants seront installés : subversion 0 mis à jour, 1 nouvellement installés, 0 à enlever et 7 non mis à jour. Il est nécessaire de prendre 914 ko dans les archives. Après cette opération, 4 982 ko d'espace disque supplémentaires seront utilisés. Réception de :1 http://fr.archive.ubuntu.com/ubuntu mantic/universe amd64 subversion amd64 1.14.2-4build2 [914 kB] 914 ko réceptionnés en 1s (1 822 ko/s) Sélection du paquet subversion précédemment désélectionné. (Lecture de la base de données... 224390 fichiers et répertoires déjà installés.) Préparation du dépaquetage de .../subversion_1.14.2-4build2_amd64.deb ... Dépaquetage de subversion (1.14.2-4build2) ... Paramétrage de subversion (1.14.2-4build2) ... Traitement des actions différées (« triggers ») pour man-db (2.11.2-3) ...
Obtenir de l’aide
Pour obtenir de l’aide sur l’utilisation du client de subversion en ligne de commande, vous pouvez utiliser elle est intégrée directement au client de subversion en ligne de commande.
admin-libre@admin-libre:~$ svn help usage: svn <subcommand> [options] [args] Subversion command-line client. Type 'svn help <subcommand>' for help on a specific subcommand. Type 'svn --version' to see the program version and RA modules, 'svn --version --verbose' to see dependency versions as well, 'svn --version --quiet' to see just the version number. Most subcommands take file and/or directory arguments, recursing on the directories. If no arguments are supplied to such a command, it recurses on the current directory (inclusive) by default. Available subcommands: add auth blame (praise, annotate, ann) cat changelist (cl) checkout (co) cleanup commit (ci) copy (cp) delete (del, remove, rm) diff (di) export help (?, h) import info list (ls) lock log merge mergeinfo mkdir move (mv, rename, ren) patch propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) relocate resolve resolved revert status (stat, st) switch (sw) unlock update (up) upgrade Subversion est un outil pour gérer des versions. Pour plus d'informations, voir http://subversion.apache.org/
Comme vous pouvez le voir, cette commande vous retourne la liste de toutes les commandes que le client subversion en ligne de commande accepte. Dans cet article, nous n’allons pas voir la totalité de ses commandes qui sont assez nombreuses.
Il est possible d’obtenir une aide plus détaillée d’une commande de subversion en ligne de commande en particulier.
admin-libre@admin-libre:~$ svn help checkout checkout (co): Check out a working copy from a repository. usage: checkout URL[@REV]... [PATH] If specified, REV determines in which revision the URL is first looked up. If PATH is omitted, the basename of the URL will be used as the destination. If multiple URLs are given each will be checked out into a sub-directory of PATH, with the name of the sub-directory being the basename of the URL. If --force is used, unversioned obstructing paths in the working copy destination do not automatically cause the check out to fail. If the obstructing path is the same type (file or directory) as the corresponding path in the repository it becomes versioned but its contents are left 'as-is' in the working copy. This means that an obstructing directory's unversioned children may also obstruct and become versioned. For files, any content differences between the obstruction and the repository are treated like a local modification to the working copy. All properties from the repository are applied to the obstructing path. See also 'svn help update' for a list of possible characters reporting the action taken. Options valides: -r [--revision] ARG : ARG (certaines commandes prennent aussi un intervalle ARG1:ARG2) Un argument de révision peut être : NUMÉRO numéro de révision '{' DATE '}' révision au début de ce jour 'HEAD' dernière dans le dépôt 'BASE' révision de base de la copie de travail 'COMMITTED' dernière révision propagée à ou avant BASE 'PREV' révision précédente de COMMITTED -q [--quiet] : n'affiche rien, ou seulement des informations résumées -N [--non-recursive] : obsolete; same as --depth=files --depth ARG : limite l'opération à la profondeur ARG ('empty' vide, 'files' fichiers, 'immediates' immédiat, ou 'infinity' infini) --force : force l'exécution de l'opération --ignore-externals : ignore les définitions externes (Use '-v' to show global and experimental options.)
Étape 2 : récupérer un dépôt
Pour cette étape de comment utiliser subversion en ligne de commande, nous allons entrer dans le vif du sujet en récupérant directement le dépôt qui a été créé lors du précédent article. Cela fonctionne bien entendu avec n’importe quel dépôt subversion. Dans ce cas-là il suffit juste de remplacer le chemin par celui de votre dépôt.
admin-libre@admin-libre:~/svn$ svn checkout --username harry svn://192.168.1.53/mon_super_projet mon_super_projet/ Domaine d'authentification : <svn://192.168.1.53:3690> Mon super projet Mot de passe pour 'harry' : ************ A mon_super_projet/cmd_kdesvn.txt Révision 1 extraite.
Comme pour l’interface graphique, pensez à donner le nom d’un dossier, sinon le dossier courant sera utilisé pour stocker la copie de travail. Si des fichiers sont déjà présents dans ce dossier, cela peut poser des problèmes, surtout si des fichiers ou des dossiers portent le même nom. Si le dossier n’existe pas, il sera créé par la commande.
Si l’utilisateur de votre système n’a pas le même nom que l’utilisateur autorisé à accéder au dépôt il faut à tout prix fournir le nom d’utilisateur à utiliser avec l’option –username nom.
Étape 3 : gérer les fichiers avec subversion en ligne de commande
Nous progressons dans notre apprentissage de subversion ligne de commande et cette nouvelle étape va vous permettre de vous familiariser avec la gestion des fichiers.
Ajouter un fichier ou un dossier
Le client subversion en ligne de commande va suivre les modifications effectuées sur le système de fichiers. Mais il n’intégrera pas les nouveaux fichiers ou dossiers qui se trouvent dans la copie de travail. Il faut ajouter manuellement le fichier ou le dossier. La commande nécessite que le fichier soit déjà existant.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn help > aide.txt admin-libre@admin-libre:~/svn/mon_super_projet$ svn add aide.txt A aide.txt
Pour les dossiers, il existe une commande qui permet de créer sur le système de fichiers le dossier tout en ajoutant au référentiel de la copie de travail.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn mkdir aide A aide
Modifier un fichier
Le client subversion en ligne de commande s’aperçoit automatiquement de la modification des fichiers. Il n’y a absolument rien à faire si un fichier est modifié. Le client subversion en ligne de commande le mettra automatiquement dans la liste des fichiers mis à jour qui devront être publiés lors de la prochaine publication
Déplacer un fichier ou un dossier
Afin de simplifier les modifications d’architecture, le client subversion en ligne de commande fournit une commande qui va déplacer un fichier ou un dossier à la fois sur le système de fichiers et dans le référentiel.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn move aide.txt aide A aide/aide.txt D aide.txt
Note : si les modifications sont effectuées directement sur le système de fichiers en ligne de commande ou par interface graphique, il sera nécessaire d’indiquer à subversion les modifications en supprimant puis en ajoutant du référentiel les fichiers déplacés.
Supprimer un fichier ou un dossier
Le client subversion en ligne de commande permet de supprimer un fichier ou un répertoire. Lors de la publication, les fichiers seront supprimés à la fois sur le dépôt distant et sur la copie locale. Si l’on souhaite garder la copie locale il faut lui fournir l’option –keep-local. Le fichier sera à nouveau vu comme un fichier non connu.
admin-libre@admin-libre:~/svn/mon_super_projet$ ls aide cmd_kdesvn.txt fiber.txt fichier_tempo.txt fichier.txt admin-libre@admin-libre:~/svn/mon_super_projet$ svn remove fichier_tempo.txt D fichier_tempo.txt admin-libre@admin-libre:~/svn/mon_super_projet$ ls aide cmd_kdesvn.txt fiber.txt fichier.txt admin-libre@admin-libre:~/svn/mon_super_projet$ svn remove fiber.txt --keep-local D fiber.txt admin-libre@admin-libre:~/svn/mon_super_projet$ ls aide cmd_kdesvn.txt fiber.txt fichier.txt admin-libre@admin-libre:~/svn/mon_super_projet$ svn commit -m "test" Suppression fiber.txt Suppression fichier_tempo.txt Transaction de propagation... Révision 8 propagée. admin-libre@admin-libre:~/svn/mon_super_projet$ ls aide cmd_kdesvn.txt fiber.txt fichier.txt admin-libre@admin-libre:~/svn/mon_super_projet$ svn status ? fiber.txt admin-libre@admin-libre:~/svn/mon_super_projet$
Note : si le fichier est supprimé en dehors du client subversion en ligne de commande, la commande se contentera de mettre à jour le référentiel subversion.
Étape 4 : statuts d’un dépôt
Le client subversion en ligne de commande permet de consulter le statut de la copie de travail.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn status admin-libre@admin-libre:~/svn/mon_super_projet$
Si le retour est vide, cela veut dire qu’il n’y a aucune modification locale en attente de publication.
Sinon, la commande vous retournera la liste complète des fichiers ajoutés, modifiés et supprimés.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn status A aide A aide/aide.txt A fichier.txt
Étape 5 : gérer les mises à jour d’un dépôt
Vérifier les mises à jour d’un dépôt
Si vous êtes plusieurs à travailler sur un dépôt, il est vivement conseillé de vérifier que votre copie de travail est bien à la dernière révision disponible. Cela permet d’éviter de nombreuses erreurs de publication.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn update Mise à jour de '.' : À la révision 1.
Si la copie de travail et à jour, la commande se contente d’afficher la révision actuelle.
Envoyer les mises à jour d’un dépôt
Vous avez terminé votre travail ou vous souhaitez l’intégrer au dépôt. Vous pouvez alors le publier vers le site. Avec le client subversion en ligne de commande c’est très simple. La commande prend pour option — m « votre texte » pour fournir directement le commentaire de la publication.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn commit -m "Premmier commit" Ajout aide Ajout aide/aide.txt Ajout fichier.txt Transmission des données ..done Transaction de propagation... Révision 2 propagée.
Si cette option n’est pas utilisée, le client subversion en ligne de commande ouvrira l’éditeur de texte Nano pour que vous puissiez le rentrer. Pour sortir de l’éditeur il faut appuyer en même temps sur la touche CTRL et la touche X. Vous pouvez le laisser vide. Il faudra ensuite appuyer sur la touche C pour que la publication commence.
admin-libre@admin-libre:~/svn/mon_super_projet$ svn commit Entrée du journal non modifié ou non précisé (a)nnule, (c)ontinue, (e)dite c Ajout fiber.txt Transmission des données .done Transaction de propagation... Révision 3 propagée.
Conclusion
Voilà enfin arrivé à la fin de cette découverte du client subversion en ligne de commande. Vous avez maintenant tout ce qu’il vous faut pour débuter sereinement avec le client subversion en ligne de commande. La pratique vous permettra de retenir facilement les différentes commandes du client subversion en ligne de commande. Dans un prochain article nous verrons une utilisation beaucoup plus avancée.