SVNBOOK Chap2 Basic Work Cycle Examine Your Changes

Un article de Framalang Wiki.

Jump to: navigation, search

Cette page fait partie du projet Version control with subversion.


Pseudo Code Rôle Statut
Hotshot92 Traduction terminé
Relecture
Validation



Sommaire

[modifier] Titre

Examine Your Changes
Examiner les changements apportés

[modifier] Paragraphe 1

Once you've finished making changes, you need to commit them to the repository, but before you do so, it's usually a good idea to take a look at exactly what you've changed. By examining your changes before you commit, you can make a more accurate log message. You may also discover that you've inadvertently changed a file, and this gives you a chance to revert those changes before committing. Additionally, this is a good opportunity to review and scrutinize changes before publishing them. You can see an overview of the changes you've made by using svn status, and dig into the details of those changes by using svn diff.
Une fois vos modifications apportées, vous devez les intégrer au dépôt. Avant de le faire, il est souvent utile de jeter un coup d'oeil sur ces modifications pour savoir exactement ce que vous avez changé. En examinant les modifications avant de les intégrer au dépôt, le commentaire associée à la livraison sera souvent plus pertinent. Éventuellement, vous verrez que vous avez changé par inadvertance un fichier et cela vous donne une chance de revenir sur ces modifications avant de les livrer au dépôt. En outre, c'est une bonne occasion de passer en revue et examiner les modifications avant de les publier. Vous pouvez voir un vue globale des modifications que vous avez faite en utilisant svn status, et vous pouvez creuser les détails de ces changements en utilisant svn diff.

[modifier] Paragraphe 2

Look Ma! No Network!
The commands svn status, svn diff, and svn revert can be used without any network access even if your repository is across the network. This makes it easy to manage your changes-in-progress when you are somewhere without a network connection, such as travelling on an airplane, riding a commuter train or hacking on the beach.[5]

Rechercher Ma! Pas de réseau!

Les commandes svn status, svn diff, et svn revert peuvent être utilisés sans accès au réseau même si votre référentiel est distant. C'est ainsi plus facile de gérer vos changements lorsque vous êtes isolé, dans un avion, dans un train de banlieue ou même sur la plage [5].
Subversion does this by keeping private caches of pristine versions of each versioned file inside of the .svn administrative areas. This allows Subversion to report—and revert—local modifications to those files without network access. This cache (called the “text-base”) also allows Subversion to send the user's local modifications during a commit to the server as a compressed delta (or “difference”) against the pristine version. Having this cache is a tremendous benefit—even if you have a fast net connection, it's much faster to send only a file's changes rather than the whole file to the server.
En effet, Subversion utilise des copies privées des versions originales de chaque fichier versionné dans le répertoire administratif.svn. Cela lui permet d'afficher (et éventuellement annuler) les modifications faites localement à ces fichiers. Ce cache (appelé le "texte de base") permet également à Subversion d'envoyer uniquement la différence (compressée) des modifications faites par l'utilisateur au dépôt lors d'une livraison. Disposer d'un tel cache est un énorme avantage, même dans le cas d'une connexion réseau haut débit, car il est beaucoup plus rapide d'envoyer des différences sur un fichier plutôt que l'ensemble du fichier sur le serveur.

[modifier] Paragraphe 3

Subversion has been optimized to help you with this task, and is able to do many things without communicating with the repository. In particular, your working copy contains a hidden cached “pristine” copy of each version controlled file within the .svn area. Because of this, Subversion can quickly show you how your working files have changed, or even allow you to undo your changes without contacting the repository.

Subversion a été optimisé pour vous aider dans cette tâche, et est capable de faire beaucoup de choses sans communiquer avec le dépôt. En particulier, votre copie de travail contient un original de chaque fichier versionné dans la répertoire .svn. C'est pour ça que Subversion peut rapidement vous montrer comment vos fichiers ont changé, ou même vous permettre d'annuler vos changements sans contacter le dépôt.

[modifier] Paragraphe 4

See an overview of your changes
Avoir une vue globale des changements effectués
To get an overview of your changes, you'll use the svn status command. You'll probably use svn status more than any other Subversion command.
Pour avoir une vue globales des changements que vous avez effectués,utilisez la commande svn status. C'est certainement la commande que vous utiliserez plus que toute autre.

