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.

Guide de référence de svn : le client texte interactif


svn est le client texte interactif officiel de Subversion. Ses fonctionnalités sont accessibles via un ensemble de sous-commandes dont la plupart accepte plusieurs options pour contrôler très finement le comportement du programme.

Lorsque vous utilisez le programme svn, les sous-commandes et les paramètres qui ne sont pas des options doivent apparaître dans un ordre bien spécifié dans la ligne de commande. Les options, quant à elles, peuvent être indiquées n'importe où dans la ligne de commande (après le nom du programme, bien sûr) et, en général, leur ordre est sans importance. Par exemple, toutes les lignes de commandes qui suivent sont valides pour exécuter svn status et sont interprétées exactement de la même manière :

$ svn -vq status mon-fichier
$ svn status -v -q mon-fichier
$ svn -q status -v mon-fichier
$ svn status -vq mon-fichier
$ svn status mon-fichier -qv

Les sections qui suivent décrivent chaque sous-commande et les options correspondantes du client texte interactif svn, avec quelques exemples d'utilisations typiques pour chaque sous-commande.

Bien que Subversion accepte différentes options en fonction des sous-commandes, toutes les options gardent leur signification quelle que soit la sous-commande avec laquelle elles sont utilisées — elles font partie d'un seul « espace de noms ». Par exemple, l'option --verbose (-v) signifie toujours « être plus bavard », quelle que soit la sous-commande utilisée.

Le client en ligne de commande svn renvoie généralement rapidement une erreur si vous lui indiquez une option qui ne s'applique pas à la sous-commande spécifiée. Cependant, depuis la version 1.5 de Subversion, plusieurs options sont acceptées par toutes (ou presque) les sous-commandes, même si elles n'ont pas d'effet dans certains cas (cette modification a été apportée principalement pour faciliter l'encapsulation du client dans des scripts). Elles sont regroupées dans la rubrique « options globales » des messages d'explication des commandes, comme vous pouvez le voir dans l'extrait de sortie suivant :

$ svn help upgrade
upgrade: Mise à jour des meta-données du format de stockage de la copie de travail.
usage : upgrade CHEMIN...

   Les modifications locales sont préservées.

Options valides:
  -q [--quiet]             : n'affiche rien, ou seulement des informations résumées

Options globales :
  --username ARG           : précise le nom d'utilisateur ARG
  --password ARG           : précise le mot de passe ARG
  --no-auth-cache          : ne conserve pas les éléments d'authentification
  --non-interactive        : do no interactive prompting (default is to prompt
                             only if standard input is a terminal device)
  --force-interactive      : do interactive prompting even if standard input
                             is not a terminal device
  --trust-server-cert      : accepte les certificats serveur SSL d'authorités inconnues sans confirmation
           (mais seulement avec '--non-interactive')
  --config-dir ARG         : fichiers de configuration dans ce répertoire
  --config-option ARG      : configuration des options utilisateurs avec le format :
                               FICHIER:SECTION:OPTION=[VALEUR]
                           Par exemple :
                               servers:global:http-library=serf
$

Les sous-commandes svn reconnaissent les options suivantes :

Options de svn

--accept ACTION

Précise l'attitude à adopter pour la résolution automatique de conflits et désactive l'interface interactive qui demande à l'utilisateur quelle action appliquer. Bien que les actions possibles dépendent de la sous-commande utilisée, Subversion accepte les valeurs suivantes (courtes et longues) pour le paramètre ACTION :

postpone (p)

Ne rien résoudre du tout mais marquer les éléments comme étant en conflits.

edit (e)

Ouvrir chaque fichier (au format texte) en conflit dans un éditeur de texte pour une résolution à la main.

launch (l)

Lancer un outil interactif de résolution de conflits et de fusion pour chaque fichier en conflit.

base

Choisir le fichier de la révision BASE (non modifié) avant d'essayer d'y intégrer les modifications en provenance du serveur pour donner la copie de travail.

working

Choisir la version actuelle de la copie de travail (i.e. Subversion suppose que vous avez géré manuellement le conflit en amont).

mine-full (mf)

Résoudre les fichiers en conflits en préservant toutes les modifications locales et en ignorant les modifications en provenance du serveur pour l'opération qui a créé le conflit.

