This text is a work in progress—highly subject to change—and may not accurately describe any released version of the Apache™ Subversion® software. Bookmarking or otherwise referring others to this page is probably not such a smart idea. Please visit http://www.svnbook.com/ for stable versions of this book.

Utilisation d'éditeurs externes

La manière la plus évidente d'entrer des données dans Subversion consiste à ajouter des fichiers sous gestion de versions, propager des changements sur ces fichiers, etc. Mais d'autres informations existent dans le dépôt Subversion à côté des données constituées par les simples fichiers suivis en versions. Certaines de ces informations — les messages de propagation, les commentaires sur les verrous et les valeurs de certaines propriétés — ont naturellement tendance à être textuelles et sont explicitement fournies par les utilisateurs. En général, ces informations peuvent être fournies à Subversion à l'aide du client texte interactif en utilisant les options --message (-m) et --file (-F) dans le cadre des sous-commandes appropriées.

Chacune de ces options a des avantages et des inconvénients. Par exemple, quand vous effectuez une propagation, l'option --file (-F) fonctionne bien si vous avez déjà préparé un fichier texte qui contient votre message de propagation. Si vous ne l'avez pas fait, vous pouvez toujours utiliser l'option --message (-m) pour stipuler votre message en ligne de commande. Malheureusement, composer un message de plus d'une ligne en ligne de commande peut être assez délicat. Les utilisateurs veulent plus de flexibilité : ils veulent pouvoir écrire un message de propagation multi-lignes, sans contrainte de format et à la demande.

Subversion répond à cette attente en vous permettant de spécifier un éditeur de texte externe qui sera lancé au besoin, vous offrant ainsi un moyen plus puissant pour entrer des méta-données textuelles. Il y a plusieurs manières d'indiquer à Subversion quel éditeur vous voulez utiliser. Subversion vérifie les choses suivantes, dans l'ordre spécifié, avant de lancer un tel éditeur :

  1. l'option en ligne de commande --editor-cmd ;

  2. la variable d'environnement SVN_EDITOR ;

  3. l'option de configuration editor-cmd ;

  4. la variable d'environnement VISUAL ;

  5. la variable d'environnement EDITOR ;

  6. éventuellement, une valeur par défaut spécifiée dans une des bibliothèques de Subversion (non présente dans les distributions officielles).

La valeur de n'importe laquelle de ces options ou variables est le début de la ligne de commande qui sera exécutée par le shell. Subversion ajoute à cette ligne de commande une espace et le chemin vers un fichier temporaire à éditer. Ainsi, pour être utilisé avec Subversion, l'éditeur spécifié ou configuré doit pouvoir être appelé avec pour dernier argument de sa ligne de commande le fichier à éditer, il doit être capable de sauvegarder le fichier au même endroit et il doit retourner zéro comme code de retour, pour indiquer la réussite de l'opération.

Comme indiqué, les éditeurs externes peuvent être utilisés pour fournir les messages de propagation à n'importe quelle sous-commande de propagation (telle que svn commit ou svn import, svn mkdir ou svn delete quand vous fournissez une URL cible, etc.) et Subversion essaie de lancer l'éditeur automatiquement si vous ne spécifiez ni l'option --message (-m) ni l'option --file (-F). La commande svn propedit est presque entièrement construite autour de l'utilisation d'un éditeur de texte externe. À partir de la version 1.5, Subversion utilise également l'éditeur de texte externe configuré quand l'utilisateur demande le lancement d'un éditeur lors de la résolution interactive de conflits. Bizarrement, il ne semble pas y avoir de moyen d'utiliser un éditeur externe pour fournir un commentaire de verrouillage de manière interactive.