[modifier] Paragraphe 5

CVS Users: Hold That Update!
Utilisateurs de CVS : Notez cette différence
You're probably used to using cvs update to see what changes you've made to your working copy. svn status will give you all the information you need regarding what has changed in your working copy—without accessing the repository or potentially incorporating new changes published by other users.
Vous avez certainement l'habitude d'utiliser cvs update pour visualiser les changements que vous avez effectués sur votre copie de travail. svn status vous donnera toutes les informations utiles à ce propos sans accès au dépôt et sans incorporer les changements effectués par les autres utilisateurs.
In Subversion, update does just that—it updates your working copy with any changes committed to the repository since the last time you've updated your working copy. You may have to break the habit of using the update command to see what local modifications you've made.
Dans Subversion, update ne fait que mettre à jour : il met à jour votre copie de travail avec tous les changements validés sur le dépôt depuis votre dernière mise à jour. Il faudra peut-être l'habitude d'utiliser la commande update pour visualiser les modifications que vous avez effectuées sur votre copie de travail locale.

[modifier] Paragraphe 6

If you run svn status at the top of your working copy with no arguments, it will detect all file and tree changes you've made. Below are a few examples of the most common status codes that svn status can return. (Note that the text following # is not actually printed by svn status.)


A       stuff/loot/bloo.h   # file is scheduled for addition
C       stuff/loot/lump.c   # file has textual conflicts from an update
D       stuff/fish.c        # file is scheduled for deletion
M       bar.c               # the content in bar.c has local modifications

Si vous lancez svn status sans argument à la racine de votre copie de travail, Subversion va détecter toutes les modifications effectuées sur les fichiers et sur l'arborescence. Vous trouverez ci-dessous quelques exemples des lettres-codes que la commande svn status peut afficher. (Notez que le texte après # n'est pas affiché par svn status).

A       boulot/pognon/machin.h # le fichier sera ajouté
C       boulot/pognon/tas.c    # le fichier entre en conflit avec une mise à jour
D       boulot/poisson.c       # le fichier sera supprimé (Deletion en anglais)
M       truc.c                 # le contenu de truc.c a subi des modifications
In this output format svn status prints six columns of characters, followed by several whitespace characters, followed by a file or directory name. The first column tells the status of a file or directory and/or its contents. The codes we listed are:
Dans ce format de sortie, svn status affiche six colonnes de caractères, suivis par plusieurs espaces, suivis par un nom de fichier ou de répertoire. La première colonne indique le statut du fichier ou du répertoire et/ou son contenu. Les codes sont :
  • A item
The file, directory, or symbolic link item has been scheduled for addition into the repository.
  • A élément
Le fichier, répertoire ou lien symbolique "élément" est prévu d'être ajouté au contenu du dépôt.
  • C item
The file item is in a state of conflict. That is, changes received from the server during an update overlap with local changes that you have in your working copy. You must resolve this conflict before committing your changes to the repository.
  • C élément
Le fichier "élément" est dans un état de conflit. C'est-à-dire que des modifications ont eu lieu sur le dépôt entre vos dernières mises à jour et ces modifications interfèrent avec les modifications que vous avez effectuées sur votre copie de travail. Vous devez résoudre ce conflit avant de valider vos changements sur le dépôt.
  • D item
The file, directory, or symbolic link item has been scheduled for deletion from the repository.
  • D élément
Le fichier, répertoire ou lien symbolique "élément" est prévu d'être effacé (Deletion en anglais) sur le dépôt.
  • M item
The contents of the file item have been modified.
  • M élément
Le contenu du fichier "élément" a été modifié.

[modifier] Paragraphe 7

If you pass a specific path to svn status, you get information about that item alone:

$ svn status stuff/fish.c
D      stuff/fish.c

Si vous spécifiez un chemin à svn status, vous obtenez les informations relatives à ce chemin uniquement :

$ svn status boulot/poisson.c
D      boulot/poisson.c

[modifier] Paragraphe 8