theirs-full (tf)

Résoudre les fichiers en conflits en ignorant toutes les modifications locales et en intégrant les modifications en provenance du serveur pour l'opération qui a créé le conflit.

mine-conflict (mc)

Résoudre les fichiers en conflits en préférant les modifications locales par rapport aux modifications en provenance du serveur pour les régions des fichiers qui génèrent des conflits.

theirs-conflict (tc)

Résoudre les fichiers en conflits en préférant les modifications en provenance du serveur par rapport aux modifications locales pour les régions des fichiers qui génèrent des conflits.

Consultez la sortie de svn help SOUS-COMMANDE pour voir exactement quelles actions sont possibles pour chaque sous-commande qui vous intéresse.

--allow-mixed-revisions

Désactiver la vérification (qui est faite par défaut par svn merge depuis Subversion 1.7) que la cible d'une opération de fusion et que tous ses fils concernent bien une révision unique. Bien que fusionner vers une copie de travail représentant une révision unique est une bonne pratique, cette option peut être utilisée pour autoriser des fusions sur des copies de travail à révisions mélangées si nécessaire.

--auto-props

Activer les propriétés automatiques (suivant les règles définies dans la zone de configuration), remplaçant alors la directive enable-auto-props dans le fichier de configuration config.

--change (-c) ARG

Effectuer l'opération demandée en utilisant un « changement » particulier. Cette option est du sucre syntaxique pour spécifier -r ARG-1:ARG. Certaines sous-commandes autorisent une liste de numéros de révisions séparés par des virgules comme argument (par exemple, -c ARG1,ARG2,ARG3). Autrement, vous pouvez fournir deux arguments séparés par un tiret (comme dans -c ARG1-ARG2) pour identifier un intervalle de révisions entre ARG1 et ARG2 inclus. Enfin, si le numéro de révision en argument est négatif, cela veut dire que l'intervalle de révision doit être pris à l'envers : -c -45 est équivalent à -r 45:44.

--changelist (--cl) ARG

N'opérer que sur les membres de la liste de changements nomméeARG. Vous pouvez utiliser cette option plusieurs fois pour spécifier un ensemble de listes de changements.

--config-dir DIR

Lire la configuration dans le répertoire spécifié plutôt qu'à l'endroit par défaut (.subversion dans le répertoire de l'utilisateur).

[Note] Note

Cette option est acceptée par toutes les sous-commandes svn.

--config-option CONFSPEC

Définir, pour la durée de la commande, la valeur d'une option de configuration. CONFSPEC est une chaine qui spécifie l'espace de noms, le nom et la valeur de l'option de configuration que vous voulez assigner, sous la forme FICHIER:SECTION:OPTION=[VALEUR]. Dans cette syntaxe, FICHIER et SECTION représentent le fichier de la zone de configuration (soit config, soit servers) et la section qui contient l'option dont vous voulez définir la valeur. OPTION est, bien sûr, l'option elle-même et VALEUR est la valeur (s'il y en a une) que vous voulez assigner à cette option. Par exemple, pour désactiver temporairement l'utilisation de la configuration automatique des propriétés, utilisez --config-option=config:miscellany:enable-auto-props=no. Vous pouvez utiliser cette option plusieurs fois pour changer plusieurs valeurs d'options pour la commande en cours.

[Note] Note

Cette option est acceptée par toutes les sous-commandes svn.

--depth ARG

Limiter l'opération à une certaine profondeur de l'arborescence. ARG peut prendre les valeurs suivantes : empty (uniquement la cible elle-même), files (la cible et tous ses fichiers qui sont enfants immédiats), immediates (la cible et tous ses enfants immédiats), infinity (la cible et tous ses descendants — la récursion est complète).

--diff

Activer un mode spécial pour l'affichage de svn log qui inclut l'analyse des différences (comme svn diff) pour chaque révision.

--diff-cmd CMD

Utiliser un programme externe pour afficher les différences entre fichiers. Quand svn diff est invoquée sans cette option, elle utilise le moteur interne de Subversion qui fournit un format unifié par défaut. Si vous voulez utiliser un programme externe, ajoutez l'option --diff-cmd. Vous pouvez spécifier des options à ce programme externe à l'aide de l'option --extensions (-x.

--diff3-cmd CMD

