Voir les différences

Une des exigences les plus courantes dans le développement de projet est de voir ce qui a changé. Vous pourriez vouloir regarder les différences entre deux révisions du même fichier, ou les différences entre deux fichiers séparés. TortoiseSVN fournit un outil intégré appelé TortoiseMerge pour voir les différences dans les fichiers texte. Pour voir les différences dans les fichiers image, TortoiseSVN a aussi un outil appelé TortoiseIDiff. Bien sûr, vous pouvez utiliser votre propre programme de comparaison favori si vous le souhaitez.

Différences de fichier

Changements locaux

Si vous voulez voir quels changements vous avez fait dans votre copie de travail, utilisez juste le menu contextuel de l'explorateur et choisissez TortoiseSVNVoir les différences.

Comparaison avec une autre branche/étiquette

Si vous voulez voir ce qui a changé sur le tronc (si vous travaillez sur une branche) ou sur une branche spécifique (si vous travaillez sur le tronc), vous pouvez utiliser le menu contextuel de l'explorateur. Maintenez juste la touche Maj tandis que vous faites un clic droit sur le fichier. Sélectionnez alors TortoiseSVNDiff avec l'URL. Dans la boîte de dialogue suivante, spécifiez l'URL dans le dépôt avec laquelle vous voulez comparer votre fichier local.

Vous pouvez aussi utiliser l'explorateur de dépôt et sélectionner deux arborescences à comparer, deux étiquettes peut-être, ou une branche/étiquette et le tronc. Le menu contextuel vous permet là de les comparer en utilisant Comparer les révisions. Plus d'informations dans la section intitulée « Comparer des répertoires ».

Comparaison avec une révision précédente

Si vous voulez voir les différences entre une révision particulière et votre copie de travail, utilisez la boîte de dialogue de Journal de révision, sélectionnez la révision qui vous intéresse, puis choisissez Comparaison avec la copie de travail dans le menu contextuel.

Si vous voulez voir la différence entre la dernière révision et votre copie active, en supposant que la copie active n'ait pas été modifiée, faites simplement un clic droit sur le fichier. Ensuite sélectionnez TortoiseSVNDifférences avec la version précédente. Ceci calculera les différences entre la révision avant la date de dernière Livraison (comme sauvegardé dans votre copie active) et la BASE active. Ceci vous montre la denière modification effectuée sur ce fichier et qui l'a amené à l'état dans lequel vous le voyez maintenant dans votre copie active. Ceci ne va pas montrer les modifications ultérieures à votre copie active.

Comparaison entre deux révisions précédentes

Si vous voulez voir les différences entre deux révisions déjà livrées, utilisez la boîte de dialogue de Journal de révision et sélectionnez les deux révisions que vous voulez comparer (en utilisant le modificateur habituel Ctrl). Puis choisissez Comparer les révisions à partir du menu contextuel.

Si vous avez fait ceci depuis le journal sur un répertoire, une boîte de dialogue Comparer les révisions apparaît, affichant la liste des fichiers dans ce dossier. Plus d'informations dans la section intitulée « Comparer des répertoires ».

Tous les changements faits dans une livraison

Si vous voulez voir les changements faits à tous les fichiers dans une révision particulière en une vue, vous pouvez utiliser la sortie en mode Diff-Unifié (format de patch GNU). Cela montre seulement les différences replacées dans leur contexte. Il est plus difficile à lire qu'une comparaison de fichier visuelle, mais montrera tous les changements ensemble. À partir de la boîte de dialogue du Journal de Révision sélectionnez la révision qui vous intéresse, puis choisissez Voir les différences en mode diff unifié à partir du menu contextuel.

Comparaison entre fichiers

Si vous voulez voir les différences entre deux fichiers différents, vous pouvez le faire directement dans l'explorateur en sélectionnant les deux fichiers (en utilisant le modificateur habituel Ctrl). Alors à partir du menu contextuel de l'explorateur, sélectionnez TortoiseSVNVoir les différences.

If the files to compare are not located in the same folder, use the command TortoiseSVNDiff later to mark the first file for diffing, then browse to the second file and use TortoiseSVNDiff with "path/of/marked/file". To remove the marked file, use the command TortoiseSVNDiff later again, but hold down the Ctrl-modifier while clicking on it.

Différence entre fichiers/répertoires de la CdT et une URL

Si vous voulez voir les différences entre un fichier de votre copie de travail, et un fichier dans n'importe quel dépôt Subversion, vous pouvez le faire directement dans l'explorateur en sélectionnant le fichier puis en maintenant enfoncé la touche Shift en faisant un clic droit pour obtenir le menu contextuel. Sélectionnez TortoiseSVNDiff avec l'URL. Vous pouvez faire la même chose pour un répertoire de la copie de travail. TortoiseMerge vous montre ces différences de la même manière qu'un patch - une liste des fichiers modifiés que vous pouvez voir un par un.