svn status also has a --verbose (-v) option, which will show you the status of every item in your working copy, even if it has not been changed:

$ svn status -v
M               44        23    sally     README
                44        30    sally     INSTALL
M               44        20    harry     bar.c
                44        18    ira       stuff
                44        35    harry     stuff/trout.c
D               44        19    ira       stuff/fish.c
                44        21    sally     stuff/things
A                0         ?     ?        stuff/things/bloo.h
                44        36    harry     stuff/things/gloo.c

svn status possède aussi une option --verbose (-v) pour le rendre plus verbeux : il affichera alors le statut de tous les éléments dans votre copie de travail, même ceux qui n'ont pas subi de modification :

$ svn status -v
M               44        23    sally     LISEZMOI
                44        30    sally     INSTALL
M               44        20    harry     truc.c
                44        18    ira       boulot
                44        35    harry     boulot/truite.c
D               44        19    ira       boulot/poisson.c
                44        21    sally     boulot/divers
A                0         ?     ?        boulot/divers/machin.h
                44        36    harry     boulot/divers/bidule.c
This is the “long form” output of svn status. The letters in the first column mean the same as before, but the second column shows the working-revision of the item. The third and fourth columns show the revision in which the item last changed, and who changed it.
C'est la "version longue" de l'affichage de svn status. Les lettres de la première colonne ont la même signification que précédemment, mais la deuxième colonne indique le numéro de révision de l'élément. La troisième et quatrième colonne montrent le numéro de révision durant lequel a eu lieu le changement et qui a effectué la modification.

[modifier] Paragraphe 9

None of the prior invocations to svn status contact the repository—instead, they compare the metadata in the .svn directory with the working copy. Finally, there is the --show-updates (-u) option, which contacts the repository and adds information about things that are out-of-date:

$ svn status -u -v
M      *        44        23    sally     README
M               44        20    harry     bar.c
       *        44        35    harry     stuff/trout.c
D               44        19    ira       stuff/fish.c
A                0         ?     ?        stuff/things/bloo.h
Status against revision:   46

Aucune des commandes citées ci-dessus n'induit de connexion vers le dépôt : elles comparent les métadonnées dans le répertoire .svn avec la copie de travail. Enfin, il y a l'option --show-updates (-u) qui effectue une connexion au dépôt et ajoute les informations sur les éléments périmés :

$ svn status -u -v
M      *        44        23    sally     LISEZMOI
M               44        20    harry     truc.c
       *        44        35    harry     boulot/truite.c
D               44        19    ira       boulot/poisson.c
A                0         ?     ?        boulot/divers/machin.h
Status against revision:   46
Notice the two asterisks: if you were to run svn update at this point, you would receive changes to README and trout.c. This tells you some very useful information—you'll need to update and get the server changes on README before you commit, or the repository will reject your commit for being out-of-date. (More on this subject later.)
Notez les deux astérisques : si vous lanciez la commande svn update à cet instant, vous recevriez les changements relatifs à LISEZMOI et truite.c. Cela vous procure des informations particulièrement intéressantes : vous devez faire une mise-à-jour et récupérer les changements effectués sur LISEZMOI avant de valider, ou le dépôt rejetera votre validation en la considérant comme périmée. (Le sujet sera approfondi plus tard).
svn status can display much more information about the files and directories in your working copy than we've shown here—for an exhaustive description of svn status and its output, see svn status.


svn status peut afficher beaucoup plus d'informations sur les fichiers et répertoires de votre copie de travail que ce que nous venons de voir ici. Pour obtenir une description exhaustive de svn status et de ses sorties, reportez-vous à svn status.

[modifier] Paragraphe 10

Examine the details of your local modifications
Voir en détail les modifications que vous avez effectuées

Another way to examine your changes is with the svn diff command. You can find out exactly how you've modified things by running svn diff with no arguments, which prints out file changes in unified diff format:

La commande svn diff offre une autre façon d'examiner vos changements. Vous pouvez retrouver exactement ce que vous avez modifié en lançant la commande svn diff sans argument : elle affiche les changements sous le format "diff unifié".
$ svn diff
Index: bar.c
===================================================================
--- bar.c	(revision 3)
+++ bar.c	(working copy)
@@ -1,7 +1,12 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <stdio.h>
 int main(void) {
-  printf("Sixty-four slices of American Cheese...\n");
+  printf("Sixty-five slices of American Cheese...\n");
 return 0;
 }