Spécifie une commande externe pour réaliser la comparaison entre 3 fichiers (utilisé pour fusionner les modifications ligne à ligne des fichiers).

--dry-run

Effectuer toutes les étapes de la commande, mais sans écrire effectivement les changements — que ce soit sur le disque local ou sur le dépôt.

--editor-cmd CMD

Spécifie un programme externe pour éditer l'entrée du journal de propagation ou une valeur de propriété. Voir la section editor-cmd dans la section intitulée « Configuration générale » pour savoir comment spécifier un éditeur par défaut.

--encoding ENC

L'entrée du journal de propagation est encodée avec le jeu de caractères ENC. La valeur par défaut est l'encodage utilisé par votre système d'exploitation conformément à la régionalisation active. Vous devez spécifier explicitement l'encodage si votre entrée du journal de propagation utilise un autre encodage que la valeur par défaut.

--extensions (-x) ARG

Spécifie un ou plusieurs arguments à passer à la commande diff externe. Les valeurs possibles sont :

--ignore-space-change (-b)

Ignorer les modifications relatives aux espaces.

--ignore-all-space (-w)

Ignorer tous les espaces.

--ignore-eol-style

Ignorer les modifications de caractère de fin de ligne (EOL).

--show-c-function (-p)

Imprimer le nom de la fonction C dans l'affichage des différences.

--unified (-u)

Afficher trois lignes de contexte pour le diff unifié.

La valeur par défaut de ARG est -u. Si vous voulez passez plusieurs arguments, vous devez les encapsuler dans des guillemets.

Notez que si Subversion est configuré pour invoquer un programme externe pour les différence, la valeur de l'option --extension (-x) n'est pas restreinte aux paramètres cités supra, mais peut être constituée de tout argument que Subversion passera à ce programme externe.

--file (-F) NOM_FICHIER

Utiliser le contenu du fichier NOM_FICHIER pour la commande spécifiée, le traitement exact variant suivant les sous-commandes. Par exemple, svn commit utilise le contenu comme entrée du journal de propagation alors que svn propset l'utilise comme valeur de la propriété.

--force

Force l'exécution de l'opération. Subversion interdit certaines opérations en temps normal mais vous pouvez passer outre et indiquer à Subversion : « oui, je sais ce que je fais et les conséquences que cela peut avoir, alors laisse-moi faire ». En utilisant une métaphore, on pourrait dire que cela revient à travailler sur un circuit électrique sous tension ; si vous ne savez pas ce que vous faites, vous prendrez sûrement une bonne décharge.

--force-log

Valide la source de l'entrée du journal de propagation passée avec l'option --message (-m) ou --file (-F). Par défaut, Subversion renvoie une erreur si les paramètres de ces options ressemblent à des cibles de la sous-commande. Par exemple, si vous passez le chemin d'un fichier suivi en versions à l'option --file (-F), Subversion considère que vous avez fait une erreur, c'est-à-dire que le chemin indiqué devait plutôt être la cible de la commande et que vous avez oublié de fournir le nom d'un fichier — non suivi en versions — comme source pour l'entrée du journal de propagation. Pour confirmer votre intention et passer outre cette erreur, passez l'option --force-log aux sous-commandes qui prennent des entrées du journal de propagation comme arguments.

--git

Activer un mode d'affichage spécial pour la commande svn diff, destiné à assurer la compatibilité avec le système de gestion de versions Git.

--help (-h, -?)

Si elle est utilisée avec une ou plusieurs autres sous-commandes, affiche l'aide intégrée pour chacune d'elles. Utilisée seule, elle affiche l'aide générale relative au client texte interactif.

--ignore-ancestry

Ignorer l'héritage pour évaluer les différences (ne se fier qu'au chemin en tant que tel). Désactiver aussi Suivi de fusions lorsque elle est utilisée avec la sous-commande svn merge.

--ignore-externals

Ignorer les définitions de références externes ainsi que les copies de travail associées.

--ignore-keywords

Désactiver la substitution des mots-clés.

--ignore-properties

Ordonne à svn diff de ne pas afficher ce qui concerne la modification des propriétés.

--ignore-whitespace

Ordonne à svn patch d'ignorer les espaces quand il recherche le contexte d'un correctif.

--incremental

