Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Eh oui, il faut d'abord comprendre tous les messages que nous envoie SVN avant d'agir !
Des informations qui viennent à nous
Dans quels cas obtient-on un retour sur information ?
Presque tout le temps en fait. Vous l'avez déjà remarqué, quand vous faites un
Checkout, un
Update, un
Commit ou un
Export, à chaque fois, que ce soit sous UNIX ou sous Windows, SVN vous donne des informations sur l'action en cours. Nous allons maintenant étudier ces informations.
Code : Bash1
2
3
4
5
6 | A Tuto-SdZ/Fichier 1.txt
A Tuto-SdZ/Dossier 1
A Tuto-SdZ/Dossier 1/Fichier1.1.txt
A Tuto-SdZ/Dossier 2
A Tuto-SdZ/Dossier 2/Fichier2.1.txt
Checked out revision 5.
|

Voici les informations que l'on trouve lors d'un
Checkout sur le
repository.
Le message est beaucoup plus compréhensible sur la fenêtre tortoiseSVN, on comprend bien que l'on est à la cinquième révision (version) et que cinq fichiers et dossiers ont été ajoutés.
On comprend donc également qu'en ligne de commande, un 'A' dans la première colonne signifie
Added (Ajouté).
Comme dit précédemment, on retrouve ces fenêtres lors d'une action de modification sur le serveur (
commit,
update,
add ou autre). Bien sûr, il y a un code complet (eh oui, on ne fait pas qu'ajouter des éléments

).
Aller chercher ces informations
Pour comprendre tout ce que l'on va pouvoir trouver, on va utiliser la commande "
status".
Cette commande permet, étrangement, d'obtenir le statut des fichiers et dossiers.
Pour utiliser la commande, vous allez donc taper :
Code : Bash1 | svn status [fichier_ou_dossier_a_statuer] # vous pouvez utiliser st ou stat à la place de status.
|
Et là, si vous n'avez rien touché depuis votre dernier
update, vous devriez ne trouver... RIEN.

