Libre à vous de partager

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.

É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.
Schéma récapitulatif des communication du client subversion en ligne de commande
Schéma récapitulatif des communication du client subversion en ligne de commande

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.

Laisser un commentaire