Produire un affichage avec un format compatible pour la concaténation.

--internal-diff

Utiliser le moteur interne de calcul des différences même si un programme externe est spécifié dans la zone de configuration de l'utilisateur.

--keep-changelists

Ne pas détruire les listes de changements après la propagation.

--keep-local

Garder une copie locale d'un fichier ou répertoire (utilisée avec la commande svn delete).

--limit (-l) NUM

Afficher seulement les NUM premières entrées du journal de propagation.

--message (-m) MESSAGE

Indique que vous spécifiez, sur la ligne de commande à la suite de cette option, soit une entrée du journal de propagation, soit un commentaire de verrouillage. Par exemple :

 
$ svn commit -m "Ils ne font pas de glace."
--native-eol ARG

Ordonne à svn export d'utiliser la séquence de fin de ligne spécifiée comme si c'était celle en vigueur sur la plateforme cliente. ARG peut prendre les valeurs CR, LF ou CRLF.

--new ARG

Utiliser ARG comme nouvelle cible (à utiliser avec la commande svn diff).

--no-auth-cache

Ne pas stocker en cache les éléments d'authentification (par exemple l'identifiant et le mot de passe) dans la zone de configuration de Subversion.

[Note] Note

Cette option est acceptée par toutes les sous-commandes svn.

--no-auto-props

Désactiver les propriétés automatiques, remplaçant alors la directive enable-auto-props de la zone de configuration.

--no-diff-added

Ne pas afficher les différences pour les fichiers ajoutés. Le comportement par défaut lorsque vous ajoutez un fichier est d'afficher les différences comme si vous aviez ajouté tout le contenu du fichier à un fichier initialement vide.

--no-diff-deleted

Ne pas afficher les différences pour les fichiers supprimés. Le comportement par défaut de svn diff est d'afficher les différences comme si vous aviez toujours le fichier et que celui-ci était vide.

--no-ignore

Afficher les fichiers qui seraient normalement omis dans la liste de statut en raison de la correspondance avec un motif de noms de fichiers présent dans l'option de configuration global-ignores ou dans la propriété svn:ignore. Voir la section intitulée « Configuration générale » et la section intitulée « Occulter les éléments non suivis en versions » pour plus d'information.

--no-unlock

Ne pas déverrouiller les fichiers : le comportement par défaut de la propagation (svn commit) est de déverrouiller tous les fichiers propagés. Voir la section intitulée « Verrouillage » pour plus d'information.

--non-interactive

Désactiver toutes les invites, par exemple les demandes pour l'authentification et la résolution de conflits. Cette option est utile si vous lancez Subversion dans un script automatique et qu'il est préférable que Subversion s'arrête plutôt qu'il n'attende une entrée de l'utilisateur.

[Note] Note

Cette option est acceptée par toutes les sous-commandes svn.

--non-recursive (-N)

Obsolète. Interdire à une sous-commande de descendre dans les sous-répertoires. La plupart des sous-commandes descend par défaut dans les sous-répertoires (comportement récursif), mais quelques unes ne le font pas. Les utilisateurs ne devraient pas utiliser cette option mais plutôt celle plus précise --depth. Pour la plupart des sous-commandes, spécifier l'option --non-recursive produit le même résultat que --depth=files mais il existe des exceptions : svn status en mode non récursif opère à la profondeur immediates et la forme non récursive de svn revert, svn add et svn commit opèrent à la profondeur empty.

--notice-ancestry

Prendre en compte l'héritage pour évaluer les différences.

--old ARG

Utiliser ARG comme ancien répertoire (utilisée avec la commande svn diff).

--parents

