SVNBOOK Chap2 Basic Work Cycle Examine Your Changes
De Framalang Wiki.
Cette page fait partie du projet Version control with subversion.
| Pseudo | Code | Rôle | Statut |
|---|---|---|---|
| Hotshot92 | Traduction | terminé | |
| SVF | 1ère Relecture | Fait | |
| SVF | Passage en version 1.5 | Fait | |
| Validation |
Sommaire |
Titre
Examine Your Changes
Examiner les changements apportés
Paragraphe 1
Paragraphe 2
- Look Ma! No Network!
- You can use 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 traveling on an airplane, riding a commuter train, or hacking on the beach. [5]
- Regardez ça : Pas besoin de réseau !
- Vous pouvez utiliser les commandes svn status, svn diff, et svn revert sans aucun accès réseau même si votre dépôt 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 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 Internet connection, it's much faster to send only a file's changes rather than the whole file to the server.
- En effet, Subversion garde en cache des copies privées des versions originales de chaque fichier versionné dans la zone administrative .svn. Cela lui permet d'afficher (et éventuellement d'annuler) les modifications faites localement à ces fichiers. Ce cache (appelé la "base texte") permet également à Subversion d'envoyer uniquement les modifications (compressées) 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 Internet haut débit, car il est beaucoup plus rapide d'envoyer des différences sur un fichier plutôt que l'ensemble du fichier au serveur.
Paragraphe 3
Subversion a été optimisé pour vous aider dans cette tâche, et il est capable de faire beaucoup de choses sans communiquer avec le dépôt. En particulier, votre copie de travail contient une copie de l'original de chaque fichier versionné dans le répertoire .svn. C'est pour ça que Subversion peut vous montrer rapidement en quoi vos fichiers ont changé ou même vous permettre d'annuler vos changements sans contacter le dépôt.
Paragraphe 4
Pour avoir une vue globale des changements que vous avez effectués, utilisez la commande svn status. C'est certainement la commande que vous utiliserez le plus.
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 d'autres utilisateurs.
- In Subversion, svn update does just that—it updates your working copy with any changes committed to the repository since the last time you 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, svn update ne s'occupe que de la mise à jour : il met à jour votre copie de travail avec tous les changements propagés dans le dépôt depuis votre dernière mise à jour. Il faudra vous débarrasser de l'habitude d'utiliser la commande update pour visualiser les modifications que vous avez effectuées sur votre copie de travail locale.
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. Here 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.)
? scratch.c # file is not under version control 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. Voici quelques exemples de codes que la commande svn status affiche. (Notez que le texte après # n'est pas affiché par svn status).
? gribouillage.c # le fichier n'est pas versionné 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
- 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 marqué pour ajout au 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 (and weren't resolved during the update). 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 depuis votre dernière mise à jour et ces modifications interfèrent avec les modifications que vous avez effectuées sur votre copie de travail (et svn update n'a pas résolu ce conflit). Vous devez résoudre ce conflit avant de propager vos changements vers 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 marqué pour suppression (Deletion en anglais).
- M item
- The contents of the file item have been modified.
- M élément
- Le contenu du fichier "élément" a été modifié.
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
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 de 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
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
État par rapport à la révision 46
Notez les deux astérisques : si vous lanciez la commande svn update, 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 propager les vôtres, ou le dépôt rejettera votre propagation en la considérant comme périmée (le sujet sera approfondi plus tard).
Paragraphe 10
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:
$ 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 disponibles prochainement.
Index: boulot/divers/machin.h
==================================================================
--- boulot/divers/machin.h (revision 8)
+++ boulot/divers/machin.h (working copy)
+Voici un nouveau fichier pour
+écrire sur les machins.
Paragraphe 11
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 > fichierpatch
You could, for example, email the patch file to another developer for review or testing prior to a commit.
Paragraphe 12
Subversion utilise son propre moteur de diff, qui produit par défaut des sorties au format "diff unifié". Si vous désirez obtenir les différences dans un autre format, spécifiez un programme de comparaison 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 au 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.