Index: README
===================================================================
--- README	(revision 3)
+++ README	(working copy)
@@ -193,3 +193,4 @@
+Note to self:  pick up laundry.
Index: stuff/fish.c
===================================================================
--- stuff/fish.c	(revision 1)
+++ stuff/fish.c	(working copy)
-Welcome to the file known as 'fish'.
-Information on fish will be here soon.
Index: stuff/things/bloo.h
==================================================================
--- stuff/things/bloo.h	(revision 8)
+++ stuff/things/bloo.h	(working copy)
+Here is a new file to describe
+things about bloo.
$ svn diff
Index: truc.c
===================================================================
--- truc.c	(revision 3)
+++ truc.c	(working copy)
@@ -1,7 +1,12 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <stdio.h>
 int main(void) {
-  printf("Soixante quatre tranches de fromage...\n");
+  printf("Soixante cinq tranches de fromage...\n");
 return 0;
 }
Index: LISEZMOI
===================================================================
--- LISEZMOI	(revision 3)
+++ LISEZMOI	(working copy)
@@ -193,3 +193,4 @@
+Pense-bête : passer au pressing.
Index: boulot/poisson.c
===================================================================
--- boulot/poisson.c	(revision 1)
+++ boulot/poisson.c	(working copy)
-Bienvenue dans le fichier 'poisson'.
-Plus d'informations seront disponible prochainement.
Index: boulot/divers/machin.h
==================================================================
--- boulot/divers/machin.h	(revision 8)
+++ boulot/divers/machin.h	(working copy)
+Voici un nouveau fichier pour 
+ecrire sur les machins.

[modifier] Paragraphe 11

The svn diff command produces this output by comparing your working files against the cached “pristine” copies within the .svn area. Files scheduled for addition are displayed as all added-text, and files scheduled for deletion are displayed as all deleted text.
La commande svn diff affiche ce contenu en comparant vos fichiers de travail aux copies originales dans le répertoire .svn. Les fichiers prévus pour être ajoutés sont affichés comme du texte ajouté entièrement et les fichiers prévus pour être effacés sont affichés comme du texte supprimé.

Output is displayed in unified diff format. That is, removed lines are prefaced with - and added lines are prefaced with +. svn diff also prints filename and offset information useful to the patch program, so you can generate “patches” by redirecting the diff output to a file:

$ svn diff > patchfile

Le format d'affichage est conforme au "diff unifié". C'est-à-dire que les lignes supprimées commencent par le signe '-' et les lignes ajoutées commencent par le signe '+'. svn diff affiche également le nom du fichier et la localisation dans le fichier à l'intention du programme "patch". Vous pouvez ainsi créer des "patches" en redirigeant la sortie de svn diff vers un fichier :

$ svn diff > fichier.patch

You could, for example, email the patch file to another developer for review or testing prior to commit.

Vous pourriez, par exemple, envoyer par mail le patch à un autre développeur pour relecture ou test avant de le valider sur le dépôt.

[modifier] Paragraphe 12

Subversion uses its internal diff engine, which produces unified diff format, by default. If you want diff output in a different format, specify an external diff program using --diff-cmd and pass any flags you'd like to it using the --extensions (-x) option. For example, to see local differences in file foo.c in context output format while ignoring case differences, you might run svn diff --diff-cmd /usr/bin/diff --extensions '-i' foo.c.
Subversion utilise son propre diff, qui produit par défaut des sorties au format "diff unifié". Si vous désirez des sorties sous un autre format, spécifiez un programme diff externe en utilisant l'option --diff-cmd et en fournissant les paramètres que vous voulez à l'aide de l'option --extensions (-x). Par exemple, pour visualiser les différences entre votre version locale et l'original du fichier truc.c dans le format "contexte" et en ignorant la casse des caractères, vous pouvez lancer la commande svn diff --diff-cmd /usr/bin/diff --extensions '-i' truc.c