Déception...
Il faut en fait ajouter quelques options :
-u pour comparer son
Working Copy (sa copie locale) avec le
repository,
-v pour afficher tous les éléments (même ceux qui n'ont pas été modifiés).
Il faut comprendre que
status vous fait un bilan des modifications qu'ont subies vos éléments, il va seulement vous afficher les éléments qu'il est utile de montrer. Par défaut, il ne va donc pas montrer les éléments qui n'ont pas été modifiés.
Reprenons la commande avec les options -uv :
Code : Bash1
2
3
4
5
6
7 | svn st -uv
5 2 mvandamme Fichier 1.txt
5 1 mvandamme Dossier 1/Fichier1.1.txt
5 1 mvandamme Dossier 1
5 1 mvandamme Dossier 2/Fichier2.1.txt
5 1 mvandamme Dossier 2
5 5 mvandamme .
|
On obtient ici, grâce au -v (pour
verbose), le détail de tous les dossiers et fichiers dans l'arborescence à partir du dossier choisi.
Le premier chiffre que l'on voit est celui de la version globale de l'élément (du dernier
update fait sur l'élément), le deuxième est la version de l'élément (combien de fois il a été modifié). "Fichier 1.txt" a donc été modifié deux fois depuis le début, mais il a déjà "traversé" cinq versions (où d'autres fichiers ont été
commités).
On voit un grand espace libre avant le premier chiffre, mais qu'est-ce donc ?
Bien comprendre les informations
Cet espace libre est là pour les informations en cas de modification. Allons donc voir la documentation (ça doit devenir un réflexe).
Code : Bash
Secret (cliquez pour afficher)Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 | prompt$ svn --help status
status (stat, st): Print the status of working copy files and directories.
usage: status [PATH...]
With no args, print only locally modified items (no network access).
With -u, add working revision and server out-of-date information.
With -v, print full revision information on every item.
The first six columns in the output are each one character wide:
First column: Says if item was added, deleted, or otherwise changed
' ' no modifications
'A' Added
'C' Conflicted
'D' Deleted
'I' Ignored
'M' Modified
'R' Replaced
'X' item is unversioned, but is used by an externals definition
'?' item is not under version control
'!' item is missing (removed by non-svn command) or incomplete
'~' versioned item obstructed by some item of a different kind
Second column: Modifications of a file's or directory's properties
' ' no modifications
'C' Conflicted
'M' Modified
Third column: Whether the working copy directory is locked
' ' not locked
'L' locked
Fourth column: Scheduled commit will contain addition-with-history
' ' no history scheduled with commit
'+' history scheduled with commit
Fifth column: Whether the item is switched relative to its parent
' ' normal
'S' switched
Sixth column: Repository lock token
(without -u)
' ' no lock token
'K' lock token present
(with -u)
' ' not locked in repository, no lock token
'K' locked in repository, lock toKen present
'O' locked in repository, lock token in some Other working copy
'T' locked in repository, lock token present but sTolen
'B' not locked in repository, lock token present but Broken
The out-of-date information appears in the eighth column (with -u):
'*' a newer revision exists on the server
' ' the working copy is up to date
Remaining fields are variable width and delimited by spaces:
The working revision (with -u or -v)
The last committed revision and last committed author (with -v)
The working copy path is always the final field, so it can
include spaces.
Example output:
svn status wc
M wc/bar.c
A + wc/qax.c
svn status -u wc
M 965 wc/bar.c
* 965 wc/foo.c
A + 965 wc/qax.c
Status against revision: 981
svn status --show-updates --verbose wc
M 965 938 kfogel wc/bar.c
* 965 922 sussman wc/foo.c
A + 965 687 joe wc/qax.c
965 687 joe wc/zig.c
Status against revision: 981
Valid options:
-u [--show-updates] : display update information
-v [--verbose] : print extra information
-N [--non-recursive] : operate on single directory only
-q [--quiet] : print as little as possible
--no-ignore : disregard default and svn:ignore property ignores
--incremental : give output suitable for concatenation
--xml : output in XML
--username arg : specify a username ARG
--password arg : specify a password ARG
--no-auth-cache : do not cache authentication tokens
--non-interactive : do no interactive prompting
--config-dir arg : read user configuration files from directory ARG
--ignore-externals : ignore externals definitions
|
Que faut-il comprendre de ce manuel ? Il y a énormément d'informations, je ne vais donc en traiter qu'une partie (rassurez-vous ce sera déjà amplement suffisant).
Premièrement, on voit la différence entre l'appel sans argument, avec -u et/ou avec -v :
- sans argument : il ne montre que les éléments modifiés depuis le dernier update,
- -u : il compare les éléments avec ceux sur le serveur (connexion avec le serveur nécessaire, SVN n'est pas devin),
- -v : il affiche toutes les informations, même pour les éléments non modifiés.
Ensuite sont présentées les valeurs que peuvent prendre chacune des huit premières colonnes. Nous n'allons nous intéresser qu'à trois d'entre elles : la première, la septième et la huitième.
Commençons par la plus simple : la septième est toujours vide, c'est juste un espace.
Continuons un peu plus sérieusement. La première colonne présente les modifications apportées localement aux éléments :
- ' ' : aucune modification,
- A : ajouté,
- D : supprimé,
- C : en conflit,
- I : ignoré,
- M : modifié,
- R : remplacé,
- ? : non-versionné,
- ! : manquant.
La huitième colonne, quant à elle, présente l'état de l'élément sur le serveur par rapport à notre version (cette colonne n'apparaît que si on active -u) :
- ' ' : aucune nouvelle version sur le serveur (votre fichier est à jour),
- '*' : une nouvelle version est disponible sur le serveur.
On comprend donc vite d'après ces définitions qu'obtenir la ligne suivante n'est pas très bon signe :
Code : Bash1
2 | prompt$ svn st -u
M * 5 Fichier 1.txt
|
On est ici dans le cas d'un éventuel futur conflit. Etant donné que l'on a modifié le fichier depuis sa récupération, mais qu'une autre version a été envoyée au serveur, si on envoie notre version, le serveur devra supprimer celle anciennement
commitée et les modifications apportées par l'autre personne ne seront plus. Ceci ne peut bien sûr pas être un comportement par défaut. Le serveur va refuser votre
commit. Il va donc falloir résoudre le problème localement avant de
commiter la solution.
Nous n'allons pas apprendre à résoudre ces problèmes dans ce chapitre mais dans le prochain.
On retrouve la première colonne lors des informations suite à un commit, update, checkout et export.Tout ce que nous venons de voir sur la première colonne est, bien sûr, également valable dans ces autres cas, la convention reste la même.
Et pour Windows...
Eh bien pour Windows, c'est pareil, mais en plus lisible. En effet toutes ces informations sont récupérables via l'interface graphique.
Clic droit >> TortoiseSVN >> Check for Modifications.
On obtient un tableau, sauf que tout est écrit entièrement (et non pas par abréviation), donc beaucoup plus simple.
<image legende="Fenêtre "Check for modifications">uploads/fr/files/121001_122000/121897.gif</image>Fenêtre de status avec TortoiseSVN.
On retrouve ici les champs que l'on pouvait trouver dans les huit colonnes sous UNIX. Comme on peut le voir tout est écrit. Petit luxe, on a même un résumé du nombre de fichiers dans chaque catégorie ainsi que le numéro des versions maximum et minimum.
Eh, mais comment ça se fait qu'un fichier est à la 6ème révision alors que le dossier racine n'est qu'à la 5ème ?
Tout simplement parce que, lors du
commit, je n'ai pas
commité le dossier racine (Tuto SdZ) mais seulement le fichier. SVN a donc modifié les propriétés du fichier (sa version), mais pas celle du reste (du dossier racine par exemple). Cela fonctionne de la même façon sous UNIX. N'hésitez donc pas à faire
régulièrement des
update sur la racine.
Enfin, on ne le voit pas bien sur mon exemple, mais il y a un code de couleurs pour les éléments.
- Bleu : élement modifié localement.
- Violet : élément ajouté.
- Rouge foncé : élément manquant.
- Vert : élément modifié localement et sur le serveur. Ils seront mergés lors d'un update, ou alors ils génèreront un conflit.
- Rouge clair : élément modifié localement et supprimé sur le serveur, ou inversement. Il y aura forcément un conflit lors de l'update.
- Noir : aucun changement, ou fichier non versionné.
Nous allons voir ici quels sont les moyens d'obtenir encore plus d'informations.
Nous venons de voir, dans la première partie, que si nous voulions des informations sur l'état des éléments présents sur notre répertoire local par rapport au serveur, il fallait utiliser la commande "status". Mais il existe d'autres commandes pour obtenir d'autres informations. Pour vous en convaincre et obtenir une liste de toutes les commandes accessibles :
Code : Bash
Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 | usage: svn <subcommand> [options] [args]
Subversion command-line client, version 1.4.4.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules
or 'svn --version --quiet' to see just the version number.
Most subcommands take file and/or directory arguments, recursing
on the directories. If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.
Available subcommands:
add
blame (praise, annotate, ann)
cat
checkout (co)
cleanup
commit (ci)
copy (cp)
delete (del, remove, rm)
diff (di)
export
help (?, h)
import
info
list (ls)
lock
log
merge
mkdir
move (mv, rename, ren)
propdel (pdel, pd)
propedit (pedit, pe)
propget (pget, pg)
proplist (plist, pl)
propset (pset, ps)
resolved
revert
status (stat, st)
switch (sw)
unlock
update (up)
Subversion is a tool for version control.
For additional information, see http://subversion.tigris.org/
|
Dans cette liste, vous reconnaissez les commandes que l'on a déjà utilisées :
add, checkout, commit, copy, delete, export, help, mkdir, move, status, update.
Et celles que l'on n'a pas encore vues :
blame, cat, cleanup, diff, import, info, list, lock, log, merge, prop*, resolved, revert, switch, unlock.
Ici, nous allons voir
list, log, info et cat.
Cat et List
Ces deux commandes sont très simples, elles font la même chose qu'en shell...
Cat
Cat permet d'afficher le contenu d'un fichier :
Code : Bash1 | svn cat Fichier_ou_URL [-r revision] [--username login] [--password mdp]
|
Pour l'afficher, il faut préciser un fichier ou bien une URL si le fichier ne se trouve pas sur notre répertoire local. Comme il faut accéder au serveur, il est possible (si on ne les a pas gardés dans le cache) de renseigner son login et mot de passe. Il reste une nouvelle option que nous allons voir, la possibilité de préciser dans quelle version (révision) on souhaite voir le fichier. Cette version peut être demandée de diverses façons :
- par le numéro de la version si on le connaît (1, 2, 13, 40...),
- en utilisant {DATE} : la date entre accolades pour avoir la plus récente des versions disponibles de l'instant,
- avec HEAD : la dernière version en date dans le repository (sur le serveur),
- grâce à BASE : la version du dernier update fait sur la Working Copy (BASE sera utile par la suite lorsqu'on voudra comparer deux versions),
- avec COMMITTED : la dernière version pour laquelle un commit a été effectué (mais inférieure ou égale à la version de la copie locale),
- enfin avec PREV, pour la version juste avant COMMITTED.
Il n'est pas possible d'utiliser les mots clefs "BASE", "COMMITTED" ou "PREV" avec une URL étant donné que ces mots clefs font référence à la version disponible sur la copie de travail (copie locale). On ne peut que les utiliser lorsque l'on donne un chemin vers le fichier dans une copie de travail.
svn cat affiche le fichier demandé dans la version voulue. Si vous avez fait des modifications locales et que vous faites "svn cat", il vous affichera le fichier tel qu'il était lorsque vous l'avez récupéré, sans vos modifications.
Je viens de vous présenter l'option -r (pour révision). Cette option s'applique en fait à beaucoup de commandes. Parmi celles que nous avons vues, -r s'applique aussi aux commandes : checkout, export, update, copy et move.
List (ls)
List permet, comme en shell, de lister le contenu d'un répertoire. Et bien sûr, comme pour cat, on a des options en plus :
Code : Bash1 | svn list (ou ls) [dossier_à_lister] [-r Revision] [-v] [-R] [--username login] [--password mdp]
|
Dans ces options, on retrouve :
- le dossier cible s'il est différent du dossier dans lequel on se trouve,
- la révision si on veut un aperçu des fichiers à une autre version,
- le login et le mot de passe pour l'accès au serveur,
- le -v (pour verbose) que nous avons déjà rencontré avec status et qui permet d'afficher toutes les informations sur les éléments.
Il reste le -R que je n'ai pas encore présenté. Il permet, tout simplement, de descendre récursivement l'arborescence à partir du dossier choisi (c'est la même option en shell, pour vous en convaincre essayez : '
man ls | grep -e -R'). Cette option est donc très utile si vous voulez obtenir la liste de tous les éléments disponibles dans une arborescence sans avoir à faire "svn ls" sur tous les sous-dossiers.
Attention, "svn ls" ne liste que les fichiers versionnés. Si vous voulez aussi afficher les autres, faites "ls" !
Et pour Windows
Eh bien, cat et list n'ont pas vraiment lieu d'être étant donné que l'on utilise une interface graphique. Cependant, il est utile de pouvoir consulter l'état du
repository aux différentes versions. Pour ça, on trouve le "
Repository Browser".
Clic droit >> TortoiseSVN >> Repo-browser :

Cet outil permet de parcourir l'arborescence à la version demandée.
Si vous cliquez droit sur un élément, vous trouverez plein d'actions disponibles...
Info
La commande info vous donne... des informations.

Nous allons donc voir les informations que l'on peut obtenir.
Comme vous devriez en prendre l'habitude, on tape :
Code : Bash
Et on obtient le manuel d'utilisation de la commande. De ce manuel, on déduit que la commande se lance de la façon suivante :
Code : Bash1 | svn info [Target ...] [-r Revision] [-R] [--targets Fichier_darguments] [--username login] [--password mdp]
|
Eh oui, plus on avance, et plus je présente d'options !
Alors, dans toutes ces options vous connaissez déjà : Target (fichier, dossier ou URL cible), -r (révision), -R (Récursif), --username (login) et --password (mot de passe).
Nous avons un petit nouveau qui s'invite : --target. Cette option est un peu... bizarre, spéciale. Elle permet de spécifier un fichier qui contient des liens vers d'autres fichiers, fichiers que vous voulez ajouter en argument de la commande.
Pas très bien compris...

Un petit exemple et tout va rentrer dans l'ordre.
Je lance le code suivant :
Code : Bash1 | svn info Dossier\ 1/ --targets argInfo
|
Avec comme fichier argInfo :
Code : Autre1
2
| /Users/mvandamme/Documents/Boulot/Tuto-SdZ/Tuto-SdZ/Fichier 1.txt
/Users/mvandamme/Documents/Boulot/Tuto-SdZ/Tuto-SdZ/Dossier 2/Fichier2.1.txt |
Et j'obtiens comme résultat :
Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | Path: Dossier 1
URL: http://svn.assembla.com/svn/Tuto-SdZ/Dossier%201
Repository Root: http://svn.assembla.com/svn/Tuto-SdZ
Repository UUID: d7ba3245-3e7b-42d0-9cd4-356c8b94b330
Revision: 18
Node Kind: directory
Schedule: normal
Last Changed Author: SdZ-Guest
Last Changed Rev: 12
Last Changed Date: 2008-06-21 13:35:11 +0200 (Sam, 21 jui 2008)
Path: /Users/mvandamme/Documents/Boulot/Tuto-SdZ/Tuto-SdZ/Fichier 1.txt
Name: Fichier 1.txt
URL: http://svn.assembla.com/svn/Tuto-SdZ/Fichier%201.txt
Repository Root: http://svn.assembla.com/svn/Tuto-SdZ
Repository UUID: d7ba3245-3e7b-42d0-9cd4-356c8b94b330
Revision: 18
Node Kind: file
Schedule: normal
Last Changed Author: mvandamme
Last Changed Rev: 16
Last Changed Date: 2008-06-22 16:10:28 +0200 (Dim, 22 jui 2008)
Text Last Updated: 2008-06-22 21:44:57 +0200 (Dim, 22 jui 2008)
Checksum: dc9a920d91087fcc9032192a8fda9e9c
Path: /Users/mvandamme/Documents/Boulot/Tuto-SdZ/Tuto-SdZ/Dossier 2/Fichier2.1.txt
Name: Fichier2.1.txt
URL: http://svn.assembla.com/svn/Tuto-SdZ/Dossier%202/Fichier2.1.txt
Repository Root: http://svn.assembla.com/svn/Tuto-SdZ
Repository UUID: d7ba3245-3e7b-42d0-9cd4-356c8b94b330
Revision: 18
Node Kind: file
Schedule: normal
Last Changed Author: mvandamme
Last Changed Rev: 1
Last Changed Date: 2008-05-25 15:11:27 +0200 (Dim, 25 mai 2008)
Text Last Updated: 2008-05-31 12:31:44 +0200 (Sam, 31 mai 2008)
Checksum: d41d8cd98f00b204e9800998ecf8427e
|
On remarque que les fichiers indiqués dans le fichier target on été pris en compte (voici donc l'utilité de cette option).
Si vous donnez un fichier contenant des lignes qui ne sont pas des chemins vers d'autres fichiers ou dossiers versionnés, SVN les ignorera tout simplement et vous mettra en sortie (en plus du résultat de svn info) chaque "mauvaise" ligne suivie de "(Not a versioned resource)".
Intéressons-nous maintenant au contenu du résultat obtenu.
- Path : donne le chemin vers l'élément.
- Name : nom du fichier (uniquement pour les fichiers).
- URL : donne l'URL de l'élément sur le serveur.
- Repository Root : donne l'URL de la racine du repository.
- Repository UUID : IDentifiant Universellement Unique du repository (tout ce dont vous devez vous rappeler est qu'il s'agit d'un identifiant unique, nous verrons son utilité dans l'utilisation avancée de SVN).
- Revision : version de l'élément.
- Node Kind : type de l'élément.
- Schedule : prévision pour l'élément (il est possible de donner des prévisions de ce que l'on va faire à l'élément).
- Last Changed Author : dernière personne à l'avoir modifié (commité).
- Last Changed Rev : dernière version à laquelle l'élément a été modifié.
- Last Changed Date : dernière date à laquelle l'élément a été modifié.
- Text Last Updated : dernier update du fichier effectué (par notre working copy).
- Checksum : somme de contrôle pour vérifier la validité des données. Comprenez bien que le contrôle effectué par un checksum n'est pas une garantie de la validité des données (si vous voulez comprendre le fonctionnement d'une somme de contrôle : http://fr.wikipedia.org/wiki/Checksum et http://en.wikipedia.org/wiki/Checksum).
Je n'ai pas trouvé d'équivalent sous TortoiseSVN. Il est vrai que les informations obtenues sont très générales (Revision, URL, Path, etc.), elles se trouvent donc dans un peu toutes les autres fenêtres.
Log
Voici la commande la plus importante de toutes (ou tout du moins celle que vous devriez utiliser le plus souvent). Log permet d'afficher les messages de log laissés.
Pour apprendre à utiliser la commande, comme ce devrait devenir une habitude, on regarde le manuel :
Code : Bash
Le manuel nous informe que l'utilisation de la commande se fait comme suit :
Code : Bash1 | svn log [Chemin] [-r Revision] [-v] [--targets Fichier] [--username login] [--password mdp] [--limit nb_dentré_max]
|
Dans ces options, nous n'avons pas vu --limit et -r Revision qui cette fois-ci ne s'utilisent pas de la même façon.
Commençons par -r Revision. Cette fois, on ne demande pas une révision, mais un ensemble de révisions. À la place de faire -r rev, il faut faire -r Rev1:Rev2 avec Rev1 la révision de laquelle on part, et Rev2 la révision à laquelle on veut arriver.
Par défaut, si rien n'est précisé, les révisions affichées seront BASE:1, ce qui signifie de la version actuellement sur la
Working Copy à la première version.
Que se passe-t-il quand on fait "svn log -r 1:BASE" ?
--limit nb_dentré_max, quant à lui, informe du nombre maximum de messages de log à afficher. --limit 10 dit au SVN qu'on ne veut
au maximum que 10 messages de log affichés (s'il y en a moins, il en affichera moins).
Euh, mais elle ne sert à rien cette option, si on ne veut pas plus de 10 messages de log, ne suffit-il pas de demander les logs que pour les 10 dernières versions tout simplement ?
Eh bien...
NON !
Bon, j'en fais peut-être un peu trop là...
Mais pourquoi non ? Eh bien pour vous convaincre, prenons un exemple. Si je demande les messages de log d'un sous-dossier seulement et non plus du dossier racine. Rien ne dit qu'à chaque fois que quelqu'un aura fait un
commit il aura modifié des choses dans ce dossier. Et justement, pour ces versions où rien n'aura été modifié dans le dossier, la commande log ne va pas afficher le log. Il en découle que, même si vous demandez les logs pour les versions allant de 1 à 100 d'un élément, il se peut très bien que SVN ne vous affiche que quelques logs.
Maintenant que nous savons comment s'en servir, utilisons-la (je suis dans le dossier racine) :
Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | svn log --limit 5
------------------------------------------------------------------------
r18 | SdZ-Guest | 2008-06-22 16:12:56 +0200 (Dim, 22 jui 2008) | 1 line
------------------------------------------------------------------------
r17 | SdZ-Guest | 2008-06-22 16:11:11 +0200 (Dim, 22 jui 2008) | 1 line
test de fichier de itichi.
------------------------------------------------------------------------
r16 | mvandamme | 2008-06-22 16:10:28 +0200 (Dim, 22 jui 2008) | 1 line
ajout d'un ligne pour l'utilisation de cat
------------------------------------------------------------------------
r15 | mvandamme | 2008-06-22 13:04:27 +0200 (Dim, 22 jui 2008) | 1 line
Ajout de text pour tester le cat
------------------------------------------------------------------------
r14 | Sdz-Guest | 2008-06-21 15:32:02 +0200 (Sam, 21 jui 2008) | 1 line
------------------------------------------------------------------------
|
On trouve comme informations :
- le numéro de version ;
- l'auteur du commit ;
- la date du commit (notez comment les dates sont affichées, c'est le même format qu'il faut utiliser pour renseigner une date avec -r) ;
- le nombre de lignes du commentaire ;
- et plus bas, le commentaire lui même ;
- puis une ligne de '-' pour délimiter l'autre message de log.
On peut voir sur cet exemple de log que de nombreux zéros ne mettent pas de commentaires lorsqu'ils font des
commits. Honte sur eux !
Et félicitations à ceux qui en ont mis.
Voici un autre exemple de log :
Code : Bash 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | svn log Dossier\ 1/ -v
------------------------------------------------------------------------
r12 | SdZ-Guest | 2008-06-21 13:35:11 +0200 (Sam, 21 jui 2008) | 1 line
Changed paths:
A /Dossier 1/helloWorld.cpp (from /helloWorld.cpp:10)
A /test
------------------------------------------------------------------------
r1 | mvandamme | 2008-05-25 15:11:27 +0200 (Dim, 25 mai 2008) | 1 line
Changed paths:
A /Dossier 1
A /Dossier 1/Fichier1.1.txt
A /Dossier 2
A /Dossier 2/Fichier2.1.txt
A /Fichier 1.txt
Ajout de fichiers et dossiers pour les tests
------------------------------------------------------------------------
|
On voit bien ici ce que je disais plus haut : bien que je demande d'afficher toutes les versions (BASE:1), le Dossier 2 n'a été modifié qu'aux 1
ère et 12
ème révisions. Seules ces deux versions sont affichées. On notera aussi que le
verbose (-v) nous affiche en plus les informations sur les actions effectuées.
Et pour Windows
La fenêtre de log avec TortoiseSVN est accessible de diverses manières. La plus standard est :
clic droit >> TortoiseSVN >> Show log
La façon la plus utilisée est : suite à un
update, cliquez sur le bouton "Show log...".
Quelle que soit la manière, on obtient la fenêtre suivante :
Cette fenêtre, amis zéro, est une véritable mine d'informations.
Regardons d'abord les boutons. On voit que l'on peut sélectionner les dates de départ et de fin pour l'affichage des logs (comme pour -r {DATE} en fait), mais aussi que l'on peut tout afficher ("Show All"), ou seulement les 100 logs suivants, ou encore uniquement un ensemble de révisions ("Show Range...", appuyez sur la petite flèche à droite de "Show All"), et que l'on peut enfin rafraîchir la fenêtre. Notons la barre de recherche en haut à droite, très bien faite, elle permet d'effectuer une recherche sur le champ de votre choix (cliquez sur la loupe pour voir) et accepte les expressions régulières.
Enfin, le bouton "help" donne accès à l'aide de TortoiseSVN pour le log (cette aide est
EXTRÊMEMENT bien faite, n'hésitez pas à la consulter) et le bouton "statistic" vous affichera des graphiques sur le nombre de
commits par login et par date.
On voit aussi trois "check boxes", tout ce que vous avez besoin de savoir est que "stop on copy/rename" ne va afficher les logs de l'élément demandé que jusqu'à ce qu'il ait été copié ou renommé (mais ne va pas chercher les logs du fichier copié ou avant qu'il ait été renommé).
Maintenant passons au plus important. Les trois champs centraux :
- le premier affiche un résumé de tous les logs demandés,
- le deuxième affiche le commentaire de la version sélectionnée dans le premier champ,
- le troisième affiche les actions qui ont eu lieu lors de la version sélectionnée dans le premier champ.
Pas grand chose à dire sur le deuxième et le troisième champ. En revanche, le premier champ offre un résumé assez complet et disponible en un rapide coup d'oeil. Analysons colonne par colonne.
- La première colonne donne le numéro de la version.
- La deuxième donne un aperçu des actions qui ont eu lieu.
Un fichier avec un '!' signifie qu'un fichier (au moins) a été modifié.
Un fichier avec un '+' signifie qu'un fichier (au moins) a été ajouté.
Un fichier avec un 'x' signifie qu'un fichier (au moins) a été supprimé.
En réalité, il y a une quatrième icône mais on ne va pas la voir maintenant. Si vous êtes curieux la doc est par là. ==>
- La troisième donne l'auteur du commit.
- La quatrième donne la date du commit.
- La cinquième enfin donne le commentaire du commit (mais sans afficher les retours chariots).
Vous voyez bien qu'avec ce premier tableau, vous obtenez déjà un très bon résumé des changements ayant eu lieu lors du
commit.
Et voilà, avec ces commandes rien ne peut plus vous échapper (ou presque) sur le SVN. N'oubliez pas que consulter régulièrement les logs ainsi que les autres informations permet de bien se tenir à jour, mais surtout d'éviter au maximum les conflits.
Prochain chapitre : "Gérer les conflits".