Créer (s'ils n'existent pas) et ajouter (s'ils ne sont pas suivis en versions) les sous-répertoires parents à une copie de travail locale ou à un dépôt dans le cadre d'une opération. Cette option est particulièrement utile pour créer automatiquement plusieurs répertoires quand aucun n'existe. Si elle concerne une URL, tous les répertoires seront créés par une seule et même propagation.

--password MOT_DE_PASSE

Spécifie le mot de passe à utiliser pour s'authentifier auprès d'un serveur Subversion. Si le mot de passe n'est pas fourni ou s'il est incorrect, Subversion vous demandera cette information quand il en aura besoin.

[Note] Note

Cette option est acceptée par toutes les sous-commandes svn.

--patch-compatible

Ordonne à svn diff de produire un affichage compatible avec les outils tiers d'application de correctifs. Vous obtenez avec cette option le même résultat que lorsque vous lancez svn diff avec les options --show-copies-as-adds --ignore-properties.

--properties-only

N'afficher que les modifications de propriétés avec svn diff.

--quiet (-q)

N'afficher que ce qui est essentiel pendant une opération.

--record-only

Avec svn merge, enregistrer l'opération comme effectuée dans l'historique mais ne rien faire.

--recursive (-R)

Rendre la sous-commande récursive dans les sous-répertoires. Beaucoup de sous-commandes sont récursives par défaut.

--reintegrate

Obsolète. Utilisée avec la sous-commande svn merge, fusionner tous les changements de la branche spécifique dans sa branche ancêtre. Depuis Subversion 1.8, la sous-commande svn merge détecte automatiquement ce cas et effectue la fusion correctement. Voir la section intitulée « Réintegration d'une branche » pour plus de détails.

--relocate

Obsolète. Utilisée avec la sous-commande svn switch, changer l'emplacement du dépôt auquel votre copie de travail fait référence. L'approche conseillée depuis Subversion 1.7 consiste à utiliser la sous-commande svn relocate. Voir svn relocate pour plus de détails et un exemple.

--remove

Utilisée avec svn changelist pour effacer l'association (l'opération par défaut effectue l'association) entre la (ou les) cible(s) et une liste de changements.

--reverse-diff

Ordonne à svn patch d'interpréter à l'envers le correctif fourni en entrée (traiter les lignes supprimées comme ajoutées et réciproquement).

--revision (-r) REV

Indique que vous allez fournir une révision (ou un intervalle de révisions) pour une opération particulière. Vous pouvez fournir des numéros de révisions, des mots-clés de révision ou des dates (encadrées par des accolades) comme arguments à l'option revision. Si vous voulez spécifier un intervalle de révisions, vous devez fournir deux révisions séparées par le symbole deux points (:). Par exemple :

$ svn log -r 1729
$ svn log -r 1729:HEAD
$ svn log -r 1729:1744
$ svn log -r {2001-12-04}:{2002-02-17}
$ svn log -r 1729:{2002-02-17}

Voir la section intitulée « Mots-clés de révision » pour plus d'informations.

--revprop

Opérer sur une propriété de révision au lieu d'une propriété de fichier ou de dossier. Cette option requiert de passer aussi une révision en paramètre à l'option --revision (-r).

--search ARG

Filtrer les messages de propagation pour ne montre que ceux qui correspondent au motif ARG recherché. Les messages de propagation ne sont affichés que si les motifs recherchés correspondent pour l'auteur, la date ou le message de propagation lui-même (à moins que l'option --quiet ne soit spécifiée) ou, si l'option --verbose est aussi spécifiée, un chemin modifié. Si plusieurs options --search sont spécifiées, un message de propagation est affiché s'il correspond à au moins un motif. Si l'option --limit est utilisée, la recherche est limitée dans le nombre de messages et ce n'est pas le nombre de messages affichés (et donc qui correspondent) qui est limité.

Le motif de recherche (appelé glob ou motif de filtrage du shell) peut contenir des caractères normaux et les caractères spéciaux suivants :

?

Correspond à n'importe quel caractère unique.

*

Correspond à n'importe quelle chaîne de caractères, y compris la chaîne vide.

[ABC]

Correspond à n'importe quel caractère qui figure à l'intérieur des crochets.

--search-and ARG

L'argument de cette option est combiné avec le motif de l'option précédente --search ou --search-and de la ligne de commande. Les messages de propagation ne sont affichés que s'ils correspondent à la combinaison des motifs recherchés.

--set-depth ARG

Fixer (de manière permanente) la profondeur de la copie de travail à partir de ce répertoire à l'une des valeurs suivantes : empty, files, immediates ou infinity. Pour une explication détaillée de ce que cela signifie et sur l'utilisation de cette option, reportez-vous à la section intitulée « Répertoires clairsemés ».

--show-copies-as-adds

