SVNBOOK Chap2 Examining History Generating a list of historical changes
De Framalang Wiki.
Cette page fait partie du projet Version control with subversion.
| Pseudo | Code | Rôle | Statut |
|---|---|---|---|
| Hotshot92 | Traduction | Fait | |
| SVF | Mise à jour en dernière version 1.5 | Fait | |
| SVF | 1ère Relecture | Fait | |
| Validation |
Generating a list of historical changes
Generating a List of Historical Changes
Afficher l'historique
To find information about the history of a file or directory, use the svn log command. svn log will provide you with a record of who made changes to a file or directory, at what revision it changed, the time and date of that revision, and—if it was provided—the log message that accompanied the commit:
$ svn log ------------------------------------------------------------------------ r3 | sally | 2008-05-15 23:09:28 -0500 (Thu, 15 May 2008) | 1 line Added include lines and corrected # of cheese slices. ------------------------------------------------------------------------ r2 | harry | 2008-05-14 18:43:15 -0500 (Wed, 14 May 2008) | 1 line Added main() methods. ------------------------------------------------------------------------ r1 | sally | 2008-05-10 19:50:31 -0500 (Sat, 10 May 2008) | 1 line Initial import ------------------------------------------------------------------------
Pour connaître l'historique d'un fichier ou d'un répertoire, utilisez la commande svn log. svn log affichera la liste des gens qui ont modifié le fichier ou le répertoire en question, le numéro de chaque révision où il a changé, l'heure et la date de cette révision et, s'il y en avait un, le message associé à la propagation :
$ svn log ------------------------------------------------------------------------ r3 | sally | 2008-05-15 23:09:28 -0500 (jeu. 15 Mai 2008) | 1 line Ajout des lignes include et correction du nombre de tranches de fromage. ------------------------------------------------------------------------ r2 | harry | 2008-05-14 18:43:15 -0500 (mer. 14 Mai 2008) | 1 line Ajout des méthodes main(). ------------------------------------------------------------------------ r1 | sally | 2008-05-10 19:50:31 -0500 (sam. 10 Mai 2008) | 1 line Import initial ------------------------------------------------------------------------
Note that the log messages are printed in reverse chronological order by default. If you wish to see a different range of revisions in a particular order or just a single revision, pass the --revision (-r) option:
$ svn log -r 5:19 # shows logs 5 through 19 in chronological order $ svn log -r 19:5 # shows logs 5 through 19 in reverse order $ svn log -r 8 # shows log for revision 8
You can also examine the log history of a single file or directory. For example:
$ svn log foo.c … $ svn log http://foo.com/svn/trunk/code/foo.c …
These will display log messages only for those revisions in which the working file (or URL) changed.
Notez que, par défaut, l'historique est affiché en ordre chronologique inverse. Si vous voulez afficher un intervalle de révisions donné dans un ordre particulier ou juste une unique révision, ajoutez l'option --revision (-r) :
$ svn log -r 5:19 # affiche l'historique a partir de la révision 5 jusqu'à la révision 19 dans l'ordre chronologique $ svn log -r 19:5 # affiche l'historique à partir de la révision 5 jusqu'à la révision 19 dans l'ordre chronologique inverse $ svn log -r 8 # affiche l'historique de la révision 8
Vous pouvez afficher l'historique d'un fichier ou d'un répertoire particulier. Par exemple :
$ svn log machin.c … $ svn log http://machin.com/svn/trunk/code/machin.c …
Ceci n'affichera le contenu de l'historique que pour les révisions dans lesquelles le fichier de travail (ou l'URL) a changé.
POINT OF INTEREST : Why Does svn log Not Show Me What I Just Committed?
- Why Does svn log Not Show Me What I Just Committed?
- Pourquoi svn log n'affiche-t-il pas ce que je viens de propager ?
- If you make a commit and immediately type svn log with no arguments, you may notice that your most recent commit doesn't show up in the list of log messages. This is due to a combination of the behavior of svn commit and the default behavior of svn log. First, when you commit changes to the repository, svn bumps only the revision of files (and directories) that it commits, so usually the parent directory remains at the older revision (See the section called “Updates and commits are separate” for an explanation of why). svn log then defaults to fetching the history of the directory at its current revision, and thus you don't see the newly committed changes. The solution here is to either update your working copy or explicitly provide a revision number to svn log by using the --revision (-r) option.
- Si vous effectuez une propagation puis tapez immédiatement svn log sans argument, vous remarquerez peut-être que votre propagation la plus récente est absente de l'historique obtenu. Ceci est dû à une combinaison de deux facteurs : la façon dont fonctionne svn commit et le fonctionnement par défaut de svn log. Tout d'abord, quand vous propagez des modifications vers le dépôt, svn ne récupère que la révision des fichiers (et répertoires) qu'il propage, donc le répertoire parent demeure généralement à l'ancienne révision (voir le paragraphe intitulé "Mises à jour et propagations sont deux choses distinctes" pour savoir pourquoi). svn log ne récupère ensuite par défaut que l'historique du répertoire à la révision actuelle, et n'affiche donc pas les modifications propagées dernièrement. La solution à ce problème consiste soit à mettre à jour votre copie de travail soit à fournir explicitement à svn log un numéro de révision grâce à l'option --revision (-r).
If you want even more information about a file or directory, svn log also takes a --verbose (-v) option. Because Subversion allows you to move and copy files and directories, it is important to be able to track path changes in the filesystem. So, in verbose mode, svn log will include a list of changed paths in a revision in its output:
$ svn log -r 8 -v ------------------------------------------------------------------------ r8 | sally | 2008-05-21 13:19:25 -0500 (Wed, 21 May 2008) | 1 line Changed paths: M /trunk/code/foo.c M /trunk/code/bar.h A /trunk/code/doc/README Frozzled the sub-space winch. ------------------------------------------------------------------------
svn log also takes a --quiet (-q) option, which suppresses the body of the log message. When combined with --verbose, it gives just the names of the changed files.
Si vous voulez obtenir plus d'informations sur un fichier ou un répertoire, svn log accepte également l'option --verbose (-v). Comme Subversion autorise les déplacements et les copies de répertoires et de fichiers, il est important de pouvoir tracer ces modifications de chemin dans le système de fichiers. Ainsi, en mode verbeux, svn log affichera la liste des déplacements au cours de la révision concernée :
$ svn log -r 8 -v ------------------------------------------------------------------------ r8 | sally | 2008-05-21 13:19:25 -0500 (mer. 21 Mai 2008) | 1 line Chemins modifiés : M /trunk/code/machin.c M /trunk/code/bidule.h A /trunk/code/doc/LISEZMOI Machination du bidule. ------------------------------------------------------------------------
svn log accepte aussi l'option --quiet (-q), qui permet de ne pas afficher le contenu du message de propagation. En combinaison avec --verbose, svn log n'affiche que les noms des fichiers qui ont changé.
POINT OF INTEREST : Why Does svn log Give Me an Empty Response?
- Why Does svn log Give Me an Empty Response?
- Pourquoi svn log me donne-t-il une réponse vide ?
- After working with Subversion for a bit, most users will come across something like this:
$ svn log -r 2 ------------------------------------------------------------------------ $
- At first glance, this seems like an error. But recall that while revisions are repository-wide, svn log operates on a path in the repository. If you supply no path, Subversion uses the current working directory as the default target. As a result, if you're operating in a subdirectory of your working copy and attempt to see the log of a revision in which neither that directory nor any of its children was changed, Subversion will show you an empty log. If you want to see what changed in that revision, try pointing svn log directly at the topmost URL of your repository, as in svn log -r 2 http://svn.collab.net/repos/svn.
- Après un certain temps de pratique de Subversion, la plupart des utilisateurs sont confrontés à un affichage de ce genre :
$ svn log -r 2 ------------------------------------------------------------------------ $
- Au premier abord, cela ressemble à une erreur. Mais rappelez-vous que chaque révision concerne l'ensemble du dépôt et que svn log n'opère que sur une arborescence à l'intérieur du dépôt. Si vous ne passez pas d'argument pour le chemin, Subversion utilise le répertoire courant par défaut. En conséquence, si vous êtes dans un sous-répertoire de votre copie de travail et que vous demandez à voir l'historique d'une révision pour laquelle aucun changement n'a eu lieu sur lesdits fichiers et répertoires, Subversion affichera un historique vierge. Si vous voulez connaître tous les changements relatifs à cette révision, invoquez svn log avec l'URL du répertoire racine de votre dépôt, par exemple svn log -r 2 http://svn.collab.net/depot/svn.