Comparaison avec les informations d'annotation

Si vous voulez ne pas voir que les différences mais aussi l'auteur, la révision et la date des modifications effectuées, vous pouvez combiner les rapports de différenciation et d'annotation au sein de la boîte de dialogue du journal de révision. Lisez la section intitulée « Annoter les différences » pour plus de détails.

Comparaison entre répertoires

Les outils intégrés fournis avec TortoiseSVN ne supportent pas l'observation de différences entre les hiérarchies de répertoire. Mais si vous avez un outil externe qui supporte vraiment cette fonctionnalité, vous pouvez l'utiliser à la place. Dans la section intitulée « Outils de différenciation/fusion externes » nous vous parlerons de quelques outils que nous avons utilisés.

Si vous avez fourni un outil de diff alternatif, vous pouvez utiliser la touche Shift quand vous sélectionnez la commande Diff pour utiliser l'outil alternatif. Lisez la section intitulée « Réglages des programmes externes » pour savoir comment configurer les autres outils de diff.

Options de fins de ligne et d'espacement

Parfois dans la vie d'un projet il se peut que vous modifiiez les fins de ligne de CRLF en LF, ou que vous changiez l'alinéa d'une section. Malheureusement ceci va marquer un grand nombre de lignes comme étant modifiées, bien qu'il n'y ait pas de variation dans la signification du code. Ces options ici vont aider à gérer ces modifications lorsqu'il s'agira de comparer et d'appliquer des différences. Vous pourrez voir ces réglages dans les boîtes de dialogue Fusionner et Annoter, tout comme dans les paramètres de FusionTortoise.

Ignorer les caractères de fins de ligne exclue les modifications seulement dues aux style des caractères de fin de ligne.

Compare les caractères d'espacement inclue les modifications d'indentation et d'espaces à la liste des lignes ajoutées/supprimées.

Ignorer les changements d'espaces exclut les changements dus uniquement à une modification du nombre ou du type d'espaces, par exemple un changement d'indentation ou le passage des tabulations aux espaces. Ajouter un espace où il n'y aen avait pas précédemment, ou supprimer complètement un espace est toujours indiqué comme un changement.

Ignorer tous les caractères d'espacement exclue toutes les modifications dues aux caractères d'espacement.

Naturellement, chaque ligne modifiée est toujours incluse dans le diff.

Comparer des répertoires

Figure 4.28. La boîte de dialogue Comparer les révisions

La boîte de dialogue Comparer les révisions


Quand vous sélectionnez deux arborescences dans l'explorateur de dépôt ou quand vous sélectionnez deux révisions d'un répertoire dans la boîte de dialogue du journal, vous pouvez Menu contextuelCompare les révisions.

Cette boîte de dialogue affiche une liste des fichiers modifiés et vous permet de les comparer ou de les annoter individuellement en utilisant le menu contextuel.

Vous pouvez exporter un arbre des modifications, qui est utile si vous avez besoin d'envoyer la structure de l'arbre de votre projet à un tiers, contenant uniquement les fichiers qui ont été modifiés. Cette opération fonctionne sur les fichiers sélectionnés uniquement, ainsi vous devez sélectionner les fichiers qui vous intéressent - ce qui signifie souvent tous les fichiers - puis ensuite sélectionner Menu ContextuelExporter la sélection vers.... Vous serez invités à chosir un emplacement où sauvegarder l'arbre des modifications.

Vous pouvez également exporter la liste des fichiers modifiés dans un fichier texte en utilisant le menu contextuelEnregistrer la liste de fichiers sélectionnés vers....

Si vous voulez exporter la listes des fichiers et aussi les actions (modifié, ajouté, supprimé), vous pouvez le faire en utilisant le menu contextuelCopier la sélection dans le presse-papier.

Le bouton en haut vous permet de modifier le sens de la comparaison. Vous pouvez afficher les changements nécessaires pour arriver de A vers B, ou si vous préférez, de B vers A.

Les boutons avec les numéros de révision peuvent être utilisés pour passer à un éventail de révisions différent. Lorsque vous changez d'éventail, la liste des éléments qui diffèrent entre les deux révisions sera mise à jour automatiquement.

Si la liste des noms de fichier est très longue, vous pouvez utiliser le champ de recherche pour réduire sa taille. Remarquez qu'une simple recherche texte est utilisée, donc si vous voulez restreindre la liste aux fichiers C vous devrez rechercher .c et non *.c.

Comparaison des images en utilisant TortoiseIDiff

Il y a beaucoup d'outils disponibles pour comparer des fichiers texte, incluant notre propre TortoireMerge, mais souvent, nous voulons également voir les modifications effectuées sur un fichier image. C'est pourquoi nous avons créé TortoiseIDiff.

