Distinction entre les commandes status et update

Subversion essaie de dissiper la confusion qui règne entre les commandes cvs status et cvs update.

La commande cvs status a deux objectifs : d'abord, lister pour l'utilisateur les modifications locales de la version de travail et, ensuite, indiquer à l'utilisateur quels fichiers ne sont plus à jour. Malheureusement, en raison de l'affichage peu lisible de la commande cvs status, beaucoup d'utilisateurs de CVS n'utilisent plus cette commande. À la place, ils ont pris l'habitude de lancer cvs update ou cvs -n update pour visualiser leurs changements rapidement. Si les utilisateurs oublient d'utiliser l'option -n, cela a pour effet de bord de fusionner des changements du dépôt qu'ils ne sont pas forcément prêts à prendre en compte.

Subversion supprime ce cafouillage en facilitant la lecture de svn status à la fois pour les humains et pour les programmes d'analyse de texte. De plus, svn update n'affiche que les informations relatives aux fichiers qui ont été mis à jour côté dépôt, pas les modifications locales.

svn status

La commande svn status liste tous les fichiers qui ont des modifications locales. Par défaut, le dépôt n'est pas contacté. Bien que cette sous-commande accepte un bon nombre d'options, voici les plus utilisées :

-u

contacte le dépôt pour déterminer et lister les informations de mise à jour ;

-v

liste tous les éléments suivis en versions ;

-N

exécution non récursive (ne pas descendre dans les sous-répertoires).

La commande svn status possède deux formats de sortie. Dans le mode « court », mode par défaut, les modifications locales sont présentées comme ceci :

$ svn status
M      machin.c
M      truc/bidule.c

Si vous spécifiez l'option --show-updates (-u), un format d'affichage plus long sera utilisé :

$ svn status -u
M            1047   machin.c
       *     1045   tetes.html
       *            dessin.png
M            1050   truc/bidule.c
État par rapport à la révision  1066

Dans ce cas, deux nouvelles colonnes font leur apparition. La deuxième colonne contient une astérisque si le fichier ou le répertoire n'est plus à jour. La troisième colonne contient le numéro de révision de la copie de travail pour l'élément considéré. Dans l'exemple précédent, l'astérisque indique que tetes.html serait modifié lors d'une mise à jour et que dessin.png est un nouveau fichier dans le dépôt (l'absence d'un numéro de révision pour dessin.png indique qu'il n'existe pas dans la copie de travail locale).

Vous devriez maintenant jeter un œil à la liste des codes d'état possibles de svn status. Voici quelques codes d'état courants que vous rencontrerez :

A    L'Ajout de l'élément est planifié
D    La suppression de l'élément est planifiée
M    L'élément a été Modifié localement
C    L'élément est en Conflit (les changements n'ont pas été complètement
       fusionnés entre la version du dépôt et la version de la copie de travail)
X    L'élément est eXterne à cette copie de travail (il vient peut-être 
       d'un autre dépôt). Voir la section intitulée « Définition de références externes »
?    L'élément n'est pas suivi en versions 
!    L'élément est manquant ou incomplet (supprimé par un moyen autre que 
       Subversion)

Pour plus de détails sur la commande svn status, consultez la section intitulée « Avoir une vue d'ensemble des changements effectués ».

svn update

La commande svn update met à jour votre copie de travail et n'affiche que les informations relatives aux fichiers qui ont été mis à jour.

Subversion combine les codes CVS P et U dans le seul code U. Quand une fusion ou un conflit apparaît, Subversion se contente d'afficher G ou C, plutôt qu'une phrase complète, pour indiquer ce qui se passe.

Pour plus d'informations sur svn update, reportez-vous à la section intitulée « Mettre à jour votre copie de travail ».