Le client Subversion en ligne de commande : svn

Pour utiliser le client en ligne de commande, tapez svn puis la sous-commande que vous souhaitez utiliser[58] et toutes les options ou cibles que vous souhaitez traiter — la sous-commande et les options dosivent être indiquées dans un ordre bien particulier. Par exemple, voici quelques commandes valides utilisant svn status :

$ svn -v status
$ svn status -v
$ svn status -v mon-fichier

Vous trouverez beaucoup d'autres exemples relatifs aux commandes du client dans le Chapitre 2, Utilisation de base et relatifs aux propriétés dans la section intitulée « Propriétés ».

Options de svn

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 les sous-commandes, même si elles n'ont pas d'effet dans certains cas. Elles sont regroupées dans la rubrique « options globales » des messages d'explication des commandes. Nous avons modifié le comportement antérieur afin de faciliter le travail des rédacteurs de scripts qui utilisent le client en ligne de commande. Ces options globales sont :

--config-dir REP

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).

--no-auth-cache

Ne pas conserver les éléments d'authentification (par exemple l'identifiant et le mot de passe) dans les répertoires de configuration de Subversion.

--non-interactive

Pas de demande interactive. Les demandes interactives peuvent concerner, par exemple, les éléments d'authentification ou la résolution de conflits. Cette option est utile quand vous lancez Subversion dans un script totalement automatique et qu'il est plus pertinent de faire échouer Subversion plutôt que d'attendre une réponse interactive.

--password MDP

Précise le mot de passe MDP à utiliser pour s'authentifier auprès du serveur Subversion. Si cette option n'est pas fournie ou si elle ne permet pas de s'authentifier correctement, Subversion vous demande, en tant que de besoin, le mot de passe de manière interactive.

--username NOM

Précise le nom d'utilisateur NOM à utiliser pour s'authentifier auprès du serveur Subversion. Si cette option n'est pas fournie ou si elle ne permet pas de s'authentifier correctement, Subversion vous demande, en tant que de besoin, le nom d'utilisateur de manière interactive.

Le reste des options ne s'applique, et n'est reconnu, que par un sous-ensemble de commandes. Les voici :

--accept ACTION

Précise l'attitude à adopter pour la résolution automatique de conflits. Les valeurs possibles sont : postpone, base, mine-full, theirs-full, edit et launch.

--auto-props

Active les propriétés automatiques, remplaçant alors la directive enable-auto-props dans le fichier de configuration config.

--change (-c) ARG

Utilisée pour faire référence à un « changement » particulier (c-à-d. une révision). Cette option est du sucre syntaxique pour spécifier « -r ARG-1:ARG ».

--changelist 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.

--cl ARG

Un alias pour l'option --changelist.

--depth ARG

Limiter l'opération à cette profondeur. ARG peut prendre les valeurs suivantes : empty, files, immediates ou infinity.

--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, ajouter l'option --diff-cmd. Vous pouvez spécifier des options à ce programme externe à l'aide de l'option --extensions (voir plus loin dans cette section).

--diff3-cmd CMD

Spécifie une commande externe pour réaliser la fusion de 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 « Fichier config » 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) ARGS

Spécifie un ou plusieurs arguments à passer à la commande diff externe. Cette option n'est valide qu'avec les commandes svn diff ou svn merge, et avec l'option --diff-cmd. Si vous voulez spécifier plusieurs arguments, vous devez mettre entre guillemets ces arguments (par exemple, svn diff --diff-cmd /usr/bin/diff -x "-b -E").

--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.

--help (-h ou -?)

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 en ligne de commande.

--ignore-ancestry

Ignorer l'héritage pour évaluer les différences (ne se fier qu'au chemin en tant que tel).

--ignore-externals

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

--incremental

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

--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 "They don't make Sunday."
--new ARG

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

--no-auto-props

Désactive les propriétés automatiques, remplaçant alors la directive enable-auto-props du fichier de configuration config.

--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 « Fichier config » et la section intitulée « Occultation des é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-recursive (-N)

Dépréciée. Interdit à 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 — généralement celles qui peuvent supprimer ou annuler des modifications locales — ne le font pas.

--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.

--quiet (-q)

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

--record-only

Marquer les révisions comme fusionnées (pour une utilisation avec l'option --revision).

--recursive (-R)

Rend la sous-commande récursive. Beaucoup de sous-commandes sont récursives par défaut.

--reintegrate

Utilisée avec la sous-commande svn merge, fusionner tous les changements de l'URL source dans la copie de travail locale. Voir la section intitulée « Comment garder une branche synchronisée » pour les détails.

--relocate [CHEMIN...]

Utilisée avec la sous-commande svn switch, changer l'emplacement du dépôt auquel votre copie de travail fait référence. Ceci est utile si l'emplacement de votre dépôt a changé et que vous avez une copie de travail que vous voulez continuer à utiliser. Voir svn switch pour un exemple d'utilisation.

--remove ARG

Effacer l'association de ARG à une liste de changements.

--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'information.

--revprop

Opérer sur une propriété de révision au lieu d'opérer sur une propriété de fichier ou de répertoire. Cette option requiert que vous passiez également une révision avec l'option --revision (-r).

--set-depth ARG

fixe (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.

--show-revs ARG

Utilisée pour indiquer à svn mergeinfo de n'afficher qu'un ensemble de révisions, soit : merged ou eligible.

--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).

--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.

--use-merge-history (-g)

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

--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.

--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.

Sous-commandes svn

Voici les différentes sous-commandes du programme svn. Afin de rester concis, nous passons sous silence les options globales (expliquées dans la section intitulée « Options de svn ») dans les descriptions suivantes.



[58] En fait, l'option --version ne nécessite pas de sous-commande, nous verrons cela dans quelques minutes.