Activer un mode de sortie spécial pour svn diff dans lequel la différence de contenu pour un fichier créé par une opération de copie apparaît comme un fichier nouveau (où chaque ligne a été ajoutée à un fichier vide) plutôt que comme un delta vis-à-vis du fichier original à partir duquel la copie a été faite.

--show-inherited-props

Ordonne à svn propget et svn proplist d'afficher les propriétés suivies en versions héritées par le fichier ou dossier cible.

--show-revs ARG

Utilisée pour indiquer à svn mergeinfo de n'afficher qu'une certaine classe des informations de fusions. ARG peut prendre les valeurs merged ou eligible, pour indiquer de voir les révisions soit déjà fusionnées, soit éligibles à une future fusion depuis l'URL source spécifiée.

--show-updates (-u)

Afficher les informations relatives aux fichiers de la copie de travail qui ne sont plus à jour. Cela ne met pas à jour les fichiers — cela ne fait qu'afficher le nom des fichiers qui seront mis à jour lors de la prochaine commande svn update.

--stop-on-copy

Indique à une sous-commande Subversion qui parcourt l'héritage d'une ressource suivie en versions de s'arrêter lorsque une copie — c'est-à-dire un emplacement dans l'héritage où la ressource a été copiée depuis un autre endroit dans le dépôt — est trouvée.

--strict

Utiliser une sémantique stricte, notion plutôt vague sauf pour certaines sous-commandes spécifiques (pour ne pas la citer, svn propget).

--strip NUM

Utilisé avec svn patch pour ignorer les NUM premiers composants des chemins trouvés dans le fichier correctif en entrée.

--summarize

Afficher seulement les notifications de haut-niveau sur l'opération en cours et oublier les détails.

--targets NOM_FICHIER

Prendre la liste de fichiers cibles pour l'opération dans le fichier NOM_FICHIER au lieu de prendre les fichiers fournis dans la ligne de commande. NOM_FICHIER doit contenir un chemin par ligne et chaque chemin doit suivre le même encodage et formatage que s'il avait été fourni directement en argument de la ligne de commande.

--trust-server-cert

Lorsqu'elle est utilisée avec --non-interactive, ordonne à Subversion d'accepter les certificats SSL serveurs signés par des autorités inconnues sans en informer l'utilisateur. Pour des raisons de sécurité, vous ne devriez utiliser cette option que lorsque vous êtes certain de l'intégrité du serveur distant et du réseau.

[Note] Note

Cette option est acceptée par toutes les sous-commandes svn.

--use-merge-history (-g)

Utiliser ou afficher des informations supplémentaires sur l'historique de la fusion.

--username IDENTIFIANT

Spécifie l'identifiant (ou nom d'utilisateur) à utiliser pour s'authentifier auprès d'un serveur Subversion. S'il n'est pas fourni ou s'il est incorrect, Subversion vous demandera cette information quand il en aura besoin.

[Note] Note

Cette option est acceptée par toutes les sous-commandes svn.

--verbose (-v)

Afficher autant d'informations que possible durant l'exécution de la sous-commande. Cela se traduit par l'affichage de champs supplémentaires, d'informations détaillées à propos de chaque fichier ou d'informations complémentaires relatives aux actions menées.

--version

Afficher les informations sur la version du client. Ces informations comprennent le numéro de version du client ainsi que la liste de tous les modules d'accès à un dépôt disponibles. Avec l'option --quiet (-q), elle ne fait qu'afficher le numéro de version dans un format compact.

--with-all-revprops

Utilisée avec l'option --xml de svn log, récupèrer et afficher toutes les propriétés de révisions (les propriétés standards utilisées par Subversion mais aussi celles définies par l'utilisateur).

--with-no-revprops

Utilisée avec l'option --xml de svn log, ne pas afficher les propriétés de révisions (y compris le message de propagation, l'auteur et la date de révision) dans le flux de sortie.

--with-revprop ARG

Quand elle est utilisée avec une commande qui écrit dans le dépôt, fixer une propriété de révision, en utilisant le format NOM=VALEUR, en affectant VALEUR à NOM. Quand elle est utilisée avec svn log dans le mode --xml, afficher la valeur de ARG.

--xml

Produire un affichage au format XML. Les schémas XML pour cet affichage (au format RELAX NG) sont contenus dans le dossier subversion/svn/schema/ du code source de Subversion.