Figure 4.29. Le visualiseur de différences d'images

Le visualiseur de différences d'images


TortoiseSVNVoir les différences pour n'importe quel format d'image commun démarrera TortoiseIDiff pour afficher les différences d'image. Par défaut les images sont affichées côte à côte mais vous pouvez utiliser le menu Affichage ou la barre d'outils pour basculer vers une vue haut-bas à la place, ou si vous préférez, vous pouvez superposer les images et utiliser une visionneuse.

Naturellement vous pouvez aussi faire un zoom avant, arrière tout en vous déplacant sur l'image. Vous pouvez également effectuer un mouvement de l'image à gauche simplement en la faisant glisser. Si vous sélectionnez l'option Lier les images ensemble, alors les contrôles de déplacement (barre de défilement, molette) des deux images sont reliés.

Dans l'image, une boîte d'informations affiche les détails concernant le fichier image, comme la taille en pixels, la résolution et la profondeur des couleurs. Si cette boîte se trouve dans le chemin, utilisez AffichageInformations de l'image pour la masquer. Vous pouvez obtenir la même information dans une info-bulle lorsque vous passez la souris sur la barre de titre de l'image.

Lorsque les images sont recouvertes, l'intensité relative des images (transparence) est contrôlée grâce à un ascenseur situé sur la gauche. Vous pouvez directement cliquer n'importe où sur l'ascenseur, ou faire glisser le curseur pour modifier interactivement sa valeur. Ctrl+Shift-Roulette pour modifier la transparence.

Le bouton au dessus de l'ascenseur permet de passer de 0% à 100% de transparence, et si vous double-cliquez dessus, la transparence change automatiquement chaque seconde jusqu'à ce que vous cliquiez de nouveau. Ce qui peut être utile lorsque vous cherchez beaucoup de petites modifications.

Parfois vous voulez voir une différence plutot qu'un mélange. Vous pourriez avoir les fichiers d'images de deux révisions d'un circuit imprimé et dont vous souhaitez voir quelles pistes ont changées. Si vous désactivez le mode alpha blend, la différence sera présentée comme un XOR de la valeur des pixels de couleur. Les zones inchangées seront de couleur blanche et les changements seront colorés.

Différence des documents Office

When you want to diff non-text documents you normally have to use the software used to create the document as it understands the file format. For the commonly used Microsoft Office and Open Office suites there is indeed some support for viewing differences and TortoiseSVN includes scripts to invoke these with the right settings when you diff files with the well-known file extensions. You can check which file extensions are supported and add your own by going to TortoiseSVNSettings and clicking Advanced in the External Programs section.

Problèmes avec Office 2010

Si vous avez installé la version Click-to-Run d'Office 2010 et que voous essayez de voir les différences entre documents vous pouvez avoir un messsage d'erreur de Windows Script Host comme « le composant ActiveX e peut pas créer l'objet: word.Application ». Il semble que vous deviez usiliser la version MSI d'Office pour avoir la fonctionnalité de différence.

Outils de différenciation/fusion externes

Si les outils que nous fournissons ne font pas ce dont vous avez besoin, essayez un des nombreux programmes open-source ou commerciaux disponibles. Chacun a ses préférences et cette liste n'est en aucun cas exhaustive, mais en voici quelques-uns intéressants :

WinMerge

WinMerge is a great open-source diff tool which can also handle directories.

Perforce Merge

Perforce is a commercial RCS, but you can download the diff/merge tool for free. Get more information from Perforce.

KDiff3

KDiff3 est un outil de comparaison gratuit qui peut aussi manipuler des répertoires. Vous pouvez le télécharger ici.

SourceGear DiffMerge

SourceGear Vault is a commercial RCS, but you can download the diff/merge tool for free. Get more information from SourceGear.

ExamDiff

ExamDiff Standard est un logiciel gratuit. Il peut manipuler les fichiers, mais pas les répertoires. ExamDiff Pro est shareware et ajoute un certain nombre de goodies incluant la comparaison de répertoires et des possibilités d'édition. Dans les deux, les versions 3.2 et supérieures peuvent gérer l'unicode. Vous pouvez les télécharger chez PrestoSoft.

Beyond Compare

Similar to ExamDiff Pro, this is an excellent shareware diff tool which can handle directory diffs and unicode. Download it from Scooter Software.

Araxis Merge

Araxis Merge is a useful commercial tool for diff and merging both files and folders. It does three-way comparison in merges and has synchronization links to use if you've changed the order of functions. Download it from Araxis.

Lisez la section intitulée « Réglages des programmes externes » pour des informations sur la façon de configurer TortoiseSVN pour utiliser ces outils.